From: Stephen Hemminger <stephen@networkplumber.org>
To: dev@dpdk.org
Cc: Stephen Hemminger <stephen@networkplumber.org>,
Thomas Monjalon <thomas@monjalon.net>,
Jerin Jacob <jerinj@marvell.com>,
Kiran Kumar K <kirankumark@marvell.com>,
Nithin Dabilpuram <ndabilpuram@marvell.com>,
Zhirun Yan <zhirun.yan@intel.com>
Subject: [PATCH] graph: mark API's as stable
Date: Thu, 10 Aug 2023 11:05:15 -0700 [thread overview]
Message-ID: <20230810180515.113700-1-stephen@networkplumber.org> (raw)
The graph library has been marked experimental since initial
release in 2020. Time to take the training wheels off.
Signed-off-by: Stephen Hemminger <stephen@networkplumber.org>
---
MAINTAINERS | 2 +-
lib/graph/rte_graph.h | 34 ----------------------
lib/graph/rte_graph_model_mcore_dispatch.h | 8 -----
lib/graph/rte_graph_worker.h | 1 -
lib/graph/rte_graph_worker_common.h | 18 ------------
lib/graph/version.map | 2 +-
6 files changed, 2 insertions(+), 63 deletions(-)
diff --git a/MAINTAINERS b/MAINTAINERS
index 6345e7f8a65d..0d36c7e7e84d 100644
--- a/MAINTAINERS
+++ b/MAINTAINERS
@@ -1705,7 +1705,7 @@ F: app/test/test_bpf.c
F: app/test-pmd/bpf_cmd.*
F: doc/guides/prog_guide/bpf_lib.rst
-Graph - EXPERIMENTAL
+Graph
M: Jerin Jacob <jerinj@marvell.com>
M: Kiran Kumar K <kirankumark@marvell.com>
M: Nithin Dabilpuram <ndabilpuram@marvell.com>
diff --git a/lib/graph/rte_graph.h b/lib/graph/rte_graph.h
index 7e94c151ae42..7c606eda710d 100644
--- a/lib/graph/rte_graph.h
+++ b/lib/graph/rte_graph.h
@@ -8,10 +8,6 @@
/**
* @file rte_graph.h
*
- * @warning
- * @b EXPERIMENTAL:
- * All functions in this file may be changed or removed without prior notice.
- *
* Graph architecture abstracts the data processing functions as
* "node" and "link" them together to create a complex "graph" to enable
* reusable/modular data processing functions.
@@ -249,7 +245,6 @@ struct rte_graph_cluster_node_stats {
* @return
* Unique graph id on success, RTE_GRAPH_ID_INVALID otherwise.
*/
-__rte_experimental
rte_graph_t rte_graph_create(const char *name, struct rte_graph_param *prm);
/**
@@ -263,7 +258,6 @@ rte_graph_t rte_graph_create(const char *name, struct rte_graph_param *prm);
* @return
* 0 on success, error otherwise.
*/
-__rte_experimental
int rte_graph_destroy(rte_graph_t id);
/**
@@ -285,7 +279,6 @@ int rte_graph_destroy(rte_graph_t id);
* @return
* Valid graph id on success, RTE_GRAPH_ID_INVALID otherwise.
*/
-__rte_experimental
rte_graph_t rte_graph_clone(rte_graph_t id, const char *name, struct rte_graph_param *prm);
/**
@@ -297,7 +290,6 @@ rte_graph_t rte_graph_clone(rte_graph_t id, const char *name, struct rte_graph_p
* @return
* Graph id on success, RTE_GRAPH_ID_INVALID otherwise.
*/
-__rte_experimental
rte_graph_t rte_graph_from_name(const char *name);
/**
@@ -309,7 +301,6 @@ rte_graph_t rte_graph_from_name(const char *name);
* @return
* Graph name on success, NULL otherwise.
*/
-__rte_experimental
char *rte_graph_id_to_name(rte_graph_t id);
/**
@@ -323,7 +314,6 @@ char *rte_graph_id_to_name(rte_graph_t id);
* @return
* 0 on success, error otherwise.
*/
-__rte_experimental
int rte_graph_export(const char *name, FILE *f);
/**
@@ -336,7 +326,6 @@ int rte_graph_export(const char *name, FILE *f);
* @return
* 0 on success, error otherwise.
*/
-__rte_experimental
int rte_graph_model_mcore_dispatch_core_bind(rte_graph_t id, int lcore);
/**
@@ -345,7 +334,6 @@ int rte_graph_model_mcore_dispatch_core_bind(rte_graph_t id, int lcore);
* @param id
* Graph id to get the pointer of graph object
*/
-__rte_experimental
void rte_graph_model_mcore_dispatch_core_unbind(rte_graph_t id);
/**
@@ -362,7 +350,6 @@ void rte_graph_model_mcore_dispatch_core_unbind(rte_graph_t id);
*
* @see rte_graph_walk()
*/
-__rte_experimental
struct rte_graph *rte_graph_lookup(const char *name);
/**
@@ -371,7 +358,6 @@ struct rte_graph *rte_graph_lookup(const char *name);
* @return
* Maximum graph count.
*/
-__rte_experimental
rte_graph_t rte_graph_max_count(void);
/**
@@ -382,7 +368,6 @@ rte_graph_t rte_graph_max_count(void);
* @param id
* Graph id to get graph info.
*/
-__rte_experimental
void rte_graph_dump(FILE *f, rte_graph_t id);
/**
@@ -391,7 +376,6 @@ void rte_graph_dump(FILE *f, rte_graph_t id);
* @param f
* File pointer to dump graph info.
*/
-__rte_experimental
void rte_graph_list_dump(FILE *f);
/**
@@ -404,7 +388,6 @@ void rte_graph_list_dump(FILE *f);
* @param all
* true to dump nodes in the graph.
*/
-__rte_experimental
void rte_graph_obj_dump(FILE *f, struct rte_graph *graph, bool all);
/** Macro to browse rte_node object after the graph creation */
@@ -425,7 +408,6 @@ void rte_graph_obj_dump(FILE *f, struct rte_graph *graph, bool all);
* @return
* Node pointer on success, NULL otherwise.
*/
-__rte_experimental
struct rte_node *rte_graph_node_get(rte_graph_t graph_id, rte_node_t node_id);
/**
@@ -439,7 +421,6 @@ struct rte_node *rte_graph_node_get(rte_graph_t graph_id, rte_node_t node_id);
* @return
* Node pointer on success, NULL otherwise.
*/
-__rte_experimental
struct rte_node *rte_graph_node_get_by_name(const char *graph,
const char *name);
@@ -453,7 +434,6 @@ struct rte_node *rte_graph_node_get_by_name(const char *graph,
* @return
* Valid pointer on success, NULL otherwise.
*/
-__rte_experimental
struct rte_graph_cluster_stats *rte_graph_cluster_stats_create(
const struct rte_graph_cluster_stats_param *prm);
@@ -463,7 +443,6 @@ struct rte_graph_cluster_stats *rte_graph_cluster_stats_create(
* @param stat
* Valid cluster pointer to destroy.
*/
-__rte_experimental
void rte_graph_cluster_stats_destroy(struct rte_graph_cluster_stats *stat);
/**
@@ -474,7 +453,6 @@ void rte_graph_cluster_stats_destroy(struct rte_graph_cluster_stats *stat);
* @param skip_cb
* true to skip callback function invocation.
*/
-__rte_experimental
void rte_graph_cluster_stats_get(struct rte_graph_cluster_stats *stat,
bool skip_cb);
@@ -484,7 +462,6 @@ void rte_graph_cluster_stats_get(struct rte_graph_cluster_stats *stat,
* @param stat
* Valid cluster stats pointer.
*/
-__rte_experimental
void rte_graph_cluster_stats_reset(struct rte_graph_cluster_stats *stat);
/**
@@ -518,7 +495,6 @@ struct rte_node_register {
*
* @see RTE_NODE_REGISTER()
*/
-__rte_experimental
rte_node_t __rte_node_register(const struct rte_node_register *node);
/**
@@ -550,7 +526,6 @@ rte_node_t __rte_node_register(const struct rte_node_register *node);
* @return
* Valid node id on success, RTE_NODE_ID_INVALID otherwise.
*/
-__rte_experimental
rte_node_t rte_node_clone(rte_node_t id, const char *name);
/**
@@ -563,7 +538,6 @@ rte_node_t rte_node_clone(rte_node_t id, const char *name);
* @return
* Valid node id on success, RTE_NODE_ID_INVALID otherwise.
*/
-__rte_experimental
rte_node_t rte_node_from_name(const char *name);
/**
@@ -575,7 +549,6 @@ rte_node_t rte_node_from_name(const char *name);
* @return
* Valid node name on success, NULL otherwise.
*/
-__rte_experimental
char *rte_node_id_to_name(rte_node_t id);
/**
@@ -587,7 +560,6 @@ char *rte_node_id_to_name(rte_node_t id);
* @return
* Valid edge count on success, RTE_EDGE_ID_INVALID otherwise.
*/
-__rte_experimental
rte_edge_t rte_node_edge_count(rte_node_t id);
/**
@@ -606,7 +578,6 @@ rte_edge_t rte_node_edge_count(rte_node_t id);
* @return
* Valid edge count on success, 0 otherwise.
*/
-__rte_experimental
rte_edge_t rte_node_edge_update(rte_node_t id, rte_edge_t from,
const char **next_nodes, uint16_t nb_edges);
@@ -621,7 +592,6 @@ rte_edge_t rte_node_edge_update(rte_node_t id, rte_edge_t from,
* @return
* New size on success, RTE_EDGE_ID_INVALID otherwise.
*/
-__rte_experimental
rte_edge_t rte_node_edge_shrink(rte_node_t id, rte_edge_t size);
/**
@@ -637,7 +607,6 @@ rte_edge_t rte_node_edge_shrink(rte_node_t id, rte_edge_t size);
* When next_nodes == NULL, it returns the size of the array else
* number of item copied.
*/
-__rte_experimental
rte_node_t rte_node_edge_get(rte_node_t id, char *next_nodes[]);
/**
@@ -646,7 +615,6 @@ rte_node_t rte_node_edge_get(rte_node_t id, char *next_nodes[]);
* @return
* Maximum nodes count.
*/
-__rte_experimental
rte_node_t rte_node_max_count(void);
/**
@@ -657,7 +625,6 @@ rte_node_t rte_node_max_count(void);
* @param id
* Node id to get the info.
*/
-__rte_experimental
void rte_node_dump(FILE *f, rte_node_t id);
/**
@@ -666,7 +633,6 @@ void rte_node_dump(FILE *f, rte_node_t id);
* @param f
* File pointer to dump the node info.
*/
-__rte_experimental
void rte_node_list_dump(FILE *f);
/**
diff --git a/lib/graph/rte_graph_model_mcore_dispatch.h b/lib/graph/rte_graph_model_mcore_dispatch.h
index 3bf210a82933..75ec388cada7 100644
--- a/lib/graph/rte_graph_model_mcore_dispatch.h
+++ b/lib/graph/rte_graph_model_mcore_dispatch.h
@@ -8,10 +8,6 @@
/**
* @file rte_graph_model_mcore_dispatch.h
*
- * @warning
- * @b EXPERIMENTAL:
- * All functions in this file may be changed or removed without prior notice.
- *
* These APIs allow to set core affinity with the node and only used for mcore
* dispatch model.
*/
@@ -48,7 +44,6 @@ extern "C" {
* This implementation is used by mcore dispatch model only and user application
* should not call it directly.
*/
-__rte_experimental
bool __rte_noinline __rte_graph_mcore_dispatch_sched_node_enqueue(struct rte_node *node,
struct rte_graph_rq_head *rq);
@@ -64,7 +59,6 @@ bool __rte_noinline __rte_graph_mcore_dispatch_sched_node_enqueue(struct rte_nod
* This implementation is used by mcore dispatch model only and user application
* should not call it directly.
*/
-__rte_experimental
void __rte_graph_mcore_dispatch_sched_wq_process(struct rte_graph *graph);
/**
@@ -79,7 +73,6 @@ void __rte_graph_mcore_dispatch_sched_wq_process(struct rte_graph *graph);
* @return
* 0 on success, error otherwise.
*/
-__rte_experimental
int rte_graph_model_mcore_dispatch_node_lcore_affinity_set(const char *name,
unsigned int lcore_id);
@@ -92,7 +85,6 @@ int rte_graph_model_mcore_dispatch_node_lcore_affinity_set(const char *name,
*
* @see rte_graph_lookup()
*/
-__rte_experimental
static inline void
rte_graph_walk_mcore_dispatch(struct rte_graph *graph)
{
diff --git a/lib/graph/rte_graph_worker.h b/lib/graph/rte_graph_worker.h
index 6685600813ac..03d0e01b6850 100644
--- a/lib/graph/rte_graph_worker.h
+++ b/lib/graph/rte_graph_worker.h
@@ -22,7 +22,6 @@ extern "C" {
*
* @see rte_graph_lookup()
*/
-__rte_experimental
static inline void
rte_graph_walk(struct rte_graph *graph)
{
diff --git a/lib/graph/rte_graph_worker_common.h b/lib/graph/rte_graph_worker_common.h
index a3824590cd6a..3a18dc4ef25c 100644
--- a/lib/graph/rte_graph_worker_common.h
+++ b/lib/graph/rte_graph_worker_common.h
@@ -8,10 +8,6 @@
/**
* @file rte_graph_worker_common.h
*
- * @warning
- * @b EXPERIMENTAL:
- * All functions in this file may be changed or removed without prior notice.
- *
* This API allows a worker thread to walk over a graph and nodes to create,
* process, enqueue and move streams of objects to the next nodes.
*/
@@ -148,7 +144,6 @@ struct rte_node {
* @param node
* Pointer to the node object.
*/
-__rte_experimental
void __rte_node_stream_alloc(struct rte_graph *graph, struct rte_node *node);
/**
@@ -165,7 +160,6 @@ void __rte_node_stream_alloc(struct rte_graph *graph, struct rte_node *node);
* @param req_size
* Number of objects to be allocated.
*/
-__rte_experimental
void __rte_node_stream_alloc_size(struct rte_graph *graph,
struct rte_node *node, uint16_t req_size);
@@ -293,7 +287,6 @@ __rte_node_next_node_get(struct rte_node *node, rte_edge_t next)
* @param nb_objs
* Number of objs to enqueue.
*/
-__rte_experimental
static inline void
rte_node_enqueue(struct rte_graph *graph, struct rte_node *node,
rte_edge_t next, void **objs, uint16_t nb_objs)
@@ -320,7 +313,6 @@ rte_node_enqueue(struct rte_graph *graph, struct rte_node *node,
* @param obj
* Obj to enqueue.
*/
-__rte_experimental
static inline void
rte_node_enqueue_x1(struct rte_graph *graph, struct rte_node *node,
rte_edge_t next, void *obj)
@@ -350,7 +342,6 @@ rte_node_enqueue_x1(struct rte_graph *graph, struct rte_node *node,
* @param obj1
* Obj to enqueue.
*/
-__rte_experimental
static inline void
rte_node_enqueue_x2(struct rte_graph *graph, struct rte_node *node,
rte_edge_t next, void *obj0, void *obj1)
@@ -385,7 +376,6 @@ rte_node_enqueue_x2(struct rte_graph *graph, struct rte_node *node,
* @param obj3
* 4th obj to enqueue.
*/
-__rte_experimental
static inline void
rte_node_enqueue_x4(struct rte_graph *graph, struct rte_node *node,
rte_edge_t next, void *obj0, void *obj1, void *obj2,
@@ -419,7 +409,6 @@ rte_node_enqueue_x4(struct rte_graph *graph, struct rte_node *node,
* @param nb_objs
* Number of objs to enqueue.
*/
-__rte_experimental
static inline void
rte_node_enqueue_next(struct rte_graph *graph, struct rte_node *node,
rte_edge_t *nexts, void **objs, uint16_t nb_objs)
@@ -449,7 +438,6 @@ rte_node_enqueue_next(struct rte_graph *graph, struct rte_node *node,
*
* @see rte_node_next_stream_put().
*/
-__rte_experimental
static inline void **
rte_node_next_stream_get(struct rte_graph *graph, struct rte_node *node,
rte_edge_t next, uint16_t nb_objs)
@@ -480,7 +468,6 @@ rte_node_next_stream_get(struct rte_graph *graph, struct rte_node *node,
*
* @see rte_node_next_stream_get().
*/
-__rte_experimental
static inline void
rte_node_next_stream_put(struct rte_graph *graph, struct rte_node *node,
rte_edge_t next, uint16_t idx)
@@ -509,7 +496,6 @@ rte_node_next_stream_put(struct rte_graph *graph, struct rte_node *node,
* @param next
* Relative next node index.
*/
-__rte_experimental
static inline void
rte_node_next_stream_move(struct rte_graph *graph, struct rte_node *src,
rte_edge_t next)
@@ -540,7 +526,6 @@ rte_node_next_stream_move(struct rte_graph *graph, struct rte_node *src,
* @return
* True if graph model is valid, false otherwise.
*/
-__rte_experimental
bool
rte_graph_model_is_valid(uint8_t model);
@@ -554,7 +539,6 @@ rte_graph_model_is_valid(uint8_t model);
* @return
* 0 on success, -1 otherwise.
*/
-__rte_experimental
int rte_graph_worker_model_set(uint8_t model);
/**
@@ -569,7 +553,6 @@ int rte_graph_worker_model_set(uint8_t model);
* @return
* Graph worker model on success.
*/
-__rte_experimental
uint8_t rte_graph_worker_model_get(struct rte_graph *graph);
/**
@@ -584,7 +567,6 @@ uint8_t rte_graph_worker_model_get(struct rte_graph *graph);
* @return
* Graph worker model on success.
*/
-__rte_experimental
static __rte_always_inline
uint8_t rte_graph_worker_model_no_check_get(struct rte_graph *graph)
{
diff --git a/lib/graph/version.map b/lib/graph/version.map
index 7e985d630820..7ec1de89585b 100644
--- a/lib/graph/version.map
+++ b/lib/graph/version.map
@@ -1,4 +1,4 @@
-EXPERIMENTAL {
+DPDK_24 {
global:
__rte_graph_mcore_dispatch_sched_node_enqueue;
--
2.39.2
next reply other threads:[~2023-08-10 18:05 UTC|newest]
Thread overview: 4+ messages / expand[flat|nested] mbox.gz Atom feed top
2023-08-10 18:05 Stephen Hemminger [this message]
2023-08-14 13:06 ` Jerin Jacob
2023-08-15 1:46 ` Yan, Zhirun
2023-11-13 15:34 ` David Marchand
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20230810180515.113700-1-stephen@networkplumber.org \
--to=stephen@networkplumber.org \
--cc=dev@dpdk.org \
--cc=jerinj@marvell.com \
--cc=kirankumark@marvell.com \
--cc=ndabilpuram@marvell.com \
--cc=thomas@monjalon.net \
--cc=zhirun.yan@intel.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).