DPDK patches and discussions
 help / color / mirror / Atom feed
From: Stephen Hemminger <stephen@networkplumber.org>
To: dev@dpdk.org
Cc: Stephen Hemminger <stephen@networkplumber.org>,
	Cristian Dumitrescu <cristian.dumitrescu@intel.com>
Subject: [PATCH v4 28/28] port: make API's stable
Date: Thu, 19 Oct 2023 12:10:16 -0700	[thread overview]
Message-ID: <20231019191016.156430-29-stephen@networkplumber.org> (raw)
In-Reply-To: <20231019191016.156430-1-stephen@networkplumber.org>

Follow the guidelines already in deprecation.rst and
make the API's stable, even though they are marked as deprecated.

Note: this library never properly marked its experimental API's.
The API's were in the EXPERIMENTAL section but the macro
__rte_experimental was missing.

Signed-off-by: Stephen Hemminger <stephen@networkplumber.org>
---
 doc/guides/rel_notes/deprecation.rst |   4 -
 lib/pipeline/rte_port_in_action.h    |   8 --
 lib/pipeline/rte_swx_ctl.h           |  57 -----------
 lib/pipeline/rte_swx_pipeline.h      |  29 ------
 lib/pipeline/rte_table_action.h      |  16 ---
 lib/pipeline/version.map             | 140 ++++++++++++---------------
 lib/port/version.map                 |  24 ++---
 7 files changed, 69 insertions(+), 209 deletions(-)

diff --git a/doc/guides/rel_notes/deprecation.rst b/doc/guides/rel_notes/deprecation.rst
index 2526040e44f9..601a9044e3d8 100644
--- a/doc/guides/rel_notes/deprecation.rst
+++ b/doc/guides/rel_notes/deprecation.rst
@@ -134,13 +134,9 @@ Deprecation Notices
 
 * pipeline: The pipeline library legacy API (functions rte_pipeline_*)
   will be deprecated and subsequently removed in DPDK 24.11 release.
-  Before this, the new pipeline library API (functions rte_swx_pipeline_*)
-  will gradually transition from experimental to stable status.
 
 * table: The table library legacy API (functions rte_table_*)
   will be deprecated and subsequently removed in DPDK 24.11 release.
 
 * port: The port library legacy API (functions rte_port_*)
   will be deprecated and subsequently removed in DPDK 24.11 release.
-  Before this, the new port library API (functions rte_swx_port_*)
-  will gradually transition from experimental to stable status.
diff --git a/lib/pipeline/rte_port_in_action.h b/lib/pipeline/rte_port_in_action.h
index ec2994599f61..884c45bbd683 100644
--- a/lib/pipeline/rte_port_in_action.h
+++ b/lib/pipeline/rte_port_in_action.h
@@ -172,7 +172,6 @@ struct rte_port_in_action_profile;
  * @return
  *   Input port action profile handle on success, NULL otherwise.
  */
-__rte_experimental
 struct rte_port_in_action_profile *
 rte_port_in_action_profile_create(uint32_t socket_id);
 
@@ -185,7 +184,6 @@ rte_port_in_action_profile_create(uint32_t socket_id);
  * @return
  *   Always zero.
  */
-__rte_experimental
 int
 rte_port_in_action_profile_free(struct rte_port_in_action_profile *profile);
 
@@ -204,7 +202,6 @@ rte_port_in_action_profile_free(struct rte_port_in_action_profile *profile);
  * @return
  *   Zero on success, non-zero error code otherwise.
  */
