DPDK patches and discussions
 help / color / mirror / Atom feed
* [PATCH] graph: mark API's as stable
@ 2023-08-10 18:05 Stephen Hemminger
  2023-08-14 13:06 ` Jerin Jacob
  0 siblings, 1 reply; 4+ messages in thread
From: Stephen Hemminger @ 2023-08-10 18:05 UTC (permalink / raw)
  To: dev
  Cc: Stephen Hemminger, Thomas Monjalon, Jerin Jacob, Kiran Kumar K,
	Nithin Dabilpuram, Zhirun Yan

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


^ permalink raw reply	[flat|nested] 4+ messages in thread

* Re: [PATCH] graph: mark API's as stable
  2023-08-10 18:05 [PATCH] graph: mark API's as stable Stephen Hemminger
@ 2023-08-14 13:06 ` Jerin Jacob
  2023-08-15  1:46   ` Yan, Zhirun
  0 siblings, 1 reply; 4+ messages in thread
From: Jerin Jacob @ 2023-08-14 13:06 UTC (permalink / raw)
  To: Stephen Hemminger
  Cc: dev, Thomas Monjalon, Jerin Jacob, Kiran Kumar K,
	Nithin Dabilpuram, Zhirun Yan

On Thu, Aug 10, 2023 at 11:35 PM Stephen Hemminger
<stephen@networkplumber.org> wrote:
>
> 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>


Acked-by: Jerin Jacob <jerinj@marvell.com>

^ permalink raw reply	[flat|nested] 4+ messages in thread

* RE: [PATCH] graph: mark API's as stable
  2023-08-14 13:06 ` Jerin Jacob
@ 2023-08-15  1:46   ` Yan, Zhirun
  2023-11-13 15:34     ` David Marchand
  0 siblings, 1 reply; 4+ messages in thread
From: Yan, Zhirun @ 2023-08-15  1:46 UTC (permalink / raw)
  To: Jerin Jacob, Stephen Hemminger
  Cc: dev, Thomas Monjalon, Jerin Jacob, Kiran Kumar K, Nithin Dabilpuram



> -----Original Message-----
> From: Jerin Jacob <jerinjacobk@gmail.com>
> Sent: Monday, August 14, 2023 9:07 PM
> To: Stephen Hemminger <stephen@networkplumber.org>
> Cc: dev@dpdk.org; Thomas Monjalon <thomas@monjalon.net>; Jerin Jacob
> <jerinj@marvell.com>; Kiran Kumar K <kirankumark@marvell.com>; Nithin
> Dabilpuram <ndabilpuram@marvell.com>; Yan, Zhirun <zhirun.yan@intel.com>
> Subject: Re: [PATCH] graph: mark API's as stable
> 
> On Thu, Aug 10, 2023 at 11:35 PM Stephen Hemminger
> <stephen@networkplumber.org> wrote:
> >
> > 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>
> 
> 
> Acked-by: Jerin Jacob <jerinj@marvell.com>
Acked-by: Zhirun Yan <zhirun.yan@intel.com>

^ permalink raw reply	[flat|nested] 4+ messages in thread

* Re: [PATCH] graph: mark API's as stable
  2023-08-15  1:46   ` Yan, Zhirun
@ 2023-11-13 15:34     ` David Marchand
  0 siblings, 0 replies; 4+ messages in thread
From: David Marchand @ 2023-11-13 15:34 UTC (permalink / raw)
  To: Stephen Hemminger
  Cc: Jerin Jacob, Yan, Zhirun, dev, Thomas Monjalon, Jerin Jacob,
	Kiran Kumar K, Nithin Dabilpuram

On Tue, Aug 15, 2023 at 3:46 AM Yan, Zhirun <zhirun.yan@intel.com> wrote:
> > On Thu, Aug 10, 2023 at 11:35 PM Stephen Hemminger
> > <stephen@networkplumber.org> wrote:
> > >
> > > 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>
> > Acked-by: Jerin Jacob <jerinj@marvell.com>
> Acked-by: Zhirun Yan <zhirun.yan@intel.com>

Applied, thanks.


-- 
David Marchand


^ permalink raw reply	[flat|nested] 4+ messages in thread

end of thread, other threads:[~2023-11-13 15:35 UTC | newest]

Thread overview: 4+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2023-08-10 18:05 [PATCH] graph: mark API's as stable Stephen Hemminger
2023-08-14 13:06 ` Jerin Jacob
2023-08-15  1:46   ` Yan, Zhirun
2023-11-13 15:34     ` David Marchand

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).