-__rte_experimental
 int
 rte_port_in_action_profile_action_register(
 	struct rte_port_in_action_profile *profile,
@@ -227,7 +224,6 @@ rte_port_in_action_profile_action_register(
  *
  * @see rte_port_in_action_create()
  */
-__rte_experimental
 int
 rte_port_in_action_profile_freeze(struct rte_port_in_action_profile *profile);
 
@@ -250,7 +246,6 @@ struct rte_port_in_action;
  * @return
  *   Handle to input port action object on success, NULL on error.
  */
-__rte_experimental
 struct rte_port_in_action *
 rte_port_in_action_create(struct rte_port_in_action_profile *profile,
 	uint32_t socket_id);
@@ -264,7 +259,6 @@ rte_port_in_action_create(struct rte_port_in_action_profile *profile,
  * @return
  *   Always zero.
  */
-__rte_experimental
 int
 rte_port_in_action_free(struct rte_port_in_action *action);
 
@@ -278,7 +272,6 @@ rte_port_in_action_free(struct rte_port_in_action *action);
  * @return
  *   Zero on success, non-zero error code otherwise.
  */
-__rte_experimental
 int
 rte_port_in_action_params_get(struct rte_port_in_action *action,
 	struct rte_pipeline_port_in_params *params);
@@ -298,7 +291,6 @@ rte_port_in_action_params_get(struct rte_port_in_action *action,
  * @return
  *   Zero on success, non-zero error code otherwise.
  */
-__rte_experimental
 int
 rte_port_in_action_apply(struct rte_port_in_action *action,
 	enum rte_port_in_action_type type,
diff --git a/lib/pipeline/rte_swx_ctl.h b/lib/pipeline/rte_swx_ctl.h
index 6ef2551ab534..28b68d48e753 100644
--- a/lib/pipeline/rte_swx_ctl.h
+++ b/lib/pipeline/rte_swx_ctl.h
@@ -83,7 +83,6 @@ struct rte_swx_ctl_pipeline_info {
  *   0 on success or the following error codes otherwise:
  *   -EINVAL: Invalid argument.
  */
-__rte_experimental
 int
 rte_swx_ctl_pipeline_info_get(struct rte_swx_pipeline *p,
 			      struct rte_swx_ctl_pipeline_info *pipeline);
@@ -99,7 +98,6 @@ rte_swx_ctl_pipeline_info_get(struct rte_swx_pipeline *p,
  *   0 on success or the following error codes otherwise:
  *   -EINVAL: Invalid argument.
  */
-__rte_experimental
 int
 rte_swx_ctl_pipeline_numa_node_get(struct rte_swx_pipeline *p,
 				   int *numa_node);
@@ -121,7 +119,6 @@ rte_swx_ctl_pipeline_numa_node_get(struct rte_swx_pipeline *p,
  *   0 on success or the following error codes otherwise:
  *   -EINVAL: Invalid argument.
  */
-__rte_experimental
 int
 rte_swx_ctl_pipeline_port_in_stats_read(struct rte_swx_pipeline *p,
 					uint32_t port_id,
@@ -140,7 +137,6 @@ rte_swx_ctl_pipeline_port_in_stats_read(struct rte_swx_pipeline *p,
  *   0 on success or the following error codes otherwise:
  *   -EINVAL: Invalid argument.
  */
-__rte_experimental
 int
 rte_swx_ctl_pipeline_port_out_stats_read(struct rte_swx_pipeline *p,
 					 uint32_t port_id,
@@ -172,7 +168,6 @@ struct rte_swx_ctl_action_info {
  *   0 on success or the following error codes otherwise:
  *   -EINVAL: Invalid argument.
  */
-__rte_experimental
 int
 rte_swx_ctl_action_info_get(struct rte_swx_pipeline *p,
 			    uint32_t action_id,
@@ -208,7 +203,6 @@ struct rte_swx_ctl_action_arg_info {
  *   0 on success or the following error codes otherwise:
  *   -EINVAL: Invalid argument.
  */
-__rte_experimental
 int
 rte_swx_ctl_action_arg_info_get(struct rte_swx_pipeline *p,
 				uint32_t action_id,
@@ -259,7 +253,6 @@ struct rte_swx_ctl_table_info {
  *   0 on success or the following error codes otherwise:
  *   -EINVAL: Invalid argument.
  */
-__rte_experimental
 int
 rte_swx_ctl_table_info_get(struct rte_swx_pipeline *p,
 			   uint32_t table_id,
@@ -303,7 +296,6 @@ struct rte_swx_ctl_table_match_field_info {
  *   0 on success or the following error codes otherwise:
  *   -EINVAL: Invalid argument.
  */
-__rte_experimental
 int
 rte_swx_ctl_table_match_field_info_get(struct rte_swx_pipeline *p,
 	uint32_t table_id,
@@ -340,7 +332,6 @@ struct rte_swx_ctl_table_action_info {
  *   0 on success or the following error codes otherwise:
  *   -EINVAL: Invalid argument.
  */
-__rte_experimental
 int
 rte_swx_ctl_table_action_info_get(struct rte_swx_pipeline *p,
 	uint32_t table_id,
@@ -366,7 +357,6 @@ rte_swx_ctl_table_action_info_get(struct rte_swx_pipeline *p,
  *   0 on success or the following error codes otherwise:
  *   -EINVAL: Invalid argument.
  */
-__rte_experimental
 int
 rte_swx_ctl_table_ops_get(struct rte_swx_pipeline *p,
 			  uint32_t table_id,
@@ -405,7 +395,6 @@ struct rte_swx_table_stats {
  *   0 on success or the following error codes otherwise:
  *   -EINVAL: Invalid argument.
  */
-__rte_experimental
 int
 rte_swx_ctl_pipeline_table_stats_read(struct rte_swx_pipeline *p,
 				      const char *table_name,
@@ -443,7 +432,6 @@ struct rte_swx_ctl_selector_info {
  *   0 on success or the following error codes otherwise:
  *   -EINVAL: Invalid argument.
  */
-__rte_experimental
 int
 rte_swx_ctl_selector_info_get(struct rte_swx_pipeline *p,
 			      uint32_t selector_id,
@@ -462,7 +450,6 @@ rte_swx_ctl_selector_info_get(struct rte_swx_pipeline *p,
  *   0 on success or the following error codes otherwise:
  *   -EINVAL: Invalid argument.
  */
-__rte_experimental
 int
 rte_swx_ctl_selector_group_id_field_info_get(struct rte_swx_pipeline *p,
 					     uint32_t selector_id,
@@ -483,7 +470,6 @@ rte_swx_ctl_selector_group_id_field_info_get(struct rte_swx_pipeline *p,
  *   0 on success or the following error codes otherwise:
  *   -EINVAL: Invalid argument.
  */
-__rte_experimental
 int
 rte_swx_ctl_selector_field_info_get(struct rte_swx_pipeline *p,
 				    uint32_t selector_id,
@@ -503,7 +489,6 @@ rte_swx_ctl_selector_field_info_get(struct rte_swx_pipeline *p,
  *   0 on success or the following error codes otherwise:
  *   -EINVAL: Invalid argument.
  */
-__rte_experimental
 int
 rte_swx_ctl_selector_member_id_field_info_get(struct rte_swx_pipeline *p,
 					      uint32_t selector_id,
@@ -528,7 +513,6 @@ struct rte_swx_pipeline_selector_stats {
  *   0 on success or the following error codes otherwise:
  *   -EINVAL: Invalid argument.
  */
-__rte_experimental
 int
 rte_swx_ctl_pipeline_selector_stats_read(struct rte_swx_pipeline *p,
 					 const char *selector_name,
@@ -575,7 +559,6 @@ struct rte_swx_ctl_learner_info {
  *   0 on success or the following error codes otherwise:
  *   -EINVAL: Invalid argument.
  */
-__rte_experimental
 int
 rte_swx_ctl_learner_info_get(struct rte_swx_pipeline *p,
 			     uint32_t learner_id,
@@ -596,7 +579,6 @@ rte_swx_ctl_learner_info_get(struct rte_swx_pipeline *p,
  *   0 on success or the following error codes otherwise:
  *   -EINVAL: Invalid argument.
  */
-__rte_experimental
 int
 rte_swx_ctl_learner_match_field_info_get(struct rte_swx_pipeline *p,
 					 uint32_t learner_id,
@@ -620,7 +602,6 @@ rte_swx_ctl_learner_match_field_info_get(struct rte_swx_pipeline *p,
  *   0 on success or the following error codes otherwise:
  *   -EINVAL: Invalid argument.
  */
-__rte_experimental
 int
 rte_swx_ctl_learner_action_info_get(struct rte_swx_pipeline *p,
 				    uint32_t learner_id,
@@ -642,7 +623,6 @@ rte_swx_ctl_learner_action_info_get(struct rte_swx_pipeline *p,
  *   0 on success or the following error codes otherwise:
  *   -EINVAL: Invalid argument.
  */
-__rte_experimental
 int
 rte_swx_ctl_pipeline_learner_timeout_get(struct rte_swx_pipeline *p,
 					 uint32_t learner_id,
@@ -664,7 +644,6 @@ rte_swx_ctl_pipeline_learner_timeout_get(struct rte_swx_pipeline *p,
  *   0 on success or the following error codes otherwise:
  *   -EINVAL: Invalid argument.
  */
-__rte_experimental
 int
 rte_swx_ctl_pipeline_learner_timeout_set(struct rte_swx_pipeline *p,
 					 uint32_t learner_id,
@@ -714,7 +693,6 @@ struct rte_swx_learner_stats {
  *   0 on success or the following error codes otherwise:
  *   -EINVAL: Invalid argument.
  */
-__rte_experimental
 int
 rte_swx_ctl_pipeline_learner_stats_read(struct rte_swx_pipeline *p,
 				      const char *learner_name,
@@ -750,7 +728,6 @@ struct rte_swx_pipeline_mirroring_session_params {
  *   -EINVAL: Invalid argument;
  *   -EEXIST: Pipeline was already built successfully.
  */
-__rte_experimental
 int
 rte_swx_ctl_pipeline_mirroring_session_set(struct rte_swx_pipeline *p,
 	uint32_t session_id,
@@ -790,7 +767,6 @@ struct rte_swx_table_state {
  *   0 on success or the following error codes otherwise:
  *   -EINVAL: Invalid argument.
  */
-__rte_experimental
 int
 rte_swx_pipeline_table_state_get(struct rte_swx_pipeline *p,
 				 struct rte_swx_table_state **table_state);
@@ -809,7 +785,6 @@ rte_swx_pipeline_table_state_get(struct rte_swx_pipeline *p,
  *   0 on success or the following error codes otherwise:
  *   -EINVAL: Invalid argument.
  */
-__rte_experimental
 int
 rte_swx_pipeline_table_state_set(struct rte_swx_pipeline *p,
 				 struct rte_swx_table_state *table_state);
@@ -829,7 +804,6 @@ struct rte_swx_ctl_pipeline;
  * @return
  *   Valid pipeline control handle if found or NULL otherwise.
  */
-__rte_experimental
 struct rte_swx_ctl_pipeline *
 rte_swx_ctl_pipeline_find(const char *name);
 
@@ -841,7 +815,6 @@ rte_swx_ctl_pipeline_find(const char *name);
  * @return
  *   Pipeline control handle, on success, or NULL, on error.
  */
-__rte_experimental
 struct rte_swx_ctl_pipeline *
 rte_swx_ctl_pipeline_create(struct rte_swx_pipeline *p);
 
@@ -861,7 +834,6 @@ rte_swx_ctl_pipeline_create(struct rte_swx_pipeline *p);
  *   0 on success or the following error codes otherwise:
  *   -EINVAL: Invalid argument.
  */
-__rte_experimental
 int
 rte_swx_ctl_pipeline_table_entry_add(struct rte_swx_ctl_pipeline *ctl,
 				     const char *table_name,
@@ -883,7 +855,6 @@ rte_swx_ctl_pipeline_table_entry_add(struct rte_swx_ctl_pipeline *ctl,
  *   0 on success or the following error codes otherwise:
  *   -EINVAL: Invalid argument.
  */
-__rte_experimental
 int
 rte_swx_ctl_pipeline_table_default_entry_add(struct rte_swx_ctl_pipeline *ctl,
 					     const char *table_name,
@@ -906,7 +877,6 @@ rte_swx_ctl_pipeline_table_default_entry_add(struct rte_swx_ctl_pipeline *ctl,
  *   0 on success or the following error codes otherwise:
  *   -EINVAL: Invalid argument.
  */
-__rte_experimental
 int
 rte_swx_ctl_pipeline_table_entry_delete(struct rte_swx_ctl_pipeline *ctl,
 					const char *table_name,
@@ -931,7 +901,6 @@ rte_swx_ctl_pipeline_table_entry_delete(struct rte_swx_ctl_pipeline *ctl,
  *   -EINVAL: Invalid argument;
  *   -ENOSPC: All groups are currently in use, no group available.
  */
-__rte_experimental
 int
 rte_swx_ctl_pipeline_selector_group_add(struct rte_swx_ctl_pipeline *ctl,
 					const char *selector_name,
@@ -954,7 +923,6 @@ rte_swx_ctl_pipeline_selector_group_add(struct rte_swx_ctl_pipeline *ctl,
  *   -EINVAL: Invalid argument;
  *   -ENOMEM: Not enough memory.
  */
-__rte_experimental
 int
 rte_swx_ctl_pipeline_selector_group_delete(struct rte_swx_ctl_pipeline *ctl,
 					   const char *selector_name,
@@ -984,7 +952,6 @@ rte_swx_ctl_pipeline_selector_group_delete(struct rte_swx_ctl_pipeline *ctl,
  *   -ENOMEM: Not enough memory;
  *   -ENOSPC: The group is full.
  */
-__rte_experimental
 int
 rte_swx_ctl_pipeline_selector_group_member_add(struct rte_swx_ctl_pipeline *ctl,
 					       const char *selector_name,
@@ -1010,7 +977,6 @@ rte_swx_ctl_pipeline_selector_group_member_add(struct rte_swx_ctl_pipeline *ctl,
  *   0 on success or the following error codes otherwise:
  *   -EINVAL: Invalid argument.
  */
-__rte_experimental
 int
 rte_swx_ctl_pipeline_selector_group_member_delete(struct rte_swx_ctl_pipeline *ctl,
 						  const char *selector_name,
@@ -1032,7 +998,6 @@ rte_swx_ctl_pipeline_selector_group_member_delete(struct rte_swx_ctl_pipeline *c
  *   0 on success or the following error codes otherwise:
  *   -EINVAL: Invalid argument.
  */
-__rte_experimental
 int
 rte_swx_ctl_pipeline_learner_default_entry_add(struct rte_swx_ctl_pipeline *ctl,
 					       const char *learner_name,
@@ -1053,7 +1018,6 @@ rte_swx_ctl_pipeline_learner_default_entry_add(struct rte_swx_ctl_pipeline *ctl,
  *   0 on success or the following error codes otherwise:
  *   -EINVAL: Invalid argument.
  */
-__rte_experimental
 int
 rte_swx_ctl_pipeline_commit(struct rte_swx_ctl_pipeline *ctl,
 			    int abort_on_fail);
@@ -1066,7 +1030,6 @@ rte_swx_ctl_pipeline_commit(struct rte_swx_ctl_pipeline *ctl,
  * @param[in] ctl
  *   Pipeline control handle.
  */
-__rte_experimental
 void
 rte_swx_ctl_pipeline_abort(struct rte_swx_ctl_pipeline *ctl);
 
@@ -1089,7 +1052,6 @@ rte_swx_ctl_pipeline_abort(struct rte_swx_ctl_pipeline *ctl);
  *   0 on success or the following error codes otherwise:
  *   -EINVAL: Invalid argument.
  */
-__rte_experimental
 struct rte_swx_table_entry *
 rte_swx_ctl_pipeline_table_entry_read(struct rte_swx_ctl_pipeline *ctl,
 				      const char *table_name,
@@ -1115,7 +1077,6 @@ rte_swx_ctl_pipeline_table_entry_read(struct rte_swx_ctl_pipeline *ctl,
  *   0 on success or the following error codes otherwise:
  *   -EINVAL: Invalid argument.
  */
-__rte_experimental
 struct rte_swx_table_entry *
 rte_swx_ctl_pipeline_learner_default_entry_read(struct rte_swx_ctl_pipeline *ctl,
 						const char *learner_name,
@@ -1137,7 +1098,6 @@ rte_swx_ctl_pipeline_learner_default_entry_read(struct rte_swx_ctl_pipeline *ctl
  *   0 on success or the following error codes otherwise:
  *   -EINVAL: Invalid argument.
  */
-__rte_experimental
 int
 rte_swx_ctl_pipeline_table_fprintf(FILE *f,
 				   struct rte_swx_ctl_pipeline *ctl,
@@ -1158,7 +1118,6 @@ rte_swx_ctl_pipeline_table_fprintf(FILE *f,
  *   0 on success or the following error codes otherwise:
  *   -EINVAL: Invalid argument.
  */
-__rte_experimental
 int
 rte_swx_ctl_pipeline_selector_fprintf(FILE *f,
 				      struct rte_swx_ctl_pipeline *ctl,
@@ -1190,7 +1149,6 @@ struct rte_swx_ctl_regarray_info {
  *   0 on success or the following error codes otherwise:
  *   -EINVAL: Invalid argument.
  */
-__rte_experimental
 int
 rte_swx_ctl_regarray_info_get(struct rte_swx_pipeline *p,
 			      uint32_t regarray_id,
@@ -1211,7 +1169,6 @@ rte_swx_ctl_regarray_info_get(struct rte_swx_pipeline *p,
  *   0 on success or the following error codes otherwise:
  *   -EINVAL: Invalid argument.
  */
-__rte_experimental
 int
 rte_swx_ctl_pipeline_regarray_read(struct rte_swx_pipeline *p,
 				   const char *regarray_name,
@@ -1233,7 +1190,6 @@ rte_swx_ctl_pipeline_regarray_read(struct rte_swx_pipeline *p,
  *   0 on success or the following error codes otherwise:
  *   -EINVAL: Invalid argument.
  */
-__rte_experimental
 int
 rte_swx_ctl_pipeline_regarray_write(struct rte_swx_pipeline *p,
 				   const char *regarray_name,
@@ -1258,7 +1214,6 @@ rte_swx_ctl_pipeline_regarray_write(struct rte_swx_pipeline *p,
  *   -EINVAL: Invalid argument;
  *   -ENOMEM: Not enough memory.
  */
-__rte_experimental
 int
 rte_swx_ctl_pipeline_regarray_read_with_key(struct rte_swx_pipeline *p,
 					    const char *regarray_name,
@@ -1284,7 +1239,6 @@ rte_swx_ctl_pipeline_regarray_read_with_key(struct rte_swx_pipeline *p,
  *   -EINVAL: Invalid argument;
  *   -ENOMEM: Not enough memory.
  */
-__rte_experimental
 int
 rte_swx_ctl_pipeline_regarray_write_with_key(struct rte_swx_pipeline *p,
 					     const char *regarray_name,
@@ -1318,7 +1272,6 @@ struct rte_swx_ctl_metarray_info {
  *   0 on success or the following error codes otherwise:
  *   -EINVAL: Invalid argument.
  */
-__rte_experimental
 int
 rte_swx_ctl_metarray_info_get(struct rte_swx_pipeline *p,
 			      uint32_t metarray_id,
@@ -1339,7 +1292,6 @@ rte_swx_ctl_metarray_info_get(struct rte_swx_pipeline *p,
  *   -ENOMEM: Not enough space/cannot allocate memory;
  *   -EEXIST: Meter profile with this name already exists.
  */
-__rte_experimental
 int
 rte_swx_ctl_meter_profile_add(struct rte_swx_pipeline *p,
 			      const char *name,
@@ -1357,7 +1309,6 @@ rte_swx_ctl_meter_profile_add(struct rte_swx_pipeline *p,
  *   -EINVAL: Invalid argument;
  *   -EBUSY: Meter profile is currently in use.
  */
-__rte_experimental
 int
 rte_swx_ctl_meter_profile_delete(struct rte_swx_pipeline *p,
 				 const char *name);
@@ -1380,7 +1331,6 @@ rte_swx_ctl_meter_profile_delete(struct rte_swx_pipeline *p,
  *   0 on success or the following error codes otherwise:
  *   -EINVAL: Invalid argument.
  */
-__rte_experimental
 int
 rte_swx_ctl_meter_reset(struct rte_swx_pipeline *p,
 			const char *metarray_name,
@@ -1405,7 +1355,6 @@ rte_swx_ctl_meter_reset(struct rte_swx_pipeline *p,
  *   0 on success or the following error codes otherwise:
  *   -EINVAL: Invalid argument.
  */
-__rte_experimental
 int
 rte_swx_ctl_meter_set(struct rte_swx_pipeline *p,
 		      const char *metarray_name,
@@ -1436,7 +1385,6 @@ struct rte_swx_ctl_meter_stats {
  *   0 on success or the following error codes otherwise:
  *   -EINVAL: Invalid argument.
  */
-__rte_experimental
 int
 rte_swx_ctl_meter_stats_read(struct rte_swx_pipeline *p,
 			     const char *metarray_name,
@@ -1463,7 +1411,6 @@ rte_swx_ctl_meter_stats_read(struct rte_swx_pipeline *p,
  *   0 on success or the following error codes otherwise:
  *   -EINVAL: Invalid argument.
  */
-__rte_experimental
 int
 rte_swx_ctl_meter_reset_with_key(struct rte_swx_pipeline *p,
 				 const char *metarray_name,
@@ -1491,7 +1438,6 @@ rte_swx_ctl_meter_reset_with_key(struct rte_swx_pipeline *p,
  *   0 on success or the following error codes otherwise:
  *   -EINVAL: Invalid argument.
  */
-__rte_experimental
 int
 rte_swx_ctl_meter_set_with_key(struct rte_swx_pipeline *p,
 			       const char *metarray_name,
@@ -1516,7 +1462,6 @@ rte_swx_ctl_meter_set_with_key(struct rte_swx_pipeline *p,
  *   0 on success or the following error codes otherwise:
  *   -EINVAL: Invalid argument.
  */
-__rte_experimental
 int
 rte_swx_ctl_meter_stats_read_with_key(struct rte_swx_pipeline *p,
 				      const char *metarray_name,
@@ -1612,7 +1557,6 @@ rte_swx_ctl_pipeline_rss_key_write(struct rte_swx_pipeline *p,
 				   const char *rss_obj_name,
 				   uint32_t key_size,
 				   uint8_t *key);
-
 /**
  * Pipeline control free
  *
@@ -1620,7 +1564,6 @@ rte_swx_ctl_pipeline_rss_key_write(struct rte_swx_pipeline *p,
  *   Pipeline control handle.
  *   If ctl is NULL, no operation is performed.
  */
-__rte_experimental
 void
 rte_swx_ctl_pipeline_free(struct rte_swx_ctl_pipeline *ctl);
 
diff --git a/lib/pipeline/rte_swx_pipeline.h b/lib/pipeline/rte_swx_pipeline.h
index 25df042d3bd8..898e883dd0d1 100644
--- a/lib/pipeline/rte_swx_pipeline.h
+++ b/lib/pipeline/rte_swx_pipeline.h
@@ -52,7 +52,6 @@ struct rte_swx_pipeline;
  * @return
  *   Valid pipeline handle if found or NULL otherwise.
  */
-__rte_experimental
 struct rte_swx_pipeline *
 rte_swx_pipeline_find(const char *name);
 
@@ -72,7 +71,6 @@ rte_swx_pipeline_find(const char *name);
  *   -ENOMEM: Not enough space/cannot allocate memory;
  *   -EEXIST: Pipeline with this name already exists.
  */
-__rte_experimental
 int
 rte_swx_pipeline_config(struct rte_swx_pipeline **p,
 			const char *name,
@@ -97,7 +95,6 @@ rte_swx_pipeline_config(struct rte_swx_pipeline **p,
  *   -ENOMEM: Not enough space/cannot allocate memory;
  *   -EEXIST: Input port type with this name already exists.
  */
-__rte_experimental
 int
 rte_swx_pipeline_port_in_type_register(struct rte_swx_pipeline *p,
 				       const char *name,
@@ -120,7 +117,6 @@ rte_swx_pipeline_port_in_type_register(struct rte_swx_pipeline *p,
  *   -ENOMEM: Not enough space/cannot allocate memory;
  *   -ENODEV: Input port object creation error.
  */
-__rte_experimental
 int
 rte_swx_pipeline_port_in_config(struct rte_swx_pipeline *p,
 				uint32_t port_id,
@@ -146,7 +142,6 @@ rte_swx_pipeline_port_in_config(struct rte_swx_pipeline *p,
  *   -ENOMEM: Not enough space/cannot allocate memory;
  *   -EEXIST: Output port type with this name already exists.
  */
-__rte_experimental
 int
 rte_swx_pipeline_port_out_type_register(struct rte_swx_pipeline *p,
 					const char *name,
@@ -169,7 +164,6 @@ rte_swx_pipeline_port_out_type_register(struct rte_swx_pipeline *p,
  *   -ENOMEM: Not enough space/cannot allocate memory;
  *   -ENODEV: Output port object creation error.
  */
-__rte_experimental
 int
 rte_swx_pipeline_port_out_config(struct rte_swx_pipeline *p,
 				 uint32_t port_id,
@@ -211,7 +205,6 @@ struct rte_swx_pipeline_mirroring_params {
  *   -ENOMEM: Not enough memory;
  *   -EEXIST: Pipeline was already built successfully.
  */
-__rte_experimental
 int
 rte_swx_pipeline_mirroring_config(struct rte_swx_pipeline *p,
 				  struct rte_swx_pipeline_mirroring_params *params);
@@ -242,7 +235,6 @@ rte_swx_pipeline_mirroring_config(struct rte_swx_pipeline *p,
  *   -ENOMEM: Not enough space/cannot allocate memory;
  *   -EEXIST: Extern type with this name already exists.
  */
-__rte_experimental
 int
 rte_swx_pipeline_extern_type_register(struct rte_swx_pipeline *p,
 	const char *name,
@@ -268,7 +260,6 @@ rte_swx_pipeline_extern_type_register(struct rte_swx_pipeline *p,
  *   -EEXIST: Member function with this name already exists for this type;
  *   -ENOSPC: Maximum number of member functions reached for this type.
  */
-__rte_experimental
 int
 rte_swx_pipeline_extern_type_member_func_register(struct rte_swx_pipeline *p,
 	const char *extern_type_name,
@@ -295,7 +286,6 @@ rte_swx_pipeline_extern_type_member_func_register(struct rte_swx_pipeline *p,
  *   -EEXIST: Extern object with this name already exists;
  *   -ENODEV: Extern object constructor error.
  */
-__rte_experimental
 int
 rte_swx_pipeline_extern_object_config(struct rte_swx_pipeline *p,
 				      const char *extern_type_name,
@@ -321,7 +311,6 @@ rte_swx_pipeline_extern_object_config(struct rte_swx_pipeline *p,
  *   -ENOMEM: Not enough space/cannot allocate memory;
  *   -EEXIST: Extern function with this name already exists.
  */
-__rte_experimental
 int
 rte_swx_pipeline_extern_func_register(struct rte_swx_pipeline *p,
 				      const char *name,
@@ -346,7 +335,6 @@ rte_swx_pipeline_extern_func_register(struct rte_swx_pipeline *p,
  *   -ENOMEM: Not enough space/cannot allocate memory;
  *   -EEXIST: Hash function with this name already exists.
  */
-__rte_experimental
 int
 rte_swx_pipeline_hash_func_register(struct rte_swx_pipeline *p,
 				    const char *name,
@@ -425,7 +413,6 @@ struct rte_swx_field_params {
  *   -ENOMEM: Not enough space/cannot allocate memory;
  *   -EEXIST: Struct type with this name already exists.
  */
-__rte_experimental
 int
 rte_swx_pipeline_struct_type_register(struct rte_swx_pipeline *p,
 				      const char *name,
@@ -449,7 +436,6 @@ rte_swx_pipeline_struct_type_register(struct rte_swx_pipeline *p,
  *   -EEXIST: Header with this name already exists;
  *   -ENOSPC: Maximum number of headers reached for the pipeline.
  */
-__rte_experimental
 int
 rte_swx_pipeline_packet_header_register(struct rte_swx_pipeline *p,
 					const char *name,
@@ -466,7 +452,6 @@ rte_swx_pipeline_packet_header_register(struct rte_swx_pipeline *p,
  *   0 on success or the following error codes otherwise:
  *   -EINVAL: Invalid argument.
  */
-__rte_experimental
 int
 rte_swx_pipeline_packet_metadata_register(struct rte_swx_pipeline *p,
 					  const char *struct_type_name);
@@ -601,7 +586,6 @@ rte_swx_pipeline_packet_metadata_register(struct rte_swx_pipeline *p,
  *   -ENOMEM: Not enough space/cannot allocate memory;
  *   -EEXIST: Action with this name already exists.
  */
-__rte_experimental
 int
 rte_swx_pipeline_action_config(struct rte_swx_pipeline *p,
 			       const char *name,
@@ -630,7 +614,6 @@ rte_swx_pipeline_action_config(struct rte_swx_pipeline *p,
  *   -ENOMEM: Not enough space/cannot allocate memory;
  *   -EEXIST: Table type with this name already exists.
  */
-__rte_experimental
 int
 rte_swx_pipeline_table_type_register(struct rte_swx_pipeline *p,
 				     const char *name,
@@ -739,7 +722,6 @@ struct rte_swx_pipeline_table_params {
  *   -EEXIST: Table with this name already exists;
  *   -ENODEV: Table creation error.
  */
-__rte_experimental
 int
 rte_swx_pipeline_table_config(struct rte_swx_pipeline *p,
 			      const char *name,
@@ -793,7 +775,6 @@ struct rte_swx_pipeline_selector_params {
  *   -EEXIST: Selector table with this name already exists;
  *   -ENODEV: Selector table creation error.
  */
-__rte_experimental
 int
 rte_swx_pipeline_selector_config(struct rte_swx_pipeline *p,
 				 const char *name,
@@ -881,7 +862,6 @@ struct rte_swx_pipeline_learner_params {
  *   -EEXIST: Learner table with this name already exists;
  *   -ENODEV: Learner table creation error.
  */
-__rte_experimental
 int
 rte_swx_pipeline_learner_config(struct rte_swx_pipeline *p,
 				const char *name,
@@ -907,7 +887,6 @@ rte_swx_pipeline_learner_config(struct rte_swx_pipeline *p,
  *   -ENOMEM: Not enough space/cannot allocate memory;
  *   -EEXIST: Register array with this name already exists.
  */
-__rte_experimental
 int
 rte_swx_pipeline_regarray_config(struct rte_swx_pipeline *p,
 				 const char *name,
@@ -930,7 +909,6 @@ rte_swx_pipeline_regarray_config(struct rte_swx_pipeline *p,
  *   -ENOMEM: Not enough space/cannot allocate memory;
  *   -EEXIST: Meter array with this name already exists.
  */
-__rte_experimental
 int
 rte_swx_pipeline_metarray_config(struct rte_swx_pipeline *p,
 				 const char *name,
@@ -950,7 +928,6 @@ rte_swx_pipeline_metarray_config(struct rte_swx_pipeline *p,
  *   -EINVAL: Invalid argument;
  *   -ENOMEM: Not enough space/cannot allocate memory.
  */
-__rte_experimental
 int
 rte_swx_pipeline_instructions_config(struct rte_swx_pipeline *p,
 				     const char **instructions,
@@ -971,7 +948,6 @@ rte_swx_pipeline_instructions_config(struct rte_swx_pipeline *p,
  *   -ENOMEM: Not enough space/cannot allocate memory;
  *   -EEXIST: Pipeline was already built successfully.
  */
-__rte_experimental
 int
 rte_swx_pipeline_build(struct rte_swx_pipeline *p);
 
@@ -993,7 +969,6 @@ rte_swx_pipeline_build(struct rte_swx_pipeline *p);
  *   -ENOMEM: Not enough space/cannot allocate memory;
  *   -EEXIST: Resource with the same name already exists.
  */
-__rte_experimental
 int
 rte_swx_pipeline_codegen(FILE *spec_file,
 			 FILE *code_file,
@@ -1026,7 +1001,6 @@ rte_swx_pipeline_codegen(FILE *spec_file,
  *   -EEXIST: Pipeline with this name already exists;
  *   -ENODEV: Extern object or table creation error.
  */
-__rte_experimental
 int
 rte_swx_pipeline_build_from_lib(struct rte_swx_pipeline **p,
 				const char *name,
@@ -1042,7 +1016,6 @@ rte_swx_pipeline_build_from_lib(struct rte_swx_pipeline **p,
  * @param[in] n_instructions
  *   Number of instructions to execute.
  */
-__rte_experimental
 void
 rte_swx_pipeline_run(struct rte_swx_pipeline *p,
 		     uint32_t n_instructions);
@@ -1056,7 +1029,6 @@ rte_swx_pipeline_run(struct rte_swx_pipeline *p,
  *   Pipeline handle.
  *   If p is NULL, no operation is performed.
  */
-__rte_experimental
 void
 rte_swx_pipeline_flush(struct rte_swx_pipeline *p);
 
@@ -1066,7 +1038,6 @@ rte_swx_pipeline_flush(struct rte_swx_pipeline *p);
  * @param[in] p
  *   Pipeline handle.
  */
-__rte_experimental
 void
 rte_swx_pipeline_free(struct rte_swx_pipeline *p);
 
diff --git a/lib/pipeline/rte_table_action.h b/lib/pipeline/rte_table_action.h
index 5dffbeb70031..3f9fd8696c8b 100644
--- a/lib/pipeline/rte_table_action.h
+++ b/lib/pipeline/rte_table_action.h
@@ -819,7 +819,6 @@ struct rte_table_action_profile;
  * @return
  *   Table action profile handle on success, NULL otherwise.
  */
-__rte_experimental
 struct rte_table_action_profile *
 rte_table_action_profile_create(struct rte_table_action_common_config *common);
 
@@ -831,7 +830,6 @@ rte_table_action_profile_create(struct rte_table_action_common_config *common);
  * @return
  *   Zero on success, non-zero error code otherwise.
  */
-__rte_experimental
 int
 rte_table_action_profile_free(struct rte_table_action_profile *profile);
 
@@ -850,7 +848,6 @@ rte_table_action_profile_free(struct rte_table_action_profile *profile);
  * @return
  *   Zero on success, non-zero error code otherwise.
  */
-__rte_experimental
 int
 rte_table_action_profile_action_register(struct rte_table_action_profile *profile,
 	enum rte_table_action_type type,
@@ -871,7 +868,6 @@ rte_table_action_profile_action_register(struct rte_table_action_profile *profil
  *
  * @see rte_table_action_create()
  */
-__rte_experimental
 int
 rte_table_action_profile_freeze(struct rte_table_action_profile *profile);
 
@@ -895,7 +891,6 @@ struct rte_table_action;
  *
  * @see rte_table_action_create()
  */
-__rte_experimental
 struct rte_table_action *
 rte_table_action_create(struct rte_table_action_profile *profile,
 	uint32_t socket_id);
@@ -908,7 +903,6 @@ rte_table_action_create(struct rte_table_action_profile *profile,
  * @return
  *   Zero on success, non-zero error code otherwise.
  */
-__rte_experimental
 int
 rte_table_action_free(struct rte_table_action *action);
 
@@ -922,7 +916,6 @@ rte_table_action_free(struct rte_table_action *action);
  * @return
  *   Zero on success, non-zero error code otherwise.
  */
-__rte_experimental
 int
 rte_table_action_table_params_get(struct rte_table_action *action,
 	struct rte_pipeline_table_params *params);
@@ -945,7 +938,6 @@ rte_table_action_table_params_get(struct rte_table_action *action,
  * @return
  *   Zero on success, non-zero error code otherwise.
  */
-__rte_experimental
 int
 rte_table_action_apply(struct rte_table_action *action,
 	void *data,
@@ -965,7 +957,6 @@ rte_table_action_apply(struct rte_table_action *action,
  * @return
  *   Zero on success, non-zero error code otherwise.
  */
-__rte_experimental
 int
 rte_table_action_dscp_table_update(struct rte_table_action *action,
 	uint64_t dscp_mask,
@@ -985,7 +976,6 @@ rte_table_action_dscp_table_update(struct rte_table_action *action,
  * @return
  *   Zero on success, non-zero error code otherwise.
  */
-__rte_experimental
 int
 rte_table_action_meter_profile_add(struct rte_table_action *action,
 	uint32_t meter_profile_id,
@@ -1002,7 +992,6 @@ rte_table_action_meter_profile_add(struct rte_table_action *action,
  * @return
  *   Zero on success, non-zero error code otherwise.
  */
-__rte_experimental
 int
 rte_table_action_meter_profile_delete(struct rte_table_action *action,
 	uint32_t meter_profile_id);
@@ -1034,7 +1023,6 @@ rte_table_action_meter_profile_delete(struct rte_table_action *action,
  * @return
  *   Zero on success, non-zero error code otherwise.
  */
-__rte_experimental
 int
 rte_table_action_meter_read(struct rte_table_action *action,
 	void *data,
@@ -1061,7 +1049,6 @@ rte_table_action_meter_read(struct rte_table_action *action,
  * @return
  *   Zero on success, non-zero error code otherwise.
  */
-__rte_experimental
 int
 rte_table_action_ttl_read(struct rte_table_action *action,
 	void *data,
@@ -1087,7 +1074,6 @@ rte_table_action_ttl_read(struct rte_table_action *action,
  * @return
  *   Zero on success, non-zero error code otherwise.
  */
-__rte_experimental
 int
 rte_table_action_stats_read(struct rte_table_action *action,
 	void *data,
@@ -1108,7 +1094,6 @@ rte_table_action_stats_read(struct rte_table_action *action,
  * @return
  *   Zero on success, non-zero error code otherwise.
  */
-__rte_experimental
 int
 rte_table_action_time_read(struct rte_table_action *action,
 	void *data,
@@ -1124,7 +1109,6 @@ rte_table_action_time_read(struct rte_table_action *action,
  * @return
  *   The pointer to the session on success, NULL otherwise.
  */
-__rte_experimental
 struct rte_cryptodev_sym_session *
 rte_table_action_crypto_sym_session_get(struct rte_table_action *action,
 	void *data);
diff --git a/lib/pipeline/version.map b/lib/pipeline/version.map
index 6997b69340ef..64bc0f1183ed 100644
--- a/lib/pipeline/version.map
+++ b/lib/pipeline/version.map
@@ -24,14 +24,6 @@ DPDK_24 {
 	rte_pipeline_table_entry_delete;
 	rte_pipeline_table_entry_delete_bulk;
 	rte_pipeline_table_stats_read;
-
-	local: *;
-};
-
-EXPERIMENTAL {
-	global:
-
-	# added in 18.05
 	rte_port_in_action_apply;
 	rte_port_in_action_create;
 	rte_port_in_action_free;
@@ -40,56 +32,76 @@ EXPERIMENTAL {
 	rte_port_in_action_profile_create;
 	rte_port_in_action_profile_free;
 	rte_port_in_action_profile_freeze;
-	rte_table_action_apply;
-	rte_table_action_create;
-	rte_table_action_dscp_table_update;
-	rte_table_action_free;
-	rte_table_action_meter_profile_add;
-	rte_table_action_meter_profile_delete;
-	rte_table_action_meter_read;
-	rte_table_action_profile_action_register;
-	rte_table_action_profile_create;
-	rte_table_action_profile_free;
-	rte_table_action_profile_freeze;
-	rte_table_action_stats_read;
-	rte_table_action_table_params_get;
-	rte_table_action_time_read;
-	rte_table_action_ttl_read;
-
-	# added in 18.11
-	rte_table_action_crypto_sym_session_get;
-
-	# added in 20.11
 	rte_swx_ctl_action_arg_info_get;
 	rte_swx_ctl_action_info_get;
+	rte_swx_ctl_learner_action_info_get;
+	rte_swx_ctl_learner_info_get;
+	rte_swx_ctl_learner_match_field_info_get;
+	rte_swx_ctl_metarray_info_get;
+	rte_swx_ctl_meter_profile_add;
+	rte_swx_ctl_meter_profile_delete;
+	rte_swx_ctl_meter_reset;
+	rte_swx_ctl_meter_reset_with_key;
+	rte_swx_ctl_meter_set;
+	rte_swx_ctl_meter_set_with_key;
+	rte_swx_ctl_meter_stats_read;
+	rte_swx_ctl_meter_stats_read_with_key;
 	rte_swx_ctl_pipeline_abort;
 	rte_swx_ctl_pipeline_commit;
 	rte_swx_ctl_pipeline_create;
+	rte_swx_ctl_pipeline_find;
 	rte_swx_ctl_pipeline_free;
 	rte_swx_ctl_pipeline_info_get;
+	rte_swx_ctl_pipeline_learner_default_entry_add;
+	rte_swx_ctl_pipeline_learner_default_entry_read;
+	rte_swx_ctl_pipeline_learner_stats_read;
+	rte_swx_ctl_pipeline_learner_timeout_get;
+	rte_swx_ctl_pipeline_learner_timeout_set;
 	rte_swx_ctl_pipeline_mirroring_session_set;
 	rte_swx_ctl_pipeline_numa_node_get;
 	rte_swx_ctl_pipeline_port_in_stats_read;
 	rte_swx_ctl_pipeline_port_out_stats_read;
+	rte_swx_ctl_pipeline_regarray_read;
+	rte_swx_ctl_pipeline_regarray_read_with_key;
+	rte_swx_ctl_pipeline_regarray_write;
+	rte_swx_ctl_pipeline_regarray_write_with_key;
+	rte_swx_ctl_pipeline_selector_fprintf;
+	rte_swx_ctl_pipeline_selector_group_add;
+	rte_swx_ctl_pipeline_selector_group_delete;
+	rte_swx_ctl_pipeline_selector_group_member_add;
+	rte_swx_ctl_pipeline_selector_group_member_delete;
+	rte_swx_ctl_pipeline_selector_stats_read;
 	rte_swx_ctl_pipeline_table_default_entry_add;
 	rte_swx_ctl_pipeline_table_entry_add;
 	rte_swx_ctl_pipeline_table_entry_delete;
 	rte_swx_ctl_pipeline_table_entry_read;
 	rte_swx_ctl_pipeline_table_fprintf;
+	rte_swx_ctl_pipeline_table_stats_read;
+	rte_swx_ctl_regarray_info_get;
+	rte_swx_ctl_selector_field_info_get;
+	rte_swx_ctl_selector_group_id_field_info_get;
+	rte_swx_ctl_selector_info_get;
+	rte_swx_ctl_selector_member_id_field_info_get;
 	rte_swx_ctl_table_action_info_get;
 	rte_swx_ctl_table_info_get;
 	rte_swx_ctl_table_match_field_info_get;
 	rte_swx_ctl_table_ops_get;
 	rte_swx_pipeline_action_config;
 	rte_swx_pipeline_build;
+	rte_swx_pipeline_build_from_lib;
+	rte_swx_pipeline_codegen;
 	rte_swx_pipeline_config;
 	rte_swx_pipeline_extern_func_register;
 	rte_swx_pipeline_extern_object_config;
 	rte_swx_pipeline_extern_type_member_func_register;
 	rte_swx_pipeline_extern_type_register;
+	rte_swx_pipeline_find;
 	rte_swx_pipeline_flush;
 	rte_swx_pipeline_free;
+	rte_swx_pipeline_hash_func_register;
 	rte_swx_pipeline_instructions_config;
+	rte_swx_pipeline_learner_config;
+	rte_swx_pipeline_metarray_config;
 	rte_swx_pipeline_mirroring_config;
 	rte_swx_pipeline_packet_header_register;
 	rte_swx_pipeline_packet_metadata_register;
@@ -97,64 +109,36 @@ EXPERIMENTAL {
 	rte_swx_pipeline_port_in_type_register;
 	rte_swx_pipeline_port_out_config;
 	rte_swx_pipeline_port_out_type_register;
+	rte_swx_pipeline_regarray_config;
 	rte_swx_pipeline_run;
+	rte_swx_pipeline_selector_config;
 	rte_swx_pipeline_struct_type_register;
 	rte_swx_pipeline_table_config;
 	rte_swx_pipeline_table_state_get;
 	rte_swx_pipeline_table_state_set;
 	rte_swx_pipeline_table_type_register;
+	rte_table_action_apply;
+	rte_table_action_create;
+	rte_table_action_crypto_sym_session_get;
+	rte_table_action_dscp_table_update;
+	rte_table_action_free;
+	rte_table_action_meter_profile_add;
+	rte_table_action_meter_profile_delete;
+	rte_table_action_meter_read;
+	rte_table_action_profile_action_register;
+	rte_table_action_profile_create;
+	rte_table_action_profile_free;
+	rte_table_action_profile_freeze;
+	rte_table_action_stats_read;
+	rte_table_action_table_params_get;
+	rte_table_action_time_read;
+	rte_table_action_ttl_read;
 
-	# added in 21.05
-	rte_swx_ctl_metarray_info_get;
-	rte_swx_ctl_meter_profile_add;
-	rte_swx_ctl_meter_profile_delete;
-	rte_swx_ctl_meter_reset;
-	rte_swx_ctl_meter_set;
-	rte_swx_ctl_meter_stats_read;
-	rte_swx_ctl_pipeline_regarray_read;
-	rte_swx_ctl_pipeline_regarray_write;
-	rte_swx_ctl_pipeline_table_stats_read;
-	rte_swx_ctl_regarray_info_get;
-	rte_swx_pipeline_metarray_config;
-	rte_swx_pipeline_regarray_config;
-
-	# added in 21.08
-	rte_swx_pipeline_selector_config;
-	rte_swx_ctl_pipeline_selector_fprintf;
-	rte_swx_ctl_pipeline_selector_group_add;
-	rte_swx_ctl_pipeline_selector_group_delete;
-	rte_swx_ctl_pipeline_selector_group_member_add;
-	rte_swx_ctl_pipeline_selector_group_member_delete;
-	rte_swx_ctl_pipeline_selector_stats_read;
-	rte_swx_ctl_selector_info_get;
-	rte_swx_ctl_selector_field_info_get;
-	rte_swx_ctl_selector_group_id_field_info_get;
-	rte_swx_ctl_selector_member_id_field_info_get;
-
-	# added in 21.11
-	rte_swx_ctl_pipeline_learner_default_entry_add;
-	rte_swx_ctl_pipeline_learner_default_entry_read;
-	rte_swx_ctl_pipeline_learner_stats_read;
-	rte_swx_ctl_learner_action_info_get;
-	rte_swx_ctl_learner_info_get;
-	rte_swx_ctl_learner_match_field_info_get;
-	rte_swx_pipeline_learner_config;
-
-	# added in 22.07
-	rte_swx_ctl_pipeline_learner_timeout_get;
-	rte_swx_ctl_pipeline_learner_timeout_set;
-	rte_swx_pipeline_hash_func_register;
+	local: *;
+};
 
-	# added in 22.11
-	rte_swx_ctl_meter_reset_with_key;
-	rte_swx_ctl_meter_set_with_key;
-	rte_swx_ctl_meter_stats_read_with_key;
-	rte_swx_ctl_pipeline_find;
-	rte_swx_ctl_pipeline_regarray_read_with_key;
-	rte_swx_ctl_pipeline_regarray_write_with_key;
-	rte_swx_pipeline_build_from_lib;
-	rte_swx_pipeline_codegen;
-	rte_swx_pipeline_find;
+EXPERIMENTAL {
+	global:
 
 	# added in 23.03
 	rte_swx_ctl_pipeline_rss_key_read;
diff --git a/lib/port/version.map b/lib/port/version.map
index fefcf29063f6..1ca6dfb22a5e 100644
--- a/lib/port/version.map
+++ b/lib/port/version.map
@@ -4,6 +4,9 @@ DPDK_24 {
 	rte_port_ethdev_reader_ops;
 	rte_port_ethdev_writer_nodrop_ops;
 	rte_port_ethdev_writer_ops;
+	rte_port_eventdev_reader_ops;
+	rte_port_eventdev_writer_nodrop_ops;
+	rte_port_eventdev_writer_ops;
 	rte_port_fd_reader_ops;
 	rte_port_fd_writer_nodrop_ops;
 	rte_port_fd_writer_ops;
@@ -24,27 +27,14 @@ DPDK_24 {
 	rte_port_sym_crypto_reader_ops;
 	rte_port_sym_crypto_writer_nodrop_ops;
 	rte_port_sym_crypto_writer_ops;
-
-	local: *;
-};
-
-EXPERIMENTAL {
-	global:
-
-	# added in 19.11
-	rte_port_eventdev_reader_ops;
-	rte_port_eventdev_writer_nodrop_ops;
-	rte_port_eventdev_writer_ops;
-
-	# added in 20.11
 	rte_swx_port_ethdev_reader_ops;
 	rte_swx_port_ethdev_writer_ops;
-	rte_swx_port_sink_ops;
-	rte_swx_port_source_ops;
-
-	# added in 21.05
 	rte_swx_port_fd_reader_ops;
 	rte_swx_port_fd_writer_ops;
 	rte_swx_port_ring_reader_ops;
 	rte_swx_port_ring_writer_ops;
+	rte_swx_port_sink_ops;
+	rte_swx_port_source_ops;
+
+	local: *;
 };
-- 
2.39.2


  parent reply	other threads:[~2023-10-19 19:14 UTC|newest]

Thread overview: 219+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2023-08-08 17:35 [PATCH 00/20] remove experimental flag from some API's Stephen Hemminger
2023-08-08 17:35 ` [PATCH 01/20] bpf: make rte_bpf_dump and rte_bpf_convert stable API's Stephen Hemminger
2023-08-08 17:35 ` [PATCH 02/20] cmdline: make experimental API's stable Stephen Hemminger
2023-08-08 17:35 ` [PATCH 03/20] ethdev: mark rte_mtr API's as stable Stephen Hemminger
2023-08-08 17:35 ` [PATCH 04/20] ethdev: mark rte_tm " Stephen Hemminger
2023-08-08 17:35 ` [PATCH 05/20] pdump: make API's stable Stephen Hemminger
2023-08-08 17:35 ` [PATCH 06/20] pcapng: mark API's as stable Stephen Hemminger
2023-08-08 17:35 ` [PATCH 07/20] net: remove experimental from functions Stephen Hemminger
2023-08-08 17:35 ` [PATCH 08/20] rcu: remove experimental from rte_rcu_qbsr Stephen Hemminger
2023-08-08 21:42   ` Honnappa Nagarahalli
2023-08-08 17:35 ` [PATCH 09/20] lpm: remove experimental Stephen Hemminger
2023-08-08 17:35 ` [PATCH 10/20] mbuf: remove experimental from create_extbuf Stephen Hemminger
2023-08-08 17:35 ` [PATCH 11/20] hash: remove experimental from toeplitz hash Stephen Hemminger
2023-08-08 17:35 ` [PATCH 12/20] timer: remove experimental from rte_timer_next_ticks Stephen Hemminger
2023-08-08 17:35 ` [PATCH 13/20] sched: remove experimental Stephen Hemminger
2023-08-08 17:35 ` [PATCH 14/20] dmadev: mark API's as not experimental Stephen Hemminger
2023-10-07  2:38   ` fengchengwen
2023-08-08 17:35 ` [PATCH 15/20] meter: remove experimental warning from comments Stephen Hemminger
2023-08-08 17:35 ` [PATCH 16/20] power: remove experimental from API's Stephen Hemminger
2023-08-08 17:35 ` [PATCH 17/20] kvargs: remove experimental flag Stephen Hemminger
2023-08-08 17:35 ` [PATCH 18/20] ip_frag: mark a couple of functions stable Stephen Hemminger
2023-08-08 17:35 ` [PATCH 19/20] member: remove experimental tag Stephen Hemminger
2023-08-08 17:35 ` [PATCH 20/20] security: remove experimental flag Stephen Hemminger
2023-08-08 18:19 ` [PATCH 00/20] remove experimental flag from some API's Tyler Retzlaff
2023-08-08 21:33   ` Stephen Hemminger
2023-08-08 23:23     ` Tyler Retzlaff
2023-08-09 15:34       ` Stephen Hemminger
2023-08-09 17:15         ` Dmitry Kozlyuk
2023-08-09  0:09 ` [PATCH v2 00/29] promote many API's to stable Stephen Hemminger
2023-08-09  0:09   ` [PATCH v2 01/29] bpf: make rte_bpf_dump and rte_bpf_convert stable API's Stephen Hemminger
2023-09-17 13:03     ` Konstantin Ananyev
2023-08-09  0:09   ` [PATCH v2 02/29] cmdline: make experimental API's stable Stephen Hemminger
2023-10-18 16:47     ` Bruce Richardson
2023-08-09  0:09   ` [PATCH v2 03/29] ethdev: mark rte_mtr API's as stable Stephen Hemminger
2023-08-09  0:09   ` [PATCH v2 04/29] ethdev: mark rte_tm " Stephen Hemminger
2023-08-09  0:09   ` [PATCH v2 05/29] pdump: make API's stable Stephen Hemminger
2023-08-09  0:09   ` [PATCH v2 06/29] pcapng: mark API's as stable Stephen Hemminger
2023-08-09  0:09   ` [PATCH v2 07/29] net: remove experimental from functions Stephen Hemminger
2023-08-09  0:09   ` [PATCH v2 08/29] rcu: remove experimental from rte_rcu_qbsr Stephen Hemminger
2023-08-09  0:09   ` [PATCH v2 09/29] lpm: remove experimental Stephen Hemminger
2023-08-09  0:09   ` [PATCH v2 10/29] mbuf: remove experimental from create_extbuf Stephen Hemminger
2023-10-18 17:05     ` Bruce Richardson
2023-08-09  0:09   ` [PATCH v2 11/29] hash: remove experimental from toeplitz hash Stephen Hemminger
2023-08-09  0:10   ` [PATCH v2 12/29] timer: remove experimental from rte_timer_next_ticks Stephen Hemminger
2023-08-09  0:10   ` [PATCH v2 13/29] sched: remove experimental Stephen Hemminger
2023-08-09  0:10   ` [PATCH v2 14/29] dmadev: mark API's as not experimental Stephen Hemminger
2023-10-18 17:07     ` Bruce Richardson
2023-08-09  0:10   ` [PATCH v2 15/29] meter: remove experimental warning from comments Stephen Hemminger
2023-10-18 17:07     ` Bruce Richardson
2023-10-19  6:54     ` David Marchand
2023-08-09  0:10   ` [PATCH v2 16/29] power: remove experimental from API's Stephen Hemminger
2023-10-20  9:47     ` Hunt, David
2023-08-09  0:10   ` [PATCH v2 17/29] kvargs: remove experimental flag Stephen Hemminger
2023-10-18 17:08     ` Bruce Richardson
2023-08-09  0:10   ` [PATCH v2 18/29] ip_frag: mark a couple of functions stable Stephen Hemminger
2023-09-17 13:06     ` Konstantin Ananyev
2023-08-09  0:10   ` [PATCH v2 19/29] member: remove experimental tag Stephen Hemminger
2023-08-09  0:10   ` [PATCH v2 20/29] security: remove experimental flag Stephen Hemminger
2023-08-09  0:10   ` [PATCH v2 21/29] vhost: remove experimental from some API's Stephen Hemminger
2023-08-09  0:10   ` [PATCH v2 22/29] bbdev: remove experimental tag Stephen Hemminger
2023-08-09  0:10   ` [PATCH v2 23/29] ipsec: remove experimental from SA API Stephen Hemminger
2023-09-17 13:05     ` Konstantin Ananyev
2023-08-09  0:10   ` [PATCH v2 24/29] compressdev: remove experimental flag Stephen Hemminger
2023-08-09  0:10   ` [PATCH v2 25/29] regexdev: remove experimental tag Stephen Hemminger
2023-10-11 12:44     ` Ori Kam
2023-10-11 16:44       ` Jerin Jacob
2023-08-09  0:10   ` [PATCH v2 26/29] node: " Stephen Hemminger
2023-08-09  0:10   ` [PATCH v2 27/29] cryptodev: remove experimental from more API's Stephen Hemminger
2023-08-09  0:10   ` [PATCH v2 28/29] table: remove experimental from API Stephen Hemminger
2023-08-09  0:10   ` [PATCH v2 29/29] port: make API's stable Stephen Hemminger
2023-10-18 19:14   ` [PATCH v2 00/29] promote many API's to stable David Marchand
2023-10-18 19:41     ` David Marchand
2023-10-19 16:55 ` [PATCH v3 00/29] Promote experimental " Stephen Hemminger
2023-10-19 16:55   ` [PATCH v3 01/29] bpf: make rte_bpf_dump and rte_bpf_convert stable API's Stephen Hemminger
2023-10-19 16:55   ` [PATCH v3 02/29] cmdline: make experimental API's stable Stephen Hemminger
2023-10-19 16:55   ` [PATCH v3 03/29] ethdev: mark rte_mtr API's as stable Stephen Hemminger
2023-10-19 16:55   ` [PATCH v3 04/29] ethdev: mark rte_tm " Stephen Hemminger
2023-10-19 16:55   ` [PATCH v3 05/29] pdump: make API's stable Stephen Hemminger
2023-10-19 16:55   ` [PATCH v3 06/29] pcapng: mark API's as stable Stephen Hemminger
2023-10-19 16:55   ` [PATCH v3 07/29] net: remove experimental from functions Stephen Hemminger
2023-10-19 16:55   ` [PATCH v3 08/29] rcu: remove experimental from rte_rcu_qbsr Stephen Hemminger
2023-10-19 16:55   ` [PATCH v3 09/29] lpm: remove experimental Stephen Hemminger
2023-10-19 16:55   ` [PATCH v3 10/29] mbuf: remove experimental from create_extbuf Stephen Hemminger
2023-10-19 16:55   ` [PATCH v3 11/29] hash: remove experimental from toeplitz hash Stephen Hemminger
2023-10-19 16:55   ` [PATCH v3 12/29] timer: remove experimental from rte_timer_next_ticks Stephen Hemminger
2023-10-19 16:55   ` [PATCH v3 13/29] sched: remove experimental Stephen Hemminger
2023-10-19 16:55   ` [PATCH v3 14/29] dmadev: mark API's as not experimental Stephen Hemminger
2023-10-19 16:55   ` [PATCH v3 15/29] meter: remove experimental warning from comments Stephen Hemminger
2023-10-19 16:55   ` [PATCH v3 16/29] power: remove experimental from API's Stephen Hemminger
2023-10-19 16:55   ` [PATCH v3 17/29] kvargs: remove experimental flag Stephen Hemminger
2023-10-19 16:55   ` [PATCH v3 18/29] ip_frag: mark a couple of functions stable Stephen Hemminger
2023-10-19 16:55   ` [PATCH v3 19/29] member: remove experimental tag Stephen Hemminger
2023-10-19 16:55   ` [PATCH v3 20/29] power fix Stephen Hemminger
2023-10-19 16:55   ` [PATCH v3 21/29] security: remove experimental flag from macsec Stephen Hemminger
2023-10-19 18:00     ` [EXT] " Akhil Goyal
2023-10-19 16:55   ` [PATCH v3 22/29] vhost: remove experimental from some API's Stephen Hemminger
2023-10-20  7:41     ` Maxime Coquelin
2023-10-20 20:36       ` Stephen Hemminger
2023-10-19 16:55   ` [PATCH v3 23/29] bbdev: remove experimental tag Stephen Hemminger
2023-10-19 16:55   ` [PATCH v3 24/29] ipsec: remove experimental from SA API Stephen Hemminger
2023-10-19 16:55   ` [PATCH v3 25/29] compressdev: remove experimental flag Stephen Hemminger
2023-10-19 16:55   ` [PATCH v3 26/29] regexdev: remove experimental tag Stephen Hemminger
2023-10-19 16:55   ` [PATCH v3 27/29] node: remove some of the experimental tags Stephen Hemminger
2023-10-19 16:55   ` [PATCH v3 28/29] table: remove experimental from API Stephen Hemminger
2023-10-19 16:55   ` [PATCH v3 29/29] port: make API's stable Stephen Hemminger
2023-10-19 19:09 ` [PATCH v4 00/28] Promote many experimental API's to stable Stephen Hemminger
2023-10-19 19:09   ` [PATCH v4 01/28] bpf: make rte_bpf_dump and rte_bpf_convert stable API's Stephen Hemminger
2023-10-19 19:09   ` [PATCH v4 02/28] cmdline: make experimental API's stable Stephen Hemminger
2023-10-19 19:09   ` [PATCH v4 03/28] ethdev: mark rte_mtr API's as stable Stephen Hemminger
2023-10-20 10:18     ` Dumitrescu, Cristian
2023-10-20 20:32       ` Stephen Hemminger
2023-10-23  9:16         ` Dumitrescu, Cristian
2023-10-19 19:09   ` [PATCH v4 04/28] ethdev: mark rte_tm " Stephen Hemminger
2023-10-20 10:17     ` Dumitrescu, Cristian
2023-10-19 19:09   ` [PATCH v4 05/28] pdump: make API's stable Stephen Hemminger
2023-10-19 19:09   ` [PATCH v4 06/28] pcapng: mark API's as stable Stephen Hemminger
2023-10-20 11:03     ` Morten Brørup
2023-10-19 19:09   ` [PATCH v4 07/28] net: remove experimental from functions Stephen Hemminger
2023-10-19 19:09   ` [PATCH v4 08/28] rcu: remove experimental from rte_rcu_qbsr Stephen Hemminger
2023-10-19 19:09   ` [PATCH v4 09/28] lpm: remove experimental Stephen Hemminger
2023-10-19 19:09   ` [PATCH v4 10/28] mbuf: remove experimental from create_extbuf Stephen Hemminger
2023-10-19 19:09   ` [PATCH v4 11/28] hash: remove experimental from toeplitz hash Stephen Hemminger
2023-10-19 19:10   ` [PATCH v4 12/28] timer: remove experimental from rte_timer_next_ticks Stephen Hemminger
2023-10-19 19:10   ` [PATCH v4 13/28] sched: remove experimental Stephen Hemminger
2023-10-20 10:15     ` Dumitrescu, Cristian
2023-10-19 19:10   ` [PATCH v4 14/28] dmadev: mark API's as not experimental Stephen Hemminger
2023-10-19 19:10   ` [PATCH v4 15/28] meter: remove experimental warning from comments Stephen Hemminger
2023-10-20 10:13     ` Dumitrescu, Cristian
2023-10-19 19:10   ` [PATCH v4 16/28] power: remove experimental from API's Stephen Hemminger
2023-10-20  9:58     ` Hunt, David
2023-10-19 19:10   ` [PATCH v4 17/28] kvargs: remove experimental flag Stephen Hemminger
2023-10-19 19:10   ` [PATCH v4 18/28] ip_frag: mark a couple of functions stable Stephen Hemminger
2023-10-19 19:10   ` [PATCH v4 19/28] member: remove experimental tag Stephen Hemminger
2023-10-19 19:10   ` [PATCH v4 20/28] security: remove experimental flag from macsec Stephen Hemminger
2023-10-19 19:10   ` [PATCH v4 21/28] vhost: remove experimental from some API's Stephen Hemminger
2023-10-20  8:03     ` Maxime Coquelin
2023-10-19 19:10   ` [PATCH v4 22/28] bbdev: remove experimental tag Stephen Hemminger
2023-10-20  8:14     ` Maxime Coquelin
2023-10-19 19:10   ` [PATCH v4 23/28] ipsec: remove experimental from SA API Stephen Hemminger
2023-10-19 19:10   ` [PATCH v4 24/28] compressdev: remove experimental flag Stephen Hemminger
2023-10-19 19:10   ` [PATCH v4 25/28] regexdev: remove experimental tag Stephen Hemminger
2023-10-19 19:10   ` [PATCH v4 26/28] node: remove some of the experimental tags Stephen Hemminger
2023-10-19 19:10   ` [PATCH v4 27/28] table: remove experimental from API Stephen Hemminger
2023-10-20 10:12     ` Dumitrescu, Cristian
2023-10-19 19:10   ` Stephen Hemminger [this message]
2023-10-20 10:11     ` [PATCH v4 28/28] port: make API's stable Dumitrescu, Cristian
2023-10-20 20:57 ` [PATCH v5 00/26] Promote many experimental API's to stable Stephen Hemminger
2023-10-20 20:57   ` [PATCH v5 01/26] bpf: make rte_bpf_dump and rte_bpf_convert stable API's Stephen Hemminger
2023-10-20 20:57   ` [PATCH v5 02/26] cmdline: make experimental API's stable Stephen Hemminger
2023-10-20 20:57   ` [PATCH v5 03/26] ethdev: mark rte_tm API's as stable Stephen Hemminger
2023-10-20 20:57   ` [PATCH v5 04/26] pdump: make API's stable Stephen Hemminger
2023-10-23  9:03     ` Bruce Richardson
2023-10-20 20:57   ` [PATCH v5 05/26] pcapng: mark API's as stable Stephen Hemminger
2023-10-20 20:57   ` [PATCH v5 06/26] net: remove experimental from functions Stephen Hemminger
2023-10-20 20:57   ` [PATCH v5 07/26] rcu: remove experimental from rte_rcu_qbsr Stephen Hemminger
2023-10-20 20:57   ` [PATCH v5 08/26] lpm: remove experimental Stephen Hemminger
2023-10-20 20:57   ` [PATCH v5 09/26] mbuf: remove experimental from create_extbuf Stephen Hemminger
2023-10-20 20:57   ` [PATCH v5 10/26] hash: remove experimental from toeplitz hash Stephen Hemminger
2023-10-23  9:08     ` Bruce Richardson
2023-10-20 20:57   ` [PATCH v5 11/26] timer: remove experimental from rte_timer_next_ticks Stephen Hemminger
2023-10-23  9:08     ` Bruce Richardson
2023-10-20 20:57   ` [PATCH v5 12/26] sched: remove experimental Stephen Hemminger
2023-10-20 20:57   ` [PATCH v5 13/26] dmadev: mark API's as not experimental Stephen Hemminger
2023-10-20 20:57   ` [PATCH v5 14/26] meter: remove experimental warning from comments Stephen Hemminger
2023-10-23  7:29     ` David Marchand
2023-10-24  2:30       ` Stephen Hemminger
2023-10-20 20:57   ` [PATCH v5 15/26] power: remove experimental from API's Stephen Hemminger
2023-10-23  7:29     ` David Marchand
2023-10-20 20:57   ` [PATCH v5 16/26] kvargs: remove experimental flag Stephen Hemminger
2023-10-20 20:57   ` [PATCH v5 17/26] ip_frag: mark a couple of functions stable Stephen Hemminger
2023-10-20 20:57   ` [PATCH v5 18/26] member: remove experimental tag Stephen Hemminger
2023-10-20 20:57   ` [PATCH v5 19/26] security: remove experimental flag from macsec Stephen Hemminger
2023-10-23 12:00     ` David Marchand
2023-10-20 20:57   ` [PATCH v5 20/26] bbdev: remove experimental tag Stephen Hemminger
2023-10-20 20:57   ` [PATCH v5 21/26] ipsec: remove experimental from SA API Stephen Hemminger
2023-10-20 20:57   ` [PATCH v5 22/26] compressdev: remove experimental flag Stephen Hemminger
2023-10-23  9:12     ` Bruce Richardson
2023-10-20 20:57   ` [PATCH v5 23/26] regexdev: remove experimental tag Stephen Hemminger
2023-10-22 10:41     ` Ori Kam
2023-10-20 20:57   ` [PATCH v5 24/26] node: remove some of the experimental tags Stephen Hemminger
2023-10-20 20:57   ` [PATCH v5 25/26] eventdev: make many API's stable Stephen Hemminger
2023-10-20 20:57   ` [PATCH v5 26/26] cryptodev: mark older " Stephen Hemminger
2023-10-24  2:39 ` [PATCH v6 00/25] Promite many experimental API's to stable Stephen Hemminger
2023-10-24  2:39   ` [PATCH v6 01/25] bpf: make rte_bpf_dump and rte_bpf_convert stable API's Stephen Hemminger
2023-10-24  2:39   ` [PATCH v6 02/25] cmdline: make experimental API's stable Stephen Hemminger
2023-10-24  2:39   ` [PATCH v6 03/25] ethdev: mark rte_tm API's as stable Stephen Hemminger
2023-10-24  2:39   ` [PATCH v6 04/25] pdump: make API's stable Stephen Hemminger
2023-10-24  2:53 ` [PATCH v7 00/25] Promote 22.11 and older API's to stable Stephen Hemminger
2023-10-24  2:53   ` [PATCH v7 01/25] bpf: make rte_bpf_dump and rte_bpf_convert stable API's Stephen Hemminger
2023-10-24  2:53   ` [PATCH v7 02/25] cmdline: make experimental API's stable Stephen Hemminger
2023-10-24  2:54   ` [PATCH v7 03/25] ethdev: mark rte_tm API's as stable Stephen Hemminger
2023-10-24  2:54   ` [PATCH v7 04/25] pdump: make API's stable Stephen Hemminger
2023-10-24  2:54   ` [PATCH v7 05/25] pcapng: mark API's as stable Stephen Hemminger
2023-10-24  2:54   ` [PATCH v7 06/25] net: remove experimental from functions Stephen Hemminger
2023-10-24  2:54   ` [PATCH v7 07/25] rcu: remove experimental from rte_rcu_qbsr Stephen Hemminger
2023-10-24  2:54   ` [PATCH v7 08/25] lpm: remove experimental Stephen Hemminger
2023-10-24  2:54   ` [PATCH v7 09/25] mbuf: remove experimental from create_extbuf Stephen Hemminger
2023-10-24  2:54   ` [PATCH v7 10/25] hash: remove experimental from toeplitz hash Stephen Hemminger
2023-10-24  2:54   ` [PATCH v7 11/25] timer: remove experimental from rte_timer_next_ticks Stephen Hemminger
2023-10-24  2:54   ` [PATCH v7 12/25] sched: remove experimental Stephen Hemminger
2023-10-24  2:54   ` [PATCH v7 13/25] dmadev: mark API's as not experimental Stephen Hemminger
2023-10-24  2:54   ` [PATCH v7 14/25] meter: remove experimental warning from comments Stephen Hemminger
2023-10-24  2:54   ` [PATCH v7 15/25] power: remove experimental from API's Stephen Hemminger
2023-10-24  2:54   ` [PATCH v7 16/25] kvargs: remove experimental flag Stephen Hemminger
2023-10-24  2:54   ` [PATCH v7 17/25] ip_frag: mark a couple of functions stable Stephen Hemminger
2023-10-24  2:54   ` [PATCH v7 18/25] member: remove experimental tag Stephen Hemminger
2023-10-24  2:54   ` [PATCH v7 19/25] security: remove experimental flag Stephen Hemminger
2023-10-24  2:54   ` [PATCH v7 20/25] bbdev: remove experimental tag Stephen Hemminger
2023-10-24  2:54   ` [PATCH v7 21/25] ipsec: remove experimental from SA API Stephen Hemminger
2023-10-24  2:54   ` [PATCH v7 22/25] compressdev: remove experimental flag Stephen Hemminger
2023-10-24  2:54   ` [PATCH v7 23/25] node: remove some of the experimental tags Stephen Hemminger
2023-11-12 14:58     ` David Marchand
2023-11-13 10:07       ` Jerin Jacob
2023-10-24  2:54   ` [PATCH v7 24/25] eventdev: make many API's stable Stephen Hemminger
2023-11-13 10:06     ` Jerin Jacob
2023-10-24  2:54   ` [PATCH v7 25/25] cryptodev: mark older " Stephen Hemminger
2023-11-13 15:45   ` [PATCH v7 00/25] Promote 22.11 and older API's to stable David Marchand
2023-10-24  7:20 ` [PATCH 00/20] remove experimental flag from some API's Maxime Coquelin
2023-10-24 16:05   ` Stephen Hemminger

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=20231019191016.156430-29-stephen@networkplumber.org \
    --to=stephen@networkplumber.org \
    --cc=cristian.dumitrescu@intel.com \
    --cc=dev@dpdk.org \
    /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).