DPDK patches and discussions
 help / color / mirror / Atom feed
* [PATCH 00/20] remove experimental flag from some API's
@ 2023-08-08 17:35 Stephen Hemminger
  2023-08-08 17:35 ` [PATCH 01/20] bpf: make rte_bpf_dump and rte_bpf_convert stable API's Stephen Hemminger
                   ` (27 more replies)
  0 siblings, 28 replies; 219+ messages in thread
From: Stephen Hemminger @ 2023-08-08 17:35 UTC (permalink / raw)
  To: dev; +Cc: Stephen Hemminger

Since 23.11 is an LTS release it is time to remove the experimental
bandaid off many API's. There are about 850 API's marked with experimental
on current main branch. This addresses the easy to remove ones and
gets it down to about 690 places.

The rule is any API that has been in since 22.11 needs to have
experimental removed (or deleted). The experimental flag is not a
"get out of ABI stability for free" card.

Stephen Hemminger (20):
  bpf: make rte_bpf_dump and rte_bpf_convert stable API's
  cmdline: make experimental API's stable
  ethdev: mark rte_mtr API's as stable
  ethdev: mark rte_tm API's as stable
  pdump: make API's stable
  pcapng: mark API's as stable
  net: remove experimental from functions
  rcu: remove experimental from rte_rcu_qbsr
  lpm: remove experimental
  mbuf: remove experimental from create_extbuf
  hash: remove experimental from toeplitz hash
  timer: remove experimental from rte_timer_next_ticks
  sched: remove experimental
  dmadev: mark API's as not experimental
  meter: remove experimental warning from comments
  power: remove experimental from API's
  kvargs: remove experimental flag
  ip_frag: mark a couple of functions stable
  member: remove experimental tag
  security: remove experimental flag

 lib/bpf/rte_bpf.h                   |  2 -
 lib/bpf/version.map                 |  9 +--
 lib/cmdline/cmdline.h               |  1 -
 lib/cmdline/cmdline_parse.h         |  4 --
 lib/cmdline/cmdline_rdline.h        |  4 --
 lib/cmdline/version.map             | 26 +++------
 lib/dmadev/rte_dmadev.h             | 85 ----------------------------
 lib/dmadev/version.map              |  2 +-
 lib/ethdev/rte_mtr.h                | 25 +-------
 lib/ethdev/rte_tm.h                 | 34 -----------
 lib/ethdev/version.map              | 88 ++++++++++++++---------------
 lib/hash/rte_thash.h                | 44 ---------------
 lib/hash/rte_thash_gfni.h           |  8 ---
 lib/hash/rte_thash_x86_gfni.h       |  8 ---
 lib/hash/version.map                | 16 ++----
 lib/ip_frag/rte_ip_frag.h           |  2 -
 lib/ip_frag/version.map             |  9 +--
 lib/kvargs/rte_kvargs.h             |  4 --
 lib/kvargs/version.map              |  8 +--
 lib/lpm/rte_lpm.h                   |  4 --
 lib/lpm/version.map                 |  7 +--
 lib/mbuf/rte_mbuf.h                 |  1 -
 lib/mbuf/version.map                |  8 +--
 lib/member/rte_member.h             | 54 ------------------
 lib/member/version.map              | 12 +---
 lib/meter/rte_meter.h               | 12 ----
 lib/net/rte_ip.h                    | 19 -------
 lib/pcapng/rte_pcapng.h             | 11 ----
 lib/pcapng/version.map              |  6 +-
 lib/pdump/rte_pdump.h               | 12 ----
 lib/pdump/version.map               | 11 +---
 lib/power/rte_power.h               |  4 --
 lib/power/rte_power_guest_channel.h |  4 --
 lib/power/rte_power_intel_uncore.h  |  9 ---
 lib/power/rte_power_pmd_mgmt.h      | 40 -------------
 lib/power/version.map               | 33 ++++-------
 lib/rcu/rte_rcu_qsbr.h              | 20 -------
 lib/rcu/version.map                 | 15 ++---
 lib/sched/rte_pie.h                 |  8 ---
 lib/sched/rte_sched.h               |  5 --
 lib/sched/version.map               | 18 ++----
 lib/security/rte_security.h         | 35 ------------
 lib/security/version.map            | 17 ++----
 lib/timer/rte_timer.h               |  4 --
 lib/timer/version.map               |  7 +--
 45 files changed, 97 insertions(+), 658 deletions(-)

-- 
2.39.2


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

* [PATCH 01/20] bpf: make rte_bpf_dump and rte_bpf_convert stable API's
  2023-08-08 17:35 [PATCH 00/20] remove experimental flag from some API's Stephen Hemminger
@ 2023-08-08 17:35 ` Stephen Hemminger
  2023-08-08 17:35 ` [PATCH 02/20] cmdline: make experimental API's stable Stephen Hemminger
                   ` (26 subsequent siblings)
  27 siblings, 0 replies; 219+ messages in thread
From: Stephen Hemminger @ 2023-08-08 17:35 UTC (permalink / raw)
  To: dev; +Cc: Stephen Hemminger, Konstantin Ananyev

These two API's were introduced in 23.11 and can now be
made not experimental.

Signed-off-by: Stephen Hemminger <stephen@networkplumber.org>
---
 lib/bpf/rte_bpf.h   | 2 --
 lib/bpf/version.map | 9 ++-------
 2 files changed, 2 insertions(+), 9 deletions(-)

diff --git a/lib/bpf/rte_bpf.h b/lib/bpf/rte_bpf.h
index 4d71120dbd9d..f70d8dacd0d3 100644
--- a/lib/bpf/rte_bpf.h
+++ b/lib/bpf/rte_bpf.h
@@ -209,7 +209,6 @@ rte_bpf_get_jit(const struct rte_bpf *bpf, struct rte_bpf_jit *jit);
  * @param len
  *   Number of BPF instructions to dump.
  */
-__rte_experimental
 void
 rte_bpf_dump(FILE *f, const struct ebpf_insn *buf, uint32_t len);
 
@@ -229,7 +228,6 @@ struct bpf_program;
  *   - ENOMEM - can't reserve enough memory
  *   - ENOTSUP - operation not supported
  */
-__rte_experimental
 struct rte_bpf_prm *
 rte_bpf_convert(const struct bpf_program *prog);
 
diff --git a/lib/bpf/version.map b/lib/bpf/version.map
index c49bf1701f0a..2e957494e9df 100644
--- a/lib/bpf/version.map
+++ b/lib/bpf/version.map
@@ -1,7 +1,9 @@
 DPDK_24 {
 	global:
 
+	rte_bpf_convert;
 	rte_bpf_destroy;
+	rte_bpf_dump;
 	rte_bpf_elf_load;
 	rte_bpf_eth_rx_elf_load;
 	rte_bpf_eth_rx_unload;
@@ -14,10 +16,3 @@ DPDK_24 {
 
 	local: *;
 };
-
-EXPERIMENTAL {
-	global:
-
-	rte_bpf_convert;
-	rte_bpf_dump;
-};
-- 
2.39.2


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

* [PATCH 02/20] cmdline: make experimental API's stable
  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 ` Stephen Hemminger
  2023-08-08 17:35 ` [PATCH 03/20] ethdev: mark rte_mtr API's as stable Stephen Hemminger
                   ` (25 subsequent siblings)
  27 siblings, 0 replies; 219+ messages in thread
From: Stephen Hemminger @ 2023-08-08 17:35 UTC (permalink / raw)
  To: dev; +Cc: Stephen Hemminger, Olivier Matz

These API's have all ben around for several releases.

Signed-off-by: Stephen Hemminger <stephen@networkplumber.org>
---
 lib/cmdline/cmdline.h        |  1 -
 lib/cmdline/cmdline_parse.h  |  4 ----
 lib/cmdline/cmdline_rdline.h |  4 ----
 lib/cmdline/version.map      | 26 ++++++++------------------
 4 files changed, 8 insertions(+), 27 deletions(-)

diff --git a/lib/cmdline/cmdline.h b/lib/cmdline/cmdline.h
index d631cd4bd459..c41b0ca0b80e 100644
--- a/lib/cmdline/cmdline.h
+++ b/lib/cmdline/cmdline.h
@@ -39,7 +39,6 @@ void cmdline_printf(const struct cmdline *cl, const char *fmt, ...)
 int cmdline_in(struct cmdline *cl, const char *buf, int size);
 int cmdline_write_char(struct rdline *rdl, char c);
 
-__rte_experimental
 struct rdline *
 cmdline_get_rdline(struct cmdline *cl);
 
diff --git a/lib/cmdline/cmdline_parse.h b/lib/cmdline/cmdline_parse.h
index a852ac411c59..41b4db1f76f9 100644
--- a/lib/cmdline/cmdline_parse.h
+++ b/lib/cmdline/cmdline_parse.h
@@ -155,9 +155,6 @@ typedef cmdline_parse_inst_t *cmdline_parse_ctx_t;
 int cmdline_parse(struct cmdline *cl, const char *buf);
 
 /**
- * @warning
- * @b EXPERIMENTAL: this API may change without prior notice
- *
  * Try to parse a buffer according to the specified context, but do not
  * perform any function calls if parse is successful.
  *
@@ -166,7 +163,6 @@ int cmdline_parse(struct cmdline *cl, const char *buf);
  * CMDLINE_PARSE_BAD_ARGS on error and returns the parsed line length (>=0)
  * on successful parse.
  */
-__rte_experimental
 int cmdline_parse_check(struct cmdline *cl, const char *buf);
 
 /**
diff --git a/lib/cmdline/cmdline_rdline.h b/lib/cmdline/cmdline_rdline.h
index 1b4cc7ce5773..c6bb6bbbb36a 100644
--- a/lib/cmdline/cmdline_rdline.h
+++ b/lib/cmdline/cmdline_rdline.h
@@ -58,7 +58,6 @@ typedef int (rdline_complete_t)(struct rdline *rdl, const char *buf,
  *
  * \return New rdline object on success, NULL on failure.
  */
-__rte_experimental
 struct rdline *rdline_new(rdline_write_char_t *write_char,
 			  rdline_validate_t *validate,
 			  rdline_complete_t *complete,
@@ -70,7 +69,6 @@ struct rdline *rdline_new(rdline_write_char_t *write_char,
  * \param rdl A pointer to an initialized struct rdline.
  *            If NULL, this function is a no-op.
  */
-__rte_experimental
 void rdline_free(struct rdline *rdl);
 
 /**
@@ -163,13 +161,11 @@ char *rdline_get_history_item(struct rdline *rdl, unsigned int i);
 /**
  * Get maximum history buffer size.
  */
-__rte_experimental
 size_t rdline_get_history_buffer_size(struct rdline *rdl);
 
 /**
  * Get the opaque pointer supplied on struct rdline creation.
  */
-__rte_experimental
 void *rdline_get_opaque(struct rdline *rdl);
 
 #ifdef __cplusplus
diff --git a/lib/cmdline/version.map b/lib/cmdline/version.map
index db4d904ffbdb..4f87027e1774 100644
--- a/lib/cmdline/version.map
+++ b/lib/cmdline/version.map
@@ -30,11 +30,13 @@ DPDK_24 {
 	cmdline_get_help_num;
 	cmdline_get_help_portlist;
 	cmdline_get_help_string;
+	cmdline_get_rdline;
 	cmdline_in;
 	cmdline_interact;
 	cmdline_isendoftoken;
 	cmdline_new;
 	cmdline_parse;
+	cmdline_parse_check;
 	cmdline_parse_etheraddr;
 	cmdline_parse_ipaddr;
 	cmdline_parse_num;
@@ -52,37 +54,25 @@ DPDK_24 {
 	cmdline_token_portlist_ops;
 	cmdline_token_string_ops;
 	cmdline_write_char;
+
 	rdline_add_history;
 	rdline_char_in;
 	rdline_clear_history;
+	rdline_free;
 	rdline_get_buffer;
+	rdline_get_history_buffer_size;
 	rdline_get_history_item;
+	rdline_get_opaque;
+	rdline_new;
 	rdline_newline;
 	rdline_quit;
 	rdline_redisplay;
 	rdline_reset;
 	rdline_restart;
 	rdline_stop;
+
 	vt100_init;
 	vt100_parser;
 
 	local: *;
 };
-
-EXPERIMENTAL {
-	global:
-
-	# added in 20.11
-	cmdline_get_rdline;
-
-	# added in 21.11
-	rdline_new;
-	rdline_free;
-	rdline_get_history_buffer_size;
-	rdline_get_opaque;
-
-	# added in 22.07
-	cmdline_parse_check;
-
-	local: *;
-};
-- 
2.39.2


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

* [PATCH 03/20] ethdev: mark rte_mtr API's as stable
  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 ` Stephen Hemminger
  2023-08-08 17:35 ` [PATCH 04/20] ethdev: mark rte_tm " Stephen Hemminger
                   ` (24 subsequent siblings)
  27 siblings, 0 replies; 219+ messages in thread
From: Stephen Hemminger @ 2023-08-08 17:35 UTC (permalink / raw)
  To: dev
  Cc: Stephen Hemminger, Cristian Dumitrescu, Thomas Monjalon,
	Ferruh Yigit, Andrew Rybchenko

These haven't changed in a while, time has come to make them
not experimental.

Signed-off-by: Stephen Hemminger <stephen@networkplumber.org>
---
 lib/ethdev/rte_mtr.h   | 25 +------------------------
 lib/ethdev/version.map | 34 ++++++++++++++++------------------
 2 files changed, 17 insertions(+), 42 deletions(-)

diff --git a/lib/ethdev/rte_mtr.h b/lib/ethdev/rte_mtr.h
index 7e6a66b938bf..ed498f36b179 100644
--- a/lib/ethdev/rte_mtr.h
+++ b/lib/ethdev/rte_mtr.h
@@ -41,10 +41,8 @@
  *    A) Whether an MTR object is private to a flow or potentially shared by
  *       several flows has to be specified at creation time.
  *    B) Several meter actions can be potentially registered for the same flow.
- *
- * @warning
- * @b EXPERIMENTAL: this API may change without prior notice
  */
+
 #include <stdint.h>
 #include <rte_compat.h>
 #include <rte_common.h>
@@ -570,7 +568,6 @@ struct rte_mtr_error {
  * @return
  *   0 on success, non-zero error code otherwise.
  */
-__rte_experimental
 int
 rte_mtr_capabilities_get(uint16_t port_id,
 	struct rte_mtr_capabilities *cap,
@@ -594,7 +591,6 @@ rte_mtr_capabilities_get(uint16_t port_id,
  * @return
  *   0 on success, non-zero error code otherwise.
  */
-__rte_experimental
 int
 rte_mtr_meter_profile_add(uint16_t port_id,
 	uint32_t meter_profile_id,
@@ -616,7 +612,6 @@ rte_mtr_meter_profile_add(uint16_t port_id,
  * @return
  *   0 on success, non-zero error code otherwise.
  */
-__rte_experimental
 int
 rte_mtr_meter_profile_delete(uint16_t port_id,
 	uint32_t meter_profile_id,
@@ -636,7 +631,6 @@ rte_mtr_meter_profile_delete(uint16_t port_id,
  * @return
  *   A valid handle in case of success, NULL otherwise.
  */
-__rte_experimental
 struct rte_flow_meter_profile *
 rte_mtr_meter_profile_get(uint16_t port_id,
 	uint32_t meter_profile_id,
@@ -664,7 +658,6 @@ rte_mtr_meter_profile_get(uint16_t port_id,
  * @return
  *   0 on success, non-zero error code otherwise.
  */
-__rte_experimental
 int
 rte_mtr_meter_policy_validate(uint16_t port_id,
 	struct rte_mtr_meter_policy_params *policy,
@@ -691,7 +684,6 @@ rte_mtr_meter_policy_validate(uint16_t port_id,
  * @return
  *   0 on success, non-zero error code otherwise.
  */
-__rte_experimental
 int
 rte_mtr_meter_policy_add(uint16_t port_id,
 	uint32_t policy_id,
@@ -712,7 +704,6 @@ rte_mtr_meter_policy_add(uint16_t port_id,
  * @return
  *   A valid handle in case of success, NULL otherwise.
  */
-__rte_experimental
 struct rte_flow_meter_policy *
 rte_mtr_meter_policy_get(uint16_t port_id,
 	uint32_t policy_id,
@@ -794,7 +785,6 @@ struct rte_mtr_meter_policy_params policy = \
  * @return
  *   0 on success, non-zero error code otherwise.
  */
-__rte_experimental
 int
 rte_mtr_meter_policy_delete(uint16_t port_id,
 	uint32_t policy_id,
@@ -823,7 +813,6 @@ rte_mtr_meter_policy_delete(uint16_t port_id,
  *
  * @see enum rte_flow_action_type::RTE_FLOW_ACTION_TYPE_METER
  */
-__rte_experimental
 int
 rte_mtr_create(uint16_t port_id,
 	uint32_t mtr_id,
@@ -847,7 +836,6 @@ rte_mtr_create(uint16_t port_id,
  * @return
  *   0 on success, non-zero error code otherwise.
  */
-__rte_experimental
 int
 rte_mtr_destroy(uint16_t port_id,
 	uint32_t mtr_id,
@@ -875,7 +863,6 @@ rte_mtr_destroy(uint16_t port_id,
  * @return
  *   0 on success, non-zero error code otherwise.
  */
-__rte_experimental
 int
 rte_mtr_meter_disable(uint16_t port_id,
 	uint32_t mtr_id,
@@ -897,7 +884,6 @@ rte_mtr_meter_disable(uint16_t port_id,
  * @return
  *   0 on success, non-zero error code otherwise.
  */
-__rte_experimental
 int
 rte_mtr_meter_enable(uint16_t port_id,
 	uint32_t mtr_id,
@@ -917,7 +903,6 @@ rte_mtr_meter_enable(uint16_t port_id,
  * @return
  *   0 on success, non-zero error code otherwise.
  */
-__rte_experimental
 int
 rte_mtr_meter_profile_update(uint16_t port_id,
 	uint32_t mtr_id,
@@ -938,7 +923,6 @@ rte_mtr_meter_profile_update(uint16_t port_id,
  * @return
  *   0 on success, non-zero error code otherwise.
  */
-__rte_experimental
 int
 rte_mtr_meter_policy_update(uint16_t port_id,
 	uint32_t mtr_id,
@@ -965,7 +949,6 @@ rte_mtr_meter_policy_update(uint16_t port_id,
  * @return
  *   0 on success, non-zero error code otherwise.
  */
-__rte_experimental
 int
 rte_mtr_meter_dscp_table_update(uint16_t port_id,
 	uint32_t mtr_id, enum rte_mtr_color_in_protocol proto,
@@ -992,7 +975,6 @@ rte_mtr_meter_dscp_table_update(uint16_t port_id,
  * @return
  *   0 on success, non-zero error code otherwise.
  */
-__rte_experimental
 int
 rte_mtr_meter_vlan_table_update(uint16_t port_id, uint32_t mtr_id,
 				enum rte_mtr_color_in_protocol proto,
@@ -1023,7 +1005,6 @@ rte_mtr_meter_vlan_table_update(uint16_t port_id, uint32_t mtr_id,
  * @return
  *   0 on success, non-zero error code otherwise.
  */
-__rte_experimental
 int
 rte_mtr_color_in_protocol_set(uint16_t port_id, uint32_t mtr_id,
 	enum rte_mtr_color_in_protocol proto, uint32_t priority,
@@ -1043,7 +1024,6 @@ rte_mtr_color_in_protocol_set(uint16_t port_id, uint32_t mtr_id,
  * @return
  *   0 on success, non-zero error code otherwise.
  */
-__rte_experimental
 int
 rte_mtr_color_in_protocol_get(uint16_t port_id, uint32_t mtr_id,
 	uint64_t *proto_mask,
@@ -1065,7 +1045,6 @@ rte_mtr_color_in_protocol_get(uint16_t port_id, uint32_t mtr_id,
  * @return
  *   0 on success, non-zero error code otherwise.
  */
-__rte_experimental
 int
 rte_mtr_color_in_protocol_priority_get(uint16_t port_id, uint32_t mtr_id,
 	enum rte_mtr_color_in_protocol proto, uint32_t *priority,
@@ -1089,7 +1068,6 @@ rte_mtr_color_in_protocol_priority_get(uint16_t port_id, uint32_t mtr_id,
  *
  * @see enum rte_mtr_stats_type
  */
-__rte_experimental
 int
 rte_mtr_stats_update(uint16_t port_id,
 	uint32_t mtr_id,
@@ -1121,7 +1099,6 @@ rte_mtr_stats_update(uint16_t port_id,
  *
  * @see enum rte_mtr_stats_type
  */
-__rte_experimental
 int
 rte_mtr_stats_read(uint16_t port_id,
 	uint32_t mtr_id,
diff --git a/lib/ethdev/version.map b/lib/ethdev/version.map
index b965d6aa5274..a275cce48164 100644
--- a/lib/ethdev/version.map
+++ b/lib/ethdev/version.map
@@ -135,26 +135,34 @@ DPDK_24 {
 	rte_flow_pick_transfer_proxy;
 	rte_flow_query;
 	rte_flow_validate;
-
-	local: *;
-};
-
-EXPERIMENTAL {
-	global:
-
-	# added in 17.11
 	rte_mtr_capabilities_get;
+	rte_mtr_color_in_protocol_get;
+	rte_mtr_color_in_protocol_priority_get;
+	rte_mtr_color_in_protocol_set;
 	rte_mtr_create;
 	rte_mtr_destroy;
 	rte_mtr_meter_disable;
 	rte_mtr_meter_dscp_table_update;
 	rte_mtr_meter_enable;
+	rte_mtr_meter_policy_add;
+	rte_mtr_meter_policy_delete;
+	rte_mtr_meter_policy_get;
+	rte_mtr_meter_policy_update;
+	rte_mtr_meter_policy_validate;
 	rte_mtr_meter_profile_add;
 	rte_mtr_meter_profile_delete;
+	rte_mtr_meter_profile_get;
 	rte_mtr_meter_profile_update;
+	rte_mtr_meter_vlan_table_update;
 	rte_mtr_stats_read;
 	rte_mtr_stats_update;
 
+	local: *;
+};
+
+EXPERIMENTAL {
+	global:
+
 	# added in 18.05
 	rte_eth_dev_get_module_eeprom;
 	rte_eth_dev_get_module_info;
@@ -237,10 +245,6 @@ EXPERIMENTAL {
 	rte_flow_action_handle_destroy;
 	rte_flow_action_handle_update;
 	rte_flow_action_handle_query;
-	rte_mtr_meter_policy_add;
-	rte_mtr_meter_policy_delete;
-	rte_mtr_meter_policy_update;
-	rte_mtr_meter_policy_validate;
 
 	# added in 21.11
 	rte_eth_dev_capability_name;
@@ -275,10 +279,6 @@ EXPERIMENTAL {
 	# added in 22.07
 	rte_eth_rx_avail_thresh_query;
 	rte_eth_rx_avail_thresh_set;
-	rte_mtr_color_in_protocol_get;
-	rte_mtr_color_in_protocol_priority_get;
-	rte_mtr_color_in_protocol_set;
-	rte_mtr_meter_vlan_table_update;
 
 	# added in 22.11
 	rte_eth_buffer_split_get_supported_hdr_ptypes;
@@ -290,8 +290,6 @@ EXPERIMENTAL {
 	rte_eth_tx_descriptor_dump;
 	rte_flow_async_action_handle_query;
 	rte_flow_get_q_aged_flows;
-	rte_mtr_meter_policy_get;
-	rte_mtr_meter_profile_get;
 
 	# added in 23.03
 	rte_eth_dev_count_aggr_ports;
-- 
2.39.2


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

* [PATCH 04/20] ethdev: mark rte_tm API's as stable
  2023-08-08 17:35 [PATCH 00/20] remove experimental flag from some API's Stephen Hemminger
                   ` (2 preceding siblings ...)
  2023-08-08 17:35 ` [PATCH 03/20] ethdev: mark rte_mtr API's as stable Stephen Hemminger
@ 2023-08-08 17:35 ` Stephen Hemminger
  2023-08-08 17:35 ` [PATCH 05/20] pdump: make API's stable Stephen Hemminger
                   ` (23 subsequent siblings)
  27 siblings, 0 replies; 219+ messages in thread
From: Stephen Hemminger @ 2023-08-08 17:35 UTC (permalink / raw)
  To: dev
  Cc: Stephen Hemminger, Cristian Dumitrescu, Thomas Monjalon,
	Ferruh Yigit, Andrew Rybchenko

These API's have been around since 20.11, mark them as not
experimental.

Signed-off-by: Stephen Hemminger <stephen@networkplumber.org>
---
 lib/ethdev/rte_tm.h    | 34 -----------------------
 lib/ethdev/version.map | 62 ++++++++++++++++++++----------------------
 2 files changed, 30 insertions(+), 66 deletions(-)

diff --git a/lib/ethdev/rte_tm.h b/lib/ethdev/rte_tm.h
index 4103c49a3f0f..08cb3d37394c 100644
--- a/lib/ethdev/rte_tm.h
+++ b/lib/ethdev/rte_tm.h
@@ -14,10 +14,6 @@
  * This interface provides the ability to configure the traffic manager in a
  * generic way. It includes features such as: hierarchical scheduling,
  * traffic shaping, congestion management, packet marking, etc.
- *
- * @warning
- * @b EXPERIMENTAL:
- * All functions in this file may be changed or removed without prior notice.
  */
 
 #include <stdint.h>
@@ -1245,7 +1241,6 @@ struct rte_tm_error {
  * @return
  *   0 on success, non-zero error code otherwise.
  */
-__rte_experimental
 int
 rte_tm_get_number_of_leaf_nodes(uint16_t port_id,
 	uint32_t *n_leaf_nodes,
@@ -1270,7 +1265,6 @@ rte_tm_get_number_of_leaf_nodes(uint16_t port_id,
  * @return
  *   0 on success, non-zero error code otherwise.
  */
-__rte_experimental
 int
 rte_tm_node_type_get(uint16_t port_id,
 	uint32_t node_id,
@@ -1289,7 +1283,6 @@ rte_tm_node_type_get(uint16_t port_id,
  * @return
  *   0 on success, non-zero error code otherwise.
  */
-__rte_experimental
 int
 rte_tm_capabilities_get(uint16_t port_id,
 	struct rte_tm_capabilities *cap,
@@ -1310,7 +1303,6 @@ rte_tm_capabilities_get(uint16_t port_id,
  * @return
  *   0 on success, non-zero error code otherwise.
  */
-__rte_experimental
 int
 rte_tm_level_capabilities_get(uint16_t port_id,
 	uint32_t level_id,
@@ -1331,7 +1323,6 @@ rte_tm_level_capabilities_get(uint16_t port_id,
  * @return
  *   0 on success, non-zero error code otherwise.
  */
-__rte_experimental
 int
 rte_tm_node_capabilities_get(uint16_t port_id,
 	uint32_t node_id,
@@ -1357,7 +1348,6 @@ rte_tm_node_capabilities_get(uint16_t port_id,
  *
  * @see struct rte_tm_capabilities::cman_wred_context_n_max
  */
-__rte_experimental
 int
 rte_tm_wred_profile_add(uint16_t port_id,
 	uint32_t wred_profile_id,
@@ -1381,7 +1371,6 @@ rte_tm_wred_profile_add(uint16_t port_id,
  *
  * @see struct rte_tm_capabilities::cman_wred_context_n_max
  */
-__rte_experimental
 int
 rte_tm_wred_profile_delete(uint16_t port_id,
 	uint32_t wred_profile_id,
@@ -1413,7 +1402,6 @@ rte_tm_wred_profile_delete(uint16_t port_id,
  *
  * @see struct rte_tm_capabilities::cman_wred_context_shared_n_max
  */
-__rte_experimental
 int
 rte_tm_shared_wred_context_add_update(uint16_t port_id,
 	uint32_t shared_wred_context_id,
@@ -1438,7 +1426,6 @@ rte_tm_shared_wred_context_add_update(uint16_t port_id,
  *
  * @see struct rte_tm_capabilities::cman_wred_context_shared_n_max
  */
-__rte_experimental
 int
 rte_tm_shared_wred_context_delete(uint16_t port_id,
 	uint32_t shared_wred_context_id,
@@ -1463,7 +1450,6 @@ rte_tm_shared_wred_context_delete(uint16_t port_id,
  *
  * @see struct rte_tm_capabilities::shaper_n_max
  */
-__rte_experimental
 int
 rte_tm_shaper_profile_add(uint16_t port_id,
 	uint32_t shaper_profile_id,
@@ -1487,7 +1473,6 @@ rte_tm_shaper_profile_add(uint16_t port_id,
  *
  * @see struct rte_tm_capabilities::shaper_n_max
  */
-__rte_experimental
 int
 rte_tm_shaper_profile_delete(uint16_t port_id,
 	uint32_t shaper_profile_id,
@@ -1517,7 +1502,6 @@ rte_tm_shaper_profile_delete(uint16_t port_id,
  *
  * @see struct rte_tm_capabilities::shaper_shared_n_max
  */
-__rte_experimental
 int
 rte_tm_shared_shaper_add_update(uint16_t port_id,
 	uint32_t shared_shaper_id,
@@ -1541,7 +1525,6 @@ rte_tm_shared_shaper_add_update(uint16_t port_id,
  *
  * @see struct rte_tm_capabilities::shaper_shared_n_max
  */
-__rte_experimental
 int
 rte_tm_shared_shaper_delete(uint16_t port_id,
 	uint32_t shared_shaper_id,
@@ -1610,7 +1593,6 @@ rte_tm_shared_shaper_delete(uint16_t port_id,
  * @see RTE_TM_NODE_LEVEL_ID_ANY
  * @see struct rte_tm_capabilities
  */
-__rte_experimental
 int
 rte_tm_node_add(uint16_t port_id,
 	uint32_t node_id,
@@ -1644,7 +1626,6 @@ rte_tm_node_add(uint16_t port_id,
  *
  * @see RTE_TM_UPDATE_NODE_ADD_DELETE
  */
-__rte_experimental
 int
 rte_tm_node_delete(uint16_t port_id,
 	uint32_t node_id,
@@ -1669,7 +1650,6 @@ rte_tm_node_delete(uint16_t port_id,
  * @see rte_tm_node_resume()
  * @see RTE_TM_UPDATE_NODE_SUSPEND_RESUME
  */
-__rte_experimental
 int
 rte_tm_node_suspend(uint16_t port_id,
 	uint32_t node_id,
@@ -1693,7 +1673,6 @@ rte_tm_node_suspend(uint16_t port_id,
  * @see rte_tm_node_suspend()
  * @see RTE_TM_UPDATE_NODE_SUSPEND_RESUME
  */
-__rte_experimental
 int
 rte_tm_node_resume(uint16_t port_id,
 	uint32_t node_id,
@@ -1735,7 +1714,6 @@ rte_tm_node_resume(uint16_t port_id,
  * @see rte_tm_node_add()
  * @see rte_tm_node_delete()
  */
-__rte_experimental
 int
 rte_tm_hierarchy_commit(uint16_t port_id,
 	int clear_on_fail,
@@ -1776,7 +1754,6 @@ rte_tm_hierarchy_commit(uint16_t port_id,
  * @see RTE_TM_UPDATE_NODE_PARENT_KEEP_LEVEL
  * @see RTE_TM_UPDATE_NODE_PARENT_CHANGE_LEVEL
  */
-__rte_experimental
 int
 rte_tm_node_parent_update(uint16_t port_id,
 	uint32_t node_id,
@@ -1806,7 +1783,6 @@ rte_tm_node_parent_update(uint16_t port_id,
  *
  * @see struct rte_tm_capabilities::shaper_private_n_max
  */
-__rte_experimental
 int
 rte_tm_node_shaper_update(uint16_t port_id,
 	uint32_t node_id,
@@ -1834,7 +1810,6 @@ rte_tm_node_shaper_update(uint16_t port_id,
  *
  * @see struct rte_tm_capabilities::shaper_shared_n_max
  */
-__rte_experimental
 int
 rte_tm_node_shared_shaper_update(uint16_t port_id,
 	uint32_t node_id,
@@ -1862,7 +1837,6 @@ rte_tm_node_shared_shaper_update(uint16_t port_id,
  * @see enum rte_tm_stats_type
  * @see RTE_TM_UPDATE_NODE_STATS
  */
-__rte_experimental
 int
 rte_tm_node_stats_update(uint16_t port_id,
 	uint32_t node_id,
@@ -1891,7 +1865,6 @@ rte_tm_node_stats_update(uint16_t port_id,
  * @see RTE_TM_UPDATE_NODE_WFQ_WEIGHT_MODE
  * @see RTE_TM_UPDATE_NODE_N_SP_PRIORITIES
  */
-__rte_experimental
 int
 rte_tm_node_wfq_weight_mode_update(uint16_t port_id,
 	uint32_t node_id,
@@ -1915,7 +1888,6 @@ rte_tm_node_wfq_weight_mode_update(uint16_t port_id,
  *
  * @see RTE_TM_UPDATE_NODE_CMAN
  */
-__rte_experimental
 int
 rte_tm_node_cman_update(uint16_t port_id,
 	uint32_t node_id,
@@ -1940,7 +1912,6 @@ rte_tm_node_cman_update(uint16_t port_id,
  *
  * @see struct rte_tm_capabilities::cman_wred_context_private_n_max
  */
-__rte_experimental
 int
 rte_tm_node_wred_context_update(uint16_t port_id,
 	uint32_t node_id,
@@ -1966,7 +1937,6 @@ rte_tm_node_wred_context_update(uint16_t port_id,
  *
  * @see struct rte_tm_capabilities::cman_wred_context_shared_n_max
  */
-__rte_experimental
 int
 rte_tm_node_shared_wred_context_update(uint16_t port_id,
 	uint32_t node_id,
@@ -1999,7 +1969,6 @@ rte_tm_node_shared_wred_context_update(uint16_t port_id,
  *
  * @see enum rte_tm_stats_type
  */
-__rte_experimental
 int
 rte_tm_node_stats_read(uint16_t port_id,
 	uint32_t node_id,
@@ -2037,7 +2006,6 @@ rte_tm_node_stats_read(uint16_t port_id,
  *
  * @see struct rte_tm_capabilities::mark_vlan_dei_supported
  */
-__rte_experimental
 int
 rte_tm_mark_vlan_dei(uint16_t port_id,
 	int mark_green,
@@ -2088,7 +2056,6 @@ rte_tm_mark_vlan_dei(uint16_t port_id,
  * @see struct rte_tm_capabilities::mark_ip_ecn_tcp_supported
  * @see struct rte_tm_capabilities::mark_ip_ecn_sctp_supported
  */
-__rte_experimental
 int
 rte_tm_mark_ip_ecn(uint16_t port_id,
 	int mark_green,
@@ -2137,7 +2104,6 @@ rte_tm_mark_ip_ecn(uint16_t port_id,
  *
  * @see struct rte_tm_capabilities::mark_ip_dscp_supported
  */
-__rte_experimental
 int
 rte_tm_mark_ip_dscp(uint16_t port_id,
 	int mark_green,
diff --git a/lib/ethdev/version.map b/lib/ethdev/version.map
index a275cce48164..1f8e5dec4076 100644
--- a/lib/ethdev/version.map
+++ b/lib/ethdev/version.map
@@ -156,6 +156,36 @@ DPDK_24 {
 	rte_mtr_meter_vlan_table_update;
 	rte_mtr_stats_read;
 	rte_mtr_stats_update;
+	rte_tm_capabilities_get;
+	rte_tm_get_number_of_leaf_nodes;
+	rte_tm_hierarchy_commit;
+	rte_tm_level_capabilities_get;
+	rte_tm_mark_ip_dscp;
+	rte_tm_mark_ip_ecn;
+	rte_tm_mark_vlan_dei;
+	rte_tm_node_add;
+	rte_tm_node_capabilities_get;
+	rte_tm_node_cman_update;
+	rte_tm_node_delete;
+	rte_tm_node_parent_update;
+	rte_tm_node_resume;
+	rte_tm_node_shaper_update;
+	rte_tm_node_shared_shaper_update;
+	rte_tm_node_shared_wred_context_update;
+	rte_tm_node_stats_read;
+	rte_tm_node_stats_update;
+	rte_tm_node_suspend;
+	rte_tm_node_type_get;
+	rte_tm_node_wfq_weight_mode_update;
+	rte_tm_node_wred_context_update;
+	rte_tm_shaper_profile_add;
+	rte_tm_shaper_profile_delete;
+	rte_tm_shared_shaper_add_update;
+	rte_tm_shared_shaper_delete;
+	rte_tm_shared_wred_context_add_update;
+	rte_tm_shared_wred_context_delete;
+	rte_tm_wred_profile_add;
+	rte_tm_wred_profile_delete;
 
 	local: *;
 };
@@ -189,38 +219,6 @@ EXPERIMENTAL {
 	__rte_ethdev_trace_tx_burst;
 	rte_flow_get_aged_flows;
 
-	# Marked as experimental in 20.11
-	rte_tm_capabilities_get;
-	rte_tm_get_number_of_leaf_nodes;
-	rte_tm_hierarchy_commit;
-	rte_tm_level_capabilities_get;
-	rte_tm_mark_ip_dscp;
-	rte_tm_mark_ip_ecn;
-	rte_tm_mark_vlan_dei;
-	rte_tm_node_add;
-	rte_tm_node_capabilities_get;
-	rte_tm_node_cman_update;
-	rte_tm_node_delete;
-	rte_tm_node_parent_update;
-	rte_tm_node_resume;
-	rte_tm_node_shaper_update;
-	rte_tm_node_shared_shaper_update;
-	rte_tm_node_shared_wred_context_update;
-	rte_tm_node_stats_read;
-	rte_tm_node_stats_update;
-	rte_tm_node_suspend;
-	rte_tm_node_type_get;
-	rte_tm_node_wfq_weight_mode_update;
-	rte_tm_node_wred_context_update;
-	rte_tm_shaper_profile_add;
-	rte_tm_shaper_profile_delete;
-	rte_tm_shared_shaper_add_update;
-	rte_tm_shared_shaper_delete;
-	rte_tm_shared_wred_context_add_update;
-	rte_tm_shared_wred_context_delete;
-	rte_tm_wred_profile_add;
-	rte_tm_wred_profile_delete;
-
 	# added in 20.11
 	rte_eth_hairpin_bind;
 	rte_eth_hairpin_get_peer_ports;
-- 
2.39.2


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

* [PATCH 05/20] pdump: make API's stable
  2023-08-08 17:35 [PATCH 00/20] remove experimental flag from some API's Stephen Hemminger
                   ` (3 preceding siblings ...)
  2023-08-08 17:35 ` [PATCH 04/20] ethdev: mark rte_tm " Stephen Hemminger
@ 2023-08-08 17:35 ` Stephen Hemminger
  2023-08-08 17:35 ` [PATCH 06/20] pcapng: mark API's as stable Stephen Hemminger
                   ` (22 subsequent siblings)
  27 siblings, 0 replies; 219+ messages in thread
From: Stephen Hemminger @ 2023-08-08 17:35 UTC (permalink / raw)
  To: dev; +Cc: Stephen Hemminger, Reshma Pattan

The filtering API's were added in 23.11 and can now be marked
as not experimental.

Signed-off-by: Stephen Hemminger <stephen@networkplumber.org>
---
 lib/pdump/rte_pdump.h | 12 ------------
 lib/pdump/version.map | 11 +++--------
 2 files changed, 3 insertions(+), 20 deletions(-)

diff --git a/lib/pdump/rte_pdump.h b/lib/pdump/rte_pdump.h
index b1a391830c1d..414931a12cce 100644
--- a/lib/pdump/rte_pdump.h
+++ b/lib/pdump/rte_pdump.h
@@ -83,9 +83,6 @@ rte_pdump_enable(uint16_t port, uint16_t queue, uint32_t flags,
 		void *filter);
 
 /**
- * @warning
- * @b EXPERIMENTAL: this API may change, or be removed, without prior notice
- *
  * Enables packet capturing on given port and queue with filtering.
  *
  * @param port_id
@@ -109,7 +106,6 @@ rte_pdump_enable(uint16_t port, uint16_t queue, uint32_t flags,
  * @return
  *    0 on success, -1 on error, rte_errno is set accordingly.
  */
-__rte_experimental
 int
 rte_pdump_enable_bpf(uint16_t port_id, uint16_t queue,
 		     uint32_t flags, uint32_t snaplen,
@@ -169,9 +165,6 @@ rte_pdump_enable_by_deviceid(char *device_id, uint16_t queue,
 				void *filter);
 
 /**
- * @warning
- * @b EXPERIMENTAL: this API may change, or be removed, without prior notice
- *
  * Enables packet capturing on given device id and queue with filtering.
  * device_id can be name or pci address of device.
  *
@@ -196,7 +189,6 @@ rte_pdump_enable_by_deviceid(char *device_id, uint16_t queue,
  * @return
  *    0 on success, -1 on error, rte_errno is set accordingly.
  */
-__rte_experimental
 int
 rte_pdump_enable_bpf_by_deviceid(const char *device_id, uint16_t queue,
 				 uint32_t flags, uint32_t snaplen,
@@ -242,9 +234,6 @@ struct rte_pdump_stats {
 };
 
 /**
- * @warning
- * @b EXPERIMENTAL: this API may change, or be removed, without prior notice
- *
  * Retrieve the packet capture statistics for a queue.
  *
  * @param port_id
@@ -254,7 +243,6 @@ struct rte_pdump_stats {
  * @return
  *   Zero if successful. -1 on error and rte_errno is set.
  */
-__rte_experimental
 int
 rte_pdump_stats(uint16_t port_id, struct rte_pdump_stats *stats);
 
diff --git a/lib/pdump/version.map b/lib/pdump/version.map
index 225830dc85a7..ea5bd157cdb1 100644
--- a/lib/pdump/version.map
+++ b/lib/pdump/version.map
@@ -4,17 +4,12 @@ DPDK_24 {
 	rte_pdump_disable;
 	rte_pdump_disable_by_deviceid;
 	rte_pdump_enable;
+	rte_pdump_enable_bpf;
+	rte_pdump_enable_bpf_by_deviceid;
 	rte_pdump_enable_by_deviceid;
 	rte_pdump_init;
+	rte_pdump_stats;
 	rte_pdump_uninit;
 
 	local: *;
 };
-
-EXPERIMENTAL {
-	global:
-
-	rte_pdump_enable_bpf;
-	rte_pdump_enable_bpf_by_deviceid;
-	rte_pdump_stats;
-};
-- 
2.39.2


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

* [PATCH 06/20] pcapng: mark API's as stable
  2023-08-08 17:35 [PATCH 00/20] remove experimental flag from some API's Stephen Hemminger
                   ` (4 preceding siblings ...)
  2023-08-08 17:35 ` [PATCH 05/20] pdump: make API's stable Stephen Hemminger
@ 2023-08-08 17:35 ` Stephen Hemminger
  2023-08-08 17:35 ` [PATCH 07/20] net: remove experimental from functions Stephen Hemminger
                   ` (21 subsequent siblings)
  27 siblings, 0 replies; 219+ messages in thread
From: Stephen Hemminger @ 2023-08-08 17:35 UTC (permalink / raw)
  To: dev; +Cc: Stephen Hemminger, Reshma Pattan

This API was added in 23.11 and can now be marked as not
experimental.

Signed-off-by: Stephen Hemminger <stephen@networkplumber.org>
---
 lib/pcapng/rte_pcapng.h | 11 -----------
 lib/pcapng/version.map  |  6 ++----
 2 files changed, 2 insertions(+), 15 deletions(-)

diff --git a/lib/pcapng/rte_pcapng.h b/lib/pcapng/rte_pcapng.h
index d93cc9f73ad5..c96c8994f38b 100644
--- a/lib/pcapng/rte_pcapng.h
+++ b/lib/pcapng/rte_pcapng.h
@@ -6,10 +6,6 @@
  * @file
  * RTE pcapng
  *
- * @warning
- * @b EXPERIMENTAL:
- * All functions in this file may be changed or removed without prior notice.
- *
  * Pcapng is an evolution from the pcap format, created to address some of
  * its deficiencies. Namely, the lack of extensibility and inability to store
  * additional information.
@@ -54,7 +50,6 @@ typedef struct rte_pcapng rte_pcapng_t;
  * @return
  *   handle to library, or NULL in case of error (and rte_errno is set).
  */
-__rte_experimental
 rte_pcapng_t *
 rte_pcapng_fdopen(int fd,
 		  const char *osname, const char *hardware,
@@ -66,7 +61,6 @@ rte_pcapng_fdopen(int fd,
  * @param self
  *  handle to library
  */
-__rte_experimental
 void
 rte_pcapng_close(rte_pcapng_t *self);
 
@@ -89,7 +83,6 @@ rte_pcapng_close(rte_pcapng_t *self);
  * and before any packet record. All ports used in packet capture
  * must be added.
  */
-__rte_experimental
 int
 rte_pcapng_add_interface(rte_pcapng_t *self, uint16_t port,
 			 const char *ifname, const char *ifdescr,
@@ -132,7 +125,6 @@ enum rte_pcapng_direction {
  *   - The pointer to the new mbuf formatted for pcapng_write
  *   - NULL if allocation fails.
  */
-__rte_experimental
 struct rte_mbuf *
 rte_pcapng_copy(uint16_t port_id, uint32_t queue,
 		const struct rte_mbuf *m, struct rte_mempool *mp,
@@ -149,7 +141,6 @@ rte_pcapng_copy(uint16_t port_id, uint32_t queue,
  *   The minimum size of mbuf data to handle packet with length bytes.
  *   Accounting for required header and trailer fields
  */
-__rte_experimental
 uint32_t
 rte_pcapng_mbuf_size(uint32_t length);
 
@@ -174,7 +165,6 @@ rte_pcapng_mbuf_size(uint32_t length);
  *  The number of bytes written to file, -1 on failure to write file.
  *  The mbuf's in *pkts* are always freed.
  */
-__rte_experimental
 ssize_t
 rte_pcapng_write_packets(rte_pcapng_t *self,
 			 struct rte_mbuf *pkts[], uint16_t nb_pkts);
@@ -205,7 +195,6 @@ rte_pcapng_write_packets(rte_pcapng_t *self,
  * @return
  *  number of bytes written to file, -1 on failure to write file
  */
-__rte_experimental
 ssize_t
 rte_pcapng_write_stats(rte_pcapng_t *self, uint16_t port,
 		       const char *comment,
diff --git a/lib/pcapng/version.map b/lib/pcapng/version.map
index 36393914d97c..81c9652ad6b5 100644
--- a/lib/pcapng/version.map
+++ b/lib/pcapng/version.map
@@ -1,6 +1,7 @@
-EXPERIMENTAL {
+DPDK_24 {
 	global:
 
+	rte_pcapng_add_interface;
 	rte_pcapng_close;
 	rte_pcapng_copy;
 	rte_pcapng_fdopen;
@@ -8,8 +9,5 @@ EXPERIMENTAL {
 	rte_pcapng_write_packets;
 	rte_pcapng_write_stats;
 
-	# added in 23.03
-	rte_pcapng_add_interface;
-
 	local: *;
 };
-- 
2.39.2


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

* [PATCH 07/20] net: remove experimental from functions
  2023-08-08 17:35 [PATCH 00/20] remove experimental flag from some API's Stephen Hemminger
                   ` (5 preceding siblings ...)
  2023-08-08 17:35 ` [PATCH 06/20] pcapng: mark API's as stable Stephen Hemminger
@ 2023-08-08 17:35 ` Stephen Hemminger
  2023-08-08 17:35 ` [PATCH 08/20] rcu: remove experimental from rte_rcu_qbsr Stephen Hemminger
                   ` (20 subsequent siblings)
  27 siblings, 0 replies; 219+ messages in thread
From: Stephen Hemminger @ 2023-08-08 17:35 UTC (permalink / raw)
  To: dev; +Cc: Stephen Hemminger, Olivier Matz

These functions have been around long enough should no
longer be experimental.

Signed-off-by: Stephen Hemminger <stephen@networkplumber.org>
---
 lib/net/rte_ip.h | 19 -------------------
 1 file changed, 19 deletions(-)

diff --git a/lib/net/rte_ip.h b/lib/net/rte_ip.h
index 7f58dc6f6a9c..2cb5be222cdd 100644
--- a/lib/net/rte_ip.h
+++ b/lib/net/rte_ip.h
@@ -435,9 +435,6 @@ __rte_ipv4_udptcp_cksum_mbuf(const struct rte_mbuf *m,
 }
 
 /**
- * @warning
- * @b EXPERIMENTAL: this API may change without prior notice.
- *
  * Compute the IPv4 UDP/TCP checksum of a packet.
  *
  * @param m
@@ -449,7 +446,6 @@ __rte_ipv4_udptcp_cksum_mbuf(const struct rte_mbuf *m,
  * @return
  *   The complemented checksum to set in the L4 header.
  */
-__rte_experimental
 static inline uint16_t
 rte_ipv4_udptcp_cksum_mbuf(const struct rte_mbuf *m,
 			   const struct rte_ipv4_hdr *ipv4_hdr, uint16_t l4_off)
@@ -482,7 +478,6 @@ rte_ipv4_udptcp_cksum_mbuf(const struct rte_mbuf *m,
  * @return
  *   Return 0 if the checksum is correct, else -1.
  */
-__rte_experimental
 static inline int
 rte_ipv4_udptcp_cksum_verify(const struct rte_ipv4_hdr *ipv4_hdr,
 			     const void *l4_hdr)
@@ -496,9 +491,6 @@ rte_ipv4_udptcp_cksum_verify(const struct rte_ipv4_hdr *ipv4_hdr,
 }
 
 /**
- * @warning
- * @b EXPERIMENTAL: this API may change without prior notice.
- *
  * Verify the IPv4 UDP/TCP checksum of a packet.
  *
  * In case of UDP, the caller must first check if udp_hdr->dgram_cksum is 0
@@ -513,7 +505,6 @@ rte_ipv4_udptcp_cksum_verify(const struct rte_ipv4_hdr *ipv4_hdr,
  * @return
  *   Return 0 if the checksum is correct, else -1.
  */
-__rte_experimental
 static inline int
 rte_ipv4_udptcp_cksum_mbuf_verify(const struct rte_mbuf *m,
 				  const struct rte_ipv4_hdr *ipv4_hdr,
@@ -687,9 +678,6 @@ __rte_ipv6_udptcp_cksum_mbuf(const struct rte_mbuf *m,
 }
 
 /**
- * @warning
- * @b EXPERIMENTAL: this API may change without prior notice.
- *
  * Process the IPv6 UDP or TCP checksum of a packet.
  *
  * The IPv6 header must not be followed by extension headers. The layer 4
@@ -704,7 +692,6 @@ __rte_ipv6_udptcp_cksum_mbuf(const struct rte_mbuf *m,
  * @return
  *   The complemented checksum to set in the L4 header.
  */
-__rte_experimental
 static inline uint16_t
 rte_ipv6_udptcp_cksum_mbuf(const struct rte_mbuf *m,
 			   const struct rte_ipv6_hdr *ipv6_hdr, uint16_t l4_off)
@@ -738,7 +725,6 @@ rte_ipv6_udptcp_cksum_mbuf(const struct rte_mbuf *m,
  * @return
  *   Return 0 if the checksum is correct, else -1.
  */
-__rte_experimental
 static inline int
 rte_ipv6_udptcp_cksum_verify(const struct rte_ipv6_hdr *ipv6_hdr,
 			     const void *l4_hdr)
@@ -752,9 +738,6 @@ rte_ipv6_udptcp_cksum_verify(const struct rte_ipv6_hdr *ipv6_hdr,
 }
 
 /**
- * @warning
- * @b EXPERIMENTAL: this API may change without prior notice.
- *
  * Validate the IPv6 UDP or TCP checksum of a packet.
  *
  * In case of UDP, the caller must first check if udp_hdr->dgram_cksum is 0:
@@ -770,7 +753,6 @@ rte_ipv6_udptcp_cksum_verify(const struct rte_ipv6_hdr *ipv6_hdr,
  * @return
  *   Return 0 if the checksum is correct, else -1.
  */
-__rte_experimental
 static inline int
 rte_ipv6_udptcp_cksum_mbuf_verify(const struct rte_mbuf *m,
 				  const struct rte_ipv6_hdr *ipv6_hdr,
@@ -825,7 +807,6 @@ struct rte_ipv6_fragment_ext {
  * @return
  *   next protocol number if proto is an IPv6 extension, -EINVAL otherwise
  */
-__rte_experimental
 static inline int
 rte_ipv6_get_next_ext(const uint8_t *p, int proto, size_t *ext_len)
 {
-- 
2.39.2


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

* [PATCH 08/20] rcu: remove experimental from rte_rcu_qbsr
  2023-08-08 17:35 [PATCH 00/20] remove experimental flag from some API's Stephen Hemminger
                   ` (6 preceding siblings ...)
  2023-08-08 17:35 ` [PATCH 07/20] net: remove experimental from functions Stephen Hemminger
@ 2023-08-08 17:35 ` Stephen Hemminger
  2023-08-08 21:42   ` Honnappa Nagarahalli
  2023-08-08 17:35 ` [PATCH 09/20] lpm: remove experimental Stephen Hemminger
                   ` (19 subsequent siblings)
  27 siblings, 1 reply; 219+ messages in thread
From: Stephen Hemminger @ 2023-08-08 17:35 UTC (permalink / raw)
  To: dev; +Cc: Stephen Hemminger, Honnappa Nagarahalli

These functions were added back in 2020.
Remove experimental flag.

Signed-off-by: Stephen Hemminger <stephen@networkplumber.org>
---
 lib/rcu/rte_rcu_qsbr.h | 20 --------------------
 lib/rcu/version.map    | 15 ++++-----------
 2 files changed, 4 insertions(+), 31 deletions(-)

diff --git a/lib/rcu/rte_rcu_qsbr.h b/lib/rcu/rte_rcu_qsbr.h
index 87e1b55153b5..74ef41e0fac1 100644
--- a/lib/rcu/rte_rcu_qsbr.h
+++ b/lib/rcu/rte_rcu_qsbr.h
@@ -10,10 +10,6 @@
  *
  * RTE Quiescent State Based Reclamation (QSBR).
  *
- * @warning
- * @b EXPERIMENTAL:
- * All functions in this file may be changed or removed without prior notice.
- *
  * Quiescent State (QS) is any point in the thread execution
  * where the thread does not hold a reference to a data structure
  * in shared memory. While using lock-less data structures, the writer
@@ -727,9 +723,6 @@ int
 rte_rcu_qsbr_dump(FILE *f, struct rte_rcu_qsbr *v);
 
 /**
- * @warning
- * @b EXPERIMENTAL: this API may change without prior notice
- *
  * Create a queue used to store the data structure elements that can
  * be freed later. This queue is referred to as 'defer queue'.
  *
@@ -742,14 +735,10 @@ rte_rcu_qsbr_dump(FILE *f, struct rte_rcu_qsbr *v);
  *   - EINVAL - NULL parameters are passed
  *   - ENOMEM - Not enough memory
  */
-__rte_experimental
 struct rte_rcu_qsbr_dq *
 rte_rcu_qsbr_dq_create(const struct rte_rcu_qsbr_dq_parameters *params);
 
 /**
- * @warning
- * @b EXPERIMENTAL: this API may change without prior notice
- *
  * Enqueue one resource to the defer queue and start the grace period.
  * The resource will be freed later after at least one grace period
  * is over.
@@ -777,14 +766,10 @@ rte_rcu_qsbr_dq_create(const struct rte_rcu_qsbr_dq_parameters *params);
  *		if the defer queue size is equal (or larger) than the
  *		number of elements in the data structure.
  */
-__rte_experimental
 int
 rte_rcu_qsbr_dq_enqueue(struct rte_rcu_qsbr_dq *dq, void *e);
 
 /**
- * @warning
- * @b EXPERIMENTAL: this API may change without prior notice
- *
  * Free resources from the defer queue.
  *
  * This API is multi-thread safe.
@@ -806,15 +791,11 @@ rte_rcu_qsbr_dq_enqueue(struct rte_rcu_qsbr_dq *dq, void *e);
  *   On error - 1 with rte_errno set to
  *   - EINVAL - NULL parameters are passed
  */
-__rte_experimental
 int
 rte_rcu_qsbr_dq_reclaim(struct rte_rcu_qsbr_dq *dq, unsigned int n,
 	unsigned int *freed, unsigned int *pending, unsigned int *available);
 
 /**
- * @warning
- * @b EXPERIMENTAL: this API may change without prior notice
- *
  * Delete a defer queue.
  *
  * It tries to reclaim all the resources on the defer queue.
@@ -832,7 +813,6 @@ rte_rcu_qsbr_dq_reclaim(struct rte_rcu_qsbr_dq *dq, unsigned int n,
  *   - EAGAIN - Some of the resources have not completed at least 1 grace
  *		period, try again.
  */
-__rte_experimental
 int
 rte_rcu_qsbr_dq_delete(struct rte_rcu_qsbr_dq *dq);
 
diff --git a/lib/rcu/version.map b/lib/rcu/version.map
index 9218ed1f3399..982ffd59d9cd 100644
--- a/lib/rcu/version.map
+++ b/lib/rcu/version.map
@@ -2,6 +2,10 @@ DPDK_24 {
 	global:
 
 	rte_rcu_log_type;
+	rte_rcu_qsbr_dq_create;
+	rte_rcu_qsbr_dq_delete;
+	rte_rcu_qsbr_dq_enqueue;
+	rte_rcu_qsbr_dq_reclaim;
 	rte_rcu_qsbr_dump;
 	rte_rcu_qsbr_get_memsize;
 	rte_rcu_qsbr_init;
@@ -11,14 +15,3 @@ DPDK_24 {
 
 	local: *;
 };
-
-EXPERIMENTAL {
-	global:
-
-	rte_rcu_qsbr_dq_create;
-	rte_rcu_qsbr_dq_enqueue;
-	rte_rcu_qsbr_dq_reclaim;
-	rte_rcu_qsbr_dq_delete;
-
-	local: *;
-};
-- 
2.39.2


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

* [PATCH 09/20] lpm: remove experimental
  2023-08-08 17:35 [PATCH 00/20] remove experimental flag from some API's Stephen Hemminger
                   ` (7 preceding siblings ...)
  2023-08-08 17:35 ` [PATCH 08/20] rcu: remove experimental from rte_rcu_qbsr Stephen Hemminger
@ 2023-08-08 17:35 ` Stephen Hemminger
  2023-08-08 17:35 ` [PATCH 10/20] mbuf: remove experimental from create_extbuf Stephen Hemminger
                   ` (18 subsequent siblings)
  27 siblings, 0 replies; 219+ messages in thread
From: Stephen Hemminger @ 2023-08-08 17:35 UTC (permalink / raw)
  To: dev; +Cc: Stephen Hemminger, Bruce Richardson, Vladimir Medvedkin

The function to associate RCU with LPM was added several releases ago.
Remove experimental.

Signed-off-by: Stephen Hemminger <stephen@networkplumber.org>
---
 lib/lpm/rte_lpm.h   | 4 ----
 lib/lpm/version.map | 7 +------
 2 files changed, 1 insertion(+), 10 deletions(-)

diff --git a/lib/lpm/rte_lpm.h b/lib/lpm/rte_lpm.h
index 75e27ff164ab..40825c5b8038 100644
--- a/lib/lpm/rte_lpm.h
+++ b/lib/lpm/rte_lpm.h
@@ -186,9 +186,6 @@ void
 rte_lpm_free(struct rte_lpm *lpm);
 
 /**
- * @warning
- * @b EXPERIMENTAL: this API may change without prior notice
- *
  * Associate RCU QSBR variable with an LPM object.
  *
  * @param lpm
@@ -203,7 +200,6 @@ rte_lpm_free(struct rte_lpm *lpm);
  *   - EEXIST - already added QSBR
  *   - ENOMEM - memory allocation failure
  */
-__rte_experimental
 int rte_lpm_rcu_qsbr_add(struct rte_lpm *lpm, struct rte_lpm_rcu_config *cfg);
 
 /**
diff --git a/lib/lpm/version.map b/lib/lpm/version.map
index 9ba73b2f938b..b6bee8c18b8a 100644
--- a/lib/lpm/version.map
+++ b/lib/lpm/version.map
@@ -18,12 +18,7 @@ DPDK_24 {
 	rte_lpm_find_existing;
 	rte_lpm_free;
 	rte_lpm_is_rule_present;
+	rte_lpm_rcu_qsbr_add;
 
 	local: *;
 };
-
-EXPERIMENTAL {
-	global:
-
-	rte_lpm_rcu_qsbr_add;
-};
-- 
2.39.2


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

* [PATCH 10/20] mbuf: remove experimental from create_extbuf
  2023-08-08 17:35 [PATCH 00/20] remove experimental flag from some API's Stephen Hemminger
                   ` (8 preceding siblings ...)
  2023-08-08 17:35 ` [PATCH 09/20] lpm: remove experimental Stephen Hemminger
@ 2023-08-08 17:35 ` Stephen Hemminger
  2023-08-08 17:35 ` [PATCH 11/20] hash: remove experimental from toeplitz hash Stephen Hemminger
                   ` (17 subsequent siblings)
  27 siblings, 0 replies; 219+ messages in thread
From: Stephen Hemminger @ 2023-08-08 17:35 UTC (permalink / raw)
  To: dev; +Cc: Stephen Hemminger, Olivier Matz

This API was added in 2020 and should no longer be experimental.

Signed-off-by: Stephen Hemminger <stephen@networkplumber.org>
---
 lib/mbuf/rte_mbuf.h  | 1 -
 lib/mbuf/version.map | 8 +-------
 2 files changed, 1 insertion(+), 8 deletions(-)

diff --git a/lib/mbuf/rte_mbuf.h b/lib/mbuf/rte_mbuf.h
index 913c459b1cc6..30fa3df85f53 100644
--- a/lib/mbuf/rte_mbuf.h
+++ b/lib/mbuf/rte_mbuf.h
@@ -800,7 +800,6 @@ struct rte_pktmbuf_extmem {
  *    - EEXIST - a memzone with the same name already exists
  *    - ENOMEM - no appropriate memory area found in which to create memzone
  */
-__rte_experimental
 struct rte_mempool *
 rte_pktmbuf_pool_create_extbuf(const char *name, unsigned int n,
 	unsigned int cache_size, uint16_t priv_size,
diff --git a/lib/mbuf/version.map b/lib/mbuf/version.map
index f010d4692e3e..daa65e2bbdb2 100644
--- a/lib/mbuf/version.map
+++ b/lib/mbuf/version.map
@@ -38,14 +38,8 @@ DPDK_24 {
 	rte_pktmbuf_init;
 	rte_pktmbuf_pool_create;
 	rte_pktmbuf_pool_create_by_ops;
+	rte_pktmbuf_pool_create_extbuf;
 	rte_pktmbuf_pool_init;
 
 	local: *;
 };
-
-EXPERIMENTAL {
-	global:
-
-	rte_pktmbuf_pool_create_extbuf;
-
-};
-- 
2.39.2


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

* [PATCH 11/20] hash: remove experimental from toeplitz hash
  2023-08-08 17:35 [PATCH 00/20] remove experimental flag from some API's Stephen Hemminger
                   ` (9 preceding siblings ...)
  2023-08-08 17:35 ` [PATCH 10/20] mbuf: remove experimental from create_extbuf Stephen Hemminger
@ 2023-08-08 17:35 ` Stephen Hemminger
  2023-08-08 17:35 ` [PATCH 12/20] timer: remove experimental from rte_timer_next_ticks Stephen Hemminger
                   ` (16 subsequent siblings)
  27 siblings, 0 replies; 219+ messages in thread
From: Stephen Hemminger @ 2023-08-08 17:35 UTC (permalink / raw)
  To: dev
  Cc: Stephen Hemminger, Yipeng Wang, Sameh Gobriel, Bruce Richardson,
	Vladimir Medvedkin

The rte_thash_ functions have been around since 2020.
Remove experimental tag.

Signed-off-by: Stephen Hemminger <stephen@networkplumber.org>
---
 lib/hash/rte_thash.h          | 44 -----------------------------------
 lib/hash/rte_thash_gfni.h     |  8 -------
 lib/hash/rte_thash_x86_gfni.h |  8 -------
 lib/hash/version.map          | 16 ++++---------
 4 files changed, 4 insertions(+), 72 deletions(-)

diff --git a/lib/hash/rte_thash.h b/lib/hash/rte_thash.h
index 7b1d1547863e..84673c06762c 100644
--- a/lib/hash/rte_thash.h
+++ b/lib/hash/rte_thash.h
@@ -223,14 +223,10 @@ rte_softrss_be(uint32_t *input_tuple, uint32_t input_len,
 /**
  * Indicates if GFNI implementations of the Toeplitz hash are supported.
  *
- * @warning
- * @b EXPERIMENTAL: this API may change without prior notice.
- *
  * @return
  *  1 if GFNI is supported
  *  0 otherwise
  */
-__rte_experimental
 int
 rte_thash_gfni_supported(void);
 
@@ -238,9 +234,6 @@ rte_thash_gfni_supported(void);
  * Converts Toeplitz hash key (RSS key) into matrixes required
  * for GFNI implementation
  *
- * @warning
- * @b EXPERIMENTAL: this API may change without prior notice.
- *
  * @param matrixes
  *  pointer to the memory where matrices will be written.
  *  Note: the size of this memory must be equal to size * 8
@@ -249,7 +242,6 @@ rte_thash_gfni_supported(void);
  * @param size
  *  Size of the rss_key in bytes.
  */
-__rte_experimental
 void
 rte_thash_complete_matrix(uint64_t *matrixes, const uint8_t *rss_key,
 	int size);
@@ -278,9 +270,6 @@ struct rte_thash_subtuple_helper;
 /**
  * Create a new thash context.
  *
- * @warning
- * @b EXPERIMENTAL: this API may change without prior notice.
- *
  * @param name
  *  Context name
  * @param key_len
@@ -300,7 +289,6 @@ struct rte_thash_subtuple_helper;
  *  A pointer to the created context on success
  *  NULL otherwise
  */
-__rte_experimental
 struct rte_thash_ctx *
 rte_thash_init_ctx(const char *name, uint32_t key_len, uint32_t reta_sz,
 	uint8_t *key, uint32_t flags);
@@ -308,9 +296,6 @@ rte_thash_init_ctx(const char *name, uint32_t key_len, uint32_t reta_sz,
 /**
  * Find an existing thash context and return a pointer to it.
  *
- * @warning
- * @b EXPERIMENTAL: this API may change without prior notice.
- *
  * @param name
  *  Name of the thash context
  * @return
@@ -318,20 +303,15 @@ rte_thash_init_ctx(const char *name, uint32_t key_len, uint32_t reta_sz,
  *  set appropriately. Possible rte_errno values include:
  *   - ENOENT - required entry not available to return.
  */
-__rte_experimental
 struct rte_thash_ctx *
 rte_thash_find_existing(const char *name);
 
 /**
  * Free a thash context object
  *
- * @warning
- * @b EXPERIMENTAL: this API may change without prior notice.
- *
  * @param ctx
  *  Thash context
  */
-__rte_experimental
 void
 rte_thash_free_ctx(struct rte_thash_ctx *ctx);
 
@@ -341,9 +321,6 @@ rte_thash_free_ctx(struct rte_thash_ctx *ctx);
  * to calculate toeplitz hash collisions.
  * This function is not multi-thread safe.
  *
- * @warning
- * @b EXPERIMENTAL: this API may change without prior notice.
- *
  * @param ctx
  *  Thash context
  * @param name
@@ -357,7 +334,6 @@ rte_thash_free_ctx(struct rte_thash_ctx *ctx);
  *  0 on success
  *  negative on error
  */
-__rte_experimental
 int
 rte_thash_add_helper(struct rte_thash_ctx *ctx, const char *name, uint32_t len,
 	uint32_t offset);
@@ -365,9 +341,6 @@ rte_thash_add_helper(struct rte_thash_ctx *ctx, const char *name, uint32_t len,
 /**
  * Find a helper in the context by the given name
  *
- * @warning
- * @b EXPERIMENTAL: this API may change without prior notice.
- *
  * @param ctx
  *  Thash context
  * @param name
@@ -375,7 +348,6 @@ rte_thash_add_helper(struct rte_thash_ctx *ctx, const char *name, uint32_t len,
  * @return
  *  Pointer to the thash helper or NULL if it was not found.
  */
-__rte_experimental
 struct rte_thash_subtuple_helper *
 rte_thash_get_helper(struct rte_thash_ctx *ctx, const char *name);
 
@@ -394,7 +366,6 @@ rte_thash_get_helper(struct rte_thash_ctx *ctx, const char *name);
  * @return
  *  A complementary value which must be xored with the corresponding subtuple
  */
-__rte_experimental
 uint32_t
 rte_thash_get_complement(struct rte_thash_subtuple_helper *h,
 	uint32_t hash, uint32_t desired_hash);
@@ -404,15 +375,11 @@ rte_thash_get_complement(struct rte_thash_subtuple_helper *h,
  * It changes after each addition of a helper. It should be installed to
  * the NIC.
  *
- * @warning
- * @b EXPERIMENTAL: this API may change without prior notice.
- *
  * @param ctx
  *  Thash context
  * @return
  *  A pointer to the toeplitz hash key
  */
-__rte_experimental
 const uint8_t *
 rte_thash_get_key(struct rte_thash_ctx *ctx);
 
@@ -422,16 +389,12 @@ rte_thash_get_key(struct rte_thash_ctx *ctx);
  * CPU supports GFNI.
  * Matrices changes after each addition of a helper.
  *
- * @warning
- * @b EXPERIMENTAL: this API may change without prior notice.
- *
  * @param ctx
  *  Thash context
  * @return
  *  A pointer to the toeplitz hash key matrices on success
  *  NULL if GFNI is not supported.
  */
-__rte_experimental
 const uint64_t *
 rte_thash_get_gfni_matrices(struct rte_thash_ctx *ctx);
 
@@ -441,9 +404,6 @@ rte_thash_get_gfni_matrices(struct rte_thash_ctx *ctx);
  * Generally it is some kind of lookup function to check
  * if adjusted tuple is already in use.
  *
- * @warning
- * @b EXPERIMENTAL: this API may change without prior notice.
- *
  * @param userdata
  *  Pointer to the userdata. It could be a pointer to the
  *  table with used tuples to search.
@@ -461,9 +421,6 @@ typedef int (*rte_thash_check_tuple_t)(void *userdata, uint8_t *tuple);
  * desired least significant bits.
  * This function is multi-thread safe.
  *
- * @warning
- * @b EXPERIMENTAL: this API may change without prior notice.
- *
  * @param ctx
  *  Thash context
  * @param h
@@ -485,7 +442,6 @@ typedef int (*rte_thash_check_tuple_t)(void *userdata, uint8_t *tuple);
  *  0 on success
  *  negative otherwise
  */
-__rte_experimental
 int
 rte_thash_adjust_tuple(struct rte_thash_ctx *ctx,
 	struct rte_thash_subtuple_helper *h,
diff --git a/lib/hash/rte_thash_gfni.h b/lib/hash/rte_thash_gfni.h
index ef90faa302d1..67d0fa4da988 100644
--- a/lib/hash/rte_thash_gfni.h
+++ b/lib/hash/rte_thash_gfni.h
@@ -24,9 +24,6 @@ extern "C" {
  * Calculate Toeplitz hash.
  * Dummy implementation.
  *
- * @warning
- * @b EXPERIMENTAL: this API may change without prior notice.
- *
  * @param m
  *  Pointer to the matrices generated from the corresponding
  *  RSS hash key using rte_thash_complete_matrix().
@@ -37,7 +34,6 @@ extern "C" {
  * @return
  *  Calculated Toeplitz hash value.
  */
-__rte_experimental
 static inline uint32_t
 rte_thash_gfni(const uint64_t *mtrx __rte_unused,
 	const uint8_t *key __rte_unused, int len __rte_unused)
@@ -50,9 +46,6 @@ rte_thash_gfni(const uint64_t *mtrx __rte_unused,
  * Bulk implementation for Toeplitz hash.
  * Dummy implementation.
  *
- * @warning
- * @b EXPERIMENTAL: this API may change without prior notice.
- *
  * @param m
  *  Pointer to the matrices generated from the corresponding
  *  RSS hash key using rte_thash_complete_matrix().
@@ -66,7 +59,6 @@ rte_thash_gfni(const uint64_t *mtrx __rte_unused,
  * @param num
  *  Number of tuples to hash.
  */
-__rte_experimental
 static inline void
 rte_thash_gfni_bulk(const uint64_t *mtrx __rte_unused,
 	int len __rte_unused, uint8_t *tuple[] __rte_unused,
diff --git a/lib/hash/rte_thash_x86_gfni.h b/lib/hash/rte_thash_x86_gfni.h
index 7bb76ac1bb5f..f263c1eeec06 100644
--- a/lib/hash/rte_thash_x86_gfni.h
+++ b/lib/hash/rte_thash_x86_gfni.h
@@ -161,9 +161,6 @@ __rte_thash_gfni(const uint64_t *mtrx, const uint8_t *tuple,
 /**
  * Calculate Toeplitz hash.
  *
- * @warning
- * @b EXPERIMENTAL: this API may change without prior notice.
- *
  * @param m
  *  Pointer to the matrices generated from the corresponding
  *  RSS hash key using rte_thash_complete_matrix().
@@ -175,7 +172,6 @@ __rte_thash_gfni(const uint64_t *mtrx, const uint8_t *tuple,
  * @return
  *  Calculated Toeplitz hash value.
  */
-__rte_experimental
 static inline uint32_t
 rte_thash_gfni(const uint64_t *m, const uint8_t *tuple, int len)
 {
@@ -190,9 +186,6 @@ rte_thash_gfni(const uint64_t *m, const uint8_t *tuple, int len)
 /**
  * Bulk implementation for Toeplitz hash.
  *
- * @warning
- * @b EXPERIMENTAL: this API may change without prior notice.
- *
  * @param m
  *  Pointer to the matrices generated from the corresponding
  *  RSS hash key using rte_thash_complete_matrix().
@@ -207,7 +200,6 @@ rte_thash_gfni(const uint64_t *m, const uint8_t *tuple, int len)
  * @param num
  *  Number of tuples to hash.
  */
-__rte_experimental
 static inline void
 rte_thash_gfni_bulk(const uint64_t *mtrx, int len, uint8_t *tuple[],
 	uint32_t val[], uint32_t num)
diff --git a/lib/hash/version.map b/lib/hash/version.map
index daaa9a8901db..b98b64a1638a 100644
--- a/lib/hash/version.map
+++ b/lib/hash/version.map
@@ -30,25 +30,17 @@ DPDK_24 {
 	rte_hash_rcu_qsbr_add;
 	rte_hash_reset;
 	rte_hash_set_cmp_func;
-
-	local: *;
-};
-
-EXPERIMENTAL {
-	global:
-
-	# added in 21.05
 	rte_thash_add_helper;
 	rte_thash_adjust_tuple;
+	rte_thash_complete_matrix;
 	rte_thash_find_existing;
 	rte_thash_free_ctx;
 	rte_thash_get_complement;
+	rte_thash_get_gfni_matrices;
 	rte_thash_get_helper;
 	rte_thash_get_key;
+	rte_thash_gfni_supported;
 	rte_thash_init_ctx;
 
-	# added in 21.11
-	rte_thash_complete_matrix;
-	rte_thash_get_gfni_matrices;
-	rte_thash_gfni_supported;
+	local: *;
 };
-- 
2.39.2


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

* [PATCH 12/20] timer: remove experimental from rte_timer_next_ticks
  2023-08-08 17:35 [PATCH 00/20] remove experimental flag from some API's Stephen Hemminger
                   ` (10 preceding siblings ...)
  2023-08-08 17:35 ` [PATCH 11/20] hash: remove experimental from toeplitz hash Stephen Hemminger
@ 2023-08-08 17:35 ` Stephen Hemminger
  2023-08-08 17:35 ` [PATCH 13/20] sched: remove experimental Stephen Hemminger
                   ` (15 subsequent siblings)
  27 siblings, 0 replies; 219+ messages in thread
From: Stephen Hemminger @ 2023-08-08 17:35 UTC (permalink / raw)
  To: dev; +Cc: Stephen Hemminger, Erik Gabriel Carrillo

Function was added in 20.11, remove experimental flag.

Signed-off-by: Stephen Hemminger <stephen@networkplumber.org>
---
 lib/timer/rte_timer.h | 4 ----
 lib/timer/version.map | 7 +------
 2 files changed, 1 insertion(+), 10 deletions(-)

diff --git a/lib/timer/rte_timer.h b/lib/timer/rte_timer.h
index c8710c4dc9b1..df791cfbd626 100644
--- a/lib/timer/rte_timer.h
+++ b/lib/timer/rte_timer.h
@@ -332,9 +332,6 @@ void rte_timer_stop_sync(struct rte_timer *tim);
 int rte_timer_pending(struct rte_timer *tim);
 
 /**
- * @warning
- * @b EXPERIMENTAL: this API may change without prior notice
- *
  * Time until the next timer on the current lcore
  * This function gives the ticks until the next timer will be active.
  *
@@ -344,7 +341,6 @@ int rte_timer_pending(struct rte_timer *tim);
  *   - 0: a timer is pending and will run at next rte_timer_manage()
  *   - >0: ticks until the next timer is ready
  */
-__rte_experimental
 int64_t rte_timer_next_ticks(void);
 
 /**
diff --git a/lib/timer/version.map b/lib/timer/version.map
index e3d5a043034c..b180708e2488 100644
--- a/lib/timer/version.map
+++ b/lib/timer/version.map
@@ -10,6 +10,7 @@ DPDK_24 {
 	rte_timer_dump_stats;
 	rte_timer_init;
 	rte_timer_manage;
+	rte_timer_next_ticks;
 	rte_timer_pending;
 	rte_timer_reset;
 	rte_timer_reset_sync;
@@ -21,9 +22,3 @@ DPDK_24 {
 
 	local: *;
 };
-
-EXPERIMENTAL {
-	global:
-
-	rte_timer_next_ticks;
-};
-- 
2.39.2


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

* [PATCH 13/20] sched: remove experimental
  2023-08-08 17:35 [PATCH 00/20] remove experimental flag from some API's Stephen Hemminger
                   ` (11 preceding siblings ...)
  2023-08-08 17:35 ` [PATCH 12/20] timer: remove experimental from rte_timer_next_ticks Stephen Hemminger
@ 2023-08-08 17:35 ` Stephen Hemminger
  2023-08-08 17:35 ` [PATCH 14/20] dmadev: mark API's as not experimental Stephen Hemminger
                   ` (14 subsequent siblings)
  27 siblings, 0 replies; 219+ messages in thread
From: Stephen Hemminger @ 2023-08-08 17:35 UTC (permalink / raw)
  To: dev; +Cc: Stephen Hemminger, Cristian Dumitrescu

The overcommit and PIE support was added back in 2020.
Remove experimental tag.

Signed-off-by: Stephen Hemminger <stephen@networkplumber.org>
---
 lib/sched/rte_pie.h   |  8 --------
 lib/sched/rte_sched.h |  5 -----
 lib/sched/version.map | 18 ++++--------------
 3 files changed, 4 insertions(+), 27 deletions(-)

diff --git a/lib/sched/rte_pie.h b/lib/sched/rte_pie.h
index e0d6d5a3cdcd..631c657980eb 100644
--- a/lib/sched/rte_pie.h
+++ b/lib/sched/rte_pie.h
@@ -78,7 +78,6 @@ struct rte_pie {
  * @retval !0 error
  */
 int
-__rte_experimental
 rte_pie_rt_data_init(struct rte_pie *pie);
 
 /**
@@ -95,7 +94,6 @@ rte_pie_rt_data_init(struct rte_pie *pie);
  * @retval !0 error
  */
 int
-__rte_experimental
 rte_pie_config_init(struct rte_pie_config *pie_cfg,
 	const uint16_t qdelay_ref,
 	const uint16_t dp_update_interval,
@@ -116,7 +114,6 @@ rte_pie_config_init(struct rte_pie_config *pie_cfg,
  * @retval !0 drop the packet
  */
 static int
-__rte_experimental
 rte_pie_enqueue_empty(const struct rte_pie_config *pie_cfg,
 	struct rte_pie *pie,
 	uint32_t pkt_len)
@@ -148,7 +145,6 @@ rte_pie_enqueue_empty(const struct rte_pie_config *pie_cfg,
  * @param time [in] current time (measured in cpu cycles)
  */
 static void
-__rte_experimental
 _calc_drop_probability(const struct rte_pie_config *pie_cfg,
 	struct rte_pie *pie, uint64_t time)
 {
@@ -212,7 +208,6 @@ _calc_drop_probability(const struct rte_pie_config *pie_cfg,
  * @retval 1 drop the packet
  */
 static inline int
-__rte_experimental
 _rte_pie_drop(const struct rte_pie_config *pie_cfg,
 	struct rte_pie *pie)
 {
@@ -261,7 +256,6 @@ _rte_pie_drop(const struct rte_pie_config *pie_cfg,
  * @retval 2 drop the packet based on mark probability criterion
  */
 static inline int
-__rte_experimental
 rte_pie_enqueue_nonempty(const struct rte_pie_config *pie_cfg,
 	struct rte_pie *pie,
 	uint32_t pkt_len,
@@ -329,7 +323,6 @@ rte_pie_enqueue_nonempty(const struct rte_pie_config *pie_cfg,
  * @retval 1 drop the packet based on drop probability criteria
  */
 static inline int
-__rte_experimental
 rte_pie_enqueue(const struct rte_pie_config *pie_cfg,
 	struct rte_pie *pie,
 	const unsigned int qlen,
@@ -354,7 +347,6 @@ rte_pie_enqueue(const struct rte_pie_config *pie_cfg,
  * @param time [in] current time stamp in cpu cycles
  */
 static inline void
-__rte_experimental
 rte_pie_dequeue(struct rte_pie *pie,
 	uint32_t pkt_len,
 	uint64_t time)
diff --git a/lib/sched/rte_sched.h b/lib/sched/rte_sched.h
index a9ac5909ad0c..77fc78ce2fe9 100644
--- a/lib/sched/rte_sched.h
+++ b/lib/sched/rte_sched.h
@@ -353,9 +353,6 @@ rte_sched_subport_pipe_profile_add(struct rte_sched_port *port,
 	uint32_t *pipe_profile_id);
 
 /**
- * @warning
- * @b EXPERIMENTAL: this API may change without prior notice.
- *
  * Hierarchical scheduler subport bandwidth profile add
  * Note that this function is safe to use in runtime for adding new
  * subport bandwidth profile as it doesn't have any impact on hierarchical
@@ -369,7 +366,6 @@ rte_sched_subport_pipe_profile_add(struct rte_sched_port *port,
  * @return
  *   0 upon success, error code otherwise
  */
-__rte_experimental
 int
 rte_sched_port_subport_profile_add(struct rte_sched_port *port,
 	struct rte_sched_subport_profile_params *profile,
@@ -592,7 +588,6 @@ rte_sched_port_dequeue(struct rte_sched_port *port, struct rte_mbuf **pkts, uint
  * @return
  *   0 upon success, error code otherwise
  */
-__rte_experimental
 int
 rte_sched_subport_tc_ov_config(struct rte_sched_port *port, uint32_t subport_id, bool tc_ov_enable);
 
diff --git a/lib/sched/version.map b/lib/sched/version.map
index d9ce68be1449..be1decaeee46 100644
--- a/lib/sched/version.map
+++ b/lib/sched/version.map
@@ -2,6 +2,8 @@ DPDK_24 {
 	global:
 
 	rte_approx;
+	rte_pie_config_init;
+	rte_pie_rt_data_init;
 	rte_red_config_init;
 	rte_red_log2_1_minus_Wq;
 	rte_red_pow2_frac_inv;
@@ -17,24 +19,12 @@ DPDK_24 {
 	rte_sched_port_pkt_read_color;
 	rte_sched_port_pkt_read_tree_path;
 	rte_sched_port_pkt_write;
+	rte_sched_port_subport_profile_add;
 	rte_sched_queue_read_stats;
 	rte_sched_subport_config;
 	rte_sched_subport_pipe_profile_add;
 	rte_sched_subport_read_stats;
+	rte_sched_subport_tc_ov_config;
 
 	local: *;
 };
-
-EXPERIMENTAL {
-	global:
-
-	# added in 20.11
-	rte_sched_port_subport_profile_add;
-
-	# added in 21.11
-	rte_pie_rt_data_init;
-	rte_pie_config_init;
-
-	# added in 22.07
-	rte_sched_subport_tc_ov_config;
-};
-- 
2.39.2


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

* [PATCH 14/20] dmadev: mark API's as not experimental
  2023-08-08 17:35 [PATCH 00/20] remove experimental flag from some API's Stephen Hemminger
                   ` (12 preceding siblings ...)
  2023-08-08 17:35 ` [PATCH 13/20] sched: remove experimental Stephen Hemminger
@ 2023-08-08 17:35 ` Stephen Hemminger
  2023-10-07  2:38   ` fengchengwen
  2023-08-08 17:35 ` [PATCH 15/20] meter: remove experimental warning from comments Stephen Hemminger
                   ` (13 subsequent siblings)
  27 siblings, 1 reply; 219+ messages in thread
From: Stephen Hemminger @ 2023-08-08 17:35 UTC (permalink / raw)
  To: dev; +Cc: Stephen Hemminger, Chengwen Feng, Kevin Laatz, Bruce Richardson

These were added in 20.11 time now to remove experimental flag.

Signed-off-by: Stephen Hemminger <stephen@networkplumber.org>
---
 lib/dmadev/rte_dmadev.h | 85 -----------------------------------------
 lib/dmadev/version.map  |  2 +-
 2 files changed, 1 insertion(+), 86 deletions(-)

diff --git a/lib/dmadev/rte_dmadev.h b/lib/dmadev/rte_dmadev.h
index e61d71959e82..ecc98517e852 100644
--- a/lib/dmadev/rte_dmadev.h
+++ b/lib/dmadev/rte_dmadev.h
@@ -158,9 +158,6 @@ extern "C" {
 #define RTE_DMADEV_DEFAULT_MAX 64
 
 /**
- * @warning
- * @b EXPERIMENTAL: this API may change without prior notice.
- *
  * Configure the maximum number of dmadevs.
  * @note This function can be invoked before the primary process rte_eal_init()
  * to change the maximum number of dmadevs. If not invoked, the maximum number
@@ -172,13 +169,9 @@ extern "C" {
  * @return
  *   0 on success. Otherwise negative value is returned.
  */
-__rte_experimental
 int rte_dma_dev_max(size_t dev_max);
 
 /**
- * @warning
- * @b EXPERIMENTAL: this API may change without prior notice.
- *
  * Get the device identifier for the named DMA device.
  *
  * @param name
@@ -188,13 +181,9 @@ int rte_dma_dev_max(size_t dev_max);
  *   Returns DMA device identifier on success.
  *   - <0: Failure to find named DMA device.
  */
-__rte_experimental
 int rte_dma_get_dev_id_by_name(const char *name);
 
 /**
- * @warning
- * @b EXPERIMENTAL: this API may change without prior notice.
- *
  * Check whether the dev_id is valid.
  *
  * @param dev_id
@@ -203,20 +192,15 @@ int rte_dma_get_dev_id_by_name(const char *name);
  * @return
  *   - If the device index is valid (true) or not (false).
  */
-__rte_experimental
 bool rte_dma_is_valid(int16_t dev_id);
 
 /**
- * @warning
- * @b EXPERIMENTAL: this API may change without prior notice.
- *
  * Get the total number of DMA devices that have been successfully
  * initialised.
  *
  * @return
  *   The total number of usable DMA devices.
  */
-__rte_experimental
 uint16_t rte_dma_count_avail(void);
 
 /**
@@ -227,7 +211,6 @@ uint16_t rte_dma_count_avail(void);
  * @return
  *   Next valid dmadev, UINT16_MAX if there is none.
  */
-__rte_experimental
 int16_t rte_dma_next_dev(int16_t start_dev_id);
 
 /** Utility macro to iterate over all available dmadevs */
@@ -310,9 +293,6 @@ struct rte_dma_info {
 };
 
 /**
- * @warning
- * @b EXPERIMENTAL: this API may change without prior notice.
- *
  * Retrieve information of a DMA device.
  *
  * @param dev_id
@@ -324,7 +304,6 @@ struct rte_dma_info {
  * @return
  *   0 on success. Otherwise negative value is returned.
  */
-__rte_experimental
 int rte_dma_info_get(int16_t dev_id, struct rte_dma_info *dev_info);
 
 /**
@@ -349,9 +328,6 @@ struct rte_dma_conf {
 };
 
 /**
- * @warning
- * @b EXPERIMENTAL: this API may change without prior notice.
- *
  * Configure a DMA device.
  *
  * This function must be invoked first before any other function in the
@@ -367,13 +343,9 @@ struct rte_dma_conf {
  * @return
  *   0 on success. Otherwise negative value is returned.
  */
-__rte_experimental
 int rte_dma_configure(int16_t dev_id, const struct rte_dma_conf *dev_conf);
 
 /**
- * @warning
- * @b EXPERIMENTAL: this API may change without prior notice.
- *
  * Start a DMA device.
  *
  * The device start step is the last one and consists of setting the DMA
@@ -385,13 +357,9 @@ int rte_dma_configure(int16_t dev_id, const struct rte_dma_conf *dev_conf);
  * @return
  *   0 on success. Otherwise negative value is returned.
  */
-__rte_experimental
 int rte_dma_start(int16_t dev_id);
 
 /**
- * @warning
- * @b EXPERIMENTAL: this API may change without prior notice.
- *
  * Stop a DMA device.
  *
  * The device can be restarted with a call to rte_dma_start().
@@ -402,13 +370,9 @@ int rte_dma_start(int16_t dev_id);
  * @return
  *   0 on success. Otherwise negative value is returned.
  */
-__rte_experimental
 int rte_dma_stop(int16_t dev_id);
 
 /**
- * @warning
- * @b EXPERIMENTAL: this API may change without prior notice.
- *
  * Close a DMA device.
  *
  * The device cannot be restarted after this call.
@@ -419,7 +383,6 @@ int rte_dma_stop(int16_t dev_id);
  * @return
  *   0 on success. Otherwise negative value is returned.
  */
-__rte_experimental
 int rte_dma_close(int16_t dev_id);
 
 /**
@@ -585,9 +548,6 @@ struct rte_dma_vchan_conf {
 };
 
 /**
- * @warning
- * @b EXPERIMENTAL: this API may change without prior notice.
- *
  * Allocate and set up a virtual DMA channel.
  *
  * @param dev_id
@@ -602,7 +562,6 @@ struct rte_dma_vchan_conf {
  * @return
  *   0 on success. Otherwise negative value is returned.
  */
-__rte_experimental
 int rte_dma_vchan_setup(int16_t dev_id, uint16_t vchan,
 			const struct rte_dma_vchan_conf *conf);
 
@@ -631,9 +590,6 @@ struct rte_dma_stats {
 #define RTE_DMA_ALL_VCHAN	0xFFFFu
 
 /**
- * @warning
- * @b EXPERIMENTAL: this API may change without prior notice.
- *
  * Retrieve basic statistics of a or all virtual DMA channel(s).
  *
  * @param dev_id
@@ -648,14 +604,10 @@ struct rte_dma_stats {
  * @return
  *   0 on success. Otherwise negative value is returned.
  */
-__rte_experimental
 int rte_dma_stats_get(int16_t dev_id, uint16_t vchan,
 		      struct rte_dma_stats *stats);
 
 /**
- * @warning
- * @b EXPERIMENTAL: this API may change without prior notice.
- *
  * Reset basic statistics of a or all virtual DMA channel(s).
  *
  * @param dev_id
@@ -667,7 +619,6 @@ int rte_dma_stats_get(int16_t dev_id, uint16_t vchan,
  * @return
  *   0 on success. Otherwise negative value is returned.
  */
-__rte_experimental
 int rte_dma_stats_reset(int16_t dev_id, uint16_t vchan);
 
 /**
@@ -683,9 +634,6 @@ enum rte_dma_vchan_status {
 };
 
 /**
- * @warning
- * @b EXPERIMENTAL: this API may change without prior notice.
- *
  * Determine if all jobs have completed on a device channel.
  * This function is primarily designed for testing use, as it allows a process to check if
  * all jobs are completed, without actually gathering completions from those jobs.
@@ -700,14 +648,10 @@ enum rte_dma_vchan_status {
  *   0 - call completed successfully
  *   < 0 - error code indicating there was a problem calling the API
  */
-__rte_experimental
 int
 rte_dma_vchan_status(int16_t dev_id, uint16_t vchan, enum rte_dma_vchan_status *status);
 
 /**
- * @warning
- * @b EXPERIMENTAL: this API may change without prior notice.
- *
  * Dump DMA device info.
  *
  * @param dev_id
@@ -718,7 +662,6 @@ rte_dma_vchan_status(int16_t dev_id, uint16_t vchan, enum rte_dma_vchan_status *
  * @return
  *   0 on success. Otherwise negative value is returned.
  */
-__rte_experimental
 int rte_dma_dump(int16_t dev_id, FILE *f);
 
 /**
@@ -822,9 +765,6 @@ struct rte_dma_sge {
 /**@}*/
 
 /**
- * @warning
- * @b EXPERIMENTAL: this API may change without prior notice.
- *
  * Enqueue a copy operation onto the virtual DMA channel.
  *
  * This queues up a copy operation to be performed by hardware, if the 'flags'
@@ -850,7 +790,6 @@ struct rte_dma_sge {
  *   - -ENOSPC: if no space left to enqueue.
  *   - other values < 0 on failure.
  */
-__rte_experimental
 static inline int
 rte_dma_copy(int16_t dev_id, uint16_t vchan, rte_iova_t src, rte_iova_t dst,
 	     uint32_t length, uint64_t flags)
@@ -868,9 +807,6 @@ rte_dma_copy(int16_t dev_id, uint16_t vchan, rte_iova_t src, rte_iova_t dst,
 }
 
 /**
- * @warning
- * @b EXPERIMENTAL: this API may change without prior notice.
- *
  * Enqueue a scatter-gather list copy operation onto the virtual DMA channel.
  *
  * This queues up a scatter-gather list copy operation to be performed by
@@ -900,7 +836,6 @@ rte_dma_copy(int16_t dev_id, uint16_t vchan, rte_iova_t src, rte_iova_t dst,
  *   - -ENOSPC: if no space left to enqueue.
  *   - other values < 0 on failure.
  */
-__rte_experimental
 static inline int
 rte_dma_copy_sg(int16_t dev_id, uint16_t vchan, struct rte_dma_sge *src,
 		struct rte_dma_sge *dst, uint16_t nb_src, uint16_t nb_dst,
@@ -921,9 +856,6 @@ rte_dma_copy_sg(int16_t dev_id, uint16_t vchan, struct rte_dma_sge *src,
 }
 
 /**
- * @warning
- * @b EXPERIMENTAL: this API may change without prior notice.
- *
  * Enqueue a fill operation onto the virtual DMA channel.
  *
  * This queues up a fill operation to be performed by hardware, if the 'flags'
@@ -949,7 +881,6 @@ rte_dma_copy_sg(int16_t dev_id, uint16_t vchan, struct rte_dma_sge *src,
  *   - -ENOSPC: if no space left to enqueue.
  *   - other values < 0 on failure.
  */
-__rte_experimental
 static inline int
 rte_dma_fill(int16_t dev_id, uint16_t vchan, uint64_t pattern,
 	     rte_iova_t dst, uint32_t length, uint64_t flags)
@@ -968,9 +899,6 @@ rte_dma_fill(int16_t dev_id, uint16_t vchan, uint64_t pattern,
 }
 
 /**
- * @warning
- * @b EXPERIMENTAL: this API may change without prior notice.
- *
  * Trigger hardware to begin performing enqueued operations.
  *
  * Writes the "doorbell" to the hardware to trigger it
@@ -984,7 +912,6 @@ rte_dma_fill(int16_t dev_id, uint16_t vchan, uint64_t pattern,
  * @return
  *   0 on success. Otherwise negative value is returned.
  */
-__rte_experimental
 static inline int
 rte_dma_submit(int16_t dev_id, uint16_t vchan)
 {
@@ -1001,9 +928,6 @@ rte_dma_submit(int16_t dev_id, uint16_t vchan)
 }
 
 /**
- * @warning
- * @b EXPERIMENTAL: this API may change without prior notice.
- *
  * Return the number of operations that have been successfully completed.
  * Once an operation has been reported as completed, the results of that
  * operation will be visible to all cores on the system.
@@ -1025,7 +949,6 @@ rte_dma_submit(int16_t dev_id, uint16_t vchan)
  *   The number of operations that successfully completed. This return value
  *   must be less than or equal to the value of nb_cpls.
  */
-__rte_experimental
 static inline uint16_t
 rte_dma_completed(int16_t dev_id, uint16_t vchan, const uint16_t nb_cpls,
 		  uint16_t *last_idx, bool *has_error)
@@ -1060,9 +983,6 @@ rte_dma_completed(int16_t dev_id, uint16_t vchan, const uint16_t nb_cpls,
 }
 
 /**
- * @warning
- * @b EXPERIMENTAL: this API may change without prior notice.
- *
  * Return the number of operations that have been completed, and the operations
  * result may succeed or fail.
  * Once an operation has been reported as completed successfully, the results of that
@@ -1088,7 +1008,6 @@ rte_dma_completed(int16_t dev_id, uint16_t vchan, const uint16_t nb_cpls,
  *   If this number is greater than zero (assuming n), then n values in the
  *   status array are also set.
  */
-__rte_experimental
 static inline uint16_t
 rte_dma_completed_status(int16_t dev_id, uint16_t vchan,
 			 const uint16_t nb_cpls, uint16_t *last_idx,
@@ -1112,9 +1031,6 @@ rte_dma_completed_status(int16_t dev_id, uint16_t vchan,
 }
 
 /**
- * @warning
- * @b EXPERIMENTAL: this API may change without prior notice.
- *
  * Check remaining capacity in descriptor ring for the current burst.
  *
  * @param dev_id
@@ -1126,7 +1042,6 @@ rte_dma_completed_status(int16_t dev_id, uint16_t vchan,
  *   - Remaining space in the descriptor ring for the current burst.
  *   - 0 on error
  */
-__rte_experimental
 static inline uint16_t
 rte_dma_burst_capacity(int16_t dev_id, uint16_t vchan)
 {
diff --git a/lib/dmadev/version.map b/lib/dmadev/version.map
index 7031d6b335e9..2a3736514c8f 100644
--- a/lib/dmadev/version.map
+++ b/lib/dmadev/version.map
@@ -1,4 +1,4 @@
-EXPERIMENTAL {
+DPDK_24 {
 	global:
 
 	rte_dma_close;
-- 
2.39.2


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

* [PATCH 15/20] meter: remove experimental warning from comments
  2023-08-08 17:35 [PATCH 00/20] remove experimental flag from some API's Stephen Hemminger
                   ` (13 preceding siblings ...)
  2023-08-08 17:35 ` [PATCH 14/20] dmadev: mark API's as not experimental Stephen Hemminger
@ 2023-08-08 17:35 ` Stephen Hemminger
  2023-08-08 17:35 ` [PATCH 16/20] power: remove experimental from API's Stephen Hemminger
                   ` (12 subsequent siblings)
  27 siblings, 0 replies; 219+ messages in thread
From: Stephen Hemminger @ 2023-08-08 17:35 UTC (permalink / raw)
  To: dev; +Cc: Stephen Hemminger, Cristian Dumitrescu

The API's for rte_meter_trtcm were never properly flagged
as experimental; missing __rte_experimental but there was
an experimental comment in the docbook comment.
Remove the comment.

Signed-off-by: Stephen Hemminger <stephen@networkplumber.org>
---
 lib/meter/rte_meter.h | 12 ------------
 1 file changed, 12 deletions(-)

diff --git a/lib/meter/rte_meter.h b/lib/meter/rte_meter.h
index 6ba99674361a..bd68cbe38903 100644
--- a/lib/meter/rte_meter.h
+++ b/lib/meter/rte_meter.h
@@ -124,9 +124,6 @@ int
 rte_meter_trtcm_profile_config(struct rte_meter_trtcm_profile *p,
 	struct rte_meter_trtcm_params *params);
 /**
- * @warning
- * @b EXPERIMENTAL: this API may change without prior notice
- *
  * trTCM RFC 4115 profile configuration
  *
  * @param p
@@ -170,9 +167,6 @@ rte_meter_trtcm_config(struct rte_meter_trtcm *m,
 	struct rte_meter_trtcm_profile *p);
 
 /**
- * @warning
- * @b EXPERIMENTAL: this API may change without prior notice
- *
  * trTCM RFC 4115 configuration per metered traffic flow
  *
  * @param m
@@ -273,9 +267,6 @@ rte_meter_trtcm_color_aware_check(struct rte_meter_trtcm *m,
 	enum rte_color pkt_color);
 
 /**
- * @warning
- * @b EXPERIMENTAL: this API may change without prior notice
- *
  * trTCM RFC4115 color blind traffic metering
  *
  * @param m
@@ -297,9 +288,6 @@ rte_meter_trtcm_rfc4115_color_blind_check(
 	uint32_t pkt_len);
 
 /**
- * @warning
- * @b EXPERIMENTAL: this API may change without prior notice
- *
  * trTCM RFC4115 color aware traffic metering
  *
  * @param m
-- 
2.39.2


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

* [PATCH 16/20] power: remove experimental from API's
  2023-08-08 17:35 [PATCH 00/20] remove experimental flag from some API's Stephen Hemminger
                   ` (14 preceding siblings ...)
  2023-08-08 17:35 ` [PATCH 15/20] meter: remove experimental warning from comments Stephen Hemminger
@ 2023-08-08 17:35 ` Stephen Hemminger
  2023-08-08 17:35 ` [PATCH 17/20] kvargs: remove experimental flag Stephen Hemminger
                   ` (11 subsequent siblings)
  27 siblings, 0 replies; 219+ messages in thread
From: Stephen Hemminger @ 2023-08-08 17:35 UTC (permalink / raw)
  To: dev; +Cc: Stephen Hemminger, Anatoly Burakov, David Hunt

The power management API's were last changed in 22.11 release.
Therefore remove experimental for 23.11 release.

Signed-off-by: Stephen Hemminger <stephen@networkplumber.org>
---
 lib/power/rte_power.h               |  4 ---
 lib/power/rte_power_guest_channel.h |  4 ---
 lib/power/rte_power_intel_uncore.h  |  9 -------
 lib/power/rte_power_pmd_mgmt.h      | 40 -----------------------------
 lib/power/version.map               | 33 ++++++++----------------
 5 files changed, 11 insertions(+), 79 deletions(-)

diff --git a/lib/power/rte_power.h b/lib/power/rte_power.h
index 5e2b87c775bf..4e7560118f3b 100644
--- a/lib/power/rte_power.h
+++ b/lib/power/rte_power.h
@@ -24,9 +24,6 @@ enum power_management_env {PM_ENV_NOT_SET, PM_ENV_ACPI_CPUFREQ, PM_ENV_KVM_VM,
 		PM_ENV_PSTATE_CPUFREQ, PM_ENV_CPPC_CPUFREQ};
 
 /**
- * @warning
- * @b EXPERIMENTAL: this API may change, or be removed, without prior notice
- *
  * Check if a specific power management environment type is supported on a
  * currently running system.
  *
@@ -38,7 +35,6 @@ enum power_management_env {PM_ENV_NOT_SET, PM_ENV_ACPI_CPUFREQ, PM_ENV_KVM_VM,
  *   - 0 if unsupported
  *   - -1 if error, with rte_errno indicating reason for error.
  */
-__rte_experimental
 int rte_power_check_env_supported(enum power_management_env env);
 
 /**
diff --git a/lib/power/rte_power_guest_channel.h b/lib/power/rte_power_guest_channel.h
index b5de1bd24318..55b76dfc4c08 100644
--- a/lib/power/rte_power_guest_channel.h
+++ b/lib/power/rte_power_guest_channel.h
@@ -135,9 +135,6 @@ int rte_power_guest_channel_send_msg(struct rte_power_channel_packet *pkt,
 			unsigned int lcore_id);
 
 /**
- * @warning
- * @b EXPERIMENTAL: this API may change without prior notice.
- *
  * Receive a message contained in pkt over the Virtio-Serial
  * from the host endpoint.
  *
@@ -155,7 +152,6 @@ int rte_power_guest_channel_send_msg(struct rte_power_channel_packet *pkt,
  *  - 0 on success.
  *  - Negative on error.
  */
-__rte_experimental
 int rte_power_guest_channel_receive_msg(void *pkt,
 		size_t pkt_len,
 		unsigned int lcore_id);
diff --git a/lib/power/rte_power_intel_uncore.h b/lib/power/rte_power_intel_uncore.h
index 0bd9f193a170..8c4a533d80c1 100644
--- a/lib/power/rte_power_intel_uncore.h
+++ b/lib/power/rte_power_intel_uncore.h
@@ -34,7 +34,6 @@ extern "C" {
  *  - 0 on success.
  *  - Negative on error.
  */
-__rte_experimental
 int
 rte_power_uncore_init(unsigned int pkg, unsigned int die);
 
@@ -56,7 +55,6 @@ rte_power_uncore_init(unsigned int pkg, unsigned int die);
  *  - 0 on success.
  *  - Negative on error.
  */
-__rte_experimental
 int
 rte_power_uncore_exit(unsigned int pkg, unsigned int die);
 
@@ -77,7 +75,6 @@ rte_power_uncore_exit(unsigned int pkg, unsigned int die);
  *  The current index of available frequencies.
  *  If error, it will return 'RTE_POWER_INVALID_FREQ_INDEX = (~0)'.
  */
-__rte_experimental
 uint32_t
 rte_power_get_uncore_freq(unsigned int pkg, unsigned int die);
 
@@ -102,7 +99,6 @@ rte_power_get_uncore_freq(unsigned int pkg, unsigned int die);
  *  - 0 on success without frequency changed.
  *  - Negative on error.
  */
-__rte_experimental
 int
 rte_power_set_uncore_freq(unsigned int pkg, unsigned int die, uint32_t index);
 
@@ -125,7 +121,6 @@ rte_power_set_uncore_freq(unsigned int pkg, unsigned int die, uint32_t index);
  *  - 0 on success without frequency changed.
  *  - Negative on error.
  */
-__rte_experimental
 int
 rte_power_uncore_freq_max(unsigned int pkg, unsigned int die);
 
@@ -148,7 +143,6 @@ rte_power_uncore_freq_max(unsigned int pkg, unsigned int die);
  *  - 0 on success without frequency changed.
  *  - Negative on error.
  */
-__rte_experimental
 int
 rte_power_uncore_freq_min(unsigned int pkg, unsigned int die);
 
@@ -168,7 +162,6 @@ rte_power_uncore_freq_min(unsigned int pkg, unsigned int die);
  *  - The number of available index's in frequency array.
  *  - Negative on error.
  */
-__rte_experimental
 int
 rte_power_uncore_get_num_freqs(unsigned int pkg, unsigned int die);
 
@@ -182,7 +175,6 @@ rte_power_uncore_get_num_freqs(unsigned int pkg, unsigned int die);
  *  - Zero on error.
  *  - Number of package on system on success.
  */
-__rte_experimental
 unsigned int
 rte_power_uncore_get_num_pkgs(void);
 
@@ -200,7 +192,6 @@ rte_power_uncore_get_num_pkgs(void);
  *  - Zero on error.
  *  - Number of dies for package on sucecss.
  */
-__rte_experimental
 unsigned int
 rte_power_uncore_get_num_dies(unsigned int pkg);
 
diff --git a/lib/power/rte_power_pmd_mgmt.h b/lib/power/rte_power_pmd_mgmt.h
index 0f1a2eb22eb4..456145661917 100644
--- a/lib/power/rte_power_pmd_mgmt.h
+++ b/lib/power/rte_power_pmd_mgmt.h
@@ -33,9 +33,6 @@ enum rte_power_pmd_mgmt_type {
 };
 
 /**
- * @warning
- * @b EXPERIMENTAL: this API may change, or be removed, without prior notice.
- *
  * Enable power management on a specified Ethernet device Rx queue and lcore.
  *
  * @note This function is not thread-safe.
@@ -55,16 +52,12 @@ enum rte_power_pmd_mgmt_type {
  *   0 on success
  *   <0 on error
  */
-__rte_experimental
 int
 rte_power_ethdev_pmgmt_queue_enable(unsigned int lcore_id,
 		uint16_t port_id, uint16_t queue_id,
 		enum rte_power_pmd_mgmt_type mode);
 
 /**
- * @warning
- * @b EXPERIMENTAL: this API may change, or be removed, without prior notice.
- *
  * Disable power management on a specified Ethernet device Rx queue and lcore.
  *
  * @note This function is not thread-safe.
@@ -82,42 +75,30 @@ rte_power_ethdev_pmgmt_queue_enable(unsigned int lcore_id,
  *   0 on success
  *   <0 on error
  */
-__rte_experimental
 int
 rte_power_ethdev_pmgmt_queue_disable(unsigned int lcore_id,
 		uint16_t port_id, uint16_t queue_id);
 
 /**
- * @warning
- * @b EXPERIMENTAL: this API may change, or be removed, without prior notice.
- *
  * Set a emptypoll_max to specified value. Used to specify the number of empty
  * polls to wait before entering sleep state.
  *
  * @param max
  *   The value to set emptypoll_max to.
  */
-__rte_experimental
 void
 rte_power_pmd_mgmt_set_emptypoll_max(unsigned int max);
 
 /**
- * @warning
- * @b EXPERIMENTAL: this API may change, or be removed, without prior notice.
- *
  * Get the current value of emptypoll_max.
  *
  * @return
  *   The current emptypoll_max value
  */
-__rte_experimental
 unsigned int
 rte_power_pmd_mgmt_get_emptypoll_max(void);
 
 /**
- * @warning
- * @b EXPERIMENTAL: this API may change, or be removed, without prior notice.
- *
  * Set the pause_duration. Used to adjust the pause mode callback duration.
  *
  * @note Duration must be greater than zero.
@@ -128,27 +109,19 @@ rte_power_pmd_mgmt_get_emptypoll_max(void);
  *   0 on success
  *   <0 on error
  */
-__rte_experimental
 int
 rte_power_pmd_mgmt_set_pause_duration(unsigned int duration);
 
 /**
- * @warning
- * @b EXPERIMENTAL: this API may change, or be removed, without prior notice.
- *
  * Get the current value of pause_duration.
  *
  * @return
  *   The current pause_duration value.
  */
-__rte_experimental
 unsigned int
 rte_power_pmd_mgmt_get_pause_duration(void);
 
 /**
- * @warning
- * @b EXPERIMENTAL: this API may change, or be removed, without prior notice.
- *
  * Set the min frequency to be used for frequency scaling or zero to use defaults.
  *
  * @note Supported by: Pstate mode.
@@ -161,14 +134,10 @@ rte_power_pmd_mgmt_get_pause_duration(void);
  *   0 on success
  *   <0 on error
  */
-__rte_experimental
 int
 rte_power_pmd_mgmt_set_scaling_freq_min(unsigned int lcore, unsigned int min);
 
 /**
- * @warning
- * @b EXPERIMENTAL: this API may change, or be removed, without prior notice.
- *
  * Set the max frequency to be used for frequency scaling or zero to use defaults.
  *
  * @note Supported by: Pstate mode.
@@ -182,14 +151,10 @@ rte_power_pmd_mgmt_set_scaling_freq_min(unsigned int lcore, unsigned int min);
  *   0 on success
  *   <0 on error
  */
-__rte_experimental
 int
 rte_power_pmd_mgmt_set_scaling_freq_max(unsigned int lcore, unsigned int max);
 
 /**
- * @warning
- * @b EXPERIMENTAL: this API may change, or be removed, without prior notice.
- *
  * Get the current configured min frequency used for frequency scaling.
  *
  * @note Supported by: Pstate mode.
@@ -202,14 +167,10 @@ rte_power_pmd_mgmt_set_scaling_freq_max(unsigned int lcore, unsigned int max);
  *   , in KiloHertz, used for frequency scaling.
  *   <0 on error
  */
-__rte_experimental
 int
 rte_power_pmd_mgmt_get_scaling_freq_min(unsigned int lcore);
 
 /**
- * @warning
- * @b EXPERIMENTAL: this API may change, or be removed, without prior notice.
- *
  * Get the current configured max frequency used for frequency scaling.
  *
  * @note Supported by: Pstate mode.
@@ -222,7 +183,6 @@ rte_power_pmd_mgmt_get_scaling_freq_min(unsigned int lcore);
  *   , in KiloHertz, used for frequency scaling.
  *   <0 on error
  */
-__rte_experimental
 int
 rte_power_pmd_mgmt_get_scaling_freq_max(unsigned int lcore);
 
diff --git a/lib/power/version.map b/lib/power/version.map
index b8b54f768e5b..dae4bcfa0956 100644
--- a/lib/power/version.map
+++ b/lib/power/version.map
@@ -1,6 +1,9 @@
 DPDK_24 {
 	global:
 
+	rte_power_check_env_supported;
+	rte_power_ethdev_pmgmt_queue_disable;
+	rte_power_ethdev_pmgmt_queue_enable;
 	rte_power_exit;
 	rte_power_freq_disable_turbo;
 	rte_power_freq_down;
@@ -12,27 +15,10 @@ DPDK_24 {
 	rte_power_get_capabilities;
 	rte_power_get_env;
 	rte_power_get_freq;
+	rte_power_get_uncore_freq;
+	rte_power_guest_channel_receive_msg;
 	rte_power_guest_channel_send_msg;
 	rte_power_init;
-	rte_power_set_env;
-	rte_power_set_freq;
-	rte_power_turbo_status;
-	rte_power_unset_env;
-
-	local: *;
-};
-
-EXPERIMENTAL {
-	global:
-
-	rte_power_check_env_supported;
-	rte_power_guest_channel_receive_msg;
-
-	# added in 21.02
-	rte_power_ethdev_pmgmt_queue_disable;
-	rte_power_ethdev_pmgmt_queue_enable;
-
-	# added in 22.07
 	rte_power_pmd_mgmt_get_emptypoll_max;
 	rte_power_pmd_mgmt_get_pause_duration;
 	rte_power_pmd_mgmt_get_scaling_freq_max;
@@ -41,10 +27,10 @@ EXPERIMENTAL {
 	rte_power_pmd_mgmt_set_pause_duration;
 	rte_power_pmd_mgmt_set_scaling_freq_max;
 	rte_power_pmd_mgmt_set_scaling_freq_min;
-
-	# added in 22.11
-	rte_power_get_uncore_freq;
+	rte_power_set_env;
+	rte_power_set_freq;
 	rte_power_set_uncore_freq;
+	rte_power_turbo_status;
 	rte_power_uncore_exit;
 	rte_power_uncore_freq_max;
 	rte_power_uncore_freq_min;
@@ -52,4 +38,7 @@ EXPERIMENTAL {
 	rte_power_uncore_get_num_freqs;
 	rte_power_uncore_get_num_pkgs;
 	rte_power_uncore_init;
+	rte_power_unset_env;
+
+	local: *;
 };
-- 
2.39.2


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

* [PATCH 17/20] kvargs: remove experimental flag
  2023-08-08 17:35 [PATCH 00/20] remove experimental flag from some API's Stephen Hemminger
                   ` (15 preceding siblings ...)
  2023-08-08 17:35 ` [PATCH 16/20] power: remove experimental from API's Stephen Hemminger
@ 2023-08-08 17:35 ` Stephen Hemminger
  2023-08-08 17:35 ` [PATCH 18/20] ip_frag: mark a couple of functions stable Stephen Hemminger
                   ` (10 subsequent siblings)
  27 siblings, 0 replies; 219+ messages in thread
From: Stephen Hemminger @ 2023-08-08 17:35 UTC (permalink / raw)
  To: dev; +Cc: Stephen Hemminger, Olivier Matz

The function rte_kvargs_get_with_value was added in 21.11
so experimental flag can be removed.

Signed-off-by: Stephen Hemminger <stephen@networkplumber.org>
---
 lib/kvargs/rte_kvargs.h | 4 ----
 lib/kvargs/version.map  | 8 +-------
 2 files changed, 1 insertion(+), 11 deletions(-)

diff --git a/lib/kvargs/rte_kvargs.h b/lib/kvargs/rte_kvargs.h
index 4900b750bc0b..36804cfb1543 100644
--- a/lib/kvargs/rte_kvargs.h
+++ b/lib/kvargs/rte_kvargs.h
@@ -145,9 +145,6 @@ void rte_kvargs_free(struct rte_kvargs *kvlist);
 const char *rte_kvargs_get(const struct rte_kvargs *kvlist, const char *key);
 
 /**
- * @warning
- * @b EXPERIMENTAL: this API may change without prior notice
- *
  * Get the value associated with a given key and value.
  *
  * Find the first entry in the kvlist whose key and value match the
@@ -167,7 +164,6 @@ const char *rte_kvargs_get(const struct rte_kvargs *kvlist, const char *key);
  *   NULL if no key matches the input,
  *   a value associated with a matching key otherwise.
  */
-__rte_experimental
 const char *rte_kvargs_get_with_value(const struct rte_kvargs *kvlist,
 				      const char *key, const char *value);
 
diff --git a/lib/kvargs/version.map b/lib/kvargs/version.map
index 387a94e725cf..cda85d171f32 100644
--- a/lib/kvargs/version.map
+++ b/lib/kvargs/version.map
@@ -4,16 +4,10 @@ DPDK_24 {
 	rte_kvargs_count;
 	rte_kvargs_free;
 	rte_kvargs_get;
+	rte_kvargs_get_with_value;
 	rte_kvargs_parse;
 	rte_kvargs_parse_delim;
 	rte_kvargs_process;
 
 	local: *;
 };
-
-EXPERIMENTAL {
-	global:
-
-	# added in 21.11
-	rte_kvargs_get_with_value;
-};
-- 
2.39.2


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

* [PATCH 18/20] ip_frag: mark a couple of functions stable
  2023-08-08 17:35 [PATCH 00/20] remove experimental flag from some API's Stephen Hemminger
                   ` (16 preceding siblings ...)
  2023-08-08 17:35 ` [PATCH 17/20] kvargs: remove experimental flag Stephen Hemminger
@ 2023-08-08 17:35 ` Stephen Hemminger
  2023-08-08 17:35 ` [PATCH 19/20] member: remove experimental tag Stephen Hemminger
                   ` (9 subsequent siblings)
  27 siblings, 0 replies; 219+ messages in thread
From: Stephen Hemminger @ 2023-08-08 17:35 UTC (permalink / raw)
  To: dev; +Cc: Stephen Hemminger, Konstantin Ananyev

There were two functions added in 22.11 which were
marked as experimental. Remove the experimental tag.

Signed-off-by: Stephen Hemminger <stephen@networkplumber.org>
---
 lib/ip_frag/rte_ip_frag.h | 2 --
 lib/ip_frag/version.map   | 9 ++-------
 2 files changed, 2 insertions(+), 9 deletions(-)

diff --git a/lib/ip_frag/rte_ip_frag.h b/lib/ip_frag/rte_ip_frag.h
index feab72ae64b9..cd3a3e143ee7 100644
--- a/lib/ip_frag/rte_ip_frag.h
+++ b/lib/ip_frag/rte_ip_frag.h
@@ -205,7 +205,6 @@ int32_t rte_ipv4_fragment_packet(struct rte_mbuf *pkt_in,
  *   in the pkts_out array.
  *   Otherwise - (-1) * errno.
  */
-__rte_experimental
 int32_t
 rte_ipv4_fragment_copy_nonseg_packet(struct rte_mbuf *pkt_in,
 	struct rte_mbuf **pkts_out,
@@ -289,7 +288,6 @@ rte_ip_frag_table_statistics_dump(FILE * f, const struct rte_ip_frag_tbl *tbl);
  * @param tms
  *   Current timestamp
  */
-__rte_experimental
 void
 rte_ip_frag_table_del_expired_entries(struct rte_ip_frag_tbl *tbl,
 	struct rte_ip_frag_death_row *dr, uint64_t tms);
diff --git a/lib/ip_frag/version.map b/lib/ip_frag/version.map
index 7ba446c9938b..3e7e573dc412 100644
--- a/lib/ip_frag/version.map
+++ b/lib/ip_frag/version.map
@@ -3,19 +3,14 @@ DPDK_24 {
 
 	rte_ip_frag_free_death_row;
 	rte_ip_frag_table_create;
+	rte_ip_frag_table_del_expired_entries;
 	rte_ip_frag_table_destroy;
 	rte_ip_frag_table_statistics_dump;
 	rte_ipv4_frag_reassemble_packet;
+	rte_ipv4_fragment_copy_nonseg_packet;
 	rte_ipv4_fragment_packet;
 	rte_ipv6_frag_reassemble_packet;
 	rte_ipv6_fragment_packet;
 
 	local: *;
 };
-
-EXPERIMENTAL {
-	global:
-
-	rte_ip_frag_table_del_expired_entries;
-	rte_ipv4_fragment_copy_nonseg_packet;
-};
-- 
2.39.2


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

* [PATCH 19/20] member: remove experimental tag
  2023-08-08 17:35 [PATCH 00/20] remove experimental flag from some API's Stephen Hemminger
                   ` (17 preceding siblings ...)
  2023-08-08 17:35 ` [PATCH 18/20] ip_frag: mark a couple of functions stable Stephen Hemminger
@ 2023-08-08 17:35 ` Stephen Hemminger
  2023-08-08 17:35 ` [PATCH 20/20] security: remove experimental flag Stephen Hemminger
                   ` (8 subsequent siblings)
  27 siblings, 0 replies; 219+ messages in thread
From: Stephen Hemminger @ 2023-08-08 17:35 UTC (permalink / raw)
  To: dev; +Cc: Stephen Hemminger, Yipeng Wang, Sameh Gobriel

The member library last received new API's in 22.11.
All the API's should be marked stable by now.

Signed-off-by: Stephen Hemminger <stephen@networkplumber.org>
---
 lib/member/rte_member.h | 54 -----------------------------------------
 lib/member/version.map  | 12 +++------
 2 files changed, 3 insertions(+), 63 deletions(-)

diff --git a/lib/member/rte_member.h b/lib/member/rte_member.h
index a15e0d69e696..a6bf22651700 100644
--- a/lib/member/rte_member.h
+++ b/lib/member/rte_member.h
@@ -15,9 +15,6 @@
  * bloom filter (vBF). For HT setsummary, two subtypes or modes are available,
  * cache and non-cache modes. The table below summarize some properties of
  * the different implementations.
- *
- * @warning
- * @b EXPERIMENTAL: this API may change without prior notice
  */
 
 /**
@@ -117,17 +114,11 @@ extern int librte_member_logtype;
 struct rte_member_setsum;
 
 /**
- * @warning
- * @b EXPERIMENTAL: this API may change without prior notice
- *
  * Parameter struct used to create set summary
  */
 struct rte_member_parameters;
 
 /**
- * @warning
- * @b EXPERIMENTAL: this API may change without prior notice
- *
  * Define different set summary types
  */
 enum rte_member_setsum_type {
@@ -207,9 +198,6 @@ struct rte_member_setsum {
 } __rte_cache_aligned;
 
 /**
- * @warning
- * @b EXPERIMENTAL: this API may change without prior notice
- *
  * Parameters used when create the set summary table. Currently user can
  * specify two types of setsummary: HT based and vBF. For HT based, user can
  * specify cache or non-cache mode. Here is a table to describe some differences
@@ -351,9 +339,6 @@ struct rte_member_parameters {
 } __rte_cache_aligned;
 
 /**
- * @warning
- * @b EXPERIMENTAL: this API may change without prior notice
- *
  * Find an existing set-summary and return a pointer to it.
  *
  * @param name
@@ -367,9 +352,6 @@ struct rte_member_setsum *
 rte_member_find_existing(const char *name);
 
 /**
- * @warning
- * @b EXPERIMENTAL: this API may change without prior notice
- *
  * Create set-summary (SS).
  *
  * @param params
@@ -382,9 +364,6 @@ struct rte_member_setsum *
 rte_member_create(const struct rte_member_parameters *params);
 
 /**
- * @warning
- * @b EXPERIMENTAL: this API may change without prior notice
- *
  * Lookup key in set-summary (SS).
  * Single key lookup and return as soon as the first match found
  *
@@ -402,9 +381,6 @@ rte_member_lookup(const struct rte_member_setsum *setsum, const void *key,
 			member_set_t *set_id);
 
 /**
- * @warning
- * @b EXPERIMENTAL: this API may change without prior notice
- *
  * Lookup bulk of keys in set-summary (SS).
  * Each key lookup returns as soon as the first match found
  *
@@ -427,9 +403,6 @@ rte_member_lookup_bulk(const struct rte_member_setsum *setsum,
 			member_set_t *set_ids);
 
 /**
- * @warning
- * @b EXPERIMENTAL: this API may change without prior notice
- *
  * Lookup a key in set-summary (SS) for multiple matches.
  * The key lookup will find all matched entries (multiple match).
  * Note that for cache mode of HT, each key can have at most one match. This is
@@ -456,9 +429,6 @@ rte_member_lookup_multi(const struct rte_member_setsum *setsum,
 		member_set_t *set_id);
 
 /**
- * @warning
- * @b EXPERIMENTAL: this API may change without prior notice
- *
  * Lookup a bulk of keys in set-summary (SS) for multiple matches each key.
  * Each key lookup will find all matched entries (multiple match).
  * Note that for cache mode HT, each key can have at most one match. So
@@ -489,9 +459,6 @@ rte_member_lookup_multi_bulk(const struct rte_member_setsum *setsum,
 		member_set_t *set_ids);
 
 /**
- * @warning
- * @b EXPERIMENTAL: this API may change without prior notice
- *
  * Insert key into set-summary (SS).
  *
  * @param setsum
@@ -522,9 +489,6 @@ rte_member_add(const struct rte_member_setsum *setsum, const void *key,
 			member_set_t set_id);
 
 /**
- * @warning
- * @b EXPERIMENTAL: this API may change without prior notice
- *
  * Add the packet byte size into the sketch.
  *
  * @param setsum
@@ -536,15 +500,11 @@ rte_member_add(const struct rte_member_setsum *setsum, const void *key,
  * @return
  * Return -EINVAL for invalid parameters, otherwise return 0.
  */
-__rte_experimental
 int
 rte_member_add_byte_count(const struct rte_member_setsum *setsum,
 			  const void *key, uint32_t byte_count);
 
 /**
- * @warning
- * @b EXPERIMENTAL: this API may change without prior notice
- *
  * Query packet count for a certain flow-key.
  *
  * @param setsum
@@ -556,16 +516,12 @@ rte_member_add_byte_count(const struct rte_member_setsum *setsum,
  * @return
  *   Return -EINVAL for invalid parameters.
  */
-__rte_experimental
 int
 rte_member_query_count(const struct rte_member_setsum *setsum,
 		       const void *key, uint64_t *count);
 
 
 /**
- * @warning
- * @b EXPERIMENTAL: this API may change without prior notice
- *
  * Report heavyhitter flow-keys into set-summary (SS).
  *
  * @param setsum
@@ -578,16 +534,12 @@ rte_member_query_count(const struct rte_member_setsum *setsum,
  *   Return -EINVAL for invalid parameters. Return a positive integer indicate
  *   how many heavy hitters are reported.
  */
-__rte_experimental
 int
 rte_member_report_heavyhitter(const struct rte_member_setsum *setsum,
 			      void **keys, uint64_t *counts);
 
 
 /**
- * @warning
- * @b EXPERIMENTAL: this API may change without prior notice
- *
  * De-allocate memory used by set-summary.
  *
  * @param setsum
@@ -598,9 +550,6 @@ void
 rte_member_free(struct rte_member_setsum *setsum);
 
 /**
- * @warning
- * @b EXPERIMENTAL: this API may change without prior notice
- *
  * Reset the set-summary tables. E.g. reset bits to be 0 in BF,
  * reset set_id in each entry to be RTE_MEMBER_NO_MATCH in HT based SS.
  *
@@ -611,9 +560,6 @@ void
 rte_member_reset(const struct rte_member_setsum *setsum);
 
 /**
- * @warning
- * @b EXPERIMENTAL: this API may change without prior notice
- *
  * Delete items from the set-summary. Note that vBF does not support deletion
  * in current implementation. For vBF, error code of -EINVAL will be returned.
  *
diff --git a/lib/member/version.map b/lib/member/version.map
index 9be5068d68fb..3aeba8826ba1 100644
--- a/lib/member/version.map
+++ b/lib/member/version.map
@@ -2,6 +2,7 @@ DPDK_24 {
 	global:
 
 	rte_member_add;
+	rte_member_add_byte_count;
 	rte_member_create;
 	rte_member_delete;
 	rte_member_find_existing;
@@ -10,16 +11,9 @@ DPDK_24 {
 	rte_member_lookup_bulk;
 	rte_member_lookup_multi;
 	rte_member_lookup_multi_bulk;
+	rte_member_query_count;
+	rte_member_report_heavyhitter;
 	rte_member_reset;
 
 	local: *;
 };
-
-EXPERIMENTAL {
-	global:
-
-	# added in 22.11
-	rte_member_add_byte_count;
-	rte_member_query_count;
-	rte_member_report_heavyhitter;
-};
-- 
2.39.2


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

* [PATCH 20/20] security: remove experimental flag
  2023-08-08 17:35 [PATCH 00/20] remove experimental flag from some API's Stephen Hemminger
                   ` (18 preceding siblings ...)
  2023-08-08 17:35 ` [PATCH 19/20] member: remove experimental tag Stephen Hemminger
@ 2023-08-08 17:35 ` Stephen Hemminger
  2023-08-08 18:19 ` [PATCH 00/20] remove experimental flag from some API's Tyler Retzlaff
                   ` (7 subsequent siblings)
  27 siblings, 0 replies; 219+ messages in thread
From: Stephen Hemminger @ 2023-08-08 17:35 UTC (permalink / raw)
  To: dev; +Cc: Stephen Hemminger, Akhil Goyal

The rte_security API's were last updated in 22.11.
Therefore remove the experimental tag.

Signed-off-by: Stephen Hemminger <stephen@networkplumber.org>
---
 lib/security/rte_security.h | 35 -----------------------------------
 lib/security/version.map    | 17 ++++++-----------
 2 files changed, 6 insertions(+), 46 deletions(-)

diff --git a/lib/security/rte_security.h b/lib/security/rte_security.h
index 3b2df526ba35..f70fc601a2a3 100644
--- a/lib/security/rte_security.h
+++ b/lib/security/rte_security.h
@@ -703,7 +703,6 @@ rte_security_session_create(struct rte_security_ctx *instance,
  *  - On success returns 0
  *  - On failure returns a negative errno value.
  */
-__rte_experimental
 int
 rte_security_session_update(struct rte_security_ctx *instance,
 			    void *sess,
@@ -739,9 +738,6 @@ int
 rte_security_session_destroy(struct rte_security_ctx *instance, void *sess);
 
 /**
- * @warning
- * @b EXPERIMENTAL: this API may change without prior notice
- *
  * Create MACsec security channel (SC).
  *
  * @param   instance	security instance
@@ -753,15 +749,11 @@ rte_security_session_destroy(struct rte_security_ctx *instance, void *sess);
  *  - -ENOMEM if PMD is not capable to create more SC.
  *  - other negative value for other errors.
  */
-__rte_experimental
 int
 rte_security_macsec_sc_create(struct rte_security_ctx *instance,
 			      struct rte_security_macsec_sc *conf);
 
 /**
- * @warning
- * @b EXPERIMENTAL: this API may change without prior notice
- *
  * Destroy MACsec security channel (SC).
  *
  * @param   instance	security instance
@@ -772,15 +764,11 @@ rte_security_macsec_sc_create(struct rte_security_ctx *instance,
  *  - -EINVAL if sc_id is invalid or instance is NULL.
  *  - -EBUSY if sc is being used by some session.
  */
-__rte_experimental
 int
 rte_security_macsec_sc_destroy(struct rte_security_ctx *instance, uint16_t sc_id,
 			       enum rte_security_macsec_direction dir);
 
 /**
- * @warning
- * @b EXPERIMENTAL: this API may change without prior notice
- *
  * Create MACsec security association (SA).
  *
  * @param   instance	security instance
@@ -792,15 +780,11 @@ rte_security_macsec_sc_destroy(struct rte_security_ctx *instance, uint16_t sc_id
  *  - -ENOMEM if PMD is not capable to create more SAs.
  *  - other negative value for other errors.
  */
-__rte_experimental
 int
 rte_security_macsec_sa_create(struct rte_security_ctx *instance,
 			      struct rte_security_macsec_sa *conf);
 
 /**
- * @warning
- * @b EXPERIMENTAL: this API may change without prior notice
- *
  * Destroy MACsec security association (SA).
  *
  * @param   instance	security instance
@@ -811,7 +795,6 @@ rte_security_macsec_sa_create(struct rte_security_ctx *instance,
  *  - -EINVAL if sa_id is invalid or instance is NULL.
  *  - -EBUSY if sa is being used by some session.
  */
-__rte_experimental
 int
 rte_security_macsec_sa_destroy(struct rte_security_ctx *instance, uint16_t sa_id,
 			       enum rte_security_macsec_direction dir);
@@ -822,9 +805,6 @@ typedef uint64_t rte_security_dynfield_t;
 extern int rte_security_dynfield_offset;
 
 /**
- * @warning
- * @b EXPERIMENTAL: this API may change without prior notice
- *
  * Get pointer to mbuf field for device-specific metadata.
  *
  * For performance reason, no check is done,
@@ -834,7 +814,6 @@ extern int rte_security_dynfield_offset;
  * @param	mbuf	packet to access
  * @return pointer to mbuf field
  */
-__rte_experimental
 static inline rte_security_dynfield_t *
 rte_security_dynfield(struct rte_mbuf *mbuf)
 {
@@ -844,14 +823,10 @@ rte_security_dynfield(struct rte_mbuf *mbuf)
 }
 
 /**
- * @warning
- * @b EXPERIMENTAL: this API may change without prior notice
- *
  * Check whether the dynamic field is registered.
  *
  * @return true if rte_security_dynfield_register() has been called.
  */
-__rte_experimental
 static inline bool rte_security_dynfield_is_registered(void)
 {
 	return rte_security_dynfield_offset >= 0;
@@ -900,7 +875,6 @@ rte_security_session_fast_mdata_set(void *sess, uint64_t fdata)
 }
 
 /** Function to call PMD specific function pointer set_pkt_metadata() */
-__rte_experimental
 int __rte_security_set_pkt_metadata(struct rte_security_ctx *instance,
 				    void *sess,
 				    struct rte_mbuf *m, void *params);
@@ -1072,16 +1046,12 @@ struct rte_security_stats {
  *  - On success, return 0
  *  - On failure, a negative value
  */
-__rte_experimental
 int
 rte_security_session_stats_get(struct rte_security_ctx *instance,
 			       void *sess,
 			       struct rte_security_stats *stats);
 
 /**
- * @warning
- * @b EXPERIMENTAL: this API may change without prior notice
- *
  * Get MACsec SA statistics.
  *
  * @param	instance	security instance
@@ -1092,16 +1062,12 @@ rte_security_session_stats_get(struct rte_security_ctx *instance,
  *  - On success, return 0.
  *  - On failure, a negative value.
  */
-__rte_experimental
 int
 rte_security_macsec_sa_stats_get(struct rte_security_ctx *instance,
 				 uint16_t sa_id, enum rte_security_macsec_direction dir,
 				 struct rte_security_macsec_sa_stats *stats);
 
 /**
- * @warning
- * @b EXPERIMENTAL: this API may change without prior notice
- *
  * Get MACsec SC statistics.
  *
  * @param	instance	security instance
@@ -1112,7 +1078,6 @@ rte_security_macsec_sa_stats_get(struct rte_security_ctx *instance,
  *  - On success, return 0.
  *  - On failure, a negative value.
  */
-__rte_experimental
 int
 rte_security_macsec_sc_stats_get(struct rte_security_ctx *instance,
 				 uint16_t sc_id, enum rte_security_macsec_direction dir,
diff --git a/lib/security/version.map b/lib/security/version.map
index b2097a969d1c..06eceb5c0558 100644
--- a/lib/security/version.map
+++ b/lib/security/version.map
@@ -1,19 +1,9 @@
 DPDK_24 {
 	global:
 
+	__rte_security_set_pkt_metadata;
 	rte_security_capabilities_get;
 	rte_security_capability_get;
-	rte_security_session_create;
-	rte_security_session_destroy;
-	rte_security_session_get_size;
-
-	local: *;
-};
-
-EXPERIMENTAL {
-	global:
-
-	__rte_security_set_pkt_metadata;
 	rte_security_dynfield_offset;
 	rte_security_macsec_sa_create;
 	rte_security_macsec_sa_destroy;
@@ -21,8 +11,13 @@ EXPERIMENTAL {
 	rte_security_macsec_sc_create;
 	rte_security_macsec_sc_destroy;
 	rte_security_macsec_sc_stats_get;
+	rte_security_session_create;
+	rte_security_session_destroy;
+	rte_security_session_get_size;
 	rte_security_session_stats_get;
 	rte_security_session_update;
+
+	local: *;
 };
 
 INTERNAL {
-- 
2.39.2


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

* Re: [PATCH 00/20] remove experimental flag from some API's
  2023-08-08 17:35 [PATCH 00/20] remove experimental flag from some API's Stephen Hemminger
                   ` (19 preceding siblings ...)
  2023-08-08 17:35 ` [PATCH 20/20] security: remove experimental flag Stephen Hemminger
@ 2023-08-08 18:19 ` Tyler Retzlaff
  2023-08-08 21:33   ` Stephen Hemminger
  2023-08-09  0:09 ` [PATCH v2 00/29] promote many API's to stable Stephen Hemminger
                   ` (6 subsequent siblings)
  27 siblings, 1 reply; 219+ messages in thread
From: Tyler Retzlaff @ 2023-08-08 18:19 UTC (permalink / raw)
  To: Stephen Hemminger; +Cc: dev

On Tue, Aug 08, 2023 at 10:35:07AM -0700, Stephen Hemminger wrote:
> Since 23.11 is an LTS release it is time to remove the experimental
> bandaid off many API's. There are about 850 API's marked with experimental
> on current main branch. This addresses the easy to remove ones and
> gets it down to about 690 places.
> 
> The rule is any API that has been in since 22.11 needs to have
> experimental removed (or deleted). The experimental flag is not a
> "get out of ABI stability for free" card.

For the libraries here that are enabled for Windows are the APIs being
marked stable have real implementations or just stubs on Windows?

If they are just stubs then i think more review is necessary for the
stubbed APIs to understand that they *can* be implemented on Windows.

I would prefer not to have to encounter this later and have to go
through the overhead of deprecation like with rte_thread_ctrl_create
again.

This obviously doesn't apply to libraries that are not currently enabled
for Windows.  If the implementations aren't stubs then that's okay too.

Ty

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

* Re: [PATCH 00/20] remove experimental flag from some API's
  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
  0 siblings, 1 reply; 219+ messages in thread
From: Stephen Hemminger @ 2023-08-08 21:33 UTC (permalink / raw)
  To: Tyler Retzlaff; +Cc: dev

On Tue, 8 Aug 2023 11:19:12 -0700
Tyler Retzlaff <roretzla@linux.microsoft.com> wrote:

> On Tue, Aug 08, 2023 at 10:35:07AM -0700, Stephen Hemminger wrote:
> > Since 23.11 is an LTS release it is time to remove the experimental
> > bandaid off many API's. There are about 850 API's marked with experimental
> > on current main branch. This addresses the easy to remove ones and
> > gets it down to about 690 places.
> > 
> > The rule is any API that has been in since 22.11 needs to have
> > experimental removed (or deleted). The experimental flag is not a
> > "get out of ABI stability for free" card.  
> 
> For the libraries here that are enabled for Windows are the APIs being
> marked stable have real implementations or just stubs on Windows?
> 
> If they are just stubs then i think more review is necessary for the
> stubbed APIs to understand that they *can* be implemented on Windows.
> 
> I would prefer not to have to encounter this later and have to go
> through the overhead of deprecation like with rte_thread_ctrl_create
> again.
> 
> This obviously doesn't apply to libraries that are not currently enabled
> for Windows.  If the implementations aren't stubs then that's okay too.

I don't see any stubs when looking.

bpf: not built on Windows. Needs some libelf.
pdump: not built on Windows. Needs bpf for filtering
rte_tm: ok
rte_mtr: ok
cmdline: ok
pcapng: ok
net: ok
rcu: ok
lpm: ok
mbuf: ok
hash: ok
timer: ok
dmadev: ok
meter: ok
power: not on windows, probably need special API's
kvargs: ok
ip_frag: ok
member: not build on windows, not sure why
security: ok
vhost: not build on windows, not sure why
regexdev: not build on windows, not sure why
node: not build on windows, not sure why

Changes to eal need to be more selective.




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

* RE: [PATCH 08/20] rcu: remove experimental from rte_rcu_qbsr
  2023-08-08 17:35 ` [PATCH 08/20] rcu: remove experimental from rte_rcu_qbsr Stephen Hemminger
@ 2023-08-08 21:42   ` Honnappa Nagarahalli
  0 siblings, 0 replies; 219+ messages in thread
From: Honnappa Nagarahalli @ 2023-08-08 21:42 UTC (permalink / raw)
  To: Stephen Hemminger, dev; +Cc: nd, nd



> -----Original Message-----
> From: Stephen Hemminger <stephen@networkplumber.org>
> Sent: Tuesday, August 8, 2023 12:35 PM
> To: dev@dpdk.org
> Cc: Stephen Hemminger <stephen@networkplumber.org>; Honnappa
> Nagarahalli <Honnappa.Nagarahalli@arm.com>
> Subject: [PATCH 08/20] rcu: remove experimental from rte_rcu_qbsr
> 
> These functions were added back in 2020.
> Remove experimental flag.
> 
> Signed-off-by: Stephen Hemminger <stephen@networkplumber.org>
Reviewed-by: Honnappa Nagarahalli <honnappa.nagarahalli@arm.com>

> ---
>  lib/rcu/rte_rcu_qsbr.h | 20 --------------------
>  lib/rcu/version.map    | 15 ++++-----------
>  2 files changed, 4 insertions(+), 31 deletions(-)
> 
> diff --git a/lib/rcu/rte_rcu_qsbr.h b/lib/rcu/rte_rcu_qsbr.h index
> 87e1b55153b5..74ef41e0fac1 100644
> --- a/lib/rcu/rte_rcu_qsbr.h
> +++ b/lib/rcu/rte_rcu_qsbr.h
> @@ -10,10 +10,6 @@
>   *
>   * RTE Quiescent State Based Reclamation (QSBR).
>   *
> - * @warning
> - * @b EXPERIMENTAL:
> - * All functions in this file may be changed or removed without prior notice.
> - *
>   * Quiescent State (QS) is any point in the thread execution
>   * where the thread does not hold a reference to a data structure
>   * in shared memory. While using lock-less data structures, the writer @@ -
> 727,9 +723,6 @@ int  rte_rcu_qsbr_dump(FILE *f, struct rte_rcu_qsbr *v);
> 
>  /**
> - * @warning
> - * @b EXPERIMENTAL: this API may change without prior notice
> - *
>   * Create a queue used to store the data structure elements that can
>   * be freed later. This queue is referred to as 'defer queue'.
>   *
> @@ -742,14 +735,10 @@ rte_rcu_qsbr_dump(FILE *f, struct rte_rcu_qsbr
> *v);
>   *   - EINVAL - NULL parameters are passed
>   *   - ENOMEM - Not enough memory
>   */
> -__rte_experimental
>  struct rte_rcu_qsbr_dq *
>  rte_rcu_qsbr_dq_create(const struct rte_rcu_qsbr_dq_parameters *params);
> 
>  /**
> - * @warning
> - * @b EXPERIMENTAL: this API may change without prior notice
> - *
>   * Enqueue one resource to the defer queue and start the grace period.
>   * The resource will be freed later after at least one grace period
>   * is over.
> @@ -777,14 +766,10 @@ rte_rcu_qsbr_dq_create(const struct
> rte_rcu_qsbr_dq_parameters *params);
>   *		if the defer queue size is equal (or larger) than the
>   *		number of elements in the data structure.
>   */
> -__rte_experimental
>  int
>  rte_rcu_qsbr_dq_enqueue(struct rte_rcu_qsbr_dq *dq, void *e);
> 
>  /**
> - * @warning
> - * @b EXPERIMENTAL: this API may change without prior notice
> - *
>   * Free resources from the defer queue.
>   *
>   * This API is multi-thread safe.
> @@ -806,15 +791,11 @@ rte_rcu_qsbr_dq_enqueue(struct rte_rcu_qsbr_dq
> *dq, void *e);
>   *   On error - 1 with rte_errno set to
>   *   - EINVAL - NULL parameters are passed
>   */
> -__rte_experimental
>  int
>  rte_rcu_qsbr_dq_reclaim(struct rte_rcu_qsbr_dq *dq, unsigned int n,
>  	unsigned int *freed, unsigned int *pending, unsigned int *available);
> 
>  /**
> - * @warning
> - * @b EXPERIMENTAL: this API may change without prior notice
> - *
>   * Delete a defer queue.
>   *
>   * It tries to reclaim all the resources on the defer queue.
> @@ -832,7 +813,6 @@ rte_rcu_qsbr_dq_reclaim(struct rte_rcu_qsbr_dq *dq,
> unsigned int n,
>   *   - EAGAIN - Some of the resources have not completed at least 1 grace
>   *		period, try again.
>   */
> -__rte_experimental
>  int
>  rte_rcu_qsbr_dq_delete(struct rte_rcu_qsbr_dq *dq);
> 
> diff --git a/lib/rcu/version.map b/lib/rcu/version.map index
> 9218ed1f3399..982ffd59d9cd 100644
> --- a/lib/rcu/version.map
> +++ b/lib/rcu/version.map
> @@ -2,6 +2,10 @@ DPDK_24 {
>  	global:
> 
>  	rte_rcu_log_type;
> +	rte_rcu_qsbr_dq_create;
> +	rte_rcu_qsbr_dq_delete;
> +	rte_rcu_qsbr_dq_enqueue;
> +	rte_rcu_qsbr_dq_reclaim;
>  	rte_rcu_qsbr_dump;
>  	rte_rcu_qsbr_get_memsize;
>  	rte_rcu_qsbr_init;
> @@ -11,14 +15,3 @@ DPDK_24 {
> 
>  	local: *;
>  };
> -
> -EXPERIMENTAL {
> -	global:
> -
> -	rte_rcu_qsbr_dq_create;
> -	rte_rcu_qsbr_dq_enqueue;
> -	rte_rcu_qsbr_dq_reclaim;
> -	rte_rcu_qsbr_dq_delete;
> -
> -	local: *;
> -};
> --
> 2.39.2


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

* Re: [PATCH 00/20] remove experimental flag from some API's
  2023-08-08 21:33   ` Stephen Hemminger
@ 2023-08-08 23:23     ` Tyler Retzlaff
  2023-08-09 15:34       ` Stephen Hemminger
  0 siblings, 1 reply; 219+ messages in thread
From: Tyler Retzlaff @ 2023-08-08 23:23 UTC (permalink / raw)
  To: Stephen Hemminger; +Cc: dev

On Tue, Aug 08, 2023 at 02:33:52PM -0700, Stephen Hemminger wrote:
> On Tue, 8 Aug 2023 11:19:12 -0700
> Tyler Retzlaff <roretzla@linux.microsoft.com> wrote:
> 
> > On Tue, Aug 08, 2023 at 10:35:07AM -0700, Stephen Hemminger wrote:
> > > Since 23.11 is an LTS release it is time to remove the experimental
> > > bandaid off many API's. There are about 850 API's marked with experimental
> > > on current main branch. This addresses the easy to remove ones and
> > > gets it down to about 690 places.
> > > 
> > > The rule is any API that has been in since 22.11 needs to have
> > > experimental removed (or deleted). The experimental flag is not a
> > > "get out of ABI stability for free" card.  
> > 
> > For the libraries here that are enabled for Windows are the APIs being
> > marked stable have real implementations or just stubs on Windows?
> > 
> > If they are just stubs then i think more review is necessary for the
> > stubbed APIs to understand that they *can* be implemented on Windows.
> > 
> > I would prefer not to have to encounter this later and have to go
> > through the overhead of deprecation like with rte_thread_ctrl_create
> > again.
> > 
> > This obviously doesn't apply to libraries that are not currently enabled
> > for Windows.  If the implementations aren't stubs then that's okay too.
> 
> I don't see any stubs when looking.
> 
> bpf: not built on Windows. Needs some libelf.
> pdump: not built on Windows. Needs bpf for filtering
> rte_tm: ok
> rte_mtr: ok
> cmdline: ok
> pcapng: ok
> net: ok
> rcu: ok
> lpm: ok
> mbuf: ok
> hash: ok
> timer: ok
> dmadev: ok
> meter: ok
> power: not on windows, probably need special API's
> kvargs: ok
> ip_frag: ok
> member: not build on windows, not sure why
> security: ok
> vhost: not build on windows, not sure why
> regexdev: not build on windows, not sure why
> node: not build on windows, not sure why
> 
> Changes to eal need to be more selective.

Thanks Stephen I appreciate you checking it out it helps a lot.

Series-acked-by: Tyler Retzlaff <roretzla@linux.microsoft.com>

> 
> 

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

* [PATCH v2 00/29] promote many API's to stable
  2023-08-08 17:35 [PATCH 00/20] remove experimental flag from some API's Stephen Hemminger
                   ` (20 preceding siblings ...)
  2023-08-08 18:19 ` [PATCH 00/20] remove experimental flag from some API's Tyler Retzlaff
@ 2023-08-09  0:09 ` 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
                     ` (29 more replies)
  2023-10-19 16:55 ` [PATCH v3 00/29] Promote experimental " Stephen Hemminger
                   ` (5 subsequent siblings)
  27 siblings, 30 replies; 219+ messages in thread
From: Stephen Hemminger @ 2023-08-09  0:09 UTC (permalink / raw)
  To: dev; +Cc: Stephen Hemminger

Since 23.11 is an LTS release it is time to remove the experimental
bandaid off many API's. There are about 850 API's marked with experimental
on current main branch. This addresses the easy to remove ones and
gets it down to about 690 places.

The rule is any API that has been in since 22.11 needs to have
experimental removed (or deleted). The experimental flag is 
intended to be temporary not a "get out of ABI stability for free" card.

v2 - add more libraries to the mix
   - remove EXPERIMENTAL where tagged in MAINTAINERS

Stephen Hemminger (29):
  bpf: make rte_bpf_dump and rte_bpf_convert stable API's
  cmdline: make experimental API's stable
  ethdev: mark rte_mtr API's as stable
  ethdev: mark rte_tm API's as stable
  pdump: make API's stable
  pcapng: mark API's as stable
  net: remove experimental from functions
  rcu: remove experimental from rte_rcu_qbsr
  lpm: remove experimental
  mbuf: remove experimental from create_extbuf
  hash: remove experimental from toeplitz hash
  timer: remove experimental from rte_timer_next_ticks
  sched: remove experimental
  dmadev: mark API's as not experimental
  meter: remove experimental warning from comments
  power: remove experimental from API's
  kvargs: remove experimental flag
  ip_frag: mark a couple of functions stable
  member: remove experimental tag
  security: remove experimental flag
  vhost: remove experimental from some API's
  bbdev: remove experimental tag
  ipsec: remove experimental from SA API
  compressdev: remove experimental flag
  regexdev: remove experimental tag
  node: remove experimental tag
  cryptodev: remove experimental from more API's
  table: remove experimental from API
  port: make API's stable

 MAINTAINERS                           |  10 +-
 doc/guides/rel_notes/deprecation.rst  |   6 --
 lib/bbdev/rte_bbdev.h                 |   4 -
 lib/bbdev/rte_bbdev_op.h              |   2 -
 lib/bbdev/version.map                 |  18 ++--
 lib/bpf/rte_bpf.h                     |   2 -
 lib/bpf/version.map                   |   9 +-
 lib/cmdline/cmdline.h                 |   1 -
 lib/cmdline/cmdline_parse.h           |   4 -
 lib/cmdline/cmdline_rdline.h          |   4 -
 lib/cmdline/version.map               |  26 ++---
 lib/compressdev/rte_comp.h            |   6 --
 lib/compressdev/rte_compressdev.h     |  26 -----
 lib/compressdev/rte_compressdev_pmd.h |   6 --
 lib/compressdev/version.map           |   2 +-
 lib/cryptodev/rte_crypto_sym.h        |   1 -
 lib/cryptodev/rte_cryptodev.h         |  32 ------
 lib/cryptodev/version.map             |  77 ++++++--------
 lib/dmadev/rte_dmadev.h               |  85 ----------------
 lib/dmadev/version.map                |   2 +-
 lib/ethdev/rte_mtr.h                  |  25 +----
 lib/ethdev/rte_tm.h                   |  34 -------
 lib/ethdev/version.map                |  88 ++++++++--------
 lib/hash/rte_thash.h                  |  44 --------
 lib/hash/rte_thash_gfni.h             |   8 --
 lib/hash/rte_thash_x86_gfni.h         |   8 --
 lib/hash/version.map                  |  16 +--
 lib/ip_frag/rte_ip_frag.h             |   2 -
 lib/ip_frag/version.map               |   9 +-
 lib/ipsec/rte_ipsec.h                 |   2 -
 lib/ipsec/version.map                 |   9 +-
 lib/kvargs/rte_kvargs.h               |   4 -
 lib/kvargs/version.map                |   8 +-
 lib/lpm/rte_lpm.h                     |   4 -
 lib/lpm/version.map                   |   7 +-
 lib/mbuf/rte_mbuf.h                   |   1 -
 lib/mbuf/version.map                  |   8 +-
 lib/member/rte_member.h               |  54 ----------
 lib/member/version.map                |  12 +--
 lib/meter/rte_meter.h                 |  12 ---
 lib/net/rte_ip.h                      |  19 ----
 lib/node/rte_node_eth_api.h           |   5 -
 lib/node/rte_node_ip4_api.h           |   6 --
 lib/node/rte_node_ip6_api.h           |   6 --
 lib/node/version.map                  |   2 +-
 lib/pcapng/rte_pcapng.h               |  11 --
 lib/pcapng/version.map                |   6 +-
 lib/pdump/rte_pdump.h                 |  12 ---
 lib/pdump/version.map                 |  11 +-
 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 ++---
 lib/power/rte_power.h                 |   4 -
 lib/power/rte_power_guest_channel.h   |   4 -
 lib/power/rte_power_intel_uncore.h    |   9 --
 lib/power/rte_power_pmd_mgmt.h        |  40 --------
 lib/power/version.map                 |  33 ++----
 lib/rcu/rte_rcu_qsbr.h                |  20 ----
 lib/rcu/version.map                   |  15 +--
 lib/regexdev/rte_regexdev.h           |  92 -----------------
 lib/regexdev/version.map              |   2 +-
 lib/sched/rte_pie.h                   |   8 --
 lib/sched/rte_sched.h                 |   5 -
 lib/sched/version.map                 |  18 +---
 lib/security/rte_security.h           |  35 -------
 lib/security/version.map              |  17 ++--
 lib/table/rte_swx_table_learner.h     |  10 --
 lib/table/rte_swx_table_selector.h    |   6 --
 lib/table/rte_table_hash_func.h       |   9 --
 lib/table/version.map                 |  18 +---
 lib/timer/rte_timer.h                 |   4 -
 lib/timer/version.map                 |   7 +-
 lib/vhost/rte_vhost.h                 |   5 -
 lib/vhost/rte_vhost_async.h           |  19 ----
 lib/vhost/rte_vhost_crypto.h          |   1 -
 lib/vhost/version.map                 |  51 ++++------
 79 files changed, 234 insertions(+), 1228 deletions(-)

-- 
2.39.2


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

* [PATCH v2 01/29] bpf: make rte_bpf_dump and rte_bpf_convert stable API's
  2023-08-09  0:09 ` [PATCH v2 00/29] promote many API's to stable Stephen Hemminger
@ 2023-08-09  0:09   ` 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
                     ` (28 subsequent siblings)
  29 siblings, 1 reply; 219+ messages in thread
From: Stephen Hemminger @ 2023-08-09  0:09 UTC (permalink / raw)
  To: dev; +Cc: Stephen Hemminger, Konstantin Ananyev

These two API's were introduced in 23.11 and can now be
made not experimental.

Signed-off-by: Stephen Hemminger <stephen@networkplumber.org>
---
 lib/bpf/rte_bpf.h   | 2 --
 lib/bpf/version.map | 9 ++-------
 2 files changed, 2 insertions(+), 9 deletions(-)

diff --git a/lib/bpf/rte_bpf.h b/lib/bpf/rte_bpf.h
index 4d71120dbd9d..f70d8dacd0d3 100644
--- a/lib/bpf/rte_bpf.h
+++ b/lib/bpf/rte_bpf.h
@@ -209,7 +209,6 @@ rte_bpf_get_jit(const struct rte_bpf *bpf, struct rte_bpf_jit *jit);
  * @param len
  *   Number of BPF instructions to dump.
  */
-__rte_experimental
 void
 rte_bpf_dump(FILE *f, const struct ebpf_insn *buf, uint32_t len);
 
@@ -229,7 +228,6 @@ struct bpf_program;
  *   - ENOMEM - can't reserve enough memory
  *   - ENOTSUP - operation not supported
  */
-__rte_experimental
 struct rte_bpf_prm *
 rte_bpf_convert(const struct bpf_program *prog);
 
diff --git a/lib/bpf/version.map b/lib/bpf/version.map
index c49bf1701f0a..2e957494e9df 100644
--- a/lib/bpf/version.map
+++ b/lib/bpf/version.map
@@ -1,7 +1,9 @@
 DPDK_24 {
 	global:
 
+	rte_bpf_convert;
 	rte_bpf_destroy;
+	rte_bpf_dump;
 	rte_bpf_elf_load;
 	rte_bpf_eth_rx_elf_load;
 	rte_bpf_eth_rx_unload;
@@ -14,10 +16,3 @@ DPDK_24 {
 
 	local: *;
 };
-
-EXPERIMENTAL {
-	global:
-
-	rte_bpf_convert;
-	rte_bpf_dump;
-};
-- 
2.39.2


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

* [PATCH v2 02/29] cmdline: make experimental API's stable
  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-08-09  0:09   ` 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
                     ` (27 subsequent siblings)
  29 siblings, 1 reply; 219+ messages in thread
From: Stephen Hemminger @ 2023-08-09  0:09 UTC (permalink / raw)
  To: dev; +Cc: Stephen Hemminger, Olivier Matz

These API's have all ben around for several releases.

Signed-off-by: Stephen Hemminger <stephen@networkplumber.org>
---
 lib/cmdline/cmdline.h        |  1 -
 lib/cmdline/cmdline_parse.h  |  4 ----
 lib/cmdline/cmdline_rdline.h |  4 ----
 lib/cmdline/version.map      | 26 ++++++++------------------
 4 files changed, 8 insertions(+), 27 deletions(-)

diff --git a/lib/cmdline/cmdline.h b/lib/cmdline/cmdline.h
index d631cd4bd459..c41b0ca0b80e 100644
--- a/lib/cmdline/cmdline.h
+++ b/lib/cmdline/cmdline.h
@@ -39,7 +39,6 @@ void cmdline_printf(const struct cmdline *cl, const char *fmt, ...)
 int cmdline_in(struct cmdline *cl, const char *buf, int size);
 int cmdline_write_char(struct rdline *rdl, char c);
 
-__rte_experimental
 struct rdline *
 cmdline_get_rdline(struct cmdline *cl);
 
diff --git a/lib/cmdline/cmdline_parse.h b/lib/cmdline/cmdline_parse.h
index a852ac411c59..41b4db1f76f9 100644
--- a/lib/cmdline/cmdline_parse.h
+++ b/lib/cmdline/cmdline_parse.h
@@ -155,9 +155,6 @@ typedef cmdline_parse_inst_t *cmdline_parse_ctx_t;
 int cmdline_parse(struct cmdline *cl, const char *buf);
 
 /**
- * @warning
- * @b EXPERIMENTAL: this API may change without prior notice
- *
  * Try to parse a buffer according to the specified context, but do not
  * perform any function calls if parse is successful.
  *
@@ -166,7 +163,6 @@ int cmdline_parse(struct cmdline *cl, const char *buf);
  * CMDLINE_PARSE_BAD_ARGS on error and returns the parsed line length (>=0)
  * on successful parse.
  */
-__rte_experimental
 int cmdline_parse_check(struct cmdline *cl, const char *buf);
 
 /**
diff --git a/lib/cmdline/cmdline_rdline.h b/lib/cmdline/cmdline_rdline.h
index 1b4cc7ce5773..c6bb6bbbb36a 100644
--- a/lib/cmdline/cmdline_rdline.h
+++ b/lib/cmdline/cmdline_rdline.h
@@ -58,7 +58,6 @@ typedef int (rdline_complete_t)(struct rdline *rdl, const char *buf,
  *
  * \return New rdline object on success, NULL on failure.
  */
-__rte_experimental
 struct rdline *rdline_new(rdline_write_char_t *write_char,
 			  rdline_validate_t *validate,
 			  rdline_complete_t *complete,
@@ -70,7 +69,6 @@ struct rdline *rdline_new(rdline_write_char_t *write_char,
  * \param rdl A pointer to an initialized struct rdline.
  *            If NULL, this function is a no-op.
  */
-__rte_experimental
 void rdline_free(struct rdline *rdl);
 
 /**
@@ -163,13 +161,11 @@ char *rdline_get_history_item(struct rdline *rdl, unsigned int i);
 /**
  * Get maximum history buffer size.
  */
-__rte_experimental
 size_t rdline_get_history_buffer_size(struct rdline *rdl);
 
 /**
  * Get the opaque pointer supplied on struct rdline creation.
  */
-__rte_experimental
 void *rdline_get_opaque(struct rdline *rdl);
 
 #ifdef __cplusplus
diff --git a/lib/cmdline/version.map b/lib/cmdline/version.map
index db4d904ffbdb..4f87027e1774 100644
--- a/lib/cmdline/version.map
+++ b/lib/cmdline/version.map
@@ -30,11 +30,13 @@ DPDK_24 {
 	cmdline_get_help_num;
 	cmdline_get_help_portlist;
 	cmdline_get_help_string;
+	cmdline_get_rdline;
 	cmdline_in;
 	cmdline_interact;
 	cmdline_isendoftoken;
 	cmdline_new;
 	cmdline_parse;
+	cmdline_parse_check;
 	cmdline_parse_etheraddr;
 	cmdline_parse_ipaddr;
 	cmdline_parse_num;
@@ -52,37 +54,25 @@ DPDK_24 {
 	cmdline_token_portlist_ops;
 	cmdline_token_string_ops;
 	cmdline_write_char;
+
 	rdline_add_history;
 	rdline_char_in;
 	rdline_clear_history;
+	rdline_free;
 	rdline_get_buffer;
+	rdline_get_history_buffer_size;
 	rdline_get_history_item;
+	rdline_get_opaque;
+	rdline_new;
 	rdline_newline;
 	rdline_quit;
 	rdline_redisplay;
 	rdline_reset;
 	rdline_restart;
 	rdline_stop;
+
 	vt100_init;
 	vt100_parser;
 
 	local: *;
 };
-
-EXPERIMENTAL {
-	global:
-
-	# added in 20.11
-	cmdline_get_rdline;
-
-	# added in 21.11
-	rdline_new;
-	rdline_free;
-	rdline_get_history_buffer_size;
-	rdline_get_opaque;
-
-	# added in 22.07
-	cmdline_parse_check;
-
-	local: *;
-};
-- 
2.39.2


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

* [PATCH v2 03/29] ethdev: mark rte_mtr API's as stable
  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-08-09  0:09   ` [PATCH v2 02/29] cmdline: make experimental API's stable Stephen Hemminger
@ 2023-08-09  0:09   ` Stephen Hemminger
  2023-08-09  0:09   ` [PATCH v2 04/29] ethdev: mark rte_tm " Stephen Hemminger
                     ` (26 subsequent siblings)
  29 siblings, 0 replies; 219+ messages in thread
From: Stephen Hemminger @ 2023-08-09  0:09 UTC (permalink / raw)
  To: dev
  Cc: Stephen Hemminger, Thomas Monjalon, Cristian Dumitrescu,
	Ferruh Yigit, Andrew Rybchenko

These haven't changed in a while, time has come to make them
not experimental.

Signed-off-by: Stephen Hemminger <stephen@networkplumber.org>
---
 MAINTAINERS            |  2 +-
 lib/ethdev/rte_mtr.h   | 25 +------------------------
 lib/ethdev/version.map | 34 ++++++++++++++++------------------
 3 files changed, 18 insertions(+), 43 deletions(-)

diff --git a/MAINTAINERS b/MAINTAINERS
index 6345e7f8a65d..decba6b38a31 100644
--- a/MAINTAINERS
+++ b/MAINTAINERS
@@ -426,7 +426,7 @@ T: git://dpdk.org/next/dpdk-next-net
 F: lib/ethdev/rte_tm*
 F: app/test-pmd/cmdline_tm.*
 
-Traffic Metering and Policing API - EXPERIMENTAL
+Traffic Metering and Policing API
 M: Cristian Dumitrescu <cristian.dumitrescu@intel.com>
 T: git://dpdk.org/next/dpdk-next-net
 F: lib/ethdev/rte_mtr*
diff --git a/lib/ethdev/rte_mtr.h b/lib/ethdev/rte_mtr.h
index 7e6a66b938bf..ed498f36b179 100644
--- a/lib/ethdev/rte_mtr.h
+++ b/lib/ethdev/rte_mtr.h
@@ -41,10 +41,8 @@
  *    A) Whether an MTR object is private to a flow or potentially shared by
  *       several flows has to be specified at creation time.
  *    B) Several meter actions can be potentially registered for the same flow.
- *
- * @warning
- * @b EXPERIMENTAL: this API may change without prior notice
  */
+
 #include <stdint.h>
 #include <rte_compat.h>
 #include <rte_common.h>
@@ -570,7 +568,6 @@ struct rte_mtr_error {
  * @return
  *   0 on success, non-zero error code otherwise.
  */
-__rte_experimental
 int
 rte_mtr_capabilities_get(uint16_t port_id,
 	struct rte_mtr_capabilities *cap,
@@ -594,7 +591,6 @@ rte_mtr_capabilities_get(uint16_t port_id,
  * @return
  *   0 on success, non-zero error code otherwise.
  */
-__rte_experimental
 int
 rte_mtr_meter_profile_add(uint16_t port_id,
 	uint32_t meter_profile_id,
@@ -616,7 +612,6 @@ rte_mtr_meter_profile_add(uint16_t port_id,
  * @return
  *   0 on success, non-zero error code otherwise.
  */
-__rte_experimental
 int
 rte_mtr_meter_profile_delete(uint16_t port_id,
 	uint32_t meter_profile_id,
@@ -636,7 +631,6 @@ rte_mtr_meter_profile_delete(uint16_t port_id,
  * @return
  *   A valid handle in case of success, NULL otherwise.
  */
-__rte_experimental
 struct rte_flow_meter_profile *
 rte_mtr_meter_profile_get(uint16_t port_id,
 	uint32_t meter_profile_id,
@@ -664,7 +658,6 @@ rte_mtr_meter_profile_get(uint16_t port_id,
  * @return
  *   0 on success, non-zero error code otherwise.
  */
-__rte_experimental
 int
 rte_mtr_meter_policy_validate(uint16_t port_id,
 	struct rte_mtr_meter_policy_params *policy,
@@ -691,7 +684,6 @@ rte_mtr_meter_policy_validate(uint16_t port_id,
  * @return
  *   0 on success, non-zero error code otherwise.
  */
-__rte_experimental
 int
 rte_mtr_meter_policy_add(uint16_t port_id,
 	uint32_t policy_id,
@@ -712,7 +704,6 @@ rte_mtr_meter_policy_add(uint16_t port_id,
  * @return
  *   A valid handle in case of success, NULL otherwise.
  */
-__rte_experimental
 struct rte_flow_meter_policy *
 rte_mtr_meter_policy_get(uint16_t port_id,
 	uint32_t policy_id,
@@ -794,7 +785,6 @@ struct rte_mtr_meter_policy_params policy = \
  * @return
  *   0 on success, non-zero error code otherwise.
  */
-__rte_experimental
 int
 rte_mtr_meter_policy_delete(uint16_t port_id,
 	uint32_t policy_id,
@@ -823,7 +813,6 @@ rte_mtr_meter_policy_delete(uint16_t port_id,
  *
  * @see enum rte_flow_action_type::RTE_FLOW_ACTION_TYPE_METER
  */
-__rte_experimental
 int
 rte_mtr_create(uint16_t port_id,
 	uint32_t mtr_id,
@@ -847,7 +836,6 @@ rte_mtr_create(uint16_t port_id,
  * @return
  *   0 on success, non-zero error code otherwise.
  */
-__rte_experimental
 int
 rte_mtr_destroy(uint16_t port_id,
 	uint32_t mtr_id,
@@ -875,7 +863,6 @@ rte_mtr_destroy(uint16_t port_id,
  * @return
  *   0 on success, non-zero error code otherwise.
  */
-__rte_experimental
 int
 rte_mtr_meter_disable(uint16_t port_id,
 	uint32_t mtr_id,
@@ -897,7 +884,6 @@ rte_mtr_meter_disable(uint16_t port_id,
  * @return
  *   0 on success, non-zero error code otherwise.
  */
-__rte_experimental
 int
 rte_mtr_meter_enable(uint16_t port_id,
 	uint32_t mtr_id,
@@ -917,7 +903,6 @@ rte_mtr_meter_enable(uint16_t port_id,
  * @return
  *   0 on success, non-zero error code otherwise.
  */
-__rte_experimental
 int
 rte_mtr_meter_profile_update(uint16_t port_id,
 	uint32_t mtr_id,
@@ -938,7 +923,6 @@ rte_mtr_meter_profile_update(uint16_t port_id,
  * @return
  *   0 on success, non-zero error code otherwise.
  */
-__rte_experimental
 int
 rte_mtr_meter_policy_update(uint16_t port_id,
 	uint32_t mtr_id,
@@ -965,7 +949,6 @@ rte_mtr_meter_policy_update(uint16_t port_id,
  * @return
  *   0 on success, non-zero error code otherwise.
  */
-__rte_experimental
 int
 rte_mtr_meter_dscp_table_update(uint16_t port_id,
 	uint32_t mtr_id, enum rte_mtr_color_in_protocol proto,
@@ -992,7 +975,6 @@ rte_mtr_meter_dscp_table_update(uint16_t port_id,
  * @return
  *   0 on success, non-zero error code otherwise.
  */
-__rte_experimental
 int
 rte_mtr_meter_vlan_table_update(uint16_t port_id, uint32_t mtr_id,
 				enum rte_mtr_color_in_protocol proto,
@@ -1023,7 +1005,6 @@ rte_mtr_meter_vlan_table_update(uint16_t port_id, uint32_t mtr_id,
  * @return
  *   0 on success, non-zero error code otherwise.
  */
-__rte_experimental
 int
 rte_mtr_color_in_protocol_set(uint16_t port_id, uint32_t mtr_id,
 	enum rte_mtr_color_in_protocol proto, uint32_t priority,
@@ -1043,7 +1024,6 @@ rte_mtr_color_in_protocol_set(uint16_t port_id, uint32_t mtr_id,
  * @return
  *   0 on success, non-zero error code otherwise.
  */
-__rte_experimental
 int
 rte_mtr_color_in_protocol_get(uint16_t port_id, uint32_t mtr_id,
 	uint64_t *proto_mask,
@@ -1065,7 +1045,6 @@ rte_mtr_color_in_protocol_get(uint16_t port_id, uint32_t mtr_id,
  * @return
  *   0 on success, non-zero error code otherwise.
  */
-__rte_experimental
 int
 rte_mtr_color_in_protocol_priority_get(uint16_t port_id, uint32_t mtr_id,
 	enum rte_mtr_color_in_protocol proto, uint32_t *priority,
@@ -1089,7 +1068,6 @@ rte_mtr_color_in_protocol_priority_get(uint16_t port_id, uint32_t mtr_id,
  *
  * @see enum rte_mtr_stats_type
  */
-__rte_experimental
 int
 rte_mtr_stats_update(uint16_t port_id,
 	uint32_t mtr_id,
@@ -1121,7 +1099,6 @@ rte_mtr_stats_update(uint16_t port_id,
  *
  * @see enum rte_mtr_stats_type
  */
-__rte_experimental
 int
 rte_mtr_stats_read(uint16_t port_id,
 	uint32_t mtr_id,
diff --git a/lib/ethdev/version.map b/lib/ethdev/version.map
index b965d6aa5274..a275cce48164 100644
--- a/lib/ethdev/version.map
+++ b/lib/ethdev/version.map
@@ -135,26 +135,34 @@ DPDK_24 {
 	rte_flow_pick_transfer_proxy;
 	rte_flow_query;
 	rte_flow_validate;
-
-	local: *;
-};
-
-EXPERIMENTAL {
-	global:
-
-	# added in 17.11
 	rte_mtr_capabilities_get;
+	rte_mtr_color_in_protocol_get;
+	rte_mtr_color_in_protocol_priority_get;
+	rte_mtr_color_in_protocol_set;
 	rte_mtr_create;
 	rte_mtr_destroy;
 	rte_mtr_meter_disable;
 	rte_mtr_meter_dscp_table_update;
 	rte_mtr_meter_enable;
+	rte_mtr_meter_policy_add;
+	rte_mtr_meter_policy_delete;
+	rte_mtr_meter_policy_get;
+	rte_mtr_meter_policy_update;
+	rte_mtr_meter_policy_validate;
 	rte_mtr_meter_profile_add;
 	rte_mtr_meter_profile_delete;
+	rte_mtr_meter_profile_get;
 	rte_mtr_meter_profile_update;
+	rte_mtr_meter_vlan_table_update;
 	rte_mtr_stats_read;
 	rte_mtr_stats_update;
 
+	local: *;
+};
+
+EXPERIMENTAL {
+	global:
+
 	# added in 18.05
 	rte_eth_dev_get_module_eeprom;
 	rte_eth_dev_get_module_info;
@@ -237,10 +245,6 @@ EXPERIMENTAL {
 	rte_flow_action_handle_destroy;
 	rte_flow_action_handle_update;
 	rte_flow_action_handle_query;
-	rte_mtr_meter_policy_add;
-	rte_mtr_meter_policy_delete;
-	rte_mtr_meter_policy_update;
-	rte_mtr_meter_policy_validate;
 
 	# added in 21.11
 	rte_eth_dev_capability_name;
@@ -275,10 +279,6 @@ EXPERIMENTAL {
 	# added in 22.07
 	rte_eth_rx_avail_thresh_query;
 	rte_eth_rx_avail_thresh_set;
-	rte_mtr_color_in_protocol_get;
-	rte_mtr_color_in_protocol_priority_get;
-	rte_mtr_color_in_protocol_set;
-	rte_mtr_meter_vlan_table_update;
 
 	# added in 22.11
 	rte_eth_buffer_split_get_supported_hdr_ptypes;
@@ -290,8 +290,6 @@ EXPERIMENTAL {
 	rte_eth_tx_descriptor_dump;
 	rte_flow_async_action_handle_query;
 	rte_flow_get_q_aged_flows;
-	rte_mtr_meter_policy_get;
-	rte_mtr_meter_profile_get;
 
 	# added in 23.03
 	rte_eth_dev_count_aggr_ports;
-- 
2.39.2


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

* [PATCH v2 04/29] ethdev: mark rte_tm API's as stable
  2023-08-09  0:09 ` [PATCH v2 00/29] promote many API's to stable Stephen Hemminger
                     ` (2 preceding siblings ...)
  2023-08-09  0:09   ` [PATCH v2 03/29] ethdev: mark rte_mtr API's as stable Stephen Hemminger
@ 2023-08-09  0:09   ` Stephen Hemminger
  2023-08-09  0:09   ` [PATCH v2 05/29] pdump: make API's stable Stephen Hemminger
                     ` (25 subsequent siblings)
  29 siblings, 0 replies; 219+ messages in thread
From: Stephen Hemminger @ 2023-08-09  0:09 UTC (permalink / raw)
  To: dev
  Cc: Stephen Hemminger, Thomas Monjalon, Cristian Dumitrescu,
	Ferruh Yigit, Andrew Rybchenko

These API's have been around since 20.11, mark them as not
experimental.

Signed-off-by: Stephen Hemminger <stephen@networkplumber.org>
---
 MAINTAINERS            |  2 +-
 lib/ethdev/rte_tm.h    | 34 -----------------------
 lib/ethdev/version.map | 62 ++++++++++++++++++++----------------------
 3 files changed, 31 insertions(+), 67 deletions(-)

diff --git a/MAINTAINERS b/MAINTAINERS
index decba6b38a31..462223dd65d0 100644
--- a/MAINTAINERS
+++ b/MAINTAINERS
@@ -420,7 +420,7 @@ F: app/test-pmd/cmdline_flow.c
 F: doc/guides/prog_guide/rte_flow.rst
 F: lib/ethdev/rte_flow*
 
-Traffic Management API - EXPERIMENTAL
+Traffic Management API
 M: Cristian Dumitrescu <cristian.dumitrescu@intel.com>
 T: git://dpdk.org/next/dpdk-next-net
 F: lib/ethdev/rte_tm*
diff --git a/lib/ethdev/rte_tm.h b/lib/ethdev/rte_tm.h
index 4103c49a3f0f..08cb3d37394c 100644
--- a/lib/ethdev/rte_tm.h
+++ b/lib/ethdev/rte_tm.h
@@ -14,10 +14,6 @@
  * This interface provides the ability to configure the traffic manager in a
  * generic way. It includes features such as: hierarchical scheduling,
  * traffic shaping, congestion management, packet marking, etc.
- *
- * @warning
- * @b EXPERIMENTAL:
- * All functions in this file may be changed or removed without prior notice.
  */
 
 #include <stdint.h>
@@ -1245,7 +1241,6 @@ struct rte_tm_error {
  * @return
  *   0 on success, non-zero error code otherwise.
  */
-__rte_experimental
 int
 rte_tm_get_number_of_leaf_nodes(uint16_t port_id,
 	uint32_t *n_leaf_nodes,
@@ -1270,7 +1265,6 @@ rte_tm_get_number_of_leaf_nodes(uint16_t port_id,
  * @return
  *   0 on success, non-zero error code otherwise.
  */
-__rte_experimental
 int
 rte_tm_node_type_get(uint16_t port_id,
 	uint32_t node_id,
@@ -1289,7 +1283,6 @@ rte_tm_node_type_get(uint16_t port_id,
  * @return
  *   0 on success, non-zero error code otherwise.
  */
-__rte_experimental
 int
 rte_tm_capabilities_get(uint16_t port_id,
 	struct rte_tm_capabilities *cap,
@@ -1310,7 +1303,6 @@ rte_tm_capabilities_get(uint16_t port_id,
  * @return
  *   0 on success, non-zero error code otherwise.
  */
-__rte_experimental
 int
 rte_tm_level_capabilities_get(uint16_t port_id,
 	uint32_t level_id,
@@ -1331,7 +1323,6 @@ rte_tm_level_capabilities_get(uint16_t port_id,
  * @return
  *   0 on success, non-zero error code otherwise.
  */
-__rte_experimental
 int
 rte_tm_node_capabilities_get(uint16_t port_id,
 	uint32_t node_id,
@@ -1357,7 +1348,6 @@ rte_tm_node_capabilities_get(uint16_t port_id,
  *
  * @see struct rte_tm_capabilities::cman_wred_context_n_max
  */
-__rte_experimental
 int
 rte_tm_wred_profile_add(uint16_t port_id,
 	uint32_t wred_profile_id,
@@ -1381,7 +1371,6 @@ rte_tm_wred_profile_add(uint16_t port_id,
  *
  * @see struct rte_tm_capabilities::cman_wred_context_n_max
  */
-__rte_experimental
 int
 rte_tm_wred_profile_delete(uint16_t port_id,
 	uint32_t wred_profile_id,
@@ -1413,7 +1402,6 @@ rte_tm_wred_profile_delete(uint16_t port_id,
  *
  * @see struct rte_tm_capabilities::cman_wred_context_shared_n_max
  */
-__rte_experimental
 int
 rte_tm_shared_wred_context_add_update(uint16_t port_id,
 	uint32_t shared_wred_context_id,
@@ -1438,7 +1426,6 @@ rte_tm_shared_wred_context_add_update(uint16_t port_id,
  *
  * @see struct rte_tm_capabilities::cman_wred_context_shared_n_max
  */
-__rte_experimental
 int
 rte_tm_shared_wred_context_delete(uint16_t port_id,
 	uint32_t shared_wred_context_id,
@@ -1463,7 +1450,6 @@ rte_tm_shared_wred_context_delete(uint16_t port_id,
  *
  * @see struct rte_tm_capabilities::shaper_n_max
  */
-__rte_experimental
 int
 rte_tm_shaper_profile_add(uint16_t port_id,
 	uint32_t shaper_profile_id,
@@ -1487,7 +1473,6 @@ rte_tm_shaper_profile_add(uint16_t port_id,
  *
  * @see struct rte_tm_capabilities::shaper_n_max
  */
-__rte_experimental
 int
 rte_tm_shaper_profile_delete(uint16_t port_id,
 	uint32_t shaper_profile_id,
@@ -1517,7 +1502,6 @@ rte_tm_shaper_profile_delete(uint16_t port_id,
  *
  * @see struct rte_tm_capabilities::shaper_shared_n_max
  */
-__rte_experimental
 int
 rte_tm_shared_shaper_add_update(uint16_t port_id,
 	uint32_t shared_shaper_id,
@@ -1541,7 +1525,6 @@ rte_tm_shared_shaper_add_update(uint16_t port_id,
  *
  * @see struct rte_tm_capabilities::shaper_shared_n_max
  */
-__rte_experimental
 int
 rte_tm_shared_shaper_delete(uint16_t port_id,
 	uint32_t shared_shaper_id,
@@ -1610,7 +1593,6 @@ rte_tm_shared_shaper_delete(uint16_t port_id,
  * @see RTE_TM_NODE_LEVEL_ID_ANY
  * @see struct rte_tm_capabilities
  */
-__rte_experimental
 int
 rte_tm_node_add(uint16_t port_id,
 	uint32_t node_id,
@@ -1644,7 +1626,6 @@ rte_tm_node_add(uint16_t port_id,
  *
  * @see RTE_TM_UPDATE_NODE_ADD_DELETE
  */
-__rte_experimental
 int
 rte_tm_node_delete(uint16_t port_id,
 	uint32_t node_id,
@@ -1669,7 +1650,6 @@ rte_tm_node_delete(uint16_t port_id,
  * @see rte_tm_node_resume()
  * @see RTE_TM_UPDATE_NODE_SUSPEND_RESUME
  */
-__rte_experimental
 int
 rte_tm_node_suspend(uint16_t port_id,
 	uint32_t node_id,
@@ -1693,7 +1673,6 @@ rte_tm_node_suspend(uint16_t port_id,
  * @see rte_tm_node_suspend()
  * @see RTE_TM_UPDATE_NODE_SUSPEND_RESUME
  */
-__rte_experimental
 int
 rte_tm_node_resume(uint16_t port_id,
 	uint32_t node_id,
@@ -1735,7 +1714,6 @@ rte_tm_node_resume(uint16_t port_id,
  * @see rte_tm_node_add()
  * @see rte_tm_node_delete()
  */
-__rte_experimental
 int
 rte_tm_hierarchy_commit(uint16_t port_id,
 	int clear_on_fail,
@@ -1776,7 +1754,6 @@ rte_tm_hierarchy_commit(uint16_t port_id,
  * @see RTE_TM_UPDATE_NODE_PARENT_KEEP_LEVEL
  * @see RTE_TM_UPDATE_NODE_PARENT_CHANGE_LEVEL
  */
-__rte_experimental
 int
 rte_tm_node_parent_update(uint16_t port_id,
 	uint32_t node_id,
@@ -1806,7 +1783,6 @@ rte_tm_node_parent_update(uint16_t port_id,
  *
  * @see struct rte_tm_capabilities::shaper_private_n_max
  */
-__rte_experimental
 int
 rte_tm_node_shaper_update(uint16_t port_id,
 	uint32_t node_id,
@@ -1834,7 +1810,6 @@ rte_tm_node_shaper_update(uint16_t port_id,
  *
  * @see struct rte_tm_capabilities::shaper_shared_n_max
  */
-__rte_experimental
 int
 rte_tm_node_shared_shaper_update(uint16_t port_id,
 	uint32_t node_id,
@@ -1862,7 +1837,6 @@ rte_tm_node_shared_shaper_update(uint16_t port_id,
  * @see enum rte_tm_stats_type
  * @see RTE_TM_UPDATE_NODE_STATS
  */
-__rte_experimental
 int
 rte_tm_node_stats_update(uint16_t port_id,
 	uint32_t node_id,
@@ -1891,7 +1865,6 @@ rte_tm_node_stats_update(uint16_t port_id,
  * @see RTE_TM_UPDATE_NODE_WFQ_WEIGHT_MODE
  * @see RTE_TM_UPDATE_NODE_N_SP_PRIORITIES
  */
-__rte_experimental
 int
 rte_tm_node_wfq_weight_mode_update(uint16_t port_id,
 	uint32_t node_id,
@@ -1915,7 +1888,6 @@ rte_tm_node_wfq_weight_mode_update(uint16_t port_id,
  *
  * @see RTE_TM_UPDATE_NODE_CMAN
  */
-__rte_experimental
 int
 rte_tm_node_cman_update(uint16_t port_id,
 	uint32_t node_id,
@@ -1940,7 +1912,6 @@ rte_tm_node_cman_update(uint16_t port_id,
  *
  * @see struct rte_tm_capabilities::cman_wred_context_private_n_max
  */
-__rte_experimental
 int
 rte_tm_node_wred_context_update(uint16_t port_id,
 	uint32_t node_id,
@@ -1966,7 +1937,6 @@ rte_tm_node_wred_context_update(uint16_t port_id,
  *
  * @see struct rte_tm_capabilities::cman_wred_context_shared_n_max
  */
-__rte_experimental
 int
 rte_tm_node_shared_wred_context_update(uint16_t port_id,
 	uint32_t node_id,
@@ -1999,7 +1969,6 @@ rte_tm_node_shared_wred_context_update(uint16_t port_id,
  *
  * @see enum rte_tm_stats_type
  */
-__rte_experimental
 int
 rte_tm_node_stats_read(uint16_t port_id,
 	uint32_t node_id,
@@ -2037,7 +2006,6 @@ rte_tm_node_stats_read(uint16_t port_id,
  *
  * @see struct rte_tm_capabilities::mark_vlan_dei_supported
  */
-__rte_experimental
 int
 rte_tm_mark_vlan_dei(uint16_t port_id,
 	int mark_green,
@@ -2088,7 +2056,6 @@ rte_tm_mark_vlan_dei(uint16_t port_id,
  * @see struct rte_tm_capabilities::mark_ip_ecn_tcp_supported
  * @see struct rte_tm_capabilities::mark_ip_ecn_sctp_supported
  */
-__rte_experimental
 int
 rte_tm_mark_ip_ecn(uint16_t port_id,
 	int mark_green,
@@ -2137,7 +2104,6 @@ rte_tm_mark_ip_ecn(uint16_t port_id,
  *
  * @see struct rte_tm_capabilities::mark_ip_dscp_supported
  */
-__rte_experimental
 int
 rte_tm_mark_ip_dscp(uint16_t port_id,
 	int mark_green,
diff --git a/lib/ethdev/version.map b/lib/ethdev/version.map
index a275cce48164..1f8e5dec4076 100644
--- a/lib/ethdev/version.map
+++ b/lib/ethdev/version.map
@@ -156,6 +156,36 @@ DPDK_24 {
 	rte_mtr_meter_vlan_table_update;
 	rte_mtr_stats_read;
 	rte_mtr_stats_update;
+	rte_tm_capabilities_get;
+	rte_tm_get_number_of_leaf_nodes;
+	rte_tm_hierarchy_commit;
+	rte_tm_level_capabilities_get;
+	rte_tm_mark_ip_dscp;
+	rte_tm_mark_ip_ecn;
+	rte_tm_mark_vlan_dei;
+	rte_tm_node_add;
+	rte_tm_node_capabilities_get;
+	rte_tm_node_cman_update;
+	rte_tm_node_delete;
+	rte_tm_node_parent_update;
+	rte_tm_node_resume;
+	rte_tm_node_shaper_update;
+	rte_tm_node_shared_shaper_update;
+	rte_tm_node_shared_wred_context_update;
+	rte_tm_node_stats_read;
+	rte_tm_node_stats_update;
+	rte_tm_node_suspend;
+	rte_tm_node_type_get;
+	rte_tm_node_wfq_weight_mode_update;
+	rte_tm_node_wred_context_update;
+	rte_tm_shaper_profile_add;
+	rte_tm_shaper_profile_delete;
+	rte_tm_shared_shaper_add_update;
+	rte_tm_shared_shaper_delete;
+	rte_tm_shared_wred_context_add_update;
+	rte_tm_shared_wred_context_delete;
+	rte_tm_wred_profile_add;
+	rte_tm_wred_profile_delete;
 
 	local: *;
 };
@@ -189,38 +219,6 @@ EXPERIMENTAL {
 	__rte_ethdev_trace_tx_burst;
 	rte_flow_get_aged_flows;
 
-	# Marked as experimental in 20.11
-	rte_tm_capabilities_get;
-	rte_tm_get_number_of_leaf_nodes;
-	rte_tm_hierarchy_commit;
-	rte_tm_level_capabilities_get;
-	rte_tm_mark_ip_dscp;
-	rte_tm_mark_ip_ecn;
-	rte_tm_mark_vlan_dei;
-	rte_tm_node_add;
-	rte_tm_node_capabilities_get;
-	rte_tm_node_cman_update;
-	rte_tm_node_delete;
-	rte_tm_node_parent_update;
-	rte_tm_node_resume;
-	rte_tm_node_shaper_update;
-	rte_tm_node_shared_shaper_update;
-	rte_tm_node_shared_wred_context_update;
-	rte_tm_node_stats_read;
-	rte_tm_node_stats_update;
-	rte_tm_node_suspend;
-	rte_tm_node_type_get;
-	rte_tm_node_wfq_weight_mode_update;
-	rte_tm_node_wred_context_update;
-	rte_tm_shaper_profile_add;
-	rte_tm_shaper_profile_delete;
-	rte_tm_shared_shaper_add_update;
-	rte_tm_shared_shaper_delete;
-	rte_tm_shared_wred_context_add_update;
-	rte_tm_shared_wred_context_delete;
-	rte_tm_wred_profile_add;
-	rte_tm_wred_profile_delete;
-
 	# added in 20.11
 	rte_eth_hairpin_bind;
 	rte_eth_hairpin_get_peer_ports;
-- 
2.39.2


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

* [PATCH v2 05/29] pdump: make API's stable
  2023-08-09  0:09 ` [PATCH v2 00/29] promote many API's to stable Stephen Hemminger
                     ` (3 preceding siblings ...)
  2023-08-09  0:09   ` [PATCH v2 04/29] ethdev: mark rte_tm " Stephen Hemminger
@ 2023-08-09  0:09   ` Stephen Hemminger
  2023-08-09  0:09   ` [PATCH v2 06/29] pcapng: mark API's as stable Stephen Hemminger
                     ` (24 subsequent siblings)
  29 siblings, 0 replies; 219+ messages in thread
From: Stephen Hemminger @ 2023-08-09  0:09 UTC (permalink / raw)
  To: dev; +Cc: Stephen Hemminger, Reshma Pattan

The filtering API's were added in 23.11 and can now be marked
as not experimental.

Signed-off-by: Stephen Hemminger <stephen@networkplumber.org>
---
 lib/pdump/rte_pdump.h | 12 ------------
 lib/pdump/version.map | 11 +++--------
 2 files changed, 3 insertions(+), 20 deletions(-)

diff --git a/lib/pdump/rte_pdump.h b/lib/pdump/rte_pdump.h
index b1a391830c1d..414931a12cce 100644
--- a/lib/pdump/rte_pdump.h
+++ b/lib/pdump/rte_pdump.h
@@ -83,9 +83,6 @@ rte_pdump_enable(uint16_t port, uint16_t queue, uint32_t flags,
 		void *filter);
 
 /**
- * @warning
- * @b EXPERIMENTAL: this API may change, or be removed, without prior notice
- *
  * Enables packet capturing on given port and queue with filtering.
  *
  * @param port_id
@@ -109,7 +106,6 @@ rte_pdump_enable(uint16_t port, uint16_t queue, uint32_t flags,
  * @return
  *    0 on success, -1 on error, rte_errno is set accordingly.
  */
-__rte_experimental
 int
 rte_pdump_enable_bpf(uint16_t port_id, uint16_t queue,
 		     uint32_t flags, uint32_t snaplen,
@@ -169,9 +165,6 @@ rte_pdump_enable_by_deviceid(char *device_id, uint16_t queue,
 				void *filter);
 
 /**
- * @warning
- * @b EXPERIMENTAL: this API may change, or be removed, without prior notice
- *
  * Enables packet capturing on given device id and queue with filtering.
  * device_id can be name or pci address of device.
  *
@@ -196,7 +189,6 @@ rte_pdump_enable_by_deviceid(char *device_id, uint16_t queue,
  * @return
  *    0 on success, -1 on error, rte_errno is set accordingly.
  */
-__rte_experimental
 int
 rte_pdump_enable_bpf_by_deviceid(const char *device_id, uint16_t queue,
 				 uint32_t flags, uint32_t snaplen,
@@ -242,9 +234,6 @@ struct rte_pdump_stats {
 };
 
 /**
- * @warning
- * @b EXPERIMENTAL: this API may change, or be removed, without prior notice
- *
  * Retrieve the packet capture statistics for a queue.
  *
  * @param port_id
@@ -254,7 +243,6 @@ struct rte_pdump_stats {
  * @return
  *   Zero if successful. -1 on error and rte_errno is set.
  */
-__rte_experimental
 int
 rte_pdump_stats(uint16_t port_id, struct rte_pdump_stats *stats);
 
diff --git a/lib/pdump/version.map b/lib/pdump/version.map
index 225830dc85a7..ea5bd157cdb1 100644
--- a/lib/pdump/version.map
+++ b/lib/pdump/version.map
@@ -4,17 +4,12 @@ DPDK_24 {
 	rte_pdump_disable;
 	rte_pdump_disable_by_deviceid;
 	rte_pdump_enable;
+	rte_pdump_enable_bpf;
+	rte_pdump_enable_bpf_by_deviceid;
 	rte_pdump_enable_by_deviceid;
 	rte_pdump_init;
+	rte_pdump_stats;
 	rte_pdump_uninit;
 
 	local: *;
 };
-
-EXPERIMENTAL {
-	global:
-
-	rte_pdump_enable_bpf;
-	rte_pdump_enable_bpf_by_deviceid;
-	rte_pdump_stats;
-};
-- 
2.39.2


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

* [PATCH v2 06/29] pcapng: mark API's as stable
  2023-08-09  0:09 ` [PATCH v2 00/29] promote many API's to stable Stephen Hemminger
                     ` (4 preceding siblings ...)
  2023-08-09  0:09   ` [PATCH v2 05/29] pdump: make API's stable Stephen Hemminger
@ 2023-08-09  0:09   ` Stephen Hemminger
  2023-08-09  0:09   ` [PATCH v2 07/29] net: remove experimental from functions Stephen Hemminger
                     ` (23 subsequent siblings)
  29 siblings, 0 replies; 219+ messages in thread
From: Stephen Hemminger @ 2023-08-09  0:09 UTC (permalink / raw)
  To: dev; +Cc: Stephen Hemminger, Reshma Pattan

This API was added in 23.11 and can now be marked as not
experimental.

Signed-off-by: Stephen Hemminger <stephen@networkplumber.org>
---
 lib/pcapng/rte_pcapng.h | 11 -----------
 lib/pcapng/version.map  |  6 ++----
 2 files changed, 2 insertions(+), 15 deletions(-)

diff --git a/lib/pcapng/rte_pcapng.h b/lib/pcapng/rte_pcapng.h
index d93cc9f73ad5..c96c8994f38b 100644
--- a/lib/pcapng/rte_pcapng.h
+++ b/lib/pcapng/rte_pcapng.h
@@ -6,10 +6,6 @@
  * @file
  * RTE pcapng
  *
- * @warning
- * @b EXPERIMENTAL:
- * All functions in this file may be changed or removed without prior notice.
- *
  * Pcapng is an evolution from the pcap format, created to address some of
  * its deficiencies. Namely, the lack of extensibility and inability to store
  * additional information.
@@ -54,7 +50,6 @@ typedef struct rte_pcapng rte_pcapng_t;
  * @return
  *   handle to library, or NULL in case of error (and rte_errno is set).
  */
-__rte_experimental
 rte_pcapng_t *
 rte_pcapng_fdopen(int fd,
 		  const char *osname, const char *hardware,
@@ -66,7 +61,6 @@ rte_pcapng_fdopen(int fd,
  * @param self
  *  handle to library
  */
-__rte_experimental
 void
 rte_pcapng_close(rte_pcapng_t *self);
 
@@ -89,7 +83,6 @@ rte_pcapng_close(rte_pcapng_t *self);
  * and before any packet record. All ports used in packet capture
  * must be added.
  */
-__rte_experimental
 int
 rte_pcapng_add_interface(rte_pcapng_t *self, uint16_t port,
 			 const char *ifname, const char *ifdescr,
@@ -132,7 +125,6 @@ enum rte_pcapng_direction {
  *   - The pointer to the new mbuf formatted for pcapng_write
  *   - NULL if allocation fails.
  */
-__rte_experimental
 struct rte_mbuf *
 rte_pcapng_copy(uint16_t port_id, uint32_t queue,
 		const struct rte_mbuf *m, struct rte_mempool *mp,
@@ -149,7 +141,6 @@ rte_pcapng_copy(uint16_t port_id, uint32_t queue,
  *   The minimum size of mbuf data to handle packet with length bytes.
  *   Accounting for required header and trailer fields
  */
-__rte_experimental
 uint32_t
 rte_pcapng_mbuf_size(uint32_t length);
 
@@ -174,7 +165,6 @@ rte_pcapng_mbuf_size(uint32_t length);
  *  The number of bytes written to file, -1 on failure to write file.
  *  The mbuf's in *pkts* are always freed.
  */
-__rte_experimental
 ssize_t
 rte_pcapng_write_packets(rte_pcapng_t *self,
 			 struct rte_mbuf *pkts[], uint16_t nb_pkts);
@@ -205,7 +195,6 @@ rte_pcapng_write_packets(rte_pcapng_t *self,
  * @return
  *  number of bytes written to file, -1 on failure to write file
  */
-__rte_experimental
 ssize_t
 rte_pcapng_write_stats(rte_pcapng_t *self, uint16_t port,
 		       const char *comment,
diff --git a/lib/pcapng/version.map b/lib/pcapng/version.map
index 36393914d97c..81c9652ad6b5 100644
--- a/lib/pcapng/version.map
+++ b/lib/pcapng/version.map
@@ -1,6 +1,7 @@
-EXPERIMENTAL {
+DPDK_24 {
 	global:
 
+	rte_pcapng_add_interface;
 	rte_pcapng_close;
 	rte_pcapng_copy;
 	rte_pcapng_fdopen;
@@ -8,8 +9,5 @@ EXPERIMENTAL {
 	rte_pcapng_write_packets;
 	rte_pcapng_write_stats;
 
-	# added in 23.03
-	rte_pcapng_add_interface;
-
 	local: *;
 };
-- 
2.39.2


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

* [PATCH v2 07/29] net: remove experimental from functions
  2023-08-09  0:09 ` [PATCH v2 00/29] promote many API's to stable Stephen Hemminger
                     ` (5 preceding siblings ...)
  2023-08-09  0:09   ` [PATCH v2 06/29] pcapng: mark API's as stable Stephen Hemminger
@ 2023-08-09  0:09   ` Stephen Hemminger
  2023-08-09  0:09   ` [PATCH v2 08/29] rcu: remove experimental from rte_rcu_qbsr Stephen Hemminger
                     ` (22 subsequent siblings)
  29 siblings, 0 replies; 219+ messages in thread
From: Stephen Hemminger @ 2023-08-09  0:09 UTC (permalink / raw)
  To: dev; +Cc: Stephen Hemminger, Olivier Matz

These functions have been around long enough should no
longer be experimental.

Signed-off-by: Stephen Hemminger <stephen@networkplumber.org>
---
 lib/net/rte_ip.h | 19 -------------------
 1 file changed, 19 deletions(-)

diff --git a/lib/net/rte_ip.h b/lib/net/rte_ip.h
index 7f58dc6f6a9c..2cb5be222cdd 100644
--- a/lib/net/rte_ip.h
+++ b/lib/net/rte_ip.h
@@ -435,9 +435,6 @@ __rte_ipv4_udptcp_cksum_mbuf(const struct rte_mbuf *m,
 }
 
 /**
- * @warning
- * @b EXPERIMENTAL: this API may change without prior notice.
- *
  * Compute the IPv4 UDP/TCP checksum of a packet.
  *
  * @param m
@@ -449,7 +446,6 @@ __rte_ipv4_udptcp_cksum_mbuf(const struct rte_mbuf *m,
  * @return
  *   The complemented checksum to set in the L4 header.
  */
-__rte_experimental
 static inline uint16_t
 rte_ipv4_udptcp_cksum_mbuf(const struct rte_mbuf *m,
 			   const struct rte_ipv4_hdr *ipv4_hdr, uint16_t l4_off)
@@ -482,7 +478,6 @@ rte_ipv4_udptcp_cksum_mbuf(const struct rte_mbuf *m,
  * @return
  *   Return 0 if the checksum is correct, else -1.
  */
-__rte_experimental
 static inline int
 rte_ipv4_udptcp_cksum_verify(const struct rte_ipv4_hdr *ipv4_hdr,
 			     const void *l4_hdr)
@@ -496,9 +491,6 @@ rte_ipv4_udptcp_cksum_verify(const struct rte_ipv4_hdr *ipv4_hdr,
 }
 
 /**
- * @warning
- * @b EXPERIMENTAL: this API may change without prior notice.
- *
  * Verify the IPv4 UDP/TCP checksum of a packet.
  *
  * In case of UDP, the caller must first check if udp_hdr->dgram_cksum is 0
@@ -513,7 +505,6 @@ rte_ipv4_udptcp_cksum_verify(const struct rte_ipv4_hdr *ipv4_hdr,
  * @return
  *   Return 0 if the checksum is correct, else -1.
  */
-__rte_experimental
 static inline int
 rte_ipv4_udptcp_cksum_mbuf_verify(const struct rte_mbuf *m,
 				  const struct rte_ipv4_hdr *ipv4_hdr,
@@ -687,9 +678,6 @@ __rte_ipv6_udptcp_cksum_mbuf(const struct rte_mbuf *m,
 }
 
 /**
- * @warning
- * @b EXPERIMENTAL: this API may change without prior notice.
- *
  * Process the IPv6 UDP or TCP checksum of a packet.
  *
  * The IPv6 header must not be followed by extension headers. The layer 4
@@ -704,7 +692,6 @@ __rte_ipv6_udptcp_cksum_mbuf(const struct rte_mbuf *m,
  * @return
  *   The complemented checksum to set in the L4 header.
  */
-__rte_experimental
 static inline uint16_t
 rte_ipv6_udptcp_cksum_mbuf(const struct rte_mbuf *m,
 			   const struct rte_ipv6_hdr *ipv6_hdr, uint16_t l4_off)
@@ -738,7 +725,6 @@ rte_ipv6_udptcp_cksum_mbuf(const struct rte_mbuf *m,
  * @return
  *   Return 0 if the checksum is correct, else -1.
  */
-__rte_experimental
 static inline int
 rte_ipv6_udptcp_cksum_verify(const struct rte_ipv6_hdr *ipv6_hdr,
 			     const void *l4_hdr)
@@ -752,9 +738,6 @@ rte_ipv6_udptcp_cksum_verify(const struct rte_ipv6_hdr *ipv6_hdr,
 }
 
 /**
- * @warning
- * @b EXPERIMENTAL: this API may change without prior notice.
- *
  * Validate the IPv6 UDP or TCP checksum of a packet.
  *
  * In case of UDP, the caller must first check if udp_hdr->dgram_cksum is 0:
@@ -770,7 +753,6 @@ rte_ipv6_udptcp_cksum_verify(const struct rte_ipv6_hdr *ipv6_hdr,
  * @return
  *   Return 0 if the checksum is correct, else -1.
  */
-__rte_experimental
 static inline int
 rte_ipv6_udptcp_cksum_mbuf_verify(const struct rte_mbuf *m,
 				  const struct rte_ipv6_hdr *ipv6_hdr,
@@ -825,7 +807,6 @@ struct rte_ipv6_fragment_ext {
  * @return
  *   next protocol number if proto is an IPv6 extension, -EINVAL otherwise
  */
-__rte_experimental
 static inline int
 rte_ipv6_get_next_ext(const uint8_t *p, int proto, size_t *ext_len)
 {
-- 
2.39.2


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

* [PATCH v2 08/29] rcu: remove experimental from rte_rcu_qbsr
  2023-08-09  0:09 ` [PATCH v2 00/29] promote many API's to stable Stephen Hemminger
                     ` (6 preceding siblings ...)
  2023-08-09  0:09   ` [PATCH v2 07/29] net: remove experimental from functions Stephen Hemminger
@ 2023-08-09  0:09   ` Stephen Hemminger
  2023-08-09  0:09   ` [PATCH v2 09/29] lpm: remove experimental Stephen Hemminger
                     ` (21 subsequent siblings)
  29 siblings, 0 replies; 219+ messages in thread
From: Stephen Hemminger @ 2023-08-09  0:09 UTC (permalink / raw)
  To: dev; +Cc: Stephen Hemminger, Honnappa Nagarahalli

These functions were added back in 2020.
Remove experimental flag.

Signed-off-by: Stephen Hemminger <stephen@networkplumber.org>
---
 lib/rcu/rte_rcu_qsbr.h | 20 --------------------
 lib/rcu/version.map    | 15 ++++-----------
 2 files changed, 4 insertions(+), 31 deletions(-)

diff --git a/lib/rcu/rte_rcu_qsbr.h b/lib/rcu/rte_rcu_qsbr.h
index 87e1b55153b5..74ef41e0fac1 100644
--- a/lib/rcu/rte_rcu_qsbr.h
+++ b/lib/rcu/rte_rcu_qsbr.h
@@ -10,10 +10,6 @@
  *
  * RTE Quiescent State Based Reclamation (QSBR).
  *
- * @warning
- * @b EXPERIMENTAL:
- * All functions in this file may be changed or removed without prior notice.
- *
  * Quiescent State (QS) is any point in the thread execution
  * where the thread does not hold a reference to a data structure
  * in shared memory. While using lock-less data structures, the writer
@@ -727,9 +723,6 @@ int
 rte_rcu_qsbr_dump(FILE *f, struct rte_rcu_qsbr *v);
 
 /**
- * @warning
- * @b EXPERIMENTAL: this API may change without prior notice
- *
  * Create a queue used to store the data structure elements that can
  * be freed later. This queue is referred to as 'defer queue'.
  *
@@ -742,14 +735,10 @@ rte_rcu_qsbr_dump(FILE *f, struct rte_rcu_qsbr *v);
  *   - EINVAL - NULL parameters are passed
  *   - ENOMEM - Not enough memory
  */
-__rte_experimental
 struct rte_rcu_qsbr_dq *
 rte_rcu_qsbr_dq_create(const struct rte_rcu_qsbr_dq_parameters *params);
 
 /**
- * @warning
- * @b EXPERIMENTAL: this API may change without prior notice
- *
  * Enqueue one resource to the defer queue and start the grace period.
  * The resource will be freed later after at least one grace period
  * is over.
@@ -777,14 +766,10 @@ rte_rcu_qsbr_dq_create(const struct rte_rcu_qsbr_dq_parameters *params);
  *		if the defer queue size is equal (or larger) than the
  *		number of elements in the data structure.
  */
-__rte_experimental
 int
 rte_rcu_qsbr_dq_enqueue(struct rte_rcu_qsbr_dq *dq, void *e);
 
 /**
- * @warning
- * @b EXPERIMENTAL: this API may change without prior notice
- *
  * Free resources from the defer queue.
  *
  * This API is multi-thread safe.
@@ -806,15 +791,11 @@ rte_rcu_qsbr_dq_enqueue(struct rte_rcu_qsbr_dq *dq, void *e);
  *   On error - 1 with rte_errno set to
  *   - EINVAL - NULL parameters are passed
  */
-__rte_experimental
 int
 rte_rcu_qsbr_dq_reclaim(struct rte_rcu_qsbr_dq *dq, unsigned int n,
 	unsigned int *freed, unsigned int *pending, unsigned int *available);
 
 /**
- * @warning
- * @b EXPERIMENTAL: this API may change without prior notice
- *
  * Delete a defer queue.
  *
  * It tries to reclaim all the resources on the defer queue.
@@ -832,7 +813,6 @@ rte_rcu_qsbr_dq_reclaim(struct rte_rcu_qsbr_dq *dq, unsigned int n,
  *   - EAGAIN - Some of the resources have not completed at least 1 grace
  *		period, try again.
  */
-__rte_experimental
 int
 rte_rcu_qsbr_dq_delete(struct rte_rcu_qsbr_dq *dq);
 
diff --git a/lib/rcu/version.map b/lib/rcu/version.map
index 9218ed1f3399..982ffd59d9cd 100644
--- a/lib/rcu/version.map
+++ b/lib/rcu/version.map
@@ -2,6 +2,10 @@ DPDK_24 {
 	global:
 
 	rte_rcu_log_type;
+	rte_rcu_qsbr_dq_create;
+	rte_rcu_qsbr_dq_delete;
+	rte_rcu_qsbr_dq_enqueue;
+	rte_rcu_qsbr_dq_reclaim;
 	rte_rcu_qsbr_dump;
 	rte_rcu_qsbr_get_memsize;
 	rte_rcu_qsbr_init;
@@ -11,14 +15,3 @@ DPDK_24 {
 
 	local: *;
 };
-
-EXPERIMENTAL {
-	global:
-
-	rte_rcu_qsbr_dq_create;
-	rte_rcu_qsbr_dq_enqueue;
-	rte_rcu_qsbr_dq_reclaim;
-	rte_rcu_qsbr_dq_delete;
-
-	local: *;
-};
-- 
2.39.2


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

* [PATCH v2 09/29] lpm: remove experimental
  2023-08-09  0:09 ` [PATCH v2 00/29] promote many API's to stable Stephen Hemminger
                     ` (7 preceding siblings ...)
  2023-08-09  0:09   ` [PATCH v2 08/29] rcu: remove experimental from rte_rcu_qbsr Stephen Hemminger
@ 2023-08-09  0:09   ` Stephen Hemminger
  2023-08-09  0:09   ` [PATCH v2 10/29] mbuf: remove experimental from create_extbuf Stephen Hemminger
                     ` (20 subsequent siblings)
  29 siblings, 0 replies; 219+ messages in thread
From: Stephen Hemminger @ 2023-08-09  0:09 UTC (permalink / raw)
  To: dev; +Cc: Stephen Hemminger, Bruce Richardson, Vladimir Medvedkin

The function to associate RCU with LPM was added several releases ago.
Remove experimental.

Signed-off-by: Stephen Hemminger <stephen@networkplumber.org>
---
 lib/lpm/rte_lpm.h   | 4 ----
 lib/lpm/version.map | 7 +------
 2 files changed, 1 insertion(+), 10 deletions(-)

diff --git a/lib/lpm/rte_lpm.h b/lib/lpm/rte_lpm.h
index 75e27ff164ab..40825c5b8038 100644
--- a/lib/lpm/rte_lpm.h
+++ b/lib/lpm/rte_lpm.h
@@ -186,9 +186,6 @@ void
 rte_lpm_free(struct rte_lpm *lpm);
 
 /**
- * @warning
- * @b EXPERIMENTAL: this API may change without prior notice
- *
  * Associate RCU QSBR variable with an LPM object.
  *
  * @param lpm
@@ -203,7 +200,6 @@ rte_lpm_free(struct rte_lpm *lpm);
  *   - EEXIST - already added QSBR
  *   - ENOMEM - memory allocation failure
  */
-__rte_experimental
 int rte_lpm_rcu_qsbr_add(struct rte_lpm *lpm, struct rte_lpm_rcu_config *cfg);
 
 /**
diff --git a/lib/lpm/version.map b/lib/lpm/version.map
index 9ba73b2f938b..b6bee8c18b8a 100644
--- a/lib/lpm/version.map
+++ b/lib/lpm/version.map
@@ -18,12 +18,7 @@ DPDK_24 {
 	rte_lpm_find_existing;
 	rte_lpm_free;
 	rte_lpm_is_rule_present;
+	rte_lpm_rcu_qsbr_add;
 
 	local: *;
 };
-
-EXPERIMENTAL {
-	global:
-
-	rte_lpm_rcu_qsbr_add;
-};
-- 
2.39.2


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

* [PATCH v2 10/29] mbuf: remove experimental from create_extbuf
  2023-08-09  0:09 ` [PATCH v2 00/29] promote many API's to stable Stephen Hemminger
                     ` (8 preceding siblings ...)
  2023-08-09  0:09   ` [PATCH v2 09/29] lpm: remove experimental Stephen Hemminger
@ 2023-08-09  0:09   ` 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
                     ` (19 subsequent siblings)
  29 siblings, 1 reply; 219+ messages in thread
From: Stephen Hemminger @ 2023-08-09  0:09 UTC (permalink / raw)
  To: dev; +Cc: Stephen Hemminger, Olivier Matz

This API was added in 2020 and should no longer be experimental.

Signed-off-by: Stephen Hemminger <stephen@networkplumber.org>
---
 lib/mbuf/rte_mbuf.h  | 1 -
 lib/mbuf/version.map | 8 +-------
 2 files changed, 1 insertion(+), 8 deletions(-)

diff --git a/lib/mbuf/rte_mbuf.h b/lib/mbuf/rte_mbuf.h
index 913c459b1cc6..30fa3df85f53 100644
--- a/lib/mbuf/rte_mbuf.h
+++ b/lib/mbuf/rte_mbuf.h
@@ -800,7 +800,6 @@ struct rte_pktmbuf_extmem {
  *    - EEXIST - a memzone with the same name already exists
  *    - ENOMEM - no appropriate memory area found in which to create memzone
  */
-__rte_experimental
 struct rte_mempool *
 rte_pktmbuf_pool_create_extbuf(const char *name, unsigned int n,
 	unsigned int cache_size, uint16_t priv_size,
diff --git a/lib/mbuf/version.map b/lib/mbuf/version.map
index f010d4692e3e..daa65e2bbdb2 100644
--- a/lib/mbuf/version.map
+++ b/lib/mbuf/version.map
@@ -38,14 +38,8 @@ DPDK_24 {
 	rte_pktmbuf_init;
 	rte_pktmbuf_pool_create;
 	rte_pktmbuf_pool_create_by_ops;
+	rte_pktmbuf_pool_create_extbuf;
 	rte_pktmbuf_pool_init;
 
 	local: *;
 };
-
-EXPERIMENTAL {
-	global:
-
-	rte_pktmbuf_pool_create_extbuf;
-
-};
-- 
2.39.2


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

* [PATCH v2 11/29] hash: remove experimental from toeplitz hash
  2023-08-09  0:09 ` [PATCH v2 00/29] promote many API's to stable Stephen Hemminger
                     ` (9 preceding siblings ...)
  2023-08-09  0:09   ` [PATCH v2 10/29] mbuf: remove experimental from create_extbuf Stephen Hemminger
@ 2023-08-09  0:09   ` Stephen Hemminger
  2023-08-09  0:10   ` [PATCH v2 12/29] timer: remove experimental from rte_timer_next_ticks Stephen Hemminger
                     ` (18 subsequent siblings)
  29 siblings, 0 replies; 219+ messages in thread
From: Stephen Hemminger @ 2023-08-09  0:09 UTC (permalink / raw)
  To: dev
  Cc: Stephen Hemminger, Yipeng Wang, Sameh Gobriel, Bruce Richardson,
	Vladimir Medvedkin

The rte_thash_ functions have been around since 2020.
Remove experimental tag.

Signed-off-by: Stephen Hemminger <stephen@networkplumber.org>
---
 lib/hash/rte_thash.h          | 44 -----------------------------------
 lib/hash/rte_thash_gfni.h     |  8 -------
 lib/hash/rte_thash_x86_gfni.h |  8 -------
 lib/hash/version.map          | 16 ++++---------
 4 files changed, 4 insertions(+), 72 deletions(-)

diff --git a/lib/hash/rte_thash.h b/lib/hash/rte_thash.h
index 7b1d1547863e..84673c06762c 100644
--- a/lib/hash/rte_thash.h
+++ b/lib/hash/rte_thash.h
@@ -223,14 +223,10 @@ rte_softrss_be(uint32_t *input_tuple, uint32_t input_len,
 /**
  * Indicates if GFNI implementations of the Toeplitz hash are supported.
  *
- * @warning
- * @b EXPERIMENTAL: this API may change without prior notice.
- *
  * @return
  *  1 if GFNI is supported
  *  0 otherwise
  */
-__rte_experimental
 int
 rte_thash_gfni_supported(void);
 
@@ -238,9 +234,6 @@ rte_thash_gfni_supported(void);
  * Converts Toeplitz hash key (RSS key) into matrixes required
  * for GFNI implementation
  *
- * @warning
- * @b EXPERIMENTAL: this API may change without prior notice.
- *
  * @param matrixes
  *  pointer to the memory where matrices will be written.
  *  Note: the size of this memory must be equal to size * 8
@@ -249,7 +242,6 @@ rte_thash_gfni_supported(void);
  * @param size
  *  Size of the rss_key in bytes.
  */
-__rte_experimental
 void
 rte_thash_complete_matrix(uint64_t *matrixes, const uint8_t *rss_key,
 	int size);
@@ -278,9 +270,6 @@ struct rte_thash_subtuple_helper;
 /**
  * Create a new thash context.
  *
- * @warning
- * @b EXPERIMENTAL: this API may change without prior notice.
- *
  * @param name
  *  Context name
  * @param key_len
@@ -300,7 +289,6 @@ struct rte_thash_subtuple_helper;
  *  A pointer to the created context on success
  *  NULL otherwise
  */
-__rte_experimental
 struct rte_thash_ctx *
 rte_thash_init_ctx(const char *name, uint32_t key_len, uint32_t reta_sz,
 	uint8_t *key, uint32_t flags);
@@ -308,9 +296,6 @@ rte_thash_init_ctx(const char *name, uint32_t key_len, uint32_t reta_sz,
 /**
  * Find an existing thash context and return a pointer to it.
  *
- * @warning
- * @b EXPERIMENTAL: this API may change without prior notice.
- *
  * @param name
  *  Name of the thash context
  * @return
@@ -318,20 +303,15 @@ rte_thash_init_ctx(const char *name, uint32_t key_len, uint32_t reta_sz,
  *  set appropriately. Possible rte_errno values include:
  *   - ENOENT - required entry not available to return.
  */
-__rte_experimental
 struct rte_thash_ctx *
 rte_thash_find_existing(const char *name);
 
 /**
  * Free a thash context object
  *
- * @warning
- * @b EXPERIMENTAL: this API may change without prior notice.
- *
  * @param ctx
  *  Thash context
  */
-__rte_experimental
 void
 rte_thash_free_ctx(struct rte_thash_ctx *ctx);
 
@@ -341,9 +321,6 @@ rte_thash_free_ctx(struct rte_thash_ctx *ctx);
  * to calculate toeplitz hash collisions.
  * This function is not multi-thread safe.
  *
- * @warning
- * @b EXPERIMENTAL: this API may change without prior notice.
- *
  * @param ctx
  *  Thash context
  * @param name
@@ -357,7 +334,6 @@ rte_thash_free_ctx(struct rte_thash_ctx *ctx);
  *  0 on success
  *  negative on error
  */
-__rte_experimental
 int
 rte_thash_add_helper(struct rte_thash_ctx *ctx, const char *name, uint32_t len,
 	uint32_t offset);
@@ -365,9 +341,6 @@ rte_thash_add_helper(struct rte_thash_ctx *ctx, const char *name, uint32_t len,
 /**
  * Find a helper in the context by the given name
  *
- * @warning
- * @b EXPERIMENTAL: this API may change without prior notice.
- *
  * @param ctx
  *  Thash context
  * @param name
@@ -375,7 +348,6 @@ rte_thash_add_helper(struct rte_thash_ctx *ctx, const char *name, uint32_t len,
  * @return
  *  Pointer to the thash helper or NULL if it was not found.
  */
-__rte_experimental
 struct rte_thash_subtuple_helper *
 rte_thash_get_helper(struct rte_thash_ctx *ctx, const char *name);
 
@@ -394,7 +366,6 @@ rte_thash_get_helper(struct rte_thash_ctx *ctx, const char *name);
  * @return
  *  A complementary value which must be xored with the corresponding subtuple
  */
-__rte_experimental
 uint32_t
 rte_thash_get_complement(struct rte_thash_subtuple_helper *h,
 	uint32_t hash, uint32_t desired_hash);
@@ -404,15 +375,11 @@ rte_thash_get_complement(struct rte_thash_subtuple_helper *h,
  * It changes after each addition of a helper. It should be installed to
  * the NIC.
  *
- * @warning
- * @b EXPERIMENTAL: this API may change without prior notice.
- *
  * @param ctx
  *  Thash context
  * @return
  *  A pointer to the toeplitz hash key
  */
-__rte_experimental
 const uint8_t *
 rte_thash_get_key(struct rte_thash_ctx *ctx);
 
@@ -422,16 +389,12 @@ rte_thash_get_key(struct rte_thash_ctx *ctx);
  * CPU supports GFNI.
  * Matrices changes after each addition of a helper.
  *
- * @warning
- * @b EXPERIMENTAL: this API may change without prior notice.
- *
  * @param ctx
  *  Thash context
  * @return
  *  A pointer to the toeplitz hash key matrices on success
  *  NULL if GFNI is not supported.
  */
-__rte_experimental
 const uint64_t *
 rte_thash_get_gfni_matrices(struct rte_thash_ctx *ctx);
 
@@ -441,9 +404,6 @@ rte_thash_get_gfni_matrices(struct rte_thash_ctx *ctx);
  * Generally it is some kind of lookup function to check
  * if adjusted tuple is already in use.
  *
- * @warning
- * @b EXPERIMENTAL: this API may change without prior notice.
- *
  * @param userdata
  *  Pointer to the userdata. It could be a pointer to the
  *  table with used tuples to search.
@@ -461,9 +421,6 @@ typedef int (*rte_thash_check_tuple_t)(void *userdata, uint8_t *tuple);
  * desired least significant bits.
  * This function is multi-thread safe.
  *
- * @warning
- * @b EXPERIMENTAL: this API may change without prior notice.
- *
  * @param ctx
  *  Thash context
  * @param h
@@ -485,7 +442,6 @@ typedef int (*rte_thash_check_tuple_t)(void *userdata, uint8_t *tuple);
  *  0 on success
  *  negative otherwise
  */
-__rte_experimental
 int
 rte_thash_adjust_tuple(struct rte_thash_ctx *ctx,
 	struct rte_thash_subtuple_helper *h,
diff --git a/lib/hash/rte_thash_gfni.h b/lib/hash/rte_thash_gfni.h
index ef90faa302d1..67d0fa4da988 100644
--- a/lib/hash/rte_thash_gfni.h
+++ b/lib/hash/rte_thash_gfni.h
@@ -24,9 +24,6 @@ extern "C" {
  * Calculate Toeplitz hash.
  * Dummy implementation.
  *
- * @warning
- * @b EXPERIMENTAL: this API may change without prior notice.
- *
  * @param m
  *  Pointer to the matrices generated from the corresponding
  *  RSS hash key using rte_thash_complete_matrix().
@@ -37,7 +34,6 @@ extern "C" {
  * @return
  *  Calculated Toeplitz hash value.
  */
-__rte_experimental
 static inline uint32_t
 rte_thash_gfni(const uint64_t *mtrx __rte_unused,
 	const uint8_t *key __rte_unused, int len __rte_unused)
@@ -50,9 +46,6 @@ rte_thash_gfni(const uint64_t *mtrx __rte_unused,
  * Bulk implementation for Toeplitz hash.
  * Dummy implementation.
  *
- * @warning
- * @b EXPERIMENTAL: this API may change without prior notice.
- *
  * @param m
  *  Pointer to the matrices generated from the corresponding
  *  RSS hash key using rte_thash_complete_matrix().
@@ -66,7 +59,6 @@ rte_thash_gfni(const uint64_t *mtrx __rte_unused,
  * @param num
  *  Number of tuples to hash.
  */
-__rte_experimental
 static inline void
 rte_thash_gfni_bulk(const uint64_t *mtrx __rte_unused,
 	int len __rte_unused, uint8_t *tuple[] __rte_unused,
diff --git a/lib/hash/rte_thash_x86_gfni.h b/lib/hash/rte_thash_x86_gfni.h
index 7bb76ac1bb5f..f263c1eeec06 100644
--- a/lib/hash/rte_thash_x86_gfni.h
+++ b/lib/hash/rte_thash_x86_gfni.h
@@ -161,9 +161,6 @@ __rte_thash_gfni(const uint64_t *mtrx, const uint8_t *tuple,
 /**
  * Calculate Toeplitz hash.
  *
- * @warning
- * @b EXPERIMENTAL: this API may change without prior notice.
- *
  * @param m
  *  Pointer to the matrices generated from the corresponding
  *  RSS hash key using rte_thash_complete_matrix().
@@ -175,7 +172,6 @@ __rte_thash_gfni(const uint64_t *mtrx, const uint8_t *tuple,
  * @return
  *  Calculated Toeplitz hash value.
  */
-__rte_experimental
 static inline uint32_t
 rte_thash_gfni(const uint64_t *m, const uint8_t *tuple, int len)
 {
@@ -190,9 +186,6 @@ rte_thash_gfni(const uint64_t *m, const uint8_t *tuple, int len)
 /**
  * Bulk implementation for Toeplitz hash.
  *
- * @warning
- * @b EXPERIMENTAL: this API may change without prior notice.
- *
  * @param m
  *  Pointer to the matrices generated from the corresponding
  *  RSS hash key using rte_thash_complete_matrix().
@@ -207,7 +200,6 @@ rte_thash_gfni(const uint64_t *m, const uint8_t *tuple, int len)
  * @param num
  *  Number of tuples to hash.
  */
-__rte_experimental
 static inline void
 rte_thash_gfni_bulk(const uint64_t *mtrx, int len, uint8_t *tuple[],
 	uint32_t val[], uint32_t num)
diff --git a/lib/hash/version.map b/lib/hash/version.map
index daaa9a8901db..b98b64a1638a 100644
--- a/lib/hash/version.map
+++ b/lib/hash/version.map
@@ -30,25 +30,17 @@ DPDK_24 {
 	rte_hash_rcu_qsbr_add;
 	rte_hash_reset;
 	rte_hash_set_cmp_func;
-
-	local: *;
-};
-
-EXPERIMENTAL {
-	global:
-
-	# added in 21.05
 	rte_thash_add_helper;
 	rte_thash_adjust_tuple;
+	rte_thash_complete_matrix;
 	rte_thash_find_existing;
 	rte_thash_free_ctx;
 	rte_thash_get_complement;
+	rte_thash_get_gfni_matrices;
 	rte_thash_get_helper;
 	rte_thash_get_key;
+	rte_thash_gfni_supported;
 	rte_thash_init_ctx;
 
-	# added in 21.11
-	rte_thash_complete_matrix;
-	rte_thash_get_gfni_matrices;
-	rte_thash_gfni_supported;
+	local: *;
 };
-- 
2.39.2


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

* [PATCH v2 12/29] timer: remove experimental from rte_timer_next_ticks
  2023-08-09  0:09 ` [PATCH v2 00/29] promote many API's to stable Stephen Hemminger
                     ` (10 preceding siblings ...)
  2023-08-09  0:09   ` [PATCH v2 11/29] hash: remove experimental from toeplitz hash Stephen Hemminger
@ 2023-08-09  0:10   ` Stephen Hemminger
  2023-08-09  0:10   ` [PATCH v2 13/29] sched: remove experimental Stephen Hemminger
                     ` (17 subsequent siblings)
  29 siblings, 0 replies; 219+ messages in thread
From: Stephen Hemminger @ 2023-08-09  0:10 UTC (permalink / raw)
  To: dev; +Cc: Stephen Hemminger, Erik Gabriel Carrillo

Function was added in 20.11, remove experimental flag.

Signed-off-by: Stephen Hemminger <stephen@networkplumber.org>
---
 lib/timer/rte_timer.h | 4 ----
 lib/timer/version.map | 7 +------
 2 files changed, 1 insertion(+), 10 deletions(-)

diff --git a/lib/timer/rte_timer.h b/lib/timer/rte_timer.h
index c8710c4dc9b1..df791cfbd626 100644
--- a/lib/timer/rte_timer.h
+++ b/lib/timer/rte_timer.h
@@ -332,9 +332,6 @@ void rte_timer_stop_sync(struct rte_timer *tim);
 int rte_timer_pending(struct rte_timer *tim);
 
 /**
- * @warning
- * @b EXPERIMENTAL: this API may change without prior notice
- *
  * Time until the next timer on the current lcore
  * This function gives the ticks until the next timer will be active.
  *
@@ -344,7 +341,6 @@ int rte_timer_pending(struct rte_timer *tim);
  *   - 0: a timer is pending and will run at next rte_timer_manage()
  *   - >0: ticks until the next timer is ready
  */
-__rte_experimental
 int64_t rte_timer_next_ticks(void);
 
 /**
diff --git a/lib/timer/version.map b/lib/timer/version.map
index e3d5a043034c..b180708e2488 100644
--- a/lib/timer/version.map
+++ b/lib/timer/version.map
@@ -10,6 +10,7 @@ DPDK_24 {
 	rte_timer_dump_stats;
 	rte_timer_init;
 	rte_timer_manage;
+	rte_timer_next_ticks;
 	rte_timer_pending;
 	rte_timer_reset;
 	rte_timer_reset_sync;
@@ -21,9 +22,3 @@ DPDK_24 {
 
 	local: *;
 };
-
-EXPERIMENTAL {
-	global:
-
-	rte_timer_next_ticks;
-};
-- 
2.39.2


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

* [PATCH v2 13/29] sched: remove experimental
  2023-08-09  0:09 ` [PATCH v2 00/29] promote many API's to stable Stephen Hemminger
                     ` (11 preceding siblings ...)
  2023-08-09  0:10   ` [PATCH v2 12/29] timer: remove experimental from rte_timer_next_ticks Stephen Hemminger
@ 2023-08-09  0:10   ` Stephen Hemminger
  2023-08-09  0:10   ` [PATCH v2 14/29] dmadev: mark API's as not experimental Stephen Hemminger
                     ` (16 subsequent siblings)
  29 siblings, 0 replies; 219+ messages in thread
From: Stephen Hemminger @ 2023-08-09  0:10 UTC (permalink / raw)
  To: dev; +Cc: Stephen Hemminger, Cristian Dumitrescu

The overcommit and PIE support was added back in 2020.
Remove experimental tag.

Signed-off-by: Stephen Hemminger <stephen@networkplumber.org>
---
 lib/sched/rte_pie.h   |  8 --------
 lib/sched/rte_sched.h |  5 -----
 lib/sched/version.map | 18 ++++--------------
 3 files changed, 4 insertions(+), 27 deletions(-)

diff --git a/lib/sched/rte_pie.h b/lib/sched/rte_pie.h
index e0d6d5a3cdcd..631c657980eb 100644
--- a/lib/sched/rte_pie.h
+++ b/lib/sched/rte_pie.h
@@ -78,7 +78,6 @@ struct rte_pie {
  * @retval !0 error
  */
 int
-__rte_experimental
 rte_pie_rt_data_init(struct rte_pie *pie);
 
 /**
@@ -95,7 +94,6 @@ rte_pie_rt_data_init(struct rte_pie *pie);
  * @retval !0 error
  */
 int
-__rte_experimental
 rte_pie_config_init(struct rte_pie_config *pie_cfg,
 	const uint16_t qdelay_ref,
 	const uint16_t dp_update_interval,
@@ -116,7 +114,6 @@ rte_pie_config_init(struct rte_pie_config *pie_cfg,
  * @retval !0 drop the packet
  */
 static int
-__rte_experimental
 rte_pie_enqueue_empty(const struct rte_pie_config *pie_cfg,
 	struct rte_pie *pie,
 	uint32_t pkt_len)
@@ -148,7 +145,6 @@ rte_pie_enqueue_empty(const struct rte_pie_config *pie_cfg,
  * @param time [in] current time (measured in cpu cycles)
  */
 static void
-__rte_experimental
 _calc_drop_probability(const struct rte_pie_config *pie_cfg,
 	struct rte_pie *pie, uint64_t time)
 {
@@ -212,7 +208,6 @@ _calc_drop_probability(const struct rte_pie_config *pie_cfg,
  * @retval 1 drop the packet
  */
 static inline int
-__rte_experimental
 _rte_pie_drop(const struct rte_pie_config *pie_cfg,
 	struct rte_pie *pie)
 {
@@ -261,7 +256,6 @@ _rte_pie_drop(const struct rte_pie_config *pie_cfg,
  * @retval 2 drop the packet based on mark probability criterion
  */
 static inline int
-__rte_experimental
 rte_pie_enqueue_nonempty(const struct rte_pie_config *pie_cfg,
 	struct rte_pie *pie,
 	uint32_t pkt_len,
@@ -329,7 +323,6 @@ rte_pie_enqueue_nonempty(const struct rte_pie_config *pie_cfg,
  * @retval 1 drop the packet based on drop probability criteria
  */
 static inline int
-__rte_experimental
 rte_pie_enqueue(const struct rte_pie_config *pie_cfg,
 	struct rte_pie *pie,
 	const unsigned int qlen,
@@ -354,7 +347,6 @@ rte_pie_enqueue(const struct rte_pie_config *pie_cfg,
  * @param time [in] current time stamp in cpu cycles
  */
 static inline void
-__rte_experimental
 rte_pie_dequeue(struct rte_pie *pie,
 	uint32_t pkt_len,
 	uint64_t time)
diff --git a/lib/sched/rte_sched.h b/lib/sched/rte_sched.h
index a9ac5909ad0c..77fc78ce2fe9 100644
--- a/lib/sched/rte_sched.h
+++ b/lib/sched/rte_sched.h
@@ -353,9 +353,6 @@ rte_sched_subport_pipe_profile_add(struct rte_sched_port *port,
 	uint32_t *pipe_profile_id);
 
 /**
- * @warning
- * @b EXPERIMENTAL: this API may change without prior notice.
- *
  * Hierarchical scheduler subport bandwidth profile add
  * Note that this function is safe to use in runtime for adding new
  * subport bandwidth profile as it doesn't have any impact on hierarchical
@@ -369,7 +366,6 @@ rte_sched_subport_pipe_profile_add(struct rte_sched_port *port,
  * @return
  *   0 upon success, error code otherwise
  */
-__rte_experimental
 int
 rte_sched_port_subport_profile_add(struct rte_sched_port *port,
 	struct rte_sched_subport_profile_params *profile,
@@ -592,7 +588,6 @@ rte_sched_port_dequeue(struct rte_sched_port *port, struct rte_mbuf **pkts, uint
  * @return
  *   0 upon success, error code otherwise
  */
-__rte_experimental
 int
 rte_sched_subport_tc_ov_config(struct rte_sched_port *port, uint32_t subport_id, bool tc_ov_enable);
 
diff --git a/lib/sched/version.map b/lib/sched/version.map
index d9ce68be1449..be1decaeee46 100644
--- a/lib/sched/version.map
+++ b/lib/sched/version.map
@@ -2,6 +2,8 @@ DPDK_24 {
 	global:
 
 	rte_approx;
+	rte_pie_config_init;
+	rte_pie_rt_data_init;
 	rte_red_config_init;
 	rte_red_log2_1_minus_Wq;
 	rte_red_pow2_frac_inv;
@@ -17,24 +19,12 @@ DPDK_24 {
 	rte_sched_port_pkt_read_color;
 	rte_sched_port_pkt_read_tree_path;
 	rte_sched_port_pkt_write;
+	rte_sched_port_subport_profile_add;
 	rte_sched_queue_read_stats;
 	rte_sched_subport_config;
 	rte_sched_subport_pipe_profile_add;
 	rte_sched_subport_read_stats;
+	rte_sched_subport_tc_ov_config;
 
 	local: *;
 };
-
-EXPERIMENTAL {
-	global:
-
-	# added in 20.11
-	rte_sched_port_subport_profile_add;
-
-	# added in 21.11
-	rte_pie_rt_data_init;
-	rte_pie_config_init;
-
-	# added in 22.07
-	rte_sched_subport_tc_ov_config;
-};
-- 
2.39.2


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

* [PATCH v2 14/29] dmadev: mark API's as not experimental
  2023-08-09  0:09 ` [PATCH v2 00/29] promote many API's to stable Stephen Hemminger
                     ` (12 preceding siblings ...)
  2023-08-09  0:10   ` [PATCH v2 13/29] sched: remove experimental Stephen Hemminger
@ 2023-08-09  0:10   ` 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
                     ` (15 subsequent siblings)
  29 siblings, 1 reply; 219+ messages in thread
From: Stephen Hemminger @ 2023-08-09  0:10 UTC (permalink / raw)
  To: dev
  Cc: Stephen Hemminger, Thomas Monjalon, Chengwen Feng, Kevin Laatz,
	Bruce Richardson

These were added in 20.11 time now to remove experimental flag.

Signed-off-by: Stephen Hemminger <stephen@networkplumber.org>
---
 MAINTAINERS             |  2 +-
 lib/dmadev/rte_dmadev.h | 85 -----------------------------------------
 lib/dmadev/version.map  |  2 +-
 3 files changed, 2 insertions(+), 87 deletions(-)

diff --git a/MAINTAINERS b/MAINTAINERS
index 462223dd65d0..f020972b609b 100644
--- a/MAINTAINERS
+++ b/MAINTAINERS
@@ -482,7 +482,7 @@ F: doc/guides/prog_guide/mldev.rst
 F: app/test-mldev/
 F: doc/guides/tools/testmldev.rst
 
-DMA device API - EXPERIMENTAL
+DMA device API
 M: Chengwen Feng <fengchengwen@huawei.com>
 F: lib/dmadev/
 F: drivers/dma/skeleton/
diff --git a/lib/dmadev/rte_dmadev.h b/lib/dmadev/rte_dmadev.h
index e61d71959e82..ecc98517e852 100644
--- a/lib/dmadev/rte_dmadev.h
+++ b/lib/dmadev/rte_dmadev.h
@@ -158,9 +158,6 @@ extern "C" {
 #define RTE_DMADEV_DEFAULT_MAX 64
 
 /**
- * @warning
- * @b EXPERIMENTAL: this API may change without prior notice.
- *
  * Configure the maximum number of dmadevs.
  * @note This function can be invoked before the primary process rte_eal_init()
  * to change the maximum number of dmadevs. If not invoked, the maximum number
@@ -172,13 +169,9 @@ extern "C" {
  * @return
  *   0 on success. Otherwise negative value is returned.
  */
-__rte_experimental
 int rte_dma_dev_max(size_t dev_max);
 
 /**
- * @warning
- * @b EXPERIMENTAL: this API may change without prior notice.
- *
  * Get the device identifier for the named DMA device.
  *
  * @param name
@@ -188,13 +181,9 @@ int rte_dma_dev_max(size_t dev_max);
  *   Returns DMA device identifier on success.
  *   - <0: Failure to find named DMA device.
  */
-__rte_experimental
 int rte_dma_get_dev_id_by_name(const char *name);
 
 /**
- * @warning
- * @b EXPERIMENTAL: this API may change without prior notice.
- *
  * Check whether the dev_id is valid.
  *
  * @param dev_id
@@ -203,20 +192,15 @@ int rte_dma_get_dev_id_by_name(const char *name);
  * @return
  *   - If the device index is valid (true) or not (false).
  */
-__rte_experimental
 bool rte_dma_is_valid(int16_t dev_id);
 
 /**
- * @warning
- * @b EXPERIMENTAL: this API may change without prior notice.
- *
  * Get the total number of DMA devices that have been successfully
  * initialised.
  *
  * @return
  *   The total number of usable DMA devices.
  */
-__rte_experimental
 uint16_t rte_dma_count_avail(void);
 
 /**
@@ -227,7 +211,6 @@ uint16_t rte_dma_count_avail(void);
  * @return
  *   Next valid dmadev, UINT16_MAX if there is none.
  */
-__rte_experimental
 int16_t rte_dma_next_dev(int16_t start_dev_id);
 
 /** Utility macro to iterate over all available dmadevs */
@@ -310,9 +293,6 @@ struct rte_dma_info {
 };
 
 /**
- * @warning
- * @b EXPERIMENTAL: this API may change without prior notice.
- *
  * Retrieve information of a DMA device.
  *
  * @param dev_id
@@ -324,7 +304,6 @@ struct rte_dma_info {
  * @return
  *   0 on success. Otherwise negative value is returned.
  */
-__rte_experimental
 int rte_dma_info_get(int16_t dev_id, struct rte_dma_info *dev_info);
 
 /**
@@ -349,9 +328,6 @@ struct rte_dma_conf {
 };
 
 /**
- * @warning
- * @b EXPERIMENTAL: this API may change without prior notice.
- *
  * Configure a DMA device.
  *
  * This function must be invoked first before any other function in the
@@ -367,13 +343,9 @@ struct rte_dma_conf {
  * @return
  *   0 on success. Otherwise negative value is returned.
  */
-__rte_experimental
 int rte_dma_configure(int16_t dev_id, const struct rte_dma_conf *dev_conf);
 
 /**
- * @warning
- * @b EXPERIMENTAL: this API may change without prior notice.
- *
  * Start a DMA device.
  *
  * The device start step is the last one and consists of setting the DMA
@@ -385,13 +357,9 @@ int rte_dma_configure(int16_t dev_id, const struct rte_dma_conf *dev_conf);
  * @return
  *   0 on success. Otherwise negative value is returned.
  */
-__rte_experimental
 int rte_dma_start(int16_t dev_id);
 
 /**
- * @warning
- * @b EXPERIMENTAL: this API may change without prior notice.
- *
  * Stop a DMA device.
  *
  * The device can be restarted with a call to rte_dma_start().
@@ -402,13 +370,9 @@ int rte_dma_start(int16_t dev_id);
  * @return
  *   0 on success. Otherwise negative value is returned.
  */
-__rte_experimental
 int rte_dma_stop(int16_t dev_id);
 
 /**
- * @warning
- * @b EXPERIMENTAL: this API may change without prior notice.
- *
  * Close a DMA device.
  *
  * The device cannot be restarted after this call.
@@ -419,7 +383,6 @@ int rte_dma_stop(int16_t dev_id);
  * @return
  *   0 on success. Otherwise negative value is returned.
  */
-__rte_experimental
 int rte_dma_close(int16_t dev_id);
 
 /**
@@ -585,9 +548,6 @@ struct rte_dma_vchan_conf {
 };
 
 /**
- * @warning
- * @b EXPERIMENTAL: this API may change without prior notice.
- *
  * Allocate and set up a virtual DMA channel.
  *
  * @param dev_id
@@ -602,7 +562,6 @@ struct rte_dma_vchan_conf {
  * @return
  *   0 on success. Otherwise negative value is returned.
  */
-__rte_experimental
 int rte_dma_vchan_setup(int16_t dev_id, uint16_t vchan,
 			const struct rte_dma_vchan_conf *conf);
 
@@ -631,9 +590,6 @@ struct rte_dma_stats {
 #define RTE_DMA_ALL_VCHAN	0xFFFFu
 
 /**
- * @warning
- * @b EXPERIMENTAL: this API may change without prior notice.
- *
  * Retrieve basic statistics of a or all virtual DMA channel(s).
  *
  * @param dev_id
@@ -648,14 +604,10 @@ struct rte_dma_stats {
  * @return
  *   0 on success. Otherwise negative value is returned.
  */
-__rte_experimental
 int rte_dma_stats_get(int16_t dev_id, uint16_t vchan,
 		      struct rte_dma_stats *stats);
 
 /**
- * @warning
- * @b EXPERIMENTAL: this API may change without prior notice.
- *
  * Reset basic statistics of a or all virtual DMA channel(s).
  *
  * @param dev_id
@@ -667,7 +619,6 @@ int rte_dma_stats_get(int16_t dev_id, uint16_t vchan,
  * @return
  *   0 on success. Otherwise negative value is returned.
  */
-__rte_experimental
 int rte_dma_stats_reset(int16_t dev_id, uint16_t vchan);
 
 /**
@@ -683,9 +634,6 @@ enum rte_dma_vchan_status {
 };
 
 /**
- * @warning
- * @b EXPERIMENTAL: this API may change without prior notice.
- *
  * Determine if all jobs have completed on a device channel.
  * This function is primarily designed for testing use, as it allows a process to check if
  * all jobs are completed, without actually gathering completions from those jobs.
@@ -700,14 +648,10 @@ enum rte_dma_vchan_status {
  *   0 - call completed successfully
  *   < 0 - error code indicating there was a problem calling the API
  */
-__rte_experimental
 int
 rte_dma_vchan_status(int16_t dev_id, uint16_t vchan, enum rte_dma_vchan_status *status);
 
 /**
- * @warning
- * @b EXPERIMENTAL: this API may change without prior notice.
- *
  * Dump DMA device info.
  *
  * @param dev_id
@@ -718,7 +662,6 @@ rte_dma_vchan_status(int16_t dev_id, uint16_t vchan, enum rte_dma_vchan_status *
  * @return
  *   0 on success. Otherwise negative value is returned.
  */
-__rte_experimental
 int rte_dma_dump(int16_t dev_id, FILE *f);
 
 /**
@@ -822,9 +765,6 @@ struct rte_dma_sge {
 /**@}*/
 
 /**
- * @warning
- * @b EXPERIMENTAL: this API may change without prior notice.
- *
  * Enqueue a copy operation onto the virtual DMA channel.
  *
  * This queues up a copy operation to be performed by hardware, if the 'flags'
@@ -850,7 +790,6 @@ struct rte_dma_sge {
  *   - -ENOSPC: if no space left to enqueue.
  *   - other values < 0 on failure.
  */
-__rte_experimental
 static inline int
 rte_dma_copy(int16_t dev_id, uint16_t vchan, rte_iova_t src, rte_iova_t dst,
 	     uint32_t length, uint64_t flags)
@@ -868,9 +807,6 @@ rte_dma_copy(int16_t dev_id, uint16_t vchan, rte_iova_t src, rte_iova_t dst,
 }
 
 /**
- * @warning
- * @b EXPERIMENTAL: this API may change without prior notice.
- *
  * Enqueue a scatter-gather list copy operation onto the virtual DMA channel.
  *
  * This queues up a scatter-gather list copy operation to be performed by
@@ -900,7 +836,6 @@ rte_dma_copy(int16_t dev_id, uint16_t vchan, rte_iova_t src, rte_iova_t dst,
  *   - -ENOSPC: if no space left to enqueue.
  *   - other values < 0 on failure.
  */
-__rte_experimental
 static inline int
 rte_dma_copy_sg(int16_t dev_id, uint16_t vchan, struct rte_dma_sge *src,
 		struct rte_dma_sge *dst, uint16_t nb_src, uint16_t nb_dst,
@@ -921,9 +856,6 @@ rte_dma_copy_sg(int16_t dev_id, uint16_t vchan, struct rte_dma_sge *src,
 }
 
 /**
- * @warning
- * @b EXPERIMENTAL: this API may change without prior notice.
- *
  * Enqueue a fill operation onto the virtual DMA channel.
  *
  * This queues up a fill operation to be performed by hardware, if the 'flags'
@@ -949,7 +881,6 @@ rte_dma_copy_sg(int16_t dev_id, uint16_t vchan, struct rte_dma_sge *src,
  *   - -ENOSPC: if no space left to enqueue.
  *   - other values < 0 on failure.
  */
-__rte_experimental
 static inline int
 rte_dma_fill(int16_t dev_id, uint16_t vchan, uint64_t pattern,
 	     rte_iova_t dst, uint32_t length, uint64_t flags)
@@ -968,9 +899,6 @@ rte_dma_fill(int16_t dev_id, uint16_t vchan, uint64_t pattern,
 }
 
 /**
- * @warning
- * @b EXPERIMENTAL: this API may change without prior notice.
- *
  * Trigger hardware to begin performing enqueued operations.
  *
  * Writes the "doorbell" to the hardware to trigger it
@@ -984,7 +912,6 @@ rte_dma_fill(int16_t dev_id, uint16_t vchan, uint64_t pattern,
  * @return
  *   0 on success. Otherwise negative value is returned.
  */
-__rte_experimental
 static inline int
 rte_dma_submit(int16_t dev_id, uint16_t vchan)
 {
@@ -1001,9 +928,6 @@ rte_dma_submit(int16_t dev_id, uint16_t vchan)
 }
 
 /**
- * @warning
- * @b EXPERIMENTAL: this API may change without prior notice.
- *
  * Return the number of operations that have been successfully completed.
  * Once an operation has been reported as completed, the results of that
  * operation will be visible to all cores on the system.
@@ -1025,7 +949,6 @@ rte_dma_submit(int16_t dev_id, uint16_t vchan)
  *   The number of operations that successfully completed. This return value
  *   must be less than or equal to the value of nb_cpls.
  */
-__rte_experimental
 static inline uint16_t
 rte_dma_completed(int16_t dev_id, uint16_t vchan, const uint16_t nb_cpls,
 		  uint16_t *last_idx, bool *has_error)
@@ -1060,9 +983,6 @@ rte_dma_completed(int16_t dev_id, uint16_t vchan, const uint16_t nb_cpls,
 }
 
 /**
- * @warning
- * @b EXPERIMENTAL: this API may change without prior notice.
- *
  * Return the number of operations that have been completed, and the operations
  * result may succeed or fail.
  * Once an operation has been reported as completed successfully, the results of that
@@ -1088,7 +1008,6 @@ rte_dma_completed(int16_t dev_id, uint16_t vchan, const uint16_t nb_cpls,
  *   If this number is greater than zero (assuming n), then n values in the
  *   status array are also set.
  */
-__rte_experimental
 static inline uint16_t
 rte_dma_completed_status(int16_t dev_id, uint16_t vchan,
 			 const uint16_t nb_cpls, uint16_t *last_idx,
@@ -1112,9 +1031,6 @@ rte_dma_completed_status(int16_t dev_id, uint16_t vchan,
 }
 
 /**
- * @warning
- * @b EXPERIMENTAL: this API may change without prior notice.
- *
  * Check remaining capacity in descriptor ring for the current burst.
  *
  * @param dev_id
@@ -1126,7 +1042,6 @@ rte_dma_completed_status(int16_t dev_id, uint16_t vchan,
  *   - Remaining space in the descriptor ring for the current burst.
  *   - 0 on error
  */
-__rte_experimental
 static inline uint16_t
 rte_dma_burst_capacity(int16_t dev_id, uint16_t vchan)
 {
diff --git a/lib/dmadev/version.map b/lib/dmadev/version.map
index 7031d6b335e9..2a3736514c8f 100644
--- a/lib/dmadev/version.map
+++ b/lib/dmadev/version.map
@@ -1,4 +1,4 @@
-EXPERIMENTAL {
+DPDK_24 {
 	global:
 
 	rte_dma_close;
-- 
2.39.2


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

* [PATCH v2 15/29] meter: remove experimental warning from comments
  2023-08-09  0:09 ` [PATCH v2 00/29] promote many API's to stable Stephen Hemminger
                     ` (13 preceding siblings ...)
  2023-08-09  0:10   ` [PATCH v2 14/29] dmadev: mark API's as not experimental Stephen Hemminger
@ 2023-08-09  0:10   ` 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
                     ` (14 subsequent siblings)
  29 siblings, 2 replies; 219+ messages in thread
From: Stephen Hemminger @ 2023-08-09  0:10 UTC (permalink / raw)
  To: dev; +Cc: Stephen Hemminger, Cristian Dumitrescu

The API's for rte_meter_trtcm were never properly flagged
as experimental; missing __rte_experimental but there was
an experimental comment in the docbook comment.
Remove the comment.

Signed-off-by: Stephen Hemminger <stephen@networkplumber.org>
---
 lib/meter/rte_meter.h | 12 ------------
 1 file changed, 12 deletions(-)

diff --git a/lib/meter/rte_meter.h b/lib/meter/rte_meter.h
index 6ba99674361a..bd68cbe38903 100644
--- a/lib/meter/rte_meter.h
+++ b/lib/meter/rte_meter.h
@@ -124,9 +124,6 @@ int
 rte_meter_trtcm_profile_config(struct rte_meter_trtcm_profile *p,
 	struct rte_meter_trtcm_params *params);
 /**
- * @warning
- * @b EXPERIMENTAL: this API may change without prior notice
- *
  * trTCM RFC 4115 profile configuration
  *
  * @param p
@@ -170,9 +167,6 @@ rte_meter_trtcm_config(struct rte_meter_trtcm *m,
 	struct rte_meter_trtcm_profile *p);
 
 /**
- * @warning
- * @b EXPERIMENTAL: this API may change without prior notice
- *
  * trTCM RFC 4115 configuration per metered traffic flow
  *
  * @param m
@@ -273,9 +267,6 @@ rte_meter_trtcm_color_aware_check(struct rte_meter_trtcm *m,
 	enum rte_color pkt_color);
 
 /**
- * @warning
- * @b EXPERIMENTAL: this API may change without prior notice
- *
  * trTCM RFC4115 color blind traffic metering
  *
  * @param m
@@ -297,9 +288,6 @@ rte_meter_trtcm_rfc4115_color_blind_check(
 	uint32_t pkt_len);
 
 /**
- * @warning
- * @b EXPERIMENTAL: this API may change without prior notice
- *
  * trTCM RFC4115 color aware traffic metering
  *
  * @param m
-- 
2.39.2


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

* [PATCH v2 16/29] power: remove experimental from API's
  2023-08-09  0:09 ` [PATCH v2 00/29] promote many API's to stable Stephen Hemminger
                     ` (14 preceding siblings ...)
  2023-08-09  0:10   ` [PATCH v2 15/29] meter: remove experimental warning from comments Stephen Hemminger
@ 2023-08-09  0:10   ` Stephen Hemminger
  2023-10-20  9:47     ` Hunt, David
  2023-08-09  0:10   ` [PATCH v2 17/29] kvargs: remove experimental flag Stephen Hemminger
                     ` (13 subsequent siblings)
  29 siblings, 1 reply; 219+ messages in thread
From: Stephen Hemminger @ 2023-08-09  0:10 UTC (permalink / raw)
  To: dev; +Cc: Stephen Hemminger, Anatoly Burakov, David Hunt

The power management API's were last changed in 22.11 release.
Therefore remove experimental for 23.11 release.

Signed-off-by: Stephen Hemminger <stephen@networkplumber.org>
---
 lib/power/rte_power.h               |  4 ---
 lib/power/rte_power_guest_channel.h |  4 ---
 lib/power/rte_power_intel_uncore.h  |  9 -------
 lib/power/rte_power_pmd_mgmt.h      | 40 -----------------------------
 lib/power/version.map               | 33 ++++++++----------------
 5 files changed, 11 insertions(+), 79 deletions(-)

diff --git a/lib/power/rte_power.h b/lib/power/rte_power.h
index 5e2b87c775bf..4e7560118f3b 100644
--- a/lib/power/rte_power.h
+++ b/lib/power/rte_power.h
@@ -24,9 +24,6 @@ enum power_management_env {PM_ENV_NOT_SET, PM_ENV_ACPI_CPUFREQ, PM_ENV_KVM_VM,
 		PM_ENV_PSTATE_CPUFREQ, PM_ENV_CPPC_CPUFREQ};
 
 /**
- * @warning
- * @b EXPERIMENTAL: this API may change, or be removed, without prior notice
- *
  * Check if a specific power management environment type is supported on a
  * currently running system.
  *
@@ -38,7 +35,6 @@ enum power_management_env {PM_ENV_NOT_SET, PM_ENV_ACPI_CPUFREQ, PM_ENV_KVM_VM,
  *   - 0 if unsupported
  *   - -1 if error, with rte_errno indicating reason for error.
  */
-__rte_experimental
 int rte_power_check_env_supported(enum power_management_env env);
 
 /**
diff --git a/lib/power/rte_power_guest_channel.h b/lib/power/rte_power_guest_channel.h
index b5de1bd24318..55b76dfc4c08 100644
--- a/lib/power/rte_power_guest_channel.h
+++ b/lib/power/rte_power_guest_channel.h
@@ -135,9 +135,6 @@ int rte_power_guest_channel_send_msg(struct rte_power_channel_packet *pkt,
 			unsigned int lcore_id);
 
 /**
- * @warning
- * @b EXPERIMENTAL: this API may change without prior notice.
- *
  * Receive a message contained in pkt over the Virtio-Serial
  * from the host endpoint.
  *
@@ -155,7 +152,6 @@ int rte_power_guest_channel_send_msg(struct rte_power_channel_packet *pkt,
  *  - 0 on success.
  *  - Negative on error.
  */
-__rte_experimental
 int rte_power_guest_channel_receive_msg(void *pkt,
 		size_t pkt_len,
 		unsigned int lcore_id);
diff --git a/lib/power/rte_power_intel_uncore.h b/lib/power/rte_power_intel_uncore.h
index 0bd9f193a170..8c4a533d80c1 100644
--- a/lib/power/rte_power_intel_uncore.h
+++ b/lib/power/rte_power_intel_uncore.h
@@ -34,7 +34,6 @@ extern "C" {
  *  - 0 on success.
  *  - Negative on error.
  */
-__rte_experimental
 int
 rte_power_uncore_init(unsigned int pkg, unsigned int die);
 
@@ -56,7 +55,6 @@ rte_power_uncore_init(unsigned int pkg, unsigned int die);
  *  - 0 on success.
  *  - Negative on error.
  */
-__rte_experimental
 int
 rte_power_uncore_exit(unsigned int pkg, unsigned int die);
 
@@ -77,7 +75,6 @@ rte_power_uncore_exit(unsigned int pkg, unsigned int die);
  *  The current index of available frequencies.
  *  If error, it will return 'RTE_POWER_INVALID_FREQ_INDEX = (~0)'.
  */
-__rte_experimental
 uint32_t
 rte_power_get_uncore_freq(unsigned int pkg, unsigned int die);
 
@@ -102,7 +99,6 @@ rte_power_get_uncore_freq(unsigned int pkg, unsigned int die);
  *  - 0 on success without frequency changed.
  *  - Negative on error.
  */
-__rte_experimental
 int
 rte_power_set_uncore_freq(unsigned int pkg, unsigned int die, uint32_t index);
 
@@ -125,7 +121,6 @@ rte_power_set_uncore_freq(unsigned int pkg, unsigned int die, uint32_t index);
  *  - 0 on success without frequency changed.
  *  - Negative on error.
  */
-__rte_experimental
 int
 rte_power_uncore_freq_max(unsigned int pkg, unsigned int die);
 
@@ -148,7 +143,6 @@ rte_power_uncore_freq_max(unsigned int pkg, unsigned int die);
  *  - 0 on success without frequency changed.
  *  - Negative on error.
  */
-__rte_experimental
 int
 rte_power_uncore_freq_min(unsigned int pkg, unsigned int die);
 
@@ -168,7 +162,6 @@ rte_power_uncore_freq_min(unsigned int pkg, unsigned int die);
  *  - The number of available index's in frequency array.
  *  - Negative on error.
  */
-__rte_experimental
 int
 rte_power_uncore_get_num_freqs(unsigned int pkg, unsigned int die);
 
@@ -182,7 +175,6 @@ rte_power_uncore_get_num_freqs(unsigned int pkg, unsigned int die);
  *  - Zero on error.
  *  - Number of package on system on success.
  */
-__rte_experimental
 unsigned int
 rte_power_uncore_get_num_pkgs(void);
 
@@ -200,7 +192,6 @@ rte_power_uncore_get_num_pkgs(void);
  *  - Zero on error.
  *  - Number of dies for package on sucecss.
  */
-__rte_experimental
 unsigned int
 rte_power_uncore_get_num_dies(unsigned int pkg);
 
diff --git a/lib/power/rte_power_pmd_mgmt.h b/lib/power/rte_power_pmd_mgmt.h
index 0f1a2eb22eb4..456145661917 100644
--- a/lib/power/rte_power_pmd_mgmt.h
+++ b/lib/power/rte_power_pmd_mgmt.h
@@ -33,9 +33,6 @@ enum rte_power_pmd_mgmt_type {
 };
 
 /**
- * @warning
- * @b EXPERIMENTAL: this API may change, or be removed, without prior notice.
- *
  * Enable power management on a specified Ethernet device Rx queue and lcore.
  *
  * @note This function is not thread-safe.
@@ -55,16 +52,12 @@ enum rte_power_pmd_mgmt_type {
  *   0 on success
  *   <0 on error
  */
-__rte_experimental
 int
 rte_power_ethdev_pmgmt_queue_enable(unsigned int lcore_id,
 		uint16_t port_id, uint16_t queue_id,
 		enum rte_power_pmd_mgmt_type mode);
 
 /**
- * @warning
- * @b EXPERIMENTAL: this API may change, or be removed, without prior notice.
- *
  * Disable power management on a specified Ethernet device Rx queue and lcore.
  *
  * @note This function is not thread-safe.
@@ -82,42 +75,30 @@ rte_power_ethdev_pmgmt_queue_enable(unsigned int lcore_id,
  *   0 on success
  *   <0 on error
  */
-__rte_experimental
 int
 rte_power_ethdev_pmgmt_queue_disable(unsigned int lcore_id,
 		uint16_t port_id, uint16_t queue_id);
 
 /**
- * @warning
- * @b EXPERIMENTAL: this API may change, or be removed, without prior notice.
- *
  * Set a emptypoll_max to specified value. Used to specify the number of empty
  * polls to wait before entering sleep state.
  *
  * @param max
  *   The value to set emptypoll_max to.
  */
-__rte_experimental
 void
 rte_power_pmd_mgmt_set_emptypoll_max(unsigned int max);
 
 /**
- * @warning
- * @b EXPERIMENTAL: this API may change, or be removed, without prior notice.
- *
  * Get the current value of emptypoll_max.
  *
  * @return
  *   The current emptypoll_max value
  */
-__rte_experimental
 unsigned int
 rte_power_pmd_mgmt_get_emptypoll_max(void);
 
 /**
- * @warning
- * @b EXPERIMENTAL: this API may change, or be removed, without prior notice.
- *
  * Set the pause_duration. Used to adjust the pause mode callback duration.
  *
  * @note Duration must be greater than zero.
@@ -128,27 +109,19 @@ rte_power_pmd_mgmt_get_emptypoll_max(void);
  *   0 on success
  *   <0 on error
  */
-__rte_experimental
 int
 rte_power_pmd_mgmt_set_pause_duration(unsigned int duration);
 
 /**
- * @warning
- * @b EXPERIMENTAL: this API may change, or be removed, without prior notice.
- *
  * Get the current value of pause_duration.
  *
  * @return
  *   The current pause_duration value.
  */
-__rte_experimental
 unsigned int
 rte_power_pmd_mgmt_get_pause_duration(void);
 
 /**
- * @warning
- * @b EXPERIMENTAL: this API may change, or be removed, without prior notice.
- *
  * Set the min frequency to be used for frequency scaling or zero to use defaults.
  *
  * @note Supported by: Pstate mode.
@@ -161,14 +134,10 @@ rte_power_pmd_mgmt_get_pause_duration(void);
  *   0 on success
  *   <0 on error
  */
-__rte_experimental
 int
 rte_power_pmd_mgmt_set_scaling_freq_min(unsigned int lcore, unsigned int min);
 
 /**
- * @warning
- * @b EXPERIMENTAL: this API may change, or be removed, without prior notice.
- *
  * Set the max frequency to be used for frequency scaling or zero to use defaults.
  *
  * @note Supported by: Pstate mode.
@@ -182,14 +151,10 @@ rte_power_pmd_mgmt_set_scaling_freq_min(unsigned int lcore, unsigned int min);
  *   0 on success
  *   <0 on error
  */
-__rte_experimental
 int
 rte_power_pmd_mgmt_set_scaling_freq_max(unsigned int lcore, unsigned int max);
 
 /**
- * @warning
- * @b EXPERIMENTAL: this API may change, or be removed, without prior notice.
- *
  * Get the current configured min frequency used for frequency scaling.
  *
  * @note Supported by: Pstate mode.
@@ -202,14 +167,10 @@ rte_power_pmd_mgmt_set_scaling_freq_max(unsigned int lcore, unsigned int max);
  *   , in KiloHertz, used for frequency scaling.
  *   <0 on error
  */
-__rte_experimental
 int
 rte_power_pmd_mgmt_get_scaling_freq_min(unsigned int lcore);
 
 /**
- * @warning
- * @b EXPERIMENTAL: this API may change, or be removed, without prior notice.
- *
  * Get the current configured max frequency used for frequency scaling.
  *
  * @note Supported by: Pstate mode.
@@ -222,7 +183,6 @@ rte_power_pmd_mgmt_get_scaling_freq_min(unsigned int lcore);
  *   , in KiloHertz, used for frequency scaling.
  *   <0 on error
  */
-__rte_experimental
 int
 rte_power_pmd_mgmt_get_scaling_freq_max(unsigned int lcore);
 
diff --git a/lib/power/version.map b/lib/power/version.map
index b8b54f768e5b..dae4bcfa0956 100644
--- a/lib/power/version.map
+++ b/lib/power/version.map
@@ -1,6 +1,9 @@
 DPDK_24 {
 	global:
 
+	rte_power_check_env_supported;
+	rte_power_ethdev_pmgmt_queue_disable;
+	rte_power_ethdev_pmgmt_queue_enable;
 	rte_power_exit;
 	rte_power_freq_disable_turbo;
 	rte_power_freq_down;
@@ -12,27 +15,10 @@ DPDK_24 {
 	rte_power_get_capabilities;
 	rte_power_get_env;
 	rte_power_get_freq;
+	rte_power_get_uncore_freq;
+	rte_power_guest_channel_receive_msg;
 	rte_power_guest_channel_send_msg;
 	rte_power_init;
-	rte_power_set_env;
-	rte_power_set_freq;
-	rte_power_turbo_status;
-	rte_power_unset_env;
-
-	local: *;
-};
-
-EXPERIMENTAL {
-	global:
-
-	rte_power_check_env_supported;
-	rte_power_guest_channel_receive_msg;
-
-	# added in 21.02
-	rte_power_ethdev_pmgmt_queue_disable;
-	rte_power_ethdev_pmgmt_queue_enable;
-
-	# added in 22.07
 	rte_power_pmd_mgmt_get_emptypoll_max;
 	rte_power_pmd_mgmt_get_pause_duration;
 	rte_power_pmd_mgmt_get_scaling_freq_max;
@@ -41,10 +27,10 @@ EXPERIMENTAL {
 	rte_power_pmd_mgmt_set_pause_duration;
 	rte_power_pmd_mgmt_set_scaling_freq_max;
 	rte_power_pmd_mgmt_set_scaling_freq_min;
-
-	# added in 22.11
-	rte_power_get_uncore_freq;
+	rte_power_set_env;
+	rte_power_set_freq;
 	rte_power_set_uncore_freq;
+	rte_power_turbo_status;
 	rte_power_uncore_exit;
 	rte_power_uncore_freq_max;
 	rte_power_uncore_freq_min;
@@ -52,4 +38,7 @@ EXPERIMENTAL {
 	rte_power_uncore_get_num_freqs;
 	rte_power_uncore_get_num_pkgs;
 	rte_power_uncore_init;
+	rte_power_unset_env;
+
+	local: *;
 };
-- 
2.39.2


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

* [PATCH v2 17/29] kvargs: remove experimental flag
  2023-08-09  0:09 ` [PATCH v2 00/29] promote many API's to stable Stephen Hemminger
                     ` (15 preceding siblings ...)
  2023-08-09  0:10   ` [PATCH v2 16/29] power: remove experimental from API's Stephen Hemminger
@ 2023-08-09  0:10   ` 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
                     ` (12 subsequent siblings)
  29 siblings, 1 reply; 219+ messages in thread
From: Stephen Hemminger @ 2023-08-09  0:10 UTC (permalink / raw)
  To: dev; +Cc: Stephen Hemminger, Olivier Matz

The function rte_kvargs_get_with_value was added in 21.11
so experimental flag can be removed.

Signed-off-by: Stephen Hemminger <stephen@networkplumber.org>
---
 lib/kvargs/rte_kvargs.h | 4 ----
 lib/kvargs/version.map  | 8 +-------
 2 files changed, 1 insertion(+), 11 deletions(-)

diff --git a/lib/kvargs/rte_kvargs.h b/lib/kvargs/rte_kvargs.h
index 4900b750bc0b..36804cfb1543 100644
--- a/lib/kvargs/rte_kvargs.h
+++ b/lib/kvargs/rte_kvargs.h
@@ -145,9 +145,6 @@ void rte_kvargs_free(struct rte_kvargs *kvlist);
 const char *rte_kvargs_get(const struct rte_kvargs *kvlist, const char *key);
 
 /**
- * @warning
- * @b EXPERIMENTAL: this API may change without prior notice
- *
  * Get the value associated with a given key and value.
  *
  * Find the first entry in the kvlist whose key and value match the
@@ -167,7 +164,6 @@ const char *rte_kvargs_get(const struct rte_kvargs *kvlist, const char *key);
  *   NULL if no key matches the input,
  *   a value associated with a matching key otherwise.
  */
-__rte_experimental
 const char *rte_kvargs_get_with_value(const struct rte_kvargs *kvlist,
 				      const char *key, const char *value);
 
diff --git a/lib/kvargs/version.map b/lib/kvargs/version.map
index 387a94e725cf..cda85d171f32 100644
--- a/lib/kvargs/version.map
+++ b/lib/kvargs/version.map
@@ -4,16 +4,10 @@ DPDK_24 {
 	rte_kvargs_count;
 	rte_kvargs_free;
 	rte_kvargs_get;
+	rte_kvargs_get_with_value;
 	rte_kvargs_parse;
 	rte_kvargs_parse_delim;
 	rte_kvargs_process;
 
 	local: *;
 };
-
-EXPERIMENTAL {
-	global:
-
-	# added in 21.11
-	rte_kvargs_get_with_value;
-};
-- 
2.39.2


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

* [PATCH v2 18/29] ip_frag: mark a couple of functions stable
  2023-08-09  0:09 ` [PATCH v2 00/29] promote many API's to stable Stephen Hemminger
                     ` (16 preceding siblings ...)
  2023-08-09  0:10   ` [PATCH v2 17/29] kvargs: remove experimental flag Stephen Hemminger
@ 2023-08-09  0:10   ` Stephen Hemminger
  2023-09-17 13:06     ` Konstantin Ananyev
  2023-08-09  0:10   ` [PATCH v2 19/29] member: remove experimental tag Stephen Hemminger
                     ` (11 subsequent siblings)
  29 siblings, 1 reply; 219+ messages in thread
From: Stephen Hemminger @ 2023-08-09  0:10 UTC (permalink / raw)
  To: dev; +Cc: Stephen Hemminger, Konstantin Ananyev

There were two functions added in 22.11 which were
marked as experimental. Remove the experimental tag.

Signed-off-by: Stephen Hemminger <stephen@networkplumber.org>
---
 lib/ip_frag/rte_ip_frag.h | 2 --
 lib/ip_frag/version.map   | 9 ++-------
 2 files changed, 2 insertions(+), 9 deletions(-)

diff --git a/lib/ip_frag/rte_ip_frag.h b/lib/ip_frag/rte_ip_frag.h
index feab72ae64b9..cd3a3e143ee7 100644
--- a/lib/ip_frag/rte_ip_frag.h
+++ b/lib/ip_frag/rte_ip_frag.h
@@ -205,7 +205,6 @@ int32_t rte_ipv4_fragment_packet(struct rte_mbuf *pkt_in,
  *   in the pkts_out array.
  *   Otherwise - (-1) * errno.
  */
-__rte_experimental
 int32_t
 rte_ipv4_fragment_copy_nonseg_packet(struct rte_mbuf *pkt_in,
 	struct rte_mbuf **pkts_out,
@@ -289,7 +288,6 @@ rte_ip_frag_table_statistics_dump(FILE * f, const struct rte_ip_frag_tbl *tbl);
  * @param tms
  *   Current timestamp
  */
-__rte_experimental
 void
 rte_ip_frag_table_del_expired_entries(struct rte_ip_frag_tbl *tbl,
 	struct rte_ip_frag_death_row *dr, uint64_t tms);
diff --git a/lib/ip_frag/version.map b/lib/ip_frag/version.map
index 7ba446c9938b..3e7e573dc412 100644
--- a/lib/ip_frag/version.map
+++ b/lib/ip_frag/version.map
@@ -3,19 +3,14 @@ DPDK_24 {
 
 	rte_ip_frag_free_death_row;
 	rte_ip_frag_table_create;
+	rte_ip_frag_table_del_expired_entries;
 	rte_ip_frag_table_destroy;
 	rte_ip_frag_table_statistics_dump;
 	rte_ipv4_frag_reassemble_packet;
+	rte_ipv4_fragment_copy_nonseg_packet;
 	rte_ipv4_fragment_packet;
 	rte_ipv6_frag_reassemble_packet;
 	rte_ipv6_fragment_packet;
 
 	local: *;
 };
-
-EXPERIMENTAL {
-	global:
-
-	rte_ip_frag_table_del_expired_entries;
-	rte_ipv4_fragment_copy_nonseg_packet;
-};
-- 
2.39.2


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

* [PATCH v2 19/29] member: remove experimental tag
  2023-08-09  0:09 ` [PATCH v2 00/29] promote many API's to stable Stephen Hemminger
                     ` (17 preceding siblings ...)
  2023-08-09  0:10   ` [PATCH v2 18/29] ip_frag: mark a couple of functions stable Stephen Hemminger
@ 2023-08-09  0:10   ` Stephen Hemminger
  2023-08-09  0:10   ` [PATCH v2 20/29] security: remove experimental flag Stephen Hemminger
                     ` (10 subsequent siblings)
  29 siblings, 0 replies; 219+ messages in thread
From: Stephen Hemminger @ 2023-08-09  0:10 UTC (permalink / raw)
  To: dev; +Cc: Stephen Hemminger, Yipeng Wang, Sameh Gobriel

The member library last received new API's in 22.11.
All the API's should be marked stable by now.

Signed-off-by: Stephen Hemminger <stephen@networkplumber.org>
---
 lib/member/rte_member.h | 54 -----------------------------------------
 lib/member/version.map  | 12 +++------
 2 files changed, 3 insertions(+), 63 deletions(-)

diff --git a/lib/member/rte_member.h b/lib/member/rte_member.h
index a15e0d69e696..a6bf22651700 100644
--- a/lib/member/rte_member.h
+++ b/lib/member/rte_member.h
@@ -15,9 +15,6 @@
  * bloom filter (vBF). For HT setsummary, two subtypes or modes are available,
  * cache and non-cache modes. The table below summarize some properties of
  * the different implementations.
- *
- * @warning
- * @b EXPERIMENTAL: this API may change without prior notice
  */
 
 /**
@@ -117,17 +114,11 @@ extern int librte_member_logtype;
 struct rte_member_setsum;
 
 /**
- * @warning
- * @b EXPERIMENTAL: this API may change without prior notice
- *
  * Parameter struct used to create set summary
  */
 struct rte_member_parameters;
 
 /**
- * @warning
- * @b EXPERIMENTAL: this API may change without prior notice
- *
  * Define different set summary types
  */
 enum rte_member_setsum_type {
@@ -207,9 +198,6 @@ struct rte_member_setsum {
 } __rte_cache_aligned;
 
 /**
- * @warning
- * @b EXPERIMENTAL: this API may change without prior notice
- *
  * Parameters used when create the set summary table. Currently user can
  * specify two types of setsummary: HT based and vBF. For HT based, user can
  * specify cache or non-cache mode. Here is a table to describe some differences
@@ -351,9 +339,6 @@ struct rte_member_parameters {
 } __rte_cache_aligned;
 
 /**
- * @warning
- * @b EXPERIMENTAL: this API may change without prior notice
- *
  * Find an existing set-summary and return a pointer to it.
  *
  * @param name
@@ -367,9 +352,6 @@ struct rte_member_setsum *
 rte_member_find_existing(const char *name);
 
 /**
- * @warning
- * @b EXPERIMENTAL: this API may change without prior notice
- *
  * Create set-summary (SS).
  *
  * @param params
@@ -382,9 +364,6 @@ struct rte_member_setsum *
 rte_member_create(const struct rte_member_parameters *params);
 
 /**
- * @warning
- * @b EXPERIMENTAL: this API may change without prior notice
- *
  * Lookup key in set-summary (SS).
  * Single key lookup and return as soon as the first match found
  *
@@ -402,9 +381,6 @@ rte_member_lookup(const struct rte_member_setsum *setsum, const void *key,
 			member_set_t *set_id);
 
 /**
- * @warning
- * @b EXPERIMENTAL: this API may change without prior notice
- *
  * Lookup bulk of keys in set-summary (SS).
  * Each key lookup returns as soon as the first match found
  *
@@ -427,9 +403,6 @@ rte_member_lookup_bulk(const struct rte_member_setsum *setsum,
 			member_set_t *set_ids);
 
 /**
- * @warning
- * @b EXPERIMENTAL: this API may change without prior notice
- *
  * Lookup a key in set-summary (SS) for multiple matches.
  * The key lookup will find all matched entries (multiple match).
  * Note that for cache mode of HT, each key can have at most one match. This is
@@ -456,9 +429,6 @@ rte_member_lookup_multi(const struct rte_member_setsum *setsum,
 		member_set_t *set_id);
 
 /**
- * @warning
- * @b EXPERIMENTAL: this API may change without prior notice
- *
  * Lookup a bulk of keys in set-summary (SS) for multiple matches each key.
  * Each key lookup will find all matched entries (multiple match).
  * Note that for cache mode HT, each key can have at most one match. So
@@ -489,9 +459,6 @@ rte_member_lookup_multi_bulk(const struct rte_member_setsum *setsum,
 		member_set_t *set_ids);
 
 /**
- * @warning
- * @b EXPERIMENTAL: this API may change without prior notice
- *
  * Insert key into set-summary (SS).
  *
  * @param setsum
@@ -522,9 +489,6 @@ rte_member_add(const struct rte_member_setsum *setsum, const void *key,
 			member_set_t set_id);
 
 /**
- * @warning
- * @b EXPERIMENTAL: this API may change without prior notice
- *
  * Add the packet byte size into the sketch.
  *
  * @param setsum
@@ -536,15 +500,11 @@ rte_member_add(const struct rte_member_setsum *setsum, const void *key,
  * @return
  * Return -EINVAL for invalid parameters, otherwise return 0.
  */
-__rte_experimental
 int
 rte_member_add_byte_count(const struct rte_member_setsum *setsum,
 			  const void *key, uint32_t byte_count);
 
 /**
- * @warning
- * @b EXPERIMENTAL: this API may change without prior notice
- *
  * Query packet count for a certain flow-key.
  *
  * @param setsum
@@ -556,16 +516,12 @@ rte_member_add_byte_count(const struct rte_member_setsum *setsum,
  * @return
  *   Return -EINVAL for invalid parameters.
  */
-__rte_experimental
 int
 rte_member_query_count(const struct rte_member_setsum *setsum,
 		       const void *key, uint64_t *count);
 
 
 /**
- * @warning
- * @b EXPERIMENTAL: this API may change without prior notice
- *
  * Report heavyhitter flow-keys into set-summary (SS).
  *
  * @param setsum
@@ -578,16 +534,12 @@ rte_member_query_count(const struct rte_member_setsum *setsum,
  *   Return -EINVAL for invalid parameters. Return a positive integer indicate
  *   how many heavy hitters are reported.
  */
-__rte_experimental
 int
 rte_member_report_heavyhitter(const struct rte_member_setsum *setsum,
 			      void **keys, uint64_t *counts);
 
 
 /**
- * @warning
- * @b EXPERIMENTAL: this API may change without prior notice
- *
  * De-allocate memory used by set-summary.
  *
  * @param setsum
@@ -598,9 +550,6 @@ void
 rte_member_free(struct rte_member_setsum *setsum);
 
 /**
- * @warning
- * @b EXPERIMENTAL: this API may change without prior notice
- *
  * Reset the set-summary tables. E.g. reset bits to be 0 in BF,
  * reset set_id in each entry to be RTE_MEMBER_NO_MATCH in HT based SS.
  *
@@ -611,9 +560,6 @@ void
 rte_member_reset(const struct rte_member_setsum *setsum);
 
 /**
- * @warning
- * @b EXPERIMENTAL: this API may change without prior notice
- *
  * Delete items from the set-summary. Note that vBF does not support deletion
  * in current implementation. For vBF, error code of -EINVAL will be returned.
  *
diff --git a/lib/member/version.map b/lib/member/version.map
index 9be5068d68fb..3aeba8826ba1 100644
--- a/lib/member/version.map
+++ b/lib/member/version.map
@@ -2,6 +2,7 @@ DPDK_24 {
 	global:
 
 	rte_member_add;
+	rte_member_add_byte_count;
 	rte_member_create;
 	rte_member_delete;
 	rte_member_find_existing;
@@ -10,16 +11,9 @@ DPDK_24 {
 	rte_member_lookup_bulk;
 	rte_member_lookup_multi;
 	rte_member_lookup_multi_bulk;
+	rte_member_query_count;
+	rte_member_report_heavyhitter;
 	rte_member_reset;
 
 	local: *;
 };
-
-EXPERIMENTAL {
-	global:
-
-	# added in 22.11
-	rte_member_add_byte_count;
-	rte_member_query_count;
-	rte_member_report_heavyhitter;
-};
-- 
2.39.2


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

* [PATCH v2 20/29] security: remove experimental flag
  2023-08-09  0:09 ` [PATCH v2 00/29] promote many API's to stable Stephen Hemminger
                     ` (18 preceding siblings ...)
  2023-08-09  0:10   ` [PATCH v2 19/29] member: remove experimental tag Stephen Hemminger
@ 2023-08-09  0:10   ` Stephen Hemminger
  2023-08-09  0:10   ` [PATCH v2 21/29] vhost: remove experimental from some API's Stephen Hemminger
                     ` (9 subsequent siblings)
  29 siblings, 0 replies; 219+ messages in thread
From: Stephen Hemminger @ 2023-08-09  0:10 UTC (permalink / raw)
  To: dev; +Cc: Stephen Hemminger, Akhil Goyal

The rte_security API's were last updated in 22.11.
Therefore remove the experimental tag.

Signed-off-by: Stephen Hemminger <stephen@networkplumber.org>
---
 lib/security/rte_security.h | 35 -----------------------------------
 lib/security/version.map    | 17 ++++++-----------
 2 files changed, 6 insertions(+), 46 deletions(-)

diff --git a/lib/security/rte_security.h b/lib/security/rte_security.h
index 3b2df526ba35..f70fc601a2a3 100644
--- a/lib/security/rte_security.h
+++ b/lib/security/rte_security.h
@@ -703,7 +703,6 @@ rte_security_session_create(struct rte_security_ctx *instance,
  *  - On success returns 0
  *  - On failure returns a negative errno value.
  */
-__rte_experimental
 int
 rte_security_session_update(struct rte_security_ctx *instance,
 			    void *sess,
@@ -739,9 +738,6 @@ int
 rte_security_session_destroy(struct rte_security_ctx *instance, void *sess);
 
 /**
- * @warning
- * @b EXPERIMENTAL: this API may change without prior notice
- *
  * Create MACsec security channel (SC).
  *
  * @param   instance	security instance
@@ -753,15 +749,11 @@ rte_security_session_destroy(struct rte_security_ctx *instance, void *sess);
  *  - -ENOMEM if PMD is not capable to create more SC.
  *  - other negative value for other errors.
  */
-__rte_experimental
 int
 rte_security_macsec_sc_create(struct rte_security_ctx *instance,
 			      struct rte_security_macsec_sc *conf);
 
 /**
- * @warning
- * @b EXPERIMENTAL: this API may change without prior notice
- *
  * Destroy MACsec security channel (SC).
  *
  * @param   instance	security instance
@@ -772,15 +764,11 @@ rte_security_macsec_sc_create(struct rte_security_ctx *instance,
  *  - -EINVAL if sc_id is invalid or instance is NULL.
  *  - -EBUSY if sc is being used by some session.
  */
-__rte_experimental
 int
 rte_security_macsec_sc_destroy(struct rte_security_ctx *instance, uint16_t sc_id,
 			       enum rte_security_macsec_direction dir);
 
 /**
- * @warning
- * @b EXPERIMENTAL: this API may change without prior notice
- *
  * Create MACsec security association (SA).
  *
  * @param   instance	security instance
@@ -792,15 +780,11 @@ rte_security_macsec_sc_destroy(struct rte_security_ctx *instance, uint16_t sc_id
  *  - -ENOMEM if PMD is not capable to create more SAs.
  *  - other negative value for other errors.
  */
-__rte_experimental
 int
 rte_security_macsec_sa_create(struct rte_security_ctx *instance,
 			      struct rte_security_macsec_sa *conf);
 
 /**
- * @warning
- * @b EXPERIMENTAL: this API may change without prior notice
- *
  * Destroy MACsec security association (SA).
  *
  * @param   instance	security instance
@@ -811,7 +795,6 @@ rte_security_macsec_sa_create(struct rte_security_ctx *instance,
  *  - -EINVAL if sa_id is invalid or instance is NULL.
  *  - -EBUSY if sa is being used by some session.
  */
-__rte_experimental
 int
 rte_security_macsec_sa_destroy(struct rte_security_ctx *instance, uint16_t sa_id,
 			       enum rte_security_macsec_direction dir);
@@ -822,9 +805,6 @@ typedef uint64_t rte_security_dynfield_t;
 extern int rte_security_dynfield_offset;
 
 /**
- * @warning
- * @b EXPERIMENTAL: this API may change without prior notice
- *
  * Get pointer to mbuf field for device-specific metadata.
  *
  * For performance reason, no check is done,
@@ -834,7 +814,6 @@ extern int rte_security_dynfield_offset;
  * @param	mbuf	packet to access
  * @return pointer to mbuf field
  */
-__rte_experimental
 static inline rte_security_dynfield_t *
 rte_security_dynfield(struct rte_mbuf *mbuf)
 {
@@ -844,14 +823,10 @@ rte_security_dynfield(struct rte_mbuf *mbuf)
 }
 
 /**
- * @warning
- * @b EXPERIMENTAL: this API may change without prior notice
- *
  * Check whether the dynamic field is registered.
  *
  * @return true if rte_security_dynfield_register() has been called.
  */
-__rte_experimental
 static inline bool rte_security_dynfield_is_registered(void)
 {
 	return rte_security_dynfield_offset >= 0;
@@ -900,7 +875,6 @@ rte_security_session_fast_mdata_set(void *sess, uint64_t fdata)
 }
 
 /** Function to call PMD specific function pointer set_pkt_metadata() */
-__rte_experimental
 int __rte_security_set_pkt_metadata(struct rte_security_ctx *instance,
 				    void *sess,
 				    struct rte_mbuf *m, void *params);
@@ -1072,16 +1046,12 @@ struct rte_security_stats {
  *  - On success, return 0
  *  - On failure, a negative value
  */
-__rte_experimental
 int
 rte_security_session_stats_get(struct rte_security_ctx *instance,
 			       void *sess,
 			       struct rte_security_stats *stats);
 
 /**
- * @warning
- * @b EXPERIMENTAL: this API may change without prior notice
- *
  * Get MACsec SA statistics.
  *
  * @param	instance	security instance
@@ -1092,16 +1062,12 @@ rte_security_session_stats_get(struct rte_security_ctx *instance,
  *  - On success, return 0.
  *  - On failure, a negative value.
  */
-__rte_experimental
 int
 rte_security_macsec_sa_stats_get(struct rte_security_ctx *instance,
 				 uint16_t sa_id, enum rte_security_macsec_direction dir,
 				 struct rte_security_macsec_sa_stats *stats);
 
 /**
- * @warning
- * @b EXPERIMENTAL: this API may change without prior notice
- *
  * Get MACsec SC statistics.
  *
  * @param	instance	security instance
@@ -1112,7 +1078,6 @@ rte_security_macsec_sa_stats_get(struct rte_security_ctx *instance,
  *  - On success, return 0.
  *  - On failure, a negative value.
  */
-__rte_experimental
 int
 rte_security_macsec_sc_stats_get(struct rte_security_ctx *instance,
 				 uint16_t sc_id, enum rte_security_macsec_direction dir,
diff --git a/lib/security/version.map b/lib/security/version.map
index b2097a969d1c..06eceb5c0558 100644
--- a/lib/security/version.map
+++ b/lib/security/version.map
@@ -1,19 +1,9 @@
 DPDK_24 {
 	global:
 
+	__rte_security_set_pkt_metadata;
 	rte_security_capabilities_get;
 	rte_security_capability_get;
-	rte_security_session_create;
-	rte_security_session_destroy;
-	rte_security_session_get_size;
-
-	local: *;
-};
-
-EXPERIMENTAL {
-	global:
-
-	__rte_security_set_pkt_metadata;
 	rte_security_dynfield_offset;
 	rte_security_macsec_sa_create;
 	rte_security_macsec_sa_destroy;
@@ -21,8 +11,13 @@ EXPERIMENTAL {
 	rte_security_macsec_sc_create;
 	rte_security_macsec_sc_destroy;
 	rte_security_macsec_sc_stats_get;
+	rte_security_session_create;
+	rte_security_session_destroy;
+	rte_security_session_get_size;
 	rte_security_session_stats_get;
 	rte_security_session_update;
+
+	local: *;
 };
 
 INTERNAL {
-- 
2.39.2


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

* [PATCH v2 21/29] vhost: remove experimental from some API's
  2023-08-09  0:09 ` [PATCH v2 00/29] promote many API's to stable Stephen Hemminger
                     ` (19 preceding siblings ...)
  2023-08-09  0:10   ` [PATCH v2 20/29] security: remove experimental flag Stephen Hemminger
@ 2023-08-09  0:10   ` Stephen Hemminger
  2023-08-09  0:10   ` [PATCH v2 22/29] bbdev: remove experimental tag Stephen Hemminger
                     ` (8 subsequent siblings)
  29 siblings, 0 replies; 219+ messages in thread
From: Stephen Hemminger @ 2023-08-09  0:10 UTC (permalink / raw)
  To: dev; +Cc: Stephen Hemminger, Maxime Coquelin, Chenbo Xia

All API's that before 22.11 release should have experimental
tag removed.

Signed-off-by: Stephen Hemminger <stephen@networkplumber.org>
---
 lib/vhost/rte_vhost.h        |  5 ----
 lib/vhost/rte_vhost_async.h  | 19 --------------
 lib/vhost/rte_vhost_crypto.h |  1 -
 lib/vhost/version.map        | 51 ++++++++++++++----------------------
 4 files changed, 19 insertions(+), 57 deletions(-)

diff --git a/lib/vhost/rte_vhost.h b/lib/vhost/rte_vhost.h
index fec650b1dbba..db92f0534431 100644
--- a/lib/vhost/rte_vhost.h
+++ b/lib/vhost/rte_vhost.h
@@ -509,7 +509,6 @@ rte_vhost_driver_get_vdpa_device(const char *path);
  * @return
  *  0 on success, -1 on failure
  */
-__rte_experimental
 int
 rte_vhost_driver_get_vdpa_dev_type(const char *path, uint32_t *type);
 
@@ -648,7 +647,6 @@ int rte_vhost_get_negotiated_features(int vid, uint64_t *features);
  * @return
  *  0 on success, -1 on failure
  */
-__rte_experimental
 int
 rte_vhost_get_negotiated_protocol_features(int vid,
 					   uint64_t *protocol_features);
@@ -960,7 +958,6 @@ int rte_vhost_vring_call(int vid, uint16_t vring_idx);
  * @return
  *  0 on success, -1 on failure, -EAGAIN for another retry
  */
-__rte_experimental
 int rte_vhost_vring_call_nonblock(int vid, uint16_t vring_idx);
 
 /**
@@ -987,7 +984,6 @@ uint32_t rte_vhost_rx_queue_count(int vid, uint16_t qid);
  * @return
  *  0 on success, -1 on failure
  */
-__rte_experimental
 int
 rte_vhost_get_monitor_addr(int vid, uint16_t queue_id,
 		struct rte_vhost_power_monitor_cond *pmc);
@@ -1102,7 +1098,6 @@ rte_vhost_get_vdpa_device(int vid);
  * @return
  *  0 on success, < 0 on failure
  */
-__rte_experimental
 int
 rte_vhost_backend_config_change(int vid, bool need_reply);
 
diff --git a/lib/vhost/rte_vhost_async.h b/lib/vhost/rte_vhost_async.h
index 8f190dd44b1b..3370026415fb 100644
--- a/lib/vhost/rte_vhost_async.h
+++ b/lib/vhost/rte_vhost_async.h
@@ -24,7 +24,6 @@ extern "C" {
  * @return
  *  0 on success, -1 on failures
  */
-__rte_experimental
 int rte_vhost_async_channel_register(int vid, uint16_t queue_id);
 
 /**
@@ -37,7 +36,6 @@ int rte_vhost_async_channel_register(int vid, uint16_t queue_id);
  * @return
  *  0 on success, -1 on failures
  */
-__rte_experimental
 int rte_vhost_async_channel_unregister(int vid, uint16_t queue_id);
 
 /**
@@ -54,7 +52,6 @@ int rte_vhost_async_channel_unregister(int vid, uint16_t queue_id);
  * @return
  *  0 on success, -1 on failures
  */
-__rte_experimental
 int rte_vhost_async_channel_register_thread_unsafe(int vid, uint16_t queue_id);
 
 /**
@@ -71,7 +68,6 @@ int rte_vhost_async_channel_register_thread_unsafe(int vid, uint16_t queue_id);
  * @return
  *  0 on success, -1 on failures
  */
-__rte_experimental
 int rte_vhost_async_channel_unregister_thread_unsafe(int vid,
 		uint16_t queue_id);
 
@@ -95,7 +91,6 @@ int rte_vhost_async_channel_unregister_thread_unsafe(int vid,
  * @return
  *  num of packets enqueued
  */
-__rte_experimental
 uint16_t rte_vhost_submit_enqueue_burst(int vid, uint16_t queue_id,
 		struct rte_mbuf **pkts, uint16_t count, int16_t dma_id,
 		uint16_t vchan_id);
@@ -120,7 +115,6 @@ uint16_t rte_vhost_submit_enqueue_burst(int vid, uint16_t queue_id,
  * @return
  *  num of packets returned
  */
-__rte_experimental
 uint16_t rte_vhost_poll_enqueue_completed(int vid, uint16_t queue_id,
 		struct rte_mbuf **pkts, uint16_t count, int16_t dma_id,
 		uint16_t vchan_id);
@@ -136,7 +130,6 @@ uint16_t rte_vhost_poll_enqueue_completed(int vid, uint16_t queue_id,
  * @return
  *  the amount of in-flight packets on success; -1 on failure
  */
-__rte_experimental
 int rte_vhost_async_get_inflight(int vid, uint16_t queue_id);
 
 /**
@@ -153,7 +146,6 @@ int rte_vhost_async_get_inflight(int vid, uint16_t queue_id);
  * @return
  * the amount of in-flight packets on success; -1 on failure
  */
-__rte_experimental
 int rte_vhost_async_get_inflight_thread_unsafe(int vid, uint16_t queue_id);
 
 /**
@@ -178,7 +170,6 @@ int rte_vhost_async_get_inflight_thread_unsafe(int vid, uint16_t queue_id);
  * @return
  *  Number of packets returned
  */
-__rte_experimental
 uint16_t rte_vhost_clear_queue_thread_unsafe(int vid, uint16_t queue_id,
 		struct rte_mbuf **pkts, uint16_t count, int16_t dma_id,
 		uint16_t vchan_id);
@@ -203,7 +194,6 @@ uint16_t rte_vhost_clear_queue_thread_unsafe(int vid, uint16_t queue_id,
  * @return
  *  Number of packets returned
  */
-__rte_experimental
 uint16_t rte_vhost_clear_queue(int vid, uint16_t queue_id,
 		struct rte_mbuf **pkts, uint16_t count, int16_t dma_id,
 		uint16_t vchan_id);
@@ -226,13 +216,9 @@ uint16_t rte_vhost_clear_queue(int vid, uint16_t queue_id,
  * @return
  *  0 on success, and -1 on failure
  */
-__rte_experimental
 int rte_vhost_async_dma_configure(int16_t dma_id, uint16_t vchan_id);
 
 /**
- * @warning
- * @b EXPERIMENTAL: this API may change, or be removed, without prior notice
- *
  * This function tries to receive packets from the guest with offloading
  * copies to the DMA vChannels. Successfully dequeued packets are returned
  * in "pkts". The other packets that their copies are submitted to
@@ -260,16 +246,12 @@ int rte_vhost_async_dma_configure(int16_t dma_id, uint16_t vchan_id);
  * @return
  *  Number of successfully dequeued packets
  */
-__rte_experimental
 uint16_t
 rte_vhost_async_try_dequeue_burst(int vid, uint16_t queue_id,
 	struct rte_mempool *mbuf_pool, struct rte_mbuf **pkts, uint16_t count,
 	int *nr_inflight, int16_t dma_id, uint16_t vchan_id);
 
 /**
- * @warning
- * @b EXPERIMENTAL: this API may change, or be removed, without prior notice.
- *
  * Unconfigure DMA vChannel in Vhost asynchronous data path.
  * This function should be called when the specified DMA vChannel is no longer
  * used by the Vhost library. Before this function is called, make sure there
@@ -282,7 +264,6 @@ rte_vhost_async_try_dequeue_burst(int vid, uint16_t queue_id,
  * @return
  *  0 on success, and -1 on failure
  */
-__rte_experimental
 int
 rte_vhost_async_dma_unconfigure(int16_t dma_id, uint16_t vchan_id);
 
diff --git a/lib/vhost/rte_vhost_crypto.h b/lib/vhost/rte_vhost_crypto.h
index 2b01ecda0880..71a30ba202be 100644
--- a/lib/vhost/rte_vhost_crypto.h
+++ b/lib/vhost/rte_vhost_crypto.h
@@ -40,7 +40,6 @@ enum rte_vhost_crypto_zero_copy {
  * @return
  *  0 on success, -1 on failure
  */
-__rte_experimental
 int
 rte_vhost_crypto_driver_start(const char *path);
 
diff --git a/lib/vhost/version.map b/lib/vhost/version.map
index 5bc133dafda2..9696c4d91fe8 100644
--- a/lib/vhost/version.map
+++ b/lib/vhost/version.map
@@ -9,10 +9,23 @@ DPDK_24 {
 	rte_vdpa_get_stats;
 	rte_vdpa_get_stats_names;
 	rte_vdpa_reset_stats;
+	rte_vhost_async_channel_register;
+	rte_vhost_async_channel_register_thread_unsafe;
+	rte_vhost_async_channel_unregister;
+	rte_vhost_async_channel_unregister_thread_unsafe;
+	rte_vhost_async_dma_configure;
+	rte_vhost_async_dma_unconfigure;
+	rte_vhost_async_get_inflight;
+	rte_vhost_async_get_inflight_thread_unsafe;
+	rte_vhost_async_try_dequeue_burst;
 	rte_vhost_avail_entries;
+	rte_vhost_backend_config_change;
+	rte_vhost_clear_queue;
+	rte_vhost_clear_queue_thread_unsafe;
 	rte_vhost_clr_inflight_desc_packed;
 	rte_vhost_clr_inflight_desc_split;
 	rte_vhost_crypto_create;
+	rte_vhost_crypto_driver_start;
 	rte_vhost_crypto_fetch_requests;
 	rte_vhost_crypto_finalize_requests;
 	rte_vhost_crypto_free;
@@ -26,6 +39,7 @@ DPDK_24 {
 	rte_vhost_driver_get_features;
 	rte_vhost_driver_get_protocol_features;
 	rte_vhost_driver_get_queue_num;
+	rte_vhost_driver_get_vdpa_dev_type;
 	rte_vhost_driver_get_vdpa_device;
 	rte_vhost_driver_register;
 	rte_vhost_driver_set_features;
@@ -38,8 +52,10 @@ DPDK_24 {
 	rte_vhost_get_ifname;
 	rte_vhost_get_log_base;
 	rte_vhost_get_mem_table;
+	rte_vhost_get_monitor_addr;
 	rte_vhost_get_mtu;
 	rte_vhost_get_negotiated_features;
+	rte_vhost_get_negotiated_protocol_features;
 	rte_vhost_get_numa_node;
 	rte_vhost_get_vdpa_device;
 	rte_vhost_get_vhost_ring_inflight;
@@ -49,14 +65,17 @@ DPDK_24 {
 	rte_vhost_get_vring_num;
 	rte_vhost_log_used_vring;
 	rte_vhost_log_write;
+	rte_vhost_poll_enqueue_completed;
 	rte_vhost_rx_queue_count;
 	rte_vhost_set_inflight_desc_packed;
 	rte_vhost_set_inflight_desc_split;
 	rte_vhost_set_last_inflight_io_packed;
 	rte_vhost_set_last_inflight_io_split;
 	rte_vhost_set_vring_base;
+	rte_vhost_submit_enqueue_burst;
 	rte_vhost_va_from_guest_pa;
 	rte_vhost_vring_call;
+	rte_vhost_vring_call_nonblock;
 	rte_vhost_vring_stats_get;
 	rte_vhost_vring_stats_get_names;
 	rte_vhost_vring_stats_reset;
@@ -67,38 +86,6 @@ DPDK_24 {
 EXPERIMENTAL {
 	global:
 
-	rte_vhost_crypto_driver_start;
-	rte_vhost_backend_config_change;
-	rte_vhost_async_channel_register;
-	rte_vhost_async_channel_unregister;
-	rte_vhost_submit_enqueue_burst;
-	rte_vhost_poll_enqueue_completed;
-
-	# added in 21.05
-	rte_vhost_get_negotiated_protocol_features;
-
-	# added in 21.08
-	rte_vhost_async_get_inflight;
-	rte_vhost_async_channel_register_thread_unsafe;
-	rte_vhost_async_channel_unregister_thread_unsafe;
-	rte_vhost_clear_queue_thread_unsafe;
-
-	# added in 21.11
-	rte_vhost_get_monitor_addr;
-
-	# added in 22.03
-	rte_vhost_async_dma_configure;
-
-	# added in 22.07
-	rte_vhost_async_get_inflight_thread_unsafe;
-	rte_vhost_async_try_dequeue_burst;
-	rte_vhost_driver_get_vdpa_dev_type;
-	rte_vhost_clear_queue;
-
-	# added in 22.11
-	rte_vhost_async_dma_unconfigure;
-	rte_vhost_vring_call_nonblock;
-
 	# added in 23.07
 	rte_vhost_driver_set_max_queue_num;
 	rte_vhost_notify_guest;
-- 
2.39.2


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

* [PATCH v2 22/29] bbdev: remove experimental tag
  2023-08-09  0:09 ` [PATCH v2 00/29] promote many API's to stable Stephen Hemminger
                     ` (20 preceding siblings ...)
  2023-08-09  0:10   ` [PATCH v2 21/29] vhost: remove experimental from some API's Stephen Hemminger
@ 2023-08-09  0:10   ` Stephen Hemminger
  2023-08-09  0:10   ` [PATCH v2 23/29] ipsec: remove experimental from SA API Stephen Hemminger
                     ` (7 subsequent siblings)
  29 siblings, 0 replies; 219+ messages in thread
From: Stephen Hemminger @ 2023-08-09  0:10 UTC (permalink / raw)
  To: dev; +Cc: Stephen Hemminger, Nicolas Chautru

The API's for bbdev were last added to in 22.11.
Remove experimental flag now.

Signed-off-by: Stephen Hemminger <stephen@networkplumber.org>
---
 lib/bbdev/rte_bbdev.h    |  4 ----
 lib/bbdev/rte_bbdev_op.h |  2 --
 lib/bbdev/version.map    | 18 ++++++------------
 3 files changed, 6 insertions(+), 18 deletions(-)

diff --git a/lib/bbdev/rte_bbdev.h b/lib/bbdev/rte_bbdev.h
index f124e1f5db28..0fcac39fad8b 100644
--- a/lib/bbdev/rte_bbdev.h
+++ b/lib/bbdev/rte_bbdev.h
@@ -658,7 +658,6 @@ rte_bbdev_enqueue_ldpc_dec_ops(uint16_t dev_id, uint16_t queue_id,
  *   The number of operations actually enqueued.
  *   (This is the number of processed entries in the @p ops array.)
  */
-__rte_experimental
 static inline uint16_t
 rte_bbdev_enqueue_fft_ops(uint16_t dev_id, uint16_t queue_id,
 		struct rte_bbdev_fft_op **ops, uint16_t num_ops)
@@ -813,7 +812,6 @@ rte_bbdev_dequeue_ldpc_dec_ops(uint16_t dev_id, uint16_t queue_id,
  *   The number of operations actually dequeued (this is the number of entries
  *   copied into the @p ops array).
  */
-__rte_experimental
 static inline uint16_t
 rte_bbdev_dequeue_fft_ops(uint16_t dev_id, uint16_t queue_id,
 		struct rte_bbdev_fft_op **ops, uint16_t num_ops)
@@ -964,7 +962,6 @@ rte_bbdev_queue_intr_ctl(uint16_t dev_id, uint16_t queue_id, int epfd, int op,
  * @returns
  *   Device status as string or NULL if invalid.
  */
-__rte_experimental
 const char*
 rte_bbdev_device_status_str(enum rte_bbdev_device_status status);
 
@@ -977,7 +974,6 @@ rte_bbdev_device_status_str(enum rte_bbdev_device_status status);
  * @returns
  *   Queue status as string or NULL if op_type is invalid.
  */
-__rte_experimental
 const char*
 rte_bbdev_enqueue_status_str(enum rte_bbdev_enqueue_status status);
 
diff --git a/lib/bbdev/rte_bbdev_op.h b/lib/bbdev/rte_bbdev_op.h
index 138fa19b58d6..239b9d8abd12 100644
--- a/lib/bbdev/rte_bbdev_op.h
+++ b/lib/bbdev/rte_bbdev_op.h
@@ -1041,7 +1041,6 @@ rte_bbdev_dec_op_alloc_bulk(struct rte_mempool *mempool,
  *   - 0 on success.
  *   - EINVAL if invalid mempool is provided.
  */
-__rte_experimental
 static inline int
 rte_bbdev_fft_op_alloc_bulk(struct rte_mempool *mempool,
 		struct rte_bbdev_fft_op **ops, unsigned int num_ops)
@@ -1101,7 +1100,6 @@ rte_bbdev_enc_op_free_bulk(struct rte_bbdev_enc_op **ops, unsigned int num_ops)
  * @param num_ops
  *   Number of structures.
  */
-__rte_experimental
 static inline void
 rte_bbdev_fft_op_free_bulk(struct rte_bbdev_fft_op **ops, unsigned int num_ops)
 {
diff --git a/lib/bbdev/version.map b/lib/bbdev/version.map
index 4f4bfbbd5ea1..a75a74c6a7e7 100644
--- a/lib/bbdev/version.map
+++ b/lib/bbdev/version.map
@@ -10,11 +10,17 @@ DPDK_24 {
 	rte_bbdev_dec_op_free_bulk;
 	rte_bbdev_dequeue_dec_ops;
 	rte_bbdev_dequeue_enc_ops;
+	rte_bbdev_dequeue_fft_ops;
+	rte_bbdev_device_status_str;
 	rte_bbdev_devices;
 	rte_bbdev_enc_op_alloc_bulk;
 	rte_bbdev_enc_op_free_bulk;
 	rte_bbdev_enqueue_dec_ops;
 	rte_bbdev_enqueue_enc_ops;
+	rte_bbdev_enqueue_fft_ops;
+	rte_bbdev_enqueue_status_str;
+	rte_bbdev_fft_op_alloc_bulk;
+	rte_bbdev_fft_op_free_bulk;
 	rte_bbdev_find_next;
 	rte_bbdev_get_named_dev;
 	rte_bbdev_info_get;
@@ -39,15 +45,3 @@ DPDK_24 {
 
 	local: *;
 };
-
-EXPERIMENTAL {
-	global:
-
-	# added in 22.11
-	rte_bbdev_dequeue_fft_ops;
-	rte_bbdev_device_status_str;
-	rte_bbdev_enqueue_fft_ops;
-	rte_bbdev_enqueue_status_str;
-	rte_bbdev_fft_op_alloc_bulk;
-	rte_bbdev_fft_op_free_bulk;
-};
-- 
2.39.2


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

* [PATCH v2 23/29] ipsec: remove experimental from SA API
  2023-08-09  0:09 ` [PATCH v2 00/29] promote many API's to stable Stephen Hemminger
                     ` (21 preceding siblings ...)
  2023-08-09  0:10   ` [PATCH v2 22/29] bbdev: remove experimental tag Stephen Hemminger
@ 2023-08-09  0:10   ` Stephen Hemminger
  2023-09-17 13:05     ` Konstantin Ananyev
  2023-08-09  0:10   ` [PATCH v2 24/29] compressdev: remove experimental flag Stephen Hemminger
                     ` (6 subsequent siblings)
  29 siblings, 1 reply; 219+ messages in thread
From: Stephen Hemminger @ 2023-08-09  0:10 UTC (permalink / raw)
  To: dev; +Cc: Stephen Hemminger, Konstantin Ananyev, Vladimir Medvedkin

These API's were added in 21.11, remove experimental flag.

Signed-off-by: Stephen Hemminger <stephen@networkplumber.org>
---
 lib/ipsec/rte_ipsec.h | 2 --
 lib/ipsec/version.map | 9 +--------
 2 files changed, 1 insertion(+), 10 deletions(-)

diff --git a/lib/ipsec/rte_ipsec.h b/lib/ipsec/rte_ipsec.h
index 04129926b69f..81624f909192 100644
--- a/lib/ipsec/rte_ipsec.h
+++ b/lib/ipsec/rte_ipsec.h
@@ -168,7 +168,6 @@ rte_ipsec_pkt_process(const struct rte_ipsec_session *ss, struct rte_mbuf *mb[],
  * @return
  *   0 on success, negative value otherwise.
  */
-__rte_experimental
 int
 rte_ipsec_telemetry_sa_add(const struct rte_ipsec_sa *sa);
 
@@ -178,7 +177,6 @@ rte_ipsec_telemetry_sa_add(const struct rte_ipsec_sa *sa);
  * @param sa
  *   Pointer to the *rte_ipsec_sa* object that will have telemetry disabled.
  */
-__rte_experimental
 void
 rte_ipsec_telemetry_sa_del(const struct rte_ipsec_sa *sa);
 
diff --git a/lib/ipsec/version.map b/lib/ipsec/version.map
index f0063af354f0..9d01ebeadc4c 100644
--- a/lib/ipsec/version.map
+++ b/lib/ipsec/version.map
@@ -16,15 +16,8 @@ DPDK_24 {
 	rte_ipsec_sad_lookup;
 	rte_ipsec_ses_from_crypto;
 	rte_ipsec_session_prepare;
-
-	local: *;
-};
-
-EXPERIMENTAL {
-	global:
-
-	# added in 21.11
 	rte_ipsec_telemetry_sa_add;
 	rte_ipsec_telemetry_sa_del;
 
+	local: *;
 };
-- 
2.39.2


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

* [PATCH v2 24/29] compressdev: remove experimental flag
  2023-08-09  0:09 ` [PATCH v2 00/29] promote many API's to stable Stephen Hemminger
                     ` (22 preceding siblings ...)
  2023-08-09  0:10   ` [PATCH v2 23/29] ipsec: remove experimental from SA API Stephen Hemminger
@ 2023-08-09  0:10   ` Stephen Hemminger
  2023-08-09  0:10   ` [PATCH v2 25/29] regexdev: remove experimental tag Stephen Hemminger
                     ` (5 subsequent siblings)
  29 siblings, 0 replies; 219+ messages in thread
From: Stephen Hemminger @ 2023-08-09  0:10 UTC (permalink / raw)
  To: dev; +Cc: Stephen Hemminger, Thomas Monjalon, Fan Zhang, Ashish Gupta

The compressdev can not hide under the experimental flag.
Remove the experimental flag and require ABI to be stable.

Signed-off-by: Stephen Hemminger <stephen@networkplumber.org>
---
 MAINTAINERS                           |  2 +-
 lib/compressdev/rte_comp.h            |  6 ------
 lib/compressdev/rte_compressdev.h     | 26 --------------------------
 lib/compressdev/rte_compressdev_pmd.h |  6 ------
 lib/compressdev/version.map           |  2 +-
 5 files changed, 2 insertions(+), 40 deletions(-)

diff --git a/MAINTAINERS b/MAINTAINERS
index f020972b609b..75e020892471 100644
--- a/MAINTAINERS
+++ b/MAINTAINERS
@@ -458,7 +458,7 @@ F: lib/security/
 F: doc/guides/prog_guide/rte_security.rst
 F: app/test/test_security*
 
-Compression API - EXPERIMENTAL
+Compression API
 M: Fan Zhang <fanzhang.oss@gmail.com>
 M: Ashish Gupta <ashish.gupta@marvell.com>
 T: git://dpdk.org/next/dpdk-next-crypto
diff --git a/lib/compressdev/rte_comp.h b/lib/compressdev/rte_comp.h
index bf896d07223c..232564cf5e9a 100644
--- a/lib/compressdev/rte_comp.h
+++ b/lib/compressdev/rte_comp.h
@@ -499,7 +499,6 @@ struct rte_comp_op {
  *  - On success pointer to mempool
  *  - On failure NULL
  */
-__rte_experimental
 struct rte_mempool *
 rte_comp_op_pool_create(const char *name,
 		unsigned int nb_elts, unsigned int cache_size,
@@ -515,7 +514,6 @@ rte_comp_op_pool_create(const char *name,
  * - On success returns a valid rte_comp_op structure
  * - On failure returns NULL
  */
-__rte_experimental
 struct rte_comp_op *
 rte_comp_op_alloc(struct rte_mempool *mempool);
 
@@ -532,7 +530,6 @@ rte_comp_op_alloc(struct rte_mempool *mempool);
  *   - nb_ops: Success, the nb_ops requested was allocated
  *   - 0: Not enough entries in the mempool; no ops are retrieved.
  */
-__rte_experimental
 int
 rte_comp_op_bulk_alloc(struct rte_mempool *mempool,
 		struct rte_comp_op **ops, uint16_t nb_ops);
@@ -546,7 +543,6 @@ rte_comp_op_bulk_alloc(struct rte_mempool *mempool,
  *   Compress operation pointer allocated from rte_comp_op_alloc()
  *   If op is NULL, no operation is performed.
  */
-__rte_experimental
 void
 rte_comp_op_free(struct rte_comp_op *op);
 
@@ -561,7 +557,6 @@ rte_comp_op_free(struct rte_comp_op *op);
  * @param nb_ops
  *   Number of operations to free
  */
-__rte_experimental
 void
 rte_comp_op_bulk_free(struct rte_comp_op **ops, uint16_t nb_ops);
 
@@ -574,7 +569,6 @@ rte_comp_op_bulk_free(struct rte_comp_op **ops, uint16_t nb_ops);
  * @return
  *   The name of this flag, or NULL if it's not a valid feature flag.
  */
-__rte_experimental
 const char *
 rte_comp_get_feature_name(uint64_t flag);
 
diff --git a/lib/compressdev/rte_compressdev.h b/lib/compressdev/rte_compressdev.h
index 13a418631893..8cb5db0e3f7d 100644
--- a/lib/compressdev/rte_compressdev.h
+++ b/lib/compressdev/rte_compressdev.h
@@ -10,10 +10,6 @@
  *
  * RTE Compression Device APIs.
  *
- * @warning
- * @b EXPERIMENTAL:
- * All functions in this file may be changed or removed without prior notice.
- *
  * Defines comp device APIs for the provisioning of compression operations.
  */
 
@@ -54,7 +50,6 @@ struct rte_compressdev_capabilities {
 #define RTE_COMP_END_OF_CAPABILITIES_LIST() \
 	{ RTE_COMP_ALGO_UNSPECIFIED }
 
-__rte_experimental
 const struct rte_compressdev_capabilities *
 rte_compressdev_capability_get(uint8_t dev_id,
 			enum rte_comp_algorithm algo);
@@ -94,7 +89,6 @@ rte_compressdev_capability_get(uint8_t dev_id,
  * @return
  *   The name of this flag, or NULL if it's not a valid feature flag.
  */
-__rte_experimental
 const char *
 rte_compressdev_get_feature_name(uint64_t flag);
 
@@ -133,7 +127,6 @@ struct rte_compressdev_stats {
  *   - Returns compress device identifier on success.
  *   - Return -1 on failure to find named compress device.
  */
-__rte_experimental
 int
 rte_compressdev_get_dev_id(const char *name);
 
@@ -146,7 +139,6 @@ rte_compressdev_get_dev_id(const char *name);
  *   - Returns compress device name.
  *   - Returns NULL if compress device is not present.
  */
-__rte_experimental
 const char *
 rte_compressdev_name_get(uint8_t dev_id);
 
@@ -157,7 +149,6 @@ rte_compressdev_name_get(uint8_t dev_id);
  * @return
  *   - The total number of usable compress devices.
  */
-__rte_experimental
 uint8_t
 rte_compressdev_count(void);
 
@@ -175,7 +166,6 @@ rte_compressdev_count(void);
  * @return
  *   Returns number of attached compress devices.
  */
-__rte_experimental
 uint8_t
 rte_compressdev_devices_get(const char *driver_name, uint8_t *devices,
 		uint8_t nb_devices);
@@ -190,7 +180,6 @@ rte_compressdev_devices_get(const char *driver_name, uint8_t *devices,
  *   a default of zero if the socket could not be determined.
  *   -1 if returned is the dev_id value is out of range.
  */
-__rte_experimental
 int
 rte_compressdev_socket_id(uint8_t dev_id);
 
@@ -221,7 +210,6 @@ struct rte_compressdev_config {
  *   - 0: Success, device configured.
  *   - <0: Error code returned by the driver configuration function.
  */
-__rte_experimental
 int
 rte_compressdev_configure(uint8_t dev_id,
 			struct rte_compressdev_config *config);
@@ -240,7 +228,6 @@ rte_compressdev_configure(uint8_t dev_id,
  *   - 0: Success, device started.
  *   - <0: Error code of the driver device start function.
  */
-__rte_experimental
 int
 rte_compressdev_start(uint8_t dev_id);
 
@@ -251,7 +238,6 @@ rte_compressdev_start(uint8_t dev_id);
  * @param dev_id
  *   Compress device identifier
  */
-__rte_experimental
 void
 rte_compressdev_stop(uint8_t dev_id);
 
@@ -269,7 +255,6 @@ rte_compressdev_stop(uint8_t dev_id);
  *  - 0 on successfully closing device
  *  - <0 on failure to close device
  */
-__rte_experimental
 int
 rte_compressdev_close(uint8_t dev_id);
 
@@ -296,7 +281,6 @@ rte_compressdev_close(uint8_t dev_id);
  *   - 0: Success, queue pair correctly set up.
  *   - <0: Queue pair configuration failed
  */
-__rte_experimental
 int
 rte_compressdev_queue_pair_setup(uint8_t dev_id, uint16_t queue_pair_id,
 		uint32_t max_inflight_ops, int socket_id);
@@ -309,7 +293,6 @@ rte_compressdev_queue_pair_setup(uint8_t dev_id, uint16_t queue_pair_id,
  * @return
  *   - The number of configured queue pairs.
  */
-__rte_experimental
 uint16_t
 rte_compressdev_queue_pair_count(uint8_t dev_id);
 
@@ -327,7 +310,6 @@ rte_compressdev_queue_pair_count(uint8_t dev_id);
  *   - Zero if successful.
  *   - Non-zero otherwise.
  */
-__rte_experimental
 int
 rte_compressdev_stats_get(uint8_t dev_id, struct rte_compressdev_stats *stats);
 
@@ -337,7 +319,6 @@ rte_compressdev_stats_get(uint8_t dev_id, struct rte_compressdev_stats *stats);
  * @param dev_id
  *   The identifier of the device.
  */
-__rte_experimental
 void
 rte_compressdev_stats_reset(uint8_t dev_id);
 
@@ -355,7 +336,6 @@ rte_compressdev_stats_reset(uint8_t dev_id);
  * The element after the last valid element has it's op field set to
  * RTE_COMP_ALGO_UNSPECIFIED.
  */
-__rte_experimental
 void
 rte_compressdev_info_get(uint8_t dev_id, struct rte_compressdev_info *dev_info);
 
@@ -413,7 +393,6 @@ rte_compressdev_info_get(uint8_t dev_id, struct rte_compressdev_info *dev_info);
  *   of pointers to *rte_comp_op* structures effectively supplied to the
  *   *ops* array.
  */
-__rte_experimental
 uint16_t
 rte_compressdev_dequeue_burst(uint8_t dev_id, uint16_t qp_id,
 		struct rte_comp_op **ops, uint16_t nb_ops);
@@ -468,7 +447,6 @@ rte_compressdev_dequeue_burst(uint8_t dev_id, uint16_t qp_id,
  *   comp devices queue is full or if invalid parameters are specified in
  *   a *rte_comp_op*.
  */
-__rte_experimental
 uint16_t
 rte_compressdev_enqueue_burst(uint8_t dev_id, uint16_t qp_id,
 		struct rte_comp_op **ops, uint16_t nb_ops);
@@ -496,7 +474,6 @@ rte_compressdev_enqueue_burst(uint8_t dev_id, uint16_t qp_id,
  *  - Returns -ENOTSUP if comp device does not support the comp transform.
  *  - Returns -ENOMEM if the private stream could not be allocated.
  */
-__rte_experimental
 int
 rte_compressdev_stream_create(uint8_t dev_id,
 		const struct rte_comp_xform *xform,
@@ -518,7 +495,6 @@ rte_compressdev_stream_create(uint8_t dev_id,
  *  - Returns -ENOTSUP if comp device does not support STATEFUL operations.
  *  - Returns -EBUSY if can't free stream as there are inflight operations
  */
-__rte_experimental
 int
 rte_compressdev_stream_free(uint8_t dev_id, void *stream);
 
@@ -545,7 +521,6 @@ rte_compressdev_stream_free(uint8_t dev_id, void *stream);
  *  - Returns -ENOTSUP if comp device does not support the comp transform.
  *  - Returns -ENOMEM if the private_xform could not be allocated.
  */
-__rte_experimental
 int
 rte_compressdev_private_xform_create(uint8_t dev_id,
 		const struct rte_comp_xform *xform,
@@ -567,7 +542,6 @@ rte_compressdev_private_xform_create(uint8_t dev_id,
  *  - <0 in error cases
  *  - Returns -EINVAL if input parameters are invalid.
  */
-__rte_experimental
 int
 rte_compressdev_private_xform_free(uint8_t dev_id, void *private_xform);
 
diff --git a/lib/compressdev/rte_compressdev_pmd.h b/lib/compressdev/rte_compressdev_pmd.h
index ea012908b783..fa233492fe1f 100644
--- a/lib/compressdev/rte_compressdev_pmd.h
+++ b/lib/compressdev/rte_compressdev_pmd.h
@@ -59,7 +59,6 @@ struct rte_compressdev_global {
  * @return
  *   - The rte_compressdev structure pointer for the given device identifier.
  */
-__rte_experimental
 struct rte_compressdev *
 rte_compressdev_pmd_get_named_dev(const char *name);
 
@@ -292,7 +291,6 @@ struct rte_compressdev_ops {
  * @return
  *   - Slot in the rte_dev_devices array for a new device;
  */
-__rte_experimental
 struct rte_compressdev *
 rte_compressdev_pmd_allocate(const char *name, int socket_id);
 
@@ -308,7 +306,6 @@ rte_compressdev_pmd_allocate(const char *name, int socket_id);
  * @return
  *   - 0 on success, negative on error
  */
-__rte_experimental
 int
 rte_compressdev_pmd_release_device(struct rte_compressdev *dev);
 
@@ -331,7 +328,6 @@ rte_compressdev_pmd_release_device(struct rte_compressdev *dev);
  *  - 0 on success
  *  - errno on failure
  */
-__rte_experimental
 int
 rte_compressdev_pmd_parse_input_args(
 		struct rte_compressdev_pmd_init_params *params,
@@ -353,7 +349,6 @@ rte_compressdev_pmd_parse_input_args(
  *  - comp device instance on success
  *  - NULL on creation failure
  */
-__rte_experimental
 struct rte_compressdev *
 rte_compressdev_pmd_create(const char *name,
 		struct rte_device *device,
@@ -372,7 +367,6 @@ rte_compressdev_pmd_create(const char *name,
  *  - 0 on success
  *  - errno on failure
  */
-__rte_experimental
 int
 rte_compressdev_pmd_destroy(struct rte_compressdev *dev);
 
diff --git a/lib/compressdev/version.map b/lib/compressdev/version.map
index e2a108b6509f..fa891f669b5d 100644
--- a/lib/compressdev/version.map
+++ b/lib/compressdev/version.map
@@ -1,4 +1,4 @@
-EXPERIMENTAL {
+DPDK_24 {
 	global:
 
 	rte_compressdev_capability_get;
-- 
2.39.2


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

* [PATCH v2 25/29] regexdev: remove experimental tag
  2023-08-09  0:09 ` [PATCH v2 00/29] promote many API's to stable Stephen Hemminger
                     ` (23 preceding siblings ...)
  2023-08-09  0:10   ` [PATCH v2 24/29] compressdev: remove experimental flag Stephen Hemminger
@ 2023-08-09  0:10   ` Stephen Hemminger
  2023-10-11 12:44     ` Ori Kam
  2023-08-09  0:10   ` [PATCH v2 26/29] node: " Stephen Hemminger
                     ` (4 subsequent siblings)
  29 siblings, 1 reply; 219+ messages in thread
From: Stephen Hemminger @ 2023-08-09  0:10 UTC (permalink / raw)
  To: dev; +Cc: Stephen Hemminger, Ori Kam

This library was added in 22.11.
Time to make it not experimental.

Signed-off-by: Stephen Hemminger <stephen@networkplumber.org>
---
 lib/regexdev/rte_regexdev.h | 92 -------------------------------------
 lib/regexdev/version.map    |  2 +-
 2 files changed, 1 insertion(+), 93 deletions(-)

diff --git a/lib/regexdev/rte_regexdev.h b/lib/regexdev/rte_regexdev.h
index 25476f1f739d..e8e194e29540 100644
--- a/lib/regexdev/rte_regexdev.h
+++ b/lib/regexdev/rte_regexdev.h
@@ -226,9 +226,6 @@ extern int rte_regexdev_logtype;
 } while (0)
 
 /**
- * @warning
- * @b EXPERIMENTAL: this API may change without prior notice.
- *
  * Check if dev_id is ready.
  *
  * @param dev_id
@@ -238,27 +235,19 @@ extern int rte_regexdev_logtype;
  *   - 0 if device state is not in ready state.
  *   - 1 if device state is ready state.
  */
-__rte_experimental
 int rte_regexdev_is_valid_dev(uint16_t dev_id);
 
 /**
- * @warning
- * @b EXPERIMENTAL: this API may change without prior notice.
- *
  * Get the total number of RegEx devices that have been successfully
  * initialised.
  *
  * @return
  *   The total number of usable RegEx devices.
  */
-__rte_experimental
 uint8_t
 rte_regexdev_count(void);
 
 /**
- * @warning
- * @b EXPERIMENTAL: this API may change without prior notice.
- *
  * Get the device identifier for the named RegEx device.
  *
  * @param name
@@ -268,7 +257,6 @@ rte_regexdev_count(void);
  *   Returns RegEx device identifier on success.
  *   - <0: Failure to find named RegEx device.
  */
-__rte_experimental
 int
 rte_regexdev_get_dev_id(const char *name);
 
@@ -628,9 +616,6 @@ struct rte_regexdev_info {
 };
 
 /**
- * @warning
- * @b EXPERIMENTAL: this API may change without prior notice.
- *
  * Retrieve the contextual information of a RegEx device.
  *
  * @param dev_id
@@ -644,7 +629,6 @@ struct rte_regexdev_info {
  *   - 0: Success, driver updates the contextual information of the RegEx device
  *   - <0: Error code returned by the driver info get function.
  */
-__rte_experimental
 int
 rte_regexdev_info_get(uint8_t dev_id, struct rte_regexdev_info *dev_info);
 
@@ -723,9 +707,6 @@ struct rte_regexdev_config {
 };
 
 /**
- * @warning
- * @b EXPERIMENTAL: this API may change without prior notice.
- *
  * Configure a RegEx device.
  *
  * This function must be invoked first before any other function in the
@@ -743,7 +724,6 @@ struct rte_regexdev_config {
  * @return
  *   - 0: Success, device configured. Otherwise negative errno is returned.
  */
-__rte_experimental
 int
 rte_regexdev_configure(uint8_t dev_id, const struct rte_regexdev_config *cfg);
 
@@ -782,9 +762,6 @@ struct rte_regexdev_qp_conf {
 };
 
 /**
- * @warning
- * @b EXPERIMENTAL: this API may change without prior notice.
- *
  * Allocate and set up a RegEx queue pair for a RegEx device.
  *
  * @param dev_id
@@ -799,15 +776,11 @@ struct rte_regexdev_qp_conf {
  * @return
  *   0 on success. Otherwise negative errno is returned.
  */
-__rte_experimental
 int
 rte_regexdev_queue_pair_setup(uint8_t dev_id, uint16_t queue_pair_id,
 			      const struct rte_regexdev_qp_conf *qp_conf);
 
 /**
- * @warning
- * @b EXPERIMENTAL: this API may change without prior notice.
- *
  * Start a RegEx device.
  *
  * The device start step is the last one and consists of setting the RegEx
@@ -822,14 +795,10 @@ rte_regexdev_queue_pair_setup(uint8_t dev_id, uint16_t queue_pair_id,
  * @return
  *   0 on success. Otherwise negative errno is returned.
  */
-__rte_experimental
 int
 rte_regexdev_start(uint8_t dev_id);
 
 /**
- * @warning
- * @b EXPERIMENTAL: this API may change without prior notice.
- *
  * Stop a RegEx device.
  *
  * Stop a RegEx device. The device can be restarted with a call to
@@ -845,14 +814,10 @@ rte_regexdev_start(uint8_t dev_id);
  * @return
  *   0 on success. Otherwise negative errno is returned.
  */
-__rte_experimental
 int
 rte_regexdev_stop(uint8_t dev_id);
 
 /**
- * @warning
- * @b EXPERIMENTAL: this API may change without prior notice.
- *
  * Close a RegEx device. The device cannot be restarted!
  *
  * @param dev_id
@@ -861,7 +826,6 @@ rte_regexdev_stop(uint8_t dev_id);
  * @return
  *   0 on success. Otherwise negative errno is returned.
  */
-__rte_experimental
 int
 rte_regexdev_close(uint8_t dev_id);
 
@@ -897,9 +861,6 @@ enum rte_regexdev_attr_id {
 };
 
 /**
- * @warning
- * @b EXPERIMENTAL: this API may change without prior notice.
- *
  * Get an attribute from a RegEx device.
  *
  * @param dev_id
@@ -915,15 +876,11 @@ enum rte_regexdev_attr_id {
  *   - -EINVAL: Invalid device or  *attr_id* provided, or *attr_value* is NULL.
  *   - -ENOTSUP: if the device doesn't support specific *attr_id*.
  */
-__rte_experimental
 int
 rte_regexdev_attr_get(uint8_t dev_id, enum rte_regexdev_attr_id attr_id,
 		      void *attr_value);
 
 /**
- * @warning
- * @b EXPERIMENTAL: this API may change without prior notice.
- *
  * Set an attribute to a RegEx device.
  *
  * @param dev_id
@@ -939,7 +896,6 @@ rte_regexdev_attr_get(uint8_t dev_id, enum rte_regexdev_attr_id attr_id,
  *   - -EINVAL: Invalid device or  *attr_id* provided, or *attr_value* is NULL.
  *   - -ENOTSUP: if the device doesn't support specific *attr_id*.
  */
-__rte_experimental
 int
 rte_regexdev_attr_set(uint8_t dev_id, enum rte_regexdev_attr_id attr_id,
 		      const void *attr_value);
@@ -975,9 +931,6 @@ struct rte_regexdev_rule {
 };
 
 /**
- * @warning
- * @b EXPERIMENTAL: this API may change without prior notice.
- *
  * Update the local rule set.
  * This functions only modify the rule set in memory.
  * In order for the changes to take effect, the function
@@ -1008,16 +961,12 @@ struct rte_regexdev_rule {
  * @see rte_regexdev_rule_db_import(), rte_regexdev_rule_db_export(),
  *   rte_regexdev_rule_db_compile_activate()
  */
-__rte_experimental
 int
 rte_regexdev_rule_db_update(uint8_t dev_id,
 			    const struct rte_regexdev_rule *rules,
 			    uint32_t nb_rules);
 
 /**
- * @warning
- * @b EXPERIMENTAL: this API may change without prior notice.
- *
  * Compile local rule set and burn the complied result to the
  * RegEx device.
  *
@@ -1030,14 +979,10 @@ rte_regexdev_rule_db_update(uint8_t dev_id,
  * @see rte_regexdev_rule_db_import(), rte_regexdev_rule_db_export(),
  *   rte_regexdev_rule_db_update()
  */
-__rte_experimental
 int
 rte_regexdev_rule_db_compile_activate(uint8_t dev_id);
 
 /**
- * @warning
- * @b EXPERIMENTAL: this API may change without prior notice.
- *
  * Import a prebuilt rule database from a buffer to a RegEx device.
  *
  * @param dev_id
@@ -1055,15 +1000,11 @@ rte_regexdev_rule_db_compile_activate(uint8_t dev_id);
  *
  * @see rte_regexdev_rule_db_update(), rte_regexdev_rule_db_export()
  */
-__rte_experimental
 int
 rte_regexdev_rule_db_import(uint8_t dev_id, const char *rule_db,
 			    uint32_t rule_db_len);
 
 /**
- * @warning
- * @b EXPERIMENTAL: this API may change without prior notice.
- *
  * Export the prebuilt rule database from a RegEx device to the buffer.
  *
  * @param dev_id
@@ -1080,7 +1021,6 @@ rte_regexdev_rule_db_import(uint8_t dev_id, const char *rule_db,
  *
  * @see rte_regexdev_rule_db_update(), rte_regexdev_rule_db_import()
  */
-__rte_experimental
 int
 rte_regexdev_rule_db_export(uint8_t dev_id, char *rule_db);
 
@@ -1102,9 +1042,6 @@ struct rte_regexdev_xstats_map {
 };
 
 /**
- * @warning
- * @b EXPERIMENTAL: this API may change without prior notice.
- *
  * Retrieve names of extended statistics of a regex device.
  *
  * @param dev_id
@@ -1120,15 +1057,11 @@ struct rte_regexdev_xstats_map {
  *      -ENODEV for invalid *dev_id*
  *      -ENOTSUP if the device doesn't support this function.
  */
-__rte_experimental
 int
 rte_regexdev_xstats_names_get(uint8_t dev_id,
 			      struct rte_regexdev_xstats_map *xstats_map);
 
 /**
- * @warning
- * @b EXPERIMENTAL: this API may change without prior notice.
- *
  * Retrieve extended statistics of an regex device.
  *
  * @param dev_id
@@ -1147,15 +1080,11 @@ rte_regexdev_xstats_names_get(uint8_t dev_id,
  *      -ENODEV for invalid *dev_id*
  *      -ENOTSUP if the device doesn't support this function.
  */
-__rte_experimental
 int
 rte_regexdev_xstats_get(uint8_t dev_id, const uint16_t *ids,
 			uint64_t *values, uint16_t nb_values);
 
 /**
- * @warning
- * @b EXPERIMENTAL: this API may change without prior notice.
- *
  * Retrieve the value of a single stat by requesting it by name.
  *
  * @param dev_id
@@ -1174,15 +1103,11 @@ rte_regexdev_xstats_get(uint8_t dev_id, const uint16_t *ids,
  *   - -EINVAL: invalid parameters
  *   - -ENOTSUP: if not supported.
  */
-__rte_experimental
 int
 rte_regexdev_xstats_by_name_get(uint8_t dev_id, const char *name,
 				uint16_t *id, uint64_t *value);
 
 /**
- * @warning
- * @b EXPERIMENTAL: this API may change without prior notice.
- *
  * Reset the values of the xstats of the selected component in the device.
  *
  * @param dev_id
@@ -1198,15 +1123,11 @@ rte_regexdev_xstats_by_name_get(uint8_t dev_id, const char *name,
  *   - -EINVAL: invalid parameters.
  *   - -ENOTSUP: if not supported.
  */
-__rte_experimental
 int
 rte_regexdev_xstats_reset(uint8_t dev_id, const uint16_t *ids,
 			  uint16_t nb_ids);
 
 /**
- * @warning
- * @b EXPERIMENTAL: this API may change without prior notice.
- *
  * Trigger the RegEx device self test.
  *
  * @param dev_id
@@ -1216,14 +1137,10 @@ rte_regexdev_xstats_reset(uint8_t dev_id, const uint16_t *ids,
  *   - -ENOTSUP if the device doesn't support selftest.
  *   - other values < 0 on failure.
  */
-__rte_experimental
 int
 rte_regexdev_selftest(uint8_t dev_id);
 
 /**
- * @warning
- * @b EXPERIMENTAL: this API may change without prior notice.
- *
  * Dump internal information about *dev_id* to the FILE* provided in *f*.
  *
  * @param dev_id
@@ -1234,7 +1151,6 @@ rte_regexdev_selftest(uint8_t dev_id);
  * @return
  *   0 on success, negative errno on failure.
  */
-__rte_experimental
 int
 rte_regexdev_dump(uint8_t dev_id, FILE *f);
 
@@ -1432,9 +1348,6 @@ struct rte_regex_ops {
 #include "rte_regexdev_core.h"
 
 /**
- * @warning
- * @b EXPERIMENTAL: this API may change without prior notice.
- *
  * Enqueue a burst of scan request on a RegEx device.
  *
  * The rte_regexdev_enqueue_burst() function is invoked to place
@@ -1468,7 +1381,6 @@ struct rte_regex_ops {
  *   remaining ops at the end of *ops* are not consumed and the caller has
  *   to take care of them.
  */
-__rte_experimental
 static inline uint16_t
 rte_regexdev_enqueue_burst(uint8_t dev_id, uint16_t qp_id,
 			   struct rte_regex_ops **ops, uint16_t nb_ops)
@@ -1487,9 +1399,6 @@ rte_regexdev_enqueue_burst(uint8_t dev_id, uint16_t qp_id,
 }
 
 /**
- * @warning
- * @b EXPERIMENTAL: this API may change without prior notice.
- *
  * Dequeue a burst of scan response from a queue on the RegEx device.
  * The dequeued operation are stored in *rte_regexdev_op* structures
  * whose pointers are supplied in the *ops* array.
@@ -1528,7 +1437,6 @@ rte_regexdev_enqueue_burst(uint8_t dev_id, uint16_t qp_id,
  *   ops at the end of *ops* are not consumed and the caller has to take care
  *   of them.
  */
-__rte_experimental
 static inline uint16_t
 rte_regexdev_dequeue_burst(uint8_t dev_id, uint16_t qp_id,
 			   struct rte_regex_ops **ops, uint16_t nb_ops)
diff --git a/lib/regexdev/version.map b/lib/regexdev/version.map
index 3c6e9fffa1f5..914bd19dfd94 100644
--- a/lib/regexdev/version.map
+++ b/lib/regexdev/version.map
@@ -1,4 +1,4 @@
-EXPERIMENTAL {
+DPDK_24 {
 	global:
 
 	rte_regex_devices;
-- 
2.39.2


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

* [PATCH v2 26/29] node: remove experimental tag
  2023-08-09  0:09 ` [PATCH v2 00/29] promote many API's to stable Stephen Hemminger
                     ` (24 preceding siblings ...)
  2023-08-09  0:10   ` [PATCH v2 25/29] regexdev: remove experimental tag Stephen Hemminger
@ 2023-08-09  0:10   ` Stephen Hemminger
  2023-08-09  0:10   ` [PATCH v2 27/29] cryptodev: remove experimental from more API's Stephen Hemminger
                     ` (3 subsequent siblings)
  29 siblings, 0 replies; 219+ messages in thread
From: Stephen Hemminger @ 2023-08-09  0:10 UTC (permalink / raw)
  To: dev
  Cc: Stephen Hemminger, Thomas Monjalon, Nithin Dabilpuram, Pavan Nikhilesh

The node library has been around long enough that experimental
tag should be removed.  The IPv6 support was added in 23.03
but that is still enough time that it can be marked stable.

Signed-off-by: Stephen Hemminger <stephen@networkplumber.org>
---
 MAINTAINERS                 | 2 +-
 lib/node/rte_node_eth_api.h | 5 -----
 lib/node/rte_node_ip4_api.h | 6 ------
 lib/node/rte_node_ip6_api.h | 6 ------
 lib/node/version.map        | 2 +-
 5 files changed, 2 insertions(+), 19 deletions(-)

diff --git a/MAINTAINERS b/MAINTAINERS
index 75e020892471..ea6ba572a407 100644
--- a/MAINTAINERS
+++ b/MAINTAINERS
@@ -1716,7 +1716,7 @@ F: app/test/test_graph*
 F: examples/l3fwd-graph/
 F: doc/guides/sample_app_ug/l3_forward_graph.rst
 
-Nodes - EXPERIMENTAL
+Nodes
 M: Nithin Dabilpuram <ndabilpuram@marvell.com>
 M: Pavan Nikhilesh <pbhagavatula@marvell.com>
 F: lib/node/
diff --git a/lib/node/rte_node_eth_api.h b/lib/node/rte_node_eth_api.h
index 40b2021f01f9..51a4bd394110 100644
--- a/lib/node/rte_node_eth_api.h
+++ b/lib/node/rte_node_eth_api.h
@@ -8,10 +8,6 @@
 /**
  * @file rte_node_eth_api.h
  *
- * @warning
- * @b EXPERIMENTAL:
- * All functions in this file may be changed or removed without prior notice.
- *
  * This API allows to setup ethdev_rx and ethdev_tx nodes
  * and its queue associations.
  */
@@ -55,7 +51,6 @@ struct rte_node_ethdev_config {
  * @return
  *   0 on successful initialization, negative otherwise.
  */
-__rte_experimental
 int rte_node_eth_config(struct rte_node_ethdev_config *cfg,
 			uint16_t cnt, uint16_t nb_graphs);
 #ifdef __cplusplus
diff --git a/lib/node/rte_node_ip4_api.h b/lib/node/rte_node_ip4_api.h
index 3397da0ae8cd..47cb13e2b3be 100644
--- a/lib/node/rte_node_ip4_api.h
+++ b/lib/node/rte_node_ip4_api.h
@@ -8,10 +8,6 @@
 /**
  * @file rte_node_ip4_api.h
  *
- * @warning
- * @b EXPERIMENTAL:
- * All functions in this file may be changed or removed without prior notice.
- *
  * This API allows to do control path functions of ip4_* nodes
  * like ip4_lookup, ip4_rewrite.
  */
@@ -49,7 +45,6 @@ enum rte_node_ip4_lookup_next {
  * @return
  *   0 on success, negative otherwise.
  */
-__rte_experimental
 int rte_node_ip4_route_add(uint32_t ip, uint8_t depth, uint16_t next_hop,
 			   enum rte_node_ip4_lookup_next next_node);
 
@@ -68,7 +63,6 @@ int rte_node_ip4_route_add(uint32_t ip, uint8_t depth, uint16_t next_hop,
  * @return
  *   0 on success, negative otherwise.
  */
-__rte_experimental
 int rte_node_ip4_rewrite_add(uint16_t next_hop, uint8_t *rewrite_data,
 			     uint8_t rewrite_len, uint16_t dst_port);
 
diff --git a/lib/node/rte_node_ip6_api.h b/lib/node/rte_node_ip6_api.h
index f3b5a1002a02..da7be364de34 100644
--- a/lib/node/rte_node_ip6_api.h
+++ b/lib/node/rte_node_ip6_api.h
@@ -8,10 +8,6 @@
 /**
  * @file rte_node_ip6_api.h
  *
- * @warning
- * @b EXPERIMENTAL:
- * All functions in this file may be changed or removed without prior notice.
- *
  * This API allows to do control path functions of ip6_* nodes
  * like ip6_lookup, ip6_rewrite.
  */
@@ -49,7 +45,6 @@ enum rte_node_ip6_lookup_next {
  * @return
  *   0 on success, negative otherwise.
  */
-__rte_experimental
 int rte_node_ip6_route_add(const uint8_t *ip, uint8_t depth, uint16_t next_hop,
 			   enum rte_node_ip6_lookup_next next_node);
 
@@ -68,7 +63,6 @@ int rte_node_ip6_route_add(const uint8_t *ip, uint8_t depth, uint16_t next_hop,
  * @return
  *   0 on success, negative otherwise.
  */
-__rte_experimental
 int rte_node_ip6_rewrite_add(uint16_t next_hop, uint8_t *rewrite_data,
 			     uint8_t rewrite_len, uint16_t dst_port);
 
diff --git a/lib/node/version.map b/lib/node/version.map
index 40df308bfe8a..55958f577560 100644
--- a/lib/node/version.map
+++ b/lib/node/version.map
@@ -1,4 +1,4 @@
-EXPERIMENTAL {
+DPDK_24 {
 	global:
 
 	rte_node_eth_config;
-- 
2.39.2


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

* [PATCH v2 27/29] cryptodev: remove experimental from more API's
  2023-08-09  0:09 ` [PATCH v2 00/29] promote many API's to stable Stephen Hemminger
                     ` (25 preceding siblings ...)
  2023-08-09  0:10   ` [PATCH v2 26/29] node: " Stephen Hemminger
@ 2023-08-09  0:10   ` Stephen Hemminger
  2023-08-09  0:10   ` [PATCH v2 28/29] table: remove experimental from API Stephen Hemminger
                     ` (2 subsequent siblings)
  29 siblings, 0 replies; 219+ messages in thread
From: Stephen Hemminger @ 2023-08-09  0:10 UTC (permalink / raw)
  To: dev; +Cc: Stephen Hemminger, Akhil Goyal, Fan Zhang

All API's added before 23.03 should be non-experimental.

Signed-off-by: Stephen Hemminger <stephen@networkplumber.org>
---
 lib/cryptodev/rte_crypto_sym.h |  1 -
 lib/cryptodev/rte_cryptodev.h  | 32 --------------
 lib/cryptodev/version.map      | 77 ++++++++++++++--------------------
 3 files changed, 32 insertions(+), 78 deletions(-)

diff --git a/lib/cryptodev/rte_crypto_sym.h b/lib/cryptodev/rte_crypto_sym.h
index 76c868c5038c..d60564c51541 100644
--- a/lib/cryptodev/rte_crypto_sym.h
+++ b/lib/cryptodev/rte_crypto_sym.h
@@ -972,7 +972,6 @@ __rte_crypto_sym_op_attach_sym_session(struct rte_crypto_sym_op *sym_op, void *s
  *   - number of successfully filled entries in *vec* array.
  *   - negative number of elements in *vec* array required.
  */
-__rte_experimental
 static inline int
 rte_crypto_mbuf_to_vec(const struct rte_mbuf *mb, uint32_t ofs, uint32_t len,
 	struct rte_crypto_vec vec[], uint32_t num)
diff --git a/lib/cryptodev/rte_cryptodev.h b/lib/cryptodev/rte_cryptodev.h
index ba730373fbe1..50061663194b 100644
--- a/lib/cryptodev/rte_cryptodev.h
+++ b/lib/cryptodev/rte_cryptodev.h
@@ -250,7 +250,6 @@ rte_cryptodev_sym_capability_get(uint8_t dev_id,
  *   - Return description of the asymmetric crypto capability if exist.
  *   - Return NULL if the capability not exist.
  */
-__rte_experimental
 const struct rte_cryptodev_asymmetric_xform_capability *
 rte_cryptodev_asym_capability_get(uint8_t dev_id,
 		const struct rte_cryptodev_asym_capability_idx *idx);
@@ -320,7 +319,6 @@ rte_cryptodev_sym_capability_check_aead(
  *   - Return 1 if the op type is supported
  *   - Return 0 if unsupported
  */
-__rte_experimental
 int
 rte_cryptodev_asym_xform_capability_check_optype(
 	const struct rte_cryptodev_asymmetric_xform_capability *capability,
@@ -336,7 +334,6 @@ rte_cryptodev_asym_xform_capability_check_optype(
  *   - Return 0 if the parameters are in range of the capability.
  *   - Return -1 if the parameters are out of range of the capability.
  */
-__rte_experimental
 int
 rte_cryptodev_asym_xform_capability_check_modlen(
 	const struct rte_cryptodev_asymmetric_xform_capability *capability,
@@ -398,7 +395,6 @@ rte_cryptodev_get_aead_algo_enum(enum rte_crypto_aead_algorithm *algo_enum,
  * - Return -1 if string is not valid
  * - Return 0 if the string is valid
  */
-__rte_experimental
 int
 rte_cryptodev_asym_get_xform_enum(enum rte_crypto_asym_xform_type *xform_enum,
 		const char *xform_string);
@@ -835,7 +831,6 @@ rte_cryptodev_queue_pair_setup(uint8_t dev_id, uint16_t queue_pair_id,
  *	 - 1: qp was configured
  *	 - -EINVAL: device was not configured
  */
-__rte_experimental
 int
 rte_cryptodev_get_qp_status(uint8_t dev_id, uint16_t queue_pair_id);
 
@@ -926,9 +921,6 @@ rte_cryptodev_callback_unregister(uint8_t dev_id,
 		rte_cryptodev_cb_fn cb_fn, void *cb_arg);
 
 /**
- * @warning
- * @b EXPERIMENTAL: this API may change without prior notice.
- *
  * Query a cryptodev queue pair if there are pending RTE_CRYPTODEV_EVENT_ERROR
  * events.
  *
@@ -1005,7 +997,6 @@ rte_cryptodev_get_sec_ctx(uint8_t dev_id);
  *  - On success returns the created session mempool pointer
  *  - On failure returns NULL
  */
-__rte_experimental
 struct rte_mempool *
 rte_cryptodev_sym_session_pool_create(const char *name, uint32_t nb_elts,
 	uint32_t elt_size, uint32_t cache_size, uint16_t priv_size,
@@ -1032,7 +1023,6 @@ rte_cryptodev_sym_session_pool_create(const char *name, uint32_t nb_elts,
  *  - On success return mempool
  *  - On failure returns NULL
  */
-__rte_experimental
 struct rte_mempool *
 rte_cryptodev_asym_session_pool_create(const char *name, uint32_t nb_elts,
 	uint32_t cache_size, uint16_t user_data_size, int socket_id);
@@ -1074,7 +1064,6 @@ rte_cryptodev_sym_session_create(uint8_t dev_id,
  *  - -ENOMEM on memory error for session allocation.
  *  - -ENOTSUP if device doesn't support session configuration.
  */
-__rte_experimental
 int
 rte_cryptodev_asym_session_create(uint8_t dev_id,
 		struct rte_crypto_asym_xform *xforms, struct rte_mempool *mp,
@@ -1107,7 +1096,6 @@ rte_cryptodev_sym_session_free(uint8_t dev_id,
  *  - 0 if successful.
  *  - -EINVAL if device is invalid or session is NULL.
  */
-__rte_experimental
 int
 rte_cryptodev_asym_session_free(uint8_t dev_id, void *sess);
 
@@ -1117,7 +1105,6 @@ rte_cryptodev_asym_session_free(uint8_t dev_id, void *sess);
  * @return
  *   Size of the asymmetric header session.
  */
-__rte_experimental
 unsigned int
 rte_cryptodev_asym_get_header_session_size(void);
 
@@ -1145,7 +1132,6 @@ rte_cryptodev_sym_get_private_session_size(uint8_t dev_id);
  *   - Size of the asymmetric private data, if successful
  *   - 0 if device is invalid or does not have private session
  */
-__rte_experimental
 unsigned int
 rte_cryptodev_asym_get_private_session_size(uint8_t dev_id);
 
@@ -1192,7 +1178,6 @@ const char *rte_cryptodev_driver_name_get(uint8_t driver_id);
  *  - On success, zero.
  *  - On failure, a negative value.
  */
-__rte_experimental
 int
 rte_cryptodev_sym_session_set_user_data(void *sess,
 					void *data,
@@ -1229,7 +1214,6 @@ rte_cryptodev_sym_session_opaque_data_set(void *sess, uint64_t opaque)
  *  - On success return pointer to user data.
  *  - On failure returns NULL.
  */
-__rte_experimental
 void *
 rte_cryptodev_sym_session_get_user_data(void *sess);
 
@@ -1246,7 +1230,6 @@ rte_cryptodev_sym_session_get_user_data(void *sess);
  *  - -EINVAL if the session pointer is invalid.
  *  - -ENOMEM if the available user data size is smaller than the size parameter.
  */
-__rte_experimental
 int
 rte_cryptodev_asym_session_set_user_data(void *sess, void *data, uint16_t size);
 
@@ -1260,7 +1243,6 @@ rte_cryptodev_asym_session_set_user_data(void *sess, void *data, uint16_t size);
  *  - On success return pointer to user data.
  *  - On failure returns NULL.
  */
-__rte_experimental
 void *
 rte_cryptodev_asym_session_get_user_data(void *sess);
 
@@ -1276,7 +1258,6 @@ rte_cryptodev_asym_session_get_user_data(void *sess);
  * @return
  *  - Returns number of successfully processed packets.
  */
-__rte_experimental
 uint32_t
 rte_cryptodev_sym_cpu_crypto_process(uint8_t dev_id,
 	void *sess, union rte_crypto_sym_ofs ofs,
@@ -1291,7 +1272,6 @@ rte_cryptodev_sym_cpu_crypto_process(uint8_t dev_id,
  *   - If the device supports raw data-path APIs, return the context size.
  *   - If the device does not support the APIs, return -1.
  */
-__rte_experimental
 int
 rte_cryptodev_get_raw_dp_ctx_size(uint8_t dev_id);
 
@@ -1310,7 +1290,6 @@ rte_cryptodev_get_raw_dp_ctx_size(uint8_t dev_id);
  *  - On success, zero.
  *  - On failure, a negative value.
  */
-__rte_experimental
 int
 rte_cryptodev_session_event_mdata_set(uint8_t dev_id, void *sess,
 	enum rte_crypto_op_type op_type,
@@ -1536,7 +1515,6 @@ struct rte_crypto_raw_dp_ctx {
  *     - -ENOTSUP if crypto device does not support raw DP operations with the
  *        provided session.
  */
-__rte_experimental
 int
 rte_cryptodev_configure_raw_dp_ctx(uint8_t dev_id, uint16_t qp_id,
 	struct rte_crypto_raw_dp_ctx *ctx,
@@ -1568,7 +1546,6 @@ rte_cryptodev_configure_raw_dp_ctx(uint8_t dev_id, uint16_t qp_id,
  *     cached into the queue but not enqueued yet, depends on the
  *     "enqueue_status" value.
  */
-__rte_experimental
 uint32_t
 rte_cryptodev_raw_enqueue_burst(struct rte_crypto_raw_dp_ctx *ctx,
 	struct rte_crypto_sym_vec *vec, union rte_crypto_sym_ofs ofs,
@@ -1594,7 +1571,6 @@ rte_cryptodev_raw_enqueue_burst(struct rte_crypto_raw_dp_ctx *ctx,
  *        until rte_cryptodev_raw_enqueue_done() is called.
  *   - negative integer: failure.
  */
-__rte_experimental
 static __rte_always_inline int
 rte_cryptodev_raw_enqueue(struct rte_crypto_raw_dp_ctx *ctx,
 	struct rte_crypto_vec *data_vec, uint16_t n_data_vecs,
@@ -1618,7 +1594,6 @@ rte_cryptodev_raw_enqueue(struct rte_crypto_raw_dp_ctx *ctx,
  *   - On success return 0.
  *   - On failure return negative integer.
  */
-__rte_experimental
 int
 rte_cryptodev_raw_enqueue_done(struct rte_crypto_raw_dp_ctx *ctx,
 		uint32_t n);
@@ -1664,7 +1639,6 @@ rte_cryptodev_raw_enqueue_done(struct rte_crypto_raw_dp_ctx *ctx,
  *   - The number of operations dequeued or completed but not freed from the
  *     queue, depends on "dequeue_status" value.
  */
-__rte_experimental
 uint32_t
 rte_cryptodev_raw_dequeue_burst(struct rte_crypto_raw_dp_ctx *ctx,
 	rte_cryptodev_raw_get_dequeue_count_t get_dequeue_count,
@@ -1696,7 +1670,6 @@ rte_cryptodev_raw_dequeue_burst(struct rte_crypto_raw_dp_ctx *ctx,
  *   - The user data pointer retrieved from device queue or NULL if no
  *     operation is ready for dequeue.
  */
-__rte_experimental
 static __rte_always_inline void *
 rte_cryptodev_raw_dequeue(struct rte_crypto_raw_dp_ctx *ctx,
 		int *dequeue_status, enum rte_crypto_op_status *op_status)
@@ -1714,7 +1687,6 @@ rte_cryptodev_raw_dequeue(struct rte_crypto_raw_dp_ctx *ctx,
  *   - On success return 0.
  *   - On failure return negative integer.
  */
-__rte_experimental
 int
 rte_cryptodev_raw_dequeue_done(struct rte_crypto_raw_dp_ctx *ctx,
 		uint32_t n);
@@ -1755,7 +1727,6 @@ rte_cryptodev_raw_dequeue_done(struct rte_crypto_raw_dp_ctx *ctx,
  *    callback.
  */
 
-__rte_experimental
 struct rte_cryptodev_cb *
 rte_cryptodev_add_enq_callback(uint8_t dev_id,
 			       uint16_t qp_id,
@@ -1784,7 +1755,6 @@ rte_cryptodev_add_enq_callback(uint8_t dev_id,
  *         is NULL or not found for the crypto device queue pair.
  */
 
-__rte_experimental
 int rte_cryptodev_remove_enq_callback(uint8_t dev_id,
 				      uint16_t qp_id,
 				      struct rte_cryptodev_cb *cb);
@@ -1824,7 +1794,6 @@ int rte_cryptodev_remove_enq_callback(uint8_t dev_id,
  *     callback.
  */
 
-__rte_experimental
 struct rte_cryptodev_cb *
 rte_cryptodev_add_deq_callback(uint8_t dev_id,
 			       uint16_t qp_id,
@@ -1852,7 +1821,6 @@ rte_cryptodev_add_deq_callback(uint8_t dev_id,
  *   - <0: The dev_id or the qp_id is out of range, or the callback
  *         is NULL or not found for the crypto device queue pair.
  */
-__rte_experimental
 int rte_cryptodev_remove_deq_callback(uint8_t dev_id,
 				      uint16_t qp_id,
 				      struct rte_cryptodev_cb *cb);
diff --git a/lib/cryptodev/version.map b/lib/cryptodev/version.map
index ae8d9327b4f4..ee8ee7f88263 100644
--- a/lib/cryptodev/version.map
+++ b/lib/cryptodev/version.map
@@ -1,18 +1,37 @@
 DPDK_24 {
 	global:
 
+	__rte_cryptodev_trace_dequeue_burst;
+	__rte_cryptodev_trace_enqueue_burst;
 	rte_crypto_aead_algorithm_strings;
 	rte_crypto_aead_operation_strings;
+	rte_crypto_asym_ke_strings;
+	rte_crypto_asym_op_strings;
+	rte_crypto_asym_xform_strings;
 	rte_crypto_auth_algorithm_strings;
 	rte_crypto_auth_operation_strings;
 	rte_crypto_cipher_algorithm_strings;
 	rte_crypto_cipher_operation_strings;
 	rte_crypto_fp_ops;
 	rte_crypto_op_pool_create;
+	rte_cryptodev_add_deq_callback;
+	rte_cryptodev_add_enq_callback;
+	rte_cryptodev_asym_capability_get;
+	rte_cryptodev_asym_get_header_session_size;
+	rte_cryptodev_asym_get_private_session_size;
+	rte_cryptodev_asym_get_xform_enum;
+	rte_cryptodev_asym_session_create;
+	rte_cryptodev_asym_session_free;
+	rte_cryptodev_asym_session_get_user_data;
+	rte_cryptodev_asym_session_pool_create;
+	rte_cryptodev_asym_session_set_user_data;
+	rte_cryptodev_asym_xform_capability_check_modlen;
+	rte_cryptodev_asym_xform_capability_check_optype;
 	rte_cryptodev_callback_register;
 	rte_cryptodev_callback_unregister;
 	rte_cryptodev_close;
 	rte_cryptodev_configure;
+	rte_cryptodev_configure_raw_dp_ctx;
 	rte_cryptodev_count;
 	rte_cryptodev_device_count_by_driver;
 	rte_cryptodev_devices_get;
@@ -23,12 +42,21 @@ DPDK_24 {
 	rte_cryptodev_get_cipher_algo_enum;
 	rte_cryptodev_get_dev_id;
 	rte_cryptodev_get_feature_name;
+	rte_cryptodev_get_qp_status;
+	rte_cryptodev_get_raw_dp_ctx_size;
 	rte_cryptodev_get_sec_ctx;
 	rte_cryptodev_info_get;
 	rte_cryptodev_is_valid_dev;
 	rte_cryptodev_name_get;
 	rte_cryptodev_queue_pair_count;
 	rte_cryptodev_queue_pair_setup;
+	rte_cryptodev_raw_dequeue_burst;
+	rte_cryptodev_raw_dequeue_done;
+	rte_cryptodev_raw_enqueue_burst;
+	rte_cryptodev_raw_enqueue_done;
+	rte_cryptodev_remove_deq_callback;
+	rte_cryptodev_remove_enq_callback;
+	rte_cryptodev_session_event_mdata_set;
 	rte_cryptodev_socket_id;
 	rte_cryptodev_start;
 	rte_cryptodev_stats_get;
@@ -38,9 +66,13 @@ DPDK_24 {
 	rte_cryptodev_sym_capability_check_auth;
 	rte_cryptodev_sym_capability_check_cipher;
 	rte_cryptodev_sym_capability_get;
+	rte_cryptodev_sym_cpu_crypto_process;
 	rte_cryptodev_sym_get_private_session_size;
 	rte_cryptodev_sym_session_create;
 	rte_cryptodev_sym_session_free;
+	rte_cryptodev_sym_session_get_user_data;
+	rte_cryptodev_sym_session_pool_create;
+	rte_cryptodev_sym_session_set_user_data;
 
 	local: *;
 };
@@ -48,51 +80,6 @@ DPDK_24 {
 EXPERIMENTAL {
 	global:
 
-	rte_cryptodev_asym_capability_get;
-	rte_cryptodev_asym_get_header_session_size;
-	rte_cryptodev_asym_get_private_session_size;
-	rte_cryptodev_asym_get_xform_enum;
-	rte_cryptodev_asym_session_create;
-	rte_cryptodev_asym_session_free;
-	rte_cryptodev_asym_xform_capability_check_modlen;
-	rte_cryptodev_asym_xform_capability_check_optype;
-	rte_cryptodev_sym_cpu_crypto_process;
-	rte_cryptodev_sym_session_get_user_data;
-	rte_cryptodev_sym_session_pool_create;
-	rte_cryptodev_sym_session_set_user_data;
-	rte_crypto_asym_op_strings;
-	rte_crypto_asym_xform_strings;
-
-	# added in 20.05
-	__rte_cryptodev_trace_dequeue_burst;
-	__rte_cryptodev_trace_enqueue_burst;
-
-	# added in 20.08
-	rte_cryptodev_get_qp_status;
-
-	# added in 20.11
-	rte_cryptodev_configure_raw_dp_ctx;
-	rte_cryptodev_get_raw_dp_ctx_size;
-	rte_cryptodev_raw_dequeue_burst;
-	rte_cryptodev_raw_dequeue_done;
-	rte_cryptodev_raw_enqueue_burst;
-	rte_cryptodev_raw_enqueue_done;
-
-	# added in 21.02
-	rte_cryptodev_add_deq_callback;
-	rte_cryptodev_add_enq_callback;
-	rte_cryptodev_remove_deq_callback;
-	rte_cryptodev_remove_enq_callback;
-
-	# added in 22.03
-	rte_cryptodev_asym_session_get_user_data;
-	rte_cryptodev_asym_session_pool_create;
-	rte_cryptodev_asym_session_set_user_data;
-
-	# added in 22.07
-	rte_cryptodev_session_event_mdata_set;
-	rte_crypto_asym_ke_strings;
-
 	# added in 23.03
 	rte_cryptodev_asym_get_xform_string;
 	rte_cryptodev_get_aead_algo_string;
-- 
2.39.2


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

* [PATCH v2 28/29] table: remove experimental from API
  2023-08-09  0:09 ` [PATCH v2 00/29] promote many API's to stable Stephen Hemminger
                     ` (26 preceding siblings ...)
  2023-08-09  0:10   ` [PATCH v2 27/29] cryptodev: remove experimental from more API's Stephen Hemminger
@ 2023-08-09  0:10   ` 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
  29 siblings, 0 replies; 219+ messages in thread
From: Stephen Hemminger @ 2023-08-09  0:10 UTC (permalink / raw)
  To: dev; +Cc: Stephen Hemminger, Cristian Dumitrescu

Though this library is marked for deprecation in future.
This patch follows the guideline in deprecation notice which
states the experimental API's will become stable.

Signed-off-by: Stephen Hemminger <stephen@networkplumber.org>
---
 doc/guides/rel_notes/deprecation.rst |  2 --
 lib/table/rte_swx_table_learner.h    | 10 ----------
 lib/table/rte_swx_table_selector.h   |  6 ------
 lib/table/rte_table_hash_func.h      |  9 ---------
 lib/table/version.map                | 18 ++----------------
 5 files changed, 2 insertions(+), 43 deletions(-)

diff --git a/doc/guides/rel_notes/deprecation.rst b/doc/guides/rel_notes/deprecation.rst
index 317875c5054b..a9c784d69e86 100644
--- a/doc/guides/rel_notes/deprecation.rst
+++ b/doc/guides/rel_notes/deprecation.rst
@@ -178,8 +178,6 @@ Deprecation Notices
 
 * table: The table library legacy API (functions rte_table_*)
   will be deprecated and subsequently removed in DPDK 24.11 release.
-  Before this, the new table library API (functions rte_swx_table_*)
-  will gradually transition from experimental to stable status.
 
 * port: The port library legacy API (functions rte_port_*)
   will be deprecated and subsequently removed in DPDK 24.11 release.
diff --git a/lib/table/rte_swx_table_learner.h b/lib/table/rte_swx_table_learner.h
index c5ea015b8dcf..66be5fd7d032 100644
--- a/lib/table/rte_swx_table_learner.h
+++ b/lib/table/rte_swx_table_learner.h
@@ -107,7 +107,6 @@ struct rte_swx_table_learner_params {
  * @return
  *   Table memory footprint in bytes.
  */
-__rte_experimental
 uint64_t
 rte_swx_table_learner_footprint_get(struct rte_swx_table_learner_params *params);
 
@@ -121,7 +120,6 @@ rte_swx_table_learner_footprint_get(struct rte_swx_table_learner_params *params)
  * @return
  *   Table mailbox footprint in bytes.
  */
-__rte_experimental
 uint64_t
 rte_swx_table_learner_mailbox_size_get(void);
 
@@ -135,7 +133,6 @@ rte_swx_table_learner_mailbox_size_get(void);
  * @return
  *   Table handle, on success, or NULL, on error.
  */
-__rte_experimental
 void *
 rte_swx_table_learner_create(struct rte_swx_table_learner_params *params, int numa_node);
 
@@ -152,7 +149,6 @@ rte_swx_table_learner_create(struct rte_swx_table_learner_params *params, int nu
  *   0 on success or the following error codes otherwise:
  *   -EINVAL: Invalid argument(s).
  */
-__rte_experimental
 int
 rte_swx_table_learner_timeout_update(void *table,
 				     uint32_t key_timeout_id,
@@ -206,7 +202,6 @@ rte_swx_table_learner_timeout_update(void *table,
  *   0 when the table lookup operation is not yet completed, and 1 when the table lookup operation
  *   is completed. No other return values are allowed.
  */
-__rte_experimental
 int
 rte_swx_table_learner_lookup(void *table,
 			     void *mailbox,
@@ -239,7 +234,6 @@ rte_swx_table_learner_lookup(void *table,
  * @return
  *   0 on success, 1 or error (table full).
  */
-__rte_experimental
 uint32_t
 rte_swx_table_learner_add(void *table,
 			  void *mailbox,
@@ -261,7 +255,6 @@ rte_swx_table_learner_add(void *table,
  * @param[in] time
  *   Current time measured in CPU clock cycles.
  */
-__rte_experimental
 void
 rte_swx_table_learner_rearm(void *table,
 			    void *mailbox,
@@ -282,7 +275,6 @@ rte_swx_table_learner_rearm(void *table,
  * @param[in] key_timeout_id
  *   Key timeout ID.
  */
-__rte_experimental
 void
 rte_swx_table_learner_rearm_new(void *table,
 				void *mailbox,
@@ -301,7 +293,6 @@ rte_swx_table_learner_rearm_new(void *table,
  * @param[in] mailbox
  *   Mailbox for the current operation.
  */
-__rte_experimental
 void
 rte_swx_table_learner_delete(void *table,
 			     void *mailbox);
@@ -312,7 +303,6 @@ rte_swx_table_learner_delete(void *table,
  * @param[in] table
  *   Table handle.
  */
-__rte_experimental
 void
 rte_swx_table_learner_free(void *table);
 
diff --git a/lib/table/rte_swx_table_selector.h b/lib/table/rte_swx_table_selector.h
index 05863cc90b0a..1f9b93640b1f 100644
--- a/lib/table/rte_swx_table_selector.h
+++ b/lib/table/rte_swx_table_selector.h
@@ -83,7 +83,6 @@ struct rte_swx_table_selector_group {
  * @return
  *   Selector table memory footprint in bytes.
  */
-__rte_experimental
 uint64_t
 rte_swx_table_selector_footprint_get(uint32_t n_groups_max, uint32_t n_members_per_group_max);
 
@@ -97,7 +96,6 @@ rte_swx_table_selector_footprint_get(uint32_t n_groups_max, uint32_t n_members_p
  * @return
  *   Selector table mailbox footprint in bytes.
  */
-__rte_experimental
 uint64_t
 rte_swx_table_selector_mailbox_size_get(void);
 
@@ -115,7 +113,6 @@ rte_swx_table_selector_mailbox_size_get(void);
  * @return
  *   Table handle, on success, or NULL, on error.
  */
-__rte_experimental
 void *
 rte_swx_table_selector_create(struct rte_swx_table_selector_params *params,
 			      struct rte_swx_table_selector_group **groups,
@@ -135,7 +132,6 @@ rte_swx_table_selector_create(struct rte_swx_table_selector_params *params,
  *   -EINVAL: Invalid argument(s);
  *   -ENOSPC: Too many group members.
  */
-__rte_experimental
 int
 rte_swx_table_selector_group_set(void *table,
 				 uint32_t group_id,
@@ -177,7 +173,6 @@ rte_swx_table_selector_group_set(void *table,
  *   0 when the operation is not yet completed, and 1 when the operation is complete. No other
  *   return values are allowed.
  */
-__rte_experimental
 int
 rte_swx_table_selector_select(void *table,
 			      void *mailbox,
@@ -191,7 +186,6 @@ rte_swx_table_selector_select(void *table,
  * @param[in] table
  *   Selector table handle.
  */
-__rte_experimental
 void
 rte_swx_table_selector_free(void *table);
 
diff --git a/lib/table/rte_table_hash_func.h b/lib/table/rte_table_hash_func.h
index a962ec2f68e8..d7013ba6c091 100644
--- a/lib/table/rte_table_hash_func.h
+++ b/lib/table/rte_table_hash_func.h
@@ -14,7 +14,6 @@ extern "C" {
 #include <rte_compat.h>
 #include <rte_common.h>
 
-__rte_experimental
 static inline uint64_t
 rte_crc32_u64_generic(uint64_t crc, uint64_t value)
 {
@@ -53,7 +52,6 @@ rte_crc32_u64(uint64_t crc, uint64_t v)
 
 #endif
 
-__rte_experimental
 static inline uint64_t
 rte_table_hash_crc_key8(void *key, void *mask, __rte_unused uint32_t key_size,
 	uint64_t seed)
@@ -67,7 +65,6 @@ rte_table_hash_crc_key8(void *key, void *mask, __rte_unused uint32_t key_size,
 	return crc0;
 }
 
-__rte_experimental
 static inline uint64_t
 rte_table_hash_crc_key16(void *key, void *mask, __rte_unused uint32_t key_size,
 	uint64_t seed)
@@ -86,7 +83,6 @@ rte_table_hash_crc_key16(void *key, void *mask, __rte_unused uint32_t key_size,
 	return crc0;
 }
 
-__rte_experimental
 static inline uint64_t
 rte_table_hash_crc_key24(void *key, void *mask, __rte_unused uint32_t key_size,
 	uint64_t seed)
@@ -108,7 +104,6 @@ rte_table_hash_crc_key24(void *key, void *mask, __rte_unused uint32_t key_size,
 	return crc0;
 }
 
-__rte_experimental
 static inline uint64_t
 rte_table_hash_crc_key32(void *key, void *mask, __rte_unused uint32_t key_size,
 	uint64_t seed)
@@ -134,7 +129,6 @@ rte_table_hash_crc_key32(void *key, void *mask, __rte_unused uint32_t key_size,
 	return crc0;
 }
 
-__rte_experimental
 static inline uint64_t
 rte_table_hash_crc_key40(void *key, void *mask, __rte_unused uint32_t key_size,
 	uint64_t seed)
@@ -160,7 +154,6 @@ rte_table_hash_crc_key40(void *key, void *mask, __rte_unused uint32_t key_size,
 	return crc0;
 }
 
-__rte_experimental
 static inline uint64_t
 rte_table_hash_crc_key48(void *key, void *mask, __rte_unused uint32_t key_size,
 	uint64_t seed)
@@ -187,7 +180,6 @@ rte_table_hash_crc_key48(void *key, void *mask, __rte_unused uint32_t key_size,
 	return crc0;
 }
 
-__rte_experimental
 static inline uint64_t
 rte_table_hash_crc_key56(void *key, void *mask, __rte_unused uint32_t key_size,
 	uint64_t seed)
@@ -217,7 +209,6 @@ rte_table_hash_crc_key56(void *key, void *mask, __rte_unused uint32_t key_size,
 	return crc0;
 }
 
-__rte_experimental
 static inline uint64_t
 rte_table_hash_crc_key64(void *key, void *mask, __rte_unused uint32_t key_size,
 	uint64_t seed)
diff --git a/lib/table/version.map b/lib/table/version.map
index 6c8991073210..c73bf2fc4ec7 100644
--- a/lib/table/version.map
+++ b/lib/table/version.map
@@ -15,29 +15,15 @@ DPDK_24 {
 	rte_table_lpm_ipv6_ops;
 	rte_table_lpm_ops;
 	rte_table_stub_ops;
-
-	local: *;
-};
-
-EXPERIMENTAL {
-	global:
-
-	# added in 20.11
 	rte_swx_table_exact_match_ops;
 	rte_swx_table_exact_match_unoptimized_ops;
-
-	# added in 21.05
 	rte_swx_table_wildcard_match_ops;
-
-	# added in 21.08
 	rte_swx_table_selector_create;
 	rte_swx_table_selector_footprint_get;
 	rte_swx_table_selector_free;
 	rte_swx_table_selector_group_set;
 	rte_swx_table_selector_mailbox_size_get;
 	rte_swx_table_selector_select;
-
-	# added in 21.11
 	rte_swx_table_learner_add;
 	rte_swx_table_learner_create;
 	rte_swx_table_learner_delete;
@@ -45,9 +31,9 @@ EXPERIMENTAL {
 	rte_swx_table_learner_free;
 	rte_swx_table_learner_lookup;
 	rte_swx_table_learner_mailbox_size_get;
-
-	# added in 22.07
 	rte_swx_table_learner_rearm;
 	rte_swx_table_learner_rearm_new;
 	rte_swx_table_learner_timeout_update;
+
+	local: *;
 };
-- 
2.39.2


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

* [PATCH v2 29/29] port: make API's stable
  2023-08-09  0:09 ` [PATCH v2 00/29] promote many API's to stable Stephen Hemminger
                     ` (27 preceding siblings ...)
  2023-08-09  0:10   ` [PATCH v2 28/29] table: remove experimental from API Stephen Hemminger
@ 2023-08-09  0:10   ` Stephen Hemminger
  2023-10-18 19:14   ` [PATCH v2 00/29] promote many API's to stable David Marchand
  29 siblings, 0 replies; 219+ messages in thread
From: Stephen Hemminger @ 2023-08-09  0:10 UTC (permalink / raw)
  To: dev; +Cc: Stephen Hemminger, Cristian Dumitrescu

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 a9c784d69e86..e936878e7451 100644
--- a/doc/guides/rel_notes/deprecation.rst
+++ b/doc/guides/rel_notes/deprecation.rst
@@ -173,13 +173,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 82bc9d9ac9cc..f11838b16a90 100644
--- a/lib/pipeline/rte_table_action.h
+++ b/lib/pipeline/rte_table_action.h
@@ -823,7 +823,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);
 
@@ -835,7 +834,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);
 
@@ -854,7 +852,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,
@@ -875,7 +872,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);
 
@@ -899,7 +895,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);
@@ -912,7 +907,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);
 
@@ -926,7 +920,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);
@@ -949,7 +942,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,
@@ -969,7 +961,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,
@@ -989,7 +980,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,
@@ -1006,7 +996,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);
@@ -1038,7 +1027,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,
@@ -1065,7 +1053,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,
@@ -1091,7 +1078,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,
@@ -1112,7 +1098,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,
@@ -1128,7 +1113,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


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

* Re: [PATCH 00/20] remove experimental flag from some API's
  2023-08-08 23:23     ` Tyler Retzlaff
@ 2023-08-09 15:34       ` Stephen Hemminger
  2023-08-09 17:15         ` Dmitry Kozlyuk
  0 siblings, 1 reply; 219+ messages in thread
From: Stephen Hemminger @ 2023-08-09 15:34 UTC (permalink / raw)
  To: Tyler Retzlaff; +Cc: dev

On Tue, 8 Aug 2023 16:23:43 -0700
Tyler Retzlaff <roretzla@linux.microsoft.com> wrote:

> > 
> > bpf: not built on Windows. Needs some libelf.
> > pdump: not built on Windows. Needs bpf for filtering

A different topic, is it possible to get pdump working on Windows?
Is there a pcap and elf library?  

Might be possible to split out libelf dependency in bpf library.
Libelf is used to load external file, but some uses just use internal data.

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

* Re: [PATCH 00/20] remove experimental flag from some API's
  2023-08-09 15:34       ` Stephen Hemminger
@ 2023-08-09 17:15         ` Dmitry Kozlyuk
  0 siblings, 0 replies; 219+ messages in thread
From: Dmitry Kozlyuk @ 2023-08-09 17:15 UTC (permalink / raw)
  To: Stephen Hemminger; +Cc: Tyler Retzlaff, dev

2023-08-09 08:34 (UTC-0700), Stephen Hemminger:
> On Tue, 8 Aug 2023 16:23:43 -0700
> Tyler Retzlaff <roretzla@linux.microsoft.com> wrote:
> 
> > > 
> > > bpf: not built on Windows. Needs some libelf.
> > > pdump: not built on Windows. Needs bpf for filtering  
> 
> A different topic, is it possible to get pdump working on Windows?

Unlikely with the current state of DPDK and pdump.
The main issue is multiprocess, which is not implemented.
Windows can share hugepages between processes (MapViewOfFile3)
or map it to a fixed address in the reserved region (VirtualAlloc2),
but not both, this was the blocker AFAIR.

> Is there a pcap and elf library?

net/pcap already uses libpcap.
Looks like there are libelf ports too.

> Might be possible to split out libelf dependency in bpf library.
> Libelf is used to load external file, but some uses just use internal data.

ELF library is an optional dependency already.

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

* Re: [PATCH v2 01/29] bpf: make rte_bpf_dump and rte_bpf_convert stable API's
  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
  0 siblings, 0 replies; 219+ messages in thread
From: Konstantin Ananyev @ 2023-09-17 13:03 UTC (permalink / raw)
  To: stephen; +Cc: dev, konstantin.v.ananyev

> These two API's were introduced in 23.11 and can now be
> made not experimental.
> 
> Signed-off-by: Stephen Hemminger <stephen@networkplumber.org>
> ---
>  lib/bpf/rte_bpf.h   | 2 --
>  lib/bpf/version.map | 9 ++-------
>  2 files changed, 2 insertions(+), 9 deletions(-)
> 
> diff --git a/lib/bpf/rte_bpf.h b/lib/bpf/rte_bpf.h
> index 4d71120dbd9d..f70d8dacd0d3 100644
> --- a/lib/bpf/rte_bpf.h
> +++ b/lib/bpf/rte_bpf.h
> @@ -209,7 +209,6 @@ rte_bpf_get_jit(const struct rte_bpf *bpf, struct rte_bpf_jit *jit);
>   * @param len
>   *   Number of BPF instructions to dump.
>   */
> -__rte_experimental
>  void
>  rte_bpf_dump(FILE *f, const struct ebpf_insn *buf, uint32_t len);
>  
> @@ -229,7 +228,6 @@ struct bpf_program;
>   *   - ENOMEM - can't reserve enough memory
>   *   - ENOTSUP - operation not supported
>   */
> -__rte_experimental
>  struct rte_bpf_prm *
>  rte_bpf_convert(const struct bpf_program *prog);
>  
> diff --git a/lib/bpf/version.map b/lib/bpf/version.map
> index c49bf1701f0a..2e957494e9df 100644
> --- a/lib/bpf/version.map
> +++ b/lib/bpf/version.map
> @@ -1,7 +1,9 @@
>  DPDK_24 {
>  	global:
>  
> +	rte_bpf_convert;
>  	rte_bpf_destroy;
> +	rte_bpf_dump;
>  	rte_bpf_elf_load;
>  	rte_bpf_eth_rx_elf_load;
>  	rte_bpf_eth_rx_unload;
> @@ -14,10 +16,3 @@ DPDK_24 {
>  
>  	local: *;
>  };
> -
> -EXPERIMENTAL {
> -	global:
> -
> -	rte_bpf_convert;
> -	rte_bpf_dump;
> -};
> -- 

Acked-by: Konstantin Ananyev <konstantin.v.ananyev@yandex.ru>


> 2.39.2


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

* Re: [PATCH v2 23/29] ipsec: remove experimental from SA API
  2023-08-09  0:10   ` [PATCH v2 23/29] ipsec: remove experimental from SA API Stephen Hemminger
@ 2023-09-17 13:05     ` Konstantin Ananyev
  0 siblings, 0 replies; 219+ messages in thread
From: Konstantin Ananyev @ 2023-09-17 13:05 UTC (permalink / raw)
  To: stephen; +Cc: dev, konstantin.v.ananyev, vladimir.medvedkin

> These API's were added in 21.11, remove experimental flag.
> 
> Signed-off-by: Stephen Hemminger <stephen@networkplumber.org>
> ---
>  lib/ipsec/rte_ipsec.h | 2 --
>  lib/ipsec/version.map | 9 +--------
>  2 files changed, 1 insertion(+), 10 deletions(-)
> 
> diff --git a/lib/ipsec/rte_ipsec.h b/lib/ipsec/rte_ipsec.h
> index 04129926b69f..81624f909192 100644
> --- a/lib/ipsec/rte_ipsec.h
> +++ b/lib/ipsec/rte_ipsec.h
> @@ -168,7 +168,6 @@ rte_ipsec_pkt_process(const struct rte_ipsec_session *ss, struct rte_mbuf *mb[],
>   * @return
>   *   0 on success, negative value otherwise.
>   */
> -__rte_experimental
>  int
>  rte_ipsec_telemetry_sa_add(const struct rte_ipsec_sa *sa);
>  
> @@ -178,7 +177,6 @@ rte_ipsec_telemetry_sa_add(const struct rte_ipsec_sa *sa);
>   * @param sa
>   *   Pointer to the *rte_ipsec_sa* object that will have telemetry disabled.
>   */
> -__rte_experimental
>  void
>  rte_ipsec_telemetry_sa_del(const struct rte_ipsec_sa *sa);
>  
> diff --git a/lib/ipsec/version.map b/lib/ipsec/version.map
> index f0063af354f0..9d01ebeadc4c 100644
> --- a/lib/ipsec/version.map
> +++ b/lib/ipsec/version.map
> @@ -16,15 +16,8 @@ DPDK_24 {
>  	rte_ipsec_sad_lookup;
>  	rte_ipsec_ses_from_crypto;
>  	rte_ipsec_session_prepare;
> -
> -	local: *;
> -};
> -
> -EXPERIMENTAL {
> -	global:
> -
> -	# added in 21.11
>  	rte_ipsec_telemetry_sa_add;
>  	rte_ipsec_telemetry_sa_del;
>  
> +	local: *;
>  };
> -- 

Acked-by: Konstantin Ananyev <konstantin.v.ananyev@yandex.ru>


> 2.39.2


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

* Re: [PATCH v2 18/29] ip_frag: mark a couple of functions stable
  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
  0 siblings, 0 replies; 219+ messages in thread
From: Konstantin Ananyev @ 2023-09-17 13:06 UTC (permalink / raw)
  To: stephen; +Cc: dev, konstantin.v.ananyev

> There were two functions added in 22.11 which were
> marked as experimental. Remove the experimental tag.
> 
> Signed-off-by: Stephen Hemminger <stephen@networkplumber.org>
> ---
>  lib/ip_frag/rte_ip_frag.h | 2 --
>  lib/ip_frag/version.map   | 9 ++-------
>  2 files changed, 2 insertions(+), 9 deletions(-)
> 
> diff --git a/lib/ip_frag/rte_ip_frag.h b/lib/ip_frag/rte_ip_frag.h
> index feab72ae64b9..cd3a3e143ee7 100644
> --- a/lib/ip_frag/rte_ip_frag.h
> +++ b/lib/ip_frag/rte_ip_frag.h
> @@ -205,7 +205,6 @@ int32_t rte_ipv4_fragment_packet(struct rte_mbuf *pkt_in,
>   *   in the pkts_out array.
>   *   Otherwise - (-1) * errno.
>   */
> -__rte_experimental
>  int32_t
>  rte_ipv4_fragment_copy_nonseg_packet(struct rte_mbuf *pkt_in,
>  	struct rte_mbuf **pkts_out,
> @@ -289,7 +288,6 @@ rte_ip_frag_table_statistics_dump(FILE * f, const struct rte_ip_frag_tbl *tbl);
>   * @param tms
>   *   Current timestamp
>   */
> -__rte_experimental
>  void
>  rte_ip_frag_table_del_expired_entries(struct rte_ip_frag_tbl *tbl,
>  	struct rte_ip_frag_death_row *dr, uint64_t tms);
> diff --git a/lib/ip_frag/version.map b/lib/ip_frag/version.map
> index 7ba446c9938b..3e7e573dc412 100644
> --- a/lib/ip_frag/version.map
> +++ b/lib/ip_frag/version.map
> @@ -3,19 +3,14 @@ DPDK_24 {
>  
>  	rte_ip_frag_free_death_row;
>  	rte_ip_frag_table_create;
> +	rte_ip_frag_table_del_expired_entries;
>  	rte_ip_frag_table_destroy;
>  	rte_ip_frag_table_statistics_dump;
>  	rte_ipv4_frag_reassemble_packet;
> +	rte_ipv4_fragment_copy_nonseg_packet;
>  	rte_ipv4_fragment_packet;
>  	rte_ipv6_frag_reassemble_packet;
>  	rte_ipv6_fragment_packet;
>  
>  	local: *;
>  };
> -
> -EXPERIMENTAL {
> -	global:
> -
> -	rte_ip_frag_table_del_expired_entries;
> -	rte_ipv4_fragment_copy_nonseg_packet;
> -};
> -- 

Acked-by: Konstantin Ananyev <konstantin.v.ananyev@yandex.ru>


> 2.39.2


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

* Re: [PATCH 14/20] dmadev: mark API's as not experimental
  2023-08-08 17:35 ` [PATCH 14/20] dmadev: mark API's as not experimental Stephen Hemminger
@ 2023-10-07  2:38   ` fengchengwen
  0 siblings, 0 replies; 219+ messages in thread
From: fengchengwen @ 2023-10-07  2:38 UTC (permalink / raw)
  To: Stephen Hemminger, dev; +Cc: Kevin Laatz, Bruce Richardson

Acked-by: Chengwen Feng <fengchengwen@huawei.com>

On 2023/8/9 1:35, Stephen Hemminger wrote:
> These were added in 20.11 time now to remove experimental flag.
> 
> Signed-off-by: Stephen Hemminger <stephen@networkplumber.org>
> ---
>  lib/dmadev/rte_dmadev.h | 85 -----------------------------------------
>  lib/dmadev/version.map  |  2 +-
>  2 files changed, 1 insertion(+), 86 deletions(-)
> 

...

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

* RE: [PATCH v2 25/29] regexdev: remove experimental tag
  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
  0 siblings, 1 reply; 219+ messages in thread
From: Ori Kam @ 2023-10-11 12:44 UTC (permalink / raw)
  To: Stephen Hemminger, dev

Hi Stephen,

I know that Nvidia, is going to remove the support for regex in the future.
The only other HW that implements this is Marvel.

I don't know about other manufacturers plan to support it. I suggest keeping it as is for now, and maybe
we will need to remove this lib.

Anyone from Marvel can comment on this lib support?

Thanks,
Ori


> -----Original Message-----
> From: Stephen Hemminger <stephen@networkplumber.org>
> Sent: Wednesday, August 9, 2023 3:10 AM
> To: dev@dpdk.org
> Cc: Stephen Hemminger <stephen@networkplumber.org>; Ori Kam
> <orika@nvidia.com>
> Subject: [PATCH v2 25/29] regexdev: remove experimental tag
> 
> This library was added in 22.11.
> Time to make it not experimental.
> 
> Signed-off-by: Stephen Hemminger <stephen@networkplumber.org>
> ---
>  lib/regexdev/rte_regexdev.h | 92 -------------------------------------
>  lib/regexdev/version.map    |  2 +-
>  2 files changed, 1 insertion(+), 93 deletions(-)
> 
> diff --git a/lib/regexdev/rte_regexdev.h b/lib/regexdev/rte_regexdev.h
> index 25476f1f739d..e8e194e29540 100644
> --- a/lib/regexdev/rte_regexdev.h
> +++ b/lib/regexdev/rte_regexdev.h
> @@ -226,9 +226,6 @@ extern int rte_regexdev_logtype;
>  } while (0)
> 
>  /**
> - * @warning
> - * @b EXPERIMENTAL: this API may change without prior notice.
> - *
>   * Check if dev_id is ready.
>   *
>   * @param dev_id
> @@ -238,27 +235,19 @@ extern int rte_regexdev_logtype;
>   *   - 0 if device state is not in ready state.
>   *   - 1 if device state is ready state.
>   */
> -__rte_experimental
>  int rte_regexdev_is_valid_dev(uint16_t dev_id);
> 
>  /**
> - * @warning
> - * @b EXPERIMENTAL: this API may change without prior notice.
> - *
>   * Get the total number of RegEx devices that have been successfully
>   * initialised.
>   *
>   * @return
>   *   The total number of usable RegEx devices.
>   */
> -__rte_experimental
>  uint8_t
>  rte_regexdev_count(void);
> 
>  /**
> - * @warning
> - * @b EXPERIMENTAL: this API may change without prior notice.
> - *
>   * Get the device identifier for the named RegEx device.
>   *
>   * @param name
> @@ -268,7 +257,6 @@ rte_regexdev_count(void);
>   *   Returns RegEx device identifier on success.
>   *   - <0: Failure to find named RegEx device.
>   */
> -__rte_experimental
>  int
>  rte_regexdev_get_dev_id(const char *name);
> 
> @@ -628,9 +616,6 @@ struct rte_regexdev_info {
>  };
> 
>  /**
> - * @warning
> - * @b EXPERIMENTAL: this API may change without prior notice.
> - *
>   * Retrieve the contextual information of a RegEx device.
>   *
>   * @param dev_id
> @@ -644,7 +629,6 @@ struct rte_regexdev_info {
>   *   - 0: Success, driver updates the contextual information of the RegEx device
>   *   - <0: Error code returned by the driver info get function.
>   */
> -__rte_experimental
>  int
>  rte_regexdev_info_get(uint8_t dev_id, struct rte_regexdev_info *dev_info);
> 
> @@ -723,9 +707,6 @@ struct rte_regexdev_config {
>  };
> 
>  /**
> - * @warning
> - * @b EXPERIMENTAL: this API may change without prior notice.
> - *
>   * Configure a RegEx device.
>   *
>   * This function must be invoked first before any other function in the
> @@ -743,7 +724,6 @@ struct rte_regexdev_config {
>   * @return
>   *   - 0: Success, device configured. Otherwise negative errno is returned.
>   */
> -__rte_experimental
>  int
>  rte_regexdev_configure(uint8_t dev_id, const struct rte_regexdev_config *cfg);
> 
> @@ -782,9 +762,6 @@ struct rte_regexdev_qp_conf {
>  };
> 
>  /**
> - * @warning
> - * @b EXPERIMENTAL: this API may change without prior notice.
> - *
>   * Allocate and set up a RegEx queue pair for a RegEx device.
>   *
>   * @param dev_id
> @@ -799,15 +776,11 @@ struct rte_regexdev_qp_conf {
>   * @return
>   *   0 on success. Otherwise negative errno is returned.
>   */
> -__rte_experimental
>  int
>  rte_regexdev_queue_pair_setup(uint8_t dev_id, uint16_t queue_pair_id,
>  			      const struct rte_regexdev_qp_conf *qp_conf);
> 
>  /**
> - * @warning
> - * @b EXPERIMENTAL: this API may change without prior notice.
> - *
>   * Start a RegEx device.
>   *
>   * The device start step is the last one and consists of setting the RegEx
> @@ -822,14 +795,10 @@ rte_regexdev_queue_pair_setup(uint8_t dev_id,
> uint16_t queue_pair_id,
>   * @return
>   *   0 on success. Otherwise negative errno is returned.
>   */
> -__rte_experimental
>  int
>  rte_regexdev_start(uint8_t dev_id);
> 
>  /**
> - * @warning
> - * @b EXPERIMENTAL: this API may change without prior notice.
> - *
>   * Stop a RegEx device.
>   *
>   * Stop a RegEx device. The device can be restarted with a call to
> @@ -845,14 +814,10 @@ rte_regexdev_start(uint8_t dev_id);
>   * @return
>   *   0 on success. Otherwise negative errno is returned.
>   */
> -__rte_experimental
>  int
>  rte_regexdev_stop(uint8_t dev_id);
> 
>  /**
> - * @warning
> - * @b EXPERIMENTAL: this API may change without prior notice.
> - *
>   * Close a RegEx device. The device cannot be restarted!
>   *
>   * @param dev_id
> @@ -861,7 +826,6 @@ rte_regexdev_stop(uint8_t dev_id);
>   * @return
>   *   0 on success. Otherwise negative errno is returned.
>   */
> -__rte_experimental
>  int
>  rte_regexdev_close(uint8_t dev_id);
> 
> @@ -897,9 +861,6 @@ enum rte_regexdev_attr_id {
>  };
> 
>  /**
> - * @warning
> - * @b EXPERIMENTAL: this API may change without prior notice.
> - *
>   * Get an attribute from a RegEx device.
>   *
>   * @param dev_id
> @@ -915,15 +876,11 @@ enum rte_regexdev_attr_id {
>   *   - -EINVAL: Invalid device or  *attr_id* provided, or *attr_value* is NULL.
>   *   - -ENOTSUP: if the device doesn't support specific *attr_id*.
>   */
> -__rte_experimental
>  int
>  rte_regexdev_attr_get(uint8_t dev_id, enum rte_regexdev_attr_id attr_id,
>  		      void *attr_value);
> 
>  /**
> - * @warning
> - * @b EXPERIMENTAL: this API may change without prior notice.
> - *
>   * Set an attribute to a RegEx device.
>   *
>   * @param dev_id
> @@ -939,7 +896,6 @@ rte_regexdev_attr_get(uint8_t dev_id, enum
> rte_regexdev_attr_id attr_id,
>   *   - -EINVAL: Invalid device or  *attr_id* provided, or *attr_value* is NULL.
>   *   - -ENOTSUP: if the device doesn't support specific *attr_id*.
>   */
> -__rte_experimental
>  int
>  rte_regexdev_attr_set(uint8_t dev_id, enum rte_regexdev_attr_id attr_id,
>  		      const void *attr_value);
> @@ -975,9 +931,6 @@ struct rte_regexdev_rule {
>  };
> 
>  /**
> - * @warning
> - * @b EXPERIMENTAL: this API may change without prior notice.
> - *
>   * Update the local rule set.
>   * This functions only modify the rule set in memory.
>   * In order for the changes to take effect, the function
> @@ -1008,16 +961,12 @@ struct rte_regexdev_rule {
>   * @see rte_regexdev_rule_db_import(), rte_regexdev_rule_db_export(),
>   *   rte_regexdev_rule_db_compile_activate()
>   */
> -__rte_experimental
>  int
>  rte_regexdev_rule_db_update(uint8_t dev_id,
>  			    const struct rte_regexdev_rule *rules,
>  			    uint32_t nb_rules);
> 
>  /**
> - * @warning
> - * @b EXPERIMENTAL: this API may change without prior notice.
> - *
>   * Compile local rule set and burn the complied result to the
>   * RegEx device.
>   *
> @@ -1030,14 +979,10 @@ rte_regexdev_rule_db_update(uint8_t dev_id,
>   * @see rte_regexdev_rule_db_import(), rte_regexdev_rule_db_export(),
>   *   rte_regexdev_rule_db_update()
>   */
> -__rte_experimental
>  int
>  rte_regexdev_rule_db_compile_activate(uint8_t dev_id);
> 
>  /**
> - * @warning
> - * @b EXPERIMENTAL: this API may change without prior notice.
> - *
>   * Import a prebuilt rule database from a buffer to a RegEx device.
>   *
>   * @param dev_id
> @@ -1055,15 +1000,11 @@ rte_regexdev_rule_db_compile_activate(uint8_t
> dev_id);
>   *
>   * @see rte_regexdev_rule_db_update(), rte_regexdev_rule_db_export()
>   */
> -__rte_experimental
>  int
>  rte_regexdev_rule_db_import(uint8_t dev_id, const char *rule_db,
>  			    uint32_t rule_db_len);
> 
>  /**
> - * @warning
> - * @b EXPERIMENTAL: this API may change without prior notice.
> - *
>   * Export the prebuilt rule database from a RegEx device to the buffer.
>   *
>   * @param dev_id
> @@ -1080,7 +1021,6 @@ rte_regexdev_rule_db_import(uint8_t dev_id, const
> char *rule_db,
>   *
>   * @see rte_regexdev_rule_db_update(), rte_regexdev_rule_db_import()
>   */
> -__rte_experimental
>  int
>  rte_regexdev_rule_db_export(uint8_t dev_id, char *rule_db);
> 
> @@ -1102,9 +1042,6 @@ struct rte_regexdev_xstats_map {
>  };
> 
>  /**
> - * @warning
> - * @b EXPERIMENTAL: this API may change without prior notice.
> - *
>   * Retrieve names of extended statistics of a regex device.
>   *
>   * @param dev_id
> @@ -1120,15 +1057,11 @@ struct rte_regexdev_xstats_map {
>   *      -ENODEV for invalid *dev_id*
>   *      -ENOTSUP if the device doesn't support this function.
>   */
> -__rte_experimental
>  int
>  rte_regexdev_xstats_names_get(uint8_t dev_id,
>  			      struct rte_regexdev_xstats_map *xstats_map);
> 
>  /**
> - * @warning
> - * @b EXPERIMENTAL: this API may change without prior notice.
> - *
>   * Retrieve extended statistics of an regex device.
>   *
>   * @param dev_id
> @@ -1147,15 +1080,11 @@ rte_regexdev_xstats_names_get(uint8_t dev_id,
>   *      -ENODEV for invalid *dev_id*
>   *      -ENOTSUP if the device doesn't support this function.
>   */
> -__rte_experimental
>  int
>  rte_regexdev_xstats_get(uint8_t dev_id, const uint16_t *ids,
>  			uint64_t *values, uint16_t nb_values);
> 
>  /**
> - * @warning
> - * @b EXPERIMENTAL: this API may change without prior notice.
> - *
>   * Retrieve the value of a single stat by requesting it by name.
>   *
>   * @param dev_id
> @@ -1174,15 +1103,11 @@ rte_regexdev_xstats_get(uint8_t dev_id, const
> uint16_t *ids,
>   *   - -EINVAL: invalid parameters
>   *   - -ENOTSUP: if not supported.
>   */
> -__rte_experimental
>  int
>  rte_regexdev_xstats_by_name_get(uint8_t dev_id, const char *name,
>  				uint16_t *id, uint64_t *value);
> 
>  /**
> - * @warning
> - * @b EXPERIMENTAL: this API may change without prior notice.
> - *
>   * Reset the values of the xstats of the selected component in the device.
>   *
>   * @param dev_id
> @@ -1198,15 +1123,11 @@ rte_regexdev_xstats_by_name_get(uint8_t
> dev_id, const char *name,
>   *   - -EINVAL: invalid parameters.
>   *   - -ENOTSUP: if not supported.
>   */
> -__rte_experimental
>  int
>  rte_regexdev_xstats_reset(uint8_t dev_id, const uint16_t *ids,
>  			  uint16_t nb_ids);
> 
>  /**
> - * @warning
> - * @b EXPERIMENTAL: this API may change without prior notice.
> - *
>   * Trigger the RegEx device self test.
>   *
>   * @param dev_id
> @@ -1216,14 +1137,10 @@ rte_regexdev_xstats_reset(uint8_t dev_id, const
> uint16_t *ids,
>   *   - -ENOTSUP if the device doesn't support selftest.
>   *   - other values < 0 on failure.
>   */
> -__rte_experimental
>  int
>  rte_regexdev_selftest(uint8_t dev_id);
> 
>  /**
> - * @warning
> - * @b EXPERIMENTAL: this API may change without prior notice.
> - *
>   * Dump internal information about *dev_id* to the FILE* provided in *f*.
>   *
>   * @param dev_id
> @@ -1234,7 +1151,6 @@ rte_regexdev_selftest(uint8_t dev_id);
>   * @return
>   *   0 on success, negative errno on failure.
>   */
> -__rte_experimental
>  int
>  rte_regexdev_dump(uint8_t dev_id, FILE *f);
> 
> @@ -1432,9 +1348,6 @@ struct rte_regex_ops {
>  #include "rte_regexdev_core.h"
> 
>  /**
> - * @warning
> - * @b EXPERIMENTAL: this API may change without prior notice.
> - *
>   * Enqueue a burst of scan request on a RegEx device.
>   *
>   * The rte_regexdev_enqueue_burst() function is invoked to place
> @@ -1468,7 +1381,6 @@ struct rte_regex_ops {
>   *   remaining ops at the end of *ops* are not consumed and the caller has
>   *   to take care of them.
>   */
> -__rte_experimental
>  static inline uint16_t
>  rte_regexdev_enqueue_burst(uint8_t dev_id, uint16_t qp_id,
>  			   struct rte_regex_ops **ops, uint16_t nb_ops)
> @@ -1487,9 +1399,6 @@ rte_regexdev_enqueue_burst(uint8_t dev_id,
> uint16_t qp_id,
>  }
> 
>  /**
> - * @warning
> - * @b EXPERIMENTAL: this API may change without prior notice.
> - *
>   * Dequeue a burst of scan response from a queue on the RegEx device.
>   * The dequeued operation are stored in *rte_regexdev_op* structures
>   * whose pointers are supplied in the *ops* array.
> @@ -1528,7 +1437,6 @@ rte_regexdev_enqueue_burst(uint8_t dev_id,
> uint16_t qp_id,
>   *   ops at the end of *ops* are not consumed and the caller has to take care
>   *   of them.
>   */
> -__rte_experimental
>  static inline uint16_t
>  rte_regexdev_dequeue_burst(uint8_t dev_id, uint16_t qp_id,
>  			   struct rte_regex_ops **ops, uint16_t nb_ops)
> diff --git a/lib/regexdev/version.map b/lib/regexdev/version.map
> index 3c6e9fffa1f5..914bd19dfd94 100644
> --- a/lib/regexdev/version.map
> +++ b/lib/regexdev/version.map
> @@ -1,4 +1,4 @@
> -EXPERIMENTAL {
> +DPDK_24 {
>  	global:
> 
>  	rte_regex_devices;
> --
> 2.39.2


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

* Re: [PATCH v2 25/29] regexdev: remove experimental tag
  2023-10-11 12:44     ` Ori Kam
@ 2023-10-11 16:44       ` Jerin Jacob
  0 siblings, 0 replies; 219+ messages in thread
From: Jerin Jacob @ 2023-10-11 16:44 UTC (permalink / raw)
  To: Ori Kam; +Cc: Stephen Hemminger, dev

On Wed, Oct 11, 2023 at 6:14 PM Ori Kam <orika@nvidia.com> wrote:
>
> Hi Stephen,
>
> I know that Nvidia, is going to remove the support for regex in the future.
> The only other HW that implements this is Marvel.
>
> I don't know about other manufacturers plan to support it. I suggest keeping it as is for now, and maybe
> we will need to remove this lib.
>
> Anyone from Marvel can comment on this lib support?

Same vibe from Marvell. i.e Regex is not a great workload to offload to HW.

>
> Thanks,
> Ori

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

* Re: [PATCH v2 02/29] cmdline: make experimental API's stable
  2023-08-09  0:09   ` [PATCH v2 02/29] cmdline: make experimental API's stable Stephen Hemminger
@ 2023-10-18 16:47     ` Bruce Richardson
  0 siblings, 0 replies; 219+ messages in thread
From: Bruce Richardson @ 2023-10-18 16:47 UTC (permalink / raw)
  To: Stephen Hemminger; +Cc: dev, Olivier Matz

On Tue, Aug 08, 2023 at 05:09:50PM -0700, Stephen Hemminger wrote:
> These API's have all ben around for several releases.
> 
> Signed-off-by: Stephen Hemminger <stephen@networkplumber.org>
> ---

Acked-by: Bruce Richardson <bruce.richardson@intel.com>


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

* Re: [PATCH v2 10/29] mbuf: remove experimental from create_extbuf
  2023-08-09  0:09   ` [PATCH v2 10/29] mbuf: remove experimental from create_extbuf Stephen Hemminger
@ 2023-10-18 17:05     ` Bruce Richardson
  0 siblings, 0 replies; 219+ messages in thread
From: Bruce Richardson @ 2023-10-18 17:05 UTC (permalink / raw)
  To: Stephen Hemminger; +Cc: dev, Olivier Matz

On Tue, Aug 08, 2023 at 05:09:58PM -0700, Stephen Hemminger wrote:
> This API was added in 2020 and should no longer be experimental.
> 
> Signed-off-by: Stephen Hemminger <stephen@networkplumber.org>
> ---
Acked-by: Bruce Richardson <bruce.richardson@intel.com>

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

* Re: [PATCH v2 14/29] dmadev: mark API's as not experimental
  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
  0 siblings, 0 replies; 219+ messages in thread
From: Bruce Richardson @ 2023-10-18 17:07 UTC (permalink / raw)
  To: Stephen Hemminger; +Cc: dev, Thomas Monjalon, Chengwen Feng, Kevin Laatz

On Tue, Aug 08, 2023 at 05:10:02PM -0700, Stephen Hemminger wrote:
> These were added in 20.11 time now to remove experimental flag.
> 
> Signed-off-by: Stephen Hemminger <stephen@networkplumber.org>
> ---
Acked-by: Bruce Richardson <bruce.richardson@intel.com>

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

* Re: [PATCH v2 15/29] meter: remove experimental warning from comments
  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
  1 sibling, 0 replies; 219+ messages in thread
From: Bruce Richardson @ 2023-10-18 17:07 UTC (permalink / raw)
  To: Stephen Hemminger; +Cc: dev, Cristian Dumitrescu

On Tue, Aug 08, 2023 at 05:10:03PM -0700, Stephen Hemminger wrote:
> The API's for rte_meter_trtcm were never properly flagged
> as experimental; missing __rte_experimental but there was
> an experimental comment in the docbook comment.
> Remove the comment.
> 
> Signed-off-by: Stephen Hemminger <stephen@networkplumber.org>
> ---
Acked-by: Bruce Richardson <bruce.richardson@intel.com>

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

* Re: [PATCH v2 17/29] kvargs: remove experimental flag
  2023-08-09  0:10   ` [PATCH v2 17/29] kvargs: remove experimental flag Stephen Hemminger
@ 2023-10-18 17:08     ` Bruce Richardson
  0 siblings, 0 replies; 219+ messages in thread
From: Bruce Richardson @ 2023-10-18 17:08 UTC (permalink / raw)
  To: Stephen Hemminger; +Cc: dev, Olivier Matz

On Tue, Aug 08, 2023 at 05:10:05PM -0700, Stephen Hemminger wrote:
> The function rte_kvargs_get_with_value was added in 21.11
> so experimental flag can be removed.
> 
> Signed-off-by: Stephen Hemminger <stephen@networkplumber.org>
> ---
Acked-by: Bruce Richardson <bruce.richardson@intel.com>

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

* Re: [PATCH v2 00/29] promote many API's to stable
  2023-08-09  0:09 ` [PATCH v2 00/29] promote many API's to stable Stephen Hemminger
                     ` (28 preceding siblings ...)
  2023-08-09  0:10   ` [PATCH v2 29/29] port: make API's stable Stephen Hemminger
@ 2023-10-18 19:14   ` David Marchand
  2023-10-18 19:41     ` David Marchand
  29 siblings, 1 reply; 219+ messages in thread
From: David Marchand @ 2023-10-18 19:14 UTC (permalink / raw)
  To: Stephen Hemminger; +Cc: dev, Tyler Retzlaff, Thomas Monjalon

Hello Stephen,

On Wed, Aug 9, 2023 at 2:10 AM Stephen Hemminger
<stephen@networkplumber.org> wrote:
>
> Since 23.11 is an LTS release it is time to remove the experimental
> bandaid off many API's. There are about 850 API's marked with experimental
> on current main branch. This addresses the easy to remove ones and
> gets it down to about 690 places.
>
> The rule is any API that has been in since 22.11 needs to have
> experimental removed (or deleted). The experimental flag is
> intended to be temporary not a "get out of ABI stability for free" card.
>
> v2 - add more libraries to the mix
>    - remove EXPERIMENTAL where tagged in MAINTAINERS

There were some API updates merged in -rc1.
Could you please rebase this series?

Thanks.

-- 
David Marchand


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

* Re: [PATCH v2 00/29] promote many API's to stable
  2023-10-18 19:14   ` [PATCH v2 00/29] promote many API's to stable David Marchand
@ 2023-10-18 19:41     ` David Marchand
  0 siblings, 0 replies; 219+ messages in thread
From: David Marchand @ 2023-10-18 19:41 UTC (permalink / raw)
  To: Stephen Hemminger; +Cc: dev, Tyler Retzlaff, Thomas Monjalon

On Wed, Oct 18, 2023 at 9:14 PM David Marchand
<david.marchand@redhat.com> wrote:
>
> Hello Stephen,
>
> On Wed, Aug 9, 2023 at 2:10 AM Stephen Hemminger
> <stephen@networkplumber.org> wrote:
> >
> > Since 23.11 is an LTS release it is time to remove the experimental
> > bandaid off many API's. There are about 850 API's marked with experimental
> > on current main branch. This addresses the easy to remove ones and
> > gets it down to about 690 places.
> >
> > The rule is any API that has been in since 22.11 needs to have
> > experimental removed (or deleted). The experimental flag is
> > intended to be temporary not a "get out of ABI stability for free" card.
> >
> > v2 - add more libraries to the mix
> >    - remove EXPERIMENTAL where tagged in MAINTAINERS
>
> There were some API updates merged in -rc1.
> Could you please rebase this series?

Some additional comments to this request.

rte_compat.h is only needed for __rte_experimental and __rte_internal tags.
There is probably some unnecessary #include <rte_compat.h> left behind
after this series.

About version.map content, I recommend using ./devtools/update-abi.sh
$(cat ABI_VERSION) as it sorts the stable symbols for you (but leave
experimental and internal sections untouched).


-- 
David Marchand


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

* Re: [PATCH v2 15/29] meter: remove experimental warning from comments
  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
  1 sibling, 0 replies; 219+ messages in thread
From: David Marchand @ 2023-10-19  6:54 UTC (permalink / raw)
  To: Stephen Hemminger; +Cc: dev, Cristian Dumitrescu

On Wed, Aug 9, 2023 at 2:12 AM Stephen Hemminger
<stephen@networkplumber.org> wrote:
>
> The API's for rte_meter_trtcm were never properly flagged
> as experimental; missing __rte_experimental but there was

The 4115 trtcm API was properly marked experimental in the past.
See commit 655796d2b5fb ("meter: support RFC4115 trTCM").

The only thing wrong here is that when this API was marked stable, we
forgot to remove those banners in the comments.


> an experimental comment in the docbook comment.
> Remove the comment.
>
> Signed-off-by: Stephen Hemminger <stephen@networkplumber.org>


-- 
David Marchand


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

* [PATCH v3 00/29] Promote experimental API's to stable.
  2023-08-08 17:35 [PATCH 00/20] remove experimental flag from some API's Stephen Hemminger
                   ` (21 preceding siblings ...)
  2023-08-09  0:09 ` [PATCH v2 00/29] promote many API's to stable Stephen Hemminger
@ 2023-10-19 16:55 ` 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
                     ` (28 more replies)
  2023-10-19 19:09 ` [PATCH v4 00/28] Promote many experimental API's to stable Stephen Hemminger
                   ` (4 subsequent siblings)
  27 siblings, 29 replies; 219+ messages in thread
From: Stephen Hemminger @ 2023-10-19 16:55 UTC (permalink / raw)
  To: dev; +Cc: Stephen Hemminger

Since 23.11 is an LTS release it is time to remove the experimental
bandaid off many API's. There are about 890 API's marked with experimental
on current main branch. This addresses the easy to remove ones and
gets it down to about 510 places.

The rule is any API that has been in since 22.11 needs to have
experimental removed (or have API deleted). The experimental flag is not a
"get out of ABI stability for free" card.

In a couple places experimental was being used where internal
would have been more appropriate.

v3 - rebase and skip cryptodev

Stephen Hemminger (29):
  bpf: make rte_bpf_dump and rte_bpf_convert stable API's
  cmdline: make experimental API's stable
  ethdev: mark rte_mtr API's as stable
  ethdev: mark rte_tm API's as stable
  pdump: make API's stable
  pcapng: mark API's as stable
  net: remove experimental from functions
  rcu: remove experimental from rte_rcu_qbsr
  lpm: remove experimental
  mbuf: remove experimental from create_extbuf
  hash: remove experimental from toeplitz hash
  timer: remove experimental from rte_timer_next_ticks
  sched: remove experimental
  dmadev: mark API's as not experimental
  meter: remove experimental warning from comments
  power: remove experimental from API's
  kvargs: remove experimental flag
  ip_frag: mark a couple of functions stable
  member: remove experimental tag
  power fix
  security: remove experimental flag from macsec
  vhost: remove experimental from some API's
  bbdev: remove experimental tag
  ipsec: remove experimental from SA API
  compressdev: remove experimental flag
  regexdev: remove experimental tag
  node: remove some of the experimental tags
  table: remove experimental from API
  port: make API's stable

 MAINTAINERS                           |  10 +-
 doc/guides/rel_notes/deprecation.rst  |   6 --
 lib/bbdev/rte_bbdev.h                 |   4 -
 lib/bbdev/rte_bbdev_op.h              |   2 -
 lib/bbdev/version.map                 |  15 ++-
 lib/bpf/rte_bpf.h                     |   2 -
 lib/bpf/version.map                   |   9 +-
 lib/cmdline/cmdline.h                 |   1 -
 lib/cmdline/cmdline_parse.h           |   4 -
 lib/cmdline/cmdline_rdline.h          |   4 -
 lib/cmdline/version.map               |  26 ++---
 lib/compressdev/rte_comp.h            |   6 --
 lib/compressdev/rte_compressdev.h     |  26 -----
 lib/compressdev/rte_compressdev_pmd.h |   6 --
 lib/compressdev/version.map           |   2 +-
 lib/dmadev/rte_dmadev.h               |  85 ----------------
 lib/dmadev/version.map                |   2 +-
 lib/ethdev/rte_mtr.h                  |  25 +----
 lib/ethdev/rte_tm.h                   |  34 -------
 lib/ethdev/version.map                |  88 ++++++++--------
 lib/hash/rte_thash.h                  |  44 --------
 lib/hash/rte_thash_gfni.h             |   8 --
 lib/hash/rte_thash_x86_gfni.h         |   8 --
 lib/hash/version.map                  |  16 +--
 lib/ip_frag/rte_ip_frag.h             |   2 -
 lib/ip_frag/version.map               |   9 +-
 lib/ipsec/rte_ipsec.h                 |   2 -
 lib/ipsec/version.map                 |   9 +-
 lib/kvargs/rte_kvargs.h               |   4 -
 lib/kvargs/version.map                |   8 +-
 lib/lpm/rte_lpm.h                     |   4 -
 lib/lpm/version.map                   |   7 +-
 lib/mbuf/rte_mbuf.h                   |   1 -
 lib/mbuf/version.map                  |   8 +-
 lib/member/rte_member.h               |  54 ----------
 lib/member/version.map                |  12 +--
 lib/meter/rte_meter.h                 |  12 ---
 lib/net/rte_ip.h                      |  19 ----
 lib/node/rte_node_eth_api.h           |   1 -
 lib/node/rte_node_ip4_api.h           |   2 -
 lib/node/version.map                  |  16 ++-
 lib/pcapng/rte_pcapng.h               |  11 --
 lib/pcapng/version.map                |   6 +-
 lib/pdump/rte_pdump.h                 |  12 ---
 lib/pdump/version.map                 |  11 +-
 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 ++---
 lib/power/rte_power.h                 |   4 -
 lib/power/rte_power_guest_channel.h   |   4 -
 lib/power/rte_power_pmd_mgmt.h        |  40 --------
 lib/power/rte_power_uncore.h          |   5 -
 lib/power/version.map                 |  40 +++-----
 lib/rcu/rte_rcu_qsbr.h                |  20 ----
 lib/rcu/version.map                   |  15 +--
 lib/regexdev/rte_regexdev.h           |  92 -----------------
 lib/regexdev/version.map              |   2 +-
 lib/sched/rte_pie.h                   |   8 --
 lib/sched/rte_sched.h                 |   5 -
 lib/sched/version.map                 |  18 +---
 lib/security/rte_security.h           |  28 +-----
 lib/security/version.map              |  18 ++--
 lib/table/rte_swx_table_learner.h     |  10 --
 lib/table/rte_swx_table_selector.h    |   6 --
 lib/table/rte_table_hash_func.h       |   9 --
 lib/table/version.map                 |  18 +---
 lib/timer/rte_timer.h                 |   4 -
 lib/timer/version.map                 |   7 +-
 lib/vhost/rte_vhost.h                 |   5 -
 lib/vhost/rte_vhost_async.h           |  19 ----
 lib/vhost/rte_vhost_crypto.h          |   1 -
 lib/vhost/version.map                 |  51 ++++------
 75 files changed, 220 insertions(+), 1126 deletions(-)

-- 
2.39.2


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

* [PATCH v3 01/29] bpf: make rte_bpf_dump and rte_bpf_convert stable API's
  2023-10-19 16:55 ` [PATCH v3 00/29] Promote experimental " Stephen Hemminger
@ 2023-10-19 16:55   ` Stephen Hemminger
  2023-10-19 16:55   ` [PATCH v3 02/29] cmdline: make experimental API's stable Stephen Hemminger
                     ` (27 subsequent siblings)
  28 siblings, 0 replies; 219+ messages in thread
From: Stephen Hemminger @ 2023-10-19 16:55 UTC (permalink / raw)
  To: dev; +Cc: Stephen Hemminger, Konstantin Ananyev

These two API's were introduced in 23.11 and can now be
made not experimental.

Signed-off-by: Stephen Hemminger <stephen@networkplumber.org>
Acked-by: Konstantin Ananyev <konstantin.v.ananyev@yandex.ru>
---
 lib/bpf/rte_bpf.h   | 2 --
 lib/bpf/version.map | 9 ++-------
 2 files changed, 2 insertions(+), 9 deletions(-)

diff --git a/lib/bpf/rte_bpf.h b/lib/bpf/rte_bpf.h
index 4d71120dbd9d..f70d8dacd0d3 100644
--- a/lib/bpf/rte_bpf.h
+++ b/lib/bpf/rte_bpf.h
@@ -209,7 +209,6 @@ rte_bpf_get_jit(const struct rte_bpf *bpf, struct rte_bpf_jit *jit);
  * @param len
  *   Number of BPF instructions to dump.
  */
-__rte_experimental
 void
 rte_bpf_dump(FILE *f, const struct ebpf_insn *buf, uint32_t len);
 
@@ -229,7 +228,6 @@ struct bpf_program;
  *   - ENOMEM - can't reserve enough memory
  *   - ENOTSUP - operation not supported
  */
-__rte_experimental
 struct rte_bpf_prm *
 rte_bpf_convert(const struct bpf_program *prog);
 
diff --git a/lib/bpf/version.map b/lib/bpf/version.map
index c49bf1701f0a..2e957494e9df 100644
--- a/lib/bpf/version.map
+++ b/lib/bpf/version.map
@@ -1,7 +1,9 @@
 DPDK_24 {
 	global:
 
+	rte_bpf_convert;
 	rte_bpf_destroy;
+	rte_bpf_dump;
 	rte_bpf_elf_load;
 	rte_bpf_eth_rx_elf_load;
 	rte_bpf_eth_rx_unload;
@@ -14,10 +16,3 @@ DPDK_24 {
 
 	local: *;
 };
-
-EXPERIMENTAL {
-	global:
-
-	rte_bpf_convert;
-	rte_bpf_dump;
-};
-- 
2.39.2


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

* [PATCH v3 02/29] cmdline: make experimental API's stable
  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   ` Stephen Hemminger
  2023-10-19 16:55   ` [PATCH v3 03/29] ethdev: mark rte_mtr API's as stable Stephen Hemminger
                     ` (26 subsequent siblings)
  28 siblings, 0 replies; 219+ messages in thread
From: Stephen Hemminger @ 2023-10-19 16:55 UTC (permalink / raw)
  To: dev; +Cc: Stephen Hemminger, Bruce Richardson

These API's have all ben around for several releases.

Signed-off-by: Stephen Hemminger <stephen@networkplumber.org>
Acked-by: Bruce Richardson <bruce.richardson@intel.com>
---
 lib/cmdline/cmdline.h        |  1 -
 lib/cmdline/cmdline_parse.h  |  4 ----
 lib/cmdline/cmdline_rdline.h |  4 ----
 lib/cmdline/version.map      | 26 ++++++++------------------
 4 files changed, 8 insertions(+), 27 deletions(-)

diff --git a/lib/cmdline/cmdline.h b/lib/cmdline/cmdline.h
index 992c84591456..dd41e1054378 100644
--- a/lib/cmdline/cmdline.h
+++ b/lib/cmdline/cmdline.h
@@ -39,7 +39,6 @@ void cmdline_printf(const struct cmdline *cl, const char *fmt, ...)
 int cmdline_in(struct cmdline *cl, const char *buf, int size);
 int cmdline_write_char(struct rdline *rdl, char c);
 
-__rte_experimental
 struct rdline *
 cmdline_get_rdline(struct cmdline *cl);
 
diff --git a/lib/cmdline/cmdline_parse.h b/lib/cmdline/cmdline_parse.h
index a852ac411c59..41b4db1f76f9 100644
--- a/lib/cmdline/cmdline_parse.h
+++ b/lib/cmdline/cmdline_parse.h
@@ -155,9 +155,6 @@ typedef cmdline_parse_inst_t *cmdline_parse_ctx_t;
 int cmdline_parse(struct cmdline *cl, const char *buf);
 
 /**
- * @warning
- * @b EXPERIMENTAL: this API may change without prior notice
- *
  * Try to parse a buffer according to the specified context, but do not
  * perform any function calls if parse is successful.
  *
@@ -166,7 +163,6 @@ int cmdline_parse(struct cmdline *cl, const char *buf);
  * CMDLINE_PARSE_BAD_ARGS on error and returns the parsed line length (>=0)
  * on successful parse.
  */
-__rte_experimental
 int cmdline_parse_check(struct cmdline *cl, const char *buf);
 
 /**
diff --git a/lib/cmdline/cmdline_rdline.h b/lib/cmdline/cmdline_rdline.h
index 1b4cc7ce5773..c6bb6bbbb36a 100644
--- a/lib/cmdline/cmdline_rdline.h
+++ b/lib/cmdline/cmdline_rdline.h
@@ -58,7 +58,6 @@ typedef int (rdline_complete_t)(struct rdline *rdl, const char *buf,
  *
  * \return New rdline object on success, NULL on failure.
  */
-__rte_experimental
 struct rdline *rdline_new(rdline_write_char_t *write_char,
 			  rdline_validate_t *validate,
 			  rdline_complete_t *complete,
@@ -70,7 +69,6 @@ struct rdline *rdline_new(rdline_write_char_t *write_char,
  * \param rdl A pointer to an initialized struct rdline.
  *            If NULL, this function is a no-op.
  */
-__rte_experimental
 void rdline_free(struct rdline *rdl);
 
 /**
@@ -163,13 +161,11 @@ char *rdline_get_history_item(struct rdline *rdl, unsigned int i);
 /**
  * Get maximum history buffer size.
  */
-__rte_experimental
 size_t rdline_get_history_buffer_size(struct rdline *rdl);
 
 /**
  * Get the opaque pointer supplied on struct rdline creation.
  */
-__rte_experimental
 void *rdline_get_opaque(struct rdline *rdl);
 
 #ifdef __cplusplus
diff --git a/lib/cmdline/version.map b/lib/cmdline/version.map
index 97166789016c..88174e39bcb7 100644
--- a/lib/cmdline/version.map
+++ b/lib/cmdline/version.map
@@ -30,11 +30,13 @@ DPDK_24 {
 	cmdline_get_help_num;
 	cmdline_get_help_portlist;
 	cmdline_get_help_string;
+	cmdline_get_rdline;
 	cmdline_in;
 	cmdline_interact;
 	cmdline_isendoftoken;
 	cmdline_new;
 	cmdline_parse;
+	cmdline_parse_check;
 	cmdline_parse_etheraddr;
 	cmdline_parse_ipaddr;
 	cmdline_parse_num;
@@ -51,37 +53,25 @@ DPDK_24 {
 	cmdline_token_portlist_ops;
 	cmdline_token_string_ops;
 	cmdline_write_char;
+
 	rdline_add_history;
 	rdline_char_in;
 	rdline_clear_history;
+	rdline_free;
 	rdline_get_buffer;
+	rdline_get_history_buffer_size;
 	rdline_get_history_item;
+	rdline_get_opaque;
+	rdline_new;
 	rdline_newline;
 	rdline_quit;
 	rdline_redisplay;
 	rdline_reset;
 	rdline_restart;
 	rdline_stop;
+
 	vt100_init;
 	vt100_parser;
 
 	local: *;
 };
-
-EXPERIMENTAL {
-	global:
-
-	# added in 20.11
-	cmdline_get_rdline;
-
-	# added in 21.11
-	rdline_new;
-	rdline_free;
-	rdline_get_history_buffer_size;
-	rdline_get_opaque;
-
-	# added in 22.07
-	cmdline_parse_check;
-
-	local: *;
-};
-- 
2.39.2


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

* [PATCH v3 03/29] ethdev: mark rte_mtr API's as stable
  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   ` Stephen Hemminger
  2023-10-19 16:55   ` [PATCH v3 04/29] ethdev: mark rte_tm " Stephen Hemminger
                     ` (25 subsequent siblings)
  28 siblings, 0 replies; 219+ messages in thread
From: Stephen Hemminger @ 2023-10-19 16:55 UTC (permalink / raw)
  To: dev
  Cc: Stephen Hemminger, Thomas Monjalon, Cristian Dumitrescu,
	Ferruh Yigit, Andrew Rybchenko

These haven't changed in a while, time has come to make them
not experimental.

Signed-off-by: Stephen Hemminger <stephen@networkplumber.org>
---
 MAINTAINERS            |  2 +-
 lib/ethdev/rte_mtr.h   | 25 +------------------------
 lib/ethdev/version.map | 34 ++++++++++++++++------------------
 3 files changed, 18 insertions(+), 43 deletions(-)

diff --git a/MAINTAINERS b/MAINTAINERS
index 4083658697fb..ea03d35dbe5a 100644
--- a/MAINTAINERS
+++ b/MAINTAINERS
@@ -427,7 +427,7 @@ T: git://dpdk.org/next/dpdk-next-net
 F: lib/ethdev/rte_tm*
 F: app/test-pmd/cmdline_tm.*
 
-Traffic Metering and Policing API - EXPERIMENTAL
+Traffic Metering and Policing API
 M: Cristian Dumitrescu <cristian.dumitrescu@intel.com>
 T: git://dpdk.org/next/dpdk-next-net
 F: lib/ethdev/rte_mtr*
diff --git a/lib/ethdev/rte_mtr.h b/lib/ethdev/rte_mtr.h
index 30e6c6b12e6e..9a20e974bdad 100644
--- a/lib/ethdev/rte_mtr.h
+++ b/lib/ethdev/rte_mtr.h
@@ -41,10 +41,8 @@
  *    A) Whether an MTR object is private to a flow or potentially shared by
  *       several flows has to be specified at creation time.
  *    B) Several meter actions can be potentially registered for the same flow.
- *
- * @warning
- * @b EXPERIMENTAL: this API may change without prior notice
  */
+
 #include <stdint.h>
 #include <rte_compat.h>
 #include <rte_common.h>
@@ -569,7 +567,6 @@ struct rte_mtr_error {
  * @return
  *   0 on success, non-zero error code otherwise.
  */
-__rte_experimental
 int
 rte_mtr_capabilities_get(uint16_t port_id,
 	struct rte_mtr_capabilities *cap,
@@ -593,7 +590,6 @@ rte_mtr_capabilities_get(uint16_t port_id,
  * @return
  *   0 on success, non-zero error code otherwise.
  */
-__rte_experimental
 int
 rte_mtr_meter_profile_add(uint16_t port_id,
 	uint32_t meter_profile_id,
@@ -615,7 +611,6 @@ rte_mtr_meter_profile_add(uint16_t port_id,
  * @return
  *   0 on success, non-zero error code otherwise.
  */
-__rte_experimental
 int
 rte_mtr_meter_profile_delete(uint16_t port_id,
 	uint32_t meter_profile_id,
@@ -635,7 +630,6 @@ rte_mtr_meter_profile_delete(uint16_t port_id,
  * @return
  *   A valid handle in case of success, NULL otherwise.
  */
-__rte_experimental
 struct rte_flow_meter_profile *
 rte_mtr_meter_profile_get(uint16_t port_id,
 	uint32_t meter_profile_id,
@@ -663,7 +657,6 @@ rte_mtr_meter_profile_get(uint16_t port_id,
  * @return
  *   0 on success, non-zero error code otherwise.
  */
-__rte_experimental
 int
 rte_mtr_meter_policy_validate(uint16_t port_id,
 	struct rte_mtr_meter_policy_params *policy,
@@ -690,7 +683,6 @@ rte_mtr_meter_policy_validate(uint16_t port_id,
  * @return
  *   0 on success, non-zero error code otherwise.
  */
-__rte_experimental
 int
 rte_mtr_meter_policy_add(uint16_t port_id,
 	uint32_t policy_id,
@@ -711,7 +703,6 @@ rte_mtr_meter_policy_add(uint16_t port_id,
  * @return
  *   A valid handle in case of success, NULL otherwise.
  */
-__rte_experimental
 struct rte_flow_meter_policy *
 rte_mtr_meter_policy_get(uint16_t port_id,
 	uint32_t policy_id,
@@ -793,7 +784,6 @@ struct rte_mtr_meter_policy_params policy = \
  * @return
  *   0 on success, non-zero error code otherwise.
  */
-__rte_experimental
 int
 rte_mtr_meter_policy_delete(uint16_t port_id,
 	uint32_t policy_id,
@@ -822,7 +812,6 @@ rte_mtr_meter_policy_delete(uint16_t port_id,
  *
  * @see enum rte_flow_action_type::RTE_FLOW_ACTION_TYPE_METER
  */
-__rte_experimental
 int
 rte_mtr_create(uint16_t port_id,
 	uint32_t mtr_id,
@@ -846,7 +835,6 @@ rte_mtr_create(uint16_t port_id,
  * @return
  *   0 on success, non-zero error code otherwise.
  */
-__rte_experimental
 int
 rte_mtr_destroy(uint16_t port_id,
 	uint32_t mtr_id,
@@ -874,7 +862,6 @@ rte_mtr_destroy(uint16_t port_id,
  * @return
  *   0 on success, non-zero error code otherwise.
  */
-__rte_experimental
 int
 rte_mtr_meter_disable(uint16_t port_id,
 	uint32_t mtr_id,
@@ -896,7 +883,6 @@ rte_mtr_meter_disable(uint16_t port_id,
  * @return
  *   0 on success, non-zero error code otherwise.
  */
-__rte_experimental
 int
 rte_mtr_meter_enable(uint16_t port_id,
 	uint32_t mtr_id,
@@ -916,7 +902,6 @@ rte_mtr_meter_enable(uint16_t port_id,
  * @return
  *   0 on success, non-zero error code otherwise.
  */
-__rte_experimental
 int
 rte_mtr_meter_profile_update(uint16_t port_id,
 	uint32_t mtr_id,
@@ -937,7 +922,6 @@ rte_mtr_meter_profile_update(uint16_t port_id,
  * @return
  *   0 on success, non-zero error code otherwise.
  */
-__rte_experimental
 int
 rte_mtr_meter_policy_update(uint16_t port_id,
 	uint32_t mtr_id,
@@ -964,7 +948,6 @@ rte_mtr_meter_policy_update(uint16_t port_id,
  * @return
  *   0 on success, non-zero error code otherwise.
  */
-__rte_experimental
 int
 rte_mtr_meter_dscp_table_update(uint16_t port_id,
 	uint32_t mtr_id, enum rte_mtr_color_in_protocol proto,
@@ -991,7 +974,6 @@ rte_mtr_meter_dscp_table_update(uint16_t port_id,
  * @return
  *   0 on success, non-zero error code otherwise.
  */
-__rte_experimental
 int
 rte_mtr_meter_vlan_table_update(uint16_t port_id, uint32_t mtr_id,
 				enum rte_mtr_color_in_protocol proto,
@@ -1022,7 +1004,6 @@ rte_mtr_meter_vlan_table_update(uint16_t port_id, uint32_t mtr_id,
  * @return
  *   0 on success, non-zero error code otherwise.
  */
-__rte_experimental
 int
 rte_mtr_color_in_protocol_set(uint16_t port_id, uint32_t mtr_id,
 	enum rte_mtr_color_in_protocol proto, uint32_t priority,
@@ -1042,7 +1023,6 @@ rte_mtr_color_in_protocol_set(uint16_t port_id, uint32_t mtr_id,
  * @return
  *   0 on success, non-zero error code otherwise.
  */
-__rte_experimental
 int
 rte_mtr_color_in_protocol_get(uint16_t port_id, uint32_t mtr_id,
 	uint64_t *proto_mask,
@@ -1064,7 +1044,6 @@ rte_mtr_color_in_protocol_get(uint16_t port_id, uint32_t mtr_id,
  * @return
  *   0 on success, non-zero error code otherwise.
  */
-__rte_experimental
 int
 rte_mtr_color_in_protocol_priority_get(uint16_t port_id, uint32_t mtr_id,
 	enum rte_mtr_color_in_protocol proto, uint32_t *priority,
@@ -1088,7 +1067,6 @@ rte_mtr_color_in_protocol_priority_get(uint16_t port_id, uint32_t mtr_id,
  *
  * @see enum rte_mtr_stats_type
  */
-__rte_experimental
 int
 rte_mtr_stats_update(uint16_t port_id,
 	uint32_t mtr_id,
@@ -1120,7 +1098,6 @@ rte_mtr_stats_update(uint16_t port_id,
  *
  * @see enum rte_mtr_stats_type
  */
-__rte_experimental
 int
 rte_mtr_stats_read(uint16_t port_id,
 	uint32_t mtr_id,
diff --git a/lib/ethdev/version.map b/lib/ethdev/version.map
index 919ba5b8e65b..3611909eb85a 100644
--- a/lib/ethdev/version.map
+++ b/lib/ethdev/version.map
@@ -135,26 +135,34 @@ DPDK_24 {
 	rte_flow_pick_transfer_proxy;
 	rte_flow_query;
 	rte_flow_validate;
-
-	local: *;
-};
-
-EXPERIMENTAL {
-	global:
-
-	# added in 17.11
 	rte_mtr_capabilities_get;
+	rte_mtr_color_in_protocol_get;
+	rte_mtr_color_in_protocol_priority_get;
+	rte_mtr_color_in_protocol_set;
 	rte_mtr_create;
 	rte_mtr_destroy;
 	rte_mtr_meter_disable;
 	rte_mtr_meter_dscp_table_update;
 	rte_mtr_meter_enable;
+	rte_mtr_meter_policy_add;
+	rte_mtr_meter_policy_delete;
+	rte_mtr_meter_policy_get;
+	rte_mtr_meter_policy_update;
+	rte_mtr_meter_policy_validate;
 	rte_mtr_meter_profile_add;
 	rte_mtr_meter_profile_delete;
+	rte_mtr_meter_profile_get;
 	rte_mtr_meter_profile_update;
+	rte_mtr_meter_vlan_table_update;
 	rte_mtr_stats_read;
 	rte_mtr_stats_update;
 
+	local: *;
+};
+
+EXPERIMENTAL {
+	global:
+
 	# added in 18.05
 	rte_eth_dev_get_module_eeprom;
 	rte_eth_dev_get_module_info;
@@ -237,10 +245,6 @@ EXPERIMENTAL {
 	rte_flow_action_handle_destroy;
 	rte_flow_action_handle_update;
 	rte_flow_action_handle_query;
-	rte_mtr_meter_policy_add;
-	rte_mtr_meter_policy_delete;
-	rte_mtr_meter_policy_update;
-	rte_mtr_meter_policy_validate;
 
 	# added in 21.11
 	rte_eth_dev_capability_name;
@@ -275,10 +279,6 @@ EXPERIMENTAL {
 	# added in 22.07
 	rte_eth_rx_avail_thresh_query;
 	rte_eth_rx_avail_thresh_set;
-	rte_mtr_color_in_protocol_get;
-	rte_mtr_color_in_protocol_priority_get;
-	rte_mtr_color_in_protocol_set;
-	rte_mtr_meter_vlan_table_update;
 
 	# added in 22.11
 	rte_eth_buffer_split_get_supported_hdr_ptypes;
@@ -290,8 +290,6 @@ EXPERIMENTAL {
 	rte_eth_tx_descriptor_dump;
 	rte_flow_async_action_handle_query;
 	rte_flow_get_q_aged_flows;
-	rte_mtr_meter_policy_get;
-	rte_mtr_meter_profile_get;
 
 	# added in 23.03
 	rte_eth_dev_count_aggr_ports;
-- 
2.39.2


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

* [PATCH v3 04/29] ethdev: mark rte_tm API's as stable
  2023-10-19 16:55 ` [PATCH v3 00/29] Promote experimental " Stephen Hemminger
                     ` (2 preceding siblings ...)
  2023-10-19 16:55   ` [PATCH v3 03/29] ethdev: mark rte_mtr API's as stable Stephen Hemminger
@ 2023-10-19 16:55   ` Stephen Hemminger
  2023-10-19 16:55   ` [PATCH v3 05/29] pdump: make API's stable Stephen Hemminger
                     ` (24 subsequent siblings)
  28 siblings, 0 replies; 219+ messages in thread
From: Stephen Hemminger @ 2023-10-19 16:55 UTC (permalink / raw)
  To: dev
  Cc: Stephen Hemminger, Thomas Monjalon, Cristian Dumitrescu,
	Ferruh Yigit, Andrew Rybchenko

These API's have been around since 20.11, mark them as not
experimental.

Signed-off-by: Stephen Hemminger <stephen@networkplumber.org>
---
 MAINTAINERS            |  2 +-
 lib/ethdev/rte_tm.h    | 34 -----------------------
 lib/ethdev/version.map | 62 ++++++++++++++++++++----------------------
 3 files changed, 31 insertions(+), 67 deletions(-)

diff --git a/MAINTAINERS b/MAINTAINERS
index ea03d35dbe5a..f77597571633 100644
--- a/MAINTAINERS
+++ b/MAINTAINERS
@@ -421,7 +421,7 @@ F: app/test-pmd/cmdline_flow.c
 F: doc/guides/prog_guide/rte_flow.rst
 F: lib/ethdev/rte_flow*
 
-Traffic Management API - EXPERIMENTAL
+Traffic Management API
 M: Cristian Dumitrescu <cristian.dumitrescu@intel.com>
 T: git://dpdk.org/next/dpdk-next-net
 F: lib/ethdev/rte_tm*
diff --git a/lib/ethdev/rte_tm.h b/lib/ethdev/rte_tm.h
index 08c5fafecdf3..799b92aadaa9 100644
--- a/lib/ethdev/rte_tm.h
+++ b/lib/ethdev/rte_tm.h
@@ -14,10 +14,6 @@
  * This interface provides the ability to configure the traffic manager in a
  * generic way. It includes features such as: hierarchical scheduling,
  * traffic shaping, congestion management, packet marking, etc.
- *
- * @warning
- * @b EXPERIMENTAL:
- * All functions in this file may be changed or removed without prior notice.
  */
 
 #include <stdint.h>
@@ -1242,7 +1238,6 @@ struct rte_tm_error {
  * @return
  *   0 on success, non-zero error code otherwise.
  */
-__rte_experimental
 int
 rte_tm_get_number_of_leaf_nodes(uint16_t port_id,
 	uint32_t *n_leaf_nodes,
@@ -1267,7 +1262,6 @@ rte_tm_get_number_of_leaf_nodes(uint16_t port_id,
  * @return
  *   0 on success, non-zero error code otherwise.
  */
-__rte_experimental
 int
 rte_tm_node_type_get(uint16_t port_id,
 	uint32_t node_id,
@@ -1286,7 +1280,6 @@ rte_tm_node_type_get(uint16_t port_id,
  * @return
  *   0 on success, non-zero error code otherwise.
  */
-__rte_experimental
 int
 rte_tm_capabilities_get(uint16_t port_id,
 	struct rte_tm_capabilities *cap,
@@ -1307,7 +1300,6 @@ rte_tm_capabilities_get(uint16_t port_id,
  * @return
  *   0 on success, non-zero error code otherwise.
  */
-__rte_experimental
 int
 rte_tm_level_capabilities_get(uint16_t port_id,
 	uint32_t level_id,
@@ -1328,7 +1320,6 @@ rte_tm_level_capabilities_get(uint16_t port_id,
  * @return
  *   0 on success, non-zero error code otherwise.
  */
-__rte_experimental
 int
 rte_tm_node_capabilities_get(uint16_t port_id,
 	uint32_t node_id,
@@ -1354,7 +1345,6 @@ rte_tm_node_capabilities_get(uint16_t port_id,
  *
  * @see struct rte_tm_capabilities::cman_wred_context_n_max
  */
-__rte_experimental
 int
 rte_tm_wred_profile_add(uint16_t port_id,
 	uint32_t wred_profile_id,
@@ -1378,7 +1368,6 @@ rte_tm_wred_profile_add(uint16_t port_id,
  *
  * @see struct rte_tm_capabilities::cman_wred_context_n_max
  */
-__rte_experimental
 int
 rte_tm_wred_profile_delete(uint16_t port_id,
 	uint32_t wred_profile_id,
@@ -1410,7 +1399,6 @@ rte_tm_wred_profile_delete(uint16_t port_id,
  *
  * @see struct rte_tm_capabilities::cman_wred_context_shared_n_max
  */
-__rte_experimental
 int
 rte_tm_shared_wred_context_add_update(uint16_t port_id,
 	uint32_t shared_wred_context_id,
@@ -1435,7 +1423,6 @@ rte_tm_shared_wred_context_add_update(uint16_t port_id,
  *
  * @see struct rte_tm_capabilities::cman_wred_context_shared_n_max
  */
-__rte_experimental
 int
 rte_tm_shared_wred_context_delete(uint16_t port_id,
 	uint32_t shared_wred_context_id,
@@ -1460,7 +1447,6 @@ rte_tm_shared_wred_context_delete(uint16_t port_id,
  *
  * @see struct rte_tm_capabilities::shaper_n_max
  */
-__rte_experimental
 int
 rte_tm_shaper_profile_add(uint16_t port_id,
 	uint32_t shaper_profile_id,
@@ -1484,7 +1470,6 @@ rte_tm_shaper_profile_add(uint16_t port_id,
  *
  * @see struct rte_tm_capabilities::shaper_n_max
  */
-__rte_experimental
 int
 rte_tm_shaper_profile_delete(uint16_t port_id,
 	uint32_t shaper_profile_id,
@@ -1514,7 +1499,6 @@ rte_tm_shaper_profile_delete(uint16_t port_id,
  *
  * @see struct rte_tm_capabilities::shaper_shared_n_max
  */
-__rte_experimental
 int
 rte_tm_shared_shaper_add_update(uint16_t port_id,
 	uint32_t shared_shaper_id,
@@ -1538,7 +1522,6 @@ rte_tm_shared_shaper_add_update(uint16_t port_id,
  *
  * @see struct rte_tm_capabilities::shaper_shared_n_max
  */
-__rte_experimental
 int
 rte_tm_shared_shaper_delete(uint16_t port_id,
 	uint32_t shared_shaper_id,
@@ -1607,7 +1590,6 @@ rte_tm_shared_shaper_delete(uint16_t port_id,
  * @see RTE_TM_NODE_LEVEL_ID_ANY
  * @see struct rte_tm_capabilities
  */
-__rte_experimental
 int
 rte_tm_node_add(uint16_t port_id,
 	uint32_t node_id,
@@ -1641,7 +1623,6 @@ rte_tm_node_add(uint16_t port_id,
  *
  * @see RTE_TM_UPDATE_NODE_ADD_DELETE
  */
-__rte_experimental
 int
 rte_tm_node_delete(uint16_t port_id,
 	uint32_t node_id,
@@ -1666,7 +1647,6 @@ rte_tm_node_delete(uint16_t port_id,
  * @see rte_tm_node_resume()
  * @see RTE_TM_UPDATE_NODE_SUSPEND_RESUME
  */
-__rte_experimental
 int
 rte_tm_node_suspend(uint16_t port_id,
 	uint32_t node_id,
@@ -1690,7 +1670,6 @@ rte_tm_node_suspend(uint16_t port_id,
  * @see rte_tm_node_suspend()
  * @see RTE_TM_UPDATE_NODE_SUSPEND_RESUME
  */
-__rte_experimental
 int
 rte_tm_node_resume(uint16_t port_id,
 	uint32_t node_id,
@@ -1732,7 +1711,6 @@ rte_tm_node_resume(uint16_t port_id,
  * @see rte_tm_node_add()
  * @see rte_tm_node_delete()
  */
-__rte_experimental
 int
 rte_tm_hierarchy_commit(uint16_t port_id,
 	int clear_on_fail,
@@ -1773,7 +1751,6 @@ rte_tm_hierarchy_commit(uint16_t port_id,
  * @see RTE_TM_UPDATE_NODE_PARENT_KEEP_LEVEL
  * @see RTE_TM_UPDATE_NODE_PARENT_CHANGE_LEVEL
  */
-__rte_experimental
 int
 rte_tm_node_parent_update(uint16_t port_id,
 	uint32_t node_id,
@@ -1803,7 +1780,6 @@ rte_tm_node_parent_update(uint16_t port_id,
  *
  * @see struct rte_tm_capabilities::shaper_private_n_max
  */
-__rte_experimental
 int
 rte_tm_node_shaper_update(uint16_t port_id,
 	uint32_t node_id,
@@ -1831,7 +1807,6 @@ rte_tm_node_shaper_update(uint16_t port_id,
  *
  * @see struct rte_tm_capabilities::shaper_shared_n_max
  */
-__rte_experimental
 int
 rte_tm_node_shared_shaper_update(uint16_t port_id,
 	uint32_t node_id,
@@ -1859,7 +1834,6 @@ rte_tm_node_shared_shaper_update(uint16_t port_id,
  * @see enum rte_tm_stats_type
  * @see RTE_TM_UPDATE_NODE_STATS
  */
-__rte_experimental
 int
 rte_tm_node_stats_update(uint16_t port_id,
 	uint32_t node_id,
@@ -1888,7 +1862,6 @@ rte_tm_node_stats_update(uint16_t port_id,
  * @see RTE_TM_UPDATE_NODE_WFQ_WEIGHT_MODE
  * @see RTE_TM_UPDATE_NODE_N_SP_PRIORITIES
  */
-__rte_experimental
 int
 rte_tm_node_wfq_weight_mode_update(uint16_t port_id,
 	uint32_t node_id,
@@ -1912,7 +1885,6 @@ rte_tm_node_wfq_weight_mode_update(uint16_t port_id,
  *
  * @see RTE_TM_UPDATE_NODE_CMAN
  */
-__rte_experimental
 int
 rte_tm_node_cman_update(uint16_t port_id,
 	uint32_t node_id,
@@ -1937,7 +1909,6 @@ rte_tm_node_cman_update(uint16_t port_id,
  *
  * @see struct rte_tm_capabilities::cman_wred_context_private_n_max
  */
-__rte_experimental
 int
 rte_tm_node_wred_context_update(uint16_t port_id,
 	uint32_t node_id,
@@ -1963,7 +1934,6 @@ rte_tm_node_wred_context_update(uint16_t port_id,
  *
  * @see struct rte_tm_capabilities::cman_wred_context_shared_n_max
  */
-__rte_experimental
 int
 rte_tm_node_shared_wred_context_update(uint16_t port_id,
 	uint32_t node_id,
@@ -1996,7 +1966,6 @@ rte_tm_node_shared_wred_context_update(uint16_t port_id,
  *
  * @see enum rte_tm_stats_type
  */
-__rte_experimental
 int
 rte_tm_node_stats_read(uint16_t port_id,
 	uint32_t node_id,
@@ -2034,7 +2003,6 @@ rte_tm_node_stats_read(uint16_t port_id,
  *
  * @see struct rte_tm_capabilities::mark_vlan_dei_supported
  */
-__rte_experimental
 int
 rte_tm_mark_vlan_dei(uint16_t port_id,
 	int mark_green,
@@ -2085,7 +2053,6 @@ rte_tm_mark_vlan_dei(uint16_t port_id,
  * @see struct rte_tm_capabilities::mark_ip_ecn_tcp_supported
  * @see struct rte_tm_capabilities::mark_ip_ecn_sctp_supported
  */
-__rte_experimental
 int
 rte_tm_mark_ip_ecn(uint16_t port_id,
 	int mark_green,
@@ -2134,7 +2101,6 @@ rte_tm_mark_ip_ecn(uint16_t port_id,
  *
  * @see struct rte_tm_capabilities::mark_ip_dscp_supported
  */
-__rte_experimental
 int
 rte_tm_mark_ip_dscp(uint16_t port_id,
 	int mark_green,
diff --git a/lib/ethdev/version.map b/lib/ethdev/version.map
index 3611909eb85a..a976f06483b2 100644
--- a/lib/ethdev/version.map
+++ b/lib/ethdev/version.map
@@ -156,6 +156,36 @@ DPDK_24 {
 	rte_mtr_meter_vlan_table_update;
 	rte_mtr_stats_read;
 	rte_mtr_stats_update;
+	rte_tm_capabilities_get;
+	rte_tm_get_number_of_leaf_nodes;
+	rte_tm_hierarchy_commit;
+	rte_tm_level_capabilities_get;
+	rte_tm_mark_ip_dscp;
+	rte_tm_mark_ip_ecn;
+	rte_tm_mark_vlan_dei;
+	rte_tm_node_add;
+	rte_tm_node_capabilities_get;
+	rte_tm_node_cman_update;
+	rte_tm_node_delete;
+	rte_tm_node_parent_update;
+	rte_tm_node_resume;
+	rte_tm_node_shaper_update;
+	rte_tm_node_shared_shaper_update;
+	rte_tm_node_shared_wred_context_update;
+	rte_tm_node_stats_read;
+	rte_tm_node_stats_update;
+	rte_tm_node_suspend;
+	rte_tm_node_type_get;
+	rte_tm_node_wfq_weight_mode_update;
+	rte_tm_node_wred_context_update;
+	rte_tm_shaper_profile_add;
+	rte_tm_shaper_profile_delete;
+	rte_tm_shared_shaper_add_update;
+	rte_tm_shared_shaper_delete;
+	rte_tm_shared_wred_context_add_update;
+	rte_tm_shared_wred_context_delete;
+	rte_tm_wred_profile_add;
+	rte_tm_wred_profile_delete;
 
 	local: *;
 };
@@ -189,38 +219,6 @@ EXPERIMENTAL {
 	__rte_ethdev_trace_tx_burst;
 	rte_flow_get_aged_flows;
 
-	# Marked as experimental in 20.11
-	rte_tm_capabilities_get;
-	rte_tm_get_number_of_leaf_nodes;
-	rte_tm_hierarchy_commit;
-	rte_tm_level_capabilities_get;
-	rte_tm_mark_ip_dscp;
-	rte_tm_mark_ip_ecn;
-	rte_tm_mark_vlan_dei;
-	rte_tm_node_add;
-	rte_tm_node_capabilities_get;
-	rte_tm_node_cman_update;
-	rte_tm_node_delete;
-	rte_tm_node_parent_update;
-	rte_tm_node_resume;
-	rte_tm_node_shaper_update;
-	rte_tm_node_shared_shaper_update;
-	rte_tm_node_shared_wred_context_update;
-	rte_tm_node_stats_read;
-	rte_tm_node_stats_update;
-	rte_tm_node_suspend;
-	rte_tm_node_type_get;
-	rte_tm_node_wfq_weight_mode_update;
-	rte_tm_node_wred_context_update;
-	rte_tm_shaper_profile_add;
-	rte_tm_shaper_profile_delete;
-	rte_tm_shared_shaper_add_update;
-	rte_tm_shared_shaper_delete;
-	rte_tm_shared_wred_context_add_update;
-	rte_tm_shared_wred_context_delete;
-	rte_tm_wred_profile_add;
-	rte_tm_wred_profile_delete;
-
 	# added in 20.11
 	rte_eth_hairpin_bind;
 	rte_eth_hairpin_get_peer_ports;
-- 
2.39.2


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

* [PATCH v3 05/29] pdump: make API's stable
  2023-10-19 16:55 ` [PATCH v3 00/29] Promote experimental " Stephen Hemminger
                     ` (3 preceding siblings ...)
  2023-10-19 16:55   ` [PATCH v3 04/29] ethdev: mark rte_tm " Stephen Hemminger
@ 2023-10-19 16:55   ` Stephen Hemminger
  2023-10-19 16:55   ` [PATCH v3 06/29] pcapng: mark API's as stable Stephen Hemminger
                     ` (23 subsequent siblings)
  28 siblings, 0 replies; 219+ messages in thread
From: Stephen Hemminger @ 2023-10-19 16:55 UTC (permalink / raw)
  To: dev; +Cc: Stephen Hemminger, Reshma Pattan

The filtering API's were added in 23.11 and can now be marked
as not experimental.

Signed-off-by: Stephen Hemminger <stephen@networkplumber.org>
---
 lib/pdump/rte_pdump.h | 12 ------------
 lib/pdump/version.map | 11 +++--------
 2 files changed, 3 insertions(+), 20 deletions(-)

diff --git a/lib/pdump/rte_pdump.h b/lib/pdump/rte_pdump.h
index b1a391830c1d..414931a12cce 100644
--- a/lib/pdump/rte_pdump.h
+++ b/lib/pdump/rte_pdump.h
@@ -83,9 +83,6 @@ rte_pdump_enable(uint16_t port, uint16_t queue, uint32_t flags,
 		void *filter);
 
 /**
- * @warning
- * @b EXPERIMENTAL: this API may change, or be removed, without prior notice
- *
  * Enables packet capturing on given port and queue with filtering.
  *
  * @param port_id
@@ -109,7 +106,6 @@ rte_pdump_enable(uint16_t port, uint16_t queue, uint32_t flags,
  * @return
  *    0 on success, -1 on error, rte_errno is set accordingly.
  */
-__rte_experimental
 int
 rte_pdump_enable_bpf(uint16_t port_id, uint16_t queue,
 		     uint32_t flags, uint32_t snaplen,
@@ -169,9 +165,6 @@ rte_pdump_enable_by_deviceid(char *device_id, uint16_t queue,
 				void *filter);
 
 /**
- * @warning
- * @b EXPERIMENTAL: this API may change, or be removed, without prior notice
- *
  * Enables packet capturing on given device id and queue with filtering.
  * device_id can be name or pci address of device.
  *
@@ -196,7 +189,6 @@ rte_pdump_enable_by_deviceid(char *device_id, uint16_t queue,
  * @return
  *    0 on success, -1 on error, rte_errno is set accordingly.
  */
-__rte_experimental
 int
 rte_pdump_enable_bpf_by_deviceid(const char *device_id, uint16_t queue,
 				 uint32_t flags, uint32_t snaplen,
@@ -242,9 +234,6 @@ struct rte_pdump_stats {
 };
 
 /**
- * @warning
- * @b EXPERIMENTAL: this API may change, or be removed, without prior notice
- *
  * Retrieve the packet capture statistics for a queue.
  *
  * @param port_id
@@ -254,7 +243,6 @@ struct rte_pdump_stats {
  * @return
  *   Zero if successful. -1 on error and rte_errno is set.
  */
-__rte_experimental
 int
 rte_pdump_stats(uint16_t port_id, struct rte_pdump_stats *stats);
 
diff --git a/lib/pdump/version.map b/lib/pdump/version.map
index 225830dc85a7..ea5bd157cdb1 100644
--- a/lib/pdump/version.map
+++ b/lib/pdump/version.map
@@ -4,17 +4,12 @@ DPDK_24 {
 	rte_pdump_disable;
 	rte_pdump_disable_by_deviceid;
 	rte_pdump_enable;
+	rte_pdump_enable_bpf;
+	rte_pdump_enable_bpf_by_deviceid;
 	rte_pdump_enable_by_deviceid;
 	rte_pdump_init;
+	rte_pdump_stats;
 	rte_pdump_uninit;
 
 	local: *;
 };
-
-EXPERIMENTAL {
-	global:
-
-	rte_pdump_enable_bpf;
-	rte_pdump_enable_bpf_by_deviceid;
-	rte_pdump_stats;
-};
-- 
2.39.2


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

* [PATCH v3 06/29] pcapng: mark API's as stable
  2023-10-19 16:55 ` [PATCH v3 00/29] Promote experimental " Stephen Hemminger
                     ` (4 preceding siblings ...)
  2023-10-19 16:55   ` [PATCH v3 05/29] pdump: make API's stable Stephen Hemminger
@ 2023-10-19 16:55   ` Stephen Hemminger
  2023-10-19 16:55   ` [PATCH v3 07/29] net: remove experimental from functions Stephen Hemminger
                     ` (22 subsequent siblings)
  28 siblings, 0 replies; 219+ messages in thread
From: Stephen Hemminger @ 2023-10-19 16:55 UTC (permalink / raw)
  To: dev; +Cc: Stephen Hemminger, Reshma Pattan

This API was added in 23.11 and can now be marked as not
experimental.

Signed-off-by: Stephen Hemminger <stephen@networkplumber.org>
---
 lib/pcapng/rte_pcapng.h | 11 -----------
 lib/pcapng/version.map  |  6 ++----
 2 files changed, 2 insertions(+), 15 deletions(-)

diff --git a/lib/pcapng/rte_pcapng.h b/lib/pcapng/rte_pcapng.h
index d93cc9f73ad5..c96c8994f38b 100644
--- a/lib/pcapng/rte_pcapng.h
+++ b/lib/pcapng/rte_pcapng.h
@@ -6,10 +6,6 @@
  * @file
  * RTE pcapng
  *
- * @warning
- * @b EXPERIMENTAL:
- * All functions in this file may be changed or removed without prior notice.
- *
  * Pcapng is an evolution from the pcap format, created to address some of
  * its deficiencies. Namely, the lack of extensibility and inability to store
  * additional information.
@@ -54,7 +50,6 @@ typedef struct rte_pcapng rte_pcapng_t;
  * @return
  *   handle to library, or NULL in case of error (and rte_errno is set).
  */
-__rte_experimental
 rte_pcapng_t *
 rte_pcapng_fdopen(int fd,
 		  const char *osname, const char *hardware,
@@ -66,7 +61,6 @@ rte_pcapng_fdopen(int fd,
  * @param self
  *  handle to library
  */
-__rte_experimental
 void
 rte_pcapng_close(rte_pcapng_t *self);
 
@@ -89,7 +83,6 @@ rte_pcapng_close(rte_pcapng_t *self);
  * and before any packet record. All ports used in packet capture
  * must be added.
  */
-__rte_experimental
 int
 rte_pcapng_add_interface(rte_pcapng_t *self, uint16_t port,
 			 const char *ifname, const char *ifdescr,
@@ -132,7 +125,6 @@ enum rte_pcapng_direction {
  *   - The pointer to the new mbuf formatted for pcapng_write
  *   - NULL if allocation fails.
  */
-__rte_experimental
 struct rte_mbuf *
 rte_pcapng_copy(uint16_t port_id, uint32_t queue,
 		const struct rte_mbuf *m, struct rte_mempool *mp,
@@ -149,7 +141,6 @@ rte_pcapng_copy(uint16_t port_id, uint32_t queue,
  *   The minimum size of mbuf data to handle packet with length bytes.
  *   Accounting for required header and trailer fields
  */
-__rte_experimental
 uint32_t
 rte_pcapng_mbuf_size(uint32_t length);
 
@@ -174,7 +165,6 @@ rte_pcapng_mbuf_size(uint32_t length);
  *  The number of bytes written to file, -1 on failure to write file.
  *  The mbuf's in *pkts* are always freed.
  */
-__rte_experimental
 ssize_t
 rte_pcapng_write_packets(rte_pcapng_t *self,
 			 struct rte_mbuf *pkts[], uint16_t nb_pkts);
@@ -205,7 +195,6 @@ rte_pcapng_write_packets(rte_pcapng_t *self,
  * @return
  *  number of bytes written to file, -1 on failure to write file
  */
-__rte_experimental
 ssize_t
 rte_pcapng_write_stats(rte_pcapng_t *self, uint16_t port,
 		       const char *comment,
diff --git a/lib/pcapng/version.map b/lib/pcapng/version.map
index 36393914d97c..81c9652ad6b5 100644
--- a/lib/pcapng/version.map
+++ b/lib/pcapng/version.map
@@ -1,6 +1,7 @@
-EXPERIMENTAL {
+DPDK_24 {
 	global:
 
+	rte_pcapng_add_interface;
 	rte_pcapng_close;
 	rte_pcapng_copy;
 	rte_pcapng_fdopen;
@@ -8,8 +9,5 @@ EXPERIMENTAL {
 	rte_pcapng_write_packets;
 	rte_pcapng_write_stats;
 
-	# added in 23.03
-	rte_pcapng_add_interface;
-
 	local: *;
 };
-- 
2.39.2


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

* [PATCH v3 07/29] net: remove experimental from functions
  2023-10-19 16:55 ` [PATCH v3 00/29] Promote experimental " Stephen Hemminger
                     ` (5 preceding siblings ...)
  2023-10-19 16:55   ` [PATCH v3 06/29] pcapng: mark API's as stable Stephen Hemminger
@ 2023-10-19 16:55   ` Stephen Hemminger
  2023-10-19 16:55   ` [PATCH v3 08/29] rcu: remove experimental from rte_rcu_qbsr Stephen Hemminger
                     ` (21 subsequent siblings)
  28 siblings, 0 replies; 219+ messages in thread
From: Stephen Hemminger @ 2023-10-19 16:55 UTC (permalink / raw)
  To: dev; +Cc: Stephen Hemminger

These functions have been around long enough should no
longer be experimental.

Signed-off-by: Stephen Hemminger <stephen@networkplumber.org>
---
 lib/net/rte_ip.h | 19 -------------------
 1 file changed, 19 deletions(-)

diff --git a/lib/net/rte_ip.h b/lib/net/rte_ip.h
index 7f58dc6f6a9c..2cb5be222cdd 100644
--- a/lib/net/rte_ip.h
+++ b/lib/net/rte_ip.h
@@ -435,9 +435,6 @@ __rte_ipv4_udptcp_cksum_mbuf(const struct rte_mbuf *m,
 }
 
 /**
- * @warning
- * @b EXPERIMENTAL: this API may change without prior notice.
- *
  * Compute the IPv4 UDP/TCP checksum of a packet.
  *
  * @param m
@@ -449,7 +446,6 @@ __rte_ipv4_udptcp_cksum_mbuf(const struct rte_mbuf *m,
  * @return
  *   The complemented checksum to set in the L4 header.
  */
-__rte_experimental
 static inline uint16_t
 rte_ipv4_udptcp_cksum_mbuf(const struct rte_mbuf *m,
 			   const struct rte_ipv4_hdr *ipv4_hdr, uint16_t l4_off)
@@ -482,7 +478,6 @@ rte_ipv4_udptcp_cksum_mbuf(const struct rte_mbuf *m,
  * @return
  *   Return 0 if the checksum is correct, else -1.
  */
-__rte_experimental
 static inline int
 rte_ipv4_udptcp_cksum_verify(const struct rte_ipv4_hdr *ipv4_hdr,
 			     const void *l4_hdr)
@@ -496,9 +491,6 @@ rte_ipv4_udptcp_cksum_verify(const struct rte_ipv4_hdr *ipv4_hdr,
 }
 
 /**
- * @warning
- * @b EXPERIMENTAL: this API may change without prior notice.
- *
  * Verify the IPv4 UDP/TCP checksum of a packet.
  *
  * In case of UDP, the caller must first check if udp_hdr->dgram_cksum is 0
@@ -513,7 +505,6 @@ rte_ipv4_udptcp_cksum_verify(const struct rte_ipv4_hdr *ipv4_hdr,
  * @return
  *   Return 0 if the checksum is correct, else -1.
  */
-__rte_experimental
 static inline int
 rte_ipv4_udptcp_cksum_mbuf_verify(const struct rte_mbuf *m,
 				  const struct rte_ipv4_hdr *ipv4_hdr,
@@ -687,9 +678,6 @@ __rte_ipv6_udptcp_cksum_mbuf(const struct rte_mbuf *m,
 }
 
 /**
- * @warning
- * @b EXPERIMENTAL: this API may change without prior notice.
- *
  * Process the IPv6 UDP or TCP checksum of a packet.
  *
  * The IPv6 header must not be followed by extension headers. The layer 4
@@ -704,7 +692,6 @@ __rte_ipv6_udptcp_cksum_mbuf(const struct rte_mbuf *m,
  * @return
  *   The complemented checksum to set in the L4 header.
  */
-__rte_experimental
 static inline uint16_t
 rte_ipv6_udptcp_cksum_mbuf(const struct rte_mbuf *m,
 			   const struct rte_ipv6_hdr *ipv6_hdr, uint16_t l4_off)
@@ -738,7 +725,6 @@ rte_ipv6_udptcp_cksum_mbuf(const struct rte_mbuf *m,
  * @return
  *   Return 0 if the checksum is correct, else -1.
  */
-__rte_experimental
 static inline int
 rte_ipv6_udptcp_cksum_verify(const struct rte_ipv6_hdr *ipv6_hdr,
 			     const void *l4_hdr)
@@ -752,9 +738,6 @@ rte_ipv6_udptcp_cksum_verify(const struct rte_ipv6_hdr *ipv6_hdr,
 }
 
 /**
- * @warning
- * @b EXPERIMENTAL: this API may change without prior notice.
- *
  * Validate the IPv6 UDP or TCP checksum of a packet.
  *
  * In case of UDP, the caller must first check if udp_hdr->dgram_cksum is 0:
@@ -770,7 +753,6 @@ rte_ipv6_udptcp_cksum_verify(const struct rte_ipv6_hdr *ipv6_hdr,
  * @return
  *   Return 0 if the checksum is correct, else -1.
  */
-__rte_experimental
 static inline int
 rte_ipv6_udptcp_cksum_mbuf_verify(const struct rte_mbuf *m,
 				  const struct rte_ipv6_hdr *ipv6_hdr,
@@ -825,7 +807,6 @@ struct rte_ipv6_fragment_ext {
  * @return
  *   next protocol number if proto is an IPv6 extension, -EINVAL otherwise
  */
-__rte_experimental
 static inline int
 rte_ipv6_get_next_ext(const uint8_t *p, int proto, size_t *ext_len)
 {
-- 
2.39.2


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

* [PATCH v3 08/29] rcu: remove experimental from rte_rcu_qbsr
  2023-10-19 16:55 ` [PATCH v3 00/29] Promote experimental " Stephen Hemminger
                     ` (6 preceding siblings ...)
  2023-10-19 16:55   ` [PATCH v3 07/29] net: remove experimental from functions Stephen Hemminger
@ 2023-10-19 16:55   ` Stephen Hemminger
  2023-10-19 16:55   ` [PATCH v3 09/29] lpm: remove experimental Stephen Hemminger
                     ` (20 subsequent siblings)
  28 siblings, 0 replies; 219+ messages in thread
From: Stephen Hemminger @ 2023-10-19 16:55 UTC (permalink / raw)
  To: dev; +Cc: Stephen Hemminger, Honnappa Nagarahalli

These functions were added back in 2020.
Remove experimental flag.

Signed-off-by: Stephen Hemminger <stephen@networkplumber.org>
Reviewed-by: Honnappa Nagarahalli <honnappa.nagarahalli@arm.com>
---
 lib/rcu/rte_rcu_qsbr.h | 20 --------------------
 lib/rcu/version.map    | 15 ++++-----------
 2 files changed, 4 insertions(+), 31 deletions(-)

diff --git a/lib/rcu/rte_rcu_qsbr.h b/lib/rcu/rte_rcu_qsbr.h
index 87e1b55153b5..74ef41e0fac1 100644
--- a/lib/rcu/rte_rcu_qsbr.h
+++ b/lib/rcu/rte_rcu_qsbr.h
@@ -10,10 +10,6 @@
  *
  * RTE Quiescent State Based Reclamation (QSBR).
  *
- * @warning
- * @b EXPERIMENTAL:
- * All functions in this file may be changed or removed without prior notice.
- *
  * Quiescent State (QS) is any point in the thread execution
  * where the thread does not hold a reference to a data structure
  * in shared memory. While using lock-less data structures, the writer
@@ -727,9 +723,6 @@ int
 rte_rcu_qsbr_dump(FILE *f, struct rte_rcu_qsbr *v);
 
 /**
- * @warning
- * @b EXPERIMENTAL: this API may change without prior notice
- *
  * Create a queue used to store the data structure elements that can
  * be freed later. This queue is referred to as 'defer queue'.
  *
@@ -742,14 +735,10 @@ rte_rcu_qsbr_dump(FILE *f, struct rte_rcu_qsbr *v);
  *   - EINVAL - NULL parameters are passed
  *   - ENOMEM - Not enough memory
  */
-__rte_experimental
 struct rte_rcu_qsbr_dq *
 rte_rcu_qsbr_dq_create(const struct rte_rcu_qsbr_dq_parameters *params);
 
 /**
- * @warning
- * @b EXPERIMENTAL: this API may change without prior notice
- *
  * Enqueue one resource to the defer queue and start the grace period.
  * The resource will be freed later after at least one grace period
  * is over.
@@ -777,14 +766,10 @@ rte_rcu_qsbr_dq_create(const struct rte_rcu_qsbr_dq_parameters *params);
  *		if the defer queue size is equal (or larger) than the
  *		number of elements in the data structure.
  */
-__rte_experimental
 int
 rte_rcu_qsbr_dq_enqueue(struct rte_rcu_qsbr_dq *dq, void *e);
 
 /**
- * @warning
- * @b EXPERIMENTAL: this API may change without prior notice
- *
  * Free resources from the defer queue.
  *
  * This API is multi-thread safe.
@@ -806,15 +791,11 @@ rte_rcu_qsbr_dq_enqueue(struct rte_rcu_qsbr_dq *dq, void *e);
  *   On error - 1 with rte_errno set to
  *   - EINVAL - NULL parameters are passed
  */
-__rte_experimental
 int
 rte_rcu_qsbr_dq_reclaim(struct rte_rcu_qsbr_dq *dq, unsigned int n,
 	unsigned int *freed, unsigned int *pending, unsigned int *available);
 
 /**
- * @warning
- * @b EXPERIMENTAL: this API may change without prior notice
- *
  * Delete a defer queue.
  *
  * It tries to reclaim all the resources on the defer queue.
@@ -832,7 +813,6 @@ rte_rcu_qsbr_dq_reclaim(struct rte_rcu_qsbr_dq *dq, unsigned int n,
  *   - EAGAIN - Some of the resources have not completed at least 1 grace
  *		period, try again.
  */
-__rte_experimental
 int
 rte_rcu_qsbr_dq_delete(struct rte_rcu_qsbr_dq *dq);
 
diff --git a/lib/rcu/version.map b/lib/rcu/version.map
index 9218ed1f3399..982ffd59d9cd 100644
--- a/lib/rcu/version.map
+++ b/lib/rcu/version.map
@@ -2,6 +2,10 @@ DPDK_24 {
 	global:
 
 	rte_rcu_log_type;
+	rte_rcu_qsbr_dq_create;
+	rte_rcu_qsbr_dq_delete;
+	rte_rcu_qsbr_dq_enqueue;
+	rte_rcu_qsbr_dq_reclaim;
 	rte_rcu_qsbr_dump;
 	rte_rcu_qsbr_get_memsize;
 	rte_rcu_qsbr_init;
@@ -11,14 +15,3 @@ DPDK_24 {
 
 	local: *;
 };
-
-EXPERIMENTAL {
-	global:
-
-	rte_rcu_qsbr_dq_create;
-	rte_rcu_qsbr_dq_enqueue;
-	rte_rcu_qsbr_dq_reclaim;
-	rte_rcu_qsbr_dq_delete;
-
-	local: *;
-};
-- 
2.39.2


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

* [PATCH v3 09/29] lpm: remove experimental
  2023-10-19 16:55 ` [PATCH v3 00/29] Promote experimental " Stephen Hemminger
                     ` (7 preceding siblings ...)
  2023-10-19 16:55   ` [PATCH v3 08/29] rcu: remove experimental from rte_rcu_qbsr Stephen Hemminger
@ 2023-10-19 16:55   ` Stephen Hemminger
  2023-10-19 16:55   ` [PATCH v3 10/29] mbuf: remove experimental from create_extbuf Stephen Hemminger
                     ` (19 subsequent siblings)
  28 siblings, 0 replies; 219+ messages in thread
From: Stephen Hemminger @ 2023-10-19 16:55 UTC (permalink / raw)
  To: dev; +Cc: Stephen Hemminger, Bruce Richardson, Vladimir Medvedkin

The function to associate RCU with LPM was added several releases ago.
Remove experimental.

Signed-off-by: Stephen Hemminger <stephen@networkplumber.org>
---
 lib/lpm/rte_lpm.h   | 4 ----
 lib/lpm/version.map | 7 +------
 2 files changed, 1 insertion(+), 10 deletions(-)

diff --git a/lib/lpm/rte_lpm.h b/lib/lpm/rte_lpm.h
index 75e27ff164ab..40825c5b8038 100644
--- a/lib/lpm/rte_lpm.h
+++ b/lib/lpm/rte_lpm.h
@@ -186,9 +186,6 @@ void
 rte_lpm_free(struct rte_lpm *lpm);
 
 /**
- * @warning
- * @b EXPERIMENTAL: this API may change without prior notice
- *
  * Associate RCU QSBR variable with an LPM object.
  *
  * @param lpm
@@ -203,7 +200,6 @@ rte_lpm_free(struct rte_lpm *lpm);
  *   - EEXIST - already added QSBR
  *   - ENOMEM - memory allocation failure
  */
-__rte_experimental
 int rte_lpm_rcu_qsbr_add(struct rte_lpm *lpm, struct rte_lpm_rcu_config *cfg);
 
 /**
diff --git a/lib/lpm/version.map b/lib/lpm/version.map
index 9ba73b2f938b..b6bee8c18b8a 100644
--- a/lib/lpm/version.map
+++ b/lib/lpm/version.map
@@ -18,12 +18,7 @@ DPDK_24 {
 	rte_lpm_find_existing;
 	rte_lpm_free;
 	rte_lpm_is_rule_present;
+	rte_lpm_rcu_qsbr_add;
 
 	local: *;
 };
-
-EXPERIMENTAL {
-	global:
-
-	rte_lpm_rcu_qsbr_add;
-};
-- 
2.39.2


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

* [PATCH v3 10/29] mbuf: remove experimental from create_extbuf
  2023-10-19 16:55 ` [PATCH v3 00/29] Promote experimental " Stephen Hemminger
                     ` (8 preceding siblings ...)
  2023-10-19 16:55   ` [PATCH v3 09/29] lpm: remove experimental Stephen Hemminger
@ 2023-10-19 16:55   ` Stephen Hemminger
  2023-10-19 16:55   ` [PATCH v3 11/29] hash: remove experimental from toeplitz hash Stephen Hemminger
                     ` (18 subsequent siblings)
  28 siblings, 0 replies; 219+ messages in thread
From: Stephen Hemminger @ 2023-10-19 16:55 UTC (permalink / raw)
  To: dev; +Cc: Stephen Hemminger, Bruce Richardson

This API was added in 2020 and should no longer be experimental.

Signed-off-by: Stephen Hemminger <stephen@networkplumber.org>
Acked-by: Bruce Richardson <bruce.richardson@intel.com>
---
 lib/mbuf/rte_mbuf.h  | 1 -
 lib/mbuf/version.map | 8 +-------
 2 files changed, 1 insertion(+), 8 deletions(-)

diff --git a/lib/mbuf/rte_mbuf.h b/lib/mbuf/rte_mbuf.h
index 913c459b1cc6..30fa3df85f53 100644
--- a/lib/mbuf/rte_mbuf.h
+++ b/lib/mbuf/rte_mbuf.h
@@ -800,7 +800,6 @@ struct rte_pktmbuf_extmem {
  *    - EEXIST - a memzone with the same name already exists
  *    - ENOMEM - no appropriate memory area found in which to create memzone
  */
-__rte_experimental
 struct rte_mempool *
 rte_pktmbuf_pool_create_extbuf(const char *name, unsigned int n,
 	unsigned int cache_size, uint16_t priv_size,
diff --git a/lib/mbuf/version.map b/lib/mbuf/version.map
index f010d4692e3e..daa65e2bbdb2 100644
--- a/lib/mbuf/version.map
+++ b/lib/mbuf/version.map
@@ -38,14 +38,8 @@ DPDK_24 {
 	rte_pktmbuf_init;
 	rte_pktmbuf_pool_create;
 	rte_pktmbuf_pool_create_by_ops;
+	rte_pktmbuf_pool_create_extbuf;
 	rte_pktmbuf_pool_init;
 
 	local: *;
 };
-
-EXPERIMENTAL {
-	global:
-
-	rte_pktmbuf_pool_create_extbuf;
-
-};
-- 
2.39.2


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

* [PATCH v3 11/29] hash: remove experimental from toeplitz hash
  2023-10-19 16:55 ` [PATCH v3 00/29] Promote experimental " Stephen Hemminger
                     ` (9 preceding siblings ...)
  2023-10-19 16:55   ` [PATCH v3 10/29] mbuf: remove experimental from create_extbuf Stephen Hemminger
@ 2023-10-19 16:55   ` Stephen Hemminger
  2023-10-19 16:55   ` [PATCH v3 12/29] timer: remove experimental from rte_timer_next_ticks Stephen Hemminger
                     ` (17 subsequent siblings)
  28 siblings, 0 replies; 219+ messages in thread
From: Stephen Hemminger @ 2023-10-19 16:55 UTC (permalink / raw)
  To: dev
  Cc: Stephen Hemminger, Yipeng Wang, Sameh Gobriel, Bruce Richardson,
	Vladimir Medvedkin

The rte_thash_ functions have been around since 2020.
Remove experimental tag.

Signed-off-by: Stephen Hemminger <stephen@networkplumber.org>
---
 lib/hash/rte_thash.h          | 44 -----------------------------------
 lib/hash/rte_thash_gfni.h     |  8 -------
 lib/hash/rte_thash_x86_gfni.h |  8 -------
 lib/hash/version.map          | 16 ++++---------
 4 files changed, 4 insertions(+), 72 deletions(-)

diff --git a/lib/hash/rte_thash.h b/lib/hash/rte_thash.h
index da06cd53c0e0..071730c7bab9 100644
--- a/lib/hash/rte_thash.h
+++ b/lib/hash/rte_thash.h
@@ -221,14 +221,10 @@ rte_softrss_be(uint32_t *input_tuple, uint32_t input_len,
 /**
  * Indicates if GFNI implementations of the Toeplitz hash are supported.
  *
- * @warning
- * @b EXPERIMENTAL: this API may change without prior notice.
- *
  * @return
  *  1 if GFNI is supported
  *  0 otherwise
  */
-__rte_experimental
 int
 rte_thash_gfni_supported(void);
 
@@ -236,9 +232,6 @@ rte_thash_gfni_supported(void);
  * Converts Toeplitz hash key (RSS key) into matrixes required
  * for GFNI implementation
  *
- * @warning
- * @b EXPERIMENTAL: this API may change without prior notice.
- *
  * @param matrixes
  *  pointer to the memory where matrices will be written.
  *  Note: the size of this memory must be equal to size * 8
@@ -247,7 +240,6 @@ rte_thash_gfni_supported(void);
  * @param size
  *  Size of the rss_key in bytes.
  */
-__rte_experimental
 void
 rte_thash_complete_matrix(uint64_t *matrixes, const uint8_t *rss_key,
 	int size);
@@ -276,9 +268,6 @@ struct rte_thash_subtuple_helper;
 /**
  * Create a new thash context.
  *
- * @warning
- * @b EXPERIMENTAL: this API may change without prior notice.
- *
  * @param name
  *  Context name
  * @param key_len
@@ -298,7 +287,6 @@ struct rte_thash_subtuple_helper;
  *  A pointer to the created context on success
  *  NULL otherwise
  */
-__rte_experimental
 struct rte_thash_ctx *
 rte_thash_init_ctx(const char *name, uint32_t key_len, uint32_t reta_sz,
 	uint8_t *key, uint32_t flags);
@@ -306,9 +294,6 @@ rte_thash_init_ctx(const char *name, uint32_t key_len, uint32_t reta_sz,
 /**
  * Find an existing thash context and return a pointer to it.
  *
- * @warning
- * @b EXPERIMENTAL: this API may change without prior notice.
- *
  * @param name
  *  Name of the thash context
  * @return
@@ -316,20 +301,15 @@ rte_thash_init_ctx(const char *name, uint32_t key_len, uint32_t reta_sz,
  *  set appropriately. Possible rte_errno values include:
  *   - ENOENT - required entry not available to return.
  */
-__rte_experimental
 struct rte_thash_ctx *
 rte_thash_find_existing(const char *name);
 
 /**
  * Free a thash context object
  *
- * @warning
- * @b EXPERIMENTAL: this API may change without prior notice.
- *
  * @param ctx
  *  Thash context
  */
-__rte_experimental
 void
 rte_thash_free_ctx(struct rte_thash_ctx *ctx);
 
@@ -339,9 +319,6 @@ rte_thash_free_ctx(struct rte_thash_ctx *ctx);
  * to calculate toeplitz hash collisions.
  * This function is not multi-thread safe.
  *
- * @warning
- * @b EXPERIMENTAL: this API may change without prior notice.
- *
  * @param ctx
  *  Thash context
  * @param name
@@ -355,7 +332,6 @@ rte_thash_free_ctx(struct rte_thash_ctx *ctx);
  *  0 on success
  *  negative on error
  */
-__rte_experimental
 int
 rte_thash_add_helper(struct rte_thash_ctx *ctx, const char *name, uint32_t len,
 	uint32_t offset);
@@ -363,9 +339,6 @@ rte_thash_add_helper(struct rte_thash_ctx *ctx, const char *name, uint32_t len,
 /**
  * Find a helper in the context by the given name
  *
- * @warning
- * @b EXPERIMENTAL: this API may change without prior notice.
- *
  * @param ctx
  *  Thash context
  * @param name
@@ -373,7 +346,6 @@ rte_thash_add_helper(struct rte_thash_ctx *ctx, const char *name, uint32_t len,
  * @return
  *  Pointer to the thash helper or NULL if it was not found.
  */
-__rte_experimental
 struct rte_thash_subtuple_helper *
 rte_thash_get_helper(struct rte_thash_ctx *ctx, const char *name);
 
@@ -392,7 +364,6 @@ rte_thash_get_helper(struct rte_thash_ctx *ctx, const char *name);
  * @return
  *  A complementary value which must be xored with the corresponding subtuple
  */
-__rte_experimental
 uint32_t
 rte_thash_get_complement(struct rte_thash_subtuple_helper *h,
 	uint32_t hash, uint32_t desired_hash);
@@ -402,15 +373,11 @@ rte_thash_get_complement(struct rte_thash_subtuple_helper *h,
  * It changes after each addition of a helper. It should be installed to
  * the NIC.
  *
- * @warning
- * @b EXPERIMENTAL: this API may change without prior notice.
- *
  * @param ctx
  *  Thash context
  * @return
  *  A pointer to the toeplitz hash key
  */
-__rte_experimental
 const uint8_t *
 rte_thash_get_key(struct rte_thash_ctx *ctx);
 
@@ -420,16 +387,12 @@ rte_thash_get_key(struct rte_thash_ctx *ctx);
  * CPU supports GFNI.
  * Matrices changes after each addition of a helper.
  *
- * @warning
- * @b EXPERIMENTAL: this API may change without prior notice.
- *
  * @param ctx
  *  Thash context
  * @return
  *  A pointer to the toeplitz hash key matrices on success
  *  NULL if GFNI is not supported.
  */
-__rte_experimental
 const uint64_t *
 rte_thash_get_gfni_matrices(struct rte_thash_ctx *ctx);
 
@@ -439,9 +402,6 @@ rte_thash_get_gfni_matrices(struct rte_thash_ctx *ctx);
  * Generally it is some kind of lookup function to check
  * if adjusted tuple is already in use.
  *
- * @warning
- * @b EXPERIMENTAL: this API may change without prior notice.
- *
  * @param userdata
  *  Pointer to the userdata. It could be a pointer to the
  *  table with used tuples to search.
@@ -459,9 +419,6 @@ typedef int (*rte_thash_check_tuple_t)(void *userdata, uint8_t *tuple);
  * desired least significant bits.
  * This function is multi-thread safe.
  *
- * @warning
- * @b EXPERIMENTAL: this API may change without prior notice.
- *
  * @param ctx
  *  Thash context
  * @param h
@@ -483,7 +440,6 @@ typedef int (*rte_thash_check_tuple_t)(void *userdata, uint8_t *tuple);
  *  0 on success
  *  negative otherwise
  */
-__rte_experimental
 int
 rte_thash_adjust_tuple(struct rte_thash_ctx *ctx,
 	struct rte_thash_subtuple_helper *h,
diff --git a/lib/hash/rte_thash_gfni.h b/lib/hash/rte_thash_gfni.h
index ef90faa302d1..67d0fa4da988 100644
--- a/lib/hash/rte_thash_gfni.h
+++ b/lib/hash/rte_thash_gfni.h
@@ -24,9 +24,6 @@ extern "C" {
  * Calculate Toeplitz hash.
  * Dummy implementation.
  *
- * @warning
- * @b EXPERIMENTAL: this API may change without prior notice.
- *
  * @param m
  *  Pointer to the matrices generated from the corresponding
  *  RSS hash key using rte_thash_complete_matrix().
@@ -37,7 +34,6 @@ extern "C" {
  * @return
  *  Calculated Toeplitz hash value.
  */
-__rte_experimental
 static inline uint32_t
 rte_thash_gfni(const uint64_t *mtrx __rte_unused,
 	const uint8_t *key __rte_unused, int len __rte_unused)
@@ -50,9 +46,6 @@ rte_thash_gfni(const uint64_t *mtrx __rte_unused,
  * Bulk implementation for Toeplitz hash.
  * Dummy implementation.
  *
- * @warning
- * @b EXPERIMENTAL: this API may change without prior notice.
- *
  * @param m
  *  Pointer to the matrices generated from the corresponding
  *  RSS hash key using rte_thash_complete_matrix().
@@ -66,7 +59,6 @@ rte_thash_gfni(const uint64_t *mtrx __rte_unused,
  * @param num
  *  Number of tuples to hash.
  */
-__rte_experimental
 static inline void
 rte_thash_gfni_bulk(const uint64_t *mtrx __rte_unused,
 	int len __rte_unused, uint8_t *tuple[] __rte_unused,
diff --git a/lib/hash/rte_thash_x86_gfni.h b/lib/hash/rte_thash_x86_gfni.h
index fbec16dde081..0ff7ad07eeaa 100644
--- a/lib/hash/rte_thash_x86_gfni.h
+++ b/lib/hash/rte_thash_x86_gfni.h
@@ -161,9 +161,6 @@ __rte_thash_gfni(const uint64_t *mtrx, const uint8_t *tuple,
 /**
  * Calculate Toeplitz hash.
  *
- * @warning
- * @b EXPERIMENTAL: this API may change without prior notice.
- *
  * @param m
  *  Pointer to the matrices generated from the corresponding
  *  RSS hash key using rte_thash_complete_matrix().
@@ -175,7 +172,6 @@ __rte_thash_gfni(const uint64_t *mtrx, const uint8_t *tuple,
  * @return
  *  Calculated Toeplitz hash value.
  */
-__rte_experimental
 static inline uint32_t
 rte_thash_gfni(const uint64_t *m, const uint8_t *tuple, int len)
 {
@@ -190,9 +186,6 @@ rte_thash_gfni(const uint64_t *m, const uint8_t *tuple, int len)
 /**
  * Bulk implementation for Toeplitz hash.
  *
- * @warning
- * @b EXPERIMENTAL: this API may change without prior notice.
- *
  * @param m
  *  Pointer to the matrices generated from the corresponding
  *  RSS hash key using rte_thash_complete_matrix().
@@ -207,7 +200,6 @@ rte_thash_gfni(const uint64_t *m, const uint8_t *tuple, int len)
  * @param num
  *  Number of tuples to hash.
  */
-__rte_experimental
 static inline void
 rte_thash_gfni_bulk(const uint64_t *mtrx, int len, uint8_t *tuple[],
 	uint32_t val[], uint32_t num)
diff --git a/lib/hash/version.map b/lib/hash/version.map
index daaa9a8901db..b98b64a1638a 100644
--- a/lib/hash/version.map
+++ b/lib/hash/version.map
@@ -30,25 +30,17 @@ DPDK_24 {
 	rte_hash_rcu_qsbr_add;
 	rte_hash_reset;
 	rte_hash_set_cmp_func;
-
-	local: *;
-};
-
-EXPERIMENTAL {
-	global:
-
-	# added in 21.05
 	rte_thash_add_helper;
 	rte_thash_adjust_tuple;
+	rte_thash_complete_matrix;
 	rte_thash_find_existing;
 	rte_thash_free_ctx;
 	rte_thash_get_complement;
+	rte_thash_get_gfni_matrices;
 	rte_thash_get_helper;
 	rte_thash_get_key;
+	rte_thash_gfni_supported;
 	rte_thash_init_ctx;
 
-	# added in 21.11
-	rte_thash_complete_matrix;
-	rte_thash_get_gfni_matrices;
-	rte_thash_gfni_supported;
+	local: *;
 };
-- 
2.39.2


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

* [PATCH v3 12/29] timer: remove experimental from rte_timer_next_ticks
  2023-10-19 16:55 ` [PATCH v3 00/29] Promote experimental " Stephen Hemminger
                     ` (10 preceding siblings ...)
  2023-10-19 16:55   ` [PATCH v3 11/29] hash: remove experimental from toeplitz hash Stephen Hemminger
@ 2023-10-19 16:55   ` Stephen Hemminger
  2023-10-19 16:55   ` [PATCH v3 13/29] sched: remove experimental Stephen Hemminger
                     ` (16 subsequent siblings)
  28 siblings, 0 replies; 219+ messages in thread
From: Stephen Hemminger @ 2023-10-19 16:55 UTC (permalink / raw)
  To: dev; +Cc: Stephen Hemminger, Erik Gabriel Carrillo

Function was added in 20.11, remove experimental flag.

Signed-off-by: Stephen Hemminger <stephen@networkplumber.org>
---
 lib/timer/rte_timer.h | 4 ----
 lib/timer/version.map | 7 +------
 2 files changed, 1 insertion(+), 10 deletions(-)

diff --git a/lib/timer/rte_timer.h b/lib/timer/rte_timer.h
index d3927d5b6bac..153d1993573f 100644
--- a/lib/timer/rte_timer.h
+++ b/lib/timer/rte_timer.h
@@ -331,9 +331,6 @@ void rte_timer_stop_sync(struct rte_timer *tim);
 int rte_timer_pending(struct rte_timer *tim);
 
 /**
- * @warning
- * @b EXPERIMENTAL: this API may change without prior notice
- *
  * Time until the next timer on the current lcore
  * This function gives the ticks until the next timer will be active.
  *
@@ -343,7 +340,6 @@ int rte_timer_pending(struct rte_timer *tim);
  *   - 0: a timer is pending and will run at next rte_timer_manage()
  *   - >0: ticks until the next timer is ready
  */
-__rte_experimental
 int64_t rte_timer_next_ticks(void);
 
 /**
diff --git a/lib/timer/version.map b/lib/timer/version.map
index e3d5a043034c..b180708e2488 100644
--- a/lib/timer/version.map
+++ b/lib/timer/version.map
@@ -10,6 +10,7 @@ DPDK_24 {
 	rte_timer_dump_stats;
 	rte_timer_init;
 	rte_timer_manage;
+	rte_timer_next_ticks;
 	rte_timer_pending;
 	rte_timer_reset;
 	rte_timer_reset_sync;
@@ -21,9 +22,3 @@ DPDK_24 {
 
 	local: *;
 };
-
-EXPERIMENTAL {
-	global:
-
-	rte_timer_next_ticks;
-};
-- 
2.39.2


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

* [PATCH v3 13/29] sched: remove experimental
  2023-10-19 16:55 ` [PATCH v3 00/29] Promote experimental " Stephen Hemminger
                     ` (11 preceding siblings ...)
  2023-10-19 16:55   ` [PATCH v3 12/29] timer: remove experimental from rte_timer_next_ticks Stephen Hemminger
@ 2023-10-19 16:55   ` Stephen Hemminger
  2023-10-19 16:55   ` [PATCH v3 14/29] dmadev: mark API's as not experimental Stephen Hemminger
                     ` (15 subsequent siblings)
  28 siblings, 0 replies; 219+ messages in thread
From: Stephen Hemminger @ 2023-10-19 16:55 UTC (permalink / raw)
  To: dev; +Cc: Stephen Hemminger, Cristian Dumitrescu

The overcommit and PIE support was added back in 2020.
Remove experimental tag.

Signed-off-by: Stephen Hemminger <stephen@networkplumber.org>
---
 lib/sched/rte_pie.h   |  8 --------
 lib/sched/rte_sched.h |  5 -----
 lib/sched/version.map | 18 ++++--------------
 3 files changed, 4 insertions(+), 27 deletions(-)

diff --git a/lib/sched/rte_pie.h b/lib/sched/rte_pie.h
index e0d6d5a3cdcd..631c657980eb 100644
--- a/lib/sched/rte_pie.h
+++ b/lib/sched/rte_pie.h
@@ -78,7 +78,6 @@ struct rte_pie {
  * @retval !0 error
  */
 int
-__rte_experimental
 rte_pie_rt_data_init(struct rte_pie *pie);
 
 /**
@@ -95,7 +94,6 @@ rte_pie_rt_data_init(struct rte_pie *pie);
  * @retval !0 error
  */
 int
-__rte_experimental
 rte_pie_config_init(struct rte_pie_config *pie_cfg,
 	const uint16_t qdelay_ref,
 	const uint16_t dp_update_interval,
@@ -116,7 +114,6 @@ rte_pie_config_init(struct rte_pie_config *pie_cfg,
  * @retval !0 drop the packet
  */
 static int
-__rte_experimental
 rte_pie_enqueue_empty(const struct rte_pie_config *pie_cfg,
 	struct rte_pie *pie,
 	uint32_t pkt_len)
@@ -148,7 +145,6 @@ rte_pie_enqueue_empty(const struct rte_pie_config *pie_cfg,
  * @param time [in] current time (measured in cpu cycles)
  */
 static void
-__rte_experimental
 _calc_drop_probability(const struct rte_pie_config *pie_cfg,
 	struct rte_pie *pie, uint64_t time)
 {
@@ -212,7 +208,6 @@ _calc_drop_probability(const struct rte_pie_config *pie_cfg,
  * @retval 1 drop the packet
  */
 static inline int
-__rte_experimental
 _rte_pie_drop(const struct rte_pie_config *pie_cfg,
 	struct rte_pie *pie)
 {
@@ -261,7 +256,6 @@ _rte_pie_drop(const struct rte_pie_config *pie_cfg,
  * @retval 2 drop the packet based on mark probability criterion
  */
 static inline int
-__rte_experimental
 rte_pie_enqueue_nonempty(const struct rte_pie_config *pie_cfg,
 	struct rte_pie *pie,
 	uint32_t pkt_len,
@@ -329,7 +323,6 @@ rte_pie_enqueue_nonempty(const struct rte_pie_config *pie_cfg,
  * @retval 1 drop the packet based on drop probability criteria
  */
 static inline int
-__rte_experimental
 rte_pie_enqueue(const struct rte_pie_config *pie_cfg,
 	struct rte_pie *pie,
 	const unsigned int qlen,
@@ -354,7 +347,6 @@ rte_pie_enqueue(const struct rte_pie_config *pie_cfg,
  * @param time [in] current time stamp in cpu cycles
  */
 static inline void
-__rte_experimental
 rte_pie_dequeue(struct rte_pie *pie,
 	uint32_t pkt_len,
 	uint64_t time)
diff --git a/lib/sched/rte_sched.h b/lib/sched/rte_sched.h
index a9ac5909ad0c..77fc78ce2fe9 100644
--- a/lib/sched/rte_sched.h
+++ b/lib/sched/rte_sched.h
@@ -353,9 +353,6 @@ rte_sched_subport_pipe_profile_add(struct rte_sched_port *port,
 	uint32_t *pipe_profile_id);
 
 /**
- * @warning
- * @b EXPERIMENTAL: this API may change without prior notice.
- *
  * Hierarchical scheduler subport bandwidth profile add
  * Note that this function is safe to use in runtime for adding new
  * subport bandwidth profile as it doesn't have any impact on hierarchical
@@ -369,7 +366,6 @@ rte_sched_subport_pipe_profile_add(struct rte_sched_port *port,
  * @return
  *   0 upon success, error code otherwise
  */
-__rte_experimental
 int
 rte_sched_port_subport_profile_add(struct rte_sched_port *port,
 	struct rte_sched_subport_profile_params *profile,
@@ -592,7 +588,6 @@ rte_sched_port_dequeue(struct rte_sched_port *port, struct rte_mbuf **pkts, uint
  * @return
  *   0 upon success, error code otherwise
  */
-__rte_experimental
 int
 rte_sched_subport_tc_ov_config(struct rte_sched_port *port, uint32_t subport_id, bool tc_ov_enable);
 
diff --git a/lib/sched/version.map b/lib/sched/version.map
index d9ce68be1449..be1decaeee46 100644
--- a/lib/sched/version.map
+++ b/lib/sched/version.map
@@ -2,6 +2,8 @@ DPDK_24 {
 	global:
 
 	rte_approx;
+	rte_pie_config_init;
+	rte_pie_rt_data_init;
 	rte_red_config_init;
 	rte_red_log2_1_minus_Wq;
 	rte_red_pow2_frac_inv;
@@ -17,24 +19,12 @@ DPDK_24 {
 	rte_sched_port_pkt_read_color;
 	rte_sched_port_pkt_read_tree_path;
 	rte_sched_port_pkt_write;
+	rte_sched_port_subport_profile_add;
 	rte_sched_queue_read_stats;
 	rte_sched_subport_config;
 	rte_sched_subport_pipe_profile_add;
 	rte_sched_subport_read_stats;
+	rte_sched_subport_tc_ov_config;
 
 	local: *;
 };
-
-EXPERIMENTAL {
-	global:
-
-	# added in 20.11
-	rte_sched_port_subport_profile_add;
-
-	# added in 21.11
-	rte_pie_rt_data_init;
-	rte_pie_config_init;
-
-	# added in 22.07
-	rte_sched_subport_tc_ov_config;
-};
-- 
2.39.2


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

* [PATCH v3 14/29] dmadev: mark API's as not experimental
  2023-10-19 16:55 ` [PATCH v3 00/29] Promote experimental " Stephen Hemminger
                     ` (12 preceding siblings ...)
  2023-10-19 16:55   ` [PATCH v3 13/29] sched: remove experimental Stephen Hemminger
@ 2023-10-19 16:55   ` Stephen Hemminger
  2023-10-19 16:55   ` [PATCH v3 15/29] meter: remove experimental warning from comments Stephen Hemminger
                     ` (14 subsequent siblings)
  28 siblings, 0 replies; 219+ messages in thread
From: Stephen Hemminger @ 2023-10-19 16:55 UTC (permalink / raw)
  To: dev
  Cc: Stephen Hemminger, Chengwen Feng, Bruce Richardson,
	Thomas Monjalon, Kevin Laatz

These were added in 20.11 time now to remove experimental flag.

Signed-off-by: Stephen Hemminger <stephen@networkplumber.org>
Acked-by: Chengwen Feng <fengchengwen@huawei.com>
Acked-by: Bruce Richardson <bruce.richardson@intel.com>
---
 MAINTAINERS             |  2 +-
 lib/dmadev/rte_dmadev.h | 85 -----------------------------------------
 lib/dmadev/version.map  |  2 +-
 3 files changed, 2 insertions(+), 87 deletions(-)

diff --git a/MAINTAINERS b/MAINTAINERS
index f77597571633..1534a414f754 100644
--- a/MAINTAINERS
+++ b/MAINTAINERS
@@ -483,7 +483,7 @@ F: doc/guides/prog_guide/mldev.rst
 F: app/test-mldev/
 F: doc/guides/tools/testmldev.rst
 
-DMA device API - EXPERIMENTAL
+DMA device API
 M: Chengwen Feng <fengchengwen@huawei.com>
 F: lib/dmadev/
 F: drivers/dma/skeleton/
diff --git a/lib/dmadev/rte_dmadev.h b/lib/dmadev/rte_dmadev.h
index 493263a5d627..2c09939ff6c5 100644
--- a/lib/dmadev/rte_dmadev.h
+++ b/lib/dmadev/rte_dmadev.h
@@ -158,9 +158,6 @@ extern "C" {
 #define RTE_DMADEV_DEFAULT_MAX 64
 
 /**
- * @warning
- * @b EXPERIMENTAL: this API may change without prior notice.
- *
  * Configure the maximum number of dmadevs.
  * @note This function can be invoked before the primary process rte_eal_init()
  * to change the maximum number of dmadevs. If not invoked, the maximum number
@@ -172,13 +169,9 @@ extern "C" {
  * @return
  *   0 on success. Otherwise negative value is returned.
  */
-__rte_experimental
 int rte_dma_dev_max(size_t dev_max);
 
 /**
- * @warning
- * @b EXPERIMENTAL: this API may change without prior notice.
- *
  * Get the device identifier for the named DMA device.
  *
  * @param name
@@ -188,13 +181,9 @@ int rte_dma_dev_max(size_t dev_max);
  *   Returns DMA device identifier on success.
  *   - <0: Failure to find named DMA device.
  */
-__rte_experimental
 int rte_dma_get_dev_id_by_name(const char *name);
 
 /**
- * @warning
- * @b EXPERIMENTAL: this API may change without prior notice.
- *
  * Check whether the dev_id is valid.
  *
  * @param dev_id
@@ -203,20 +192,15 @@ int rte_dma_get_dev_id_by_name(const char *name);
  * @return
  *   - If the device index is valid (true) or not (false).
  */
-__rte_experimental
 bool rte_dma_is_valid(int16_t dev_id);
 
 /**
- * @warning
- * @b EXPERIMENTAL: this API may change without prior notice.
- *
  * Get the total number of DMA devices that have been successfully
  * initialised.
  *
  * @return
  *   The total number of usable DMA devices.
  */
-__rte_experimental
 uint16_t rte_dma_count_avail(void);
 
 /**
@@ -227,7 +211,6 @@ uint16_t rte_dma_count_avail(void);
  * @return
  *   Next valid dmadev, UINT16_MAX if there is none.
  */
-__rte_experimental
 int16_t rte_dma_next_dev(int16_t start_dev_id);
 
 /** Utility macro to iterate over all available dmadevs */
@@ -318,9 +301,6 @@ struct rte_dma_info {
 };
 
 /**
- * @warning
- * @b EXPERIMENTAL: this API may change without prior notice.
- *
  * Retrieve information of a DMA device.
  *
  * @param dev_id
@@ -332,7 +312,6 @@ struct rte_dma_info {
  * @return
  *   0 on success. Otherwise negative value is returned.
  */
-__rte_experimental
 int rte_dma_info_get(int16_t dev_id, struct rte_dma_info *dev_info);
 
 /**
@@ -357,9 +336,6 @@ struct rte_dma_conf {
 };
 
 /**
- * @warning
- * @b EXPERIMENTAL: this API may change without prior notice.
- *
  * Configure a DMA device.
  *
  * This function must be invoked first before any other function in the
@@ -375,13 +351,9 @@ struct rte_dma_conf {
  * @return
  *   0 on success. Otherwise negative value is returned.
  */
-__rte_experimental
 int rte_dma_configure(int16_t dev_id, const struct rte_dma_conf *dev_conf);
 
 /**
- * @warning
- * @b EXPERIMENTAL: this API may change without prior notice.
- *
  * Start a DMA device.
  *
  * The device start step is the last one and consists of setting the DMA
@@ -393,13 +365,9 @@ int rte_dma_configure(int16_t dev_id, const struct rte_dma_conf *dev_conf);
  * @return
  *   0 on success. Otherwise negative value is returned.
  */
-__rte_experimental
 int rte_dma_start(int16_t dev_id);
 
 /**
- * @warning
- * @b EXPERIMENTAL: this API may change without prior notice.
- *
  * Stop a DMA device.
  *
  * The device can be restarted with a call to rte_dma_start().
@@ -410,13 +378,9 @@ int rte_dma_start(int16_t dev_id);
  * @return
  *   0 on success. Otherwise negative value is returned.
  */
-__rte_experimental
 int rte_dma_stop(int16_t dev_id);
 
 /**
- * @warning
- * @b EXPERIMENTAL: this API may change without prior notice.
- *
  * Close a DMA device.
  *
  * The device cannot be restarted after this call.
@@ -427,7 +391,6 @@ int rte_dma_stop(int16_t dev_id);
  * @return
  *   0 on success. Otherwise negative value is returned.
  */
-__rte_experimental
 int rte_dma_close(int16_t dev_id);
 
 /**
@@ -620,9 +583,6 @@ struct rte_dma_vchan_conf {
 };
 
 /**
- * @warning
- * @b EXPERIMENTAL: this API may change without prior notice.
- *
  * Allocate and set up a virtual DMA channel.
  *
  * @param dev_id
@@ -637,7 +597,6 @@ struct rte_dma_vchan_conf {
  * @return
  *   0 on success. Otherwise negative value is returned.
  */
-__rte_experimental
 int rte_dma_vchan_setup(int16_t dev_id, uint16_t vchan,
 			const struct rte_dma_vchan_conf *conf);
 
@@ -666,9 +625,6 @@ struct rte_dma_stats {
 #define RTE_DMA_ALL_VCHAN	0xFFFFu
 
 /**
- * @warning
- * @b EXPERIMENTAL: this API may change without prior notice.
- *
  * Retrieve basic statistics of a or all virtual DMA channel(s).
  *
  * @param dev_id
@@ -683,14 +639,10 @@ struct rte_dma_stats {
  * @return
  *   0 on success. Otherwise negative value is returned.
  */
-__rte_experimental
 int rte_dma_stats_get(int16_t dev_id, uint16_t vchan,
 		      struct rte_dma_stats *stats);
 
 /**
- * @warning
- * @b EXPERIMENTAL: this API may change without prior notice.
- *
  * Reset basic statistics of a or all virtual DMA channel(s).
  *
  * @param dev_id
@@ -702,7 +654,6 @@ int rte_dma_stats_get(int16_t dev_id, uint16_t vchan,
  * @return
  *   0 on success. Otherwise negative value is returned.
  */
-__rte_experimental
 int rte_dma_stats_reset(int16_t dev_id, uint16_t vchan);
 
 /**
@@ -718,9 +669,6 @@ enum rte_dma_vchan_status {
 };
 
 /**
- * @warning
- * @b EXPERIMENTAL: this API may change without prior notice.
- *
  * Determine if all jobs have completed on a device channel.
  * This function is primarily designed for testing use, as it allows a process to check if
  * all jobs are completed, without actually gathering completions from those jobs.
@@ -735,14 +683,10 @@ enum rte_dma_vchan_status {
  *   0 - call completed successfully
  *   < 0 - error code indicating there was a problem calling the API
  */
-__rte_experimental
 int
 rte_dma_vchan_status(int16_t dev_id, uint16_t vchan, enum rte_dma_vchan_status *status);
 
 /**
- * @warning
- * @b EXPERIMENTAL: this API may change without prior notice.
- *
  * Dump DMA device info.
  *
  * @param dev_id
@@ -753,7 +697,6 @@ rte_dma_vchan_status(int16_t dev_id, uint16_t vchan, enum rte_dma_vchan_status *
  * @return
  *   0 on success. Otherwise negative value is returned.
  */
-__rte_experimental
 int rte_dma_dump(int16_t dev_id, FILE *f);
 
 /**
@@ -864,9 +807,6 @@ struct rte_dma_sge {
 /**@}*/
 
 /**
- * @warning
- * @b EXPERIMENTAL: this API may change without prior notice.
- *
  * Enqueue a copy operation onto the virtual DMA channel.
  *
  * This queues up a copy operation to be performed by hardware, if the 'flags'
@@ -892,7 +832,6 @@ struct rte_dma_sge {
  *   - -ENOSPC: if no space left to enqueue.
  *   - other values < 0 on failure.
  */
-__rte_experimental
 static inline int
 rte_dma_copy(int16_t dev_id, uint16_t vchan, rte_iova_t src, rte_iova_t dst,
 	     uint32_t length, uint64_t flags)
@@ -910,9 +849,6 @@ rte_dma_copy(int16_t dev_id, uint16_t vchan, rte_iova_t src, rte_iova_t dst,
 }
 
 /**
- * @warning
- * @b EXPERIMENTAL: this API may change without prior notice.
- *
  * Enqueue a scatter-gather list copy operation onto the virtual DMA channel.
  *
  * This queues up a scatter-gather list copy operation to be performed by
@@ -942,7 +878,6 @@ rte_dma_copy(int16_t dev_id, uint16_t vchan, rte_iova_t src, rte_iova_t dst,
  *   - -ENOSPC: if no space left to enqueue.
  *   - other values < 0 on failure.
  */
-__rte_experimental
 static inline int
 rte_dma_copy_sg(int16_t dev_id, uint16_t vchan, struct rte_dma_sge *src,
 		struct rte_dma_sge *dst, uint16_t nb_src, uint16_t nb_dst,
@@ -963,9 +898,6 @@ rte_dma_copy_sg(int16_t dev_id, uint16_t vchan, struct rte_dma_sge *src,
 }
 
 /**
- * @warning
- * @b EXPERIMENTAL: this API may change without prior notice.
- *
  * Enqueue a fill operation onto the virtual DMA channel.
  *
  * This queues up a fill operation to be performed by hardware, if the 'flags'
@@ -991,7 +923,6 @@ rte_dma_copy_sg(int16_t dev_id, uint16_t vchan, struct rte_dma_sge *src,
  *   - -ENOSPC: if no space left to enqueue.
  *   - other values < 0 on failure.
  */
-__rte_experimental
 static inline int
 rte_dma_fill(int16_t dev_id, uint16_t vchan, uint64_t pattern,
 	     rte_iova_t dst, uint32_t length, uint64_t flags)
@@ -1010,9 +941,6 @@ rte_dma_fill(int16_t dev_id, uint16_t vchan, uint64_t pattern,
 }
 
 /**
- * @warning
- * @b EXPERIMENTAL: this API may change without prior notice.
- *
  * Trigger hardware to begin performing enqueued operations.
  *
  * Writes the "doorbell" to the hardware to trigger it
@@ -1026,7 +954,6 @@ rte_dma_fill(int16_t dev_id, uint16_t vchan, uint64_t pattern,
  * @return
  *   0 on success. Otherwise negative value is returned.
  */
-__rte_experimental
 static inline int
 rte_dma_submit(int16_t dev_id, uint16_t vchan)
 {
@@ -1043,9 +970,6 @@ rte_dma_submit(int16_t dev_id, uint16_t vchan)
 }
 
 /**
- * @warning
- * @b EXPERIMENTAL: this API may change without prior notice.
- *
  * Return the number of operations that have been successfully completed.
  * Once an operation has been reported as completed, the results of that
  * operation will be visible to all cores on the system.
@@ -1067,7 +991,6 @@ rte_dma_submit(int16_t dev_id, uint16_t vchan)
  *   The number of operations that successfully completed. This return value
  *   must be less than or equal to the value of nb_cpls.
  */
-__rte_experimental
 static inline uint16_t
 rte_dma_completed(int16_t dev_id, uint16_t vchan, const uint16_t nb_cpls,
 		  uint16_t *last_idx, bool *has_error)
@@ -1102,9 +1025,6 @@ rte_dma_completed(int16_t dev_id, uint16_t vchan, const uint16_t nb_cpls,
 }
 
 /**
- * @warning
- * @b EXPERIMENTAL: this API may change without prior notice.
- *
  * Return the number of operations that have been completed, and the operations
  * result may succeed or fail.
  * Once an operation has been reported as completed successfully, the results of that
@@ -1130,7 +1050,6 @@ rte_dma_completed(int16_t dev_id, uint16_t vchan, const uint16_t nb_cpls,
  *   If this number is greater than zero (assuming n), then n values in the
  *   status array are also set.
  */
-__rte_experimental
 static inline uint16_t
 rte_dma_completed_status(int16_t dev_id, uint16_t vchan,
 			 const uint16_t nb_cpls, uint16_t *last_idx,
@@ -1154,9 +1073,6 @@ rte_dma_completed_status(int16_t dev_id, uint16_t vchan,
 }
 
 /**
- * @warning
- * @b EXPERIMENTAL: this API may change without prior notice.
- *
  * Check remaining capacity in descriptor ring for the current burst.
  *
  * @param dev_id
@@ -1168,7 +1084,6 @@ rte_dma_completed_status(int16_t dev_id, uint16_t vchan,
  *   - Remaining space in the descriptor ring for the current burst.
  *   - 0 on error
  */
-__rte_experimental
 static inline uint16_t
 rte_dma_burst_capacity(int16_t dev_id, uint16_t vchan)
 {
diff --git a/lib/dmadev/version.map b/lib/dmadev/version.map
index 7031d6b335e9..2a3736514c8f 100644
--- a/lib/dmadev/version.map
+++ b/lib/dmadev/version.map
@@ -1,4 +1,4 @@
-EXPERIMENTAL {
+DPDK_24 {
 	global:
 
 	rte_dma_close;
-- 
2.39.2


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

* [PATCH v3 15/29] meter: remove experimental warning from comments
  2023-10-19 16:55 ` [PATCH v3 00/29] Promote experimental " Stephen Hemminger
                     ` (13 preceding siblings ...)
  2023-10-19 16:55   ` [PATCH v3 14/29] dmadev: mark API's as not experimental Stephen Hemminger
@ 2023-10-19 16:55   ` Stephen Hemminger
  2023-10-19 16:55   ` [PATCH v3 16/29] power: remove experimental from API's Stephen Hemminger
                     ` (13 subsequent siblings)
  28 siblings, 0 replies; 219+ messages in thread
From: Stephen Hemminger @ 2023-10-19 16:55 UTC (permalink / raw)
  To: dev; +Cc: Stephen Hemminger, Bruce Richardson, Cristian Dumitrescu

The API's for rte_meter_trtcm were never properly flagged
as experimental; missing __rte_experimental but there was
an experimental comment in the docbook comment.
Remove the comment.

Signed-off-by: Stephen Hemminger <stephen@networkplumber.org>
Acked-by: Bruce Richardson <bruce.richardson@intel.com>
---
 lib/meter/rte_meter.h | 12 ------------
 1 file changed, 12 deletions(-)

diff --git a/lib/meter/rte_meter.h b/lib/meter/rte_meter.h
index 6ba99674361a..bd68cbe38903 100644
--- a/lib/meter/rte_meter.h
+++ b/lib/meter/rte_meter.h
@@ -124,9 +124,6 @@ int
 rte_meter_trtcm_profile_config(struct rte_meter_trtcm_profile *p,
 	struct rte_meter_trtcm_params *params);
 /**
- * @warning
- * @b EXPERIMENTAL: this API may change without prior notice
- *
  * trTCM RFC 4115 profile configuration
  *
  * @param p
@@ -170,9 +167,6 @@ rte_meter_trtcm_config(struct rte_meter_trtcm *m,
 	struct rte_meter_trtcm_profile *p);
 
 /**
- * @warning
- * @b EXPERIMENTAL: this API may change without prior notice
- *
  * trTCM RFC 4115 configuration per metered traffic flow
  *
  * @param m
@@ -273,9 +267,6 @@ rte_meter_trtcm_color_aware_check(struct rte_meter_trtcm *m,
 	enum rte_color pkt_color);
 
 /**
- * @warning
- * @b EXPERIMENTAL: this API may change without prior notice
- *
  * trTCM RFC4115 color blind traffic metering
  *
  * @param m
@@ -297,9 +288,6 @@ rte_meter_trtcm_rfc4115_color_blind_check(
 	uint32_t pkt_len);
 
 /**
- * @warning
- * @b EXPERIMENTAL: this API may change without prior notice
- *
  * trTCM RFC4115 color aware traffic metering
  *
  * @param m
-- 
2.39.2


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

* [PATCH v3 16/29] power: remove experimental from API's
  2023-10-19 16:55 ` [PATCH v3 00/29] Promote experimental " Stephen Hemminger
                     ` (14 preceding siblings ...)
  2023-10-19 16:55   ` [PATCH v3 15/29] meter: remove experimental warning from comments Stephen Hemminger
@ 2023-10-19 16:55   ` Stephen Hemminger
  2023-10-19 16:55   ` [PATCH v3 17/29] kvargs: remove experimental flag Stephen Hemminger
                     ` (12 subsequent siblings)
  28 siblings, 0 replies; 219+ messages in thread
From: Stephen Hemminger @ 2023-10-19 16:55 UTC (permalink / raw)
  To: dev; +Cc: Stephen Hemminger, Anatoly Burakov, David Hunt

The power management API's were last changed in 22.11 release.
Therefore remove experimental for 23.11 release.

Signed-off-by: Stephen Hemminger <stephen@networkplumber.org>
---
 lib/power/rte_power.h               |  4 ---
 lib/power/rte_power_guest_channel.h |  4 ---
 lib/power/rte_power_pmd_mgmt.h      | 40 -----------------------------
 lib/power/rte_power_uncore.h        |  5 ----
 lib/power/version.map               | 38 ++++++++-------------------
 5 files changed, 11 insertions(+), 80 deletions(-)

diff --git a/lib/power/rte_power.h b/lib/power/rte_power.h
index e79bf1c4dd0c..4b624a01c5d7 100644
--- a/lib/power/rte_power.h
+++ b/lib/power/rte_power.h
@@ -25,9 +25,6 @@ enum power_management_env {PM_ENV_NOT_SET, PM_ENV_ACPI_CPUFREQ, PM_ENV_KVM_VM,
 		PM_ENV_AMD_PSTATE_CPUFREQ};
 
 /**
- * @warning
- * @b EXPERIMENTAL: this API may change, or be removed, without prior notice
- *
  * Check if a specific power management environment type is supported on a
  * currently running system.
  *
@@ -39,7 +36,6 @@ enum power_management_env {PM_ENV_NOT_SET, PM_ENV_ACPI_CPUFREQ, PM_ENV_KVM_VM,
  *   - 0 if unsupported
  *   - -1 if error, with rte_errno indicating reason for error.
  */
-__rte_experimental
 int rte_power_check_env_supported(enum power_management_env env);
 
 /**
diff --git a/lib/power/rte_power_guest_channel.h b/lib/power/rte_power_guest_channel.h
index b5de1bd24318..55b76dfc4c08 100644
--- a/lib/power/rte_power_guest_channel.h
+++ b/lib/power/rte_power_guest_channel.h
@@ -135,9 +135,6 @@ int rte_power_guest_channel_send_msg(struct rte_power_channel_packet *pkt,
 			unsigned int lcore_id);
 
 /**
- * @warning
- * @b EXPERIMENTAL: this API may change without prior notice.
- *
  * Receive a message contained in pkt over the Virtio-Serial
  * from the host endpoint.
  *
@@ -155,7 +152,6 @@ int rte_power_guest_channel_send_msg(struct rte_power_channel_packet *pkt,
  *  - 0 on success.
  *  - Negative on error.
  */
-__rte_experimental
 int rte_power_guest_channel_receive_msg(void *pkt,
 		size_t pkt_len,
 		unsigned int lcore_id);
diff --git a/lib/power/rte_power_pmd_mgmt.h b/lib/power/rte_power_pmd_mgmt.h
index 0f1a2eb22eb4..456145661917 100644
--- a/lib/power/rte_power_pmd_mgmt.h
+++ b/lib/power/rte_power_pmd_mgmt.h
@@ -33,9 +33,6 @@ enum rte_power_pmd_mgmt_type {
 };
 
 /**
- * @warning
- * @b EXPERIMENTAL: this API may change, or be removed, without prior notice.
- *
  * Enable power management on a specified Ethernet device Rx queue and lcore.
  *
  * @note This function is not thread-safe.
@@ -55,16 +52,12 @@ enum rte_power_pmd_mgmt_type {
  *   0 on success
  *   <0 on error
  */
-__rte_experimental
 int
 rte_power_ethdev_pmgmt_queue_enable(unsigned int lcore_id,
 		uint16_t port_id, uint16_t queue_id,
 		enum rte_power_pmd_mgmt_type mode);
 
 /**
- * @warning
- * @b EXPERIMENTAL: this API may change, or be removed, without prior notice.
- *
  * Disable power management on a specified Ethernet device Rx queue and lcore.
  *
  * @note This function is not thread-safe.
@@ -82,42 +75,30 @@ rte_power_ethdev_pmgmt_queue_enable(unsigned int lcore_id,
  *   0 on success
  *   <0 on error
  */
-__rte_experimental
 int
 rte_power_ethdev_pmgmt_queue_disable(unsigned int lcore_id,
 		uint16_t port_id, uint16_t queue_id);
 
 /**
- * @warning
- * @b EXPERIMENTAL: this API may change, or be removed, without prior notice.
- *
  * Set a emptypoll_max to specified value. Used to specify the number of empty
  * polls to wait before entering sleep state.
  *
  * @param max
  *   The value to set emptypoll_max to.
  */
-__rte_experimental
 void
 rte_power_pmd_mgmt_set_emptypoll_max(unsigned int max);
 
 /**
- * @warning
- * @b EXPERIMENTAL: this API may change, or be removed, without prior notice.
- *
  * Get the current value of emptypoll_max.
  *
  * @return
  *   The current emptypoll_max value
  */
-__rte_experimental
 unsigned int
 rte_power_pmd_mgmt_get_emptypoll_max(void);
 
 /**
- * @warning
- * @b EXPERIMENTAL: this API may change, or be removed, without prior notice.
- *
  * Set the pause_duration. Used to adjust the pause mode callback duration.
  *
  * @note Duration must be greater than zero.
@@ -128,27 +109,19 @@ rte_power_pmd_mgmt_get_emptypoll_max(void);
  *   0 on success
  *   <0 on error
  */
-__rte_experimental
 int
 rte_power_pmd_mgmt_set_pause_duration(unsigned int duration);
 
 /**
- * @warning
- * @b EXPERIMENTAL: this API may change, or be removed, without prior notice.
- *
  * Get the current value of pause_duration.
  *
  * @return
  *   The current pause_duration value.
  */
-__rte_experimental
 unsigned int
 rte_power_pmd_mgmt_get_pause_duration(void);
 
 /**
- * @warning
- * @b EXPERIMENTAL: this API may change, or be removed, without prior notice.
- *
  * Set the min frequency to be used for frequency scaling or zero to use defaults.
  *
  * @note Supported by: Pstate mode.
@@ -161,14 +134,10 @@ rte_power_pmd_mgmt_get_pause_duration(void);
  *   0 on success
  *   <0 on error
  */
-__rte_experimental
 int
 rte_power_pmd_mgmt_set_scaling_freq_min(unsigned int lcore, unsigned int min);
 
 /**
- * @warning
- * @b EXPERIMENTAL: this API may change, or be removed, without prior notice.
- *
  * Set the max frequency to be used for frequency scaling or zero to use defaults.
  *
  * @note Supported by: Pstate mode.
@@ -182,14 +151,10 @@ rte_power_pmd_mgmt_set_scaling_freq_min(unsigned int lcore, unsigned int min);
  *   0 on success
  *   <0 on error
  */
-__rte_experimental
 int
 rte_power_pmd_mgmt_set_scaling_freq_max(unsigned int lcore, unsigned int max);
 
 /**
- * @warning
- * @b EXPERIMENTAL: this API may change, or be removed, without prior notice.
- *
  * Get the current configured min frequency used for frequency scaling.
  *
  * @note Supported by: Pstate mode.
@@ -202,14 +167,10 @@ rte_power_pmd_mgmt_set_scaling_freq_max(unsigned int lcore, unsigned int max);
  *   , in KiloHertz, used for frequency scaling.
  *   <0 on error
  */
-__rte_experimental
 int
 rte_power_pmd_mgmt_get_scaling_freq_min(unsigned int lcore);
 
 /**
- * @warning
- * @b EXPERIMENTAL: this API may change, or be removed, without prior notice.
- *
  * Get the current configured max frequency used for frequency scaling.
  *
  * @note Supported by: Pstate mode.
@@ -222,7 +183,6 @@ rte_power_pmd_mgmt_get_scaling_freq_min(unsigned int lcore);
  *   , in KiloHertz, used for frequency scaling.
  *   <0 on error
  */
-__rte_experimental
 int
 rte_power_pmd_mgmt_get_scaling_freq_max(unsigned int lcore);
 
diff --git a/lib/power/rte_power_uncore.h b/lib/power/rte_power_uncore.h
index 295017b7f429..45d5235302c2 100644
--- a/lib/power/rte_power_uncore.h
+++ b/lib/power/rte_power_uncore.h
@@ -38,14 +38,12 @@ enum rte_uncore_power_mgmt_env {
  *  - 0 on success.
  *  - Negative on error.
  */
-__rte_experimental
 int rte_power_set_uncore_env(enum rte_uncore_power_mgmt_env env);
 
 /**
  * Unset the global uncore environment configuration.
  * This can only be called after all threads have completed.
  */
-__rte_experimental
 void rte_power_unset_uncore_env(void);
 
 /**
@@ -54,7 +52,6 @@ void rte_power_unset_uncore_env(void);
  * @return
  *  power_management_env The configured environment.
  */
-__rte_experimental
 enum rte_uncore_power_mgmt_env rte_power_get_uncore_env(void);
 
 /**
@@ -74,7 +71,6 @@ enum rte_uncore_power_mgmt_env rte_power_get_uncore_env(void);
  *  - 0 on success.
  *  - Negative on error.
  */
-__rte_experimental
 int
 rte_power_uncore_init(unsigned int pkg, unsigned int die);
 
@@ -96,7 +92,6 @@ rte_power_uncore_init(unsigned int pkg, unsigned int die);
  *  - 0 on success.
  *  - Negative on error.
  */
-__rte_experimental
 int
 rte_power_uncore_exit(unsigned int pkg, unsigned int die);
 
diff --git a/lib/power/version.map b/lib/power/version.map
index 53627b59f189..8dd154bb0609 100644
--- a/lib/power/version.map
+++ b/lib/power/version.map
@@ -1,6 +1,9 @@
 DPDK_24 {
 	global:
 
+	rte_power_check_env_supported;
+	rte_power_ethdev_pmgmt_queue_disable;
+	rte_power_ethdev_pmgmt_queue_enable;
 	rte_power_exit;
 	rte_power_freq_disable_turbo;
 	rte_power_freq_down;
@@ -12,27 +15,11 @@ DPDK_24 {
 	rte_power_get_capabilities;
 	rte_power_get_env;
 	rte_power_get_freq;
+	rte_power_get_uncore_env;
+	rte_power_get_uncore_freq;
+	rte_power_guest_channel_receive_msg;
 	rte_power_guest_channel_send_msg;
 	rte_power_init;
-	rte_power_set_env;
-	rte_power_set_freq;
-	rte_power_turbo_status;
-	rte_power_unset_env;
-
-	local: *;
-};
-
-EXPERIMENTAL {
-	global:
-
-	rte_power_check_env_supported;
-	rte_power_guest_channel_receive_msg;
-
-	# added in 21.02
-	rte_power_ethdev_pmgmt_queue_disable;
-	rte_power_ethdev_pmgmt_queue_enable;
-
-	# added in 22.07
 	rte_power_pmd_mgmt_get_emptypoll_max;
 	rte_power_pmd_mgmt_get_pause_duration;
 	rte_power_pmd_mgmt_get_scaling_freq_max;
@@ -41,21 +28,18 @@ EXPERIMENTAL {
 	rte_power_pmd_mgmt_set_pause_duration;
 	rte_power_pmd_mgmt_set_scaling_freq_max;
 	rte_power_pmd_mgmt_set_scaling_freq_min;
-
-	# added in 22.11
-	rte_power_get_uncore_freq;
+	rte_power_set_env;
+	rte_power_set_freq;
+	rte_power_set_uncore_env;
 	rte_power_set_uncore_freq;
+	rte_power_turbo_status;
 	rte_power_uncore_exit;
 	rte_power_uncore_freq_max;
 	rte_power_uncore_freq_min;
+	rte_power_uncore_freqs;
 	rte_power_uncore_get_num_dies;
 	rte_power_uncore_get_num_freqs;
 	rte_power_uncore_get_num_pkgs;
 	rte_power_uncore_init;
-
-	# added in 23.11
-	rte_power_get_uncore_env;
-	rte_power_set_uncore_env;
-	rte_power_uncore_freqs;
 	rte_power_unset_uncore_env;
 };
-- 
2.39.2


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

* [PATCH v3 17/29] kvargs: remove experimental flag
  2023-10-19 16:55 ` [PATCH v3 00/29] Promote experimental " Stephen Hemminger
                     ` (15 preceding siblings ...)
  2023-10-19 16:55   ` [PATCH v3 16/29] power: remove experimental from API's Stephen Hemminger
@ 2023-10-19 16:55   ` Stephen Hemminger
  2023-10-19 16:55   ` [PATCH v3 18/29] ip_frag: mark a couple of functions stable Stephen Hemminger
                     ` (11 subsequent siblings)
  28 siblings, 0 replies; 219+ messages in thread
From: Stephen Hemminger @ 2023-10-19 16:55 UTC (permalink / raw)
  To: dev; +Cc: Stephen Hemminger, Bruce Richardson

The function rte_kvargs_get_with_value was added in 21.11
so experimental flag can be removed.

Signed-off-by: Stephen Hemminger <stephen@networkplumber.org>
Acked-by: Bruce Richardson <bruce.richardson@intel.com>
---
 lib/kvargs/rte_kvargs.h | 4 ----
 lib/kvargs/version.map  | 8 +-------
 2 files changed, 1 insertion(+), 11 deletions(-)

diff --git a/lib/kvargs/rte_kvargs.h b/lib/kvargs/rte_kvargs.h
index 4900b750bc0b..36804cfb1543 100644
--- a/lib/kvargs/rte_kvargs.h
+++ b/lib/kvargs/rte_kvargs.h
@@ -145,9 +145,6 @@ void rte_kvargs_free(struct rte_kvargs *kvlist);
 const char *rte_kvargs_get(const struct rte_kvargs *kvlist, const char *key);
 
 /**
- * @warning
- * @b EXPERIMENTAL: this API may change without prior notice
- *
  * Get the value associated with a given key and value.
  *
  * Find the first entry in the kvlist whose key and value match the
@@ -167,7 +164,6 @@ const char *rte_kvargs_get(const struct rte_kvargs *kvlist, const char *key);
  *   NULL if no key matches the input,
  *   a value associated with a matching key otherwise.
  */
-__rte_experimental
 const char *rte_kvargs_get_with_value(const struct rte_kvargs *kvlist,
 				      const char *key, const char *value);
 
diff --git a/lib/kvargs/version.map b/lib/kvargs/version.map
index 387a94e725cf..cda85d171f32 100644
--- a/lib/kvargs/version.map
+++ b/lib/kvargs/version.map
@@ -4,16 +4,10 @@ DPDK_24 {
 	rte_kvargs_count;
 	rte_kvargs_free;
 	rte_kvargs_get;
+	rte_kvargs_get_with_value;
 	rte_kvargs_parse;
 	rte_kvargs_parse_delim;
 	rte_kvargs_process;
 
 	local: *;
 };
-
-EXPERIMENTAL {
-	global:
-
-	# added in 21.11
-	rte_kvargs_get_with_value;
-};
-- 
2.39.2


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

* [PATCH v3 18/29] ip_frag: mark a couple of functions stable
  2023-10-19 16:55 ` [PATCH v3 00/29] Promote experimental " Stephen Hemminger
                     ` (16 preceding siblings ...)
  2023-10-19 16:55   ` [PATCH v3 17/29] kvargs: remove experimental flag Stephen Hemminger
@ 2023-10-19 16:55   ` Stephen Hemminger
  2023-10-19 16:55   ` [PATCH v3 19/29] member: remove experimental tag Stephen Hemminger
                     ` (10 subsequent siblings)
  28 siblings, 0 replies; 219+ messages in thread
From: Stephen Hemminger @ 2023-10-19 16:55 UTC (permalink / raw)
  To: dev; +Cc: Stephen Hemminger, Konstantin Ananyev

There were two functions added in 22.11 which were
marked as experimental. Remove the experimental tag.

Signed-off-by: Stephen Hemminger <stephen@networkplumber.org>
Acked-by: Konstantin Ananyev <konstantin.v.ananyev@yandex.ru>
---
 lib/ip_frag/rte_ip_frag.h | 2 --
 lib/ip_frag/version.map   | 9 ++-------
 2 files changed, 2 insertions(+), 9 deletions(-)

diff --git a/lib/ip_frag/rte_ip_frag.h b/lib/ip_frag/rte_ip_frag.h
index feab72ae64b9..cd3a3e143ee7 100644
--- a/lib/ip_frag/rte_ip_frag.h
+++ b/lib/ip_frag/rte_ip_frag.h
@@ -205,7 +205,6 @@ int32_t rte_ipv4_fragment_packet(struct rte_mbuf *pkt_in,
  *   in the pkts_out array.
  *   Otherwise - (-1) * errno.
  */
-__rte_experimental
 int32_t
 rte_ipv4_fragment_copy_nonseg_packet(struct rte_mbuf *pkt_in,
 	struct rte_mbuf **pkts_out,
@@ -289,7 +288,6 @@ rte_ip_frag_table_statistics_dump(FILE * f, const struct rte_ip_frag_tbl *tbl);
  * @param tms
  *   Current timestamp
  */
-__rte_experimental
 void
 rte_ip_frag_table_del_expired_entries(struct rte_ip_frag_tbl *tbl,
 	struct rte_ip_frag_death_row *dr, uint64_t tms);
diff --git a/lib/ip_frag/version.map b/lib/ip_frag/version.map
index 7ba446c9938b..3e7e573dc412 100644
--- a/lib/ip_frag/version.map
+++ b/lib/ip_frag/version.map
@@ -3,19 +3,14 @@ DPDK_24 {
 
 	rte_ip_frag_free_death_row;
 	rte_ip_frag_table_create;
+	rte_ip_frag_table_del_expired_entries;
 	rte_ip_frag_table_destroy;
 	rte_ip_frag_table_statistics_dump;
 	rte_ipv4_frag_reassemble_packet;
+	rte_ipv4_fragment_copy_nonseg_packet;
 	rte_ipv4_fragment_packet;
 	rte_ipv6_frag_reassemble_packet;
 	rte_ipv6_fragment_packet;
 
 	local: *;
 };
-
-EXPERIMENTAL {
-	global:
-
-	rte_ip_frag_table_del_expired_entries;
-	rte_ipv4_fragment_copy_nonseg_packet;
-};
-- 
2.39.2


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

* [PATCH v3 19/29] member: remove experimental tag
  2023-10-19 16:55 ` [PATCH v3 00/29] Promote experimental " Stephen Hemminger
                     ` (17 preceding siblings ...)
  2023-10-19 16:55   ` [PATCH v3 18/29] ip_frag: mark a couple of functions stable Stephen Hemminger
@ 2023-10-19 16:55   ` Stephen Hemminger
  2023-10-19 16:55   ` [PATCH v3 20/29] power fix Stephen Hemminger
                     ` (9 subsequent siblings)
  28 siblings, 0 replies; 219+ messages in thread
From: Stephen Hemminger @ 2023-10-19 16:55 UTC (permalink / raw)
  To: dev; +Cc: Stephen Hemminger, Yipeng Wang, Sameh Gobriel

The member library last received new API's in 22.11.
All the API's should be marked stable by now.

Signed-off-by: Stephen Hemminger <stephen@networkplumber.org>
---
 lib/member/rte_member.h | 54 -----------------------------------------
 lib/member/version.map  | 12 +++------
 2 files changed, 3 insertions(+), 63 deletions(-)

diff --git a/lib/member/rte_member.h b/lib/member/rte_member.h
index a15e0d69e696..a6bf22651700 100644
--- a/lib/member/rte_member.h
+++ b/lib/member/rte_member.h
@@ -15,9 +15,6 @@
  * bloom filter (vBF). For HT setsummary, two subtypes or modes are available,
  * cache and non-cache modes. The table below summarize some properties of
  * the different implementations.
- *
- * @warning
- * @b EXPERIMENTAL: this API may change without prior notice
  */
 
 /**
@@ -117,17 +114,11 @@ extern int librte_member_logtype;
 struct rte_member_setsum;
 
 /**
- * @warning
- * @b EXPERIMENTAL: this API may change without prior notice
- *
  * Parameter struct used to create set summary
  */
 struct rte_member_parameters;
 
 /**
- * @warning
- * @b EXPERIMENTAL: this API may change without prior notice
- *
  * Define different set summary types
  */
 enum rte_member_setsum_type {
@@ -207,9 +198,6 @@ struct rte_member_setsum {
 } __rte_cache_aligned;
 
 /**
- * @warning
- * @b EXPERIMENTAL: this API may change without prior notice
- *
  * Parameters used when create the set summary table. Currently user can
  * specify two types of setsummary: HT based and vBF. For HT based, user can
  * specify cache or non-cache mode. Here is a table to describe some differences
@@ -351,9 +339,6 @@ struct rte_member_parameters {
 } __rte_cache_aligned;
 
 /**
- * @warning
- * @b EXPERIMENTAL: this API may change without prior notice
- *
  * Find an existing set-summary and return a pointer to it.
  *
  * @param name
@@ -367,9 +352,6 @@ struct rte_member_setsum *
 rte_member_find_existing(const char *name);
 
 /**
- * @warning
- * @b EXPERIMENTAL: this API may change without prior notice
- *
  * Create set-summary (SS).
  *
  * @param params
@@ -382,9 +364,6 @@ struct rte_member_setsum *
 rte_member_create(const struct rte_member_parameters *params);
 
 /**
- * @warning
- * @b EXPERIMENTAL: this API may change without prior notice
- *
  * Lookup key in set-summary (SS).
  * Single key lookup and return as soon as the first match found
  *
@@ -402,9 +381,6 @@ rte_member_lookup(const struct rte_member_setsum *setsum, const void *key,
 			member_set_t *set_id);
 
 /**
- * @warning
- * @b EXPERIMENTAL: this API may change without prior notice
- *
  * Lookup bulk of keys in set-summary (SS).
  * Each key lookup returns as soon as the first match found
  *
@@ -427,9 +403,6 @@ rte_member_lookup_bulk(const struct rte_member_setsum *setsum,
 			member_set_t *set_ids);
 
 /**
- * @warning
- * @b EXPERIMENTAL: this API may change without prior notice
- *
  * Lookup a key in set-summary (SS) for multiple matches.
  * The key lookup will find all matched entries (multiple match).
  * Note that for cache mode of HT, each key can have at most one match. This is
@@ -456,9 +429,6 @@ rte_member_lookup_multi(const struct rte_member_setsum *setsum,
 		member_set_t *set_id);
 
 /**
- * @warning
- * @b EXPERIMENTAL: this API may change without prior notice
- *
  * Lookup a bulk of keys in set-summary (SS) for multiple matches each key.
  * Each key lookup will find all matched entries (multiple match).
  * Note that for cache mode HT, each key can have at most one match. So
@@ -489,9 +459,6 @@ rte_member_lookup_multi_bulk(const struct rte_member_setsum *setsum,
 		member_set_t *set_ids);
 
 /**
- * @warning
- * @b EXPERIMENTAL: this API may change without prior notice
- *
  * Insert key into set-summary (SS).
  *
  * @param setsum
@@ -522,9 +489,6 @@ rte_member_add(const struct rte_member_setsum *setsum, const void *key,
 			member_set_t set_id);
 
 /**
- * @warning
- * @b EXPERIMENTAL: this API may change without prior notice
- *
  * Add the packet byte size into the sketch.
  *
  * @param setsum
@@ -536,15 +500,11 @@ rte_member_add(const struct rte_member_setsum *setsum, const void *key,
  * @return
  * Return -EINVAL for invalid parameters, otherwise return 0.
  */
-__rte_experimental
 int
 rte_member_add_byte_count(const struct rte_member_setsum *setsum,
 			  const void *key, uint32_t byte_count);
 
 /**
- * @warning
- * @b EXPERIMENTAL: this API may change without prior notice
- *
  * Query packet count for a certain flow-key.
  *
  * @param setsum
@@ -556,16 +516,12 @@ rte_member_add_byte_count(const struct rte_member_setsum *setsum,
  * @return
  *   Return -EINVAL for invalid parameters.
  */
-__rte_experimental
 int
 rte_member_query_count(const struct rte_member_setsum *setsum,
 		       const void *key, uint64_t *count);
 
 
 /**
- * @warning
- * @b EXPERIMENTAL: this API may change without prior notice
- *
  * Report heavyhitter flow-keys into set-summary (SS).
  *
  * @param setsum
@@ -578,16 +534,12 @@ rte_member_query_count(const struct rte_member_setsum *setsum,
  *   Return -EINVAL for invalid parameters. Return a positive integer indicate
  *   how many heavy hitters are reported.
  */
-__rte_experimental
 int
 rte_member_report_heavyhitter(const struct rte_member_setsum *setsum,
 			      void **keys, uint64_t *counts);
 
 
 /**
- * @warning
- * @b EXPERIMENTAL: this API may change without prior notice
- *
  * De-allocate memory used by set-summary.
  *
  * @param setsum
@@ -598,9 +550,6 @@ void
 rte_member_free(struct rte_member_setsum *setsum);
 
 /**
- * @warning
- * @b EXPERIMENTAL: this API may change without prior notice
- *
  * Reset the set-summary tables. E.g. reset bits to be 0 in BF,
  * reset set_id in each entry to be RTE_MEMBER_NO_MATCH in HT based SS.
  *
@@ -611,9 +560,6 @@ void
 rte_member_reset(const struct rte_member_setsum *setsum);
 
 /**
- * @warning
- * @b EXPERIMENTAL: this API may change without prior notice
- *
  * Delete items from the set-summary. Note that vBF does not support deletion
  * in current implementation. For vBF, error code of -EINVAL will be returned.
  *
diff --git a/lib/member/version.map b/lib/member/version.map
index 9be5068d68fb..3aeba8826ba1 100644
--- a/lib/member/version.map
+++ b/lib/member/version.map
@@ -2,6 +2,7 @@ DPDK_24 {
 	global:
 
 	rte_member_add;
+	rte_member_add_byte_count;
 	rte_member_create;
 	rte_member_delete;
 	rte_member_find_existing;
@@ -10,16 +11,9 @@ DPDK_24 {
 	rte_member_lookup_bulk;
 	rte_member_lookup_multi;
 	rte_member_lookup_multi_bulk;
+	rte_member_query_count;
+	rte_member_report_heavyhitter;
 	rte_member_reset;
 
 	local: *;
 };
-
-EXPERIMENTAL {
-	global:
-
-	# added in 22.11
-	rte_member_add_byte_count;
-	rte_member_query_count;
-	rte_member_report_heavyhitter;
-};
-- 
2.39.2


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

* [PATCH v3 20/29] power fix
  2023-10-19 16:55 ` [PATCH v3 00/29] Promote experimental " Stephen Hemminger
                     ` (18 preceding siblings ...)
  2023-10-19 16:55   ` [PATCH v3 19/29] member: remove experimental tag Stephen Hemminger
@ 2023-10-19 16:55   ` Stephen Hemminger
  2023-10-19 16:55   ` [PATCH v3 21/29] security: remove experimental flag from macsec Stephen Hemminger
                     ` (8 subsequent siblings)
  28 siblings, 0 replies; 219+ messages in thread
From: Stephen Hemminger @ 2023-10-19 16:55 UTC (permalink / raw)
  To: dev; +Cc: Stephen Hemminger, Anatoly Burakov, David Hunt

---
 lib/power/version.map | 2 ++
 1 file changed, 2 insertions(+)

diff --git a/lib/power/version.map b/lib/power/version.map
index 8dd154bb0609..177ef3e2dd54 100644
--- a/lib/power/version.map
+++ b/lib/power/version.map
@@ -42,4 +42,6 @@ DPDK_24 {
 	rte_power_uncore_get_num_pkgs;
 	rte_power_uncore_init;
 	rte_power_unset_uncore_env;
+
+	local: *;
 };
-- 
2.39.2


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

* [PATCH v3 21/29] security: remove experimental flag from macsec
  2023-10-19 16:55 ` [PATCH v3 00/29] Promote experimental " Stephen Hemminger
                     ` (19 preceding siblings ...)
  2023-10-19 16:55   ` [PATCH v3 20/29] power fix Stephen Hemminger
@ 2023-10-19 16:55   ` 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
                     ` (7 subsequent siblings)
  28 siblings, 1 reply; 219+ messages in thread
From: Stephen Hemminger @ 2023-10-19 16:55 UTC (permalink / raw)
  To: dev; +Cc: Stephen Hemminger, Akhil Goyal

The rte_security API's for macsec were added in 22.11.
Therefore remove the experimental tag.

There is also one helper function for setting packet
metadata that should have been marked internal.

Signed-off-by: Stephen Hemminger <stephen@networkplumber.org>
---
 lib/security/rte_security.h | 28 +---------------------------
 lib/security/version.map    | 18 +++++++++---------
 2 files changed, 10 insertions(+), 36 deletions(-)

diff --git a/lib/security/rte_security.h b/lib/security/rte_security.h
index d2d2af23d5d2..ca78627ec7d2 100644
--- a/lib/security/rte_security.h
+++ b/lib/security/rte_security.h
@@ -815,7 +815,6 @@ rte_security_session_create(void *instance,
  *  - On success returns 0
  *  - On failure returns a negative errno value.
  */
-__rte_experimental
 int
 rte_security_session_update(void *instance,
 			    void *sess,
@@ -851,9 +850,6 @@ int
 rte_security_session_destroy(void *instance, void *sess);
 
 /**
- * @warning
- * @b EXPERIMENTAL: this API may change without prior notice
- *
  * Create MACsec security channel (SC).
  *
  * @param   instance	security instance
@@ -865,15 +861,11 @@ rte_security_session_destroy(void *instance, void *sess);
  *  - -ENOMEM if PMD is not capable to create more SC.
  *  - other negative value for other errors.
  */
-__rte_experimental
 int
 rte_security_macsec_sc_create(void *instance,
 			      struct rte_security_macsec_sc *conf);
 
 /**
- * @warning
- * @b EXPERIMENTAL: this API may change without prior notice
- *
  * Destroy MACsec security channel (SC).
  *
  * @param   instance	security instance
@@ -884,15 +876,11 @@ rte_security_macsec_sc_create(void *instance,
  *  - -EINVAL if sc_id is invalid or instance is NULL.
  *  - -EBUSY if sc is being used by some session.
  */
-__rte_experimental
 int
 rte_security_macsec_sc_destroy(void *instance, uint16_t sc_id,
 			       enum rte_security_macsec_direction dir);
 
 /**
- * @warning
- * @b EXPERIMENTAL: this API may change without prior notice
- *
  * Create MACsec security association (SA).
  *
  * @param   instance	security instance
@@ -904,15 +892,11 @@ rte_security_macsec_sc_destroy(void *instance, uint16_t sc_id,
  *  - -ENOMEM if PMD is not capable to create more SAs.
  *  - other negative value for other errors.
  */
-__rte_experimental
 int
 rte_security_macsec_sa_create(void *instance,
 			      struct rte_security_macsec_sa *conf);
 
 /**
- * @warning
- * @b EXPERIMENTAL: this API may change without prior notice
- *
  * Destroy MACsec security association (SA).
  *
  * @param   instance	security instance
@@ -923,7 +907,6 @@ rte_security_macsec_sa_create(void *instance,
  *  - -EINVAL if sa_id is invalid or instance is NULL.
  *  - -EBUSY if sa is being used by some session.
  */
-__rte_experimental
 int
 rte_security_macsec_sa_destroy(void *instance, uint16_t sa_id,
 			       enum rte_security_macsec_direction dir);
@@ -1059,7 +1042,7 @@ rte_security_session_fast_mdata_set(void *sess, uint64_t fdata)
 }
 
 /** Function to call PMD specific function pointer set_pkt_metadata() */
-__rte_experimental
+__rte_internal
 int __rte_security_set_pkt_metadata(void *instance,
 				    void *sess,
 				    struct rte_mbuf *m, void *params);
@@ -1230,16 +1213,12 @@ struct rte_security_stats {
  *  - On success, return 0
  *  - On failure, a negative value
  */
-__rte_experimental
 int
 rte_security_session_stats_get(void *instance,
 			       void *sess,
 			       struct rte_security_stats *stats);
 
 /**
- * @warning
- * @b EXPERIMENTAL: this API may change without prior notice
- *
  * Get MACsec SA statistics.
  *
  * @param	instance	security instance
@@ -1250,16 +1229,12 @@ rte_security_session_stats_get(void *instance,
  *  - On success, return 0.
  *  - On failure, a negative value.
  */
-__rte_experimental
 int
 rte_security_macsec_sa_stats_get(void *instance,
 				 uint16_t sa_id, enum rte_security_macsec_direction dir,
 				 struct rte_security_macsec_sa_stats *stats);
 
 /**
- * @warning
- * @b EXPERIMENTAL: this API may change without prior notice
- *
  * Get MACsec SC statistics.
  *
  * @param	instance	security instance
@@ -1270,7 +1245,6 @@ rte_security_macsec_sa_stats_get(void *instance,
  *  - On success, return 0.
  *  - On failure, a negative value.
  */
-__rte_experimental
 int
 rte_security_macsec_sc_stats_get(void *instance,
 				 uint16_t sc_id, enum rte_security_macsec_direction dir,
diff --git a/lib/security/version.map b/lib/security/version.map
index e07fca33a1e6..487822147fd3 100644
--- a/lib/security/version.map
+++ b/lib/security/version.map
@@ -6,14 +6,6 @@ DPDK_24 {
 	rte_security_session_create;
 	rte_security_session_destroy;
 	rte_security_session_get_size;
-
-	local: *;
-};
-
-EXPERIMENTAL {
-	global:
-
-	__rte_security_set_pkt_metadata;
 	rte_security_dynfield_offset;
 	rte_security_macsec_sa_create;
 	rte_security_macsec_sa_destroy;
@@ -23,8 +15,15 @@ EXPERIMENTAL {
 	rte_security_macsec_sc_stats_get;
 	rte_security_session_stats_get;
 	rte_security_session_update;
-	rte_security_oop_dynfield_offset;
 
+	local: *;
+};
+
+EXPERIMENTAL {
+	global:
+
+	# Added in 23.11
+	rte_security_oop_dynfield_offset;
 	rte_security_rx_inject_configure;
 	rte_security_inb_pkt_rx_inject;
 };
@@ -32,6 +31,7 @@ EXPERIMENTAL {
 INTERNAL {
 	global:
 
+	__rte_security_set_pkt_metadata;
 	rte_security_dynfield_register;
 	rte_security_oop_dynfield_register;
 };
-- 
2.39.2


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

* [PATCH v3 22/29] vhost: remove experimental from some API's
  2023-10-19 16:55 ` [PATCH v3 00/29] Promote experimental " Stephen Hemminger
                     ` (20 preceding siblings ...)
  2023-10-19 16:55   ` [PATCH v3 21/29] security: remove experimental flag from macsec Stephen Hemminger
@ 2023-10-19 16:55   ` Stephen Hemminger
  2023-10-20  7:41     ` Maxime Coquelin
  2023-10-19 16:55   ` [PATCH v3 23/29] bbdev: remove experimental tag Stephen Hemminger
                     ` (6 subsequent siblings)
  28 siblings, 1 reply; 219+ messages in thread
From: Stephen Hemminger @ 2023-10-19 16:55 UTC (permalink / raw)
  To: dev; +Cc: Stephen Hemminger, Maxime Coquelin, Chenbo Xia

All API's that before 22.11 release should have experimental
tag removed.

Signed-off-by: Stephen Hemminger <stephen@networkplumber.org>
---
 lib/vhost/rte_vhost.h        |  5 ----
 lib/vhost/rte_vhost_async.h  | 19 --------------
 lib/vhost/rte_vhost_crypto.h |  1 -
 lib/vhost/version.map        | 51 ++++++++++++++----------------------
 4 files changed, 19 insertions(+), 57 deletions(-)

diff --git a/lib/vhost/rte_vhost.h b/lib/vhost/rte_vhost.h
index fec650b1dbba..db92f0534431 100644
--- a/lib/vhost/rte_vhost.h
+++ b/lib/vhost/rte_vhost.h
@@ -509,7 +509,6 @@ rte_vhost_driver_get_vdpa_device(const char *path);
  * @return
  *  0 on success, -1 on failure
  */
-__rte_experimental
 int
 rte_vhost_driver_get_vdpa_dev_type(const char *path, uint32_t *type);
 
@@ -648,7 +647,6 @@ int rte_vhost_get_negotiated_features(int vid, uint64_t *features);
  * @return
  *  0 on success, -1 on failure
  */
-__rte_experimental
 int
 rte_vhost_get_negotiated_protocol_features(int vid,
 					   uint64_t *protocol_features);
@@ -960,7 +958,6 @@ int rte_vhost_vring_call(int vid, uint16_t vring_idx);
  * @return
  *  0 on success, -1 on failure, -EAGAIN for another retry
  */
-__rte_experimental
 int rte_vhost_vring_call_nonblock(int vid, uint16_t vring_idx);
 
 /**
@@ -987,7 +984,6 @@ uint32_t rte_vhost_rx_queue_count(int vid, uint16_t qid);
  * @return
  *  0 on success, -1 on failure
  */
-__rte_experimental
 int
 rte_vhost_get_monitor_addr(int vid, uint16_t queue_id,
 		struct rte_vhost_power_monitor_cond *pmc);
@@ -1102,7 +1098,6 @@ rte_vhost_get_vdpa_device(int vid);
  * @return
  *  0 on success, < 0 on failure
  */
-__rte_experimental
 int
 rte_vhost_backend_config_change(int vid, bool need_reply);
 
diff --git a/lib/vhost/rte_vhost_async.h b/lib/vhost/rte_vhost_async.h
index 8f190dd44b1b..3370026415fb 100644
--- a/lib/vhost/rte_vhost_async.h
+++ b/lib/vhost/rte_vhost_async.h
@@ -24,7 +24,6 @@ extern "C" {
  * @return
  *  0 on success, -1 on failures
  */
-__rte_experimental
 int rte_vhost_async_channel_register(int vid, uint16_t queue_id);
 
 /**
@@ -37,7 +36,6 @@ int rte_vhost_async_channel_register(int vid, uint16_t queue_id);
  * @return
  *  0 on success, -1 on failures
  */
-__rte_experimental
 int rte_vhost_async_channel_unregister(int vid, uint16_t queue_id);
 
 /**
@@ -54,7 +52,6 @@ int rte_vhost_async_channel_unregister(int vid, uint16_t queue_id);
  * @return
  *  0 on success, -1 on failures
  */
-__rte_experimental
 int rte_vhost_async_channel_register_thread_unsafe(int vid, uint16_t queue_id);
 
 /**
@@ -71,7 +68,6 @@ int rte_vhost_async_channel_register_thread_unsafe(int vid, uint16_t queue_id);
  * @return
  *  0 on success, -1 on failures
  */
-__rte_experimental
 int rte_vhost_async_channel_unregister_thread_unsafe(int vid,
 		uint16_t queue_id);
 
@@ -95,7 +91,6 @@ int rte_vhost_async_channel_unregister_thread_unsafe(int vid,
  * @return
  *  num of packets enqueued
  */
-__rte_experimental
 uint16_t rte_vhost_submit_enqueue_burst(int vid, uint16_t queue_id,
 		struct rte_mbuf **pkts, uint16_t count, int16_t dma_id,
 		uint16_t vchan_id);
@@ -120,7 +115,6 @@ uint16_t rte_vhost_submit_enqueue_burst(int vid, uint16_t queue_id,
  * @return
  *  num of packets returned
  */
-__rte_experimental
 uint16_t rte_vhost_poll_enqueue_completed(int vid, uint16_t queue_id,
 		struct rte_mbuf **pkts, uint16_t count, int16_t dma_id,
 		uint16_t vchan_id);
@@ -136,7 +130,6 @@ uint16_t rte_vhost_poll_enqueue_completed(int vid, uint16_t queue_id,
  * @return
  *  the amount of in-flight packets on success; -1 on failure
  */
-__rte_experimental
 int rte_vhost_async_get_inflight(int vid, uint16_t queue_id);
 
 /**
@@ -153,7 +146,6 @@ int rte_vhost_async_get_inflight(int vid, uint16_t queue_id);
  * @return
  * the amount of in-flight packets on success; -1 on failure
  */
-__rte_experimental
 int rte_vhost_async_get_inflight_thread_unsafe(int vid, uint16_t queue_id);
 
 /**
@@ -178,7 +170,6 @@ int rte_vhost_async_get_inflight_thread_unsafe(int vid, uint16_t queue_id);
  * @return
  *  Number of packets returned
  */
-__rte_experimental
 uint16_t rte_vhost_clear_queue_thread_unsafe(int vid, uint16_t queue_id,
 		struct rte_mbuf **pkts, uint16_t count, int16_t dma_id,
 		uint16_t vchan_id);
@@ -203,7 +194,6 @@ uint16_t rte_vhost_clear_queue_thread_unsafe(int vid, uint16_t queue_id,
  * @return
  *  Number of packets returned
  */
-__rte_experimental
 uint16_t rte_vhost_clear_queue(int vid, uint16_t queue_id,
 		struct rte_mbuf **pkts, uint16_t count, int16_t dma_id,
 		uint16_t vchan_id);
@@ -226,13 +216,9 @@ uint16_t rte_vhost_clear_queue(int vid, uint16_t queue_id,
  * @return
  *  0 on success, and -1 on failure
  */
-__rte_experimental
 int rte_vhost_async_dma_configure(int16_t dma_id, uint16_t vchan_id);
 
 /**
- * @warning
- * @b EXPERIMENTAL: this API may change, or be removed, without prior notice
- *
  * This function tries to receive packets from the guest with offloading
  * copies to the DMA vChannels. Successfully dequeued packets are returned
  * in "pkts". The other packets that their copies are submitted to
@@ -260,16 +246,12 @@ int rte_vhost_async_dma_configure(int16_t dma_id, uint16_t vchan_id);
  * @return
  *  Number of successfully dequeued packets
  */
-__rte_experimental
 uint16_t
 rte_vhost_async_try_dequeue_burst(int vid, uint16_t queue_id,
 	struct rte_mempool *mbuf_pool, struct rte_mbuf **pkts, uint16_t count,
 	int *nr_inflight, int16_t dma_id, uint16_t vchan_id);
 
 /**
- * @warning
- * @b EXPERIMENTAL: this API may change, or be removed, without prior notice.
- *
  * Unconfigure DMA vChannel in Vhost asynchronous data path.
  * This function should be called when the specified DMA vChannel is no longer
  * used by the Vhost library. Before this function is called, make sure there
@@ -282,7 +264,6 @@ rte_vhost_async_try_dequeue_burst(int vid, uint16_t queue_id,
  * @return
  *  0 on success, and -1 on failure
  */
-__rte_experimental
 int
 rte_vhost_async_dma_unconfigure(int16_t dma_id, uint16_t vchan_id);
 
diff --git a/lib/vhost/rte_vhost_crypto.h b/lib/vhost/rte_vhost_crypto.h
index 2b01ecda0880..71a30ba202be 100644
--- a/lib/vhost/rte_vhost_crypto.h
+++ b/lib/vhost/rte_vhost_crypto.h
@@ -40,7 +40,6 @@ enum rte_vhost_crypto_zero_copy {
  * @return
  *  0 on success, -1 on failure
  */
-__rte_experimental
 int
 rte_vhost_crypto_driver_start(const char *path);
 
diff --git a/lib/vhost/version.map b/lib/vhost/version.map
index 5bc133dafda2..9696c4d91fe8 100644
--- a/lib/vhost/version.map
+++ b/lib/vhost/version.map
@@ -9,10 +9,23 @@ DPDK_24 {
 	rte_vdpa_get_stats;
 	rte_vdpa_get_stats_names;
 	rte_vdpa_reset_stats;
+	rte_vhost_async_channel_register;
+	rte_vhost_async_channel_register_thread_unsafe;
+	rte_vhost_async_channel_unregister;
+	rte_vhost_async_channel_unregister_thread_unsafe;
+	rte_vhost_async_dma_configure;
+	rte_vhost_async_dma_unconfigure;
+	rte_vhost_async_get_inflight;
+	rte_vhost_async_get_inflight_thread_unsafe;
+	rte_vhost_async_try_dequeue_burst;
 	rte_vhost_avail_entries;
+	rte_vhost_backend_config_change;
+	rte_vhost_clear_queue;
+	rte_vhost_clear_queue_thread_unsafe;
 	rte_vhost_clr_inflight_desc_packed;
 	rte_vhost_clr_inflight_desc_split;
 	rte_vhost_crypto_create;
+	rte_vhost_crypto_driver_start;
 	rte_vhost_crypto_fetch_requests;
 	rte_vhost_crypto_finalize_requests;
 	rte_vhost_crypto_free;
@@ -26,6 +39,7 @@ DPDK_24 {
 	rte_vhost_driver_get_features;
 	rte_vhost_driver_get_protocol_features;
 	rte_vhost_driver_get_queue_num;
+	rte_vhost_driver_get_vdpa_dev_type;
 	rte_vhost_driver_get_vdpa_device;
 	rte_vhost_driver_register;
 	rte_vhost_driver_set_features;
@@ -38,8 +52,10 @@ DPDK_24 {
 	rte_vhost_get_ifname;
 	rte_vhost_get_log_base;
 	rte_vhost_get_mem_table;
+	rte_vhost_get_monitor_addr;
 	rte_vhost_get_mtu;
 	rte_vhost_get_negotiated_features;
+	rte_vhost_get_negotiated_protocol_features;
 	rte_vhost_get_numa_node;
 	rte_vhost_get_vdpa_device;
 	rte_vhost_get_vhost_ring_inflight;
@@ -49,14 +65,17 @@ DPDK_24 {
 	rte_vhost_get_vring_num;
 	rte_vhost_log_used_vring;
 	rte_vhost_log_write;
+	rte_vhost_poll_enqueue_completed;
 	rte_vhost_rx_queue_count;
 	rte_vhost_set_inflight_desc_packed;
 	rte_vhost_set_inflight_desc_split;
 	rte_vhost_set_last_inflight_io_packed;
 	rte_vhost_set_last_inflight_io_split;
 	rte_vhost_set_vring_base;
+	rte_vhost_submit_enqueue_burst;
 	rte_vhost_va_from_guest_pa;
 	rte_vhost_vring_call;
+	rte_vhost_vring_call_nonblock;
 	rte_vhost_vring_stats_get;
 	rte_vhost_vring_stats_get_names;
 	rte_vhost_vring_stats_reset;
@@ -67,38 +86,6 @@ DPDK_24 {
 EXPERIMENTAL {
 	global:
 
-	rte_vhost_crypto_driver_start;
-	rte_vhost_backend_config_change;
-	rte_vhost_async_channel_register;
-	rte_vhost_async_channel_unregister;
-	rte_vhost_submit_enqueue_burst;
-	rte_vhost_poll_enqueue_completed;
-
-	# added in 21.05
-	rte_vhost_get_negotiated_protocol_features;
-
-	# added in 21.08
-	rte_vhost_async_get_inflight;
-	rte_vhost_async_channel_register_thread_unsafe;
-	rte_vhost_async_channel_unregister_thread_unsafe;
-	rte_vhost_clear_queue_thread_unsafe;
-
-	# added in 21.11
-	rte_vhost_get_monitor_addr;
-
-	# added in 22.03
-	rte_vhost_async_dma_configure;
-
-	# added in 22.07
-	rte_vhost_async_get_inflight_thread_unsafe;
-	rte_vhost_async_try_dequeue_burst;
-	rte_vhost_driver_get_vdpa_dev_type;
-	rte_vhost_clear_queue;
-
-	# added in 22.11
-	rte_vhost_async_dma_unconfigure;
-	rte_vhost_vring_call_nonblock;
-
 	# added in 23.07
 	rte_vhost_driver_set_max_queue_num;
 	rte_vhost_notify_guest;
-- 
2.39.2


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

* [PATCH v3 23/29] bbdev: remove experimental tag
  2023-10-19 16:55 ` [PATCH v3 00/29] Promote experimental " Stephen Hemminger
                     ` (21 preceding siblings ...)
  2023-10-19 16:55   ` [PATCH v3 22/29] vhost: remove experimental from some API's Stephen Hemminger
@ 2023-10-19 16:55   ` Stephen Hemminger
  2023-10-19 16:55   ` [PATCH v3 24/29] ipsec: remove experimental from SA API Stephen Hemminger
                     ` (5 subsequent siblings)
  28 siblings, 0 replies; 219+ messages in thread
From: Stephen Hemminger @ 2023-10-19 16:55 UTC (permalink / raw)
  To: dev; +Cc: Stephen Hemminger, Nicolas Chautru

The API's for bbdev were last added to in 22.11.
Remove experimental flag now.

Signed-off-by: Stephen Hemminger <stephen@networkplumber.org>
---
 lib/bbdev/rte_bbdev.h    |  4 ----
 lib/bbdev/rte_bbdev_op.h |  2 --
 lib/bbdev/version.map    | 15 +++++++--------
 3 files changed, 7 insertions(+), 14 deletions(-)

diff --git a/lib/bbdev/rte_bbdev.h b/lib/bbdev/rte_bbdev.h
index d12e2e7fbcf3..b43e98ef9d1b 100644
--- a/lib/bbdev/rte_bbdev.h
+++ b/lib/bbdev/rte_bbdev.h
@@ -675,7 +675,6 @@ rte_bbdev_enqueue_ldpc_dec_ops(uint16_t dev_id, uint16_t queue_id,
  *   The number of operations actually enqueued.
  *   (This is the number of processed entries in the @p ops array.)
  */
-__rte_experimental
 static inline uint16_t
 rte_bbdev_enqueue_fft_ops(uint16_t dev_id, uint16_t queue_id,
 		struct rte_bbdev_fft_op **ops, uint16_t num_ops)
@@ -860,7 +859,6 @@ rte_bbdev_dequeue_ldpc_dec_ops(uint16_t dev_id, uint16_t queue_id,
  *   The number of operations actually dequeued (this is the number of entries
  *   copied into the @p ops array).
  */
-__rte_experimental
 static inline uint16_t
 rte_bbdev_dequeue_fft_ops(uint16_t dev_id, uint16_t queue_id,
 		struct rte_bbdev_fft_op **ops, uint16_t num_ops)
@@ -1042,7 +1040,6 @@ rte_bbdev_queue_intr_ctl(uint16_t dev_id, uint16_t queue_id, int epfd, int op,
  * @returns
  *   Device status as string or NULL if invalid.
  */
-__rte_experimental
 const char*
 rte_bbdev_device_status_str(enum rte_bbdev_device_status status);
 
@@ -1055,7 +1052,6 @@ rte_bbdev_device_status_str(enum rte_bbdev_device_status status);
  * @returns
  *   Queue status as string or NULL if op_type is invalid.
  */
-__rte_experimental
 const char*
 rte_bbdev_enqueue_status_str(enum rte_bbdev_enqueue_status status);
 
diff --git a/lib/bbdev/rte_bbdev_op.h b/lib/bbdev/rte_bbdev_op.h
index 369ac331bf9b..459631d0d0b7 100644
--- a/lib/bbdev/rte_bbdev_op.h
+++ b/lib/bbdev/rte_bbdev_op.h
@@ -1130,7 +1130,6 @@ rte_bbdev_dec_op_alloc_bulk(struct rte_mempool *mempool,
  *   - 0 on success.
  *   - EINVAL if invalid mempool is provided.
  */
-__rte_experimental
 static inline int
 rte_bbdev_fft_op_alloc_bulk(struct rte_mempool *mempool,
 		struct rte_bbdev_fft_op **ops, unsigned int num_ops)
@@ -1220,7 +1219,6 @@ rte_bbdev_enc_op_free_bulk(struct rte_bbdev_enc_op **ops, unsigned int num_ops)
  * @param num_ops
  *   Number of structures.
  */
-__rte_experimental
 static inline void
 rte_bbdev_fft_op_free_bulk(struct rte_bbdev_fft_op **ops, unsigned int num_ops)
 {
diff --git a/lib/bbdev/version.map b/lib/bbdev/version.map
index eeb7ed475a6c..1840d2b2a491 100644
--- a/lib/bbdev/version.map
+++ b/lib/bbdev/version.map
@@ -10,11 +10,17 @@ DPDK_24 {
 	rte_bbdev_dec_op_free_bulk;
 	rte_bbdev_dequeue_dec_ops;
 	rte_bbdev_dequeue_enc_ops;
+	rte_bbdev_dequeue_fft_ops;
+	rte_bbdev_device_status_str;
 	rte_bbdev_devices;
 	rte_bbdev_enc_op_alloc_bulk;
 	rte_bbdev_enc_op_free_bulk;
 	rte_bbdev_enqueue_dec_ops;
 	rte_bbdev_enqueue_enc_ops;
+	rte_bbdev_enqueue_fft_ops;
+	rte_bbdev_enqueue_status_str;
+	rte_bbdev_fft_op_alloc_bulk;
+	rte_bbdev_fft_op_free_bulk;
 	rte_bbdev_find_next;
 	rte_bbdev_get_named_dev;
 	rte_bbdev_info_get;
@@ -43,14 +49,7 @@ DPDK_24 {
 EXPERIMENTAL {
 	global:
 
-	# added in 22.11
-	rte_bbdev_dequeue_fft_ops;
-	rte_bbdev_device_status_str;
-	rte_bbdev_enqueue_fft_ops;
-	rte_bbdev_enqueue_status_str;
-	rte_bbdev_fft_op_alloc_bulk;
-	rte_bbdev_fft_op_free_bulk;
-	#added in 23.11
+	# added in 23.11
 	rte_bbdev_dequeue_mldts_ops;
 	rte_bbdev_enqueue_mldts_ops;
 	rte_bbdev_mldts_op_alloc_bulk;
-- 
2.39.2


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

* [PATCH v3 24/29] ipsec: remove experimental from SA API
  2023-10-19 16:55 ` [PATCH v3 00/29] Promote experimental " Stephen Hemminger
                     ` (22 preceding siblings ...)
  2023-10-19 16:55   ` [PATCH v3 23/29] bbdev: remove experimental tag Stephen Hemminger
@ 2023-10-19 16:55   ` Stephen Hemminger
  2023-10-19 16:55   ` [PATCH v3 25/29] compressdev: remove experimental flag Stephen Hemminger
                     ` (4 subsequent siblings)
  28 siblings, 0 replies; 219+ messages in thread
From: Stephen Hemminger @ 2023-10-19 16:55 UTC (permalink / raw)
  To: dev; +Cc: Stephen Hemminger, Konstantin Ananyev, Vladimir Medvedkin

These API's were added in 21.11, remove experimental flag.

Signed-off-by: Stephen Hemminger <stephen@networkplumber.org>
Acked-by: Konstantin Ananyev <konstantin.v.ananyev@yandex.ru>
---
 lib/ipsec/rte_ipsec.h | 2 --
 lib/ipsec/version.map | 9 +--------
 2 files changed, 1 insertion(+), 10 deletions(-)

diff --git a/lib/ipsec/rte_ipsec.h b/lib/ipsec/rte_ipsec.h
index 04129926b69f..81624f909192 100644
--- a/lib/ipsec/rte_ipsec.h
+++ b/lib/ipsec/rte_ipsec.h
@@ -168,7 +168,6 @@ rte_ipsec_pkt_process(const struct rte_ipsec_session *ss, struct rte_mbuf *mb[],
  * @return
  *   0 on success, negative value otherwise.
  */
-__rte_experimental
 int
 rte_ipsec_telemetry_sa_add(const struct rte_ipsec_sa *sa);
 
@@ -178,7 +177,6 @@ rte_ipsec_telemetry_sa_add(const struct rte_ipsec_sa *sa);
  * @param sa
  *   Pointer to the *rte_ipsec_sa* object that will have telemetry disabled.
  */
-__rte_experimental
 void
 rte_ipsec_telemetry_sa_del(const struct rte_ipsec_sa *sa);
 
diff --git a/lib/ipsec/version.map b/lib/ipsec/version.map
index f0063af354f0..9d01ebeadc4c 100644
--- a/lib/ipsec/version.map
+++ b/lib/ipsec/version.map
@@ -16,15 +16,8 @@ DPDK_24 {
 	rte_ipsec_sad_lookup;
 	rte_ipsec_ses_from_crypto;
 	rte_ipsec_session_prepare;
-
-	local: *;
-};
-
-EXPERIMENTAL {
-	global:
-
-	# added in 21.11
 	rte_ipsec_telemetry_sa_add;
 	rte_ipsec_telemetry_sa_del;
 
+	local: *;
 };
-- 
2.39.2


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

* [PATCH v3 25/29] compressdev: remove experimental flag
  2023-10-19 16:55 ` [PATCH v3 00/29] Promote experimental " Stephen Hemminger
                     ` (23 preceding siblings ...)
  2023-10-19 16:55   ` [PATCH v3 24/29] ipsec: remove experimental from SA API Stephen Hemminger
@ 2023-10-19 16:55   ` Stephen Hemminger
  2023-10-19 16:55   ` [PATCH v3 26/29] regexdev: remove experimental tag Stephen Hemminger
                     ` (3 subsequent siblings)
  28 siblings, 0 replies; 219+ messages in thread
From: Stephen Hemminger @ 2023-10-19 16:55 UTC (permalink / raw)
  To: dev; +Cc: Stephen Hemminger, Thomas Monjalon, Fan Zhang, Ashish Gupta

The compressdev can not hide under the experimental flag.
Remove the experimental flag and require ABI to be stable.

Signed-off-by: Stephen Hemminger <stephen@networkplumber.org>
---
 MAINTAINERS                           |  2 +-
 lib/compressdev/rte_comp.h            |  6 ------
 lib/compressdev/rte_compressdev.h     | 26 --------------------------
 lib/compressdev/rte_compressdev_pmd.h |  6 ------
 lib/compressdev/version.map           |  2 +-
 5 files changed, 2 insertions(+), 40 deletions(-)

diff --git a/MAINTAINERS b/MAINTAINERS
index 1534a414f754..a1d4d57107a3 100644
--- a/MAINTAINERS
+++ b/MAINTAINERS
@@ -459,7 +459,7 @@ F: lib/security/
 F: doc/guides/prog_guide/rte_security.rst
 F: app/test/test_security*
 
-Compression API - EXPERIMENTAL
+Compression API
 M: Fan Zhang <fanzhang.oss@gmail.com>
 M: Ashish Gupta <ashish.gupta@marvell.com>
 T: git://dpdk.org/next/dpdk-next-crypto
diff --git a/lib/compressdev/rte_comp.h b/lib/compressdev/rte_comp.h
index bf896d07223c..232564cf5e9a 100644
--- a/lib/compressdev/rte_comp.h
+++ b/lib/compressdev/rte_comp.h
@@ -499,7 +499,6 @@ struct rte_comp_op {
  *  - On success pointer to mempool
  *  - On failure NULL
  */
-__rte_experimental
 struct rte_mempool *
 rte_comp_op_pool_create(const char *name,
 		unsigned int nb_elts, unsigned int cache_size,
@@ -515,7 +514,6 @@ rte_comp_op_pool_create(const char *name,
  * - On success returns a valid rte_comp_op structure
  * - On failure returns NULL
  */
-__rte_experimental
 struct rte_comp_op *
 rte_comp_op_alloc(struct rte_mempool *mempool);
 
@@ -532,7 +530,6 @@ rte_comp_op_alloc(struct rte_mempool *mempool);
  *   - nb_ops: Success, the nb_ops requested was allocated
  *   - 0: Not enough entries in the mempool; no ops are retrieved.
  */
-__rte_experimental
 int
 rte_comp_op_bulk_alloc(struct rte_mempool *mempool,
 		struct rte_comp_op **ops, uint16_t nb_ops);
@@ -546,7 +543,6 @@ rte_comp_op_bulk_alloc(struct rte_mempool *mempool,
  *   Compress operation pointer allocated from rte_comp_op_alloc()
  *   If op is NULL, no operation is performed.
  */
-__rte_experimental
 void
 rte_comp_op_free(struct rte_comp_op *op);
 
@@ -561,7 +557,6 @@ rte_comp_op_free(struct rte_comp_op *op);
  * @param nb_ops
  *   Number of operations to free
  */
-__rte_experimental
 void
 rte_comp_op_bulk_free(struct rte_comp_op **ops, uint16_t nb_ops);
 
@@ -574,7 +569,6 @@ rte_comp_op_bulk_free(struct rte_comp_op **ops, uint16_t nb_ops);
  * @return
  *   The name of this flag, or NULL if it's not a valid feature flag.
  */
-__rte_experimental
 const char *
 rte_comp_get_feature_name(uint64_t flag);
 
diff --git a/lib/compressdev/rte_compressdev.h b/lib/compressdev/rte_compressdev.h
index 13a418631893..8cb5db0e3f7d 100644
--- a/lib/compressdev/rte_compressdev.h
+++ b/lib/compressdev/rte_compressdev.h
@@ -10,10 +10,6 @@
  *
  * RTE Compression Device APIs.
  *
- * @warning
- * @b EXPERIMENTAL:
- * All functions in this file may be changed or removed without prior notice.
- *
  * Defines comp device APIs for the provisioning of compression operations.
  */
 
@@ -54,7 +50,6 @@ struct rte_compressdev_capabilities {
 #define RTE_COMP_END_OF_CAPABILITIES_LIST() \
 	{ RTE_COMP_ALGO_UNSPECIFIED }
 
-__rte_experimental
 const struct rte_compressdev_capabilities *
 rte_compressdev_capability_get(uint8_t dev_id,
 			enum rte_comp_algorithm algo);
@@ -94,7 +89,6 @@ rte_compressdev_capability_get(uint8_t dev_id,
  * @return
  *   The name of this flag, or NULL if it's not a valid feature flag.
  */
-__rte_experimental
 const char *
 rte_compressdev_get_feature_name(uint64_t flag);
 
@@ -133,7 +127,6 @@ struct rte_compressdev_stats {
  *   - Returns compress device identifier on success.
  *   - Return -1 on failure to find named compress device.
  */
-__rte_experimental
 int
 rte_compressdev_get_dev_id(const char *name);
 
@@ -146,7 +139,6 @@ rte_compressdev_get_dev_id(const char *name);
  *   - Returns compress device name.
  *   - Returns NULL if compress device is not present.
  */
-__rte_experimental
 const char *
 rte_compressdev_name_get(uint8_t dev_id);
 
@@ -157,7 +149,6 @@ rte_compressdev_name_get(uint8_t dev_id);
  * @return
  *   - The total number of usable compress devices.
  */
-__rte_experimental
 uint8_t
 rte_compressdev_count(void);
 
@@ -175,7 +166,6 @@ rte_compressdev_count(void);
  * @return
  *   Returns number of attached compress devices.
  */
-__rte_experimental
 uint8_t
 rte_compressdev_devices_get(const char *driver_name, uint8_t *devices,
 		uint8_t nb_devices);
@@ -190,7 +180,6 @@ rte_compressdev_devices_get(const char *driver_name, uint8_t *devices,
  *   a default of zero if the socket could not be determined.
  *   -1 if returned is the dev_id value is out of range.
  */
-__rte_experimental
 int
 rte_compressdev_socket_id(uint8_t dev_id);
 
@@ -221,7 +210,6 @@ struct rte_compressdev_config {
  *   - 0: Success, device configured.
  *   - <0: Error code returned by the driver configuration function.
  */
-__rte_experimental
 int
 rte_compressdev_configure(uint8_t dev_id,
 			struct rte_compressdev_config *config);
@@ -240,7 +228,6 @@ rte_compressdev_configure(uint8_t dev_id,
  *   - 0: Success, device started.
  *   - <0: Error code of the driver device start function.
  */
-__rte_experimental
 int
 rte_compressdev_start(uint8_t dev_id);
 
@@ -251,7 +238,6 @@ rte_compressdev_start(uint8_t dev_id);
  * @param dev_id
  *   Compress device identifier
  */
-__rte_experimental
 void
 rte_compressdev_stop(uint8_t dev_id);
 
@@ -269,7 +255,6 @@ rte_compressdev_stop(uint8_t dev_id);
  *  - 0 on successfully closing device
  *  - <0 on failure to close device
  */
-__rte_experimental
 int
 rte_compressdev_close(uint8_t dev_id);
 
@@ -296,7 +281,6 @@ rte_compressdev_close(uint8_t dev_id);
  *   - 0: Success, queue pair correctly set up.
  *   - <0: Queue pair configuration failed
  */
-__rte_experimental
 int
 rte_compressdev_queue_pair_setup(uint8_t dev_id, uint16_t queue_pair_id,
 		uint32_t max_inflight_ops, int socket_id);
@@ -309,7 +293,6 @@ rte_compressdev_queue_pair_setup(uint8_t dev_id, uint16_t queue_pair_id,
  * @return
  *   - The number of configured queue pairs.
  */
-__rte_experimental
 uint16_t
 rte_compressdev_queue_pair_count(uint8_t dev_id);
 
@@ -327,7 +310,6 @@ rte_compressdev_queue_pair_count(uint8_t dev_id);
  *   - Zero if successful.
  *   - Non-zero otherwise.
  */
-__rte_experimental
 int
 rte_compressdev_stats_get(uint8_t dev_id, struct rte_compressdev_stats *stats);
 
@@ -337,7 +319,6 @@ rte_compressdev_stats_get(uint8_t dev_id, struct rte_compressdev_stats *stats);
  * @param dev_id
  *   The identifier of the device.
  */
-__rte_experimental
 void
 rte_compressdev_stats_reset(uint8_t dev_id);
 
@@ -355,7 +336,6 @@ rte_compressdev_stats_reset(uint8_t dev_id);
  * The element after the last valid element has it's op field set to
  * RTE_COMP_ALGO_UNSPECIFIED.
  */
-__rte_experimental
 void
 rte_compressdev_info_get(uint8_t dev_id, struct rte_compressdev_info *dev_info);
 
@@ -413,7 +393,6 @@ rte_compressdev_info_get(uint8_t dev_id, struct rte_compressdev_info *dev_info);
  *   of pointers to *rte_comp_op* structures effectively supplied to the
  *   *ops* array.
  */
-__rte_experimental
 uint16_t
 rte_compressdev_dequeue_burst(uint8_t dev_id, uint16_t qp_id,
 		struct rte_comp_op **ops, uint16_t nb_ops);
@@ -468,7 +447,6 @@ rte_compressdev_dequeue_burst(uint8_t dev_id, uint16_t qp_id,
  *   comp devices queue is full or if invalid parameters are specified in
  *   a *rte_comp_op*.
  */
-__rte_experimental
 uint16_t
 rte_compressdev_enqueue_burst(uint8_t dev_id, uint16_t qp_id,
 		struct rte_comp_op **ops, uint16_t nb_ops);
@@ -496,7 +474,6 @@ rte_compressdev_enqueue_burst(uint8_t dev_id, uint16_t qp_id,
  *  - Returns -ENOTSUP if comp device does not support the comp transform.
  *  - Returns -ENOMEM if the private stream could not be allocated.
  */
-__rte_experimental
 int
 rte_compressdev_stream_create(uint8_t dev_id,
 		const struct rte_comp_xform *xform,
@@ -518,7 +495,6 @@ rte_compressdev_stream_create(uint8_t dev_id,
  *  - Returns -ENOTSUP if comp device does not support STATEFUL operations.
  *  - Returns -EBUSY if can't free stream as there are inflight operations
  */
-__rte_experimental
 int
 rte_compressdev_stream_free(uint8_t dev_id, void *stream);
 
@@ -545,7 +521,6 @@ rte_compressdev_stream_free(uint8_t dev_id, void *stream);
  *  - Returns -ENOTSUP if comp device does not support the comp transform.
  *  - Returns -ENOMEM if the private_xform could not be allocated.
  */
-__rte_experimental
 int
 rte_compressdev_private_xform_create(uint8_t dev_id,
 		const struct rte_comp_xform *xform,
@@ -567,7 +542,6 @@ rte_compressdev_private_xform_create(uint8_t dev_id,
  *  - <0 in error cases
  *  - Returns -EINVAL if input parameters are invalid.
  */
-__rte_experimental
 int
 rte_compressdev_private_xform_free(uint8_t dev_id, void *private_xform);
 
diff --git a/lib/compressdev/rte_compressdev_pmd.h b/lib/compressdev/rte_compressdev_pmd.h
index ea012908b783..fa233492fe1f 100644
--- a/lib/compressdev/rte_compressdev_pmd.h
+++ b/lib/compressdev/rte_compressdev_pmd.h
@@ -59,7 +59,6 @@ struct rte_compressdev_global {
  * @return
  *   - The rte_compressdev structure pointer for the given device identifier.
  */
-__rte_experimental
 struct rte_compressdev *
 rte_compressdev_pmd_get_named_dev(const char *name);
 
@@ -292,7 +291,6 @@ struct rte_compressdev_ops {
  * @return
  *   - Slot in the rte_dev_devices array for a new device;
  */
-__rte_experimental
 struct rte_compressdev *
 rte_compressdev_pmd_allocate(const char *name, int socket_id);
 
@@ -308,7 +306,6 @@ rte_compressdev_pmd_allocate(const char *name, int socket_id);
  * @return
  *   - 0 on success, negative on error
  */
-__rte_experimental
 int
 rte_compressdev_pmd_release_device(struct rte_compressdev *dev);
 
@@ -331,7 +328,6 @@ rte_compressdev_pmd_release_device(struct rte_compressdev *dev);
  *  - 0 on success
  *  - errno on failure
  */
-__rte_experimental
 int
 rte_compressdev_pmd_parse_input_args(
 		struct rte_compressdev_pmd_init_params *params,
@@ -353,7 +349,6 @@ rte_compressdev_pmd_parse_input_args(
  *  - comp device instance on success
  *  - NULL on creation failure
  */
-__rte_experimental
 struct rte_compressdev *
 rte_compressdev_pmd_create(const char *name,
 		struct rte_device *device,
@@ -372,7 +367,6 @@ rte_compressdev_pmd_create(const char *name,
  *  - 0 on success
  *  - errno on failure
  */
-__rte_experimental
 int
 rte_compressdev_pmd_destroy(struct rte_compressdev *dev);
 
diff --git a/lib/compressdev/version.map b/lib/compressdev/version.map
index e2a108b6509f..fa891f669b5d 100644
--- a/lib/compressdev/version.map
+++ b/lib/compressdev/version.map
@@ -1,4 +1,4 @@
-EXPERIMENTAL {
+DPDK_24 {
 	global:
 
 	rte_compressdev_capability_get;
-- 
2.39.2


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

* [PATCH v3 26/29] regexdev: remove experimental tag
  2023-10-19 16:55 ` [PATCH v3 00/29] Promote experimental " Stephen Hemminger
                     ` (24 preceding siblings ...)
  2023-10-19 16:55   ` [PATCH v3 25/29] compressdev: remove experimental flag Stephen Hemminger
@ 2023-10-19 16:55   ` Stephen Hemminger
  2023-10-19 16:55   ` [PATCH v3 27/29] node: remove some of the experimental tags Stephen Hemminger
                     ` (2 subsequent siblings)
  28 siblings, 0 replies; 219+ messages in thread
From: Stephen Hemminger @ 2023-10-19 16:55 UTC (permalink / raw)
  To: dev; +Cc: Stephen Hemminger, Ori Kam

This library was added in 22.11.
Time to make it not experimental.

Signed-off-by: Stephen Hemminger <stephen@networkplumber.org>
---
 lib/regexdev/rte_regexdev.h | 92 -------------------------------------
 lib/regexdev/version.map    |  2 +-
 2 files changed, 1 insertion(+), 93 deletions(-)

diff --git a/lib/regexdev/rte_regexdev.h b/lib/regexdev/rte_regexdev.h
index d50af775b551..3ea1f0c061a0 100644
--- a/lib/regexdev/rte_regexdev.h
+++ b/lib/regexdev/rte_regexdev.h
@@ -226,9 +226,6 @@ extern int rte_regexdev_logtype;
 } while (0)
 
 /**
- * @warning
- * @b EXPERIMENTAL: this API may change without prior notice.
- *
  * Check if dev_id is ready.
  *
  * @param dev_id
@@ -238,27 +235,19 @@ extern int rte_regexdev_logtype;
  *   - 0 if device state is not in ready state.
  *   - 1 if device state is ready state.
  */
-__rte_experimental
 int rte_regexdev_is_valid_dev(uint16_t dev_id);
 
 /**
- * @warning
- * @b EXPERIMENTAL: this API may change without prior notice.
- *
  * Get the total number of RegEx devices that have been successfully
  * initialised.
  *
  * @return
  *   The total number of usable RegEx devices.
  */
-__rte_experimental
 uint8_t
 rte_regexdev_count(void);
 
 /**
- * @warning
- * @b EXPERIMENTAL: this API may change without prior notice.
- *
  * Get the device identifier for the named RegEx device.
  *
  * @param name
@@ -268,7 +257,6 @@ rte_regexdev_count(void);
  *   Returns RegEx device identifier on success.
  *   - <0: Failure to find named RegEx device.
  */
-__rte_experimental
 int
 rte_regexdev_get_dev_id(const char *name);
 
@@ -628,9 +616,6 @@ struct rte_regexdev_info {
 };
 
 /**
- * @warning
- * @b EXPERIMENTAL: this API may change without prior notice.
- *
  * Retrieve the contextual information of a RegEx device.
  *
  * @param dev_id
@@ -644,7 +629,6 @@ struct rte_regexdev_info {
  *   - 0: Success, driver updates the contextual information of the RegEx device
  *   - <0: Error code returned by the driver info get function.
  */
-__rte_experimental
 int
 rte_regexdev_info_get(uint8_t dev_id, struct rte_regexdev_info *dev_info);
 
@@ -723,9 +707,6 @@ struct rte_regexdev_config {
 };
 
 /**
- * @warning
- * @b EXPERIMENTAL: this API may change without prior notice.
- *
  * Configure a RegEx device.
  *
  * This function must be invoked first before any other function in the
@@ -743,7 +724,6 @@ struct rte_regexdev_config {
  * @return
  *   - 0: Success, device configured. Otherwise negative errno is returned.
  */
-__rte_experimental
 int
 rte_regexdev_configure(uint8_t dev_id, const struct rte_regexdev_config *cfg);
 
@@ -782,9 +762,6 @@ struct rte_regexdev_qp_conf {
 };
 
 /**
- * @warning
- * @b EXPERIMENTAL: this API may change without prior notice.
- *
  * Allocate and set up a RegEx queue pair for a RegEx device.
  *
  * @param dev_id
@@ -799,15 +776,11 @@ struct rte_regexdev_qp_conf {
  * @return
  *   0 on success. Otherwise negative errno is returned.
  */
-__rte_experimental
 int
 rte_regexdev_queue_pair_setup(uint8_t dev_id, uint16_t queue_pair_id,
 			      const struct rte_regexdev_qp_conf *qp_conf);
 
 /**
- * @warning
- * @b EXPERIMENTAL: this API may change without prior notice.
- *
  * Start a RegEx device.
  *
  * The device start step is the last one and consists of setting the RegEx
@@ -822,14 +795,10 @@ rte_regexdev_queue_pair_setup(uint8_t dev_id, uint16_t queue_pair_id,
  * @return
  *   0 on success. Otherwise negative errno is returned.
  */
-__rte_experimental
 int
 rte_regexdev_start(uint8_t dev_id);
 
 /**
- * @warning
- * @b EXPERIMENTAL: this API may change without prior notice.
- *
  * Stop a RegEx device.
  *
  * Stop a RegEx device. The device can be restarted with a call to
@@ -845,14 +814,10 @@ rte_regexdev_start(uint8_t dev_id);
  * @return
  *   0 on success. Otherwise negative errno is returned.
  */
-__rte_experimental
 int
 rte_regexdev_stop(uint8_t dev_id);
 
 /**
- * @warning
- * @b EXPERIMENTAL: this API may change without prior notice.
- *
  * Close a RegEx device. The device cannot be restarted!
  *
  * @param dev_id
@@ -861,7 +826,6 @@ rte_regexdev_stop(uint8_t dev_id);
  * @return
  *   0 on success. Otherwise negative errno is returned.
  */
-__rte_experimental
 int
 rte_regexdev_close(uint8_t dev_id);
 
@@ -897,9 +861,6 @@ enum rte_regexdev_attr_id {
 };
 
 /**
- * @warning
- * @b EXPERIMENTAL: this API may change without prior notice.
- *
  * Get an attribute from a RegEx device.
  *
  * @param dev_id
@@ -915,15 +876,11 @@ enum rte_regexdev_attr_id {
  *   - -EINVAL: Invalid device or  *attr_id* provided, or *attr_value* is NULL.
  *   - -ENOTSUP: if the device doesn't support specific *attr_id*.
  */
-__rte_experimental
 int
 rte_regexdev_attr_get(uint8_t dev_id, enum rte_regexdev_attr_id attr_id,
 		      void *attr_value);
 
 /**
- * @warning
- * @b EXPERIMENTAL: this API may change without prior notice.
- *
  * Set an attribute to a RegEx device.
  *
  * @param dev_id
@@ -939,7 +896,6 @@ rte_regexdev_attr_get(uint8_t dev_id, enum rte_regexdev_attr_id attr_id,
  *   - -EINVAL: Invalid device or  *attr_id* provided, or *attr_value* is NULL.
  *   - -ENOTSUP: if the device doesn't support specific *attr_id*.
  */
-__rte_experimental
 int
 rte_regexdev_attr_set(uint8_t dev_id, enum rte_regexdev_attr_id attr_id,
 		      const void *attr_value);
@@ -975,9 +931,6 @@ struct rte_regexdev_rule {
 };
 
 /**
- * @warning
- * @b EXPERIMENTAL: this API may change without prior notice.
- *
  * Update the local rule set.
  * This functions only modify the rule set in memory.
  * In order for the changes to take effect, the function
@@ -1008,16 +961,12 @@ struct rte_regexdev_rule {
  * @see rte_regexdev_rule_db_import(), rte_regexdev_rule_db_export(),
  *   rte_regexdev_rule_db_compile_activate()
  */
-__rte_experimental
 int
 rte_regexdev_rule_db_update(uint8_t dev_id,
 			    const struct rte_regexdev_rule *rules,
 			    uint32_t nb_rules);
 
 /**
- * @warning
- * @b EXPERIMENTAL: this API may change without prior notice.
- *
  * Compile local rule set and burn the complied result to the
  * RegEx device.
  *
@@ -1030,14 +979,10 @@ rte_regexdev_rule_db_update(uint8_t dev_id,
  * @see rte_regexdev_rule_db_import(), rte_regexdev_rule_db_export(),
  *   rte_regexdev_rule_db_update()
  */
-__rte_experimental
 int
 rte_regexdev_rule_db_compile_activate(uint8_t dev_id);
 
 /**
- * @warning
- * @b EXPERIMENTAL: this API may change without prior notice.
- *
  * Import a prebuilt rule database from a buffer to a RegEx device.
  *
  * @param dev_id
@@ -1055,15 +1000,11 @@ rte_regexdev_rule_db_compile_activate(uint8_t dev_id);
  *
  * @see rte_regexdev_rule_db_update(), rte_regexdev_rule_db_export()
  */
-__rte_experimental
 int
 rte_regexdev_rule_db_import(uint8_t dev_id, const char *rule_db,
 			    uint32_t rule_db_len);
 
 /**
- * @warning
- * @b EXPERIMENTAL: this API may change without prior notice.
- *
  * Export the prebuilt rule database from a RegEx device to the buffer.
  *
  * @param dev_id
@@ -1080,7 +1021,6 @@ rte_regexdev_rule_db_import(uint8_t dev_id, const char *rule_db,
  *
  * @see rte_regexdev_rule_db_update(), rte_regexdev_rule_db_import()
  */
-__rte_experimental
 int
 rte_regexdev_rule_db_export(uint8_t dev_id, char *rule_db);
 
@@ -1102,9 +1042,6 @@ struct rte_regexdev_xstats_map {
 };
 
 /**
- * @warning
- * @b EXPERIMENTAL: this API may change without prior notice.
- *
  * Retrieve names of extended statistics of a regex device.
  *
  * @param dev_id
@@ -1120,15 +1057,11 @@ struct rte_regexdev_xstats_map {
  *      -ENODEV for invalid *dev_id*
  *      -ENOTSUP if the device doesn't support this function.
  */
-__rte_experimental
 int
 rte_regexdev_xstats_names_get(uint8_t dev_id,
 			      struct rte_regexdev_xstats_map *xstats_map);
 
 /**
- * @warning
- * @b EXPERIMENTAL: this API may change without prior notice.
- *
  * Retrieve extended statistics of an regex device.
  *
  * @param dev_id
@@ -1147,15 +1080,11 @@ rte_regexdev_xstats_names_get(uint8_t dev_id,
  *      -ENODEV for invalid *dev_id*
  *      -ENOTSUP if the device doesn't support this function.
  */
-__rte_experimental
 int
 rte_regexdev_xstats_get(uint8_t dev_id, const uint16_t *ids,
 			uint64_t *values, uint16_t nb_values);
 
 /**
- * @warning
- * @b EXPERIMENTAL: this API may change without prior notice.
- *
  * Retrieve the value of a single stat by requesting it by name.
  *
  * @param dev_id
@@ -1174,15 +1103,11 @@ rte_regexdev_xstats_get(uint8_t dev_id, const uint16_t *ids,
  *   - -EINVAL: invalid parameters
  *   - -ENOTSUP: if not supported.
  */
-__rte_experimental
 int
 rte_regexdev_xstats_by_name_get(uint8_t dev_id, const char *name,
 				uint16_t *id, uint64_t *value);
 
 /**
- * @warning
- * @b EXPERIMENTAL: this API may change without prior notice.
- *
  * Reset the values of the xstats of the selected component in the device.
  *
  * @param dev_id
@@ -1198,15 +1123,11 @@ rte_regexdev_xstats_by_name_get(uint8_t dev_id, const char *name,
  *   - -EINVAL: invalid parameters.
  *   - -ENOTSUP: if not supported.
  */
-__rte_experimental
 int
 rte_regexdev_xstats_reset(uint8_t dev_id, const uint16_t *ids,
 			  uint16_t nb_ids);
 
 /**
- * @warning
- * @b EXPERIMENTAL: this API may change without prior notice.
- *
  * Trigger the RegEx device self test.
  *
  * @param dev_id
@@ -1216,14 +1137,10 @@ rte_regexdev_xstats_reset(uint8_t dev_id, const uint16_t *ids,
  *   - -ENOTSUP if the device doesn't support selftest.
  *   - other values < 0 on failure.
  */
-__rte_experimental
 int
 rte_regexdev_selftest(uint8_t dev_id);
 
 /**
- * @warning
- * @b EXPERIMENTAL: this API may change without prior notice.
- *
  * Dump internal information about *dev_id* to the FILE* provided in *f*.
  *
  * @param dev_id
@@ -1234,7 +1151,6 @@ rte_regexdev_selftest(uint8_t dev_id);
  * @return
  *   0 on success, negative errno on failure.
  */
-__rte_experimental
 int
 rte_regexdev_dump(uint8_t dev_id, FILE *f);
 
@@ -1428,9 +1344,6 @@ struct rte_regex_ops {
 #include "rte_regexdev_core.h"
 
 /**
- * @warning
- * @b EXPERIMENTAL: this API may change without prior notice.
- *
  * Enqueue a burst of scan request on a RegEx device.
  *
  * The rte_regexdev_enqueue_burst() function is invoked to place
@@ -1464,7 +1377,6 @@ struct rte_regex_ops {
  *   remaining ops at the end of *ops* are not consumed and the caller has
  *   to take care of them.
  */
-__rte_experimental
 static inline uint16_t
 rte_regexdev_enqueue_burst(uint8_t dev_id, uint16_t qp_id,
 			   struct rte_regex_ops **ops, uint16_t nb_ops)
@@ -1483,9 +1395,6 @@ rte_regexdev_enqueue_burst(uint8_t dev_id, uint16_t qp_id,
 }
 
 /**
- * @warning
- * @b EXPERIMENTAL: this API may change without prior notice.
- *
  * Dequeue a burst of scan response from a queue on the RegEx device.
  * The dequeued operation are stored in *rte_regexdev_op* structures
  * whose pointers are supplied in the *ops* array.
@@ -1524,7 +1433,6 @@ rte_regexdev_enqueue_burst(uint8_t dev_id, uint16_t qp_id,
  *   ops at the end of *ops* are not consumed and the caller has to take care
  *   of them.
  */
-__rte_experimental
 static inline uint16_t
 rte_regexdev_dequeue_burst(uint8_t dev_id, uint16_t qp_id,
 			   struct rte_regex_ops **ops, uint16_t nb_ops)
diff --git a/lib/regexdev/version.map b/lib/regexdev/version.map
index 3c6e9fffa1f5..914bd19dfd94 100644
--- a/lib/regexdev/version.map
+++ b/lib/regexdev/version.map
@@ -1,4 +1,4 @@
-EXPERIMENTAL {
+DPDK_24 {
 	global:
 
 	rte_regex_devices;
-- 
2.39.2


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

* [PATCH v3 27/29] node: remove some of the experimental tags
  2023-10-19 16:55 ` [PATCH v3 00/29] Promote experimental " Stephen Hemminger
                     ` (25 preceding siblings ...)
  2023-10-19 16:55   ` [PATCH v3 26/29] regexdev: remove experimental tag Stephen Hemminger
@ 2023-10-19 16:55   ` 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
  28 siblings, 0 replies; 219+ messages in thread
From: Stephen Hemminger @ 2023-10-19 16:55 UTC (permalink / raw)
  To: dev
  Cc: Stephen Hemminger, Thomas Monjalon, Nithin Dabilpuram, Pavan Nikhilesh

The node library has been around long enough that experimental
tag should be removed.  The IPv6 support was added in 23.03
but that is still enough time that it can be marked stable.

The logtype variable should have been marked internal
since it is not intended to be used outside of library.

Signed-off-by: Stephen Hemminger <stephen@networkplumber.org>
---
 MAINTAINERS                 |  2 +-
 lib/node/rte_node_eth_api.h |  1 -
 lib/node/rte_node_ip4_api.h |  2 --
 lib/node/version.map        | 16 ++++++++++++----
 4 files changed, 13 insertions(+), 8 deletions(-)

diff --git a/MAINTAINERS b/MAINTAINERS
index a1d4d57107a3..fff979cb939d 100644
--- a/MAINTAINERS
+++ b/MAINTAINERS
@@ -1735,7 +1735,7 @@ F: app/test/test_graph*
 F: examples/l3fwd-graph/
 F: doc/guides/sample_app_ug/l3_forward_graph.rst
 
-Nodes - EXPERIMENTAL
+Nodes
 M: Nithin Dabilpuram <ndabilpuram@marvell.com>
 M: Pavan Nikhilesh <pbhagavatula@marvell.com>
 F: lib/node/
diff --git a/lib/node/rte_node_eth_api.h b/lib/node/rte_node_eth_api.h
index 40b2021f01f9..eaae50772dbe 100644
--- a/lib/node/rte_node_eth_api.h
+++ b/lib/node/rte_node_eth_api.h
@@ -55,7 +55,6 @@ struct rte_node_ethdev_config {
  * @return
  *   0 on successful initialization, negative otherwise.
  */
-__rte_experimental
 int rte_node_eth_config(struct rte_node_ethdev_config *cfg,
 			uint16_t cnt, uint16_t nb_graphs);
 #ifdef __cplusplus
diff --git a/lib/node/rte_node_ip4_api.h b/lib/node/rte_node_ip4_api.h
index a84dbb3b5499..24f8ec843a27 100644
--- a/lib/node/rte_node_ip4_api.h
+++ b/lib/node/rte_node_ip4_api.h
@@ -82,7 +82,6 @@ struct rte_node_ip4_reassembly_cfg {
  * @return
  *   0 on success, negative otherwise.
  */
-__rte_experimental
 int rte_node_ip4_route_add(uint32_t ip, uint8_t depth, uint16_t next_hop,
 			   enum rte_node_ip4_lookup_next next_node);
 
@@ -101,7 +100,6 @@ int rte_node_ip4_route_add(uint32_t ip, uint8_t depth, uint16_t next_hop,
  * @return
  *   0 on success, negative otherwise.
  */
-__rte_experimental
 int rte_node_ip4_rewrite_add(uint16_t next_hop, uint8_t *rewrite_data,
 			     uint8_t rewrite_len, uint16_t dst_port);
 
diff --git a/lib/node/version.map b/lib/node/version.map
index 3855569228e3..59c72ca76fd3 100644
--- a/lib/node/version.map
+++ b/lib/node/version.map
@@ -1,11 +1,15 @@
-EXPERIMENTAL {
+DPDK_24 {
 	global:
 
-	# added in 20.05
 	rte_node_eth_config;
 	rte_node_ip4_route_add;
 	rte_node_ip4_rewrite_add;
-	rte_node_logtype;
+
+	local: *;
+};
+
+EXPERIMENTAL {
+	global:
 
 	# added in 23.07
 	rte_node_ip6_rewrite_add;
@@ -15,6 +19,10 @@ EXPERIMENTAL {
 	rte_node_ip4_reassembly_configure;
 	rte_node_udp4_dst_port_add;
 	rte_node_udp4_usr_node_add;
+};
 
-	local: *;
+INTERNAL {
+	global:
+
+	rte_node_logtype;
 };
-- 
2.39.2


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

* [PATCH v3 28/29] table: remove experimental from API
  2023-10-19 16:55 ` [PATCH v3 00/29] Promote experimental " Stephen Hemminger
                     ` (26 preceding siblings ...)
  2023-10-19 16:55   ` [PATCH v3 27/29] node: remove some of the experimental tags Stephen Hemminger
@ 2023-10-19 16:55   ` Stephen Hemminger
  2023-10-19 16:55   ` [PATCH v3 29/29] port: make API's stable Stephen Hemminger
  28 siblings, 0 replies; 219+ messages in thread
From: Stephen Hemminger @ 2023-10-19 16:55 UTC (permalink / raw)
  To: dev; +Cc: Stephen Hemminger, Cristian Dumitrescu

Though this library is marked for deprecation in future.
This patch follows the guideline in deprecation notice which
states the experimental API's will become stable.

Signed-off-by: Stephen Hemminger <stephen@networkplumber.org>
---
 doc/guides/rel_notes/deprecation.rst |  2 --
 lib/table/rte_swx_table_learner.h    | 10 ----------
 lib/table/rte_swx_table_selector.h   |  6 ------
 lib/table/rte_table_hash_func.h      |  9 ---------
 lib/table/version.map                | 18 ++----------------
 5 files changed, 2 insertions(+), 43 deletions(-)

diff --git a/doc/guides/rel_notes/deprecation.rst b/doc/guides/rel_notes/deprecation.rst
index 81b93515cbd9..2526040e44f9 100644
--- a/doc/guides/rel_notes/deprecation.rst
+++ b/doc/guides/rel_notes/deprecation.rst
@@ -139,8 +139,6 @@ Deprecation Notices
 
 * table: The table library legacy API (functions rte_table_*)
   will be deprecated and subsequently removed in DPDK 24.11 release.
-  Before this, the new table library API (functions rte_swx_table_*)
-  will gradually transition from experimental to stable status.
 
 * port: The port library legacy API (functions rte_port_*)
   will be deprecated and subsequently removed in DPDK 24.11 release.
diff --git a/lib/table/rte_swx_table_learner.h b/lib/table/rte_swx_table_learner.h
index c5ea015b8dcf..66be5fd7d032 100644
--- a/lib/table/rte_swx_table_learner.h
+++ b/lib/table/rte_swx_table_learner.h
@@ -107,7 +107,6 @@ struct rte_swx_table_learner_params {
  * @return
  *   Table memory footprint in bytes.
  */
-__rte_experimental
 uint64_t
 rte_swx_table_learner_footprint_get(struct rte_swx_table_learner_params *params);
 
@@ -121,7 +120,6 @@ rte_swx_table_learner_footprint_get(struct rte_swx_table_learner_params *params)
  * @return
  *   Table mailbox footprint in bytes.
  */
-__rte_experimental
 uint64_t
 rte_swx_table_learner_mailbox_size_get(void);
 
@@ -135,7 +133,6 @@ rte_swx_table_learner_mailbox_size_get(void);
  * @return
  *   Table handle, on success, or NULL, on error.
  */
-__rte_experimental
 void *
 rte_swx_table_learner_create(struct rte_swx_table_learner_params *params, int numa_node);
 
@@ -152,7 +149,6 @@ rte_swx_table_learner_create(struct rte_swx_table_learner_params *params, int nu
  *   0 on success or the following error codes otherwise:
  *   -EINVAL: Invalid argument(s).
  */
-__rte_experimental
 int
 rte_swx_table_learner_timeout_update(void *table,
 				     uint32_t key_timeout_id,
@@ -206,7 +202,6 @@ rte_swx_table_learner_timeout_update(void *table,
  *   0 when the table lookup operation is not yet completed, and 1 when the table lookup operation
  *   is completed. No other return values are allowed.
  */
-__rte_experimental
 int
 rte_swx_table_learner_lookup(void *table,
 			     void *mailbox,
@@ -239,7 +234,6 @@ rte_swx_table_learner_lookup(void *table,
  * @return
  *   0 on success, 1 or error (table full).
  */
-__rte_experimental
 uint32_t
 rte_swx_table_learner_add(void *table,
 			  void *mailbox,
@@ -261,7 +255,6 @@ rte_swx_table_learner_add(void *table,
  * @param[in] time
  *   Current time measured in CPU clock cycles.
  */
-__rte_experimental
 void
 rte_swx_table_learner_rearm(void *table,
 			    void *mailbox,
@@ -282,7 +275,6 @@ rte_swx_table_learner_rearm(void *table,
  * @param[in] key_timeout_id
  *   Key timeout ID.
  */
-__rte_experimental
 void
 rte_swx_table_learner_rearm_new(void *table,
 				void *mailbox,
@@ -301,7 +293,6 @@ rte_swx_table_learner_rearm_new(void *table,
  * @param[in] mailbox
  *   Mailbox for the current operation.
  */
-__rte_experimental
 void
 rte_swx_table_learner_delete(void *table,
 			     void *mailbox);
@@ -312,7 +303,6 @@ rte_swx_table_learner_delete(void *table,
  * @param[in] table
  *   Table handle.
  */
-__rte_experimental
 void
 rte_swx_table_learner_free(void *table);
 
diff --git a/lib/table/rte_swx_table_selector.h b/lib/table/rte_swx_table_selector.h
index 05863cc90b0a..1f9b93640b1f 100644
--- a/lib/table/rte_swx_table_selector.h
+++ b/lib/table/rte_swx_table_selector.h
@@ -83,7 +83,6 @@ struct rte_swx_table_selector_group {
  * @return
  *   Selector table memory footprint in bytes.
  */
-__rte_experimental
 uint64_t
 rte_swx_table_selector_footprint_get(uint32_t n_groups_max, uint32_t n_members_per_group_max);
 
@@ -97,7 +96,6 @@ rte_swx_table_selector_footprint_get(uint32_t n_groups_max, uint32_t n_members_p
  * @return
  *   Selector table mailbox footprint in bytes.
  */
-__rte_experimental
 uint64_t
 rte_swx_table_selector_mailbox_size_get(void);
 
@@ -115,7 +113,6 @@ rte_swx_table_selector_mailbox_size_get(void);
  * @return
  *   Table handle, on success, or NULL, on error.
  */
-__rte_experimental
 void *
 rte_swx_table_selector_create(struct rte_swx_table_selector_params *params,
 			      struct rte_swx_table_selector_group **groups,
@@ -135,7 +132,6 @@ rte_swx_table_selector_create(struct rte_swx_table_selector_params *params,
  *   -EINVAL: Invalid argument(s);
  *   -ENOSPC: Too many group members.
  */
-__rte_experimental
 int
 rte_swx_table_selector_group_set(void *table,
 				 uint32_t group_id,
@@ -177,7 +173,6 @@ rte_swx_table_selector_group_set(void *table,
  *   0 when the operation is not yet completed, and 1 when the operation is complete. No other
  *   return values are allowed.
  */
-__rte_experimental
 int
 rte_swx_table_selector_select(void *table,
 			      void *mailbox,
@@ -191,7 +186,6 @@ rte_swx_table_selector_select(void *table,
  * @param[in] table
  *   Selector table handle.
  */
-__rte_experimental
 void
 rte_swx_table_selector_free(void *table);
 
diff --git a/lib/table/rte_table_hash_func.h b/lib/table/rte_table_hash_func.h
index a962ec2f68e8..d7013ba6c091 100644
--- a/lib/table/rte_table_hash_func.h
+++ b/lib/table/rte_table_hash_func.h
@@ -14,7 +14,6 @@ extern "C" {
 #include <rte_compat.h>
 #include <rte_common.h>
 
-__rte_experimental
 static inline uint64_t
 rte_crc32_u64_generic(uint64_t crc, uint64_t value)
 {
@@ -53,7 +52,6 @@ rte_crc32_u64(uint64_t crc, uint64_t v)
 
 #endif
 
-__rte_experimental
 static inline uint64_t
 rte_table_hash_crc_key8(void *key, void *mask, __rte_unused uint32_t key_size,
 	uint64_t seed)
@@ -67,7 +65,6 @@ rte_table_hash_crc_key8(void *key, void *mask, __rte_unused uint32_t key_size,
 	return crc0;
 }
 
-__rte_experimental
 static inline uint64_t
 rte_table_hash_crc_key16(void *key, void *mask, __rte_unused uint32_t key_size,
 	uint64_t seed)
@@ -86,7 +83,6 @@ rte_table_hash_crc_key16(void *key, void *mask, __rte_unused uint32_t key_size,
 	return crc0;
 }
 
-__rte_experimental
 static inline uint64_t
 rte_table_hash_crc_key24(void *key, void *mask, __rte_unused uint32_t key_size,
 	uint64_t seed)
@@ -108,7 +104,6 @@ rte_table_hash_crc_key24(void *key, void *mask, __rte_unused uint32_t key_size,
 	return crc0;
 }
 
-__rte_experimental
 static inline uint64_t
 rte_table_hash_crc_key32(void *key, void *mask, __rte_unused uint32_t key_size,
 	uint64_t seed)
@@ -134,7 +129,6 @@ rte_table_hash_crc_key32(void *key, void *mask, __rte_unused uint32_t key_size,
 	return crc0;
 }
 
-__rte_experimental
 static inline uint64_t
 rte_table_hash_crc_key40(void *key, void *mask, __rte_unused uint32_t key_size,
 	uint64_t seed)
@@ -160,7 +154,6 @@ rte_table_hash_crc_key40(void *key, void *mask, __rte_unused uint32_t key_size,
 	return crc0;
 }
 
-__rte_experimental
 static inline uint64_t
 rte_table_hash_crc_key48(void *key, void *mask, __rte_unused uint32_t key_size,
 	uint64_t seed)
@@ -187,7 +180,6 @@ rte_table_hash_crc_key48(void *key, void *mask, __rte_unused uint32_t key_size,
 	return crc0;
 }
 
-__rte_experimental
 static inline uint64_t
 rte_table_hash_crc_key56(void *key, void *mask, __rte_unused uint32_t key_size,
 	uint64_t seed)
@@ -217,7 +209,6 @@ rte_table_hash_crc_key56(void *key, void *mask, __rte_unused uint32_t key_size,
 	return crc0;
 }
 
-__rte_experimental
 static inline uint64_t
 rte_table_hash_crc_key64(void *key, void *mask, __rte_unused uint32_t key_size,
 	uint64_t seed)
diff --git a/lib/table/version.map b/lib/table/version.map
index 6c8991073210..c73bf2fc4ec7 100644
--- a/lib/table/version.map
+++ b/lib/table/version.map
@@ -15,29 +15,15 @@ DPDK_24 {
 	rte_table_lpm_ipv6_ops;
 	rte_table_lpm_ops;
 	rte_table_stub_ops;
-
-	local: *;
-};
-
-EXPERIMENTAL {
-	global:
-
-	# added in 20.11
 	rte_swx_table_exact_match_ops;
 	rte_swx_table_exact_match_unoptimized_ops;
-
-	# added in 21.05
 	rte_swx_table_wildcard_match_ops;
-
-	# added in 21.08
 	rte_swx_table_selector_create;
 	rte_swx_table_selector_footprint_get;
 	rte_swx_table_selector_free;
 	rte_swx_table_selector_group_set;
 	rte_swx_table_selector_mailbox_size_get;
 	rte_swx_table_selector_select;
-
-	# added in 21.11
 	rte_swx_table_learner_add;
 	rte_swx_table_learner_create;
 	rte_swx_table_learner_delete;
@@ -45,9 +31,9 @@ EXPERIMENTAL {
 	rte_swx_table_learner_free;
 	rte_swx_table_learner_lookup;
 	rte_swx_table_learner_mailbox_size_get;
-
-	# added in 22.07
 	rte_swx_table_learner_rearm;
 	rte_swx_table_learner_rearm_new;
 	rte_swx_table_learner_timeout_update;
+
+	local: *;
 };
-- 
2.39.2


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

* [PATCH v3 29/29] port: make API's stable
  2023-10-19 16:55 ` [PATCH v3 00/29] Promote experimental " Stephen Hemminger
                     ` (27 preceding siblings ...)
  2023-10-19 16:55   ` [PATCH v3 28/29] table: remove experimental from API Stephen Hemminger
@ 2023-10-19 16:55   ` Stephen Hemminger
  28 siblings, 0 replies; 219+ messages in thread
From: Stephen Hemminger @ 2023-10-19 16:55 UTC (permalink / raw)
  To: dev; +Cc: Stephen Hemminger, Cristian Dumitrescu

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


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

* RE: [EXT] [PATCH v3 21/29] security: remove experimental flag from macsec
  2023-10-19 16:55   ` [PATCH v3 21/29] security: remove experimental flag from macsec Stephen Hemminger
@ 2023-10-19 18:00     ` Akhil Goyal
  0 siblings, 0 replies; 219+ messages in thread
From: Akhil Goyal @ 2023-10-19 18:00 UTC (permalink / raw)
  To: Stephen Hemminger, dev

> The rte_security API's for macsec were added in 22.11.
> Therefore remove the experimental tag.
> 
> There is also one helper function for setting packet
> metadata that should have been marked internal.
> 
> Signed-off-by: Stephen Hemminger <stephen@networkplumber.org>
Acked-by: Akhil Goyal <gakhil@marvell.com>

However, only one PMD supports it right now. 

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

* [PATCH v4 00/28] Promote many experimental API's to stable
  2023-08-08 17:35 [PATCH 00/20] remove experimental flag from some API's Stephen Hemminger
                   ` (22 preceding siblings ...)
  2023-10-19 16:55 ` [PATCH v3 00/29] Promote experimental " Stephen Hemminger
@ 2023-10-19 19:09 ` 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
                     ` (27 more replies)
  2023-10-20 20:57 ` [PATCH v5 00/26] Promote many experimental API's to stable Stephen Hemminger
                   ` (3 subsequent siblings)
  27 siblings, 28 replies; 219+ messages in thread
From: Stephen Hemminger @ 2023-10-19 19:09 UTC (permalink / raw)
  To: dev; +Cc: Stephen Hemminger

Since 23.11 is an LTS release it is time to remove the experimental
bandaid off many API's. There are about 890 API's marked with experimental
on current main branch. This addresses the easy to remove ones and
gets it down to about 510 places.

The rule is any API that has been in since 22.11 needs to have
experimental removed (or have API deleted). The experimental flag is not a
"get out of ABI stability for free" card

v4 - fix build in security and squash one fixup
v3 - rebase and skip cryptodev

Stephen Hemminger (28):
  bpf: make rte_bpf_dump and rte_bpf_convert stable API's
  cmdline: make experimental API's stable
  ethdev: mark rte_mtr API's as stable
  ethdev: mark rte_tm API's as stable
  pdump: make API's stable
  pcapng: mark API's as stable
  net: remove experimental from functions
  rcu: remove experimental from rte_rcu_qbsr
  lpm: remove experimental
  mbuf: remove experimental from create_extbuf
  hash: remove experimental from toeplitz hash
  timer: remove experimental from rte_timer_next_ticks
  sched: remove experimental
  dmadev: mark API's as not experimental
  meter: remove experimental warning from comments
  power: remove experimental from API's
  kvargs: remove experimental flag
  ip_frag: mark a couple of functions stable
  member: remove experimental tag
  security: remove experimental flag from macsec
  vhost: remove experimental from some API's
  bbdev: remove experimental tag
  ipsec: remove experimental from SA API
  compressdev: remove experimental flag
  regexdev: remove experimental tag
  node: remove some of the experimental tags
  table: remove experimental from API
  port: make API's stable

 MAINTAINERS                           |  10 +-
 doc/guides/rel_notes/deprecation.rst  |   6 --
 lib/bbdev/rte_bbdev.h                 |   4 -
 lib/bbdev/rte_bbdev_op.h              |   2 -
 lib/bbdev/version.map                 |  15 ++-
 lib/bpf/rte_bpf.h                     |   2 -
 lib/bpf/version.map                   |   9 +-
 lib/cmdline/cmdline.h                 |   1 -
 lib/cmdline/cmdline_parse.h           |   4 -
 lib/cmdline/cmdline_rdline.h          |   4 -
 lib/cmdline/version.map               |  26 ++---
 lib/compressdev/rte_comp.h            |   6 --
 lib/compressdev/rte_compressdev.h     |  26 -----
 lib/compressdev/rte_compressdev_pmd.h |   6 --
 lib/compressdev/version.map           |   2 +-
 lib/dmadev/rte_dmadev.h               |  85 ----------------
 lib/dmadev/version.map                |   2 +-
 lib/ethdev/rte_mtr.h                  |  25 +----
 lib/ethdev/rte_tm.h                   |  34 -------
 lib/ethdev/version.map                |  88 ++++++++--------
 lib/hash/rte_thash.h                  |  44 --------
 lib/hash/rte_thash_gfni.h             |   8 --
 lib/hash/rte_thash_x86_gfni.h         |   8 --
 lib/hash/version.map                  |  16 +--
 lib/ip_frag/rte_ip_frag.h             |   2 -
 lib/ip_frag/version.map               |   9 +-
 lib/ipsec/rte_ipsec.h                 |   2 -
 lib/ipsec/version.map                 |   9 +-
 lib/kvargs/rte_kvargs.h               |   4 -
 lib/kvargs/version.map                |   8 +-
 lib/lpm/rte_lpm.h                     |   4 -
 lib/lpm/version.map                   |   7 +-
 lib/mbuf/rte_mbuf.h                   |   1 -
 lib/mbuf/version.map                  |   8 +-
 lib/member/rte_member.h               |  54 ----------
 lib/member/version.map                |  12 +--
 lib/meter/rte_meter.h                 |  12 ---
 lib/net/rte_ip.h                      |  19 ----
 lib/node/rte_node_eth_api.h           |   1 -
 lib/node/rte_node_ip4_api.h           |   2 -
 lib/node/version.map                  |  16 ++-
 lib/pcapng/rte_pcapng.h               |  11 --
 lib/pcapng/version.map                |   6 +-
 lib/pdump/rte_pdump.h                 |  12 ---
 lib/pdump/version.map                 |  11 +-
 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 ++---
 lib/power/rte_power.h                 |   4 -
 lib/power/rte_power_guest_channel.h   |   4 -
 lib/power/rte_power_pmd_mgmt.h        |  40 --------
 lib/power/rte_power_uncore.h          |   5 -
 lib/power/version.map                 |  40 +++-----
 lib/rcu/rte_rcu_qsbr.h                |  20 ----
 lib/rcu/version.map                   |  15 +--
 lib/regexdev/rte_regexdev.h           |  92 -----------------
 lib/regexdev/version.map              |   2 +-
 lib/sched/rte_pie.h                   |   8 --
 lib/sched/rte_sched.h                 |   5 -
 lib/sched/version.map                 |  18 +---
 lib/security/rte_security.h           |  27 -----
 lib/security/version.map              |  18 ++--
 lib/table/rte_swx_table_learner.h     |  10 --
 lib/table/rte_swx_table_selector.h    |   6 --
 lib/table/rte_table_hash_func.h       |   9 --
 lib/table/version.map                 |  18 +---
 lib/timer/rte_timer.h                 |   4 -
 lib/timer/version.map                 |   7 +-
 lib/vhost/rte_vhost.h                 |   5 -
 lib/vhost/rte_vhost_async.h           |  19 ----
 lib/vhost/rte_vhost_crypto.h          |   1 -
 lib/vhost/version.map                 |  51 ++++------
 75 files changed, 219 insertions(+), 1126 deletions(-)

-- 
2.39.2


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

* [PATCH v4 01/28] bpf: make rte_bpf_dump and rte_bpf_convert stable API's
  2023-10-19 19:09 ` [PATCH v4 00/28] Promote many experimental API's to stable Stephen Hemminger
@ 2023-10-19 19:09   ` Stephen Hemminger
  2023-10-19 19:09   ` [PATCH v4 02/28] cmdline: make experimental API's stable Stephen Hemminger
                     ` (26 subsequent siblings)
  27 siblings, 0 replies; 219+ messages in thread
From: Stephen Hemminger @ 2023-10-19 19:09 UTC (permalink / raw)
  To: dev; +Cc: Stephen Hemminger, Konstantin Ananyev

These two API's were introduced in 23.11 and can now be
made not experimental.

Signed-off-by: Stephen Hemminger <stephen@networkplumber.org>
Acked-by: Konstantin Ananyev <konstantin.v.ananyev@yandex.ru>
---
 lib/bpf/rte_bpf.h   | 2 --
 lib/bpf/version.map | 9 ++-------
 2 files changed, 2 insertions(+), 9 deletions(-)

diff --git a/lib/bpf/rte_bpf.h b/lib/bpf/rte_bpf.h
index 4d71120dbd9d..f70d8dacd0d3 100644
--- a/lib/bpf/rte_bpf.h
+++ b/lib/bpf/rte_bpf.h
@@ -209,7 +209,6 @@ rte_bpf_get_jit(const struct rte_bpf *bpf, struct rte_bpf_jit *jit);
  * @param len
  *   Number of BPF instructions to dump.
  */
-__rte_experimental
 void
 rte_bpf_dump(FILE *f, const struct ebpf_insn *buf, uint32_t len);
 
@@ -229,7 +228,6 @@ struct bpf_program;
  *   - ENOMEM - can't reserve enough memory
  *   - ENOTSUP - operation not supported
  */
-__rte_experimental
 struct rte_bpf_prm *
 rte_bpf_convert(const struct bpf_program *prog);
 
diff --git a/lib/bpf/version.map b/lib/bpf/version.map
index c49bf1701f0a..2e957494e9df 100644
--- a/lib/bpf/version.map
+++ b/lib/bpf/version.map
@@ -1,7 +1,9 @@
 DPDK_24 {
 	global:
 
+	rte_bpf_convert;
 	rte_bpf_destroy;
+	rte_bpf_dump;
 	rte_bpf_elf_load;
 	rte_bpf_eth_rx_elf_load;
 	rte_bpf_eth_rx_unload;
@@ -14,10 +16,3 @@ DPDK_24 {
 
 	local: *;
 };
-
-EXPERIMENTAL {
-	global:
-
-	rte_bpf_convert;
-	rte_bpf_dump;
-};
-- 
2.39.2


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

* [PATCH v4 02/28] cmdline: make experimental API's stable
  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   ` Stephen Hemminger
  2023-10-19 19:09   ` [PATCH v4 03/28] ethdev: mark rte_mtr API's as stable Stephen Hemminger
                     ` (25 subsequent siblings)
  27 siblings, 0 replies; 219+ messages in thread
From: Stephen Hemminger @ 2023-10-19 19:09 UTC (permalink / raw)
  To: dev; +Cc: Stephen Hemminger, Bruce Richardson

These API's have all ben around for several releases.

Signed-off-by: Stephen Hemminger <stephen@networkplumber.org>
Acked-by: Bruce Richardson <bruce.richardson@intel.com>
---
 lib/cmdline/cmdline.h        |  1 -
 lib/cmdline/cmdline_parse.h  |  4 ----
 lib/cmdline/cmdline_rdline.h |  4 ----
 lib/cmdline/version.map      | 26 ++++++++------------------
 4 files changed, 8 insertions(+), 27 deletions(-)

diff --git a/lib/cmdline/cmdline.h b/lib/cmdline/cmdline.h
index 992c84591456..dd41e1054378 100644
--- a/lib/cmdline/cmdline.h
+++ b/lib/cmdline/cmdline.h
@@ -39,7 +39,6 @@ void cmdline_printf(const struct cmdline *cl, const char *fmt, ...)
 int cmdline_in(struct cmdline *cl, const char *buf, int size);
 int cmdline_write_char(struct rdline *rdl, char c);
 
-__rte_experimental
 struct rdline *
 cmdline_get_rdline(struct cmdline *cl);
 
diff --git a/lib/cmdline/cmdline_parse.h b/lib/cmdline/cmdline_parse.h
index a852ac411c59..41b4db1f76f9 100644
--- a/lib/cmdline/cmdline_parse.h
+++ b/lib/cmdline/cmdline_parse.h
@@ -155,9 +155,6 @@ typedef cmdline_parse_inst_t *cmdline_parse_ctx_t;
 int cmdline_parse(struct cmdline *cl, const char *buf);
 
 /**
- * @warning
- * @b EXPERIMENTAL: this API may change without prior notice
- *
  * Try to parse a buffer according to the specified context, but do not
  * perform any function calls if parse is successful.
  *
@@ -166,7 +163,6 @@ int cmdline_parse(struct cmdline *cl, const char *buf);
  * CMDLINE_PARSE_BAD_ARGS on error and returns the parsed line length (>=0)
  * on successful parse.
  */
-__rte_experimental
 int cmdline_parse_check(struct cmdline *cl, const char *buf);
 
 /**
diff --git a/lib/cmdline/cmdline_rdline.h b/lib/cmdline/cmdline_rdline.h
index 1b4cc7ce5773..c6bb6bbbb36a 100644
--- a/lib/cmdline/cmdline_rdline.h
+++ b/lib/cmdline/cmdline_rdline.h
@@ -58,7 +58,6 @@ typedef int (rdline_complete_t)(struct rdline *rdl, const char *buf,
  *
  * \return New rdline object on success, NULL on failure.
  */
-__rte_experimental
 struct rdline *rdline_new(rdline_write_char_t *write_char,
 			  rdline_validate_t *validate,
 			  rdline_complete_t *complete,
@@ -70,7 +69,6 @@ struct rdline *rdline_new(rdline_write_char_t *write_char,
  * \param rdl A pointer to an initialized struct rdline.
  *            If NULL, this function is a no-op.
  */
-__rte_experimental
 void rdline_free(struct rdline *rdl);
 
 /**
@@ -163,13 +161,11 @@ char *rdline_get_history_item(struct rdline *rdl, unsigned int i);
 /**
  * Get maximum history buffer size.
  */
-__rte_experimental
 size_t rdline_get_history_buffer_size(struct rdline *rdl);
 
 /**
  * Get the opaque pointer supplied on struct rdline creation.
  */
-__rte_experimental
 void *rdline_get_opaque(struct rdline *rdl);
 
 #ifdef __cplusplus
diff --git a/lib/cmdline/version.map b/lib/cmdline/version.map
index 97166789016c..88174e39bcb7 100644
--- a/lib/cmdline/version.map
+++ b/lib/cmdline/version.map
@@ -30,11 +30,13 @@ DPDK_24 {
 	cmdline_get_help_num;
 	cmdline_get_help_portlist;
 	cmdline_get_help_string;
+	cmdline_get_rdline;
 	cmdline_in;
 	cmdline_interact;
 	cmdline_isendoftoken;
 	cmdline_new;
 	cmdline_parse;
+	cmdline_parse_check;
 	cmdline_parse_etheraddr;
 	cmdline_parse_ipaddr;
 	cmdline_parse_num;
@@ -51,37 +53,25 @@ DPDK_24 {
 	cmdline_token_portlist_ops;
 	cmdline_token_string_ops;
 	cmdline_write_char;
+
 	rdline_add_history;
 	rdline_char_in;
 	rdline_clear_history;
+	rdline_free;
 	rdline_get_buffer;
+	rdline_get_history_buffer_size;
 	rdline_get_history_item;
+	rdline_get_opaque;
+	rdline_new;
 	rdline_newline;
 	rdline_quit;
 	rdline_redisplay;
 	rdline_reset;
 	rdline_restart;
 	rdline_stop;
+
 	vt100_init;
 	vt100_parser;
 
 	local: *;
 };
-
-EXPERIMENTAL {
-	global:
-
-	# added in 20.11
-	cmdline_get_rdline;
-
-	# added in 21.11
-	rdline_new;
-	rdline_free;
-	rdline_get_history_buffer_size;
-	rdline_get_opaque;
-
-	# added in 22.07
-	cmdline_parse_check;
-
-	local: *;
-};
-- 
2.39.2


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

* [PATCH v4 03/28] ethdev: mark rte_mtr API's as stable
  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   ` Stephen Hemminger
  2023-10-20 10:18     ` Dumitrescu, Cristian
  2023-10-19 19:09   ` [PATCH v4 04/28] ethdev: mark rte_tm " Stephen Hemminger
                     ` (24 subsequent siblings)
  27 siblings, 1 reply; 219+ messages in thread
From: Stephen Hemminger @ 2023-10-19 19:09 UTC (permalink / raw)
  To: dev
  Cc: Stephen Hemminger, Thomas Monjalon, Cristian Dumitrescu,
	Ferruh Yigit, Andrew Rybchenko

These haven't changed in a while, time has come to make them
not experimental.

Signed-off-by: Stephen Hemminger <stephen@networkplumber.org>
---
 MAINTAINERS            |  2 +-
 lib/ethdev/rte_mtr.h   | 25 +------------------------
 lib/ethdev/version.map | 34 ++++++++++++++++------------------
 3 files changed, 18 insertions(+), 43 deletions(-)

diff --git a/MAINTAINERS b/MAINTAINERS
index 4083658697fb..ea03d35dbe5a 100644
--- a/MAINTAINERS
+++ b/MAINTAINERS
@@ -427,7 +427,7 @@ T: git://dpdk.org/next/dpdk-next-net
 F: lib/ethdev/rte_tm*
 F: app/test-pmd/cmdline_tm.*
 
-Traffic Metering and Policing API - EXPERIMENTAL
+Traffic Metering and Policing API
 M: Cristian Dumitrescu <cristian.dumitrescu@intel.com>
 T: git://dpdk.org/next/dpdk-next-net
 F: lib/ethdev/rte_mtr*
diff --git a/lib/ethdev/rte_mtr.h b/lib/ethdev/rte_mtr.h
index 30e6c6b12e6e..9a20e974bdad 100644
--- a/lib/ethdev/rte_mtr.h
+++ b/lib/ethdev/rte_mtr.h
@@ -41,10 +41,8 @@
  *    A) Whether an MTR object is private to a flow or potentially shared by
  *       several flows has to be specified at creation time.
  *    B) Several meter actions can be potentially registered for the same flow.
- *
- * @warning
- * @b EXPERIMENTAL: this API may change without prior notice
  */
+
 #include <stdint.h>
 #include <rte_compat.h>
 #include <rte_common.h>
@@ -569,7 +567,6 @@ struct rte_mtr_error {
  * @return
  *   0 on success, non-zero error code otherwise.
  */
-__rte_experimental
 int
 rte_mtr_capabilities_get(uint16_t port_id,
 	struct rte_mtr_capabilities *cap,
@@ -593,7 +590,6 @@ rte_mtr_capabilities_get(uint16_t port_id,
  * @return
  *   0 on success, non-zero error code otherwise.
  */
-__rte_experimental
 int
 rte_mtr_meter_profile_add(uint16_t port_id,
 	uint32_t meter_profile_id,
@@ -615,7 +611,6 @@ rte_mtr_meter_profile_add(uint16_t port_id,
  * @return
  *   0 on success, non-zero error code otherwise.
  */
-__rte_experimental
 int
 rte_mtr_meter_profile_delete(uint16_t port_id,
 	uint32_t meter_profile_id,
@@ -635,7 +630,6 @@ rte_mtr_meter_profile_delete(uint16_t port_id,
  * @return
  *   A valid handle in case of success, NULL otherwise.
  */
-__rte_experimental
 struct rte_flow_meter_profile *
 rte_mtr_meter_profile_get(uint16_t port_id,
 	uint32_t meter_profile_id,
@@ -663,7 +657,6 @@ rte_mtr_meter_profile_get(uint16_t port_id,
  * @return
  *   0 on success, non-zero error code otherwise.
  */
-__rte_experimental
 int
 rte_mtr_meter_policy_validate(uint16_t port_id,
 	struct rte_mtr_meter_policy_params *policy,
@@ -690,7 +683,6 @@ rte_mtr_meter_policy_validate(uint16_t port_id,
  * @return
  *   0 on success, non-zero error code otherwise.
  */
-__rte_experimental
 int
 rte_mtr_meter_policy_add(uint16_t port_id,
 	uint32_t policy_id,
@@ -711,7 +703,6 @@ rte_mtr_meter_policy_add(uint16_t port_id,
  * @return
  *   A valid handle in case of success, NULL otherwise.
  */
-__rte_experimental
 struct rte_flow_meter_policy *
 rte_mtr_meter_policy_get(uint16_t port_id,
 	uint32_t policy_id,
@@ -793,7 +784,6 @@ struct rte_mtr_meter_policy_params policy = \
  * @return
  *   0 on success, non-zero error code otherwise.
  */
-__rte_experimental
 int
 rte_mtr_meter_policy_delete(uint16_t port_id,
 	uint32_t policy_id,
@@ -822,7 +812,6 @@ rte_mtr_meter_policy_delete(uint16_t port_id,
  *
  * @see enum rte_flow_action_type::RTE_FLOW_ACTION_TYPE_METER
  */
-__rte_experimental
 int
 rte_mtr_create(uint16_t port_id,
 	uint32_t mtr_id,
@@ -846,7 +835,6 @@ rte_mtr_create(uint16_t port_id,
  * @return
  *   0 on success, non-zero error code otherwise.
  */
-__rte_experimental
 int
 rte_mtr_destroy(uint16_t port_id,
 	uint32_t mtr_id,
@@ -874,7 +862,6 @@ rte_mtr_destroy(uint16_t port_id,
  * @return
  *   0 on success, non-zero error code otherwise.
  */
-__rte_experimental
 int
 rte_mtr_meter_disable(uint16_t port_id,
 	uint32_t mtr_id,
@@ -896,7 +883,6 @@ rte_mtr_meter_disable(uint16_t port_id,
  * @return
  *   0 on success, non-zero error code otherwise.
  */
-__rte_experimental
 int
 rte_mtr_meter_enable(uint16_t port_id,
 	uint32_t mtr_id,
@@ -916,7 +902,6 @@ rte_mtr_meter_enable(uint16_t port_id,
  * @return
  *   0 on success, non-zero error code otherwise.
  */
-__rte_experimental
 int
 rte_mtr_meter_profile_update(uint16_t port_id,
 	uint32_t mtr_id,
@@ -937,7 +922,6 @@ rte_mtr_meter_profile_update(uint16_t port_id,
  * @return
  *   0 on success, non-zero error code otherwise.
  */
-__rte_experimental
 int
 rte_mtr_meter_policy_update(uint16_t port_id,
 	uint32_t mtr_id,
@@ -964,7 +948,6 @@ rte_mtr_meter_policy_update(uint16_t port_id,
  * @return
  *   0 on success, non-zero error code otherwise.
  */
-__rte_experimental
 int
 rte_mtr_meter_dscp_table_update(uint16_t port_id,
 	uint32_t mtr_id, enum rte_mtr_color_in_protocol proto,
@@ -991,7 +974,6 @@ rte_mtr_meter_dscp_table_update(uint16_t port_id,
  * @return
  *   0 on success, non-zero error code otherwise.
  */
-__rte_experimental
 int
 rte_mtr_meter_vlan_table_update(uint16_t port_id, uint32_t mtr_id,
 				enum rte_mtr_color_in_protocol proto,
@@ -1022,7 +1004,6 @@ rte_mtr_meter_vlan_table_update(uint16_t port_id, uint32_t mtr_id,
  * @return
  *   0 on success, non-zero error code otherwise.
  */
-__rte_experimental
 int
 rte_mtr_color_in_protocol_set(uint16_t port_id, uint32_t mtr_id,
 	enum rte_mtr_color_in_protocol proto, uint32_t priority,
@@ -1042,7 +1023,6 @@ rte_mtr_color_in_protocol_set(uint16_t port_id, uint32_t mtr_id,
  * @return
  *   0 on success, non-zero error code otherwise.
  */
-__rte_experimental
 int
 rte_mtr_color_in_protocol_get(uint16_t port_id, uint32_t mtr_id,
 	uint64_t *proto_mask,
@@ -1064,7 +1044,6 @@ rte_mtr_color_in_protocol_get(uint16_t port_id, uint32_t mtr_id,
  * @return
  *   0 on success, non-zero error code otherwise.
  */
-__rte_experimental
 int
 rte_mtr_color_in_protocol_priority_get(uint16_t port_id, uint32_t mtr_id,
 	enum rte_mtr_color_in_protocol proto, uint32_t *priority,
@@ -1088,7 +1067,6 @@ rte_mtr_color_in_protocol_priority_get(uint16_t port_id, uint32_t mtr_id,
  *
  * @see enum rte_mtr_stats_type
  */
-__rte_experimental
 int
 rte_mtr_stats_update(uint16_t port_id,
 	uint32_t mtr_id,
@@ -1120,7 +1098,6 @@ rte_mtr_stats_update(uint16_t port_id,
  *
  * @see enum rte_mtr_stats_type
  */
-__rte_experimental
 int
 rte_mtr_stats_read(uint16_t port_id,
 	uint32_t mtr_id,
diff --git a/lib/ethdev/version.map b/lib/ethdev/version.map
index 919ba5b8e65b..3611909eb85a 100644
--- a/lib/ethdev/version.map
+++ b/lib/ethdev/version.map
@@ -135,26 +135,34 @@ DPDK_24 {
 	rte_flow_pick_transfer_proxy;
 	rte_flow_query;
 	rte_flow_validate;
-
-	local: *;
-};
-
-EXPERIMENTAL {
-	global:
-
-	# added in 17.11
 	rte_mtr_capabilities_get;
+	rte_mtr_color_in_protocol_get;
+	rte_mtr_color_in_protocol_priority_get;
+	rte_mtr_color_in_protocol_set;
 	rte_mtr_create;
 	rte_mtr_destroy;
 	rte_mtr_meter_disable;
 	rte_mtr_meter_dscp_table_update;
 	rte_mtr_meter_enable;
+	rte_mtr_meter_policy_add;
+	rte_mtr_meter_policy_delete;
+	rte_mtr_meter_policy_get;
+	rte_mtr_meter_policy_update;
+	rte_mtr_meter_policy_validate;
 	rte_mtr_meter_profile_add;
 	rte_mtr_meter_profile_delete;
+	rte_mtr_meter_profile_get;
 	rte_mtr_meter_profile_update;
+	rte_mtr_meter_vlan_table_update;
 	rte_mtr_stats_read;
 	rte_mtr_stats_update;
 
+	local: *;
+};
+
+EXPERIMENTAL {
+	global:
+
 	# added in 18.05
 	rte_eth_dev_get_module_eeprom;
 	rte_eth_dev_get_module_info;
@@ -237,10 +245,6 @@ EXPERIMENTAL {
 	rte_flow_action_handle_destroy;
 	rte_flow_action_handle_update;
 	rte_flow_action_handle_query;
-	rte_mtr_meter_policy_add;
-	rte_mtr_meter_policy_delete;
-	rte_mtr_meter_policy_update;
-	rte_mtr_meter_policy_validate;
 
 	# added in 21.11
 	rte_eth_dev_capability_name;
@@ -275,10 +279,6 @@ EXPERIMENTAL {
 	# added in 22.07
 	rte_eth_rx_avail_thresh_query;
 	rte_eth_rx_avail_thresh_set;
-	rte_mtr_color_in_protocol_get;
-	rte_mtr_color_in_protocol_priority_get;
-	rte_mtr_color_in_protocol_set;
-	rte_mtr_meter_vlan_table_update;
 
 	# added in 22.11
 	rte_eth_buffer_split_get_supported_hdr_ptypes;
@@ -290,8 +290,6 @@ EXPERIMENTAL {
 	rte_eth_tx_descriptor_dump;
 	rte_flow_async_action_handle_query;
 	rte_flow_get_q_aged_flows;
-	rte_mtr_meter_policy_get;
-	rte_mtr_meter_profile_get;
 
 	# added in 23.03
 	rte_eth_dev_count_aggr_ports;
-- 
2.39.2


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

* [PATCH v4 04/28] ethdev: mark rte_tm API's as stable
  2023-10-19 19:09 ` [PATCH v4 00/28] Promote many experimental API's to stable Stephen Hemminger
                     ` (2 preceding siblings ...)
  2023-10-19 19:09   ` [PATCH v4 03/28] ethdev: mark rte_mtr API's as stable Stephen Hemminger
@ 2023-10-19 19:09   ` 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
                     ` (23 subsequent siblings)
  27 siblings, 1 reply; 219+ messages in thread
From: Stephen Hemminger @ 2023-10-19 19:09 UTC (permalink / raw)
  To: dev
  Cc: Stephen Hemminger, Thomas Monjalon, Cristian Dumitrescu,
	Ferruh Yigit, Andrew Rybchenko

These API's have been around since 20.11, mark them as not
experimental.

Signed-off-by: Stephen Hemminger <stephen@networkplumber.org>
---
 MAINTAINERS            |  2 +-
 lib/ethdev/rte_tm.h    | 34 -----------------------
 lib/ethdev/version.map | 62 ++++++++++++++++++++----------------------
 3 files changed, 31 insertions(+), 67 deletions(-)

diff --git a/MAINTAINERS b/MAINTAINERS
index ea03d35dbe5a..f77597571633 100644
--- a/MAINTAINERS
+++ b/MAINTAINERS
@@ -421,7 +421,7 @@ F: app/test-pmd/cmdline_flow.c
 F: doc/guides/prog_guide/rte_flow.rst
 F: lib/ethdev/rte_flow*
 
-Traffic Management API - EXPERIMENTAL
+Traffic Management API
 M: Cristian Dumitrescu <cristian.dumitrescu@intel.com>
 T: git://dpdk.org/next/dpdk-next-net
 F: lib/ethdev/rte_tm*
diff --git a/lib/ethdev/rte_tm.h b/lib/ethdev/rte_tm.h
index 08c5fafecdf3..799b92aadaa9 100644
--- a/lib/ethdev/rte_tm.h
+++ b/lib/ethdev/rte_tm.h
@@ -14,10 +14,6 @@
  * This interface provides the ability to configure the traffic manager in a
  * generic way. It includes features such as: hierarchical scheduling,
  * traffic shaping, congestion management, packet marking, etc.
- *
- * @warning
- * @b EXPERIMENTAL:
- * All functions in this file may be changed or removed without prior notice.
  */
 
 #include <stdint.h>
@@ -1242,7 +1238,6 @@ struct rte_tm_error {
  * @return
  *   0 on success, non-zero error code otherwise.
  */
-__rte_experimental
 int
 rte_tm_get_number_of_leaf_nodes(uint16_t port_id,
 	uint32_t *n_leaf_nodes,
@@ -1267,7 +1262,6 @@ rte_tm_get_number_of_leaf_nodes(uint16_t port_id,
  * @return
  *   0 on success, non-zero error code otherwise.
  */
-__rte_experimental
 int
 rte_tm_node_type_get(uint16_t port_id,
 	uint32_t node_id,
@@ -1286,7 +1280,6 @@ rte_tm_node_type_get(uint16_t port_id,
  * @return
  *   0 on success, non-zero error code otherwise.
  */
-__rte_experimental
 int
 rte_tm_capabilities_get(uint16_t port_id,
 	struct rte_tm_capabilities *cap,
@@ -1307,7 +1300,6 @@ rte_tm_capabilities_get(uint16_t port_id,
  * @return
  *   0 on success, non-zero error code otherwise.
  */
-__rte_experimental
 int
 rte_tm_level_capabilities_get(uint16_t port_id,
 	uint32_t level_id,
@@ -1328,7 +1320,6 @@ rte_tm_level_capabilities_get(uint16_t port_id,
  * @return
  *   0 on success, non-zero error code otherwise.
  */
-__rte_experimental
 int
 rte_tm_node_capabilities_get(uint16_t port_id,
 	uint32_t node_id,
@@ -1354,7 +1345,6 @@ rte_tm_node_capabilities_get(uint16_t port_id,
  *
  * @see struct rte_tm_capabilities::cman_wred_context_n_max
  */
-__rte_experimental
 int
 rte_tm_wred_profile_add(uint16_t port_id,
 	uint32_t wred_profile_id,
@@ -1378,7 +1368,6 @@ rte_tm_wred_profile_add(uint16_t port_id,
  *
  * @see struct rte_tm_capabilities::cman_wred_context_n_max
  */
-__rte_experimental
 int
 rte_tm_wred_profile_delete(uint16_t port_id,
 	uint32_t wred_profile_id,
@@ -1410,7 +1399,6 @@ rte_tm_wred_profile_delete(uint16_t port_id,
  *
  * @see struct rte_tm_capabilities::cman_wred_context_shared_n_max
  */
-__rte_experimental
 int
 rte_tm_shared_wred_context_add_update(uint16_t port_id,
 	uint32_t shared_wred_context_id,
@@ -1435,7 +1423,6 @@ rte_tm_shared_wred_context_add_update(uint16_t port_id,
  *
  * @see struct rte_tm_capabilities::cman_wred_context_shared_n_max
  */
-__rte_experimental
 int
 rte_tm_shared_wred_context_delete(uint16_t port_id,
 	uint32_t shared_wred_context_id,
@@ -1460,7 +1447,6 @@ rte_tm_shared_wred_context_delete(uint16_t port_id,
  *
  * @see struct rte_tm_capabilities::shaper_n_max
  */
-__rte_experimental
 int
 rte_tm_shaper_profile_add(uint16_t port_id,
 	uint32_t shaper_profile_id,
@@ -1484,7 +1470,6 @@ rte_tm_shaper_profile_add(uint16_t port_id,
  *
  * @see struct rte_tm_capabilities::shaper_n_max
  */
-__rte_experimental
 int
 rte_tm_shaper_profile_delete(uint16_t port_id,
 	uint32_t shaper_profile_id,
@@ -1514,7 +1499,6 @@ rte_tm_shaper_profile_delete(uint16_t port_id,
  *
  * @see struct rte_tm_capabilities::shaper_shared_n_max
  */
-__rte_experimental
 int
 rte_tm_shared_shaper_add_update(uint16_t port_id,
 	uint32_t shared_shaper_id,
@@ -1538,7 +1522,6 @@ rte_tm_shared_shaper_add_update(uint16_t port_id,
  *
  * @see struct rte_tm_capabilities::shaper_shared_n_max
  */
-__rte_experimental
 int
 rte_tm_shared_shaper_delete(uint16_t port_id,
 	uint32_t shared_shaper_id,
@@ -1607,7 +1590,6 @@ rte_tm_shared_shaper_delete(uint16_t port_id,
  * @see RTE_TM_NODE_LEVEL_ID_ANY
  * @see struct rte_tm_capabilities
  */
-__rte_experimental
 int
 rte_tm_node_add(uint16_t port_id,
 	uint32_t node_id,
@@ -1641,7 +1623,6 @@ rte_tm_node_add(uint16_t port_id,
  *
  * @see RTE_TM_UPDATE_NODE_ADD_DELETE
  */
-__rte_experimental
 int
 rte_tm_node_delete(uint16_t port_id,
 	uint32_t node_id,
@@ -1666,7 +1647,6 @@ rte_tm_node_delete(uint16_t port_id,
  * @see rte_tm_node_resume()
  * @see RTE_TM_UPDATE_NODE_SUSPEND_RESUME
  */
-__rte_experimental
 int
 rte_tm_node_suspend(uint16_t port_id,
 	uint32_t node_id,
@@ -1690,7 +1670,6 @@ rte_tm_node_suspend(uint16_t port_id,
  * @see rte_tm_node_suspend()
  * @see RTE_TM_UPDATE_NODE_SUSPEND_RESUME
  */
-__rte_experimental
 int
 rte_tm_node_resume(uint16_t port_id,
 	uint32_t node_id,
@@ -1732,7 +1711,6 @@ rte_tm_node_resume(uint16_t port_id,
  * @see rte_tm_node_add()
  * @see rte_tm_node_delete()
  */
-__rte_experimental
 int
 rte_tm_hierarchy_commit(uint16_t port_id,
 	int clear_on_fail,
@@ -1773,7 +1751,6 @@ rte_tm_hierarchy_commit(uint16_t port_id,
  * @see RTE_TM_UPDATE_NODE_PARENT_KEEP_LEVEL
  * @see RTE_TM_UPDATE_NODE_PARENT_CHANGE_LEVEL
  */
-__rte_experimental
 int
 rte_tm_node_parent_update(uint16_t port_id,
 	uint32_t node_id,
@@ -1803,7 +1780,6 @@ rte_tm_node_parent_update(uint16_t port_id,
  *
  * @see struct rte_tm_capabilities::shaper_private_n_max
  */
-__rte_experimental
 int
 rte_tm_node_shaper_update(uint16_t port_id,
 	uint32_t node_id,
@@ -1831,7 +1807,6 @@ rte_tm_node_shaper_update(uint16_t port_id,
  *
  * @see struct rte_tm_capabilities::shaper_shared_n_max
  */
-__rte_experimental
 int
 rte_tm_node_shared_shaper_update(uint16_t port_id,
 	uint32_t node_id,
@@ -1859,7 +1834,6 @@ rte_tm_node_shared_shaper_update(uint16_t port_id,
  * @see enum rte_tm_stats_type
  * @see RTE_TM_UPDATE_NODE_STATS
  */
-__rte_experimental
 int
 rte_tm_node_stats_update(uint16_t port_id,
 	uint32_t node_id,
@@ -1888,7 +1862,6 @@ rte_tm_node_stats_update(uint16_t port_id,
  * @see RTE_TM_UPDATE_NODE_WFQ_WEIGHT_MODE
  * @see RTE_TM_UPDATE_NODE_N_SP_PRIORITIES
  */
-__rte_experimental
 int
 rte_tm_node_wfq_weight_mode_update(uint16_t port_id,
 	uint32_t node_id,
@@ -1912,7 +1885,6 @@ rte_tm_node_wfq_weight_mode_update(uint16_t port_id,
  *
  * @see RTE_TM_UPDATE_NODE_CMAN
  */
-__rte_experimental
 int
 rte_tm_node_cman_update(uint16_t port_id,
 	uint32_t node_id,
@@ -1937,7 +1909,6 @@ rte_tm_node_cman_update(uint16_t port_id,
  *
  * @see struct rte_tm_capabilities::cman_wred_context_private_n_max
  */
-__rte_experimental
 int
 rte_tm_node_wred_context_update(uint16_t port_id,
 	uint32_t node_id,
@@ -1963,7 +1934,6 @@ rte_tm_node_wred_context_update(uint16_t port_id,
  *
  * @see struct rte_tm_capabilities::cman_wred_context_shared_n_max
  */
-__rte_experimental
 int
 rte_tm_node_shared_wred_context_update(uint16_t port_id,
 	uint32_t node_id,
@@ -1996,7 +1966,6 @@ rte_tm_node_shared_wred_context_update(uint16_t port_id,
  *
  * @see enum rte_tm_stats_type
  */
-__rte_experimental
 int
 rte_tm_node_stats_read(uint16_t port_id,
 	uint32_t node_id,
@@ -2034,7 +2003,6 @@ rte_tm_node_stats_read(uint16_t port_id,
  *
  * @see struct rte_tm_capabilities::mark_vlan_dei_supported
  */
-__rte_experimental
 int
 rte_tm_mark_vlan_dei(uint16_t port_id,
 	int mark_green,
@@ -2085,7 +2053,6 @@ rte_tm_mark_vlan_dei(uint16_t port_id,
  * @see struct rte_tm_capabilities::mark_ip_ecn_tcp_supported
  * @see struct rte_tm_capabilities::mark_ip_ecn_sctp_supported
  */
-__rte_experimental
 int
 rte_tm_mark_ip_ecn(uint16_t port_id,
 	int mark_green,
@@ -2134,7 +2101,6 @@ rte_tm_mark_ip_ecn(uint16_t port_id,
  *
  * @see struct rte_tm_capabilities::mark_ip_dscp_supported
  */
-__rte_experimental
 int
 rte_tm_mark_ip_dscp(uint16_t port_id,
 	int mark_green,
diff --git a/lib/ethdev/version.map b/lib/ethdev/version.map
index 3611909eb85a..a976f06483b2 100644
--- a/lib/ethdev/version.map
+++ b/lib/ethdev/version.map
@@ -156,6 +156,36 @@ DPDK_24 {
 	rte_mtr_meter_vlan_table_update;
 	rte_mtr_stats_read;
 	rte_mtr_stats_update;
+	rte_tm_capabilities_get;
+	rte_tm_get_number_of_leaf_nodes;
+	rte_tm_hierarchy_commit;
+	rte_tm_level_capabilities_get;
+	rte_tm_mark_ip_dscp;
+	rte_tm_mark_ip_ecn;
+	rte_tm_mark_vlan_dei;
+	rte_tm_node_add;
+	rte_tm_node_capabilities_get;
+	rte_tm_node_cman_update;
+	rte_tm_node_delete;
+	rte_tm_node_parent_update;
+	rte_tm_node_resume;
+	rte_tm_node_shaper_update;
+	rte_tm_node_shared_shaper_update;
+	rte_tm_node_shared_wred_context_update;
+	rte_tm_node_stats_read;
+	rte_tm_node_stats_update;
+	rte_tm_node_suspend;
+	rte_tm_node_type_get;
+	rte_tm_node_wfq_weight_mode_update;
+	rte_tm_node_wred_context_update;
+	rte_tm_shaper_profile_add;
+	rte_tm_shaper_profile_delete;
+	rte_tm_shared_shaper_add_update;
+	rte_tm_shared_shaper_delete;
+	rte_tm_shared_wred_context_add_update;
+	rte_tm_shared_wred_context_delete;
+	rte_tm_wred_profile_add;
+	rte_tm_wred_profile_delete;
 
 	local: *;
 };
@@ -189,38 +219,6 @@ EXPERIMENTAL {
 	__rte_ethdev_trace_tx_burst;
 	rte_flow_get_aged_flows;
 
-	# Marked as experimental in 20.11
-	rte_tm_capabilities_get;
-	rte_tm_get_number_of_leaf_nodes;
-	rte_tm_hierarchy_commit;
-	rte_tm_level_capabilities_get;
-	rte_tm_mark_ip_dscp;
-	rte_tm_mark_ip_ecn;
-	rte_tm_mark_vlan_dei;
-	rte_tm_node_add;
-	rte_tm_node_capabilities_get;
-	rte_tm_node_cman_update;
-	rte_tm_node_delete;
-	rte_tm_node_parent_update;
-	rte_tm_node_resume;
-	rte_tm_node_shaper_update;
-	rte_tm_node_shared_shaper_update;
-	rte_tm_node_shared_wred_context_update;
-	rte_tm_node_stats_read;
-	rte_tm_node_stats_update;
-	rte_tm_node_suspend;
-	rte_tm_node_type_get;
-	rte_tm_node_wfq_weight_mode_update;
-	rte_tm_node_wred_context_update;
-	rte_tm_shaper_profile_add;
-	rte_tm_shaper_profile_delete;
-	rte_tm_shared_shaper_add_update;
-	rte_tm_shared_shaper_delete;
-	rte_tm_shared_wred_context_add_update;
-	rte_tm_shared_wred_context_delete;
-	rte_tm_wred_profile_add;
-	rte_tm_wred_profile_delete;
-
 	# added in 20.11
 	rte_eth_hairpin_bind;
 	rte_eth_hairpin_get_peer_ports;
-- 
2.39.2


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

* [PATCH v4 05/28] pdump: make API's stable
  2023-10-19 19:09 ` [PATCH v4 00/28] Promote many experimental API's to stable Stephen Hemminger
                     ` (3 preceding siblings ...)
  2023-10-19 19:09   ` [PATCH v4 04/28] ethdev: mark rte_tm " Stephen Hemminger
@ 2023-10-19 19:09   ` Stephen Hemminger
  2023-10-19 19:09   ` [PATCH v4 06/28] pcapng: mark API's as stable Stephen Hemminger
                     ` (22 subsequent siblings)
  27 siblings, 0 replies; 219+ messages in thread
From: Stephen Hemminger @ 2023-10-19 19:09 UTC (permalink / raw)
  To: dev; +Cc: Stephen Hemminger, Reshma Pattan

The filtering API's were added in 23.11 and can now be marked
as not experimental.

Signed-off-by: Stephen Hemminger <stephen@networkplumber.org>
---
 lib/pdump/rte_pdump.h | 12 ------------
 lib/pdump/version.map | 11 +++--------
 2 files changed, 3 insertions(+), 20 deletions(-)

diff --git a/lib/pdump/rte_pdump.h b/lib/pdump/rte_pdump.h
index b1a391830c1d..414931a12cce 100644
--- a/lib/pdump/rte_pdump.h
+++ b/lib/pdump/rte_pdump.h
@@ -83,9 +83,6 @@ rte_pdump_enable(uint16_t port, uint16_t queue, uint32_t flags,
 		void *filter);
 
 /**
- * @warning
- * @b EXPERIMENTAL: this API may change, or be removed, without prior notice
- *
  * Enables packet capturing on given port and queue with filtering.
  *
  * @param port_id
@@ -109,7 +106,6 @@ rte_pdump_enable(uint16_t port, uint16_t queue, uint32_t flags,
  * @return
  *    0 on success, -1 on error, rte_errno is set accordingly.
  */
-__rte_experimental
 int
 rte_pdump_enable_bpf(uint16_t port_id, uint16_t queue,
 		     uint32_t flags, uint32_t snaplen,
@@ -169,9 +165,6 @@ rte_pdump_enable_by_deviceid(char *device_id, uint16_t queue,
 				void *filter);
 
 /**
- * @warning
- * @b EXPERIMENTAL: this API may change, or be removed, without prior notice
- *
  * Enables packet capturing on given device id and queue with filtering.
  * device_id can be name or pci address of device.
  *
@@ -196,7 +189,6 @@ rte_pdump_enable_by_deviceid(char *device_id, uint16_t queue,
  * @return
  *    0 on success, -1 on error, rte_errno is set accordingly.
  */
-__rte_experimental
 int
 rte_pdump_enable_bpf_by_deviceid(const char *device_id, uint16_t queue,
 				 uint32_t flags, uint32_t snaplen,
@@ -242,9 +234,6 @@ struct rte_pdump_stats {
 };
 
 /**
- * @warning
- * @b EXPERIMENTAL: this API may change, or be removed, without prior notice
- *
  * Retrieve the packet capture statistics for a queue.
  *
  * @param port_id
@@ -254,7 +243,6 @@ struct rte_pdump_stats {
  * @return
  *   Zero if successful. -1 on error and rte_errno is set.
  */
-__rte_experimental
 int
 rte_pdump_stats(uint16_t port_id, struct rte_pdump_stats *stats);
 
diff --git a/lib/pdump/version.map b/lib/pdump/version.map
index 225830dc85a7..ea5bd157cdb1 100644
--- a/lib/pdump/version.map
+++ b/lib/pdump/version.map
@@ -4,17 +4,12 @@ DPDK_24 {
 	rte_pdump_disable;
 	rte_pdump_disable_by_deviceid;
 	rte_pdump_enable;
+	rte_pdump_enable_bpf;
+	rte_pdump_enable_bpf_by_deviceid;
 	rte_pdump_enable_by_deviceid;
 	rte_pdump_init;
+	rte_pdump_stats;
 	rte_pdump_uninit;
 
 	local: *;
 };
-
-EXPERIMENTAL {
-	global:
-
-	rte_pdump_enable_bpf;
-	rte_pdump_enable_bpf_by_deviceid;
-	rte_pdump_stats;
-};
-- 
2.39.2


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

* [PATCH v4 06/28] pcapng: mark API's as stable
  2023-10-19 19:09 ` [PATCH v4 00/28] Promote many experimental API's to stable Stephen Hemminger
                     ` (4 preceding siblings ...)
  2023-10-19 19:09   ` [PATCH v4 05/28] pdump: make API's stable Stephen Hemminger
@ 2023-10-19 19:09   ` 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
                     ` (21 subsequent siblings)
  27 siblings, 1 reply; 219+ messages in thread
From: Stephen Hemminger @ 2023-10-19 19:09 UTC (permalink / raw)
  To: dev; +Cc: Stephen Hemminger, Reshma Pattan

This API was added in 23.11 and can now be marked as not
experimental.

Signed-off-by: Stephen Hemminger <stephen@networkplumber.org>
---
 lib/pcapng/rte_pcapng.h | 11 -----------
 lib/pcapng/version.map  |  6 ++----
 2 files changed, 2 insertions(+), 15 deletions(-)

diff --git a/lib/pcapng/rte_pcapng.h b/lib/pcapng/rte_pcapng.h
index d93cc9f73ad5..c96c8994f38b 100644
--- a/lib/pcapng/rte_pcapng.h
+++ b/lib/pcapng/rte_pcapng.h
@@ -6,10 +6,6 @@
  * @file
  * RTE pcapng
  *
- * @warning
- * @b EXPERIMENTAL:
- * All functions in this file may be changed or removed without prior notice.
- *
  * Pcapng is an evolution from the pcap format, created to address some of
  * its deficiencies. Namely, the lack of extensibility and inability to store
  * additional information.
@@ -54,7 +50,6 @@ typedef struct rte_pcapng rte_pcapng_t;
  * @return
  *   handle to library, or NULL in case of error (and rte_errno is set).
  */
-__rte_experimental
 rte_pcapng_t *
 rte_pcapng_fdopen(int fd,
 		  const char *osname, const char *hardware,
@@ -66,7 +61,6 @@ rte_pcapng_fdopen(int fd,
  * @param self
  *  handle to library
  */
-__rte_experimental
 void
 rte_pcapng_close(rte_pcapng_t *self);
 
@@ -89,7 +83,6 @@ rte_pcapng_close(rte_pcapng_t *self);
  * and before any packet record. All ports used in packet capture
  * must be added.
  */
-__rte_experimental
 int
 rte_pcapng_add_interface(rte_pcapng_t *self, uint16_t port,
 			 const char *ifname, const char *ifdescr,
@@ -132,7 +125,6 @@ enum rte_pcapng_direction {
  *   - The pointer to the new mbuf formatted for pcapng_write
  *   - NULL if allocation fails.
  */
-__rte_experimental
 struct rte_mbuf *
 rte_pcapng_copy(uint16_t port_id, uint32_t queue,
 		const struct rte_mbuf *m, struct rte_mempool *mp,
@@ -149,7 +141,6 @@ rte_pcapng_copy(uint16_t port_id, uint32_t queue,
  *   The minimum size of mbuf data to handle packet with length bytes.
  *   Accounting for required header and trailer fields
  */
-__rte_experimental
 uint32_t
 rte_pcapng_mbuf_size(uint32_t length);
 
@@ -174,7 +165,6 @@ rte_pcapng_mbuf_size(uint32_t length);
  *  The number of bytes written to file, -1 on failure to write file.
  *  The mbuf's in *pkts* are always freed.
  */
-__rte_experimental
 ssize_t
 rte_pcapng_write_packets(rte_pcapng_t *self,
 			 struct rte_mbuf *pkts[], uint16_t nb_pkts);
@@ -205,7 +195,6 @@ rte_pcapng_write_packets(rte_pcapng_t *self,
  * @return
  *  number of bytes written to file, -1 on failure to write file
  */
-__rte_experimental
 ssize_t
 rte_pcapng_write_stats(rte_pcapng_t *self, uint16_t port,
 		       const char *comment,
diff --git a/lib/pcapng/version.map b/lib/pcapng/version.map
index 36393914d97c..81c9652ad6b5 100644
--- a/lib/pcapng/version.map
+++ b/lib/pcapng/version.map
@@ -1,6 +1,7 @@
-EXPERIMENTAL {
+DPDK_24 {
 	global:
 
+	rte_pcapng_add_interface;
 	rte_pcapng_close;
 	rte_pcapng_copy;
 	rte_pcapng_fdopen;
@@ -8,8 +9,5 @@ EXPERIMENTAL {
 	rte_pcapng_write_packets;
 	rte_pcapng_write_stats;
 
-	# added in 23.03
-	rte_pcapng_add_interface;
-
 	local: *;
 };
-- 
2.39.2


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

* [PATCH v4 07/28] net: remove experimental from functions
  2023-10-19 19:09 ` [PATCH v4 00/28] Promote many experimental API's to stable Stephen Hemminger
                     ` (5 preceding siblings ...)
  2023-10-19 19:09   ` [PATCH v4 06/28] pcapng: mark API's as stable Stephen Hemminger
@ 2023-10-19 19:09   ` Stephen Hemminger
  2023-10-19 19:09   ` [PATCH v4 08/28] rcu: remove experimental from rte_rcu_qbsr Stephen Hemminger
                     ` (20 subsequent siblings)
  27 siblings, 0 replies; 219+ messages in thread
From: Stephen Hemminger @ 2023-10-19 19:09 UTC (permalink / raw)
  To: dev; +Cc: Stephen Hemminger

These functions have been around long enough should no
longer be experimental.

Signed-off-by: Stephen Hemminger <stephen@networkplumber.org>
---
 lib/net/rte_ip.h | 19 -------------------
 1 file changed, 19 deletions(-)

diff --git a/lib/net/rte_ip.h b/lib/net/rte_ip.h
index 7f58dc6f6a9c..2cb5be222cdd 100644
--- a/lib/net/rte_ip.h
+++ b/lib/net/rte_ip.h
@@ -435,9 +435,6 @@ __rte_ipv4_udptcp_cksum_mbuf(const struct rte_mbuf *m,
 }
 
 /**
- * @warning
- * @b EXPERIMENTAL: this API may change without prior notice.
- *
  * Compute the IPv4 UDP/TCP checksum of a packet.
  *
  * @param m
@@ -449,7 +446,6 @@ __rte_ipv4_udptcp_cksum_mbuf(const struct rte_mbuf *m,
  * @return
  *   The complemented checksum to set in the L4 header.
  */
-__rte_experimental
 static inline uint16_t
 rte_ipv4_udptcp_cksum_mbuf(const struct rte_mbuf *m,
 			   const struct rte_ipv4_hdr *ipv4_hdr, uint16_t l4_off)
@@ -482,7 +478,6 @@ rte_ipv4_udptcp_cksum_mbuf(const struct rte_mbuf *m,
  * @return
  *   Return 0 if the checksum is correct, else -1.
  */
-__rte_experimental
 static inline int
 rte_ipv4_udptcp_cksum_verify(const struct rte_ipv4_hdr *ipv4_hdr,
 			     const void *l4_hdr)
@@ -496,9 +491,6 @@ rte_ipv4_udptcp_cksum_verify(const struct rte_ipv4_hdr *ipv4_hdr,
 }
 
 /**
- * @warning
- * @b EXPERIMENTAL: this API may change without prior notice.
- *
  * Verify the IPv4 UDP/TCP checksum of a packet.
  *
  * In case of UDP, the caller must first check if udp_hdr->dgram_cksum is 0
@@ -513,7 +505,6 @@ rte_ipv4_udptcp_cksum_verify(const struct rte_ipv4_hdr *ipv4_hdr,
  * @return
  *   Return 0 if the checksum is correct, else -1.
  */
-__rte_experimental
 static inline int
 rte_ipv4_udptcp_cksum_mbuf_verify(const struct rte_mbuf *m,
 				  const struct rte_ipv4_hdr *ipv4_hdr,
@@ -687,9 +678,6 @@ __rte_ipv6_udptcp_cksum_mbuf(const struct rte_mbuf *m,
 }
 
 /**
- * @warning
- * @b EXPERIMENTAL: this API may change without prior notice.
- *
  * Process the IPv6 UDP or TCP checksum of a packet.
  *
  * The IPv6 header must not be followed by extension headers. The layer 4
@@ -704,7 +692,6 @@ __rte_ipv6_udptcp_cksum_mbuf(const struct rte_mbuf *m,
  * @return
  *   The complemented checksum to set in the L4 header.
  */
-__rte_experimental
 static inline uint16_t
 rte_ipv6_udptcp_cksum_mbuf(const struct rte_mbuf *m,
 			   const struct rte_ipv6_hdr *ipv6_hdr, uint16_t l4_off)
@@ -738,7 +725,6 @@ rte_ipv6_udptcp_cksum_mbuf(const struct rte_mbuf *m,
  * @return
  *   Return 0 if the checksum is correct, else -1.
  */
-__rte_experimental
 static inline int
 rte_ipv6_udptcp_cksum_verify(const struct rte_ipv6_hdr *ipv6_hdr,
 			     const void *l4_hdr)
@@ -752,9 +738,6 @@ rte_ipv6_udptcp_cksum_verify(const struct rte_ipv6_hdr *ipv6_hdr,
 }
 
 /**
- * @warning
- * @b EXPERIMENTAL: this API may change without prior notice.
- *
  * Validate the IPv6 UDP or TCP checksum of a packet.
  *
  * In case of UDP, the caller must first check if udp_hdr->dgram_cksum is 0:
@@ -770,7 +753,6 @@ rte_ipv6_udptcp_cksum_verify(const struct rte_ipv6_hdr *ipv6_hdr,
  * @return
  *   Return 0 if the checksum is correct, else -1.
  */
-__rte_experimental
 static inline int
 rte_ipv6_udptcp_cksum_mbuf_verify(const struct rte_mbuf *m,
 				  const struct rte_ipv6_hdr *ipv6_hdr,
@@ -825,7 +807,6 @@ struct rte_ipv6_fragment_ext {
  * @return
  *   next protocol number if proto is an IPv6 extension, -EINVAL otherwise
  */
-__rte_experimental
 static inline int
 rte_ipv6_get_next_ext(const uint8_t *p, int proto, size_t *ext_len)
 {
-- 
2.39.2


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

* [PATCH v4 08/28] rcu: remove experimental from rte_rcu_qbsr
  2023-10-19 19:09 ` [PATCH v4 00/28] Promote many experimental API's to stable Stephen Hemminger
                     ` (6 preceding siblings ...)
  2023-10-19 19:09   ` [PATCH v4 07/28] net: remove experimental from functions Stephen Hemminger
@ 2023-10-19 19:09   ` Stephen Hemminger
  2023-10-19 19:09   ` [PATCH v4 09/28] lpm: remove experimental Stephen Hemminger
                     ` (19 subsequent siblings)
  27 siblings, 0 replies; 219+ messages in thread
From: Stephen Hemminger @ 2023-10-19 19:09 UTC (permalink / raw)
  To: dev; +Cc: Stephen Hemminger, Honnappa Nagarahalli

These functions were added back in 2020.
Remove experimental flag.

Signed-off-by: Stephen Hemminger <stephen@networkplumber.org>
Reviewed-by: Honnappa Nagarahalli <honnappa.nagarahalli@arm.com>
---
 lib/rcu/rte_rcu_qsbr.h | 20 --------------------
 lib/rcu/version.map    | 15 ++++-----------
 2 files changed, 4 insertions(+), 31 deletions(-)

diff --git a/lib/rcu/rte_rcu_qsbr.h b/lib/rcu/rte_rcu_qsbr.h
index 87e1b55153b5..74ef41e0fac1 100644
--- a/lib/rcu/rte_rcu_qsbr.h
+++ b/lib/rcu/rte_rcu_qsbr.h
@@ -10,10 +10,6 @@
  *
  * RTE Quiescent State Based Reclamation (QSBR).
  *
- * @warning
- * @b EXPERIMENTAL:
- * All functions in this file may be changed or removed without prior notice.
- *
  * Quiescent State (QS) is any point in the thread execution
  * where the thread does not hold a reference to a data structure
  * in shared memory. While using lock-less data structures, the writer
@@ -727,9 +723,6 @@ int
 rte_rcu_qsbr_dump(FILE *f, struct rte_rcu_qsbr *v);
 
 /**
- * @warning
- * @b EXPERIMENTAL: this API may change without prior notice
- *
  * Create a queue used to store the data structure elements that can
  * be freed later. This queue is referred to as 'defer queue'.
  *
@@ -742,14 +735,10 @@ rte_rcu_qsbr_dump(FILE *f, struct rte_rcu_qsbr *v);
  *   - EINVAL - NULL parameters are passed
  *   - ENOMEM - Not enough memory
  */
-__rte_experimental
 struct rte_rcu_qsbr_dq *
 rte_rcu_qsbr_dq_create(const struct rte_rcu_qsbr_dq_parameters *params);
 
 /**
- * @warning
- * @b EXPERIMENTAL: this API may change without prior notice
- *
  * Enqueue one resource to the defer queue and start the grace period.
  * The resource will be freed later after at least one grace period
  * is over.
@@ -777,14 +766,10 @@ rte_rcu_qsbr_dq_create(const struct rte_rcu_qsbr_dq_parameters *params);
  *		if the defer queue size is equal (or larger) than the
  *		number of elements in the data structure.
  */
-__rte_experimental
 int
 rte_rcu_qsbr_dq_enqueue(struct rte_rcu_qsbr_dq *dq, void *e);
 
 /**
- * @warning
- * @b EXPERIMENTAL: this API may change without prior notice
- *
  * Free resources from the defer queue.
  *
  * This API is multi-thread safe.
@@ -806,15 +791,11 @@ rte_rcu_qsbr_dq_enqueue(struct rte_rcu_qsbr_dq *dq, void *e);
  *   On error - 1 with rte_errno set to
  *   - EINVAL - NULL parameters are passed
  */
-__rte_experimental
 int
 rte_rcu_qsbr_dq_reclaim(struct rte_rcu_qsbr_dq *dq, unsigned int n,
 	unsigned int *freed, unsigned int *pending, unsigned int *available);
 
 /**
- * @warning
- * @b EXPERIMENTAL: this API may change without prior notice
- *
  * Delete a defer queue.
  *
  * It tries to reclaim all the resources on the defer queue.
@@ -832,7 +813,6 @@ rte_rcu_qsbr_dq_reclaim(struct rte_rcu_qsbr_dq *dq, unsigned int n,
  *   - EAGAIN - Some of the resources have not completed at least 1 grace
  *		period, try again.
  */
-__rte_experimental
 int
 rte_rcu_qsbr_dq_delete(struct rte_rcu_qsbr_dq *dq);
 
diff --git a/lib/rcu/version.map b/lib/rcu/version.map
index 9218ed1f3399..982ffd59d9cd 100644
--- a/lib/rcu/version.map
+++ b/lib/rcu/version.map
@@ -2,6 +2,10 @@ DPDK_24 {
 	global:
 
 	rte_rcu_log_type;
+	rte_rcu_qsbr_dq_create;
+	rte_rcu_qsbr_dq_delete;
+	rte_rcu_qsbr_dq_enqueue;
+	rte_rcu_qsbr_dq_reclaim;
 	rte_rcu_qsbr_dump;
 	rte_rcu_qsbr_get_memsize;
 	rte_rcu_qsbr_init;
@@ -11,14 +15,3 @@ DPDK_24 {
 
 	local: *;
 };
-
-EXPERIMENTAL {
-	global:
-
-	rte_rcu_qsbr_dq_create;
-	rte_rcu_qsbr_dq_enqueue;
-	rte_rcu_qsbr_dq_reclaim;
-	rte_rcu_qsbr_dq_delete;
-
-	local: *;
-};
-- 
2.39.2


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

* [PATCH v4 09/28] lpm: remove experimental
  2023-10-19 19:09 ` [PATCH v4 00/28] Promote many experimental API's to stable Stephen Hemminger
                     ` (7 preceding siblings ...)
  2023-10-19 19:09   ` [PATCH v4 08/28] rcu: remove experimental from rte_rcu_qbsr Stephen Hemminger
@ 2023-10-19 19:09   ` Stephen Hemminger
  2023-10-19 19:09   ` [PATCH v4 10/28] mbuf: remove experimental from create_extbuf Stephen Hemminger
                     ` (18 subsequent siblings)
  27 siblings, 0 replies; 219+ messages in thread
From: Stephen Hemminger @ 2023-10-19 19:09 UTC (permalink / raw)
  To: dev; +Cc: Stephen Hemminger, Bruce Richardson, Vladimir Medvedkin

The function to associate RCU with LPM was added several releases ago.
Remove experimental.

Signed-off-by: Stephen Hemminger <stephen@networkplumber.org>
---
 lib/lpm/rte_lpm.h   | 4 ----
 lib/lpm/version.map | 7 +------
 2 files changed, 1 insertion(+), 10 deletions(-)

diff --git a/lib/lpm/rte_lpm.h b/lib/lpm/rte_lpm.h
index 75e27ff164ab..40825c5b8038 100644
--- a/lib/lpm/rte_lpm.h
+++ b/lib/lpm/rte_lpm.h
@@ -186,9 +186,6 @@ void
 rte_lpm_free(struct rte_lpm *lpm);
 
 /**
- * @warning
- * @b EXPERIMENTAL: this API may change without prior notice
- *
  * Associate RCU QSBR variable with an LPM object.
  *
  * @param lpm
@@ -203,7 +200,6 @@ rte_lpm_free(struct rte_lpm *lpm);
  *   - EEXIST - already added QSBR
  *   - ENOMEM - memory allocation failure
  */
-__rte_experimental
 int rte_lpm_rcu_qsbr_add(struct rte_lpm *lpm, struct rte_lpm_rcu_config *cfg);
 
 /**
diff --git a/lib/lpm/version.map b/lib/lpm/version.map
index 9ba73b2f938b..b6bee8c18b8a 100644
--- a/lib/lpm/version.map
+++ b/lib/lpm/version.map
@@ -18,12 +18,7 @@ DPDK_24 {
 	rte_lpm_find_existing;
 	rte_lpm_free;
 	rte_lpm_is_rule_present;
+	rte_lpm_rcu_qsbr_add;
 
 	local: *;
 };
-
-EXPERIMENTAL {
-	global:
-
-	rte_lpm_rcu_qsbr_add;
-};
-- 
2.39.2


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

* [PATCH v4 10/28] mbuf: remove experimental from create_extbuf
  2023-10-19 19:09 ` [PATCH v4 00/28] Promote many experimental API's to stable Stephen Hemminger
                     ` (8 preceding siblings ...)
  2023-10-19 19:09   ` [PATCH v4 09/28] lpm: remove experimental Stephen Hemminger
@ 2023-10-19 19:09   ` Stephen Hemminger
  2023-10-19 19:09   ` [PATCH v4 11/28] hash: remove experimental from toeplitz hash Stephen Hemminger
                     ` (17 subsequent siblings)
  27 siblings, 0 replies; 219+ messages in thread
From: Stephen Hemminger @ 2023-10-19 19:09 UTC (permalink / raw)
  To: dev; +Cc: Stephen Hemminger, Bruce Richardson

This API was added in 2020 and should no longer be experimental.

Signed-off-by: Stephen Hemminger <stephen@networkplumber.org>
Acked-by: Bruce Richardson <bruce.richardson@intel.com>
---
 lib/mbuf/rte_mbuf.h  | 1 -
 lib/mbuf/version.map | 8 +-------
 2 files changed, 1 insertion(+), 8 deletions(-)

diff --git a/lib/mbuf/rte_mbuf.h b/lib/mbuf/rte_mbuf.h
index 913c459b1cc6..30fa3df85f53 100644
--- a/lib/mbuf/rte_mbuf.h
+++ b/lib/mbuf/rte_mbuf.h
@@ -800,7 +800,6 @@ struct rte_pktmbuf_extmem {
  *    - EEXIST - a memzone with the same name already exists
  *    - ENOMEM - no appropriate memory area found in which to create memzone
  */
-__rte_experimental
 struct rte_mempool *
 rte_pktmbuf_pool_create_extbuf(const char *name, unsigned int n,
 	unsigned int cache_size, uint16_t priv_size,
diff --git a/lib/mbuf/version.map b/lib/mbuf/version.map
index f010d4692e3e..daa65e2bbdb2 100644
--- a/lib/mbuf/version.map
+++ b/lib/mbuf/version.map
@@ -38,14 +38,8 @@ DPDK_24 {
 	rte_pktmbuf_init;
 	rte_pktmbuf_pool_create;
 	rte_pktmbuf_pool_create_by_ops;
+	rte_pktmbuf_pool_create_extbuf;
 	rte_pktmbuf_pool_init;
 
 	local: *;
 };
-
-EXPERIMENTAL {
-	global:
-
-	rte_pktmbuf_pool_create_extbuf;
-
-};
-- 
2.39.2


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

* [PATCH v4 11/28] hash: remove experimental from toeplitz hash
  2023-10-19 19:09 ` [PATCH v4 00/28] Promote many experimental API's to stable Stephen Hemminger
                     ` (9 preceding siblings ...)
  2023-10-19 19:09   ` [PATCH v4 10/28] mbuf: remove experimental from create_extbuf Stephen Hemminger
@ 2023-10-19 19:09   ` Stephen Hemminger
  2023-10-19 19:10   ` [PATCH v4 12/28] timer: remove experimental from rte_timer_next_ticks Stephen Hemminger
                     ` (16 subsequent siblings)
  27 siblings, 0 replies; 219+ messages in thread
From: Stephen Hemminger @ 2023-10-19 19:09 UTC (permalink / raw)
  To: dev
  Cc: Stephen Hemminger, Yipeng Wang, Sameh Gobriel, Bruce Richardson,
	Vladimir Medvedkin

The rte_thash_ functions have been around since 2020.
Remove experimental tag.

Signed-off-by: Stephen Hemminger <stephen@networkplumber.org>
---
 lib/hash/rte_thash.h          | 44 -----------------------------------
 lib/hash/rte_thash_gfni.h     |  8 -------
 lib/hash/rte_thash_x86_gfni.h |  8 -------
 lib/hash/version.map          | 16 ++++---------
 4 files changed, 4 insertions(+), 72 deletions(-)

diff --git a/lib/hash/rte_thash.h b/lib/hash/rte_thash.h
index da06cd53c0e0..071730c7bab9 100644
--- a/lib/hash/rte_thash.h
+++ b/lib/hash/rte_thash.h
@@ -221,14 +221,10 @@ rte_softrss_be(uint32_t *input_tuple, uint32_t input_len,
 /**
  * Indicates if GFNI implementations of the Toeplitz hash are supported.
  *
- * @warning
- * @b EXPERIMENTAL: this API may change without prior notice.
- *
  * @return
  *  1 if GFNI is supported
  *  0 otherwise
  */
-__rte_experimental
 int
 rte_thash_gfni_supported(void);
 
@@ -236,9 +232,6 @@ rte_thash_gfni_supported(void);
  * Converts Toeplitz hash key (RSS key) into matrixes required
  * for GFNI implementation
  *
- * @warning
- * @b EXPERIMENTAL: this API may change without prior notice.
- *
  * @param matrixes
  *  pointer to the memory where matrices will be written.
  *  Note: the size of this memory must be equal to size * 8
@@ -247,7 +240,6 @@ rte_thash_gfni_supported(void);
  * @param size
  *  Size of the rss_key in bytes.
  */
-__rte_experimental
 void
 rte_thash_complete_matrix(uint64_t *matrixes, const uint8_t *rss_key,
 	int size);
@@ -276,9 +268,6 @@ struct rte_thash_subtuple_helper;
 /**
  * Create a new thash context.
  *
- * @warning
- * @b EXPERIMENTAL: this API may change without prior notice.
- *
  * @param name
  *  Context name
  * @param key_len
@@ -298,7 +287,6 @@ struct rte_thash_subtuple_helper;
  *  A pointer to the created context on success
  *  NULL otherwise
  */
-__rte_experimental
 struct rte_thash_ctx *
 rte_thash_init_ctx(const char *name, uint32_t key_len, uint32_t reta_sz,
 	uint8_t *key, uint32_t flags);
@@ -306,9 +294,6 @@ rte_thash_init_ctx(const char *name, uint32_t key_len, uint32_t reta_sz,
 /**
  * Find an existing thash context and return a pointer to it.
  *
- * @warning
- * @b EXPERIMENTAL: this API may change without prior notice.
- *
  * @param name
  *  Name of the thash context
  * @return
@@ -316,20 +301,15 @@ rte_thash_init_ctx(const char *name, uint32_t key_len, uint32_t reta_sz,
  *  set appropriately. Possible rte_errno values include:
  *   - ENOENT - required entry not available to return.
  */
-__rte_experimental
 struct rte_thash_ctx *
 rte_thash_find_existing(const char *name);
 
 /**
  * Free a thash context object
  *
- * @warning
- * @b EXPERIMENTAL: this API may change without prior notice.
- *
  * @param ctx
  *  Thash context
  */
-__rte_experimental
 void
 rte_thash_free_ctx(struct rte_thash_ctx *ctx);
 
@@ -339,9 +319,6 @@ rte_thash_free_ctx(struct rte_thash_ctx *ctx);
  * to calculate toeplitz hash collisions.
  * This function is not multi-thread safe.
  *
- * @warning
- * @b EXPERIMENTAL: this API may change without prior notice.
- *
  * @param ctx
  *  Thash context
  * @param name
@@ -355,7 +332,6 @@ rte_thash_free_ctx(struct rte_thash_ctx *ctx);
  *  0 on success
  *  negative on error
  */
-__rte_experimental
 int
 rte_thash_add_helper(struct rte_thash_ctx *ctx, const char *name, uint32_t len,
 	uint32_t offset);
@@ -363,9 +339,6 @@ rte_thash_add_helper(struct rte_thash_ctx *ctx, const char *name, uint32_t len,
 /**
  * Find a helper in the context by the given name
  *
- * @warning
- * @b EXPERIMENTAL: this API may change without prior notice.
- *
  * @param ctx
  *  Thash context
  * @param name
@@ -373,7 +346,6 @@ rte_thash_add_helper(struct rte_thash_ctx *ctx, const char *name, uint32_t len,
  * @return
  *  Pointer to the thash helper or NULL if it was not found.
  */
-__rte_experimental
 struct rte_thash_subtuple_helper *
 rte_thash_get_helper(struct rte_thash_ctx *ctx, const char *name);
 
@@ -392,7 +364,6 @@ rte_thash_get_helper(struct rte_thash_ctx *ctx, const char *name);
  * @return
  *  A complementary value which must be xored with the corresponding subtuple
  */
-__rte_experimental
 uint32_t
 rte_thash_get_complement(struct rte_thash_subtuple_helper *h,
 	uint32_t hash, uint32_t desired_hash);
@@ -402,15 +373,11 @@ rte_thash_get_complement(struct rte_thash_subtuple_helper *h,
  * It changes after each addition of a helper. It should be installed to
  * the NIC.
  *
- * @warning
- * @b EXPERIMENTAL: this API may change without prior notice.
- *
  * @param ctx
  *  Thash context
  * @return
  *  A pointer to the toeplitz hash key
  */
-__rte_experimental
 const uint8_t *
 rte_thash_get_key(struct rte_thash_ctx *ctx);
 
@@ -420,16 +387,12 @@ rte_thash_get_key(struct rte_thash_ctx *ctx);
  * CPU supports GFNI.
  * Matrices changes after each addition of a helper.
  *
- * @warning
- * @b EXPERIMENTAL: this API may change without prior notice.
- *
  * @param ctx
  *  Thash context
  * @return
  *  A pointer to the toeplitz hash key matrices on success
  *  NULL if GFNI is not supported.
  */
-__rte_experimental
 const uint64_t *
 rte_thash_get_gfni_matrices(struct rte_thash_ctx *ctx);
 
@@ -439,9 +402,6 @@ rte_thash_get_gfni_matrices(struct rte_thash_ctx *ctx);
  * Generally it is some kind of lookup function to check
  * if adjusted tuple is already in use.
  *
- * @warning
- * @b EXPERIMENTAL: this API may change without prior notice.
- *
  * @param userdata
  *  Pointer to the userdata. It could be a pointer to the
  *  table with used tuples to search.
@@ -459,9 +419,6 @@ typedef int (*rte_thash_check_tuple_t)(void *userdata, uint8_t *tuple);
  * desired least significant bits.
  * This function is multi-thread safe.
  *
- * @warning
- * @b EXPERIMENTAL: this API may change without prior notice.
- *
  * @param ctx
  *  Thash context
  * @param h
@@ -483,7 +440,6 @@ typedef int (*rte_thash_check_tuple_t)(void *userdata, uint8_t *tuple);
  *  0 on success
  *  negative otherwise
  */
-__rte_experimental
 int
 rte_thash_adjust_tuple(struct rte_thash_ctx *ctx,
 	struct rte_thash_subtuple_helper *h,
diff --git a/lib/hash/rte_thash_gfni.h b/lib/hash/rte_thash_gfni.h
index ef90faa302d1..67d0fa4da988 100644
--- a/lib/hash/rte_thash_gfni.h
+++ b/lib/hash/rte_thash_gfni.h
@@ -24,9 +24,6 @@ extern "C" {
  * Calculate Toeplitz hash.
  * Dummy implementation.
  *
- * @warning
- * @b EXPERIMENTAL: this API may change without prior notice.
- *
  * @param m
  *  Pointer to the matrices generated from the corresponding
  *  RSS hash key using rte_thash_complete_matrix().
@@ -37,7 +34,6 @@ extern "C" {
  * @return
  *  Calculated Toeplitz hash value.
  */
-__rte_experimental
 static inline uint32_t
 rte_thash_gfni(const uint64_t *mtrx __rte_unused,
 	const uint8_t *key __rte_unused, int len __rte_unused)
@@ -50,9 +46,6 @@ rte_thash_gfni(const uint64_t *mtrx __rte_unused,
  * Bulk implementation for Toeplitz hash.
  * Dummy implementation.
  *
- * @warning
- * @b EXPERIMENTAL: this API may change without prior notice.
- *
  * @param m
  *  Pointer to the matrices generated from the corresponding
  *  RSS hash key using rte_thash_complete_matrix().
@@ -66,7 +59,6 @@ rte_thash_gfni(const uint64_t *mtrx __rte_unused,
  * @param num
  *  Number of tuples to hash.
  */
-__rte_experimental
 static inline void
 rte_thash_gfni_bulk(const uint64_t *mtrx __rte_unused,
 	int len __rte_unused, uint8_t *tuple[] __rte_unused,
diff --git a/lib/hash/rte_thash_x86_gfni.h b/lib/hash/rte_thash_x86_gfni.h
index fbec16dde081..0ff7ad07eeaa 100644
--- a/lib/hash/rte_thash_x86_gfni.h
+++ b/lib/hash/rte_thash_x86_gfni.h
@@ -161,9 +161,6 @@ __rte_thash_gfni(const uint64_t *mtrx, const uint8_t *tuple,
 /**
  * Calculate Toeplitz hash.
  *
- * @warning
- * @b EXPERIMENTAL: this API may change without prior notice.
- *
  * @param m
  *  Pointer to the matrices generated from the corresponding
  *  RSS hash key using rte_thash_complete_matrix().
@@ -175,7 +172,6 @@ __rte_thash_gfni(const uint64_t *mtrx, const uint8_t *tuple,
  * @return
  *  Calculated Toeplitz hash value.
  */
-__rte_experimental
 static inline uint32_t
 rte_thash_gfni(const uint64_t *m, const uint8_t *tuple, int len)
 {
@@ -190,9 +186,6 @@ rte_thash_gfni(const uint64_t *m, const uint8_t *tuple, int len)
 /**
  * Bulk implementation for Toeplitz hash.
  *
- * @warning
- * @b EXPERIMENTAL: this API may change without prior notice.
- *
  * @param m
  *  Pointer to the matrices generated from the corresponding
  *  RSS hash key using rte_thash_complete_matrix().
@@ -207,7 +200,6 @@ rte_thash_gfni(const uint64_t *m, const uint8_t *tuple, int len)
  * @param num
  *  Number of tuples to hash.
  */
-__rte_experimental
 static inline void
 rte_thash_gfni_bulk(const uint64_t *mtrx, int len, uint8_t *tuple[],
 	uint32_t val[], uint32_t num)
diff --git a/lib/hash/version.map b/lib/hash/version.map
index daaa9a8901db..b98b64a1638a 100644
--- a/lib/hash/version.map
+++ b/lib/hash/version.map
@@ -30,25 +30,17 @@ DPDK_24 {
 	rte_hash_rcu_qsbr_add;
 	rte_hash_reset;
 	rte_hash_set_cmp_func;
-
-	local: *;
-};
-
-EXPERIMENTAL {
-	global:
-
-	# added in 21.05
 	rte_thash_add_helper;
 	rte_thash_adjust_tuple;
+	rte_thash_complete_matrix;
 	rte_thash_find_existing;
 	rte_thash_free_ctx;
 	rte_thash_get_complement;
+	rte_thash_get_gfni_matrices;
 	rte_thash_get_helper;
 	rte_thash_get_key;
+	rte_thash_gfni_supported;
 	rte_thash_init_ctx;
 
-	# added in 21.11
-	rte_thash_complete_matrix;
-	rte_thash_get_gfni_matrices;
-	rte_thash_gfni_supported;
+	local: *;
 };
-- 
2.39.2


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

* [PATCH v4 12/28] timer: remove experimental from rte_timer_next_ticks
  2023-10-19 19:09 ` [PATCH v4 00/28] Promote many experimental API's to stable Stephen Hemminger
                     ` (10 preceding siblings ...)
  2023-10-19 19:09   ` [PATCH v4 11/28] hash: remove experimental from toeplitz hash Stephen Hemminger
@ 2023-10-19 19:10   ` Stephen Hemminger
  2023-10-19 19:10   ` [PATCH v4 13/28] sched: remove experimental Stephen Hemminger
                     ` (15 subsequent siblings)
  27 siblings, 0 replies; 219+ messages in thread
From: Stephen Hemminger @ 2023-10-19 19:10 UTC (permalink / raw)
  To: dev; +Cc: Stephen Hemminger, Erik Gabriel Carrillo

Function was added in 20.11, remove experimental flag.

Signed-off-by: Stephen Hemminger <stephen@networkplumber.org>
---
 lib/timer/rte_timer.h | 4 ----
 lib/timer/version.map | 7 +------
 2 files changed, 1 insertion(+), 10 deletions(-)

diff --git a/lib/timer/rte_timer.h b/lib/timer/rte_timer.h
index d3927d5b6bac..153d1993573f 100644
--- a/lib/timer/rte_timer.h
+++ b/lib/timer/rte_timer.h
@@ -331,9 +331,6 @@ void rte_timer_stop_sync(struct rte_timer *tim);
 int rte_timer_pending(struct rte_timer *tim);
 
 /**
- * @warning
- * @b EXPERIMENTAL: this API may change without prior notice
- *
  * Time until the next timer on the current lcore
  * This function gives the ticks until the next timer will be active.
  *
@@ -343,7 +340,6 @@ int rte_timer_pending(struct rte_timer *tim);
  *   - 0: a timer is pending and will run at next rte_timer_manage()
  *   - >0: ticks until the next timer is ready
  */
-__rte_experimental
 int64_t rte_timer_next_ticks(void);
 
 /**
diff --git a/lib/timer/version.map b/lib/timer/version.map
index e3d5a043034c..b180708e2488 100644
--- a/lib/timer/version.map
+++ b/lib/timer/version.map
@@ -10,6 +10,7 @@ DPDK_24 {
 	rte_timer_dump_stats;
 	rte_timer_init;
 	rte_timer_manage;
+	rte_timer_next_ticks;
 	rte_timer_pending;
 	rte_timer_reset;
 	rte_timer_reset_sync;
@@ -21,9 +22,3 @@ DPDK_24 {
 
 	local: *;
 };
-
-EXPERIMENTAL {
-	global:
-
-	rte_timer_next_ticks;
-};
-- 
2.39.2


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

* [PATCH v4 13/28] sched: remove experimental
  2023-10-19 19:09 ` [PATCH v4 00/28] Promote many experimental API's to stable Stephen Hemminger
                     ` (11 preceding siblings ...)
  2023-10-19 19:10   ` [PATCH v4 12/28] timer: remove experimental from rte_timer_next_ticks Stephen Hemminger
@ 2023-10-19 19:10   ` 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
                     ` (14 subsequent siblings)
  27 siblings, 1 reply; 219+ messages in thread
From: Stephen Hemminger @ 2023-10-19 19:10 UTC (permalink / raw)
  To: dev; +Cc: Stephen Hemminger, Cristian Dumitrescu

The overcommit and PIE support was added back in 2020.
Remove experimental tag.

Signed-off-by: Stephen Hemminger <stephen@networkplumber.org>
---
 lib/sched/rte_pie.h   |  8 --------
 lib/sched/rte_sched.h |  5 -----
 lib/sched/version.map | 18 ++++--------------
 3 files changed, 4 insertions(+), 27 deletions(-)

diff --git a/lib/sched/rte_pie.h b/lib/sched/rte_pie.h
index e0d6d5a3cdcd..631c657980eb 100644
--- a/lib/sched/rte_pie.h
+++ b/lib/sched/rte_pie.h
@@ -78,7 +78,6 @@ struct rte_pie {
  * @retval !0 error
  */
 int
-__rte_experimental
 rte_pie_rt_data_init(struct rte_pie *pie);
 
 /**
@@ -95,7 +94,6 @@ rte_pie_rt_data_init(struct rte_pie *pie);
  * @retval !0 error
  */
 int
-__rte_experimental
 rte_pie_config_init(struct rte_pie_config *pie_cfg,
 	const uint16_t qdelay_ref,
 	const uint16_t dp_update_interval,
@@ -116,7 +114,6 @@ rte_pie_config_init(struct rte_pie_config *pie_cfg,
  * @retval !0 drop the packet
  */
 static int
-__rte_experimental
 rte_pie_enqueue_empty(const struct rte_pie_config *pie_cfg,
 	struct rte_pie *pie,
 	uint32_t pkt_len)
@@ -148,7 +145,6 @@ rte_pie_enqueue_empty(const struct rte_pie_config *pie_cfg,
  * @param time [in] current time (measured in cpu cycles)
  */
 static void
-__rte_experimental
 _calc_drop_probability(const struct rte_pie_config *pie_cfg,
 	struct rte_pie *pie, uint64_t time)
 {
@@ -212,7 +208,6 @@ _calc_drop_probability(const struct rte_pie_config *pie_cfg,
  * @retval 1 drop the packet
  */
 static inline int
-__rte_experimental
 _rte_pie_drop(const struct rte_pie_config *pie_cfg,
 	struct rte_pie *pie)
 {
@@ -261,7 +256,6 @@ _rte_pie_drop(const struct rte_pie_config *pie_cfg,
  * @retval 2 drop the packet based on mark probability criterion
  */
 static inline int
-__rte_experimental
 rte_pie_enqueue_nonempty(const struct rte_pie_config *pie_cfg,
 	struct rte_pie *pie,
 	uint32_t pkt_len,
@@ -329,7 +323,6 @@ rte_pie_enqueue_nonempty(const struct rte_pie_config *pie_cfg,
  * @retval 1 drop the packet based on drop probability criteria
  */
 static inline int
-__rte_experimental
 rte_pie_enqueue(const struct rte_pie_config *pie_cfg,
 	struct rte_pie *pie,
 	const unsigned int qlen,
@@ -354,7 +347,6 @@ rte_pie_enqueue(const struct rte_pie_config *pie_cfg,
  * @param time [in] current time stamp in cpu cycles
  */
 static inline void
-__rte_experimental
 rte_pie_dequeue(struct rte_pie *pie,
 	uint32_t pkt_len,
 	uint64_t time)
diff --git a/lib/sched/rte_sched.h b/lib/sched/rte_sched.h
index a9ac5909ad0c..77fc78ce2fe9 100644
--- a/lib/sched/rte_sched.h
+++ b/lib/sched/rte_sched.h
@@ -353,9 +353,6 @@ rte_sched_subport_pipe_profile_add(struct rte_sched_port *port,
 	uint32_t *pipe_profile_id);
 
 /**
- * @warning
- * @b EXPERIMENTAL: this API may change without prior notice.
- *
  * Hierarchical scheduler subport bandwidth profile add
  * Note that this function is safe to use in runtime for adding new
  * subport bandwidth profile as it doesn't have any impact on hierarchical
@@ -369,7 +366,6 @@ rte_sched_subport_pipe_profile_add(struct rte_sched_port *port,
  * @return
  *   0 upon success, error code otherwise
  */
-__rte_experimental
 int
 rte_sched_port_subport_profile_add(struct rte_sched_port *port,
 	struct rte_sched_subport_profile_params *profile,
@@ -592,7 +588,6 @@ rte_sched_port_dequeue(struct rte_sched_port *port, struct rte_mbuf **pkts, uint
  * @return
  *   0 upon success, error code otherwise
  */
-__rte_experimental
 int
 rte_sched_subport_tc_ov_config(struct rte_sched_port *port, uint32_t subport_id, bool tc_ov_enable);
 
diff --git a/lib/sched/version.map b/lib/sched/version.map
index d9ce68be1449..be1decaeee46 100644
--- a/lib/sched/version.map
+++ b/lib/sched/version.map
@@ -2,6 +2,8 @@ DPDK_24 {
 	global:
 
 	rte_approx;
+	rte_pie_config_init;
+	rte_pie_rt_data_init;
 	rte_red_config_init;
 	rte_red_log2_1_minus_Wq;
 	rte_red_pow2_frac_inv;
@@ -17,24 +19,12 @@ DPDK_24 {
 	rte_sched_port_pkt_read_color;
 	rte_sched_port_pkt_read_tree_path;
 	rte_sched_port_pkt_write;
+	rte_sched_port_subport_profile_add;
 	rte_sched_queue_read_stats;
 	rte_sched_subport_config;
 	rte_sched_subport_pipe_profile_add;
 	rte_sched_subport_read_stats;
+	rte_sched_subport_tc_ov_config;
 
 	local: *;
 };
-
-EXPERIMENTAL {
-	global:
-
-	# added in 20.11
-	rte_sched_port_subport_profile_add;
-
-	# added in 21.11
-	rte_pie_rt_data_init;
-	rte_pie_config_init;
-
-	# added in 22.07
-	rte_sched_subport_tc_ov_config;
-};
-- 
2.39.2


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

* [PATCH v4 14/28] dmadev: mark API's as not experimental
  2023-10-19 19:09 ` [PATCH v4 00/28] Promote many experimental API's to stable Stephen Hemminger
                     ` (12 preceding siblings ...)
  2023-10-19 19:10   ` [PATCH v4 13/28] sched: remove experimental Stephen Hemminger
@ 2023-10-19 19:10   ` Stephen Hemminger
  2023-10-19 19:10   ` [PATCH v4 15/28] meter: remove experimental warning from comments Stephen Hemminger
                     ` (13 subsequent siblings)
  27 siblings, 0 replies; 219+ messages in thread
From: Stephen Hemminger @ 2023-10-19 19:10 UTC (permalink / raw)
  To: dev
  Cc: Stephen Hemminger, Chengwen Feng, Bruce Richardson,
	Thomas Monjalon, Kevin Laatz

These were added in 20.11 time now to remove experimental flag.

Signed-off-by: Stephen Hemminger <stephen@networkplumber.org>
Acked-by: Chengwen Feng <fengchengwen@huawei.com>
Acked-by: Bruce Richardson <bruce.richardson@intel.com>
---
 MAINTAINERS             |  2 +-
 lib/dmadev/rte_dmadev.h | 85 -----------------------------------------
 lib/dmadev/version.map  |  2 +-
 3 files changed, 2 insertions(+), 87 deletions(-)

diff --git a/MAINTAINERS b/MAINTAINERS
index f77597571633..1534a414f754 100644
--- a/MAINTAINERS
+++ b/MAINTAINERS
@@ -483,7 +483,7 @@ F: doc/guides/prog_guide/mldev.rst
 F: app/test-mldev/
 F: doc/guides/tools/testmldev.rst
 
-DMA device API - EXPERIMENTAL
+DMA device API
 M: Chengwen Feng <fengchengwen@huawei.com>
 F: lib/dmadev/
 F: drivers/dma/skeleton/
diff --git a/lib/dmadev/rte_dmadev.h b/lib/dmadev/rte_dmadev.h
index 493263a5d627..2c09939ff6c5 100644
--- a/lib/dmadev/rte_dmadev.h
+++ b/lib/dmadev/rte_dmadev.h
@@ -158,9 +158,6 @@ extern "C" {
 #define RTE_DMADEV_DEFAULT_MAX 64
 
 /**
- * @warning
- * @b EXPERIMENTAL: this API may change without prior notice.
- *
  * Configure the maximum number of dmadevs.
  * @note This function can be invoked before the primary process rte_eal_init()
  * to change the maximum number of dmadevs. If not invoked, the maximum number
@@ -172,13 +169,9 @@ extern "C" {
  * @return
  *   0 on success. Otherwise negative value is returned.
  */
-__rte_experimental
 int rte_dma_dev_max(size_t dev_max);
 
 /**
- * @warning
- * @b EXPERIMENTAL: this API may change without prior notice.
- *
  * Get the device identifier for the named DMA device.
  *
  * @param name
@@ -188,13 +181,9 @@ int rte_dma_dev_max(size_t dev_max);
  *   Returns DMA device identifier on success.
  *   - <0: Failure to find named DMA device.
  */
-__rte_experimental
 int rte_dma_get_dev_id_by_name(const char *name);
 
 /**
- * @warning
- * @b EXPERIMENTAL: this API may change without prior notice.
- *
  * Check whether the dev_id is valid.
  *
  * @param dev_id
@@ -203,20 +192,15 @@ int rte_dma_get_dev_id_by_name(const char *name);
  * @return
  *   - If the device index is valid (true) or not (false).
  */
-__rte_experimental
 bool rte_dma_is_valid(int16_t dev_id);
 
 /**
- * @warning
- * @b EXPERIMENTAL: this API may change without prior notice.
- *
  * Get the total number of DMA devices that have been successfully
  * initialised.
  *
  * @return
  *   The total number of usable DMA devices.
  */
-__rte_experimental
 uint16_t rte_dma_count_avail(void);
 
 /**
@@ -227,7 +211,6 @@ uint16_t rte_dma_count_avail(void);
  * @return
  *   Next valid dmadev, UINT16_MAX if there is none.
  */
-__rte_experimental
 int16_t rte_dma_next_dev(int16_t start_dev_id);
 
 /** Utility macro to iterate over all available dmadevs */
@@ -318,9 +301,6 @@ struct rte_dma_info {
 };
 
 /**
- * @warning
- * @b EXPERIMENTAL: this API may change without prior notice.
- *
  * Retrieve information of a DMA device.
  *
  * @param dev_id
@@ -332,7 +312,6 @@ struct rte_dma_info {
  * @return
  *   0 on success. Otherwise negative value is returned.
  */
-__rte_experimental
 int rte_dma_info_get(int16_t dev_id, struct rte_dma_info *dev_info);
 
 /**
@@ -357,9 +336,6 @@ struct rte_dma_conf {
 };
 
 /**
- * @warning
- * @b EXPERIMENTAL: this API may change without prior notice.
- *
  * Configure a DMA device.
  *
  * This function must be invoked first before any other function in the
@@ -375,13 +351,9 @@ struct rte_dma_conf {
  * @return
  *   0 on success. Otherwise negative value is returned.
  */
-__rte_experimental
 int rte_dma_configure(int16_t dev_id, const struct rte_dma_conf *dev_conf);
 
 /**
- * @warning
- * @b EXPERIMENTAL: this API may change without prior notice.
- *
  * Start a DMA device.
  *
  * The device start step is the last one and consists of setting the DMA
@@ -393,13 +365,9 @@ int rte_dma_configure(int16_t dev_id, const struct rte_dma_conf *dev_conf);
  * @return
  *   0 on success. Otherwise negative value is returned.
  */
-__rte_experimental
 int rte_dma_start(int16_t dev_id);
 
 /**
- * @warning
- * @b EXPERIMENTAL: this API may change without prior notice.
- *
  * Stop a DMA device.
  *
  * The device can be restarted with a call to rte_dma_start().
@@ -410,13 +378,9 @@ int rte_dma_start(int16_t dev_id);
  * @return
  *   0 on success. Otherwise negative value is returned.
  */
-__rte_experimental
 int rte_dma_stop(int16_t dev_id);
 
 /**
- * @warning
- * @b EXPERIMENTAL: this API may change without prior notice.
- *
  * Close a DMA device.
  *
  * The device cannot be restarted after this call.
@@ -427,7 +391,6 @@ int rte_dma_stop(int16_t dev_id);
  * @return
  *   0 on success. Otherwise negative value is returned.
  */
-__rte_experimental
 int rte_dma_close(int16_t dev_id);
 
 /**
@@ -620,9 +583,6 @@ struct rte_dma_vchan_conf {
 };
 
 /**
- * @warning
- * @b EXPERIMENTAL: this API may change without prior notice.
- *
  * Allocate and set up a virtual DMA channel.
  *
  * @param dev_id
@@ -637,7 +597,6 @@ struct rte_dma_vchan_conf {
  * @return
  *   0 on success. Otherwise negative value is returned.
  */
-__rte_experimental
 int rte_dma_vchan_setup(int16_t dev_id, uint16_t vchan,
 			const struct rte_dma_vchan_conf *conf);
 
@@ -666,9 +625,6 @@ struct rte_dma_stats {
 #define RTE_DMA_ALL_VCHAN	0xFFFFu
 
 /**
- * @warning
- * @b EXPERIMENTAL: this API may change without prior notice.
- *
  * Retrieve basic statistics of a or all virtual DMA channel(s).
  *
  * @param dev_id
@@ -683,14 +639,10 @@ struct rte_dma_stats {
  * @return
  *   0 on success. Otherwise negative value is returned.
  */
-__rte_experimental
 int rte_dma_stats_get(int16_t dev_id, uint16_t vchan,
 		      struct rte_dma_stats *stats);
 
 /**
- * @warning
- * @b EXPERIMENTAL: this API may change without prior notice.
- *
  * Reset basic statistics of a or all virtual DMA channel(s).
  *
  * @param dev_id
@@ -702,7 +654,6 @@ int rte_dma_stats_get(int16_t dev_id, uint16_t vchan,
  * @return
  *   0 on success. Otherwise negative value is returned.
  */
-__rte_experimental
 int rte_dma_stats_reset(int16_t dev_id, uint16_t vchan);
 
 /**
@@ -718,9 +669,6 @@ enum rte_dma_vchan_status {
 };
 
 /**
- * @warning
- * @b EXPERIMENTAL: this API may change without prior notice.
- *
  * Determine if all jobs have completed on a device channel.
  * This function is primarily designed for testing use, as it allows a process to check if
  * all jobs are completed, without actually gathering completions from those jobs.
@@ -735,14 +683,10 @@ enum rte_dma_vchan_status {
  *   0 - call completed successfully
  *   < 0 - error code indicating there was a problem calling the API
  */
-__rte_experimental
 int
 rte_dma_vchan_status(int16_t dev_id, uint16_t vchan, enum rte_dma_vchan_status *status);
 
 /**
- * @warning
- * @b EXPERIMENTAL: this API may change without prior notice.
- *
  * Dump DMA device info.
  *
  * @param dev_id
@@ -753,7 +697,6 @@ rte_dma_vchan_status(int16_t dev_id, uint16_t vchan, enum rte_dma_vchan_status *
  * @return
  *   0 on success. Otherwise negative value is returned.
  */
-__rte_experimental
 int rte_dma_dump(int16_t dev_id, FILE *f);
 
 /**
@@ -864,9 +807,6 @@ struct rte_dma_sge {
 /**@}*/
 
 /**
- * @warning
- * @b EXPERIMENTAL: this API may change without prior notice.
- *
  * Enqueue a copy operation onto the virtual DMA channel.
  *
  * This queues up a copy operation to be performed by hardware, if the 'flags'
@@ -892,7 +832,6 @@ struct rte_dma_sge {
  *   - -ENOSPC: if no space left to enqueue.
  *   - other values < 0 on failure.
  */
-__rte_experimental
 static inline int
 rte_dma_copy(int16_t dev_id, uint16_t vchan, rte_iova_t src, rte_iova_t dst,
 	     uint32_t length, uint64_t flags)
@@ -910,9 +849,6 @@ rte_dma_copy(int16_t dev_id, uint16_t vchan, rte_iova_t src, rte_iova_t dst,
 }
 
 /**
- * @warning
- * @b EXPERIMENTAL: this API may change without prior notice.
- *
  * Enqueue a scatter-gather list copy operation onto the virtual DMA channel.
  *
  * This queues up a scatter-gather list copy operation to be performed by
@@ -942,7 +878,6 @@ rte_dma_copy(int16_t dev_id, uint16_t vchan, rte_iova_t src, rte_iova_t dst,
  *   - -ENOSPC: if no space left to enqueue.
  *   - other values < 0 on failure.
  */
-__rte_experimental
 static inline int
 rte_dma_copy_sg(int16_t dev_id, uint16_t vchan, struct rte_dma_sge *src,
 		struct rte_dma_sge *dst, uint16_t nb_src, uint16_t nb_dst,
@@ -963,9 +898,6 @@ rte_dma_copy_sg(int16_t dev_id, uint16_t vchan, struct rte_dma_sge *src,
 }
 
 /**
- * @warning
- * @b EXPERIMENTAL: this API may change without prior notice.
- *
  * Enqueue a fill operation onto the virtual DMA channel.
  *
  * This queues up a fill operation to be performed by hardware, if the 'flags'
@@ -991,7 +923,6 @@ rte_dma_copy_sg(int16_t dev_id, uint16_t vchan, struct rte_dma_sge *src,
  *   - -ENOSPC: if no space left to enqueue.
  *   - other values < 0 on failure.
  */
-__rte_experimental
 static inline int
 rte_dma_fill(int16_t dev_id, uint16_t vchan, uint64_t pattern,
 	     rte_iova_t dst, uint32_t length, uint64_t flags)
@@ -1010,9 +941,6 @@ rte_dma_fill(int16_t dev_id, uint16_t vchan, uint64_t pattern,
 }
 
 /**
- * @warning
- * @b EXPERIMENTAL: this API may change without prior notice.
- *
  * Trigger hardware to begin performing enqueued operations.
  *
  * Writes the "doorbell" to the hardware to trigger it
@@ -1026,7 +954,6 @@ rte_dma_fill(int16_t dev_id, uint16_t vchan, uint64_t pattern,
  * @return
  *   0 on success. Otherwise negative value is returned.
  */
-__rte_experimental
 static inline int
 rte_dma_submit(int16_t dev_id, uint16_t vchan)
 {
@@ -1043,9 +970,6 @@ rte_dma_submit(int16_t dev_id, uint16_t vchan)
 }
 
 /**
- * @warning
- * @b EXPERIMENTAL: this API may change without prior notice.
- *
  * Return the number of operations that have been successfully completed.
  * Once an operation has been reported as completed, the results of that
  * operation will be visible to all cores on the system.
@@ -1067,7 +991,6 @@ rte_dma_submit(int16_t dev_id, uint16_t vchan)
  *   The number of operations that successfully completed. This return value
  *   must be less than or equal to the value of nb_cpls.
  */
-__rte_experimental
 static inline uint16_t
 rte_dma_completed(int16_t dev_id, uint16_t vchan, const uint16_t nb_cpls,
 		  uint16_t *last_idx, bool *has_error)
@@ -1102,9 +1025,6 @@ rte_dma_completed(int16_t dev_id, uint16_t vchan, const uint16_t nb_cpls,
 }
 
 /**
- * @warning
- * @b EXPERIMENTAL: this API may change without prior notice.
- *
  * Return the number of operations that have been completed, and the operations
  * result may succeed or fail.
  * Once an operation has been reported as completed successfully, the results of that
@@ -1130,7 +1050,6 @@ rte_dma_completed(int16_t dev_id, uint16_t vchan, const uint16_t nb_cpls,
  *   If this number is greater than zero (assuming n), then n values in the
  *   status array are also set.
  */
-__rte_experimental
 static inline uint16_t
 rte_dma_completed_status(int16_t dev_id, uint16_t vchan,
 			 const uint16_t nb_cpls, uint16_t *last_idx,
@@ -1154,9 +1073,6 @@ rte_dma_completed_status(int16_t dev_id, uint16_t vchan,
 }
 
 /**
- * @warning
- * @b EXPERIMENTAL: this API may change without prior notice.
- *
  * Check remaining capacity in descriptor ring for the current burst.
  *
  * @param dev_id
@@ -1168,7 +1084,6 @@ rte_dma_completed_status(int16_t dev_id, uint16_t vchan,
  *   - Remaining space in the descriptor ring for the current burst.
  *   - 0 on error
  */
-__rte_experimental
 static inline uint16_t
 rte_dma_burst_capacity(int16_t dev_id, uint16_t vchan)
 {
diff --git a/lib/dmadev/version.map b/lib/dmadev/version.map
index 7031d6b335e9..2a3736514c8f 100644
--- a/lib/dmadev/version.map
+++ b/lib/dmadev/version.map
@@ -1,4 +1,4 @@
-EXPERIMENTAL {
+DPDK_24 {
 	global:
 
 	rte_dma_close;
-- 
2.39.2


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

* [PATCH v4 15/28] meter: remove experimental warning from comments
  2023-10-19 19:09 ` [PATCH v4 00/28] Promote many experimental API's to stable Stephen Hemminger
                     ` (13 preceding siblings ...)
  2023-10-19 19:10   ` [PATCH v4 14/28] dmadev: mark API's as not experimental Stephen Hemminger
@ 2023-10-19 19:10   ` 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
                     ` (12 subsequent siblings)
  27 siblings, 1 reply; 219+ messages in thread
From: Stephen Hemminger @ 2023-10-19 19:10 UTC (permalink / raw)
  To: dev; +Cc: Stephen Hemminger, Bruce Richardson, Cristian Dumitrescu

The API's for rte_meter_trtcm were never properly flagged
as experimental; missing __rte_experimental but there was
an experimental comment in the docbook comment.
Remove the comment.

Signed-off-by: Stephen Hemminger <stephen@networkplumber.org>
Acked-by: Bruce Richardson <bruce.richardson@intel.com>
---
 lib/meter/rte_meter.h | 12 ------------
 1 file changed, 12 deletions(-)

diff --git a/lib/meter/rte_meter.h b/lib/meter/rte_meter.h
index 6ba99674361a..bd68cbe38903 100644
--- a/lib/meter/rte_meter.h
+++ b/lib/meter/rte_meter.h
@@ -124,9 +124,6 @@ int
 rte_meter_trtcm_profile_config(struct rte_meter_trtcm_profile *p,
 	struct rte_meter_trtcm_params *params);
 /**
- * @warning
- * @b EXPERIMENTAL: this API may change without prior notice
- *
  * trTCM RFC 4115 profile configuration
  *
  * @param p
@@ -170,9 +167,6 @@ rte_meter_trtcm_config(struct rte_meter_trtcm *m,
 	struct rte_meter_trtcm_profile *p);
 
 /**
- * @warning
- * @b EXPERIMENTAL: this API may change without prior notice
- *
  * trTCM RFC 4115 configuration per metered traffic flow
  *
  * @param m
@@ -273,9 +267,6 @@ rte_meter_trtcm_color_aware_check(struct rte_meter_trtcm *m,
 	enum rte_color pkt_color);
 
 /**
- * @warning
- * @b EXPERIMENTAL: this API may change without prior notice
- *
  * trTCM RFC4115 color blind traffic metering
  *
  * @param m
@@ -297,9 +288,6 @@ rte_meter_trtcm_rfc4115_color_blind_check(
 	uint32_t pkt_len);
 
 /**
- * @warning
- * @b EXPERIMENTAL: this API may change without prior notice
- *
  * trTCM RFC4115 color aware traffic metering
  *
  * @param m
-- 
2.39.2


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

* [PATCH v4 16/28] power: remove experimental from API's
  2023-10-19 19:09 ` [PATCH v4 00/28] Promote many experimental API's to stable Stephen Hemminger
                     ` (14 preceding siblings ...)
  2023-10-19 19:10   ` [PATCH v4 15/28] meter: remove experimental warning from comments Stephen Hemminger
@ 2023-10-19 19:10   ` Stephen Hemminger
  2023-10-20  9:58     ` Hunt, David
  2023-10-19 19:10   ` [PATCH v4 17/28] kvargs: remove experimental flag Stephen Hemminger
                     ` (11 subsequent siblings)
  27 siblings, 1 reply; 219+ messages in thread
From: Stephen Hemminger @ 2023-10-19 19:10 UTC (permalink / raw)
  To: dev; +Cc: Stephen Hemminger, Anatoly Burakov, David Hunt

The power management API's were last changed in 22.11 release.
Therefore remove experimental for 23.11 release.

Signed-off-by: Stephen Hemminger <stephen@networkplumber.org>
---
 lib/power/rte_power.h               |  4 ---
 lib/power/rte_power_guest_channel.h |  4 ---
 lib/power/rte_power_pmd_mgmt.h      | 40 -----------------------------
 lib/power/rte_power_uncore.h        |  5 ----
 lib/power/version.map               | 40 ++++++++++-------------------
 5 files changed, 13 insertions(+), 80 deletions(-)

diff --git a/lib/power/rte_power.h b/lib/power/rte_power.h
index e79bf1c4dd0c..4b624a01c5d7 100644
--- a/lib/power/rte_power.h
+++ b/lib/power/rte_power.h
@@ -25,9 +25,6 @@ enum power_management_env {PM_ENV_NOT_SET, PM_ENV_ACPI_CPUFREQ, PM_ENV_KVM_VM,
 		PM_ENV_AMD_PSTATE_CPUFREQ};
 
 /**
- * @warning
- * @b EXPERIMENTAL: this API may change, or be removed, without prior notice
- *
  * Check if a specific power management environment type is supported on a
  * currently running system.
  *
@@ -39,7 +36,6 @@ enum power_management_env {PM_ENV_NOT_SET, PM_ENV_ACPI_CPUFREQ, PM_ENV_KVM_VM,
  *   - 0 if unsupported
  *   - -1 if error, with rte_errno indicating reason for error.
  */
-__rte_experimental
 int rte_power_check_env_supported(enum power_management_env env);
 
 /**
diff --git a/lib/power/rte_power_guest_channel.h b/lib/power/rte_power_guest_channel.h
index b5de1bd24318..55b76dfc4c08 100644
--- a/lib/power/rte_power_guest_channel.h
+++ b/lib/power/rte_power_guest_channel.h
@@ -135,9 +135,6 @@ int rte_power_guest_channel_send_msg(struct rte_power_channel_packet *pkt,
 			unsigned int lcore_id);
 
 /**
- * @warning
- * @b EXPERIMENTAL: this API may change without prior notice.
- *
  * Receive a message contained in pkt over the Virtio-Serial
  * from the host endpoint.
  *
@@ -155,7 +152,6 @@ int rte_power_guest_channel_send_msg(struct rte_power_channel_packet *pkt,
  *  - 0 on success.
  *  - Negative on error.
  */
-__rte_experimental
 int rte_power_guest_channel_receive_msg(void *pkt,
 		size_t pkt_len,
 		unsigned int lcore_id);
diff --git a/lib/power/rte_power_pmd_mgmt.h b/lib/power/rte_power_pmd_mgmt.h
index 0f1a2eb22eb4..456145661917 100644
--- a/lib/power/rte_power_pmd_mgmt.h
+++ b/lib/power/rte_power_pmd_mgmt.h
@@ -33,9 +33,6 @@ enum rte_power_pmd_mgmt_type {
 };
 
 /**
- * @warning
- * @b EXPERIMENTAL: this API may change, or be removed, without prior notice.
- *
  * Enable power management on a specified Ethernet device Rx queue and lcore.
  *
  * @note This function is not thread-safe.
@@ -55,16 +52,12 @@ enum rte_power_pmd_mgmt_type {
  *   0 on success
  *   <0 on error
  */
-__rte_experimental
 int
 rte_power_ethdev_pmgmt_queue_enable(unsigned int lcore_id,
 		uint16_t port_id, uint16_t queue_id,
 		enum rte_power_pmd_mgmt_type mode);
 
 /**
- * @warning
- * @b EXPERIMENTAL: this API may change, or be removed, without prior notice.
- *
  * Disable power management on a specified Ethernet device Rx queue and lcore.
  *
  * @note This function is not thread-safe.
@@ -82,42 +75,30 @@ rte_power_ethdev_pmgmt_queue_enable(unsigned int lcore_id,
  *   0 on success
  *   <0 on error
  */
-__rte_experimental
 int
 rte_power_ethdev_pmgmt_queue_disable(unsigned int lcore_id,
 		uint16_t port_id, uint16_t queue_id);
 
 /**
- * @warning
- * @b EXPERIMENTAL: this API may change, or be removed, without prior notice.
- *
  * Set a emptypoll_max to specified value. Used to specify the number of empty
  * polls to wait before entering sleep state.
  *
  * @param max
  *   The value to set emptypoll_max to.
  */
-__rte_experimental
 void
 rte_power_pmd_mgmt_set_emptypoll_max(unsigned int max);
 
 /**
- * @warning
- * @b EXPERIMENTAL: this API may change, or be removed, without prior notice.
- *
  * Get the current value of emptypoll_max.
  *
  * @return
  *   The current emptypoll_max value
  */
-__rte_experimental
 unsigned int
 rte_power_pmd_mgmt_get_emptypoll_max(void);
 
 /**
- * @warning
- * @b EXPERIMENTAL: this API may change, or be removed, without prior notice.
- *
  * Set the pause_duration. Used to adjust the pause mode callback duration.
  *
  * @note Duration must be greater than zero.
@@ -128,27 +109,19 @@ rte_power_pmd_mgmt_get_emptypoll_max(void);
  *   0 on success
  *   <0 on error
  */
-__rte_experimental
 int
 rte_power_pmd_mgmt_set_pause_duration(unsigned int duration);
 
 /**
- * @warning
- * @b EXPERIMENTAL: this API may change, or be removed, without prior notice.
- *
  * Get the current value of pause_duration.
  *
  * @return
  *   The current pause_duration value.
  */
-__rte_experimental
 unsigned int
 rte_power_pmd_mgmt_get_pause_duration(void);
 
 /**
- * @warning
- * @b EXPERIMENTAL: this API may change, or be removed, without prior notice.
- *
  * Set the min frequency to be used for frequency scaling or zero to use defaults.
  *
  * @note Supported by: Pstate mode.
@@ -161,14 +134,10 @@ rte_power_pmd_mgmt_get_pause_duration(void);
  *   0 on success
  *   <0 on error
  */
-__rte_experimental
 int
 rte_power_pmd_mgmt_set_scaling_freq_min(unsigned int lcore, unsigned int min);
 
 /**
- * @warning
- * @b EXPERIMENTAL: this API may change, or be removed, without prior notice.
- *
  * Set the max frequency to be used for frequency scaling or zero to use defaults.
  *
  * @note Supported by: Pstate mode.
@@ -182,14 +151,10 @@ rte_power_pmd_mgmt_set_scaling_freq_min(unsigned int lcore, unsigned int min);
  *   0 on success
  *   <0 on error
  */
-__rte_experimental
 int
 rte_power_pmd_mgmt_set_scaling_freq_max(unsigned int lcore, unsigned int max);
 
 /**
- * @warning
- * @b EXPERIMENTAL: this API may change, or be removed, without prior notice.
- *
  * Get the current configured min frequency used for frequency scaling.
  *
  * @note Supported by: Pstate mode.
@@ -202,14 +167,10 @@ rte_power_pmd_mgmt_set_scaling_freq_max(unsigned int lcore, unsigned int max);
  *   , in KiloHertz, used for frequency scaling.
  *   <0 on error
  */
-__rte_experimental
 int
 rte_power_pmd_mgmt_get_scaling_freq_min(unsigned int lcore);
 
 /**
- * @warning
- * @b EXPERIMENTAL: this API may change, or be removed, without prior notice.
- *
  * Get the current configured max frequency used for frequency scaling.
  *
  * @note Supported by: Pstate mode.
@@ -222,7 +183,6 @@ rte_power_pmd_mgmt_get_scaling_freq_min(unsigned int lcore);
  *   , in KiloHertz, used for frequency scaling.
  *   <0 on error
  */
-__rte_experimental
 int
 rte_power_pmd_mgmt_get_scaling_freq_max(unsigned int lcore);
 
diff --git a/lib/power/rte_power_uncore.h b/lib/power/rte_power_uncore.h
index 295017b7f429..45d5235302c2 100644
--- a/lib/power/rte_power_uncore.h
+++ b/lib/power/rte_power_uncore.h
@@ -38,14 +38,12 @@ enum rte_uncore_power_mgmt_env {
  *  - 0 on success.
  *  - Negative on error.
  */
-__rte_experimental
 int rte_power_set_uncore_env(enum rte_uncore_power_mgmt_env env);
 
 /**
  * Unset the global uncore environment configuration.
  * This can only be called after all threads have completed.
  */
-__rte_experimental
 void rte_power_unset_uncore_env(void);
 
 /**
@@ -54,7 +52,6 @@ void rte_power_unset_uncore_env(void);
  * @return
  *  power_management_env The configured environment.
  */
-__rte_experimental
 enum rte_uncore_power_mgmt_env rte_power_get_uncore_env(void);
 
 /**
@@ -74,7 +71,6 @@ enum rte_uncore_power_mgmt_env rte_power_get_uncore_env(void);
  *  - 0 on success.
  *  - Negative on error.
  */
-__rte_experimental
 int
 rte_power_uncore_init(unsigned int pkg, unsigned int die);
 
@@ -96,7 +92,6 @@ rte_power_uncore_init(unsigned int pkg, unsigned int die);
  *  - 0 on success.
  *  - Negative on error.
  */
-__rte_experimental
 int
 rte_power_uncore_exit(unsigned int pkg, unsigned int die);
 
diff --git a/lib/power/version.map b/lib/power/version.map
index 53627b59f189..177ef3e2dd54 100644
--- a/lib/power/version.map
+++ b/lib/power/version.map
@@ -1,6 +1,9 @@
 DPDK_24 {
 	global:
 
+	rte_power_check_env_supported;
+	rte_power_ethdev_pmgmt_queue_disable;
+	rte_power_ethdev_pmgmt_queue_enable;
 	rte_power_exit;
 	rte_power_freq_disable_turbo;
 	rte_power_freq_down;
@@ -12,27 +15,11 @@ DPDK_24 {
 	rte_power_get_capabilities;
 	rte_power_get_env;
 	rte_power_get_freq;
+	rte_power_get_uncore_env;
+	rte_power_get_uncore_freq;
+	rte_power_guest_channel_receive_msg;
 	rte_power_guest_channel_send_msg;
 	rte_power_init;
-	rte_power_set_env;
-	rte_power_set_freq;
-	rte_power_turbo_status;
-	rte_power_unset_env;
-
-	local: *;
-};
-
-EXPERIMENTAL {
-	global:
-
-	rte_power_check_env_supported;
-	rte_power_guest_channel_receive_msg;
-
-	# added in 21.02
-	rte_power_ethdev_pmgmt_queue_disable;
-	rte_power_ethdev_pmgmt_queue_enable;
-
-	# added in 22.07
 	rte_power_pmd_mgmt_get_emptypoll_max;
 	rte_power_pmd_mgmt_get_pause_duration;
 	rte_power_pmd_mgmt_get_scaling_freq_max;
@@ -41,21 +28,20 @@ EXPERIMENTAL {
 	rte_power_pmd_mgmt_set_pause_duration;
 	rte_power_pmd_mgmt_set_scaling_freq_max;
 	rte_power_pmd_mgmt_set_scaling_freq_min;
-
-	# added in 22.11
-	rte_power_get_uncore_freq;
+	rte_power_set_env;
+	rte_power_set_freq;
+	rte_power_set_uncore_env;
 	rte_power_set_uncore_freq;
+	rte_power_turbo_status;
 	rte_power_uncore_exit;
 	rte_power_uncore_freq_max;
 	rte_power_uncore_freq_min;
+	rte_power_uncore_freqs;
 	rte_power_uncore_get_num_dies;
 	rte_power_uncore_get_num_freqs;
 	rte_power_uncore_get_num_pkgs;
 	rte_power_uncore_init;
-
-	# added in 23.11
-	rte_power_get_uncore_env;
-	rte_power_set_uncore_env;
-	rte_power_uncore_freqs;
 	rte_power_unset_uncore_env;
+
+	local: *;
 };
-- 
2.39.2


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

* [PATCH v4 17/28] kvargs: remove experimental flag
  2023-10-19 19:09 ` [PATCH v4 00/28] Promote many experimental API's to stable Stephen Hemminger
                     ` (15 preceding siblings ...)
  2023-10-19 19:10   ` [PATCH v4 16/28] power: remove experimental from API's Stephen Hemminger
@ 2023-10-19 19:10   ` Stephen Hemminger
  2023-10-19 19:10   ` [PATCH v4 18/28] ip_frag: mark a couple of functions stable Stephen Hemminger
                     ` (10 subsequent siblings)
  27 siblings, 0 replies; 219+ messages in thread
From: Stephen Hemminger @ 2023-10-19 19:10 UTC (permalink / raw)
  To: dev; +Cc: Stephen Hemminger, Bruce Richardson

The function rte_kvargs_get_with_value was added in 21.11
so experimental flag can be removed.

Signed-off-by: Stephen Hemminger <stephen@networkplumber.org>
Acked-by: Bruce Richardson <bruce.richardson@intel.com>
---
 lib/kvargs/rte_kvargs.h | 4 ----
 lib/kvargs/version.map  | 8 +-------
 2 files changed, 1 insertion(+), 11 deletions(-)

diff --git a/lib/kvargs/rte_kvargs.h b/lib/kvargs/rte_kvargs.h
index 4900b750bc0b..36804cfb1543 100644
--- a/lib/kvargs/rte_kvargs.h
+++ b/lib/kvargs/rte_kvargs.h
@@ -145,9 +145,6 @@ void rte_kvargs_free(struct rte_kvargs *kvlist);
 const char *rte_kvargs_get(const struct rte_kvargs *kvlist, const char *key);
 
 /**
- * @warning
- * @b EXPERIMENTAL: this API may change without prior notice
- *
  * Get the value associated with a given key and value.
  *
  * Find the first entry in the kvlist whose key and value match the
@@ -167,7 +164,6 @@ const char *rte_kvargs_get(const struct rte_kvargs *kvlist, const char *key);
  *   NULL if no key matches the input,
  *   a value associated with a matching key otherwise.
  */
-__rte_experimental
 const char *rte_kvargs_get_with_value(const struct rte_kvargs *kvlist,
 				      const char *key, const char *value);
 
diff --git a/lib/kvargs/version.map b/lib/kvargs/version.map
index 387a94e725cf..cda85d171f32 100644
--- a/lib/kvargs/version.map
+++ b/lib/kvargs/version.map
@@ -4,16 +4,10 @@ DPDK_24 {
 	rte_kvargs_count;
 	rte_kvargs_free;
 	rte_kvargs_get;
+	rte_kvargs_get_with_value;
 	rte_kvargs_parse;
 	rte_kvargs_parse_delim;
 	rte_kvargs_process;
 
 	local: *;
 };
-
-EXPERIMENTAL {
-	global:
-
-	# added in 21.11
-	rte_kvargs_get_with_value;
-};
-- 
2.39.2


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

* [PATCH v4 18/28] ip_frag: mark a couple of functions stable
  2023-10-19 19:09 ` [PATCH v4 00/28] Promote many experimental API's to stable Stephen Hemminger
                     ` (16 preceding siblings ...)
  2023-10-19 19:10   ` [PATCH v4 17/28] kvargs: remove experimental flag Stephen Hemminger
@ 2023-10-19 19:10   ` Stephen Hemminger
  2023-10-19 19:10   ` [PATCH v4 19/28] member: remove experimental tag Stephen Hemminger
                     ` (9 subsequent siblings)
  27 siblings, 0 replies; 219+ messages in thread
From: Stephen Hemminger @ 2023-10-19 19:10 UTC (permalink / raw)
  To: dev; +Cc: Stephen Hemminger, Konstantin Ananyev

There were two functions added in 22.11 which were
marked as experimental. Remove the experimental tag.

Signed-off-by: Stephen Hemminger <stephen@networkplumber.org>
Acked-by: Konstantin Ananyev <konstantin.v.ananyev@yandex.ru>
---
 lib/ip_frag/rte_ip_frag.h | 2 --
 lib/ip_frag/version.map   | 9 ++-------
 2 files changed, 2 insertions(+), 9 deletions(-)

diff --git a/lib/ip_frag/rte_ip_frag.h b/lib/ip_frag/rte_ip_frag.h
index feab72ae64b9..cd3a3e143ee7 100644
--- a/lib/ip_frag/rte_ip_frag.h
+++ b/lib/ip_frag/rte_ip_frag.h
@@ -205,7 +205,6 @@ int32_t rte_ipv4_fragment_packet(struct rte_mbuf *pkt_in,
  *   in the pkts_out array.
  *   Otherwise - (-1) * errno.
  */
-__rte_experimental
 int32_t
 rte_ipv4_fragment_copy_nonseg_packet(struct rte_mbuf *pkt_in,
 	struct rte_mbuf **pkts_out,
@@ -289,7 +288,6 @@ rte_ip_frag_table_statistics_dump(FILE * f, const struct rte_ip_frag_tbl *tbl);
  * @param tms
  *   Current timestamp
  */
-__rte_experimental
 void
 rte_ip_frag_table_del_expired_entries(struct rte_ip_frag_tbl *tbl,
 	struct rte_ip_frag_death_row *dr, uint64_t tms);
diff --git a/lib/ip_frag/version.map b/lib/ip_frag/version.map
index 7ba446c9938b..3e7e573dc412 100644
--- a/lib/ip_frag/version.map
+++ b/lib/ip_frag/version.map
@@ -3,19 +3,14 @@ DPDK_24 {
 
 	rte_ip_frag_free_death_row;
 	rte_ip_frag_table_create;
+	rte_ip_frag_table_del_expired_entries;
 	rte_ip_frag_table_destroy;
 	rte_ip_frag_table_statistics_dump;
 	rte_ipv4_frag_reassemble_packet;
+	rte_ipv4_fragment_copy_nonseg_packet;
 	rte_ipv4_fragment_packet;
 	rte_ipv6_frag_reassemble_packet;
 	rte_ipv6_fragment_packet;
 
 	local: *;
 };
-
-EXPERIMENTAL {
-	global:
-
-	rte_ip_frag_table_del_expired_entries;
-	rte_ipv4_fragment_copy_nonseg_packet;
-};
-- 
2.39.2


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

* [PATCH v4 19/28] member: remove experimental tag
  2023-10-19 19:09 ` [PATCH v4 00/28] Promote many experimental API's to stable Stephen Hemminger
                     ` (17 preceding siblings ...)
  2023-10-19 19:10   ` [PATCH v4 18/28] ip_frag: mark a couple of functions stable Stephen Hemminger
@ 2023-10-19 19:10   ` Stephen Hemminger
  2023-10-19 19:10   ` [PATCH v4 20/28] security: remove experimental flag from macsec Stephen Hemminger
                     ` (8 subsequent siblings)
  27 siblings, 0 replies; 219+ messages in thread
From: Stephen Hemminger @ 2023-10-19 19:10 UTC (permalink / raw)
  To: dev; +Cc: Stephen Hemminger, Yipeng Wang, Sameh Gobriel

The member library last received new API's in 22.11.
All the API's should be marked stable by now.

Signed-off-by: Stephen Hemminger <stephen@networkplumber.org>
---
 lib/member/rte_member.h | 54 -----------------------------------------
 lib/member/version.map  | 12 +++------
 2 files changed, 3 insertions(+), 63 deletions(-)

diff --git a/lib/member/rte_member.h b/lib/member/rte_member.h
index a15e0d69e696..a6bf22651700 100644
--- a/lib/member/rte_member.h
+++ b/lib/member/rte_member.h
@@ -15,9 +15,6 @@
  * bloom filter (vBF). For HT setsummary, two subtypes or modes are available,
  * cache and non-cache modes. The table below summarize some properties of
  * the different implementations.
- *
- * @warning
- * @b EXPERIMENTAL: this API may change without prior notice
  */
 
 /**
@@ -117,17 +114,11 @@ extern int librte_member_logtype;
 struct rte_member_setsum;
 
 /**
- * @warning
- * @b EXPERIMENTAL: this API may change without prior notice
- *
  * Parameter struct used to create set summary
  */
 struct rte_member_parameters;
 
 /**
- * @warning
- * @b EXPERIMENTAL: this API may change without prior notice
- *
  * Define different set summary types
  */
 enum rte_member_setsum_type {
@@ -207,9 +198,6 @@ struct rte_member_setsum {
 } __rte_cache_aligned;
 
 /**
- * @warning
- * @b EXPERIMENTAL: this API may change without prior notice
- *
  * Parameters used when create the set summary table. Currently user can
  * specify two types of setsummary: HT based and vBF. For HT based, user can
  * specify cache or non-cache mode. Here is a table to describe some differences
@@ -351,9 +339,6 @@ struct rte_member_parameters {
 } __rte_cache_aligned;
 
 /**
- * @warning
- * @b EXPERIMENTAL: this API may change without prior notice
- *
  * Find an existing set-summary and return a pointer to it.
  *
  * @param name
@@ -367,9 +352,6 @@ struct rte_member_setsum *
 rte_member_find_existing(const char *name);
 
 /**
- * @warning
- * @b EXPERIMENTAL: this API may change without prior notice
- *
  * Create set-summary (SS).
  *
  * @param params
@@ -382,9 +364,6 @@ struct rte_member_setsum *
 rte_member_create(const struct rte_member_parameters *params);
 
 /**
- * @warning
- * @b EXPERIMENTAL: this API may change without prior notice
- *
  * Lookup key in set-summary (SS).
  * Single key lookup and return as soon as the first match found
  *
@@ -402,9 +381,6 @@ rte_member_lookup(const struct rte_member_setsum *setsum, const void *key,
 			member_set_t *set_id);
 
 /**
- * @warning
- * @b EXPERIMENTAL: this API may change without prior notice
- *
  * Lookup bulk of keys in set-summary (SS).
  * Each key lookup returns as soon as the first match found
  *
@@ -427,9 +403,6 @@ rte_member_lookup_bulk(const struct rte_member_setsum *setsum,
 			member_set_t *set_ids);
 
 /**
- * @warning
- * @b EXPERIMENTAL: this API may change without prior notice
- *
  * Lookup a key in set-summary (SS) for multiple matches.
  * The key lookup will find all matched entries (multiple match).
  * Note that for cache mode of HT, each key can have at most one match. This is
@@ -456,9 +429,6 @@ rte_member_lookup_multi(const struct rte_member_setsum *setsum,
 		member_set_t *set_id);
 
 /**
- * @warning
- * @b EXPERIMENTAL: this API may change without prior notice
- *
  * Lookup a bulk of keys in set-summary (SS) for multiple matches each key.
  * Each key lookup will find all matched entries (multiple match).
  * Note that for cache mode HT, each key can have at most one match. So
@@ -489,9 +459,6 @@ rte_member_lookup_multi_bulk(const struct rte_member_setsum *setsum,
 		member_set_t *set_ids);
 
 /**
- * @warning
- * @b EXPERIMENTAL: this API may change without prior notice
- *
  * Insert key into set-summary (SS).
  *
  * @param setsum
@@ -522,9 +489,6 @@ rte_member_add(const struct rte_member_setsum *setsum, const void *key,
 			member_set_t set_id);
 
 /**
- * @warning
- * @b EXPERIMENTAL: this API may change without prior notice
- *
  * Add the packet byte size into the sketch.
  *
  * @param setsum
@@ -536,15 +500,11 @@ rte_member_add(const struct rte_member_setsum *setsum, const void *key,
  * @return
  * Return -EINVAL for invalid parameters, otherwise return 0.
  */
-__rte_experimental
 int
 rte_member_add_byte_count(const struct rte_member_setsum *setsum,
 			  const void *key, uint32_t byte_count);
 
 /**
- * @warning
- * @b EXPERIMENTAL: this API may change without prior notice
- *
  * Query packet count for a certain flow-key.
  *
  * @param setsum
@@ -556,16 +516,12 @@ rte_member_add_byte_count(const struct rte_member_setsum *setsum,
  * @return
  *   Return -EINVAL for invalid parameters.
  */
-__rte_experimental
 int
 rte_member_query_count(const struct rte_member_setsum *setsum,
 		       const void *key, uint64_t *count);
 
 
 /**
- * @warning
- * @b EXPERIMENTAL: this API may change without prior notice
- *
  * Report heavyhitter flow-keys into set-summary (SS).
  *
  * @param setsum
@@ -578,16 +534,12 @@ rte_member_query_count(const struct rte_member_setsum *setsum,
  *   Return -EINVAL for invalid parameters. Return a positive integer indicate
  *   how many heavy hitters are reported.
  */
-__rte_experimental
 int
 rte_member_report_heavyhitter(const struct rte_member_setsum *setsum,
 			      void **keys, uint64_t *counts);
 
 
 /**
- * @warning
- * @b EXPERIMENTAL: this API may change without prior notice
- *
  * De-allocate memory used by set-summary.
  *
  * @param setsum
@@ -598,9 +550,6 @@ void
 rte_member_free(struct rte_member_setsum *setsum);
 
 /**
- * @warning
- * @b EXPERIMENTAL: this API may change without prior notice
- *
  * Reset the set-summary tables. E.g. reset bits to be 0 in BF,
  * reset set_id in each entry to be RTE_MEMBER_NO_MATCH in HT based SS.
  *
@@ -611,9 +560,6 @@ void
 rte_member_reset(const struct rte_member_setsum *setsum);
 
 /**
- * @warning
- * @b EXPERIMENTAL: this API may change without prior notice
- *
  * Delete items from the set-summary. Note that vBF does not support deletion
  * in current implementation. For vBF, error code of -EINVAL will be returned.
  *
diff --git a/lib/member/version.map b/lib/member/version.map
index 9be5068d68fb..3aeba8826ba1 100644
--- a/lib/member/version.map
+++ b/lib/member/version.map
@@ -2,6 +2,7 @@ DPDK_24 {
 	global:
 
 	rte_member_add;
+	rte_member_add_byte_count;
 	rte_member_create;
 	rte_member_delete;
 	rte_member_find_existing;
@@ -10,16 +11,9 @@ DPDK_24 {
 	rte_member_lookup_bulk;
 	rte_member_lookup_multi;
 	rte_member_lookup_multi_bulk;
+	rte_member_query_count;
+	rte_member_report_heavyhitter;
 	rte_member_reset;
 
 	local: *;
 };
-
-EXPERIMENTAL {
-	global:
-
-	# added in 22.11
-	rte_member_add_byte_count;
-	rte_member_query_count;
-	rte_member_report_heavyhitter;
-};
-- 
2.39.2


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

* [PATCH v4 20/28] security: remove experimental flag from macsec
  2023-10-19 19:09 ` [PATCH v4 00/28] Promote many experimental API's to stable Stephen Hemminger
                     ` (18 preceding siblings ...)
  2023-10-19 19:10   ` [PATCH v4 19/28] member: remove experimental tag Stephen Hemminger
@ 2023-10-19 19:10   ` Stephen Hemminger
  2023-10-19 19:10   ` [PATCH v4 21/28] vhost: remove experimental from some API's Stephen Hemminger
                     ` (7 subsequent siblings)
  27 siblings, 0 replies; 219+ messages in thread
From: Stephen Hemminger @ 2023-10-19 19:10 UTC (permalink / raw)
  To: dev; +Cc: Stephen Hemminger, Akhil Goyal

The rte_security API's for macsec were added in 22.11.
Therefore remove the experimental tag.

There is also one helper function for setting packet
metadata that should have been marked internal.

Signed-off-by: Stephen Hemminger <stephen@networkplumber.org>
---
 lib/security/rte_security.h | 27 ---------------------------
 lib/security/version.map    | 18 +++++++++---------
 2 files changed, 9 insertions(+), 36 deletions(-)

diff --git a/lib/security/rte_security.h b/lib/security/rte_security.h
index d2d2af23d5d2..a19544906f21 100644
--- a/lib/security/rte_security.h
+++ b/lib/security/rte_security.h
@@ -815,7 +815,6 @@ rte_security_session_create(void *instance,
  *  - On success returns 0
  *  - On failure returns a negative errno value.
  */
-__rte_experimental
 int
 rte_security_session_update(void *instance,
 			    void *sess,
@@ -851,9 +850,6 @@ int
 rte_security_session_destroy(void *instance, void *sess);
 
 /**
- * @warning
- * @b EXPERIMENTAL: this API may change without prior notice
- *
  * Create MACsec security channel (SC).
  *
  * @param   instance	security instance
@@ -865,15 +861,11 @@ rte_security_session_destroy(void *instance, void *sess);
  *  - -ENOMEM if PMD is not capable to create more SC.
  *  - other negative value for other errors.
  */
-__rte_experimental
 int
 rte_security_macsec_sc_create(void *instance,
 			      struct rte_security_macsec_sc *conf);
 
 /**
- * @warning
- * @b EXPERIMENTAL: this API may change without prior notice
- *
  * Destroy MACsec security channel (SC).
  *
  * @param   instance	security instance
@@ -884,15 +876,11 @@ rte_security_macsec_sc_create(void *instance,
  *  - -EINVAL if sc_id is invalid or instance is NULL.
  *  - -EBUSY if sc is being used by some session.
  */
-__rte_experimental
 int
 rte_security_macsec_sc_destroy(void *instance, uint16_t sc_id,
 			       enum rte_security_macsec_direction dir);
 
 /**
- * @warning
- * @b EXPERIMENTAL: this API may change without prior notice
- *
  * Create MACsec security association (SA).
  *
  * @param   instance	security instance
@@ -904,15 +892,11 @@ rte_security_macsec_sc_destroy(void *instance, uint16_t sc_id,
  *  - -ENOMEM if PMD is not capable to create more SAs.
  *  - other negative value for other errors.
  */
-__rte_experimental
 int
 rte_security_macsec_sa_create(void *instance,
 			      struct rte_security_macsec_sa *conf);
 
 /**
- * @warning
- * @b EXPERIMENTAL: this API may change without prior notice
- *
  * Destroy MACsec security association (SA).
  *
  * @param   instance	security instance
@@ -923,7 +907,6 @@ rte_security_macsec_sa_create(void *instance,
  *  - -EINVAL if sa_id is invalid or instance is NULL.
  *  - -EBUSY if sa is being used by some session.
  */
-__rte_experimental
 int
 rte_security_macsec_sa_destroy(void *instance, uint16_t sa_id,
 			       enum rte_security_macsec_direction dir);
@@ -1059,7 +1042,6 @@ rte_security_session_fast_mdata_set(void *sess, uint64_t fdata)
 }
 
 /** Function to call PMD specific function pointer set_pkt_metadata() */
-__rte_experimental
 int __rte_security_set_pkt_metadata(void *instance,
 				    void *sess,
 				    struct rte_mbuf *m, void *params);
@@ -1230,16 +1212,12 @@ struct rte_security_stats {
  *  - On success, return 0
  *  - On failure, a negative value
  */
-__rte_experimental
 int
 rte_security_session_stats_get(void *instance,
 			       void *sess,
 			       struct rte_security_stats *stats);
 
 /**
- * @warning
- * @b EXPERIMENTAL: this API may change without prior notice
- *
  * Get MACsec SA statistics.
  *
  * @param	instance	security instance
@@ -1250,16 +1228,12 @@ rte_security_session_stats_get(void *instance,
  *  - On success, return 0.
  *  - On failure, a negative value.
  */
-__rte_experimental
 int
 rte_security_macsec_sa_stats_get(void *instance,
 				 uint16_t sa_id, enum rte_security_macsec_direction dir,
 				 struct rte_security_macsec_sa_stats *stats);
 
 /**
- * @warning
- * @b EXPERIMENTAL: this API may change without prior notice
- *
  * Get MACsec SC statistics.
  *
  * @param	instance	security instance
@@ -1270,7 +1244,6 @@ rte_security_macsec_sa_stats_get(void *instance,
  *  - On success, return 0.
  *  - On failure, a negative value.
  */
-__rte_experimental
 int
 rte_security_macsec_sc_stats_get(void *instance,
 				 uint16_t sc_id, enum rte_security_macsec_direction dir,
diff --git a/lib/security/version.map b/lib/security/version.map
index e07fca33a1e6..54c9a556798d 100644
--- a/lib/security/version.map
+++ b/lib/security/version.map
@@ -1,19 +1,12 @@
 DPDK_24 {
 	global:
 
+	__rte_security_set_pkt_metadata;
 	rte_security_capabilities_get;
 	rte_security_capability_get;
 	rte_security_session_create;
 	rte_security_session_destroy;
 	rte_security_session_get_size;
-
-	local: *;
-};
-
-EXPERIMENTAL {
-	global:
-
-	__rte_security_set_pkt_metadata;
 	rte_security_dynfield_offset;
 	rte_security_macsec_sa_create;
 	rte_security_macsec_sa_destroy;
@@ -23,8 +16,15 @@ EXPERIMENTAL {
 	rte_security_macsec_sc_stats_get;
 	rte_security_session_stats_get;
 	rte_security_session_update;
-	rte_security_oop_dynfield_offset;
 
+	local: *;
+};
+
+EXPERIMENTAL {
+	global:
+
+	# Added in 23.11
+	rte_security_oop_dynfield_offset;
 	rte_security_rx_inject_configure;
 	rte_security_inb_pkt_rx_inject;
 };
-- 
2.39.2


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

* [PATCH v4 21/28] vhost: remove experimental from some API's
  2023-10-19 19:09 ` [PATCH v4 00/28] Promote many experimental API's to stable Stephen Hemminger
                     ` (19 preceding siblings ...)
  2023-10-19 19:10   ` [PATCH v4 20/28] security: remove experimental flag from macsec Stephen Hemminger
@ 2023-10-19 19:10   ` Stephen Hemminger
  2023-10-20  8:03     ` Maxime Coquelin
  2023-10-19 19:10   ` [PATCH v4 22/28] bbdev: remove experimental tag Stephen Hemminger
                     ` (6 subsequent siblings)
  27 siblings, 1 reply; 219+ messages in thread
From: Stephen Hemminger @ 2023-10-19 19:10 UTC (permalink / raw)
  To: dev; +Cc: Stephen Hemminger, Maxime Coquelin, Chenbo Xia

All API's that before 22.11 release should have experimental
tag removed.

Signed-off-by: Stephen Hemminger <stephen@networkplumber.org>
---
 lib/vhost/rte_vhost.h        |  5 ----
 lib/vhost/rte_vhost_async.h  | 19 --------------
 lib/vhost/rte_vhost_crypto.h |  1 -
 lib/vhost/version.map        | 51 ++++++++++++++----------------------
 4 files changed, 19 insertions(+), 57 deletions(-)

diff --git a/lib/vhost/rte_vhost.h b/lib/vhost/rte_vhost.h
index fec650b1dbba..db92f0534431 100644
--- a/lib/vhost/rte_vhost.h
+++ b/lib/vhost/rte_vhost.h
@@ -509,7 +509,6 @@ rte_vhost_driver_get_vdpa_device(const char *path);
  * @return
  *  0 on success, -1 on failure
  */
-__rte_experimental
 int
 rte_vhost_driver_get_vdpa_dev_type(const char *path, uint32_t *type);
 
@@ -648,7 +647,6 @@ int rte_vhost_get_negotiated_features(int vid, uint64_t *features);
  * @return
  *  0 on success, -1 on failure
  */
-__rte_experimental
 int
 rte_vhost_get_negotiated_protocol_features(int vid,
 					   uint64_t *protocol_features);
@@ -960,7 +958,6 @@ int rte_vhost_vring_call(int vid, uint16_t vring_idx);
  * @return
  *  0 on success, -1 on failure, -EAGAIN for another retry
  */
-__rte_experimental
 int rte_vhost_vring_call_nonblock(int vid, uint16_t vring_idx);
 
 /**
@@ -987,7 +984,6 @@ uint32_t rte_vhost_rx_queue_count(int vid, uint16_t qid);
  * @return
  *  0 on success, -1 on failure
  */
-__rte_experimental
 int
 rte_vhost_get_monitor_addr(int vid, uint16_t queue_id,
 		struct rte_vhost_power_monitor_cond *pmc);
@@ -1102,7 +1098,6 @@ rte_vhost_get_vdpa_device(int vid);
  * @return
  *  0 on success, < 0 on failure
  */
-__rte_experimental
 int
 rte_vhost_backend_config_change(int vid, bool need_reply);
 
diff --git a/lib/vhost/rte_vhost_async.h b/lib/vhost/rte_vhost_async.h
index 8f190dd44b1b..3370026415fb 100644
--- a/lib/vhost/rte_vhost_async.h
+++ b/lib/vhost/rte_vhost_async.h
@@ -24,7 +24,6 @@ extern "C" {
  * @return
  *  0 on success, -1 on failures
  */
-__rte_experimental
 int rte_vhost_async_channel_register(int vid, uint16_t queue_id);
 
 /**
@@ -37,7 +36,6 @@ int rte_vhost_async_channel_register(int vid, uint16_t queue_id);
  * @return
  *  0 on success, -1 on failures
  */
-__rte_experimental
 int rte_vhost_async_channel_unregister(int vid, uint16_t queue_id);
 
 /**
@@ -54,7 +52,6 @@ int rte_vhost_async_channel_unregister(int vid, uint16_t queue_id);
  * @return
  *  0 on success, -1 on failures
  */
-__rte_experimental
 int rte_vhost_async_channel_register_thread_unsafe(int vid, uint16_t queue_id);
 
 /**
@@ -71,7 +68,6 @@ int rte_vhost_async_channel_register_thread_unsafe(int vid, uint16_t queue_id);
  * @return
  *  0 on success, -1 on failures
  */
-__rte_experimental
 int rte_vhost_async_channel_unregister_thread_unsafe(int vid,
 		uint16_t queue_id);
 
@@ -95,7 +91,6 @@ int rte_vhost_async_channel_unregister_thread_unsafe(int vid,
  * @return
  *  num of packets enqueued
  */
-__rte_experimental
 uint16_t rte_vhost_submit_enqueue_burst(int vid, uint16_t queue_id,
 		struct rte_mbuf **pkts, uint16_t count, int16_t dma_id,
 		uint16_t vchan_id);
@@ -120,7 +115,6 @@ uint16_t rte_vhost_submit_enqueue_burst(int vid, uint16_t queue_id,
  * @return
  *  num of packets returned
  */
-__rte_experimental
 uint16_t rte_vhost_poll_enqueue_completed(int vid, uint16_t queue_id,
 		struct rte_mbuf **pkts, uint16_t count, int16_t dma_id,
 		uint16_t vchan_id);
@@ -136,7 +130,6 @@ uint16_t rte_vhost_poll_enqueue_completed(int vid, uint16_t queue_id,
  * @return
  *  the amount of in-flight packets on success; -1 on failure
  */
-__rte_experimental
 int rte_vhost_async_get_inflight(int vid, uint16_t queue_id);
 
 /**
@@ -153,7 +146,6 @@ int rte_vhost_async_get_inflight(int vid, uint16_t queue_id);
  * @return
  * the amount of in-flight packets on success; -1 on failure
  */
-__rte_experimental
 int rte_vhost_async_get_inflight_thread_unsafe(int vid, uint16_t queue_id);
 
 /**
@@ -178,7 +170,6 @@ int rte_vhost_async_get_inflight_thread_unsafe(int vid, uint16_t queue_id);
  * @return
  *  Number of packets returned
  */
-__rte_experimental
 uint16_t rte_vhost_clear_queue_thread_unsafe(int vid, uint16_t queue_id,
 		struct rte_mbuf **pkts, uint16_t count, int16_t dma_id,
 		uint16_t vchan_id);
@@ -203,7 +194,6 @@ uint16_t rte_vhost_clear_queue_thread_unsafe(int vid, uint16_t queue_id,
  * @return
  *  Number of packets returned
  */
-__rte_experimental
 uint16_t rte_vhost_clear_queue(int vid, uint16_t queue_id,
 		struct rte_mbuf **pkts, uint16_t count, int16_t dma_id,
 		uint16_t vchan_id);
@@ -226,13 +216,9 @@ uint16_t rte_vhost_clear_queue(int vid, uint16_t queue_id,
  * @return
  *  0 on success, and -1 on failure
  */
-__rte_experimental
 int rte_vhost_async_dma_configure(int16_t dma_id, uint16_t vchan_id);
 
 /**
- * @warning
- * @b EXPERIMENTAL: this API may change, or be removed, without prior notice
- *
  * This function tries to receive packets from the guest with offloading
  * copies to the DMA vChannels. Successfully dequeued packets are returned
  * in "pkts". The other packets that their copies are submitted to
@@ -260,16 +246,12 @@ int rte_vhost_async_dma_configure(int16_t dma_id, uint16_t vchan_id);
  * @return
  *  Number of successfully dequeued packets
  */
-__rte_experimental
 uint16_t
 rte_vhost_async_try_dequeue_burst(int vid, uint16_t queue_id,
 	struct rte_mempool *mbuf_pool, struct rte_mbuf **pkts, uint16_t count,
 	int *nr_inflight, int16_t dma_id, uint16_t vchan_id);
 
 /**
- * @warning
- * @b EXPERIMENTAL: this API may change, or be removed, without prior notice.
- *
  * Unconfigure DMA vChannel in Vhost asynchronous data path.
  * This function should be called when the specified DMA vChannel is no longer
  * used by the Vhost library. Before this function is called, make sure there
@@ -282,7 +264,6 @@ rte_vhost_async_try_dequeue_burst(int vid, uint16_t queue_id,
  * @return
  *  0 on success, and -1 on failure
  */
-__rte_experimental
 int
 rte_vhost_async_dma_unconfigure(int16_t dma_id, uint16_t vchan_id);
 
diff --git a/lib/vhost/rte_vhost_crypto.h b/lib/vhost/rte_vhost_crypto.h
index 2b01ecda0880..71a30ba202be 100644
--- a/lib/vhost/rte_vhost_crypto.h
+++ b/lib/vhost/rte_vhost_crypto.h
@@ -40,7 +40,6 @@ enum rte_vhost_crypto_zero_copy {
  * @return
  *  0 on success, -1 on failure
  */
-__rte_experimental
 int
 rte_vhost_crypto_driver_start(const char *path);
 
diff --git a/lib/vhost/version.map b/lib/vhost/version.map
index 5bc133dafda2..9696c4d91fe8 100644
--- a/lib/vhost/version.map
+++ b/lib/vhost/version.map
@@ -9,10 +9,23 @@ DPDK_24 {
 	rte_vdpa_get_stats;
 	rte_vdpa_get_stats_names;
 	rte_vdpa_reset_stats;
+	rte_vhost_async_channel_register;
+	rte_vhost_async_channel_register_thread_unsafe;
+	rte_vhost_async_channel_unregister;
+	rte_vhost_async_channel_unregister_thread_unsafe;
+	rte_vhost_async_dma_configure;
+	rte_vhost_async_dma_unconfigure;
+	rte_vhost_async_get_inflight;
+	rte_vhost_async_get_inflight_thread_unsafe;
+	rte_vhost_async_try_dequeue_burst;
 	rte_vhost_avail_entries;
+	rte_vhost_backend_config_change;
+	rte_vhost_clear_queue;
+	rte_vhost_clear_queue_thread_unsafe;
 	rte_vhost_clr_inflight_desc_packed;
 	rte_vhost_clr_inflight_desc_split;
 	rte_vhost_crypto_create;
+	rte_vhost_crypto_driver_start;
 	rte_vhost_crypto_fetch_requests;
 	rte_vhost_crypto_finalize_requests;
 	rte_vhost_crypto_free;
@@ -26,6 +39,7 @@ DPDK_24 {
 	rte_vhost_driver_get_features;
 	rte_vhost_driver_get_protocol_features;
 	rte_vhost_driver_get_queue_num;
+	rte_vhost_driver_get_vdpa_dev_type;
 	rte_vhost_driver_get_vdpa_device;
 	rte_vhost_driver_register;
 	rte_vhost_driver_set_features;
@@ -38,8 +52,10 @@ DPDK_24 {
 	rte_vhost_get_ifname;
 	rte_vhost_get_log_base;
 	rte_vhost_get_mem_table;
+	rte_vhost_get_monitor_addr;
 	rte_vhost_get_mtu;
 	rte_vhost_get_negotiated_features;
+	rte_vhost_get_negotiated_protocol_features;
 	rte_vhost_get_numa_node;
 	rte_vhost_get_vdpa_device;
 	rte_vhost_get_vhost_ring_inflight;
@@ -49,14 +65,17 @@ DPDK_24 {
 	rte_vhost_get_vring_num;
 	rte_vhost_log_used_vring;
 	rte_vhost_log_write;
+	rte_vhost_poll_enqueue_completed;
 	rte_vhost_rx_queue_count;
 	rte_vhost_set_inflight_desc_packed;
 	rte_vhost_set_inflight_desc_split;
 	rte_vhost_set_last_inflight_io_packed;
 	rte_vhost_set_last_inflight_io_split;
 	rte_vhost_set_vring_base;
+	rte_vhost_submit_enqueue_burst;
 	rte_vhost_va_from_guest_pa;
 	rte_vhost_vring_call;
+	rte_vhost_vring_call_nonblock;
 	rte_vhost_vring_stats_get;
 	rte_vhost_vring_stats_get_names;
 	rte_vhost_vring_stats_reset;
@@ -67,38 +86,6 @@ DPDK_24 {
 EXPERIMENTAL {
 	global:
 
-	rte_vhost_crypto_driver_start;
-	rte_vhost_backend_config_change;
-	rte_vhost_async_channel_register;
-	rte_vhost_async_channel_unregister;
-	rte_vhost_submit_enqueue_burst;
-	rte_vhost_poll_enqueue_completed;
-
-	# added in 21.05
-	rte_vhost_get_negotiated_protocol_features;
-
-	# added in 21.08
-	rte_vhost_async_get_inflight;
-	rte_vhost_async_channel_register_thread_unsafe;
-	rte_vhost_async_channel_unregister_thread_unsafe;
-	rte_vhost_clear_queue_thread_unsafe;
-
-	# added in 21.11
-	rte_vhost_get_monitor_addr;
-
-	# added in 22.03
-	rte_vhost_async_dma_configure;
-
-	# added in 22.07
-	rte_vhost_async_get_inflight_thread_unsafe;
-	rte_vhost_async_try_dequeue_burst;
-	rte_vhost_driver_get_vdpa_dev_type;
-	rte_vhost_clear_queue;
-
-	# added in 22.11
-	rte_vhost_async_dma_unconfigure;
-	rte_vhost_vring_call_nonblock;
-
 	# added in 23.07
 	rte_vhost_driver_set_max_queue_num;
 	rte_vhost_notify_guest;
-- 
2.39.2


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

* [PATCH v4 22/28] bbdev: remove experimental tag
  2023-10-19 19:09 ` [PATCH v4 00/28] Promote many experimental API's to stable Stephen Hemminger
                     ` (20 preceding siblings ...)
  2023-10-19 19:10   ` [PATCH v4 21/28] vhost: remove experimental from some API's Stephen Hemminger
@ 2023-10-19 19:10   ` 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
                     ` (5 subsequent siblings)
  27 siblings, 1 reply; 219+ messages in thread
From: Stephen Hemminger @ 2023-10-19 19:10 UTC (permalink / raw)
  To: dev; +Cc: Stephen Hemminger, Nicolas Chautru

The API's for bbdev were last added to in 22.11.
Remove experimental flag now.

Signed-off-by: Stephen Hemminger <stephen@networkplumber.org>
---
 lib/bbdev/rte_bbdev.h    |  4 ----
 lib/bbdev/rte_bbdev_op.h |  2 --
 lib/bbdev/version.map    | 15 +++++++--------
 3 files changed, 7 insertions(+), 14 deletions(-)

diff --git a/lib/bbdev/rte_bbdev.h b/lib/bbdev/rte_bbdev.h
index d12e2e7fbcf3..b43e98ef9d1b 100644
--- a/lib/bbdev/rte_bbdev.h
+++ b/lib/bbdev/rte_bbdev.h
@@ -675,7 +675,6 @@ rte_bbdev_enqueue_ldpc_dec_ops(uint16_t dev_id, uint16_t queue_id,
  *   The number of operations actually enqueued.
  *   (This is the number of processed entries in the @p ops array.)
  */
-__rte_experimental
 static inline uint16_t
 rte_bbdev_enqueue_fft_ops(uint16_t dev_id, uint16_t queue_id,
 		struct rte_bbdev_fft_op **ops, uint16_t num_ops)
@@ -860,7 +859,6 @@ rte_bbdev_dequeue_ldpc_dec_ops(uint16_t dev_id, uint16_t queue_id,
  *   The number of operations actually dequeued (this is the number of entries
  *   copied into the @p ops array).
  */
-__rte_experimental
 static inline uint16_t
 rte_bbdev_dequeue_fft_ops(uint16_t dev_id, uint16_t queue_id,
 		struct rte_bbdev_fft_op **ops, uint16_t num_ops)
@@ -1042,7 +1040,6 @@ rte_bbdev_queue_intr_ctl(uint16_t dev_id, uint16_t queue_id, int epfd, int op,
  * @returns
  *   Device status as string or NULL if invalid.
  */
-__rte_experimental
 const char*
 rte_bbdev_device_status_str(enum rte_bbdev_device_status status);
 
@@ -1055,7 +1052,6 @@ rte_bbdev_device_status_str(enum rte_bbdev_device_status status);
  * @returns
  *   Queue status as string or NULL if op_type is invalid.
  */
-__rte_experimental
 const char*
 rte_bbdev_enqueue_status_str(enum rte_bbdev_enqueue_status status);
 
diff --git a/lib/bbdev/rte_bbdev_op.h b/lib/bbdev/rte_bbdev_op.h
index 369ac331bf9b..459631d0d0b7 100644
--- a/lib/bbdev/rte_bbdev_op.h
+++ b/lib/bbdev/rte_bbdev_op.h
@@ -1130,7 +1130,6 @@ rte_bbdev_dec_op_alloc_bulk(struct rte_mempool *mempool,
  *   - 0 on success.
  *   - EINVAL if invalid mempool is provided.
  */
-__rte_experimental
 static inline int
 rte_bbdev_fft_op_alloc_bulk(struct rte_mempool *mempool,
 		struct rte_bbdev_fft_op **ops, unsigned int num_ops)
@@ -1220,7 +1219,6 @@ rte_bbdev_enc_op_free_bulk(struct rte_bbdev_enc_op **ops, unsigned int num_ops)
  * @param num_ops
  *   Number of structures.
  */
-__rte_experimental
 static inline void
 rte_bbdev_fft_op_free_bulk(struct rte_bbdev_fft_op **ops, unsigned int num_ops)
 {
diff --git a/lib/bbdev/version.map b/lib/bbdev/version.map
index eeb7ed475a6c..1840d2b2a491 100644
--- a/lib/bbdev/version.map
+++ b/lib/bbdev/version.map
@@ -10,11 +10,17 @@ DPDK_24 {
 	rte_bbdev_dec_op_free_bulk;
 	rte_bbdev_dequeue_dec_ops;
 	rte_bbdev_dequeue_enc_ops;
+	rte_bbdev_dequeue_fft_ops;
+	rte_bbdev_device_status_str;
 	rte_bbdev_devices;
 	rte_bbdev_enc_op_alloc_bulk;
 	rte_bbdev_enc_op_free_bulk;
 	rte_bbdev_enqueue_dec_ops;
 	rte_bbdev_enqueue_enc_ops;
+	rte_bbdev_enqueue_fft_ops;
+	rte_bbdev_enqueue_status_str;
+	rte_bbdev_fft_op_alloc_bulk;
+	rte_bbdev_fft_op_free_bulk;
 	rte_bbdev_find_next;
 	rte_bbdev_get_named_dev;
 	rte_bbdev_info_get;
@@ -43,14 +49,7 @@ DPDK_24 {
 EXPERIMENTAL {
 	global:
 
-	# added in 22.11
-	rte_bbdev_dequeue_fft_ops;
-	rte_bbdev_device_status_str;
-	rte_bbdev_enqueue_fft_ops;
-	rte_bbdev_enqueue_status_str;
-	rte_bbdev_fft_op_alloc_bulk;
-	rte_bbdev_fft_op_free_bulk;
-	#added in 23.11
+	# added in 23.11
 	rte_bbdev_dequeue_mldts_ops;
 	rte_bbdev_enqueue_mldts_ops;
 	rte_bbdev_mldts_op_alloc_bulk;
-- 
2.39.2


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

* [PATCH v4 23/28] ipsec: remove experimental from SA API
  2023-10-19 19:09 ` [PATCH v4 00/28] Promote many experimental API's to stable Stephen Hemminger
                     ` (21 preceding siblings ...)
  2023-10-19 19:10   ` [PATCH v4 22/28] bbdev: remove experimental tag Stephen Hemminger
@ 2023-10-19 19:10   ` Stephen Hemminger
  2023-10-19 19:10   ` [PATCH v4 24/28] compressdev: remove experimental flag Stephen Hemminger
                     ` (4 subsequent siblings)
  27 siblings, 0 replies; 219+ messages in thread
From: Stephen Hemminger @ 2023-10-19 19:10 UTC (permalink / raw)
  To: dev; +Cc: Stephen Hemminger, Konstantin Ananyev, Vladimir Medvedkin

These API's were added in 21.11, remove experimental flag.

Signed-off-by: Stephen Hemminger <stephen@networkplumber.org>
Acked-by: Konstantin Ananyev <konstantin.v.ananyev@yandex.ru>
---
 lib/ipsec/rte_ipsec.h | 2 --
 lib/ipsec/version.map | 9 +--------
 2 files changed, 1 insertion(+), 10 deletions(-)

diff --git a/lib/ipsec/rte_ipsec.h b/lib/ipsec/rte_ipsec.h
index 04129926b69f..81624f909192 100644
--- a/lib/ipsec/rte_ipsec.h
+++ b/lib/ipsec/rte_ipsec.h
@@ -168,7 +168,6 @@ rte_ipsec_pkt_process(const struct rte_ipsec_session *ss, struct rte_mbuf *mb[],
  * @return
  *   0 on success, negative value otherwise.
  */
-__rte_experimental
 int
 rte_ipsec_telemetry_sa_add(const struct rte_ipsec_sa *sa);
 
@@ -178,7 +177,6 @@ rte_ipsec_telemetry_sa_add(const struct rte_ipsec_sa *sa);
  * @param sa
  *   Pointer to the *rte_ipsec_sa* object that will have telemetry disabled.
  */
-__rte_experimental
 void
 rte_ipsec_telemetry_sa_del(const struct rte_ipsec_sa *sa);
 
diff --git a/lib/ipsec/version.map b/lib/ipsec/version.map
index f0063af354f0..9d01ebeadc4c 100644
--- a/lib/ipsec/version.map
+++ b/lib/ipsec/version.map
@@ -16,15 +16,8 @@ DPDK_24 {
 	rte_ipsec_sad_lookup;
 	rte_ipsec_ses_from_crypto;
 	rte_ipsec_session_prepare;
-
-	local: *;
-};
-
-EXPERIMENTAL {
-	global:
-
-	# added in 21.11
 	rte_ipsec_telemetry_sa_add;
 	rte_ipsec_telemetry_sa_del;
 
+	local: *;
 };
-- 
2.39.2


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

* [PATCH v4 24/28] compressdev: remove experimental flag
  2023-10-19 19:09 ` [PATCH v4 00/28] Promote many experimental API's to stable Stephen Hemminger
                     ` (22 preceding siblings ...)
  2023-10-19 19:10   ` [PATCH v4 23/28] ipsec: remove experimental from SA API Stephen Hemminger
@ 2023-10-19 19:10   ` Stephen Hemminger
  2023-10-19 19:10   ` [PATCH v4 25/28] regexdev: remove experimental tag Stephen Hemminger
                     ` (3 subsequent siblings)
  27 siblings, 0 replies; 219+ messages in thread
From: Stephen Hemminger @ 2023-10-19 19:10 UTC (permalink / raw)
  To: dev; +Cc: Stephen Hemminger, Thomas Monjalon, Fan Zhang, Ashish Gupta

The compressdev can not hide under the experimental flag.
Remove the experimental flag and require ABI to be stable.

Signed-off-by: Stephen Hemminger <stephen@networkplumber.org>
---
 MAINTAINERS                           |  2 +-
 lib/compressdev/rte_comp.h            |  6 ------
 lib/compressdev/rte_compressdev.h     | 26 --------------------------
 lib/compressdev/rte_compressdev_pmd.h |  6 ------
 lib/compressdev/version.map           |  2 +-
 5 files changed, 2 insertions(+), 40 deletions(-)

diff --git a/MAINTAINERS b/MAINTAINERS
index 1534a414f754..a1d4d57107a3 100644
--- a/MAINTAINERS
+++ b/MAINTAINERS
@@ -459,7 +459,7 @@ F: lib/security/
 F: doc/guides/prog_guide/rte_security.rst
 F: app/test/test_security*
 
-Compression API - EXPERIMENTAL
+Compression API
 M: Fan Zhang <fanzhang.oss@gmail.com>
 M: Ashish Gupta <ashish.gupta@marvell.com>
 T: git://dpdk.org/next/dpdk-next-crypto
diff --git a/lib/compressdev/rte_comp.h b/lib/compressdev/rte_comp.h
index bf896d07223c..232564cf5e9a 100644
--- a/lib/compressdev/rte_comp.h
+++ b/lib/compressdev/rte_comp.h
@@ -499,7 +499,6 @@ struct rte_comp_op {
  *  - On success pointer to mempool
  *  - On failure NULL
  */
-__rte_experimental
 struct rte_mempool *
 rte_comp_op_pool_create(const char *name,
 		unsigned int nb_elts, unsigned int cache_size,
@@ -515,7 +514,6 @@ rte_comp_op_pool_create(const char *name,
  * - On success returns a valid rte_comp_op structure
  * - On failure returns NULL
  */
-__rte_experimental
 struct rte_comp_op *
 rte_comp_op_alloc(struct rte_mempool *mempool);
 
@@ -532,7 +530,6 @@ rte_comp_op_alloc(struct rte_mempool *mempool);
  *   - nb_ops: Success, the nb_ops requested was allocated
  *   - 0: Not enough entries in the mempool; no ops are retrieved.
  */
-__rte_experimental
 int
 rte_comp_op_bulk_alloc(struct rte_mempool *mempool,
 		struct rte_comp_op **ops, uint16_t nb_ops);
@@ -546,7 +543,6 @@ rte_comp_op_bulk_alloc(struct rte_mempool *mempool,
  *   Compress operation pointer allocated from rte_comp_op_alloc()
  *   If op is NULL, no operation is performed.
  */
-__rte_experimental
 void
 rte_comp_op_free(struct rte_comp_op *op);
 
@@ -561,7 +557,6 @@ rte_comp_op_free(struct rte_comp_op *op);
  * @param nb_ops
  *   Number of operations to free
  */
-__rte_experimental
 void
 rte_comp_op_bulk_free(struct rte_comp_op **ops, uint16_t nb_ops);
 
@@ -574,7 +569,6 @@ rte_comp_op_bulk_free(struct rte_comp_op **ops, uint16_t nb_ops);
  * @return
  *   The name of this flag, or NULL if it's not a valid feature flag.
  */
-__rte_experimental
 const char *
 rte_comp_get_feature_name(uint64_t flag);
 
diff --git a/lib/compressdev/rte_compressdev.h b/lib/compressdev/rte_compressdev.h
index 13a418631893..8cb5db0e3f7d 100644
--- a/lib/compressdev/rte_compressdev.h
+++ b/lib/compressdev/rte_compressdev.h
@@ -10,10 +10,6 @@
  *
  * RTE Compression Device APIs.
  *
- * @warning
- * @b EXPERIMENTAL:
- * All functions in this file may be changed or removed without prior notice.
- *
  * Defines comp device APIs for the provisioning of compression operations.
  */
 
@@ -54,7 +50,6 @@ struct rte_compressdev_capabilities {
 #define RTE_COMP_END_OF_CAPABILITIES_LIST() \
 	{ RTE_COMP_ALGO_UNSPECIFIED }
 
-__rte_experimental
 const struct rte_compressdev_capabilities *
 rte_compressdev_capability_get(uint8_t dev_id,
 			enum rte_comp_algorithm algo);
@@ -94,7 +89,6 @@ rte_compressdev_capability_get(uint8_t dev_id,
  * @return
  *   The name of this flag, or NULL if it's not a valid feature flag.
  */
-__rte_experimental
 const char *
 rte_compressdev_get_feature_name(uint64_t flag);
 
@@ -133,7 +127,6 @@ struct rte_compressdev_stats {
  *   - Returns compress device identifier on success.
  *   - Return -1 on failure to find named compress device.
  */
-__rte_experimental
 int
 rte_compressdev_get_dev_id(const char *name);
 
@@ -146,7 +139,6 @@ rte_compressdev_get_dev_id(const char *name);
  *   - Returns compress device name.
  *   - Returns NULL if compress device is not present.
  */
-__rte_experimental
 const char *
 rte_compressdev_name_get(uint8_t dev_id);
 
@@ -157,7 +149,6 @@ rte_compressdev_name_get(uint8_t dev_id);
  * @return
  *   - The total number of usable compress devices.
  */
-__rte_experimental
 uint8_t
 rte_compressdev_count(void);
 
@@ -175,7 +166,6 @@ rte_compressdev_count(void);
  * @return
  *   Returns number of attached compress devices.
  */
-__rte_experimental
 uint8_t
 rte_compressdev_devices_get(const char *driver_name, uint8_t *devices,
 		uint8_t nb_devices);
@@ -190,7 +180,6 @@ rte_compressdev_devices_get(const char *driver_name, uint8_t *devices,
  *   a default of zero if the socket could not be determined.
  *   -1 if returned is the dev_id value is out of range.
  */
-__rte_experimental
 int
 rte_compressdev_socket_id(uint8_t dev_id);
 
@@ -221,7 +210,6 @@ struct rte_compressdev_config {
  *   - 0: Success, device configured.
  *   - <0: Error code returned by the driver configuration function.
  */
-__rte_experimental
 int
 rte_compressdev_configure(uint8_t dev_id,
 			struct rte_compressdev_config *config);
@@ -240,7 +228,6 @@ rte_compressdev_configure(uint8_t dev_id,
  *   - 0: Success, device started.
  *   - <0: Error code of the driver device start function.
  */
-__rte_experimental
 int
 rte_compressdev_start(uint8_t dev_id);
 
@@ -251,7 +238,6 @@ rte_compressdev_start(uint8_t dev_id);
  * @param dev_id
  *   Compress device identifier
  */
-__rte_experimental
 void
 rte_compressdev_stop(uint8_t dev_id);
 
@@ -269,7 +255,6 @@ rte_compressdev_stop(uint8_t dev_id);
  *  - 0 on successfully closing device
  *  - <0 on failure to close device
  */
-__rte_experimental
 int
 rte_compressdev_close(uint8_t dev_id);
 
@@ -296,7 +281,6 @@ rte_compressdev_close(uint8_t dev_id);
  *   - 0: Success, queue pair correctly set up.
  *   - <0: Queue pair configuration failed
  */
-__rte_experimental
 int
 rte_compressdev_queue_pair_setup(uint8_t dev_id, uint16_t queue_pair_id,
 		uint32_t max_inflight_ops, int socket_id);
@@ -309,7 +293,6 @@ rte_compressdev_queue_pair_setup(uint8_t dev_id, uint16_t queue_pair_id,
  * @return
  *   - The number of configured queue pairs.
  */
-__rte_experimental
 uint16_t
 rte_compressdev_queue_pair_count(uint8_t dev_id);
 
@@ -327,7 +310,6 @@ rte_compressdev_queue_pair_count(uint8_t dev_id);
  *   - Zero if successful.
  *   - Non-zero otherwise.
  */
-__rte_experimental
 int
 rte_compressdev_stats_get(uint8_t dev_id, struct rte_compressdev_stats *stats);
 
@@ -337,7 +319,6 @@ rte_compressdev_stats_get(uint8_t dev_id, struct rte_compressdev_stats *stats);
  * @param dev_id
  *   The identifier of the device.
  */
-__rte_experimental
 void
 rte_compressdev_stats_reset(uint8_t dev_id);
 
@@ -355,7 +336,6 @@ rte_compressdev_stats_reset(uint8_t dev_id);
  * The element after the last valid element has it's op field set to
  * RTE_COMP_ALGO_UNSPECIFIED.
  */
-__rte_experimental
 void
 rte_compressdev_info_get(uint8_t dev_id, struct rte_compressdev_info *dev_info);
 
@@ -413,7 +393,6 @@ rte_compressdev_info_get(uint8_t dev_id, struct rte_compressdev_info *dev_info);
  *   of pointers to *rte_comp_op* structures effectively supplied to the
  *   *ops* array.
  */
-__rte_experimental
 uint16_t
 rte_compressdev_dequeue_burst(uint8_t dev_id, uint16_t qp_id,
 		struct rte_comp_op **ops, uint16_t nb_ops);
@@ -468,7 +447,6 @@ rte_compressdev_dequeue_burst(uint8_t dev_id, uint16_t qp_id,
  *   comp devices queue is full or if invalid parameters are specified in
  *   a *rte_comp_op*.
  */
-__rte_experimental
 uint16_t
 rte_compressdev_enqueue_burst(uint8_t dev_id, uint16_t qp_id,
 		struct rte_comp_op **ops, uint16_t nb_ops);
@@ -496,7 +474,6 @@ rte_compressdev_enqueue_burst(uint8_t dev_id, uint16_t qp_id,
  *  - Returns -ENOTSUP if comp device does not support the comp transform.
  *  - Returns -ENOMEM if the private stream could not be allocated.
  */
-__rte_experimental
 int
 rte_compressdev_stream_create(uint8_t dev_id,
 		const struct rte_comp_xform *xform,
@@ -518,7 +495,6 @@ rte_compressdev_stream_create(uint8_t dev_id,
  *  - Returns -ENOTSUP if comp device does not support STATEFUL operations.
  *  - Returns -EBUSY if can't free stream as there are inflight operations
  */
-__rte_experimental
 int
 rte_compressdev_stream_free(uint8_t dev_id, void *stream);
 
@@ -545,7 +521,6 @@ rte_compressdev_stream_free(uint8_t dev_id, void *stream);
  *  - Returns -ENOTSUP if comp device does not support the comp transform.
  *  - Returns -ENOMEM if the private_xform could not be allocated.
  */
-__rte_experimental
 int
 rte_compressdev_private_xform_create(uint8_t dev_id,
 		const struct rte_comp_xform *xform,
@@ -567,7 +542,6 @@ rte_compressdev_private_xform_create(uint8_t dev_id,
  *  - <0 in error cases
  *  - Returns -EINVAL if input parameters are invalid.
  */
-__rte_experimental
 int
 rte_compressdev_private_xform_free(uint8_t dev_id, void *private_xform);
 
diff --git a/lib/compressdev/rte_compressdev_pmd.h b/lib/compressdev/rte_compressdev_pmd.h
index ea012908b783..fa233492fe1f 100644
--- a/lib/compressdev/rte_compressdev_pmd.h
+++ b/lib/compressdev/rte_compressdev_pmd.h
@@ -59,7 +59,6 @@ struct rte_compressdev_global {
  * @return
  *   - The rte_compressdev structure pointer for the given device identifier.
  */
-__rte_experimental
 struct rte_compressdev *
 rte_compressdev_pmd_get_named_dev(const char *name);
 
@@ -292,7 +291,6 @@ struct rte_compressdev_ops {
  * @return
  *   - Slot in the rte_dev_devices array for a new device;
  */
-__rte_experimental
 struct rte_compressdev *
 rte_compressdev_pmd_allocate(const char *name, int socket_id);
 
@@ -308,7 +306,6 @@ rte_compressdev_pmd_allocate(const char *name, int socket_id);
  * @return
  *   - 0 on success, negative on error
  */
-__rte_experimental
 int
 rte_compressdev_pmd_release_device(struct rte_compressdev *dev);
 
@@ -331,7 +328,6 @@ rte_compressdev_pmd_release_device(struct rte_compressdev *dev);
  *  - 0 on success
  *  - errno on failure
  */
-__rte_experimental
 int
 rte_compressdev_pmd_parse_input_args(
 		struct rte_compressdev_pmd_init_params *params,
@@ -353,7 +349,6 @@ rte_compressdev_pmd_parse_input_args(
  *  - comp device instance on success
  *  - NULL on creation failure
  */
-__rte_experimental
 struct rte_compressdev *
 rte_compressdev_pmd_create(const char *name,
 		struct rte_device *device,
@@ -372,7 +367,6 @@ rte_compressdev_pmd_create(const char *name,
  *  - 0 on success
  *  - errno on failure
  */
-__rte_experimental
 int
 rte_compressdev_pmd_destroy(struct rte_compressdev *dev);
 
diff --git a/lib/compressdev/version.map b/lib/compressdev/version.map
index e2a108b6509f..fa891f669b5d 100644
--- a/lib/compressdev/version.map
+++ b/lib/compressdev/version.map
@@ -1,4 +1,4 @@
-EXPERIMENTAL {
+DPDK_24 {
 	global:
 
 	rte_compressdev_capability_get;
-- 
2.39.2


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

* [PATCH v4 25/28] regexdev: remove experimental tag
  2023-10-19 19:09 ` [PATCH v4 00/28] Promote many experimental API's to stable Stephen Hemminger
                     ` (23 preceding siblings ...)
  2023-10-19 19:10   ` [PATCH v4 24/28] compressdev: remove experimental flag Stephen Hemminger
@ 2023-10-19 19:10   ` Stephen Hemminger
  2023-10-19 19:10   ` [PATCH v4 26/28] node: remove some of the experimental tags Stephen Hemminger
                     ` (2 subsequent siblings)
  27 siblings, 0 replies; 219+ messages in thread
From: Stephen Hemminger @ 2023-10-19 19:10 UTC (permalink / raw)
  To: dev; +Cc: Stephen Hemminger, Ori Kam

This library was added in 22.11.
Time to make it not experimental.

Signed-off-by: Stephen Hemminger <stephen@networkplumber.org>
---
 lib/regexdev/rte_regexdev.h | 92 -------------------------------------
 lib/regexdev/version.map    |  2 +-
 2 files changed, 1 insertion(+), 93 deletions(-)

diff --git a/lib/regexdev/rte_regexdev.h b/lib/regexdev/rte_regexdev.h
index d50af775b551..3ea1f0c061a0 100644
--- a/lib/regexdev/rte_regexdev.h
+++ b/lib/regexdev/rte_regexdev.h
@@ -226,9 +226,6 @@ extern int rte_regexdev_logtype;
 } while (0)
 
 /**
- * @warning
- * @b EXPERIMENTAL: this API may change without prior notice.
- *
  * Check if dev_id is ready.
  *
  * @param dev_id
@@ -238,27 +235,19 @@ extern int rte_regexdev_logtype;
  *   - 0 if device state is not in ready state.
  *   - 1 if device state is ready state.
  */
-__rte_experimental
 int rte_regexdev_is_valid_dev(uint16_t dev_id);
 
 /**
- * @warning
- * @b EXPERIMENTAL: this API may change without prior notice.
- *
  * Get the total number of RegEx devices that have been successfully
  * initialised.
  *
  * @return
  *   The total number of usable RegEx devices.
  */
-__rte_experimental
 uint8_t
 rte_regexdev_count(void);
 
 /**
- * @warning
- * @b EXPERIMENTAL: this API may change without prior notice.
- *
  * Get the device identifier for the named RegEx device.
  *
  * @param name
@@ -268,7 +257,6 @@ rte_regexdev_count(void);
  *   Returns RegEx device identifier on success.
  *   - <0: Failure to find named RegEx device.
  */
-__rte_experimental
 int
 rte_regexdev_get_dev_id(const char *name);
 
@@ -628,9 +616,6 @@ struct rte_regexdev_info {
 };
 
 /**
- * @warning
- * @b EXPERIMENTAL: this API may change without prior notice.
- *
  * Retrieve the contextual information of a RegEx device.
  *
  * @param dev_id
@@ -644,7 +629,6 @@ struct rte_regexdev_info {
  *   - 0: Success, driver updates the contextual information of the RegEx device
  *   - <0: Error code returned by the driver info get function.
  */
-__rte_experimental
 int
 rte_regexdev_info_get(uint8_t dev_id, struct rte_regexdev_info *dev_info);
 
@@ -723,9 +707,6 @@ struct rte_regexdev_config {
 };
 
 /**
- * @warning
- * @b EXPERIMENTAL: this API may change without prior notice.
- *
  * Configure a RegEx device.
  *
  * This function must be invoked first before any other function in the
@@ -743,7 +724,6 @@ struct rte_regexdev_config {
  * @return
  *   - 0: Success, device configured. Otherwise negative errno is returned.
  */
-__rte_experimental
 int
 rte_regexdev_configure(uint8_t dev_id, const struct rte_regexdev_config *cfg);
 
@@ -782,9 +762,6 @@ struct rte_regexdev_qp_conf {
 };
 
 /**
- * @warning
- * @b EXPERIMENTAL: this API may change without prior notice.
- *
  * Allocate and set up a RegEx queue pair for a RegEx device.
  *
  * @param dev_id
@@ -799,15 +776,11 @@ struct rte_regexdev_qp_conf {
  * @return
  *   0 on success. Otherwise negative errno is returned.
  */
-__rte_experimental
 int
 rte_regexdev_queue_pair_setup(uint8_t dev_id, uint16_t queue_pair_id,
 			      const struct rte_regexdev_qp_conf *qp_conf);
 
 /**
- * @warning
- * @b EXPERIMENTAL: this API may change without prior notice.
- *
  * Start a RegEx device.
  *
  * The device start step is the last one and consists of setting the RegEx
@@ -822,14 +795,10 @@ rte_regexdev_queue_pair_setup(uint8_t dev_id, uint16_t queue_pair_id,
  * @return
  *   0 on success. Otherwise negative errno is returned.
  */
-__rte_experimental
 int
 rte_regexdev_start(uint8_t dev_id);
 
 /**
- * @warning
- * @b EXPERIMENTAL: this API may change without prior notice.
- *
  * Stop a RegEx device.
  *
  * Stop a RegEx device. The device can be restarted with a call to
@@ -845,14 +814,10 @@ rte_regexdev_start(uint8_t dev_id);
  * @return
  *   0 on success. Otherwise negative errno is returned.
  */
-__rte_experimental
 int
 rte_regexdev_stop(uint8_t dev_id);
 
 /**
- * @warning
- * @b EXPERIMENTAL: this API may change without prior notice.
- *
  * Close a RegEx device. The device cannot be restarted!
  *
  * @param dev_id
@@ -861,7 +826,6 @@ rte_regexdev_stop(uint8_t dev_id);
  * @return
  *   0 on success. Otherwise negative errno is returned.
  */
-__rte_experimental
 int
 rte_regexdev_close(uint8_t dev_id);
 
@@ -897,9 +861,6 @@ enum rte_regexdev_attr_id {
 };
 
 /**
- * @warning
- * @b EXPERIMENTAL: this API may change without prior notice.
- *
  * Get an attribute from a RegEx device.
  *
  * @param dev_id
@@ -915,15 +876,11 @@ enum rte_regexdev_attr_id {
  *   - -EINVAL: Invalid device or  *attr_id* provided, or *attr_value* is NULL.
  *   - -ENOTSUP: if the device doesn't support specific *attr_id*.
  */
-__rte_experimental
 int
 rte_regexdev_attr_get(uint8_t dev_id, enum rte_regexdev_attr_id attr_id,
 		      void *attr_value);
 
 /**
- * @warning
- * @b EXPERIMENTAL: this API may change without prior notice.
- *
  * Set an attribute to a RegEx device.
  *
  * @param dev_id
@@ -939,7 +896,6 @@ rte_regexdev_attr_get(uint8_t dev_id, enum rte_regexdev_attr_id attr_id,
  *   - -EINVAL: Invalid device or  *attr_id* provided, or *attr_value* is NULL.
  *   - -ENOTSUP: if the device doesn't support specific *attr_id*.
  */
-__rte_experimental
 int
 rte_regexdev_attr_set(uint8_t dev_id, enum rte_regexdev_attr_id attr_id,
 		      const void *attr_value);
@@ -975,9 +931,6 @@ struct rte_regexdev_rule {
 };
 
 /**
- * @warning
- * @b EXPERIMENTAL: this API may change without prior notice.
- *
  * Update the local rule set.
  * This functions only modify the rule set in memory.
  * In order for the changes to take effect, the function
@@ -1008,16 +961,12 @@ struct rte_regexdev_rule {
  * @see rte_regexdev_rule_db_import(), rte_regexdev_rule_db_export(),
  *   rte_regexdev_rule_db_compile_activate()
  */
-__rte_experimental
 int
 rte_regexdev_rule_db_update(uint8_t dev_id,
 			    const struct rte_regexdev_rule *rules,
 			    uint32_t nb_rules);
 
 /**
- * @warning
- * @b EXPERIMENTAL: this API may change without prior notice.
- *
  * Compile local rule set and burn the complied result to the
  * RegEx device.
  *
@@ -1030,14 +979,10 @@ rte_regexdev_rule_db_update(uint8_t dev_id,
  * @see rte_regexdev_rule_db_import(), rte_regexdev_rule_db_export(),
  *   rte_regexdev_rule_db_update()
  */
-__rte_experimental
 int
 rte_regexdev_rule_db_compile_activate(uint8_t dev_id);
 
 /**
- * @warning
- * @b EXPERIMENTAL: this API may change without prior notice.
- *
  * Import a prebuilt rule database from a buffer to a RegEx device.
  *
  * @param dev_id
@@ -1055,15 +1000,11 @@ rte_regexdev_rule_db_compile_activate(uint8_t dev_id);
  *
  * @see rte_regexdev_rule_db_update(), rte_regexdev_rule_db_export()
  */
-__rte_experimental
 int
 rte_regexdev_rule_db_import(uint8_t dev_id, const char *rule_db,
 			    uint32_t rule_db_len);
 
 /**
- * @warning
- * @b EXPERIMENTAL: this API may change without prior notice.
- *
  * Export the prebuilt rule database from a RegEx device to the buffer.
  *
  * @param dev_id
@@ -1080,7 +1021,6 @@ rte_regexdev_rule_db_import(uint8_t dev_id, const char *rule_db,
  *
  * @see rte_regexdev_rule_db_update(), rte_regexdev_rule_db_import()
  */
-__rte_experimental
 int
 rte_regexdev_rule_db_export(uint8_t dev_id, char *rule_db);
 
@@ -1102,9 +1042,6 @@ struct rte_regexdev_xstats_map {
 };
 
 /**
- * @warning
- * @b EXPERIMENTAL: this API may change without prior notice.
- *
  * Retrieve names of extended statistics of a regex device.
  *
  * @param dev_id
@@ -1120,15 +1057,11 @@ struct rte_regexdev_xstats_map {
  *      -ENODEV for invalid *dev_id*
  *      -ENOTSUP if the device doesn't support this function.
  */
-__rte_experimental
 int
 rte_regexdev_xstats_names_get(uint8_t dev_id,
 			      struct rte_regexdev_xstats_map *xstats_map);
 
 /**
- * @warning
- * @b EXPERIMENTAL: this API may change without prior notice.
- *
  * Retrieve extended statistics of an regex device.
  *
  * @param dev_id
@@ -1147,15 +1080,11 @@ rte_regexdev_xstats_names_get(uint8_t dev_id,
  *      -ENODEV for invalid *dev_id*
  *      -ENOTSUP if the device doesn't support this function.
  */
-__rte_experimental
 int
 rte_regexdev_xstats_get(uint8_t dev_id, const uint16_t *ids,
 			uint64_t *values, uint16_t nb_values);
 
 /**
- * @warning
- * @b EXPERIMENTAL: this API may change without prior notice.
- *
  * Retrieve the value of a single stat by requesting it by name.
  *
  * @param dev_id
@@ -1174,15 +1103,11 @@ rte_regexdev_xstats_get(uint8_t dev_id, const uint16_t *ids,
  *   - -EINVAL: invalid parameters
  *   - -ENOTSUP: if not supported.
  */
-__rte_experimental
 int
 rte_regexdev_xstats_by_name_get(uint8_t dev_id, const char *name,
 				uint16_t *id, uint64_t *value);
 
 /**
- * @warning
- * @b EXPERIMENTAL: this API may change without prior notice.
- *
  * Reset the values of the xstats of the selected component in the device.
  *
  * @param dev_id
@@ -1198,15 +1123,11 @@ rte_regexdev_xstats_by_name_get(uint8_t dev_id, const char *name,
  *   - -EINVAL: invalid parameters.
  *   - -ENOTSUP: if not supported.
  */
-__rte_experimental
 int
 rte_regexdev_xstats_reset(uint8_t dev_id, const uint16_t *ids,
 			  uint16_t nb_ids);
 
 /**
- * @warning
- * @b EXPERIMENTAL: this API may change without prior notice.
- *
  * Trigger the RegEx device self test.
  *
  * @param dev_id
@@ -1216,14 +1137,10 @@ rte_regexdev_xstats_reset(uint8_t dev_id, const uint16_t *ids,
  *   - -ENOTSUP if the device doesn't support selftest.
  *   - other values < 0 on failure.
  */
-__rte_experimental
 int
 rte_regexdev_selftest(uint8_t dev_id);
 
 /**
- * @warning
- * @b EXPERIMENTAL: this API may change without prior notice.
- *
  * Dump internal information about *dev_id* to the FILE* provided in *f*.
  *
  * @param dev_id
@@ -1234,7 +1151,6 @@ rte_regexdev_selftest(uint8_t dev_id);
  * @return
  *   0 on success, negative errno on failure.
  */
-__rte_experimental
 int
 rte_regexdev_dump(uint8_t dev_id, FILE *f);
 
@@ -1428,9 +1344,6 @@ struct rte_regex_ops {
 #include "rte_regexdev_core.h"
 
 /**
- * @warning
- * @b EXPERIMENTAL: this API may change without prior notice.
- *
  * Enqueue a burst of scan request on a RegEx device.
  *
  * The rte_regexdev_enqueue_burst() function is invoked to place
@@ -1464,7 +1377,6 @@ struct rte_regex_ops {
  *   remaining ops at the end of *ops* are not consumed and the caller has
  *   to take care of them.
  */
-__rte_experimental
 static inline uint16_t
 rte_regexdev_enqueue_burst(uint8_t dev_id, uint16_t qp_id,
 			   struct rte_regex_ops **ops, uint16_t nb_ops)
@@ -1483,9 +1395,6 @@ rte_regexdev_enqueue_burst(uint8_t dev_id, uint16_t qp_id,
 }
 
 /**
- * @warning
- * @b EXPERIMENTAL: this API may change without prior notice.
- *
  * Dequeue a burst of scan response from a queue on the RegEx device.
  * The dequeued operation are stored in *rte_regexdev_op* structures
  * whose pointers are supplied in the *ops* array.
@@ -1524,7 +1433,6 @@ rte_regexdev_enqueue_burst(uint8_t dev_id, uint16_t qp_id,
  *   ops at the end of *ops* are not consumed and the caller has to take care
  *   of them.
  */
-__rte_experimental
 static inline uint16_t
 rte_regexdev_dequeue_burst(uint8_t dev_id, uint16_t qp_id,
 			   struct rte_regex_ops **ops, uint16_t nb_ops)
diff --git a/lib/regexdev/version.map b/lib/regexdev/version.map
index 3c6e9fffa1f5..914bd19dfd94 100644
--- a/lib/regexdev/version.map
+++ b/lib/regexdev/version.map
@@ -1,4 +1,4 @@
-EXPERIMENTAL {
+DPDK_24 {
 	global:
 
 	rte_regex_devices;
-- 
2.39.2


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

* [PATCH v4 26/28] node: remove some of the experimental tags
  2023-10-19 19:09 ` [PATCH v4 00/28] Promote many experimental API's to stable Stephen Hemminger
                     ` (24 preceding siblings ...)
  2023-10-19 19:10   ` [PATCH v4 25/28] regexdev: remove experimental tag Stephen Hemminger
@ 2023-10-19 19:10   ` Stephen Hemminger
  2023-10-19 19:10   ` [PATCH v4 27/28] table: remove experimental from API Stephen Hemminger
  2023-10-19 19:10   ` [PATCH v4 28/28] port: make API's stable Stephen Hemminger
  27 siblings, 0 replies; 219+ messages in thread
From: Stephen Hemminger @ 2023-10-19 19:10 UTC (permalink / raw)
  To: dev
  Cc: Stephen Hemminger, Thomas Monjalon, Nithin Dabilpuram, Pavan Nikhilesh

The node library has been around long enough that experimental
tag should be removed.  The IPv6 support was added in 23.03
but that is still enough time that it can be marked stable.

The logtype variable should have been marked internal
since it is not intended to be used outside of library.

Signed-off-by: Stephen Hemminger <stephen@networkplumber.org>
---
 MAINTAINERS                 |  2 +-
 lib/node/rte_node_eth_api.h |  1 -
 lib/node/rte_node_ip4_api.h |  2 --
 lib/node/version.map        | 16 ++++++++++++----
 4 files changed, 13 insertions(+), 8 deletions(-)

diff --git a/MAINTAINERS b/MAINTAINERS
index a1d4d57107a3..fff979cb939d 100644
--- a/MAINTAINERS
+++ b/MAINTAINERS
@@ -1735,7 +1735,7 @@ F: app/test/test_graph*
 F: examples/l3fwd-graph/
 F: doc/guides/sample_app_ug/l3_forward_graph.rst
 
-Nodes - EXPERIMENTAL
+Nodes
 M: Nithin Dabilpuram <ndabilpuram@marvell.com>
 M: Pavan Nikhilesh <pbhagavatula@marvell.com>
 F: lib/node/
diff --git a/lib/node/rte_node_eth_api.h b/lib/node/rte_node_eth_api.h
index 40b2021f01f9..eaae50772dbe 100644
--- a/lib/node/rte_node_eth_api.h
+++ b/lib/node/rte_node_eth_api.h
@@ -55,7 +55,6 @@ struct rte_node_ethdev_config {
  * @return
  *   0 on successful initialization, negative otherwise.
  */
-__rte_experimental
 int rte_node_eth_config(struct rte_node_ethdev_config *cfg,
 			uint16_t cnt, uint16_t nb_graphs);
 #ifdef __cplusplus
diff --git a/lib/node/rte_node_ip4_api.h b/lib/node/rte_node_ip4_api.h
index a84dbb3b5499..24f8ec843a27 100644
--- a/lib/node/rte_node_ip4_api.h
+++ b/lib/node/rte_node_ip4_api.h
@@ -82,7 +82,6 @@ struct rte_node_ip4_reassembly_cfg {
  * @return
  *   0 on success, negative otherwise.
  */
-__rte_experimental
 int rte_node_ip4_route_add(uint32_t ip, uint8_t depth, uint16_t next_hop,
 			   enum rte_node_ip4_lookup_next next_node);
 
@@ -101,7 +100,6 @@ int rte_node_ip4_route_add(uint32_t ip, uint8_t depth, uint16_t next_hop,
  * @return
  *   0 on success, negative otherwise.
  */
-__rte_experimental
 int rte_node_ip4_rewrite_add(uint16_t next_hop, uint8_t *rewrite_data,
 			     uint8_t rewrite_len, uint16_t dst_port);
 
diff --git a/lib/node/version.map b/lib/node/version.map
index 3855569228e3..59c72ca76fd3 100644
--- a/lib/node/version.map
+++ b/lib/node/version.map
@@ -1,11 +1,15 @@
-EXPERIMENTAL {
+DPDK_24 {
 	global:
 
-	# added in 20.05
 	rte_node_eth_config;
 	rte_node_ip4_route_add;
 	rte_node_ip4_rewrite_add;
-	rte_node_logtype;
+
+	local: *;
+};
+
+EXPERIMENTAL {
+	global:
 
 	# added in 23.07
 	rte_node_ip6_rewrite_add;
@@ -15,6 +19,10 @@ EXPERIMENTAL {
 	rte_node_ip4_reassembly_configure;
 	rte_node_udp4_dst_port_add;
 	rte_node_udp4_usr_node_add;
+};
 
-	local: *;
+INTERNAL {
+	global:
+
+	rte_node_logtype;
 };
-- 
2.39.2


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

* [PATCH v4 27/28] table: remove experimental from API
  2023-10-19 19:09 ` [PATCH v4 00/28] Promote many experimental API's to stable Stephen Hemminger
                     ` (25 preceding siblings ...)
  2023-10-19 19:10   ` [PATCH v4 26/28] node: remove some of the experimental tags Stephen Hemminger
@ 2023-10-19 19:10   ` Stephen Hemminger
  2023-10-20 10:12     ` Dumitrescu, Cristian
  2023-10-19 19:10   ` [PATCH v4 28/28] port: make API's stable Stephen Hemminger
  27 siblings, 1 reply; 219+ messages in thread
From: Stephen Hemminger @ 2023-10-19 19:10 UTC (permalink / raw)
  To: dev; +Cc: Stephen Hemminger, Cristian Dumitrescu

Though this library is marked for deprecation in future.
This patch follows the guideline in deprecation notice which
states the experimental API's will become stable.

Signed-off-by: Stephen Hemminger <stephen@networkplumber.org>
---
 doc/guides/rel_notes/deprecation.rst |  2 --
 lib/table/rte_swx_table_learner.h    | 10 ----------
 lib/table/rte_swx_table_selector.h   |  6 ------
 lib/table/rte_table_hash_func.h      |  9 ---------
 lib/table/version.map                | 18 ++----------------
 5 files changed, 2 insertions(+), 43 deletions(-)

diff --git a/doc/guides/rel_notes/deprecation.rst b/doc/guides/rel_notes/deprecation.rst
index 81b93515cbd9..2526040e44f9 100644
--- a/doc/guides/rel_notes/deprecation.rst
+++ b/doc/guides/rel_notes/deprecation.rst
@@ -139,8 +139,6 @@ Deprecation Notices
 
 * table: The table library legacy API (functions rte_table_*)
   will be deprecated and subsequently removed in DPDK 24.11 release.
-  Before this, the new table library API (functions rte_swx_table_*)
-  will gradually transition from experimental to stable status.
 
 * port: The port library legacy API (functions rte_port_*)
   will be deprecated and subsequently removed in DPDK 24.11 release.
diff --git a/lib/table/rte_swx_table_learner.h b/lib/table/rte_swx_table_learner.h
index c5ea015b8dcf..66be5fd7d032 100644
--- a/lib/table/rte_swx_table_learner.h
+++ b/lib/table/rte_swx_table_learner.h
@@ -107,7 +107,6 @@ struct rte_swx_table_learner_params {
  * @return
  *   Table memory footprint in bytes.
  */
-__rte_experimental
 uint64_t
 rte_swx_table_learner_footprint_get(struct rte_swx_table_learner_params *params);
 
@@ -121,7 +120,6 @@ rte_swx_table_learner_footprint_get(struct rte_swx_table_learner_params *params)
  * @return
  *   Table mailbox footprint in bytes.
  */
-__rte_experimental
 uint64_t
 rte_swx_table_learner_mailbox_size_get(void);
 
@@ -135,7 +133,6 @@ rte_swx_table_learner_mailbox_size_get(void);
  * @return
  *   Table handle, on success, or NULL, on error.
  */
-__rte_experimental
 void *
 rte_swx_table_learner_create(struct rte_swx_table_learner_params *params, int numa_node);
 
@@ -152,7 +149,6 @@ rte_swx_table_learner_create(struct rte_swx_table_learner_params *params, int nu
  *   0 on success or the following error codes otherwise:
  *   -EINVAL: Invalid argument(s).
  */
-__rte_experimental
 int
 rte_swx_table_learner_timeout_update(void *table,
 				     uint32_t key_timeout_id,
@@ -206,7 +202,6 @@ rte_swx_table_learner_timeout_update(void *table,
  *   0 when the table lookup operation is not yet completed, and 1 when the table lookup operation
  *   is completed. No other return values are allowed.
  */
-__rte_experimental
 int
 rte_swx_table_learner_lookup(void *table,
 			     void *mailbox,
@@ -239,7 +234,6 @@ rte_swx_table_learner_lookup(void *table,
  * @return
  *   0 on success, 1 or error (table full).
  */
-__rte_experimental
 uint32_t
 rte_swx_table_learner_add(void *table,
 			  void *mailbox,
@@ -261,7 +255,6 @@ rte_swx_table_learner_add(void *table,
  * @param[in] time
  *   Current time measured in CPU clock cycles.
  */
-__rte_experimental
 void
 rte_swx_table_learner_rearm(void *table,
 			    void *mailbox,
@@ -282,7 +275,6 @@ rte_swx_table_learner_rearm(void *table,
  * @param[in] key_timeout_id
  *   Key timeout ID.
  */
-__rte_experimental
 void
 rte_swx_table_learner_rearm_new(void *table,
 				void *mailbox,
@@ -301,7 +293,6 @@ rte_swx_table_learner_rearm_new(void *table,
  * @param[in] mailbox
  *   Mailbox for the current operation.
  */
-__rte_experimental
 void
 rte_swx_table_learner_delete(void *table,
 			     void *mailbox);
@@ -312,7 +303,6 @@ rte_swx_table_learner_delete(void *table,
  * @param[in] table
  *   Table handle.
  */
-__rte_experimental
 void
 rte_swx_table_learner_free(void *table);
 
diff --git a/lib/table/rte_swx_table_selector.h b/lib/table/rte_swx_table_selector.h
index 05863cc90b0a..1f9b93640b1f 100644
--- a/lib/table/rte_swx_table_selector.h
+++ b/lib/table/rte_swx_table_selector.h
@@ -83,7 +83,6 @@ struct rte_swx_table_selector_group {
  * @return
  *   Selector table memory footprint in bytes.
  */
-__rte_experimental
 uint64_t
 rte_swx_table_selector_footprint_get(uint32_t n_groups_max, uint32_t n_members_per_group_max);
 
@@ -97,7 +96,6 @@ rte_swx_table_selector_footprint_get(uint32_t n_groups_max, uint32_t n_members_p
  * @return
  *   Selector table mailbox footprint in bytes.
  */
-__rte_experimental
 uint64_t
 rte_swx_table_selector_mailbox_size_get(void);
 
@@ -115,7 +113,6 @@ rte_swx_table_selector_mailbox_size_get(void);
  * @return
  *   Table handle, on success, or NULL, on error.
  */
-__rte_experimental
 void *
 rte_swx_table_selector_create(struct rte_swx_table_selector_params *params,
 			      struct rte_swx_table_selector_group **groups,
@@ -135,7 +132,6 @@ rte_swx_table_selector_create(struct rte_swx_table_selector_params *params,
  *   -EINVAL: Invalid argument(s);
  *   -ENOSPC: Too many group members.
  */
-__rte_experimental
 int
 rte_swx_table_selector_group_set(void *table,
 				 uint32_t group_id,
@@ -177,7 +173,6 @@ rte_swx_table_selector_group_set(void *table,
  *   0 when the operation is not yet completed, and 1 when the operation is complete. No other
  *   return values are allowed.
  */
-__rte_experimental
 int
 rte_swx_table_selector_select(void *table,
 			      void *mailbox,
@@ -191,7 +186,6 @@ rte_swx_table_selector_select(void *table,
  * @param[in] table
  *   Selector table handle.
  */
-__rte_experimental
 void
 rte_swx_table_selector_free(void *table);
 
diff --git a/lib/table/rte_table_hash_func.h b/lib/table/rte_table_hash_func.h
index a962ec2f68e8..d7013ba6c091 100644
--- a/lib/table/rte_table_hash_func.h
+++ b/lib/table/rte_table_hash_func.h
@@ -14,7 +14,6 @@ extern "C" {
 #include <rte_compat.h>
 #include <rte_common.h>
 
-__rte_experimental
 static inline uint64_t
 rte_crc32_u64_generic(uint64_t crc, uint64_t value)
 {
@@ -53,7 +52,6 @@ rte_crc32_u64(uint64_t crc, uint64_t v)
 
 #endif
 
-__rte_experimental
 static inline uint64_t
 rte_table_hash_crc_key8(void *key, void *mask, __rte_unused uint32_t key_size,
 	uint64_t seed)
@@ -67,7 +65,6 @@ rte_table_hash_crc_key8(void *key, void *mask, __rte_unused uint32_t key_size,
 	return crc0;
 }
 
-__rte_experimental
 static inline uint64_t
 rte_table_hash_crc_key16(void *key, void *mask, __rte_unused uint32_t key_size,
 	uint64_t seed)
@@ -86,7 +83,6 @@ rte_table_hash_crc_key16(void *key, void *mask, __rte_unused uint32_t key_size,
 	return crc0;
 }
 
-__rte_experimental
 static inline uint64_t
 rte_table_hash_crc_key24(void *key, void *mask, __rte_unused uint32_t key_size,
 	uint64_t seed)
@@ -108,7 +104,6 @@ rte_table_hash_crc_key24(void *key, void *mask, __rte_unused uint32_t key_size,
 	return crc0;
 }
 
-__rte_experimental
 static inline uint64_t
 rte_table_hash_crc_key32(void *key, void *mask, __rte_unused uint32_t key_size,
 	uint64_t seed)
@@ -134,7 +129,6 @@ rte_table_hash_crc_key32(void *key, void *mask, __rte_unused uint32_t key_size,
 	return crc0;
 }
 
-__rte_experimental
 static inline uint64_t
 rte_table_hash_crc_key40(void *key, void *mask, __rte_unused uint32_t key_size,
 	uint64_t seed)
@@ -160,7 +154,6 @@ rte_table_hash_crc_key40(void *key, void *mask, __rte_unused uint32_t key_size,
 	return crc0;
 }
 
-__rte_experimental
 static inline uint64_t
 rte_table_hash_crc_key48(void *key, void *mask, __rte_unused uint32_t key_size,
 	uint64_t seed)
@@ -187,7 +180,6 @@ rte_table_hash_crc_key48(void *key, void *mask, __rte_unused uint32_t key_size,
 	return crc0;
 }
 
-__rte_experimental
 static inline uint64_t
 rte_table_hash_crc_key56(void *key, void *mask, __rte_unused uint32_t key_size,
 	uint64_t seed)
@@ -217,7 +209,6 @@ rte_table_hash_crc_key56(void *key, void *mask, __rte_unused uint32_t key_size,
 	return crc0;
 }
 
-__rte_experimental
 static inline uint64_t
 rte_table_hash_crc_key64(void *key, void *mask, __rte_unused uint32_t key_size,
 	uint64_t seed)
diff --git a/lib/table/version.map b/lib/table/version.map
index 6c8991073210..c73bf2fc4ec7 100644
--- a/lib/table/version.map
+++ b/lib/table/version.map
@@ -15,29 +15,15 @@ DPDK_24 {
 	rte_table_lpm_ipv6_ops;
 	rte_table_lpm_ops;
 	rte_table_stub_ops;
-
-	local: *;
-};
-
-EXPERIMENTAL {
-	global:
-
-	# added in 20.11
 	rte_swx_table_exact_match_ops;
 	rte_swx_table_exact_match_unoptimized_ops;
-
-	# added in 21.05
 	rte_swx_table_wildcard_match_ops;
-
-	# added in 21.08
 	rte_swx_table_selector_create;
 	rte_swx_table_selector_footprint_get;
 	rte_swx_table_selector_free;
 	rte_swx_table_selector_group_set;
 	rte_swx_table_selector_mailbox_size_get;
 	rte_swx_table_selector_select;
-
-	# added in 21.11
 	rte_swx_table_learner_add;
 	rte_swx_table_learner_create;
 	rte_swx_table_learner_delete;
@@ -45,9 +31,9 @@ EXPERIMENTAL {
 	rte_swx_table_learner_free;
 	rte_swx_table_learner_lookup;
 	rte_swx_table_learner_mailbox_size_get;
-
-	# added in 22.07
 	rte_swx_table_learner_rearm;
 	rte_swx_table_learner_rearm_new;
 	rte_swx_table_learner_timeout_update;
+
+	local: *;
 };
-- 
2.39.2


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

* [PATCH v4 28/28] port: make API's stable
  2023-10-19 19:09 ` [PATCH v4 00/28] Promote many experimental API's to stable Stephen Hemminger
                     ` (26 preceding siblings ...)
  2023-10-19 19:10   ` [PATCH v4 27/28] table: remove experimental from API Stephen Hemminger
@ 2023-10-19 19:10   ` Stephen Hemminger
  2023-10-20 10:11     ` Dumitrescu, Cristian
  27 siblings, 1 reply; 219+ messages in thread
From: Stephen Hemminger @ 2023-10-19 19:10 UTC (permalink / raw)
  To: dev; +Cc: Stephen Hemminger, Cristian Dumitrescu

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


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

* Re: [PATCH v3 22/29] vhost: remove experimental from some API's
  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
  0 siblings, 1 reply; 219+ messages in thread
From: Maxime Coquelin @ 2023-10-20  7:41 UTC (permalink / raw)
  To: Stephen Hemminger, dev; +Cc: chenbo.xia



On 10/19/23 18:55, Stephen Hemminger wrote:
> All API's that before 22.11 release should have experimental
> tag removed.
> 
> Signed-off-by: Stephen Hemminger <stephen@networkplumber.org>
> ---
>   lib/vhost/rte_vhost.h        |  5 ----
>   lib/vhost/rte_vhost_async.h  | 19 --------------
>   lib/vhost/rte_vhost_crypto.h |  1 -
>   lib/vhost/version.map        | 51 ++++++++++++++----------------------
>   4 files changed, 19 insertions(+), 57 deletions(-)
> 
> diff --git a/lib/vhost/rte_vhost.h b/lib/vhost/rte_vhost.h
> index fec650b1dbba..db92f0534431 100644
> --- a/lib/vhost/rte_vhost.h
> +++ b/lib/vhost/rte_vhost.h
> @@ -509,7 +509,6 @@ rte_vhost_driver_get_vdpa_device(const char *path);
>    * @return
>    *  0 on success, -1 on failure
>    */
> -__rte_experimental
>   int
>   rte_vhost_driver_get_vdpa_dev_type(const char *path, uint32_t *type);
>   
> @@ -648,7 +647,6 @@ int rte_vhost_get_negotiated_features(int vid, uint64_t *features);
>    * @return
>    *  0 on success, -1 on failure
>    */
> -__rte_experimental
>   int
>   rte_vhost_get_negotiated_protocol_features(int vid,
>   					   uint64_t *protocol_features);
> @@ -960,7 +958,6 @@ int rte_vhost_vring_call(int vid, uint16_t vring_idx);
>    * @return
>    *  0 on success, -1 on failure, -EAGAIN for another retry
>    */
> -__rte_experimental
>   int rte_vhost_vring_call_nonblock(int vid, uint16_t vring_idx);
>   
>   /**
> @@ -987,7 +984,6 @@ uint32_t rte_vhost_rx_queue_count(int vid, uint16_t qid);
>    * @return
>    *  0 on success, -1 on failure
>    */
> -__rte_experimental
>   int
>   rte_vhost_get_monitor_addr(int vid, uint16_t queue_id,
>   		struct rte_vhost_power_monitor_cond *pmc);
> @@ -1102,7 +1098,6 @@ rte_vhost_get_vdpa_device(int vid);
>    * @return
>    *  0 on success, < 0 on failure
>    */
> -__rte_experimental
>   int
>   rte_vhost_backend_config_change(int vid, bool need_reply);
>   
> diff --git a/lib/vhost/rte_vhost_async.h b/lib/vhost/rte_vhost_async.h
> index 8f190dd44b1b..3370026415fb 100644
> --- a/lib/vhost/rte_vhost_async.h
> +++ b/lib/vhost/rte_vhost_async.h
> @@ -24,7 +24,6 @@ extern "C" {
>    * @return
>    *  0 on success, -1 on failures
>    */
> -__rte_experimental
>   int rte_vhost_async_channel_register(int vid, uint16_t queue_id);
>   
>   /**
> @@ -37,7 +36,6 @@ int rte_vhost_async_channel_register(int vid, uint16_t queue_id);
>    * @return
>    *  0 on success, -1 on failures
>    */
> -__rte_experimental
>   int rte_vhost_async_channel_unregister(int vid, uint16_t queue_id);
>   
>   /**
> @@ -54,7 +52,6 @@ int rte_vhost_async_channel_unregister(int vid, uint16_t queue_id);
>    * @return
>    *  0 on success, -1 on failures
>    */
> -__rte_experimental
>   int rte_vhost_async_channel_register_thread_unsafe(int vid, uint16_t queue_id);
>   
>   /**
> @@ -71,7 +68,6 @@ int rte_vhost_async_channel_register_thread_unsafe(int vid, uint16_t queue_id);
>    * @return
>    *  0 on success, -1 on failures
>    */
> -__rte_experimental
>   int rte_vhost_async_channel_unregister_thread_unsafe(int vid,
>   		uint16_t queue_id);
>   
> @@ -95,7 +91,6 @@ int rte_vhost_async_channel_unregister_thread_unsafe(int vid,
>    * @return
>    *  num of packets enqueued
>    */
> -__rte_experimental
>   uint16_t rte_vhost_submit_enqueue_burst(int vid, uint16_t queue_id,
>   		struct rte_mbuf **pkts, uint16_t count, int16_t dma_id,
>   		uint16_t vchan_id);
> @@ -120,7 +115,6 @@ uint16_t rte_vhost_submit_enqueue_burst(int vid, uint16_t queue_id,
>    * @return
>    *  num of packets returned
>    */
> -__rte_experimental
>   uint16_t rte_vhost_poll_enqueue_completed(int vid, uint16_t queue_id,
>   		struct rte_mbuf **pkts, uint16_t count, int16_t dma_id,
>   		uint16_t vchan_id);
> @@ -136,7 +130,6 @@ uint16_t rte_vhost_poll_enqueue_completed(int vid, uint16_t queue_id,
>    * @return
>    *  the amount of in-flight packets on success; -1 on failure
>    */
> -__rte_experimental
>   int rte_vhost_async_get_inflight(int vid, uint16_t queue_id);
>   
>   /**
> @@ -153,7 +146,6 @@ int rte_vhost_async_get_inflight(int vid, uint16_t queue_id);
>    * @return
>    * the amount of in-flight packets on success; -1 on failure
>    */
> -__rte_experimental
>   int rte_vhost_async_get_inflight_thread_unsafe(int vid, uint16_t queue_id);
>   
>   /**
> @@ -178,7 +170,6 @@ int rte_vhost_async_get_inflight_thread_unsafe(int vid, uint16_t queue_id);
>    * @return
>    *  Number of packets returned
>    */
> -__rte_experimental
>   uint16_t rte_vhost_clear_queue_thread_unsafe(int vid, uint16_t queue_id,
>   		struct rte_mbuf **pkts, uint16_t count, int16_t dma_id,
>   		uint16_t vchan_id);
> @@ -203,7 +194,6 @@ uint16_t rte_vhost_clear_queue_thread_unsafe(int vid, uint16_t queue_id,
>    * @return
>    *  Number of packets returned
>    */
> -__rte_experimental
>   uint16_t rte_vhost_clear_queue(int vid, uint16_t queue_id,
>   		struct rte_mbuf **pkts, uint16_t count, int16_t dma_id,
>   		uint16_t vchan_id);
> @@ -226,13 +216,9 @@ uint16_t rte_vhost_clear_queue(int vid, uint16_t queue_id,
>    * @return
>    *  0 on success, and -1 on failure
>    */
> -__rte_experimental
>   int rte_vhost_async_dma_configure(int16_t dma_id, uint16_t vchan_id);
>   
>   /**
> - * @warning
> - * @b EXPERIMENTAL: this API may change, or be removed, without prior notice
> - *
>    * This function tries to receive packets from the guest with offloading
>    * copies to the DMA vChannels. Successfully dequeued packets are returned
>    * in "pkts". The other packets that their copies are submitted to
> @@ -260,16 +246,12 @@ int rte_vhost_async_dma_configure(int16_t dma_id, uint16_t vchan_id);
>    * @return
>    *  Number of successfully dequeued packets
>    */
> -__rte_experimental
>   uint16_t
>   rte_vhost_async_try_dequeue_burst(int vid, uint16_t queue_id,
>   	struct rte_mempool *mbuf_pool, struct rte_mbuf **pkts, uint16_t count,
>   	int *nr_inflight, int16_t dma_id, uint16_t vchan_id);
>   
>   /**
> - * @warning
> - * @b EXPERIMENTAL: this API may change, or be removed, without prior notice.
> - *
>    * Unconfigure DMA vChannel in Vhost asynchronous data path.
>    * This function should be called when the specified DMA vChannel is no longer
>    * used by the Vhost library. Before this function is called, make sure there
> @@ -282,7 +264,6 @@ rte_vhost_async_try_dequeue_burst(int vid, uint16_t queue_id,
>    * @return
>    *  0 on success, and -1 on failure
>    */
> -__rte_experimental
>   int
>   rte_vhost_async_dma_unconfigure(int16_t dma_id, uint16_t vchan_id);
>   

I think we should wait before remove experimental tag on all the Vhost
async APIs. Indeed, it was intended to be used by OVS, but the proposed
architecture was nacked by the OVS maintainers. I'm not aware of any
other user of these APIs.

So we are not sure the proposed API is a good fit.
Furthermore, it is not clear the team who implemented Vhost Async are
still going to maintain it.

Chenbo, what do you think?

Thanks,
Maxime

> diff --git a/lib/vhost/rte_vhost_crypto.h b/lib/vhost/rte_vhost_crypto.h
> index 2b01ecda0880..71a30ba202be 100644
> --- a/lib/vhost/rte_vhost_crypto.h
> +++ b/lib/vhost/rte_vhost_crypto.h
> @@ -40,7 +40,6 @@ enum rte_vhost_crypto_zero_copy {
>    * @return
>    *  0 on success, -1 on failure
>    */
> -__rte_experimental
>   int
>   rte_vhost_crypto_driver_start(const char *path);
>   
> diff --git a/lib/vhost/version.map b/lib/vhost/version.map
> index 5bc133dafda2..9696c4d91fe8 100644
> --- a/lib/vhost/version.map
> +++ b/lib/vhost/version.map
> @@ -9,10 +9,23 @@ DPDK_24 {
>   	rte_vdpa_get_stats;
>   	rte_vdpa_get_stats_names;
>   	rte_vdpa_reset_stats;
> +	rte_vhost_async_channel_register;
> +	rte_vhost_async_channel_register_thread_unsafe;
> +	rte_vhost_async_channel_unregister;
> +	rte_vhost_async_channel_unregister_thread_unsafe;
> +	rte_vhost_async_dma_configure;
> +	rte_vhost_async_dma_unconfigure;
> +	rte_vhost_async_get_inflight;
> +	rte_vhost_async_get_inflight_thread_unsafe;
> +	rte_vhost_async_try_dequeue_burst;
>   	rte_vhost_avail_entries;
> +	rte_vhost_backend_config_change;
> +	rte_vhost_clear_queue;
> +	rte_vhost_clear_queue_thread_unsafe;
>   	rte_vhost_clr_inflight_desc_packed;
>   	rte_vhost_clr_inflight_desc_split;
>   	rte_vhost_crypto_create;
> +	rte_vhost_crypto_driver_start;
>   	rte_vhost_crypto_fetch_requests;
>   	rte_vhost_crypto_finalize_requests;
>   	rte_vhost_crypto_free;
> @@ -26,6 +39,7 @@ DPDK_24 {
>   	rte_vhost_driver_get_features;
>   	rte_vhost_driver_get_protocol_features;
>   	rte_vhost_driver_get_queue_num;
> +	rte_vhost_driver_get_vdpa_dev_type;
>   	rte_vhost_driver_get_vdpa_device;
>   	rte_vhost_driver_register;
>   	rte_vhost_driver_set_features;
> @@ -38,8 +52,10 @@ DPDK_24 {
>   	rte_vhost_get_ifname;
>   	rte_vhost_get_log_base;
>   	rte_vhost_get_mem_table;
> +	rte_vhost_get_monitor_addr;
>   	rte_vhost_get_mtu;
>   	rte_vhost_get_negotiated_features;
> +	rte_vhost_get_negotiated_protocol_features;
>   	rte_vhost_get_numa_node;
>   	rte_vhost_get_vdpa_device;
>   	rte_vhost_get_vhost_ring_inflight;
> @@ -49,14 +65,17 @@ DPDK_24 {
>   	rte_vhost_get_vring_num;
>   	rte_vhost_log_used_vring;
>   	rte_vhost_log_write;
> +	rte_vhost_poll_enqueue_completed;
>   	rte_vhost_rx_queue_count;
>   	rte_vhost_set_inflight_desc_packed;
>   	rte_vhost_set_inflight_desc_split;
>   	rte_vhost_set_last_inflight_io_packed;
>   	rte_vhost_set_last_inflight_io_split;
>   	rte_vhost_set_vring_base;
> +	rte_vhost_submit_enqueue_burst;
>   	rte_vhost_va_from_guest_pa;
>   	rte_vhost_vring_call;
> +	rte_vhost_vring_call_nonblock;
>   	rte_vhost_vring_stats_get;
>   	rte_vhost_vring_stats_get_names;
>   	rte_vhost_vring_stats_reset;
> @@ -67,38 +86,6 @@ DPDK_24 {
>   EXPERIMENTAL {
>   	global:
>   
> -	rte_vhost_crypto_driver_start;
> -	rte_vhost_backend_config_change;
> -	rte_vhost_async_channel_register;
> -	rte_vhost_async_channel_unregister;
> -	rte_vhost_submit_enqueue_burst;
> -	rte_vhost_poll_enqueue_completed;
> -
> -	# added in 21.05
> -	rte_vhost_get_negotiated_protocol_features;
> -
> -	# added in 21.08
> -	rte_vhost_async_get_inflight;
> -	rte_vhost_async_channel_register_thread_unsafe;
> -	rte_vhost_async_channel_unregister_thread_unsafe;
> -	rte_vhost_clear_queue_thread_unsafe;
> -
> -	# added in 21.11
> -	rte_vhost_get_monitor_addr;
> -
> -	# added in 22.03
> -	rte_vhost_async_dma_configure;
> -
> -	# added in 22.07
> -	rte_vhost_async_get_inflight_thread_unsafe;
> -	rte_vhost_async_try_dequeue_burst;
> -	rte_vhost_driver_get_vdpa_dev_type;
> -	rte_vhost_clear_queue;
> -
> -	# added in 22.11
> -	rte_vhost_async_dma_unconfigure;
> -	rte_vhost_vring_call_nonblock;
> -
>   	# added in 23.07
>   	rte_vhost_driver_set_max_queue_num;
>   	rte_vhost_notify_guest;


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

* Re: [PATCH v4 21/28] vhost: remove experimental from some API's
  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
  0 siblings, 0 replies; 219+ messages in thread
From: Maxime Coquelin @ 2023-10-20  8:03 UTC (permalink / raw)
  To: Stephen Hemminger, dev; +Cc: Chenbo Xia



On 10/19/23 21:10, Stephen Hemminger wrote:
> All API's that before 22.11 release should have experimental
> tag removed.
> 
> Signed-off-by: Stephen Hemminger <stephen@networkplumber.org>
> ---
>   lib/vhost/rte_vhost.h        |  5 ----
>   lib/vhost/rte_vhost_async.h  | 19 --------------
>   lib/vhost/rte_vhost_crypto.h |  1 -
>   lib/vhost/version.map        | 51 ++++++++++++++----------------------
>   4 files changed, 19 insertions(+), 57 deletions(-)
> 
> diff --git a/lib/vhost/rte_vhost.h b/lib/vhost/rte_vhost.h
> index fec650b1dbba..db92f0534431 100644
> --- a/lib/vhost/rte_vhost.h
> +++ b/lib/vhost/rte_vhost.h
> @@ -509,7 +509,6 @@ rte_vhost_driver_get_vdpa_device(const char *path);
>    * @return
>    *  0 on success, -1 on failure
>    */
> -__rte_experimental
>   int
>   rte_vhost_driver_get_vdpa_dev_type(const char *path, uint32_t *type);
>   
> @@ -648,7 +647,6 @@ int rte_vhost_get_negotiated_features(int vid, uint64_t *features);
>    * @return
>    *  0 on success, -1 on failure
>    */
> -__rte_experimental
>   int
>   rte_vhost_get_negotiated_protocol_features(int vid,
>   					   uint64_t *protocol_features);
> @@ -960,7 +958,6 @@ int rte_vhost_vring_call(int vid, uint16_t vring_idx);
>    * @return
>    *  0 on success, -1 on failure, -EAGAIN for another retry
>    */
> -__rte_experimental
>   int rte_vhost_vring_call_nonblock(int vid, uint16_t vring_idx);
>   
>   /**
> @@ -987,7 +984,6 @@ uint32_t rte_vhost_rx_queue_count(int vid, uint16_t qid);
>    * @return
>    *  0 on success, -1 on failure
>    */
> -__rte_experimental
>   int
>   rte_vhost_get_monitor_addr(int vid, uint16_t queue_id,
>   		struct rte_vhost_power_monitor_cond *pmc);
> @@ -1102,7 +1098,6 @@ rte_vhost_get_vdpa_device(int vid);
>    * @return
>    *  0 on success, < 0 on failure
>    */
> -__rte_experimental
>   int
>   rte_vhost_backend_config_change(int vid, bool need_reply);
>   
> diff --git a/lib/vhost/rte_vhost_async.h b/lib/vhost/rte_vhost_async.h
> index 8f190dd44b1b..3370026415fb 100644
> --- a/lib/vhost/rte_vhost_async.h
> +++ b/lib/vhost/rte_vhost_async.h
> @@ -24,7 +24,6 @@ extern "C" {
>    * @return
>    *  0 on success, -1 on failures
>    */
> -__rte_experimental
>   int rte_vhost_async_channel_register(int vid, uint16_t queue_id);
>   
>   /**
> @@ -37,7 +36,6 @@ int rte_vhost_async_channel_register(int vid, uint16_t queue_id);
>    * @return
>    *  0 on success, -1 on failures
>    */
> -__rte_experimental
>   int rte_vhost_async_channel_unregister(int vid, uint16_t queue_id);
>   
>   /**
> @@ -54,7 +52,6 @@ int rte_vhost_async_channel_unregister(int vid, uint16_t queue_id);
>    * @return
>    *  0 on success, -1 on failures
>    */
> -__rte_experimental
>   int rte_vhost_async_channel_register_thread_unsafe(int vid, uint16_t queue_id);
>   
>   /**
> @@ -71,7 +68,6 @@ int rte_vhost_async_channel_register_thread_unsafe(int vid, uint16_t queue_id);
>    * @return
>    *  0 on success, -1 on failures
>    */
> -__rte_experimental
>   int rte_vhost_async_channel_unregister_thread_unsafe(int vid,
>   		uint16_t queue_id);
>   
> @@ -95,7 +91,6 @@ int rte_vhost_async_channel_unregister_thread_unsafe(int vid,
>    * @return
>    *  num of packets enqueued
>    */
> -__rte_experimental
>   uint16_t rte_vhost_submit_enqueue_burst(int vid, uint16_t queue_id,
>   		struct rte_mbuf **pkts, uint16_t count, int16_t dma_id,
>   		uint16_t vchan_id);
> @@ -120,7 +115,6 @@ uint16_t rte_vhost_submit_enqueue_burst(int vid, uint16_t queue_id,
>    * @return
>    *  num of packets returned
>    */
> -__rte_experimental
>   uint16_t rte_vhost_poll_enqueue_completed(int vid, uint16_t queue_id,
>   		struct rte_mbuf **pkts, uint16_t count, int16_t dma_id,
>   		uint16_t vchan_id);
> @@ -136,7 +130,6 @@ uint16_t rte_vhost_poll_enqueue_completed(int vid, uint16_t queue_id,
>    * @return
>    *  the amount of in-flight packets on success; -1 on failure
>    */
> -__rte_experimental
>   int rte_vhost_async_get_inflight(int vid, uint16_t queue_id);
>   
>   /**
> @@ -153,7 +146,6 @@ int rte_vhost_async_get_inflight(int vid, uint16_t queue_id);
>    * @return
>    * the amount of in-flight packets on success; -1 on failure
>    */
> -__rte_experimental
>   int rte_vhost_async_get_inflight_thread_unsafe(int vid, uint16_t queue_id);
>   
>   /**
> @@ -178,7 +170,6 @@ int rte_vhost_async_get_inflight_thread_unsafe(int vid, uint16_t queue_id);
>    * @return
>    *  Number of packets returned
>    */
> -__rte_experimental
>   uint16_t rte_vhost_clear_queue_thread_unsafe(int vid, uint16_t queue_id,
>   		struct rte_mbuf **pkts, uint16_t count, int16_t dma_id,
>   		uint16_t vchan_id);
> @@ -203,7 +194,6 @@ uint16_t rte_vhost_clear_queue_thread_unsafe(int vid, uint16_t queue_id,
>    * @return
>    *  Number of packets returned
>    */
> -__rte_experimental
>   uint16_t rte_vhost_clear_queue(int vid, uint16_t queue_id,
>   		struct rte_mbuf **pkts, uint16_t count, int16_t dma_id,
>   		uint16_t vchan_id);
> @@ -226,13 +216,9 @@ uint16_t rte_vhost_clear_queue(int vid, uint16_t queue_id,
>    * @return
>    *  0 on success, and -1 on failure
>    */
> -__rte_experimental
>   int rte_vhost_async_dma_configure(int16_t dma_id, uint16_t vchan_id);
>   
>   /**
> - * @warning
> - * @b EXPERIMENTAL: this API may change, or be removed, without prior notice
> - *
>    * This function tries to receive packets from the guest with offloading
>    * copies to the DMA vChannels. Successfully dequeued packets are returned
>    * in "pkts". The other packets that their copies are submitted to
> @@ -260,16 +246,12 @@ int rte_vhost_async_dma_configure(int16_t dma_id, uint16_t vchan_id);
>    * @return
>    *  Number of successfully dequeued packets
>    */
> -__rte_experimental
>   uint16_t
>   rte_vhost_async_try_dequeue_burst(int vid, uint16_t queue_id,
>   	struct rte_mempool *mbuf_pool, struct rte_mbuf **pkts, uint16_t count,
>   	int *nr_inflight, int16_t dma_id, uint16_t vchan_id);
>   
>   /**
> - * @warning
> - * @b EXPERIMENTAL: this API may change, or be removed, without prior notice.
> - *
>    * Unconfigure DMA vChannel in Vhost asynchronous data path.
>    * This function should be called when the specified DMA vChannel is no longer
>    * used by the Vhost library. Before this function is called, make sure there
> @@ -282,7 +264,6 @@ rte_vhost_async_try_dequeue_burst(int vid, uint16_t queue_id,
>    * @return
>    *  0 on success, and -1 on failure
>    */
> -__rte_experimental
>   int
>   rte_vhost_async_dma_unconfigure(int16_t dma_id, uint16_t vchan_id);
>   

(Sorry, I didn't see you posted a v4, copying my comment from v3):

I think we should wait before remove experimental tag on all the Vhost
async APIs. Indeed, it was intended to be used by OVS, but the proposed
architecture was nacked by the OVS maintainers. I'm not aware of any
other user of these APIs.

So we are not sure the proposed API is a good fit.
Furthermore, it is not clear the team who implemented Vhost Async are
still going to maintain it.

Chenbo, what do you think?

Thanks,
Maxime


> diff --git a/lib/vhost/rte_vhost_crypto.h b/lib/vhost/rte_vhost_crypto.h
> index 2b01ecda0880..71a30ba202be 100644
> --- a/lib/vhost/rte_vhost_crypto.h
> +++ b/lib/vhost/rte_vhost_crypto.h
> @@ -40,7 +40,6 @@ enum rte_vhost_crypto_zero_copy {
>    * @return
>    *  0 on success, -1 on failure
>    */
> -__rte_experimental
>   int
>   rte_vhost_crypto_driver_start(const char *path);
>   
> diff --git a/lib/vhost/version.map b/lib/vhost/version.map
> index 5bc133dafda2..9696c4d91fe8 100644
> --- a/lib/vhost/version.map
> +++ b/lib/vhost/version.map
> @@ -9,10 +9,23 @@ DPDK_24 {
>   	rte_vdpa_get_stats;
>   	rte_vdpa_get_stats_names;
>   	rte_vdpa_reset_stats;
> +	rte_vhost_async_channel_register;
> +	rte_vhost_async_channel_register_thread_unsafe;
> +	rte_vhost_async_channel_unregister;
> +	rte_vhost_async_channel_unregister_thread_unsafe;
> +	rte_vhost_async_dma_configure;
> +	rte_vhost_async_dma_unconfigure;
> +	rte_vhost_async_get_inflight;
> +	rte_vhost_async_get_inflight_thread_unsafe;
> +	rte_vhost_async_try_dequeue_burst;
>   	rte_vhost_avail_entries;
> +	rte_vhost_backend_config_change;
> +	rte_vhost_clear_queue;
> +	rte_vhost_clear_queue_thread_unsafe;
>   	rte_vhost_clr_inflight_desc_packed;
>   	rte_vhost_clr_inflight_desc_split;
>   	rte_vhost_crypto_create;
> +	rte_vhost_crypto_driver_start;
>   	rte_vhost_crypto_fetch_requests;
>   	rte_vhost_crypto_finalize_requests;
>   	rte_vhost_crypto_free;
> @@ -26,6 +39,7 @@ DPDK_24 {
>   	rte_vhost_driver_get_features;
>   	rte_vhost_driver_get_protocol_features;
>   	rte_vhost_driver_get_queue_num;
> +	rte_vhost_driver_get_vdpa_dev_type;
>   	rte_vhost_driver_get_vdpa_device;
>   	rte_vhost_driver_register;
>   	rte_vhost_driver_set_features;
> @@ -38,8 +52,10 @@ DPDK_24 {
>   	rte_vhost_get_ifname;
>   	rte_vhost_get_log_base;
>   	rte_vhost_get_mem_table;
> +	rte_vhost_get_monitor_addr;
>   	rte_vhost_get_mtu;
>   	rte_vhost_get_negotiated_features;
> +	rte_vhost_get_negotiated_protocol_features;
>   	rte_vhost_get_numa_node;
>   	rte_vhost_get_vdpa_device;
>   	rte_vhost_get_vhost_ring_inflight;
> @@ -49,14 +65,17 @@ DPDK_24 {
>   	rte_vhost_get_vring_num;
>   	rte_vhost_log_used_vring;
>   	rte_vhost_log_write;
> +	rte_vhost_poll_enqueue_completed;
>   	rte_vhost_rx_queue_count;
>   	rte_vhost_set_inflight_desc_packed;
>   	rte_vhost_set_inflight_desc_split;
>   	rte_vhost_set_last_inflight_io_packed;
>   	rte_vhost_set_last_inflight_io_split;
>   	rte_vhost_set_vring_base;
> +	rte_vhost_submit_enqueue_burst;
>   	rte_vhost_va_from_guest_pa;
>   	rte_vhost_vring_call;
> +	rte_vhost_vring_call_nonblock;
>   	rte_vhost_vring_stats_get;
>   	rte_vhost_vring_stats_get_names;
>   	rte_vhost_vring_stats_reset;
> @@ -67,38 +86,6 @@ DPDK_24 {
>   EXPERIMENTAL {
>   	global:
>   
> -	rte_vhost_crypto_driver_start;
> -	rte_vhost_backend_config_change;
> -	rte_vhost_async_channel_register;
> -	rte_vhost_async_channel_unregister;
> -	rte_vhost_submit_enqueue_burst;
> -	rte_vhost_poll_enqueue_completed;
> -
> -	# added in 21.05
> -	rte_vhost_get_negotiated_protocol_features;
> -
> -	# added in 21.08
> -	rte_vhost_async_get_inflight;
> -	rte_vhost_async_channel_register_thread_unsafe;
> -	rte_vhost_async_channel_unregister_thread_unsafe;
> -	rte_vhost_clear_queue_thread_unsafe;
> -
> -	# added in 21.11
> -	rte_vhost_get_monitor_addr;
> -
> -	# added in 22.03
> -	rte_vhost_async_dma_configure;
> -
> -	# added in 22.07
> -	rte_vhost_async_get_inflight_thread_unsafe;
> -	rte_vhost_async_try_dequeue_burst;
> -	rte_vhost_driver_get_vdpa_dev_type;
> -	rte_vhost_clear_queue;
> -
> -	# added in 22.11
> -	rte_vhost_async_dma_unconfigure;
> -	rte_vhost_vring_call_nonblock;
> -
>   	# added in 23.07
>   	rte_vhost_driver_set_max_queue_num;
>   	rte_vhost_notify_guest;


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

* Re: [PATCH v4 22/28] bbdev: remove experimental tag
  2023-10-19 19:10   ` [PATCH v4 22/28] bbdev: remove experimental tag Stephen Hemminger
@ 2023-10-20  8:14     ` Maxime Coquelin
  0 siblings, 0 replies; 219+ messages in thread
From: Maxime Coquelin @ 2023-10-20  8:14 UTC (permalink / raw)
  To: Stephen Hemminger, dev; +Cc: Nicolas Chautru



On 10/19/23 21:10, Stephen Hemminger wrote:
> The API's for bbdev were last added to in 22.11.
> Remove experimental flag now.
> 
> Signed-off-by: Stephen Hemminger <stephen@networkplumber.org>
> ---
>   lib/bbdev/rte_bbdev.h    |  4 ----
>   lib/bbdev/rte_bbdev_op.h |  2 --
>   lib/bbdev/version.map    | 15 +++++++--------
>   3 files changed, 7 insertions(+), 14 deletions(-)
> 
> diff --git a/lib/bbdev/rte_bbdev.h b/lib/bbdev/rte_bbdev.h
> index d12e2e7fbcf3..b43e98ef9d1b 100644
> --- a/lib/bbdev/rte_bbdev.h
> +++ b/lib/bbdev/rte_bbdev.h
> @@ -675,7 +675,6 @@ rte_bbdev_enqueue_ldpc_dec_ops(uint16_t dev_id, uint16_t queue_id,
>    *   The number of operations actually enqueued.
>    *   (This is the number of processed entries in the @p ops array.)
>    */
> -__rte_experimental
>   static inline uint16_t
>   rte_bbdev_enqueue_fft_ops(uint16_t dev_id, uint16_t queue_id,
>   		struct rte_bbdev_fft_op **ops, uint16_t num_ops)
> @@ -860,7 +859,6 @@ rte_bbdev_dequeue_ldpc_dec_ops(uint16_t dev_id, uint16_t queue_id,
>    *   The number of operations actually dequeued (this is the number of entries
>    *   copied into the @p ops array).
>    */
> -__rte_experimental
>   static inline uint16_t
>   rte_bbdev_dequeue_fft_ops(uint16_t dev_id, uint16_t queue_id,
>   		struct rte_bbdev_fft_op **ops, uint16_t num_ops)
> @@ -1042,7 +1040,6 @@ rte_bbdev_queue_intr_ctl(uint16_t dev_id, uint16_t queue_id, int epfd, int op,
>    * @returns
>    *   Device status as string or NULL if invalid.
>    */
> -__rte_experimental
>   const char*
>   rte_bbdev_device_status_str(enum rte_bbdev_device_status status);
>   
> @@ -1055,7 +1052,6 @@ rte_bbdev_device_status_str(enum rte_bbdev_device_status status);
>    * @returns
>    *   Queue status as string or NULL if op_type is invalid.
>    */
> -__rte_experimental
>   const char*
>   rte_bbdev_enqueue_status_str(enum rte_bbdev_enqueue_status status);
>   
> diff --git a/lib/bbdev/rte_bbdev_op.h b/lib/bbdev/rte_bbdev_op.h
> index 369ac331bf9b..459631d0d0b7 100644
> --- a/lib/bbdev/rte_bbdev_op.h
> +++ b/lib/bbdev/rte_bbdev_op.h
> @@ -1130,7 +1130,6 @@ rte_bbdev_dec_op_alloc_bulk(struct rte_mempool *mempool,
>    *   - 0 on success.
>    *   - EINVAL if invalid mempool is provided.
>    */
> -__rte_experimental
>   static inline int
>   rte_bbdev_fft_op_alloc_bulk(struct rte_mempool *mempool,
>   		struct rte_bbdev_fft_op **ops, unsigned int num_ops)
> @@ -1220,7 +1219,6 @@ rte_bbdev_enc_op_free_bulk(struct rte_bbdev_enc_op **ops, unsigned int num_ops)
>    * @param num_ops
>    *   Number of structures.
>    */
> -__rte_experimental
>   static inline void
>   rte_bbdev_fft_op_free_bulk(struct rte_bbdev_fft_op **ops, unsigned int num_ops)
>   {
> diff --git a/lib/bbdev/version.map b/lib/bbdev/version.map
> index eeb7ed475a6c..1840d2b2a491 100644
> --- a/lib/bbdev/version.map
> +++ b/lib/bbdev/version.map
> @@ -10,11 +10,17 @@ DPDK_24 {
>   	rte_bbdev_dec_op_free_bulk;
>   	rte_bbdev_dequeue_dec_ops;
>   	rte_bbdev_dequeue_enc_ops;
> +	rte_bbdev_dequeue_fft_ops;
> +	rte_bbdev_device_status_str;
>   	rte_bbdev_devices;
>   	rte_bbdev_enc_op_alloc_bulk;
>   	rte_bbdev_enc_op_free_bulk;
>   	rte_bbdev_enqueue_dec_ops;
>   	rte_bbdev_enqueue_enc_ops;
> +	rte_bbdev_enqueue_fft_ops;
> +	rte_bbdev_enqueue_status_str;
> +	rte_bbdev_fft_op_alloc_bulk;
> +	rte_bbdev_fft_op_free_bulk;
>   	rte_bbdev_find_next;
>   	rte_bbdev_get_named_dev;
>   	rte_bbdev_info_get;
> @@ -43,14 +49,7 @@ DPDK_24 {
>   EXPERIMENTAL {
>   	global:
>   
> -	# added in 22.11
> -	rte_bbdev_dequeue_fft_ops;
> -	rte_bbdev_device_status_str;
> -	rte_bbdev_enqueue_fft_ops;
> -	rte_bbdev_enqueue_status_str;
> -	rte_bbdev_fft_op_alloc_bulk;
> -	rte_bbdev_fft_op_free_bulk;
> -	#added in 23.11
> +	# added in 23.11
>   	rte_bbdev_dequeue_mldts_ops;
>   	rte_bbdev_enqueue_mldts_ops;
>   	rte_bbdev_mldts_op_alloc_bulk;

Acked-by: Maxime Coquelin <maxime.coquelin@redhat.com>

Thanks,
Maxime


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

* Re: [PATCH v2 16/29] power: remove experimental from API's
  2023-08-09  0:10   ` [PATCH v2 16/29] power: remove experimental from API's Stephen Hemminger
@ 2023-10-20  9:47     ` Hunt, David
  0 siblings, 0 replies; 219+ messages in thread
From: Hunt, David @ 2023-10-20  9:47 UTC (permalink / raw)
  To: Stephen Hemminger, dev; +Cc: Anatoly Burakov

On 09/08/2023 01:10, Stephen Hemminger wrote:
> The power management API's were last changed in 22.11 release.
> Therefore remove experimental for 23.11 release.
>
> Signed-off-by: Stephen Hemminger <stephen@networkplumber.org>
> ---

Acked-by: David Hunt<david.hunt@intel.com>


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

* Re: [PATCH v4 16/28] power: remove experimental from API's
  2023-10-19 19:10   ` [PATCH v4 16/28] power: remove experimental from API's Stephen Hemminger
@ 2023-10-20  9:58     ` Hunt, David
  0 siblings, 0 replies; 219+ messages in thread
From: Hunt, David @ 2023-10-20  9:58 UTC (permalink / raw)
  To: Stephen Hemminger, dev; +Cc: Anatoly Burakov

On 19/10/2023 20:10, Stephen Hemminger wrote:
> The power management API's were last changed in 22.11 release.
> Therefore remove experimental for 23.11 release.
>
> Signed-off-by: Stephen Hemminger <stephen@networkplumber.org>
> ---

Acked-by: David Hunt<david.hunt@intel.com>


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

* RE: [PATCH v4 28/28] port: make API's stable
  2023-10-19 19:10   ` [PATCH v4 28/28] port: make API's stable Stephen Hemminger
@ 2023-10-20 10:11     ` Dumitrescu, Cristian
  0 siblings, 0 replies; 219+ messages in thread
From: Dumitrescu, Cristian @ 2023-10-20 10:11 UTC (permalink / raw)
  To: Stephen Hemminger, dev



> -----Original Message-----
> From: Stephen Hemminger <stephen@networkplumber.org>
> Sent: Thursday, October 19, 2023 8:10 PM
> To: dev@dpdk.org
> Cc: Stephen Hemminger <stephen@networkplumber.org>; Dumitrescu,
> Cristian <cristian.dumitrescu@intel.com>
> Subject: [PATCH v4 28/28] port: make API's stable
> 
> 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(-)
> 

NAK.

As the deprecation notice states, the old API is planned for removal:
https://git.dpdk.org/dpdk/tree/doc/guides/rel_notes/deprecation.rst#n135

As discussed before, it is bad practice to mark as stable API that is planned for removal.

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

* RE: [PATCH v4 27/28] table: remove experimental from API
  2023-10-19 19:10   ` [PATCH v4 27/28] table: remove experimental from API Stephen Hemminger
@ 2023-10-20 10:12     ` Dumitrescu, Cristian
  0 siblings, 0 replies; 219+ messages in thread
From: Dumitrescu, Cristian @ 2023-10-20 10:12 UTC (permalink / raw)
  To: Stephen Hemminger, dev



> -----Original Message-----
> From: Stephen Hemminger <stephen@networkplumber.org>
> Sent: Thursday, October 19, 2023 8:10 PM
> To: dev@dpdk.org
> Cc: Stephen Hemminger <stephen@networkplumber.org>; Dumitrescu,
> Cristian <cristian.dumitrescu@intel.com>
> Subject: [PATCH v4 27/28] table: remove experimental from API
> 
> Though this library is marked for deprecation in future.
> This patch follows the guideline in deprecation notice which
> states the experimental API's will become stable.
> 
> Signed-off-by: Stephen Hemminger <stephen@networkplumber.org>
> ---
>  doc/guides/rel_notes/deprecation.rst |  2 --
>  lib/table/rte_swx_table_learner.h    | 10 ----------
>  lib/table/rte_swx_table_selector.h   |  6 ------
>  lib/table/rte_table_hash_func.h      |  9 ---------
>  lib/table/version.map                | 18 ++----------------
>  5 files changed, 2 insertions(+), 43 deletions(-)
> 

NAK.

As the deprecation notice states, the old API is planned for removal:
https://git.dpdk.org/dpdk/tree/doc/guides/rel_notes/deprecation.rst#n135

As discussed before, it is bad practice to mark as stable API that is planned for removal.

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

* RE: [PATCH v4 15/28] meter: remove experimental warning from comments
  2023-10-19 19:10   ` [PATCH v4 15/28] meter: remove experimental warning from comments Stephen Hemminger
@ 2023-10-20 10:13     ` Dumitrescu, Cristian
  0 siblings, 0 replies; 219+ messages in thread
From: Dumitrescu, Cristian @ 2023-10-20 10:13 UTC (permalink / raw)
  To: Stephen Hemminger, dev; +Cc: Richardson, Bruce



> -----Original Message-----
> From: Stephen Hemminger <stephen@networkplumber.org>
> Sent: Thursday, October 19, 2023 8:10 PM
> To: dev@dpdk.org
> Cc: Stephen Hemminger <stephen@networkplumber.org>; Richardson, Bruce
> <bruce.richardson@intel.com>; Dumitrescu, Cristian
> <cristian.dumitrescu@intel.com>
> Subject: [PATCH v4 15/28] meter: remove experimental warning from
> comments
> 
> The API's for rte_meter_trtcm were never properly flagged
> as experimental; missing __rte_experimental but there was
> an experimental comment in the docbook comment.
> Remove the comment.
> 
> Signed-off-by: Stephen Hemminger <stephen@networkplumber.org>
> Acked-by: Bruce Richardson <bruce.richardson@intel.com>
> ---
>  lib/meter/rte_meter.h | 12 ------------
>  1 file changed, 12 deletions(-)
> 

Acked-by: Cristian Dumitrescu <cristian.dumitrescu@intel.com>


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

* RE: [PATCH v4 13/28] sched: remove experimental
  2023-10-19 19:10   ` [PATCH v4 13/28] sched: remove experimental Stephen Hemminger
@ 2023-10-20 10:15     ` Dumitrescu, Cristian
  0 siblings, 0 replies; 219+ messages in thread
From: Dumitrescu, Cristian @ 2023-10-20 10:15 UTC (permalink / raw)
  To: Stephen Hemminger, dev



> -----Original Message-----
> From: Stephen Hemminger <stephen@networkplumber.org>
> Sent: Thursday, October 19, 2023 8:10 PM
> To: dev@dpdk.org
> Cc: Stephen Hemminger <stephen@networkplumber.org>; Dumitrescu,
> Cristian <cristian.dumitrescu@intel.com>
> Subject: [PATCH v4 13/28] sched: remove experimental
> 
> The overcommit and PIE support was added back in 2020.
> Remove experimental tag.
> 
> Signed-off-by: Stephen Hemminger <stephen@networkplumber.org>
> ---
>  lib/sched/rte_pie.h   |  8 --------
>  lib/sched/rte_sched.h |  5 -----
>  lib/sched/version.map | 18 ++++--------------
>  3 files changed, 4 insertions(+), 27 deletions(-)
> 

Acked-by: Cristian Dumitrescu <cristian.dumitrescu@intel.com>


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

* RE: [PATCH v4 04/28] ethdev: mark rte_tm API's as stable
  2023-10-19 19:09   ` [PATCH v4 04/28] ethdev: mark rte_tm " Stephen Hemminger
@ 2023-10-20 10:17     ` Dumitrescu, Cristian
  0 siblings, 0 replies; 219+ messages in thread
From: Dumitrescu, Cristian @ 2023-10-20 10:17 UTC (permalink / raw)
  To: Stephen Hemminger, dev; +Cc: Thomas Monjalon, Ferruh Yigit, Andrew Rybchenko



> -----Original Message-----
> From: Stephen Hemminger <stephen@networkplumber.org>
> Sent: Thursday, October 19, 2023 8:10 PM
> To: dev@dpdk.org
> Cc: Stephen Hemminger <stephen@networkplumber.org>; Thomas Monjalon
> <thomas@monjalon.net>; Dumitrescu, Cristian
> <cristian.dumitrescu@intel.com>; Ferruh Yigit <ferruh.yigit@amd.com>;
> Andrew Rybchenko <andrew.rybchenko@oktetlabs.ru>
> Subject: [PATCH v4 04/28] ethdev: mark rte_tm API's as stable
> 
> These API's have been around since 20.11, mark them as not
> experimental.
> 
> Signed-off-by: Stephen Hemminger <stephen@networkplumber.org>
> ---
>  MAINTAINERS            |  2 +-
>  lib/ethdev/rte_tm.h    | 34 -----------------------
>  lib/ethdev/version.map | 62 ++++++++++++++++++++----------------------
>  3 files changed, 31 insertions(+), 67 deletions(-)
> 

Acked-by: Cristian Dumitrescu <cristian.dumitrescu@intel.com>


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

* RE: [PATCH v4 03/28] ethdev: mark rte_mtr API's as stable
  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
  0 siblings, 1 reply; 219+ messages in thread
From: Dumitrescu, Cristian @ 2023-10-20 10:18 UTC (permalink / raw)
  To: Stephen Hemminger, dev; +Cc: Thomas Monjalon, Ferruh Yigit, Andrew Rybchenko



> -----Original Message-----
> From: Stephen Hemminger <stephen@networkplumber.org>
> Sent: Thursday, October 19, 2023 8:10 PM
> To: dev@dpdk.org
> Cc: Stephen Hemminger <stephen@networkplumber.org>; Thomas Monjalon
> <thomas@monjalon.net>; Dumitrescu, Cristian
> <cristian.dumitrescu@intel.com>; Ferruh Yigit <ferruh.yigit@amd.com>;
> Andrew Rybchenko <andrew.rybchenko@oktetlabs.ru>
> Subject: [PATCH v4 03/28] ethdev: mark rte_mtr API's as stable
> 
> These haven't changed in a while, time has come to make them
> not experimental.
> 
> Signed-off-by: Stephen Hemminger <stephen@networkplumber.org>
> ---

NAK.

This API needs more drivers to use it and more time before transitioning to stable.

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

* RE: [PATCH v4 06/28] pcapng: mark API's as stable
  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
  0 siblings, 0 replies; 219+ messages in thread
From: Morten Brørup @ 2023-10-20 11:03 UTC (permalink / raw)
  To: Stephen Hemminger, dev; +Cc: Reshma Pattan

> From: Stephen Hemminger [mailto:stephen@networkplumber.org]
> Sent: Thursday, 19 October 2023 21.10
> 
> This API was added in 23.11 and can now be marked as not
> experimental.

If they were added in 23.11 they would be brand new.

The same typo is present in other patches in this series.


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

* Re: [PATCH v4 03/28] ethdev: mark rte_mtr API's as stable
  2023-10-20 10:18     ` Dumitrescu, Cristian
@ 2023-10-20 20:32       ` Stephen Hemminger
  2023-10-23  9:16         ` Dumitrescu, Cristian
  0 siblings, 1 reply; 219+ messages in thread
From: Stephen Hemminger @ 2023-10-20 20:32 UTC (permalink / raw)
  To: Dumitrescu, Cristian; +Cc: dev, Thomas Monjalon, Ferruh Yigit, Andrew Rybchenko

On Fri, 20 Oct 2023 10:18:29 +0000
"Dumitrescu, Cristian" <cristian.dumitrescu@intel.com> wrote:

> > -----Original Message-----
> > From: Stephen Hemminger <stephen@networkplumber.org>
> > Sent: Thursday, October 19, 2023 8:10 PM
> > To: dev@dpdk.org
> > Cc: Stephen Hemminger <stephen@networkplumber.org>; Thomas Monjalon
> > <thomas@monjalon.net>; Dumitrescu, Cristian
> > <cristian.dumitrescu@intel.com>; Ferruh Yigit <ferruh.yigit@amd.com>;
> > Andrew Rybchenko <andrew.rybchenko@oktetlabs.ru>
> > Subject: [PATCH v4 03/28] ethdev: mark rte_mtr API's as stable
> > 
> > These haven't changed in a while, time has come to make them
> > not experimental.
> > 
> > Signed-off-by: Stephen Hemminger <stephen@networkplumber.org>
> > ---  
> 
> NAK.
> 
> This API needs more drivers to use it and more time before transitioning to stable.

We need to discuss this at tech board. The experimental flag was intended to 
be allowed for only a limited time. The mtr library was added 5 years ago in 17.11
release! If it is not used now, it should be removed.

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

* Re: [PATCH v3 22/29] vhost: remove experimental from some API's
  2023-10-20  7:41     ` Maxime Coquelin
@ 2023-10-20 20:36       ` Stephen Hemminger
  0 siblings, 0 replies; 219+ messages in thread
From: Stephen Hemminger @ 2023-10-20 20:36 UTC (permalink / raw)
  To: Maxime Coquelin; +Cc: dev, chenbo.xia

On Fri, 20 Oct 2023 09:41:48 +0200
Maxime Coquelin <maxime.coquelin@redhat.com> wrote:

> I think we should wait before remove experimental tag on all the Vhost
> async APIs. Indeed, it was intended to be used by OVS, but the proposed
> architecture was nacked by the OVS maintainers. I'm not aware of any
> other user of these APIs.
> 
> So we are not sure the proposed API is a good fit.
> Furthermore, it is not clear the team who implemented Vhost Async are
> still going to maintain it.
> 
> Chenbo, what do you think?
> 
> Thanks,
> Maxime

If it was not accepted then maybe the right answer is to mark it
as deprecated. It is hard to remove API's but if is experimental
maybe drop it all together now?

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

* [PATCH v5 00/26] Promote many experimental API's to stable
  2023-08-08 17:35 [PATCH 00/20] remove experimental flag from some API's Stephen Hemminger
                   ` (23 preceding siblings ...)
  2023-10-19 19:09 ` [PATCH v4 00/28] Promote many experimental API's to stable Stephen Hemminger
@ 2023-10-20 20:57 ` 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
                     ` (25 more replies)
  2023-10-24  2:39 ` [PATCH v6 00/25] Promite many experimental API's to stable Stephen Hemminger
                   ` (2 subsequent siblings)
  27 siblings, 26 replies; 219+ messages in thread
From: Stephen Hemminger @ 2023-10-20 20:57 UTC (permalink / raw)
  To: dev; +Cc: Stephen Hemminger

Since 23.11 is an LTS release it is time to remove the experimental
bandaid off many API's. There are about 890 API's marked with experimental
on current main branch. This addresses the easy to remove ones and
gets it down to about 510 places.

The rule is any API that has been in since 22.11 needs to have
experimental removed (or have API deleted). The experimental flag is not a
"get out of ABI stability for free" card

v5 - fix missing symbol in power version map
     drop mtr, vhost, port and table changes
     add eventdev and cryptodev

Stephen Hemminger (26):
  bpf: make rte_bpf_dump and rte_bpf_convert stable API's
  cmdline: make experimental API's stable
  ethdev: mark rte_tm API's as stable
  pdump: make API's stable
  pcapng: mark API's as stable
  net: remove experimental from functions
  rcu: remove experimental from rte_rcu_qbsr
  lpm: remove experimental
  mbuf: remove experimental from create_extbuf
  hash: remove experimental from toeplitz hash
  timer: remove experimental from rte_timer_next_ticks
  sched: remove experimental
  dmadev: mark API's as not experimental
  meter: remove experimental warning from comments
  power: remove experimental from API's
  kvargs: remove experimental flag
  ip_frag: mark a couple of functions stable
  member: remove experimental tag
  security: remove experimental flag from macsec
  bbdev: remove experimental tag
  ipsec: remove experimental from SA API
  compressdev: remove experimental flag
  regexdev: remove experimental tag
  node: remove some of the experimental tags
  eventdev: make many API's stable
  cryptodev: mark older API's stable

 MAINTAINERS                             |  8 +--
 lib/bbdev/rte_bbdev.h                   |  4 --
 lib/bbdev/rte_bbdev_op.h                |  2 -
 lib/bbdev/version.map                   | 15 ++--
 lib/bpf/rte_bpf.h                       |  2 -
 lib/bpf/version.map                     |  9 +--
 lib/cmdline/cmdline.h                   |  1 -
 lib/cmdline/cmdline_parse.h             |  4 --
 lib/cmdline/cmdline_rdline.h            |  4 --
 lib/cmdline/version.map                 | 26 +++----
 lib/compressdev/rte_comp.h              |  6 --
 lib/compressdev/rte_compressdev.h       | 26 -------
 lib/compressdev/rte_compressdev_pmd.h   |  6 --
 lib/compressdev/version.map             |  2 +-
 lib/cryptodev/rte_cryptodev.h           | 31 ---------
 lib/cryptodev/version.map               | 77 +++++++++------------
 lib/dmadev/rte_dmadev.h                 | 85 -----------------------
 lib/dmadev/version.map                  |  2 +-
 lib/ethdev/rte_tm.h                     | 34 ---------
 lib/ethdev/version.map                  | 62 ++++++++---------
 lib/eventdev/rte_event_crypto_adapter.h |  4 --
 lib/eventdev/rte_event_eth_rx_adapter.h |  6 --
 lib/eventdev/rte_event_eth_tx_adapter.h |  3 -
 lib/eventdev/rte_event_timer_adapter.h  |  3 -
 lib/eventdev/rte_eventdev.h             |  4 --
 lib/eventdev/version.map                | 34 ++++-----
 lib/hash/rte_thash.h                    | 44 ------------
 lib/hash/rte_thash_gfni.h               |  8 ---
 lib/hash/rte_thash_x86_gfni.h           |  8 ---
 lib/hash/version.map                    | 16 ++---
 lib/ip_frag/rte_ip_frag.h               |  2 -
 lib/ip_frag/version.map                 |  9 +--
 lib/ipsec/rte_ipsec.h                   |  2 -
 lib/ipsec/version.map                   |  9 +--
 lib/kvargs/rte_kvargs.h                 |  4 --
 lib/kvargs/version.map                  |  8 +--
 lib/lpm/rte_lpm.h                       |  4 --
 lib/lpm/version.map                     |  7 +-
 lib/mbuf/rte_mbuf.h                     |  1 -
 lib/mbuf/version.map                    |  8 +--
 lib/member/rte_member.h                 | 54 ---------------
 lib/member/version.map                  | 12 +---
 lib/meter/rte_meter.h                   | 12 ----
 lib/net/rte_ip.h                        | 19 -----
 lib/node/rte_node_eth_api.h             |  1 -
 lib/node/rte_node_ip4_api.h             |  2 -
 lib/node/version.map                    | 16 +++--
 lib/pcapng/rte_pcapng.h                 | 11 ---
 lib/pcapng/version.map                  |  6 +-
 lib/pdump/rte_pdump.h                   | 12 ----
 lib/pdump/version.map                   | 11 +--
 lib/power/rte_power.h                   |  4 --
 lib/power/rte_power_guest_channel.h     |  4 --
 lib/power/rte_power_pmd_mgmt.h          | 40 -----------
 lib/power/rte_power_uncore.h            |  5 --
 lib/power/version.map                   | 41 ++++-------
 lib/rcu/rte_rcu_qsbr.h                  | 20 ------
 lib/rcu/version.map                     | 15 ++--
 lib/regexdev/rte_regexdev.h             | 92 -------------------------
 lib/regexdev/version.map                |  2 +-
 lib/sched/rte_pie.h                     |  8 ---
 lib/sched/rte_sched.h                   |  5 --
 lib/sched/version.map                   | 18 ++---
 lib/security/rte_security.h             | 27 --------
 lib/security/version.map                | 18 ++---
 lib/timer/rte_timer.h                   |  4 --
 lib/timer/version.map                   |  7 +-
 67 files changed, 161 insertions(+), 895 deletions(-)

-- 
2.39.2


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

* [PATCH v5 01/26] bpf: make rte_bpf_dump and rte_bpf_convert stable API's
  2023-10-20 20:57 ` [PATCH v5 00/26] Promote many experimental API's to stable Stephen Hemminger
@ 2023-10-20 20:57   ` Stephen Hemminger
  2023-10-20 20:57   ` [PATCH v5 02/26] cmdline: make experimental API's stable Stephen Hemminger
                     ` (24 subsequent siblings)
  25 siblings, 0 replies; 219+ messages in thread
From: Stephen Hemminger @ 2023-10-20 20:57 UTC (permalink / raw)
  To: dev; +Cc: Stephen Hemminger, Konstantin Ananyev

These two API's were introduced in 22.11 and can now be
made not experimental.

Signed-off-by: Stephen Hemminger <stephen@networkplumber.org>
Acked-by: Konstantin Ananyev <konstantin.v.ananyev@yandex.ru>
---
 lib/bpf/rte_bpf.h   | 2 --
 lib/bpf/version.map | 9 ++-------
 2 files changed, 2 insertions(+), 9 deletions(-)

diff --git a/lib/bpf/rte_bpf.h b/lib/bpf/rte_bpf.h
index 4d71120dbd9d..f70d8dacd0d3 100644
--- a/lib/bpf/rte_bpf.h
+++ b/lib/bpf/rte_bpf.h
@@ -209,7 +209,6 @@ rte_bpf_get_jit(const struct rte_bpf *bpf, struct rte_bpf_jit *jit);
  * @param len
  *   Number of BPF instructions to dump.
  */
-__rte_experimental
 void
 rte_bpf_dump(FILE *f, const struct ebpf_insn *buf, uint32_t len);
 
@@ -229,7 +228,6 @@ struct bpf_program;
  *   - ENOMEM - can't reserve enough memory
  *   - ENOTSUP - operation not supported
  */
-__rte_experimental
 struct rte_bpf_prm *
 rte_bpf_convert(const struct bpf_program *prog);
 
diff --git a/lib/bpf/version.map b/lib/bpf/version.map
index c49bf1701f0a..2e957494e9df 100644
--- a/lib/bpf/version.map
+++ b/lib/bpf/version.map
@@ -1,7 +1,9 @@
 DPDK_24 {
 	global:
 
+	rte_bpf_convert;
 	rte_bpf_destroy;
+	rte_bpf_dump;
 	rte_bpf_elf_load;
 	rte_bpf_eth_rx_elf_load;
 	rte_bpf_eth_rx_unload;
@@ -14,10 +16,3 @@ DPDK_24 {
 
 	local: *;
 };
-
-EXPERIMENTAL {
-	global:
-
-	rte_bpf_convert;
-	rte_bpf_dump;
-};
-- 
2.39.2


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

* [PATCH v5 02/26] cmdline: make experimental API's stable
  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   ` Stephen Hemminger
  2023-10-20 20:57   ` [PATCH v5 03/26] ethdev: mark rte_tm API's as stable Stephen Hemminger
                     ` (23 subsequent siblings)
  25 siblings, 0 replies; 219+ messages in thread
From: Stephen Hemminger @ 2023-10-20 20:57 UTC (permalink / raw)
  To: dev; +Cc: Stephen Hemminger, Bruce Richardson

These API's have all ben around for several releases.

Signed-off-by: Stephen Hemminger <stephen@networkplumber.org>
Acked-by: Bruce Richardson <bruce.richardson@intel.com>
---
 lib/cmdline/cmdline.h        |  1 -
 lib/cmdline/cmdline_parse.h  |  4 ----
 lib/cmdline/cmdline_rdline.h |  4 ----
 lib/cmdline/version.map      | 26 ++++++++------------------
 4 files changed, 8 insertions(+), 27 deletions(-)

diff --git a/lib/cmdline/cmdline.h b/lib/cmdline/cmdline.h
index 992c84591456..dd41e1054378 100644
--- a/lib/cmdline/cmdline.h
+++ b/lib/cmdline/cmdline.h
@@ -39,7 +39,6 @@ void cmdline_printf(const struct cmdline *cl, const char *fmt, ...)
 int cmdline_in(struct cmdline *cl, const char *buf, int size);
 int cmdline_write_char(struct rdline *rdl, char c);
 
-__rte_experimental
 struct rdline *
 cmdline_get_rdline(struct cmdline *cl);
 
diff --git a/lib/cmdline/cmdline_parse.h b/lib/cmdline/cmdline_parse.h
index a852ac411c59..41b4db1f76f9 100644
--- a/lib/cmdline/cmdline_parse.h
+++ b/lib/cmdline/cmdline_parse.h
@@ -155,9 +155,6 @@ typedef cmdline_parse_inst_t *cmdline_parse_ctx_t;
 int cmdline_parse(struct cmdline *cl, const char *buf);
 
 /**
- * @warning
- * @b EXPERIMENTAL: this API may change without prior notice
- *
  * Try to parse a buffer according to the specified context, but do not
  * perform any function calls if parse is successful.
  *
@@ -166,7 +163,6 @@ int cmdline_parse(struct cmdline *cl, const char *buf);
  * CMDLINE_PARSE_BAD_ARGS on error and returns the parsed line length (>=0)
  * on successful parse.
  */
-__rte_experimental
 int cmdline_parse_check(struct cmdline *cl, const char *buf);
 
 /**
diff --git a/lib/cmdline/cmdline_rdline.h b/lib/cmdline/cmdline_rdline.h
index 1b4cc7ce5773..c6bb6bbbb36a 100644
--- a/lib/cmdline/cmdline_rdline.h
+++ b/lib/cmdline/cmdline_rdline.h
@@ -58,7 +58,6 @@ typedef int (rdline_complete_t)(struct rdline *rdl, const char *buf,
  *
  * \return New rdline object on success, NULL on failure.
  */
-__rte_experimental
 struct rdline *rdline_new(rdline_write_char_t *write_char,
 			  rdline_validate_t *validate,
 			  rdline_complete_t *complete,
@@ -70,7 +69,6 @@ struct rdline *rdline_new(rdline_write_char_t *write_char,
  * \param rdl A pointer to an initialized struct rdline.
  *            If NULL, this function is a no-op.
  */
-__rte_experimental
 void rdline_free(struct rdline *rdl);
 
 /**
@@ -163,13 +161,11 @@ char *rdline_get_history_item(struct rdline *rdl, unsigned int i);
 /**
  * Get maximum history buffer size.
  */
-__rte_experimental
 size_t rdline_get_history_buffer_size(struct rdline *rdl);
 
 /**
  * Get the opaque pointer supplied on struct rdline creation.
  */
-__rte_experimental
 void *rdline_get_opaque(struct rdline *rdl);
 
 #ifdef __cplusplus
diff --git a/lib/cmdline/version.map b/lib/cmdline/version.map
index 97166789016c..88174e39bcb7 100644
--- a/lib/cmdline/version.map
+++ b/lib/cmdline/version.map
@@ -30,11 +30,13 @@ DPDK_24 {
 	cmdline_get_help_num;
 	cmdline_get_help_portlist;
 	cmdline_get_help_string;
+	cmdline_get_rdline;
 	cmdline_in;
 	cmdline_interact;
 	cmdline_isendoftoken;
 	cmdline_new;
 	cmdline_parse;
+	cmdline_parse_check;
 	cmdline_parse_etheraddr;
 	cmdline_parse_ipaddr;
 	cmdline_parse_num;
@@ -51,37 +53,25 @@ DPDK_24 {
 	cmdline_token_portlist_ops;
 	cmdline_token_string_ops;
 	cmdline_write_char;
+
 	rdline_add_history;
 	rdline_char_in;
 	rdline_clear_history;
+	rdline_free;
 	rdline_get_buffer;
+	rdline_get_history_buffer_size;
 	rdline_get_history_item;
+	rdline_get_opaque;
+	rdline_new;
 	rdline_newline;
 	rdline_quit;
 	rdline_redisplay;
 	rdline_reset;
 	rdline_restart;
 	rdline_stop;
+
 	vt100_init;
 	vt100_parser;
 
 	local: *;
 };
-
-EXPERIMENTAL {
-	global:
-
-	# added in 20.11
-	cmdline_get_rdline;
-
-	# added in 21.11
-	rdline_new;
-	rdline_free;
-	rdline_get_history_buffer_size;
-	rdline_get_opaque;
-
-	# added in 22.07
-	cmdline_parse_check;
-
-	local: *;
-};
-- 
2.39.2


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

* [PATCH v5 03/26] ethdev: mark rte_tm API's as stable
  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   ` Stephen Hemminger
  2023-10-20 20:57   ` [PATCH v5 04/26] pdump: make API's stable Stephen Hemminger
                     ` (22 subsequent siblings)
  25 siblings, 0 replies; 219+ messages in thread
From: Stephen Hemminger @ 2023-10-20 20:57 UTC (permalink / raw)
  To: dev
  Cc: Stephen Hemminger, Cristian Dumitrescu, Thomas Monjalon,
	Ferruh Yigit, Andrew Rybchenko

These API's have been around since 20.11, mark them as not
experimental.

Signed-off-by: Stephen Hemminger <stephen@networkplumber.org>
Acked-by: Cristian Dumitrescu <cristian.dumitrescu@intel.com>
---
 MAINTAINERS            |  2 +-
 lib/ethdev/rte_tm.h    | 34 -----------------------
 lib/ethdev/version.map | 62 ++++++++++++++++++++----------------------
 3 files changed, 31 insertions(+), 67 deletions(-)

diff --git a/MAINTAINERS b/MAINTAINERS
index 4083658697fb..e5d92aa74926 100644
--- a/MAINTAINERS
+++ b/MAINTAINERS
@@ -421,7 +421,7 @@ F: app/test-pmd/cmdline_flow.c
 F: doc/guides/prog_guide/rte_flow.rst
 F: lib/ethdev/rte_flow*
 
-Traffic Management API - EXPERIMENTAL
+Traffic Management API
 M: Cristian Dumitrescu <cristian.dumitrescu@intel.com>
 T: git://dpdk.org/next/dpdk-next-net
 F: lib/ethdev/rte_tm*
diff --git a/lib/ethdev/rte_tm.h b/lib/ethdev/rte_tm.h
index 08c5fafecdf3..799b92aadaa9 100644
--- a/lib/ethdev/rte_tm.h
+++ b/lib/ethdev/rte_tm.h
@@ -14,10 +14,6 @@
  * This interface provides the ability to configure the traffic manager in a
  * generic way. It includes features such as: hierarchical scheduling,
  * traffic shaping, congestion management, packet marking, etc.
- *
- * @warning
- * @b EXPERIMENTAL:
- * All functions in this file may be changed or removed without prior notice.
  */
 
 #include <stdint.h>
@@ -1242,7 +1238,6 @@ struct rte_tm_error {
  * @return
  *   0 on success, non-zero error code otherwise.
  */
-__rte_experimental
 int
 rte_tm_get_number_of_leaf_nodes(uint16_t port_id,
 	uint32_t *n_leaf_nodes,
@@ -1267,7 +1262,6 @@ rte_tm_get_number_of_leaf_nodes(uint16_t port_id,
  * @return
  *   0 on success, non-zero error code otherwise.
  */
-__rte_experimental
 int
 rte_tm_node_type_get(uint16_t port_id,
 	uint32_t node_id,
@@ -1286,7 +1280,6 @@ rte_tm_node_type_get(uint16_t port_id,
  * @return
  *   0 on success, non-zero error code otherwise.
  */
-__rte_experimental
 int
 rte_tm_capabilities_get(uint16_t port_id,
 	struct rte_tm_capabilities *cap,
@@ -1307,7 +1300,6 @@ rte_tm_capabilities_get(uint16_t port_id,
  * @return
  *   0 on success, non-zero error code otherwise.
  */
-__rte_experimental
 int
 rte_tm_level_capabilities_get(uint16_t port_id,
 	uint32_t level_id,
@@ -1328,7 +1320,6 @@ rte_tm_level_capabilities_get(uint16_t port_id,
  * @return
  *   0 on success, non-zero error code otherwise.
  */
-__rte_experimental
 int
 rte_tm_node_capabilities_get(uint16_t port_id,
 	uint32_t node_id,
@@ -1354,7 +1345,6 @@ rte_tm_node_capabilities_get(uint16_t port_id,
  *
  * @see struct rte_tm_capabilities::cman_wred_context_n_max
  */
-__rte_experimental
 int
 rte_tm_wred_profile_add(uint16_t port_id,
 	uint32_t wred_profile_id,
@@ -1378,7 +1368,6 @@ rte_tm_wred_profile_add(uint16_t port_id,
  *
  * @see struct rte_tm_capabilities::cman_wred_context_n_max
  */
-__rte_experimental
 int
 rte_tm_wred_profile_delete(uint16_t port_id,
 	uint32_t wred_profile_id,
@@ -1410,7 +1399,6 @@ rte_tm_wred_profile_delete(uint16_t port_id,
  *
  * @see struct rte_tm_capabilities::cman_wred_context_shared_n_max
  */
-__rte_experimental
 int
 rte_tm_shared_wred_context_add_update(uint16_t port_id,
 	uint32_t shared_wred_context_id,
@@ -1435,7 +1423,6 @@ rte_tm_shared_wred_context_add_update(uint16_t port_id,
  *
  * @see struct rte_tm_capabilities::cman_wred_context_shared_n_max
  */
-__rte_experimental
 int
 rte_tm_shared_wred_context_delete(uint16_t port_id,
 	uint32_t shared_wred_context_id,
@@ -1460,7 +1447,6 @@ rte_tm_shared_wred_context_delete(uint16_t port_id,
  *
  * @see struct rte_tm_capabilities::shaper_n_max
  */
-__rte_experimental
 int
 rte_tm_shaper_profile_add(uint16_t port_id,
 	uint32_t shaper_profile_id,
@@ -1484,7 +1470,6 @@ rte_tm_shaper_profile_add(uint16_t port_id,
  *
  * @see struct rte_tm_capabilities::shaper_n_max
  */
-__rte_experimental
 int
 rte_tm_shaper_profile_delete(uint16_t port_id,
 	uint32_t shaper_profile_id,
@@ -1514,7 +1499,6 @@ rte_tm_shaper_profile_delete(uint16_t port_id,
  *
  * @see struct rte_tm_capabilities::shaper_shared_n_max
  */
-__rte_experimental
 int
 rte_tm_shared_shaper_add_update(uint16_t port_id,
 	uint32_t shared_shaper_id,
@@ -1538,7 +1522,6 @@ rte_tm_shared_shaper_add_update(uint16_t port_id,
  *
  * @see struct rte_tm_capabilities::shaper_shared_n_max
  */
-__rte_experimental
 int
 rte_tm_shared_shaper_delete(uint16_t port_id,
 	uint32_t shared_shaper_id,
@@ -1607,7 +1590,6 @@ rte_tm_shared_shaper_delete(uint16_t port_id,
  * @see RTE_TM_NODE_LEVEL_ID_ANY
  * @see struct rte_tm_capabilities
  */
-__rte_experimental
 int
 rte_tm_node_add(uint16_t port_id,
 	uint32_t node_id,
@@ -1641,7 +1623,6 @@ rte_tm_node_add(uint16_t port_id,
  *
  * @see RTE_TM_UPDATE_NODE_ADD_DELETE
  */
-__rte_experimental
 int
 rte_tm_node_delete(uint16_t port_id,
 	uint32_t node_id,
@@ -1666,7 +1647,6 @@ rte_tm_node_delete(uint16_t port_id,
  * @see rte_tm_node_resume()
  * @see RTE_TM_UPDATE_NODE_SUSPEND_RESUME
  */
-__rte_experimental
 int
 rte_tm_node_suspend(uint16_t port_id,
 	uint32_t node_id,
@@ -1690,7 +1670,6 @@ rte_tm_node_suspend(uint16_t port_id,
  * @see rte_tm_node_suspend()
  * @see RTE_TM_UPDATE_NODE_SUSPEND_RESUME
  */
-__rte_experimental
 int
 rte_tm_node_resume(uint16_t port_id,
 	uint32_t node_id,
@@ -1732,7 +1711,6 @@ rte_tm_node_resume(uint16_t port_id,
  * @see rte_tm_node_add()
  * @see rte_tm_node_delete()
  */
-__rte_experimental
 int
 rte_tm_hierarchy_commit(uint16_t port_id,
 	int clear_on_fail,
@@ -1773,7 +1751,6 @@ rte_tm_hierarchy_commit(uint16_t port_id,
  * @see RTE_TM_UPDATE_NODE_PARENT_KEEP_LEVEL
  * @see RTE_TM_UPDATE_NODE_PARENT_CHANGE_LEVEL
  */
-__rte_experimental
 int
 rte_tm_node_parent_update(uint16_t port_id,
 	uint32_t node_id,
@@ -1803,7 +1780,6 @@ rte_tm_node_parent_update(uint16_t port_id,
  *
  * @see struct rte_tm_capabilities::shaper_private_n_max
  */
-__rte_experimental
 int
 rte_tm_node_shaper_update(uint16_t port_id,
 	uint32_t node_id,
@@ -1831,7 +1807,6 @@ rte_tm_node_shaper_update(uint16_t port_id,
  *
  * @see struct rte_tm_capabilities::shaper_shared_n_max
  */
-__rte_experimental
 int
 rte_tm_node_shared_shaper_update(uint16_t port_id,
 	uint32_t node_id,
@@ -1859,7 +1834,6 @@ rte_tm_node_shared_shaper_update(uint16_t port_id,
  * @see enum rte_tm_stats_type
  * @see RTE_TM_UPDATE_NODE_STATS
  */
-__rte_experimental
 int
 rte_tm_node_stats_update(uint16_t port_id,
 	uint32_t node_id,
@@ -1888,7 +1862,6 @@ rte_tm_node_stats_update(uint16_t port_id,
  * @see RTE_TM_UPDATE_NODE_WFQ_WEIGHT_MODE
  * @see RTE_TM_UPDATE_NODE_N_SP_PRIORITIES
  */
-__rte_experimental
 int
 rte_tm_node_wfq_weight_mode_update(uint16_t port_id,
 	uint32_t node_id,
@@ -1912,7 +1885,6 @@ rte_tm_node_wfq_weight_mode_update(uint16_t port_id,
  *
  * @see RTE_TM_UPDATE_NODE_CMAN
  */
-__rte_experimental
 int
 rte_tm_node_cman_update(uint16_t port_id,
 	uint32_t node_id,
@@ -1937,7 +1909,6 @@ rte_tm_node_cman_update(uint16_t port_id,
  *
  * @see struct rte_tm_capabilities::cman_wred_context_private_n_max
  */
-__rte_experimental
 int
 rte_tm_node_wred_context_update(uint16_t port_id,
 	uint32_t node_id,
@@ -1963,7 +1934,6 @@ rte_tm_node_wred_context_update(uint16_t port_id,
  *
  * @see struct rte_tm_capabilities::cman_wred_context_shared_n_max
  */
-__rte_experimental
 int
 rte_tm_node_shared_wred_context_update(uint16_t port_id,
 	uint32_t node_id,
@@ -1996,7 +1966,6 @@ rte_tm_node_shared_wred_context_update(uint16_t port_id,
  *
  * @see enum rte_tm_stats_type
  */
-__rte_experimental
 int
 rte_tm_node_stats_read(uint16_t port_id,
 	uint32_t node_id,
@@ -2034,7 +2003,6 @@ rte_tm_node_stats_read(uint16_t port_id,
  *
  * @see struct rte_tm_capabilities::mark_vlan_dei_supported
  */
-__rte_experimental
 int
 rte_tm_mark_vlan_dei(uint16_t port_id,
 	int mark_green,
@@ -2085,7 +2053,6 @@ rte_tm_mark_vlan_dei(uint16_t port_id,
  * @see struct rte_tm_capabilities::mark_ip_ecn_tcp_supported
  * @see struct rte_tm_capabilities::mark_ip_ecn_sctp_supported
  */
-__rte_experimental
 int
 rte_tm_mark_ip_ecn(uint16_t port_id,
 	int mark_green,
@@ -2134,7 +2101,6 @@ rte_tm_mark_ip_ecn(uint16_t port_id,
  *
  * @see struct rte_tm_capabilities::mark_ip_dscp_supported
  */
-__rte_experimental
 int
 rte_tm_mark_ip_dscp(uint16_t port_id,
 	int mark_green,
diff --git a/lib/ethdev/version.map b/lib/ethdev/version.map
index 919ba5b8e65b..072ad3401235 100644
--- a/lib/ethdev/version.map
+++ b/lib/ethdev/version.map
@@ -135,6 +135,36 @@ DPDK_24 {
 	rte_flow_pick_transfer_proxy;
 	rte_flow_query;
 	rte_flow_validate;
+	rte_tm_capabilities_get;
+	rte_tm_get_number_of_leaf_nodes;
+	rte_tm_hierarchy_commit;
+	rte_tm_level_capabilities_get;
+	rte_tm_mark_ip_dscp;
+	rte_tm_mark_ip_ecn;
+	rte_tm_mark_vlan_dei;
+	rte_tm_node_add;
+	rte_tm_node_capabilities_get;
+	rte_tm_node_cman_update;
+	rte_tm_node_delete;
+	rte_tm_node_parent_update;
+	rte_tm_node_resume;
+	rte_tm_node_shaper_update;
+	rte_tm_node_shared_shaper_update;
+	rte_tm_node_shared_wred_context_update;
+	rte_tm_node_stats_read;
+	rte_tm_node_stats_update;
+	rte_tm_node_suspend;
+	rte_tm_node_type_get;
+	rte_tm_node_wfq_weight_mode_update;
+	rte_tm_node_wred_context_update;
+	rte_tm_shaper_profile_add;
+	rte_tm_shaper_profile_delete;
+	rte_tm_shared_shaper_add_update;
+	rte_tm_shared_shaper_delete;
+	rte_tm_shared_wred_context_add_update;
+	rte_tm_shared_wred_context_delete;
+	rte_tm_wred_profile_add;
+	rte_tm_wred_profile_delete;
 
 	local: *;
 };
@@ -181,38 +211,6 @@ EXPERIMENTAL {
 	__rte_ethdev_trace_tx_burst;
 	rte_flow_get_aged_flows;
 
-	# Marked as experimental in 20.11
-	rte_tm_capabilities_get;
-	rte_tm_get_number_of_leaf_nodes;
-	rte_tm_hierarchy_commit;
-	rte_tm_level_capabilities_get;
-	rte_tm_mark_ip_dscp;
-	rte_tm_mark_ip_ecn;
-	rte_tm_mark_vlan_dei;
-	rte_tm_node_add;
-	rte_tm_node_capabilities_get;
-	rte_tm_node_cman_update;
-	rte_tm_node_delete;
-	rte_tm_node_parent_update;
-	rte_tm_node_resume;
-	rte_tm_node_shaper_update;
-	rte_tm_node_shared_shaper_update;
-	rte_tm_node_shared_wred_context_update;
-	rte_tm_node_stats_read;
-	rte_tm_node_stats_update;
-	rte_tm_node_suspend;
-	rte_tm_node_type_get;
-	rte_tm_node_wfq_weight_mode_update;
-	rte_tm_node_wred_context_update;
-	rte_tm_shaper_profile_add;
-	rte_tm_shaper_profile_delete;
-	rte_tm_shared_shaper_add_update;
-	rte_tm_shared_shaper_delete;
-	rte_tm_shared_wred_context_add_update;
-	rte_tm_shared_wred_context_delete;
-	rte_tm_wred_profile_add;
-	rte_tm_wred_profile_delete;
-
 	# added in 20.11
 	rte_eth_hairpin_bind;
 	rte_eth_hairpin_get_peer_ports;
-- 
2.39.2


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

* [PATCH v5 04/26] pdump: make API's stable
  2023-10-20 20:57 ` [PATCH v5 00/26] Promote many experimental API's to stable Stephen Hemminger
                     ` (2 preceding siblings ...)
  2023-10-20 20:57   ` [PATCH v5 03/26] ethdev: mark rte_tm API's as stable Stephen Hemminger
@ 2023-10-20 20:57   ` 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
                     ` (21 subsequent siblings)
  25 siblings, 1 reply; 219+ messages in thread
From: Stephen Hemminger @ 2023-10-20 20:57 UTC (permalink / raw)
  To: dev; +Cc: Stephen Hemminger, Reshma Pattan

The filtering API's were added in 22.11 and can now be marked
as not experimental.

Signed-off-by: Stephen Hemminger <stephen@networkplumber.org>
---
 lib/pdump/rte_pdump.h | 12 ------------
 lib/pdump/version.map | 11 +++--------
 2 files changed, 3 insertions(+), 20 deletions(-)

diff --git a/lib/pdump/rte_pdump.h b/lib/pdump/rte_pdump.h
index b1a391830c1d..414931a12cce 100644
--- a/lib/pdump/rte_pdump.h
+++ b/lib/pdump/rte_pdump.h
@@ -83,9 +83,6 @@ rte_pdump_enable(uint16_t port, uint16_t queue, uint32_t flags,
 		void *filter);
 
 /**
- * @warning
- * @b EXPERIMENTAL: this API may change, or be removed, without prior notice
- *
  * Enables packet capturing on given port and queue with filtering.
  *
  * @param port_id
@@ -109,7 +106,6 @@ rte_pdump_enable(uint16_t port, uint16_t queue, uint32_t flags,
  * @return
  *    0 on success, -1 on error, rte_errno is set accordingly.
  */
-__rte_experimental
 int
 rte_pdump_enable_bpf(uint16_t port_id, uint16_t queue,
 		     uint32_t flags, uint32_t snaplen,
@@ -169,9 +165,6 @@ rte_pdump_enable_by_deviceid(char *device_id, uint16_t queue,
 				void *filter);
 
 /**
- * @warning
- * @b EXPERIMENTAL: this API may change, or be removed, without prior notice
- *
  * Enables packet capturing on given device id and queue with filtering.
  * device_id can be name or pci address of device.
  *
@@ -196,7 +189,6 @@ rte_pdump_enable_by_deviceid(char *device_id, uint16_t queue,
  * @return
  *    0 on success, -1 on error, rte_errno is set accordingly.
  */
-__rte_experimental
 int
 rte_pdump_enable_bpf_by_deviceid(const char *device_id, uint16_t queue,
 				 uint32_t flags, uint32_t snaplen,
@@ -242,9 +234,6 @@ struct rte_pdump_stats {
 };
 
 /**
- * @warning
- * @b EXPERIMENTAL: this API may change, or be removed, without prior notice
- *
  * Retrieve the packet capture statistics for a queue.
  *
  * @param port_id
@@ -254,7 +243,6 @@ struct rte_pdump_stats {
  * @return
  *   Zero if successful. -1 on error and rte_errno is set.
  */
-__rte_experimental
 int
 rte_pdump_stats(uint16_t port_id, struct rte_pdump_stats *stats);
 
diff --git a/lib/pdump/version.map b/lib/pdump/version.map
index 225830dc85a7..ea5bd157cdb1 100644
--- a/lib/pdump/version.map
+++ b/lib/pdump/version.map
@@ -4,17 +4,12 @@ DPDK_24 {
 	rte_pdump_disable;
 	rte_pdump_disable_by_deviceid;
 	rte_pdump_enable;
+	rte_pdump_enable_bpf;
+	rte_pdump_enable_bpf_by_deviceid;
 	rte_pdump_enable_by_deviceid;
 	rte_pdump_init;
+	rte_pdump_stats;
 	rte_pdump_uninit;
 
 	local: *;
 };
-
-EXPERIMENTAL {
-	global:
-
-	rte_pdump_enable_bpf;
-	rte_pdump_enable_bpf_by_deviceid;
-	rte_pdump_stats;
-};
-- 
2.39.2


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

* [PATCH v5 05/26] pcapng: mark API's as stable
  2023-10-20 20:57 ` [PATCH v5 00/26] Promote many experimental API's to stable Stephen Hemminger
                     ` (3 preceding siblings ...)
  2023-10-20 20:57   ` [PATCH v5 04/26] pdump: make API's stable Stephen Hemminger
@ 2023-10-20 20:57   ` Stephen Hemminger
  2023-10-20 20:57   ` [PATCH v5 06/26] net: remove experimental from functions Stephen Hemminger
                     ` (20 subsequent siblings)
  25 siblings, 0 replies; 219+ messages in thread
From: Stephen Hemminger @ 2023-10-20 20:57 UTC (permalink / raw)
  To: dev; +Cc: Stephen Hemminger, Reshma Pattan

This API was added in 22.11 and can now be marked as not
experimental.

Signed-off-by: Stephen Hemminger <stephen@networkplumber.org>
---
 lib/pcapng/rte_pcapng.h | 11 -----------
 lib/pcapng/version.map  |  6 ++----
 2 files changed, 2 insertions(+), 15 deletions(-)

diff --git a/lib/pcapng/rte_pcapng.h b/lib/pcapng/rte_pcapng.h
index d93cc9f73ad5..c96c8994f38b 100644
--- a/lib/pcapng/rte_pcapng.h
+++ b/lib/pcapng/rte_pcapng.h
@@ -6,10 +6,6 @@
  * @file
  * RTE pcapng
  *
- * @warning
- * @b EXPERIMENTAL:
- * All functions in this file may be changed or removed without prior notice.
- *
  * Pcapng is an evolution from the pcap format, created to address some of
  * its deficiencies. Namely, the lack of extensibility and inability to store
  * additional information.
@@ -54,7 +50,6 @@ typedef struct rte_pcapng rte_pcapng_t;
  * @return
  *   handle to library, or NULL in case of error (and rte_errno is set).
  */
-__rte_experimental
 rte_pcapng_t *
 rte_pcapng_fdopen(int fd,
 		  const char *osname, const char *hardware,
@@ -66,7 +61,6 @@ rte_pcapng_fdopen(int fd,
  * @param self
  *  handle to library
  */
-__rte_experimental
 void
 rte_pcapng_close(rte_pcapng_t *self);
 
@@ -89,7 +83,6 @@ rte_pcapng_close(rte_pcapng_t *self);
  * and before any packet record. All ports used in packet capture
  * must be added.
  */
-__rte_experimental
 int
 rte_pcapng_add_interface(rte_pcapng_t *self, uint16_t port,
 			 const char *ifname, const char *ifdescr,
@@ -132,7 +125,6 @@ enum rte_pcapng_direction {
  *   - The pointer to the new mbuf formatted for pcapng_write
  *   - NULL if allocation fails.
  */
-__rte_experimental
 struct rte_mbuf *
 rte_pcapng_copy(uint16_t port_id, uint32_t queue,
 		const struct rte_mbuf *m, struct rte_mempool *mp,
@@ -149,7 +141,6 @@ rte_pcapng_copy(uint16_t port_id, uint32_t queue,
  *   The minimum size of mbuf data to handle packet with length bytes.
  *   Accounting for required header and trailer fields
  */
-__rte_experimental
 uint32_t
 rte_pcapng_mbuf_size(uint32_t length);
 
@@ -174,7 +165,6 @@ rte_pcapng_mbuf_size(uint32_t length);
  *  The number of bytes written to file, -1 on failure to write file.
  *  The mbuf's in *pkts* are always freed.
  */
-__rte_experimental
 ssize_t
 rte_pcapng_write_packets(rte_pcapng_t *self,
 			 struct rte_mbuf *pkts[], uint16_t nb_pkts);
@@ -205,7 +195,6 @@ rte_pcapng_write_packets(rte_pcapng_t *self,
  * @return
  *  number of bytes written to file, -1 on failure to write file
  */
-__rte_experimental
 ssize_t
 rte_pcapng_write_stats(rte_pcapng_t *self, uint16_t port,
 		       const char *comment,
diff --git a/lib/pcapng/version.map b/lib/pcapng/version.map
index 36393914d97c..81c9652ad6b5 100644
--- a/lib/pcapng/version.map
+++ b/lib/pcapng/version.map
@@ -1,6 +1,7 @@
-EXPERIMENTAL {
+DPDK_24 {
 	global:
 
+	rte_pcapng_add_interface;
 	rte_pcapng_close;
 	rte_pcapng_copy;
 	rte_pcapng_fdopen;
@@ -8,8 +9,5 @@ EXPERIMENTAL {
 	rte_pcapng_write_packets;
 	rte_pcapng_write_stats;
 
-	# added in 23.03
-	rte_pcapng_add_interface;
-
 	local: *;
 };
-- 
2.39.2


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

* [PATCH v5 06/26] net: remove experimental from functions
  2023-10-20 20:57 ` [PATCH v5 00/26] Promote many experimental API's to stable Stephen Hemminger
                     ` (4 preceding siblings ...)
  2023-10-20 20:57   ` [PATCH v5 05/26] pcapng: mark API's as stable Stephen Hemminger
@ 2023-10-20 20:57   ` Stephen Hemminger
  2023-10-20 20:57   ` [PATCH v5 07/26] rcu: remove experimental from rte_rcu_qbsr Stephen Hemminger
                     ` (19 subsequent siblings)
  25 siblings, 0 replies; 219+ messages in thread
From: Stephen Hemminger @ 2023-10-20 20:57 UTC (permalink / raw)
  To: dev; +Cc: Stephen Hemminger

These functions have been around long enough should no
longer be experimental.

Signed-off-by: Stephen Hemminger <stephen@networkplumber.org>
---
 lib/net/rte_ip.h | 19 -------------------
 1 file changed, 19 deletions(-)

diff --git a/lib/net/rte_ip.h b/lib/net/rte_ip.h
index 7f58dc6f6a9c..2cb5be222cdd 100644
--- a/lib/net/rte_ip.h
+++ b/lib/net/rte_ip.h
@@ -435,9 +435,6 @@ __rte_ipv4_udptcp_cksum_mbuf(const struct rte_mbuf *m,
 }
 
 /**
- * @warning
- * @b EXPERIMENTAL: this API may change without prior notice.
- *
  * Compute the IPv4 UDP/TCP checksum of a packet.
  *
  * @param m
@@ -449,7 +446,6 @@ __rte_ipv4_udptcp_cksum_mbuf(const struct rte_mbuf *m,
  * @return
  *   The complemented checksum to set in the L4 header.
  */
-__rte_experimental
 static inline uint16_t
 rte_ipv4_udptcp_cksum_mbuf(const struct rte_mbuf *m,
 			   const struct rte_ipv4_hdr *ipv4_hdr, uint16_t l4_off)
@@ -482,7 +478,6 @@ rte_ipv4_udptcp_cksum_mbuf(const struct rte_mbuf *m,
  * @return
  *   Return 0 if the checksum is correct, else -1.
  */
-__rte_experimental
 static inline int
 rte_ipv4_udptcp_cksum_verify(const struct rte_ipv4_hdr *ipv4_hdr,
 			     const void *l4_hdr)
@@ -496,9 +491,6 @@ rte_ipv4_udptcp_cksum_verify(const struct rte_ipv4_hdr *ipv4_hdr,
 }
 
 /**
- * @warning
- * @b EXPERIMENTAL: this API may change without prior notice.
- *
  * Verify the IPv4 UDP/TCP checksum of a packet.
  *
  * In case of UDP, the caller must first check if udp_hdr->dgram_cksum is 0
@@ -513,7 +505,6 @@ rte_ipv4_udptcp_cksum_verify(const struct rte_ipv4_hdr *ipv4_hdr,
  * @return
  *   Return 0 if the checksum is correct, else -1.
  */
-__rte_experimental
 static inline int
 rte_ipv4_udptcp_cksum_mbuf_verify(const struct rte_mbuf *m,
 				  const struct rte_ipv4_hdr *ipv4_hdr,
@@ -687,9 +678,6 @@ __rte_ipv6_udptcp_cksum_mbuf(const struct rte_mbuf *m,
 }
 
 /**
- * @warning
- * @b EXPERIMENTAL: this API may change without prior notice.
- *
  * Process the IPv6 UDP or TCP checksum of a packet.
  *
  * The IPv6 header must not be followed by extension headers. The layer 4
@@ -704,7 +692,6 @@ __rte_ipv6_udptcp_cksum_mbuf(const struct rte_mbuf *m,
  * @return
  *   The complemented checksum to set in the L4 header.
  */
-__rte_experimental
 static inline uint16_t
 rte_ipv6_udptcp_cksum_mbuf(const struct rte_mbuf *m,
 			   const struct rte_ipv6_hdr *ipv6_hdr, uint16_t l4_off)
@@ -738,7 +725,6 @@ rte_ipv6_udptcp_cksum_mbuf(const struct rte_mbuf *m,
  * @return
  *   Return 0 if the checksum is correct, else -1.
  */
-__rte_experimental
 static inline int
 rte_ipv6_udptcp_cksum_verify(const struct rte_ipv6_hdr *ipv6_hdr,
 			     const void *l4_hdr)
@@ -752,9 +738,6 @@ rte_ipv6_udptcp_cksum_verify(const struct rte_ipv6_hdr *ipv6_hdr,
 }
 
 /**
- * @warning
- * @b EXPERIMENTAL: this API may change without prior notice.
- *
  * Validate the IPv6 UDP or TCP checksum of a packet.
  *
  * In case of UDP, the caller must first check if udp_hdr->dgram_cksum is 0:
@@ -770,7 +753,6 @@ rte_ipv6_udptcp_cksum_verify(const struct rte_ipv6_hdr *ipv6_hdr,
  * @return
  *   Return 0 if the checksum is correct, else -1.
  */
-__rte_experimental
 static inline int
 rte_ipv6_udptcp_cksum_mbuf_verify(const struct rte_mbuf *m,
 				  const struct rte_ipv6_hdr *ipv6_hdr,
@@ -825,7 +807,6 @@ struct rte_ipv6_fragment_ext {
  * @return
  *   next protocol number if proto is an IPv6 extension, -EINVAL otherwise
  */
-__rte_experimental
 static inline int
 rte_ipv6_get_next_ext(const uint8_t *p, int proto, size_t *ext_len)
 {
-- 
2.39.2


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

* [PATCH v5 07/26] rcu: remove experimental from rte_rcu_qbsr
  2023-10-20 20:57 ` [PATCH v5 00/26] Promote many experimental API's to stable Stephen Hemminger
                     ` (5 preceding siblings ...)
  2023-10-20 20:57   ` [PATCH v5 06/26] net: remove experimental from functions Stephen Hemminger
@ 2023-10-20 20:57   ` Stephen Hemminger
  2023-10-20 20:57   ` [PATCH v5 08/26] lpm: remove experimental Stephen Hemminger
                     ` (18 subsequent siblings)
  25 siblings, 0 replies; 219+ messages in thread
From: Stephen Hemminger @ 2023-10-20 20:57 UTC (permalink / raw)
  To: dev; +Cc: Stephen Hemminger, Honnappa Nagarahalli

These functions were added back in 2020.
Remove experimental flag.

Signed-off-by: Stephen Hemminger <stephen@networkplumber.org>
Reviewed-by: Honnappa Nagarahalli <honnappa.nagarahalli@arm.com>
---
 lib/rcu/rte_rcu_qsbr.h | 20 --------------------
 lib/rcu/version.map    | 15 ++++-----------
 2 files changed, 4 insertions(+), 31 deletions(-)

diff --git a/lib/rcu/rte_rcu_qsbr.h b/lib/rcu/rte_rcu_qsbr.h
index 87e1b55153b5..74ef41e0fac1 100644
--- a/lib/rcu/rte_rcu_qsbr.h
+++ b/lib/rcu/rte_rcu_qsbr.h
@@ -10,10 +10,6 @@
  *
  * RTE Quiescent State Based Reclamation (QSBR).
  *
- * @warning
- * @b EXPERIMENTAL:
- * All functions in this file may be changed or removed without prior notice.
- *
  * Quiescent State (QS) is any point in the thread execution
  * where the thread does not hold a reference to a data structure
  * in shared memory. While using lock-less data structures, the writer
@@ -727,9 +723,6 @@ int
 rte_rcu_qsbr_dump(FILE *f, struct rte_rcu_qsbr *v);
 
 /**
- * @warning
- * @b EXPERIMENTAL: this API may change without prior notice
- *
  * Create a queue used to store the data structure elements that can
  * be freed later. This queue is referred to as 'defer queue'.
  *
@@ -742,14 +735,10 @@ rte_rcu_qsbr_dump(FILE *f, struct rte_rcu_qsbr *v);
  *   - EINVAL - NULL parameters are passed
  *   - ENOMEM - Not enough memory
  */
-__rte_experimental
 struct rte_rcu_qsbr_dq *
 rte_rcu_qsbr_dq_create(const struct rte_rcu_qsbr_dq_parameters *params);
 
 /**
- * @warning
- * @b EXPERIMENTAL: this API may change without prior notice
- *
  * Enqueue one resource to the defer queue and start the grace period.
  * The resource will be freed later after at least one grace period
  * is over.
@@ -777,14 +766,10 @@ rte_rcu_qsbr_dq_create(const struct rte_rcu_qsbr_dq_parameters *params);
  *		if the defer queue size is equal (or larger) than the
  *		number of elements in the data structure.
  */
-__rte_experimental
 int
 rte_rcu_qsbr_dq_enqueue(struct rte_rcu_qsbr_dq *dq, void *e);
 
 /**
- * @warning
- * @b EXPERIMENTAL: this API may change without prior notice
- *
  * Free resources from the defer queue.
  *
  * This API is multi-thread safe.
@@ -806,15 +791,11 @@ rte_rcu_qsbr_dq_enqueue(struct rte_rcu_qsbr_dq *dq, void *e);
  *   On error - 1 with rte_errno set to
  *   - EINVAL - NULL parameters are passed
  */
-__rte_experimental
 int
 rte_rcu_qsbr_dq_reclaim(struct rte_rcu_qsbr_dq *dq, unsigned int n,
 	unsigned int *freed, unsigned int *pending, unsigned int *available);
 
 /**
- * @warning
- * @b EXPERIMENTAL: this API may change without prior notice
- *
  * Delete a defer queue.
  *
  * It tries to reclaim all the resources on the defer queue.
@@ -832,7 +813,6 @@ rte_rcu_qsbr_dq_reclaim(struct rte_rcu_qsbr_dq *dq, unsigned int n,
  *   - EAGAIN - Some of the resources have not completed at least 1 grace
  *		period, try again.
  */
-__rte_experimental
 int
 rte_rcu_qsbr_dq_delete(struct rte_rcu_qsbr_dq *dq);
 
diff --git a/lib/rcu/version.map b/lib/rcu/version.map
index 9218ed1f3399..982ffd59d9cd 100644
--- a/lib/rcu/version.map
+++ b/lib/rcu/version.map
@@ -2,6 +2,10 @@ DPDK_24 {
 	global:
 
 	rte_rcu_log_type;
+	rte_rcu_qsbr_dq_create;
+	rte_rcu_qsbr_dq_delete;
+	rte_rcu_qsbr_dq_enqueue;
+	rte_rcu_qsbr_dq_reclaim;
 	rte_rcu_qsbr_dump;
 	rte_rcu_qsbr_get_memsize;
 	rte_rcu_qsbr_init;
@@ -11,14 +15,3 @@ DPDK_24 {
 
 	local: *;
 };
-
-EXPERIMENTAL {
-	global:
-
-	rte_rcu_qsbr_dq_create;
-	rte_rcu_qsbr_dq_enqueue;
-	rte_rcu_qsbr_dq_reclaim;
-	rte_rcu_qsbr_dq_delete;
-
-	local: *;
-};
-- 
2.39.2


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

* [PATCH v5 08/26] lpm: remove experimental
  2023-10-20 20:57 ` [PATCH v5 00/26] Promote many experimental API's to stable Stephen Hemminger
                     ` (6 preceding siblings ...)
  2023-10-20 20:57   ` [PATCH v5 07/26] rcu: remove experimental from rte_rcu_qbsr Stephen Hemminger
@ 2023-10-20 20:57   ` Stephen Hemminger
  2023-10-20 20:57   ` [PATCH v5 09/26] mbuf: remove experimental from create_extbuf Stephen Hemminger
                     ` (17 subsequent siblings)
  25 siblings, 0 replies; 219+ messages in thread
From: Stephen Hemminger @ 2023-10-20 20:57 UTC (permalink / raw)
  To: dev; +Cc: Stephen Hemminger, Bruce Richardson, Vladimir Medvedkin

The function to associate RCU with LPM was added several releases ago.
Remove experimental.

Signed-off-by: Stephen Hemminger <stephen@networkplumber.org>
---
 lib/lpm/rte_lpm.h   | 4 ----
 lib/lpm/version.map | 7 +------
 2 files changed, 1 insertion(+), 10 deletions(-)

diff --git a/lib/lpm/rte_lpm.h b/lib/lpm/rte_lpm.h
index 75e27ff164ab..40825c5b8038 100644
--- a/lib/lpm/rte_lpm.h
+++ b/lib/lpm/rte_lpm.h
@@ -186,9 +186,6 @@ void
 rte_lpm_free(struct rte_lpm *lpm);
 
 /**
- * @warning
- * @b EXPERIMENTAL: this API may change without prior notice
- *
  * Associate RCU QSBR variable with an LPM object.
  *
  * @param lpm
@@ -203,7 +200,6 @@ rte_lpm_free(struct rte_lpm *lpm);
  *   - EEXIST - already added QSBR
  *   - ENOMEM - memory allocation failure
  */
-__rte_experimental
 int rte_lpm_rcu_qsbr_add(struct rte_lpm *lpm, struct rte_lpm_rcu_config *cfg);
 
 /**
diff --git a/lib/lpm/version.map b/lib/lpm/version.map
index 9ba73b2f938b..b6bee8c18b8a 100644
--- a/lib/lpm/version.map
+++ b/lib/lpm/version.map
@@ -18,12 +18,7 @@ DPDK_24 {
 	rte_lpm_find_existing;
 	rte_lpm_free;
 	rte_lpm_is_rule_present;
+	rte_lpm_rcu_qsbr_add;
 
 	local: *;
 };
-
-EXPERIMENTAL {
-	global:
-
-	rte_lpm_rcu_qsbr_add;
-};
-- 
2.39.2


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

* [PATCH v5 09/26] mbuf: remove experimental from create_extbuf
  2023-10-20 20:57 ` [PATCH v5 00/26] Promote many experimental API's to stable Stephen Hemminger
                     ` (7 preceding siblings ...)
  2023-10-20 20:57   ` [PATCH v5 08/26] lpm: remove experimental Stephen Hemminger
@ 2023-10-20 20:57   ` Stephen Hemminger
  2023-10-20 20:57   ` [PATCH v5 10/26] hash: remove experimental from toeplitz hash Stephen Hemminger
                     ` (16 subsequent siblings)
  25 siblings, 0 replies; 219+ messages in thread
From: Stephen Hemminger @ 2023-10-20 20:57 UTC (permalink / raw)
  To: dev; +Cc: Stephen Hemminger, Bruce Richardson

This API was added in 2020 and should no longer be experimental.

Signed-off-by: Stephen Hemminger <stephen@networkplumber.org>
Acked-by: Bruce Richardson <bruce.richardson@intel.com>
---
 lib/mbuf/rte_mbuf.h  | 1 -
 lib/mbuf/version.map | 8 +-------
 2 files changed, 1 insertion(+), 8 deletions(-)

diff --git a/lib/mbuf/rte_mbuf.h b/lib/mbuf/rte_mbuf.h
index 913c459b1cc6..30fa3df85f53 100644
--- a/lib/mbuf/rte_mbuf.h
+++ b/lib/mbuf/rte_mbuf.h
@@ -800,7 +800,6 @@ struct rte_pktmbuf_extmem {
  *    - EEXIST - a memzone with the same name already exists
  *    - ENOMEM - no appropriate memory area found in which to create memzone
  */
-__rte_experimental
 struct rte_mempool *
 rte_pktmbuf_pool_create_extbuf(const char *name, unsigned int n,
 	unsigned int cache_size, uint16_t priv_size,
diff --git a/lib/mbuf/version.map b/lib/mbuf/version.map
index f010d4692e3e..daa65e2bbdb2 100644
--- a/lib/mbuf/version.map
+++ b/lib/mbuf/version.map
@@ -38,14 +38,8 @@ DPDK_24 {
 	rte_pktmbuf_init;
 	rte_pktmbuf_pool_create;
 	rte_pktmbuf_pool_create_by_ops;
+	rte_pktmbuf_pool_create_extbuf;
 	rte_pktmbuf_pool_init;
 
 	local: *;
 };
-
-EXPERIMENTAL {
-	global:
-
-	rte_pktmbuf_pool_create_extbuf;
-
-};
-- 
2.39.2


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

* [PATCH v5 10/26] hash: remove experimental from toeplitz hash
  2023-10-20 20:57 ` [PATCH v5 00/26] Promote many experimental API's to stable Stephen Hemminger
                     ` (8 preceding siblings ...)
  2023-10-20 20:57   ` [PATCH v5 09/26] mbuf: remove experimental from create_extbuf Stephen Hemminger
@ 2023-10-20 20:57   ` 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
                     ` (15 subsequent siblings)
  25 siblings, 1 reply; 219+ messages in thread
From: Stephen Hemminger @ 2023-10-20 20:57 UTC (permalink / raw)
  To: dev
  Cc: Stephen Hemminger, Yipeng Wang, Sameh Gobriel, Bruce Richardson,
	Vladimir Medvedkin

The rte_thash_ functions have been around since 2020.
Remove experimental tag.

Signed-off-by: Stephen Hemminger <stephen@networkplumber.org>
---
 lib/hash/rte_thash.h          | 44 -----------------------------------
 lib/hash/rte_thash_gfni.h     |  8 -------
 lib/hash/rte_thash_x86_gfni.h |  8 -------
 lib/hash/version.map          | 16 ++++---------
 4 files changed, 4 insertions(+), 72 deletions(-)

diff --git a/lib/hash/rte_thash.h b/lib/hash/rte_thash.h
index da06cd53c0e0..071730c7bab9 100644
--- a/lib/hash/rte_thash.h
+++ b/lib/hash/rte_thash.h
@@ -221,14 +221,10 @@ rte_softrss_be(uint32_t *input_tuple, uint32_t input_len,
 /**
  * Indicates if GFNI implementations of the Toeplitz hash are supported.
  *
- * @warning
- * @b EXPERIMENTAL: this API may change without prior notice.
- *
  * @return
  *  1 if GFNI is supported
  *  0 otherwise
  */
-__rte_experimental
 int
 rte_thash_gfni_supported(void);
 
@@ -236,9 +232,6 @@ rte_thash_gfni_supported(void);
  * Converts Toeplitz hash key (RSS key) into matrixes required
  * for GFNI implementation
  *
- * @warning
- * @b EXPERIMENTAL: this API may change without prior notice.
- *
  * @param matrixes
  *  pointer to the memory where matrices will be written.
  *  Note: the size of this memory must be equal to size * 8
@@ -247,7 +240,6 @@ rte_thash_gfni_supported(void);
  * @param size
  *  Size of the rss_key in bytes.
  */
-__rte_experimental
 void
 rte_thash_complete_matrix(uint64_t *matrixes, const uint8_t *rss_key,
 	int size);
@@ -276,9 +268,6 @@ struct rte_thash_subtuple_helper;
 /**
  * Create a new thash context.
  *
- * @warning
- * @b EXPERIMENTAL: this API may change without prior notice.
- *
  * @param name
  *  Context name
  * @param key_len
@@ -298,7 +287,6 @@ struct rte_thash_subtuple_helper;
  *  A pointer to the created context on success
  *  NULL otherwise
  */
-__rte_experimental
 struct rte_thash_ctx *
 rte_thash_init_ctx(const char *name, uint32_t key_len, uint32_t reta_sz,
 	uint8_t *key, uint32_t flags);
@@ -306,9 +294,6 @@ rte_thash_init_ctx(const char *name, uint32_t key_len, uint32_t reta_sz,
 /**
  * Find an existing thash context and return a pointer to it.
  *
- * @warning
- * @b EXPERIMENTAL: this API may change without prior notice.
- *
  * @param name
  *  Name of the thash context
  * @return
@@ -316,20 +301,15 @@ rte_thash_init_ctx(const char *name, uint32_t key_len, uint32_t reta_sz,
  *  set appropriately. Possible rte_errno values include:
  *   - ENOENT - required entry not available to return.
  */
-__rte_experimental
 struct rte_thash_ctx *
 rte_thash_find_existing(const char *name);
 
 /**
  * Free a thash context object
  *
- * @warning
- * @b EXPERIMENTAL: this API may change without prior notice.
- *
  * @param ctx
  *  Thash context
  */
-__rte_experimental
 void
 rte_thash_free_ctx(struct rte_thash_ctx *ctx);
 
@@ -339,9 +319,6 @@ rte_thash_free_ctx(struct rte_thash_ctx *ctx);
  * to calculate toeplitz hash collisions.
  * This function is not multi-thread safe.
  *
- * @warning
- * @b EXPERIMENTAL: this API may change without prior notice.
- *
  * @param ctx
  *  Thash context
  * @param name
@@ -355,7 +332,6 @@ rte_thash_free_ctx(struct rte_thash_ctx *ctx);
  *  0 on success
  *  negative on error
  */
-__rte_experimental
 int
 rte_thash_add_helper(struct rte_thash_ctx *ctx, const char *name, uint32_t len,
 	uint32_t offset);
@@ -363,9 +339,6 @@ rte_thash_add_helper(struct rte_thash_ctx *ctx, const char *name, uint32_t len,
 /**
  * Find a helper in the context by the given name
  *
- * @warning
- * @b EXPERIMENTAL: this API may change without prior notice.
- *
  * @param ctx
  *  Thash context
  * @param name
@@ -373,7 +346,6 @@ rte_thash_add_helper(struct rte_thash_ctx *ctx, const char *name, uint32_t len,
  * @return
  *  Pointer to the thash helper or NULL if it was not found.
  */
-__rte_experimental
 struct rte_thash_subtuple_helper *
 rte_thash_get_helper(struct rte_thash_ctx *ctx, const char *name);
 
@@ -392,7 +364,6 @@ rte_thash_get_helper(struct rte_thash_ctx *ctx, const char *name);
  * @return
  *  A complementary value which must be xored with the corresponding subtuple
  */
-__rte_experimental
 uint32_t
 rte_thash_get_complement(struct rte_thash_subtuple_helper *h,
 	uint32_t hash, uint32_t desired_hash);
@@ -402,15 +373,11 @@ rte_thash_get_complement(struct rte_thash_subtuple_helper *h,
  * It changes after each addition of a helper. It should be installed to
  * the NIC.
  *
- * @warning
- * @b EXPERIMENTAL: this API may change without prior notice.
- *
  * @param ctx
  *  Thash context
  * @return
  *  A pointer to the toeplitz hash key
  */
-__rte_experimental
 const uint8_t *
 rte_thash_get_key(struct rte_thash_ctx *ctx);
 
@@ -420,16 +387,12 @@ rte_thash_get_key(struct rte_thash_ctx *ctx);
  * CPU supports GFNI.
  * Matrices changes after each addition of a helper.
  *
- * @warning
- * @b EXPERIMENTAL: this API may change without prior notice.
- *
  * @param ctx
  *  Thash context
  * @return
  *  A pointer to the toeplitz hash key matrices on success
  *  NULL if GFNI is not supported.
  */
-__rte_experimental
 const uint64_t *
 rte_thash_get_gfni_matrices(struct rte_thash_ctx *ctx);
 
@@ -439,9 +402,6 @@ rte_thash_get_gfni_matrices(struct rte_thash_ctx *ctx);
  * Generally it is some kind of lookup function to check
  * if adjusted tuple is already in use.
  *
- * @warning
- * @b EXPERIMENTAL: this API may change without prior notice.
- *
  * @param userdata
  *  Pointer to the userdata. It could be a pointer to the
  *  table with used tuples to search.
@@ -459,9 +419,6 @@ typedef int (*rte_thash_check_tuple_t)(void *userdata, uint8_t *tuple);
  * desired least significant bits.
  * This function is multi-thread safe.
  *
- * @warning
- * @b EXPERIMENTAL: this API may change without prior notice.
- *
  * @param ctx
  *  Thash context
  * @param h
@@ -483,7 +440,6 @@ typedef int (*rte_thash_check_tuple_t)(void *userdata, uint8_t *tuple);
  *  0 on success
  *  negative otherwise
  */
-__rte_experimental
 int
 rte_thash_adjust_tuple(struct rte_thash_ctx *ctx,
 	struct rte_thash_subtuple_helper *h,
diff --git a/lib/hash/rte_thash_gfni.h b/lib/hash/rte_thash_gfni.h
index ef90faa302d1..67d0fa4da988 100644
--- a/lib/hash/rte_thash_gfni.h
+++ b/lib/hash/rte_thash_gfni.h
@@ -24,9 +24,6 @@ extern "C" {
  * Calculate Toeplitz hash.
  * Dummy implementation.
  *
- * @warning
- * @b EXPERIMENTAL: this API may change without prior notice.
- *
  * @param m
  *  Pointer to the matrices generated from the corresponding
  *  RSS hash key using rte_thash_complete_matrix().
@@ -37,7 +34,6 @@ extern "C" {
  * @return
  *  Calculated Toeplitz hash value.
  */
-__rte_experimental
 static inline uint32_t
 rte_thash_gfni(const uint64_t *mtrx __rte_unused,
 	const uint8_t *key __rte_unused, int len __rte_unused)
@@ -50,9 +46,6 @@ rte_thash_gfni(const uint64_t *mtrx __rte_unused,
  * Bulk implementation for Toeplitz hash.
  * Dummy implementation.
  *
- * @warning
- * @b EXPERIMENTAL: this API may change without prior notice.
- *
  * @param m
  *  Pointer to the matrices generated from the corresponding
  *  RSS hash key using rte_thash_complete_matrix().
@@ -66,7 +59,6 @@ rte_thash_gfni(const uint64_t *mtrx __rte_unused,
  * @param num
  *  Number of tuples to hash.
  */
-__rte_experimental
 static inline void
 rte_thash_gfni_bulk(const uint64_t *mtrx __rte_unused,
 	int len __rte_unused, uint8_t *tuple[] __rte_unused,
diff --git a/lib/hash/rte_thash_x86_gfni.h b/lib/hash/rte_thash_x86_gfni.h
index fbec16dde081..0ff7ad07eeaa 100644
--- a/lib/hash/rte_thash_x86_gfni.h
+++ b/lib/hash/rte_thash_x86_gfni.h
@@ -161,9 +161,6 @@ __rte_thash_gfni(const uint64_t *mtrx, const uint8_t *tuple,
 /**
  * Calculate Toeplitz hash.
  *
- * @warning
- * @b EXPERIMENTAL: this API may change without prior notice.
- *
  * @param m
  *  Pointer to the matrices generated from the corresponding
  *  RSS hash key using rte_thash_complete_matrix().
@@ -175,7 +172,6 @@ __rte_thash_gfni(const uint64_t *mtrx, const uint8_t *tuple,
  * @return
  *  Calculated Toeplitz hash value.
  */
-__rte_experimental
 static inline uint32_t
 rte_thash_gfni(const uint64_t *m, const uint8_t *tuple, int len)
 {
@@ -190,9 +186,6 @@ rte_thash_gfni(const uint64_t *m, const uint8_t *tuple, int len)
 /**
  * Bulk implementation for Toeplitz hash.
  *
- * @warning
- * @b EXPERIMENTAL: this API may change without prior notice.
- *
  * @param m
  *  Pointer to the matrices generated from the corresponding
  *  RSS hash key using rte_thash_complete_matrix().
@@ -207,7 +200,6 @@ rte_thash_gfni(const uint64_t *m, const uint8_t *tuple, int len)
  * @param num
  *  Number of tuples to hash.
  */
-__rte_experimental
 static inline void
 rte_thash_gfni_bulk(const uint64_t *mtrx, int len, uint8_t *tuple[],
 	uint32_t val[], uint32_t num)
diff --git a/lib/hash/version.map b/lib/hash/version.map
index daaa9a8901db..b98b64a1638a 100644
--- a/lib/hash/version.map
+++ b/lib/hash/version.map
@@ -30,25 +30,17 @@ DPDK_24 {
 	rte_hash_rcu_qsbr_add;
 	rte_hash_reset;
 	rte_hash_set_cmp_func;
-
-	local: *;
-};
-
-EXPERIMENTAL {
-	global:
-
-	# added in 21.05
 	rte_thash_add_helper;
 	rte_thash_adjust_tuple;
+	rte_thash_complete_matrix;
 	rte_thash_find_existing;
 	rte_thash_free_ctx;
 	rte_thash_get_complement;
+	rte_thash_get_gfni_matrices;
 	rte_thash_get_helper;
 	rte_thash_get_key;
+	rte_thash_gfni_supported;
 	rte_thash_init_ctx;
 
-	# added in 21.11
-	rte_thash_complete_matrix;
-	rte_thash_get_gfni_matrices;
-	rte_thash_gfni_supported;
+	local: *;
 };
-- 
2.39.2


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

* [PATCH v5 11/26] timer: remove experimental from rte_timer_next_ticks
  2023-10-20 20:57 ` [PATCH v5 00/26] Promote many experimental API's to stable Stephen Hemminger
                     ` (9 preceding siblings ...)
  2023-10-20 20:57   ` [PATCH v5 10/26] hash: remove experimental from toeplitz hash Stephen Hemminger
@ 2023-10-20 20:57   ` Stephen Hemminger
  2023-10-23  9:08     ` Bruce Richardson
  2023-10-20 20:57   ` [PATCH v5 12/26] sched: remove experimental Stephen Hemminger
                     ` (14 subsequent siblings)
  25 siblings, 1 reply; 219+ messages in thread
From: Stephen Hemminger @ 2023-10-20 20:57 UTC (permalink / raw)
  To: dev; +Cc: Stephen Hemminger, Erik Gabriel Carrillo

Function was added in 20.11, remove experimental flag.

Signed-off-by: Stephen Hemminger <stephen@networkplumber.org>
---
 lib/timer/rte_timer.h | 4 ----
 lib/timer/version.map | 7 +------
 2 files changed, 1 insertion(+), 10 deletions(-)

diff --git a/lib/timer/rte_timer.h b/lib/timer/rte_timer.h
index d3927d5b6bac..153d1993573f 100644
--- a/lib/timer/rte_timer.h
+++ b/lib/timer/rte_timer.h
@@ -331,9 +331,6 @@ void rte_timer_stop_sync(struct rte_timer *tim);
 int rte_timer_pending(struct rte_timer *tim);
 
 /**
- * @warning
- * @b EXPERIMENTAL: this API may change without prior notice
- *
  * Time until the next timer on the current lcore
  * This function gives the ticks until the next timer will be active.
  *
@@ -343,7 +340,6 @@ int rte_timer_pending(struct rte_timer *tim);
  *   - 0: a timer is pending and will run at next rte_timer_manage()
  *   - >0: ticks until the next timer is ready
  */
-__rte_experimental
 int64_t rte_timer_next_ticks(void);
 
 /**
diff --git a/lib/timer/version.map b/lib/timer/version.map
index e3d5a043034c..b180708e2488 100644
--- a/lib/timer/version.map
+++ b/lib/timer/version.map
@@ -10,6 +10,7 @@ DPDK_24 {
 	rte_timer_dump_stats;
 	rte_timer_init;
 	rte_timer_manage;
+	rte_timer_next_ticks;
 	rte_timer_pending;
 	rte_timer_reset;
 	rte_timer_reset_sync;
@@ -21,9 +22,3 @@ DPDK_24 {
 
 	local: *;
 };
-
-EXPERIMENTAL {
-	global:
-
-	rte_timer_next_ticks;
-};
-- 
2.39.2


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

* [PATCH v5 12/26] sched: remove experimental
  2023-10-20 20:57 ` [PATCH v5 00/26] Promote many experimental API's to stable Stephen Hemminger
                     ` (10 preceding siblings ...)
  2023-10-20 20:57   ` [PATCH v5 11/26] timer: remove experimental from rte_timer_next_ticks Stephen Hemminger
@ 2023-10-20 20:57   ` Stephen Hemminger
  2023-10-20 20:57   ` [PATCH v5 13/26] dmadev: mark API's as not experimental Stephen Hemminger
                     ` (13 subsequent siblings)
  25 siblings, 0 replies; 219+ messages in thread
From: Stephen Hemminger @ 2023-10-20 20:57 UTC (permalink / raw)
  To: dev; +Cc: Stephen Hemminger, Cristian Dumitrescu

The overcommit and PIE support was added back in 2020.
Remove experimental tag.

Signed-off-by: Stephen Hemminger <stephen@networkplumber.org>
Acked-by: Cristian Dumitrescu <cristian.dumitrescu@intel.com>
---
 lib/sched/rte_pie.h   |  8 --------
 lib/sched/rte_sched.h |  5 -----
 lib/sched/version.map | 18 ++++--------------
 3 files changed, 4 insertions(+), 27 deletions(-)

diff --git a/lib/sched/rte_pie.h b/lib/sched/rte_pie.h
index e0d6d5a3cdcd..631c657980eb 100644
--- a/lib/sched/rte_pie.h
+++ b/lib/sched/rte_pie.h
@@ -78,7 +78,6 @@ struct rte_pie {
  * @retval !0 error
  */
 int
-__rte_experimental
 rte_pie_rt_data_init(struct rte_pie *pie);
 
 /**
@@ -95,7 +94,6 @@ rte_pie_rt_data_init(struct rte_pie *pie);
  * @retval !0 error
  */
 int
-__rte_experimental
 rte_pie_config_init(struct rte_pie_config *pie_cfg,
 	const uint16_t qdelay_ref,
 	const uint16_t dp_update_interval,
@@ -116,7 +114,6 @@ rte_pie_config_init(struct rte_pie_config *pie_cfg,
  * @retval !0 drop the packet
  */
 static int
-__rte_experimental
 rte_pie_enqueue_empty(const struct rte_pie_config *pie_cfg,
 	struct rte_pie *pie,
 	uint32_t pkt_len)
@@ -148,7 +145,6 @@ rte_pie_enqueue_empty(const struct rte_pie_config *pie_cfg,
  * @param time [in] current time (measured in cpu cycles)
  */
 static void
-__rte_experimental
 _calc_drop_probability(const struct rte_pie_config *pie_cfg,
 	struct rte_pie *pie, uint64_t time)
 {
@@ -212,7 +208,6 @@ _calc_drop_probability(const struct rte_pie_config *pie_cfg,
  * @retval 1 drop the packet
  */
 static inline int
-__rte_experimental
 _rte_pie_drop(const struct rte_pie_config *pie_cfg,
 	struct rte_pie *pie)
 {
@@ -261,7 +256,6 @@ _rte_pie_drop(const struct rte_pie_config *pie_cfg,
  * @retval 2 drop the packet based on mark probability criterion
  */
 static inline int
-__rte_experimental
 rte_pie_enqueue_nonempty(const struct rte_pie_config *pie_cfg,
 	struct rte_pie *pie,
 	uint32_t pkt_len,
@@ -329,7 +323,6 @@ rte_pie_enqueue_nonempty(const struct rte_pie_config *pie_cfg,
  * @retval 1 drop the packet based on drop probability criteria
  */
 static inline int
-__rte_experimental
 rte_pie_enqueue(const struct rte_pie_config *pie_cfg,
 	struct rte_pie *pie,
 	const unsigned int qlen,
@@ -354,7 +347,6 @@ rte_pie_enqueue(const struct rte_pie_config *pie_cfg,
  * @param time [in] current time stamp in cpu cycles
  */
 static inline void
-__rte_experimental
 rte_pie_dequeue(struct rte_pie *pie,
 	uint32_t pkt_len,
 	uint64_t time)
diff --git a/lib/sched/rte_sched.h b/lib/sched/rte_sched.h
index a9ac5909ad0c..77fc78ce2fe9 100644
--- a/lib/sched/rte_sched.h
+++ b/lib/sched/rte_sched.h
@@ -353,9 +353,6 @@ rte_sched_subport_pipe_profile_add(struct rte_sched_port *port,
 	uint32_t *pipe_profile_id);
 
 /**
- * @warning
- * @b EXPERIMENTAL: this API may change without prior notice.
- *
  * Hierarchical scheduler subport bandwidth profile add
  * Note that this function is safe to use in runtime for adding new
  * subport bandwidth profile as it doesn't have any impact on hierarchical
@@ -369,7 +366,6 @@ rte_sched_subport_pipe_profile_add(struct rte_sched_port *port,
  * @return
  *   0 upon success, error code otherwise
  */
-__rte_experimental
 int
 rte_sched_port_subport_profile_add(struct rte_sched_port *port,
 	struct rte_sched_subport_profile_params *profile,
@@ -592,7 +588,6 @@ rte_sched_port_dequeue(struct rte_sched_port *port, struct rte_mbuf **pkts, uint
  * @return
  *   0 upon success, error code otherwise
  */
-__rte_experimental
 int
 rte_sched_subport_tc_ov_config(struct rte_sched_port *port, uint32_t subport_id, bool tc_ov_enable);
 
diff --git a/lib/sched/version.map b/lib/sched/version.map
index d9ce68be1449..be1decaeee46 100644
--- a/lib/sched/version.map
+++ b/lib/sched/version.map
@@ -2,6 +2,8 @@ DPDK_24 {
 	global:
 
 	rte_approx;
+	rte_pie_config_init;
+	rte_pie_rt_data_init;
 	rte_red_config_init;
 	rte_red_log2_1_minus_Wq;
 	rte_red_pow2_frac_inv;
@@ -17,24 +19,12 @@ DPDK_24 {
 	rte_sched_port_pkt_read_color;
 	rte_sched_port_pkt_read_tree_path;
 	rte_sched_port_pkt_write;
+	rte_sched_port_subport_profile_add;
 	rte_sched_queue_read_stats;
 	rte_sched_subport_config;
 	rte_sched_subport_pipe_profile_add;
 	rte_sched_subport_read_stats;
+	rte_sched_subport_tc_ov_config;
 
 	local: *;
 };
-
-EXPERIMENTAL {
-	global:
-
-	# added in 20.11
-	rte_sched_port_subport_profile_add;
-
-	# added in 21.11
-	rte_pie_rt_data_init;
-	rte_pie_config_init;
-
-	# added in 22.07
-	rte_sched_subport_tc_ov_config;
-};
-- 
2.39.2


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

* [PATCH v5 13/26] dmadev: mark API's as not experimental
  2023-10-20 20:57 ` [PATCH v5 00/26] Promote many experimental API's to stable Stephen Hemminger
                     ` (11 preceding siblings ...)
  2023-10-20 20:57   ` [PATCH v5 12/26] sched: remove experimental Stephen Hemminger
@ 2023-10-20 20:57   ` Stephen Hemminger
  2023-10-20 20:57   ` [PATCH v5 14/26] meter: remove experimental warning from comments Stephen Hemminger
                     ` (12 subsequent siblings)
  25 siblings, 0 replies; 219+ messages in thread
From: Stephen Hemminger @ 2023-10-20 20:57 UTC (permalink / raw)
  To: dev
  Cc: Stephen Hemminger, Chengwen Feng, Bruce Richardson,
	Thomas Monjalon, Kevin Laatz

These were added in 20.11 time now to remove experimental flag.

Signed-off-by: Stephen Hemminger <stephen@networkplumber.org>
Acked-by: Chengwen Feng <fengchengwen@huawei.com>
Acked-by: Bruce Richardson <bruce.richardson@intel.com>
---
 MAINTAINERS             |  2 +-
 lib/dmadev/rte_dmadev.h | 85 -----------------------------------------
 lib/dmadev/version.map  |  2 +-
 3 files changed, 2 insertions(+), 87 deletions(-)

diff --git a/MAINTAINERS b/MAINTAINERS
index e5d92aa74926..2f1ab5a0f328 100644
--- a/MAINTAINERS
+++ b/MAINTAINERS
@@ -483,7 +483,7 @@ F: doc/guides/prog_guide/mldev.rst
 F: app/test-mldev/
 F: doc/guides/tools/testmldev.rst
 
-DMA device API - EXPERIMENTAL
+DMA device API
 M: Chengwen Feng <fengchengwen@huawei.com>
 F: lib/dmadev/
 F: drivers/dma/skeleton/
diff --git a/lib/dmadev/rte_dmadev.h b/lib/dmadev/rte_dmadev.h
index 493263a5d627..2c09939ff6c5 100644
--- a/lib/dmadev/rte_dmadev.h
+++ b/lib/dmadev/rte_dmadev.h
@@ -158,9 +158,6 @@ extern "C" {
 #define RTE_DMADEV_DEFAULT_MAX 64
 
 /**
- * @warning
- * @b EXPERIMENTAL: this API may change without prior notice.
- *
  * Configure the maximum number of dmadevs.
  * @note This function can be invoked before the primary process rte_eal_init()
  * to change the maximum number of dmadevs. If not invoked, the maximum number
@@ -172,13 +169,9 @@ extern "C" {
  * @return
  *   0 on success. Otherwise negative value is returned.
  */
-__rte_experimental
 int rte_dma_dev_max(size_t dev_max);
 
 /**
- * @warning
- * @b EXPERIMENTAL: this API may change without prior notice.
- *
  * Get the device identifier for the named DMA device.
  *
  * @param name
@@ -188,13 +181,9 @@ int rte_dma_dev_max(size_t dev_max);
  *   Returns DMA device identifier on success.
  *   - <0: Failure to find named DMA device.
  */
-__rte_experimental
 int rte_dma_get_dev_id_by_name(const char *name);
 
 /**
- * @warning
- * @b EXPERIMENTAL: this API may change without prior notice.
- *
  * Check whether the dev_id is valid.
  *
  * @param dev_id
@@ -203,20 +192,15 @@ int rte_dma_get_dev_id_by_name(const char *name);
  * @return
  *   - If the device index is valid (true) or not (false).
  */
-__rte_experimental
 bool rte_dma_is_valid(int16_t dev_id);
 
 /**
- * @warning
- * @b EXPERIMENTAL: this API may change without prior notice.
- *
  * Get the total number of DMA devices that have been successfully
  * initialised.
  *
  * @return
  *   The total number of usable DMA devices.
  */
-__rte_experimental
 uint16_t rte_dma_count_avail(void);
 
 /**
@@ -227,7 +211,6 @@ uint16_t rte_dma_count_avail(void);
  * @return
  *   Next valid dmadev, UINT16_MAX if there is none.
  */
-__rte_experimental
 int16_t rte_dma_next_dev(int16_t start_dev_id);
 
 /** Utility macro to iterate over all available dmadevs */
@@ -318,9 +301,6 @@ struct rte_dma_info {
 };
 
 /**
- * @warning
- * @b EXPERIMENTAL: this API may change without prior notice.
- *
  * Retrieve information of a DMA device.
  *
  * @param dev_id
@@ -332,7 +312,6 @@ struct rte_dma_info {
  * @return
  *   0 on success. Otherwise negative value is returned.
  */
-__rte_experimental
 int rte_dma_info_get(int16_t dev_id, struct rte_dma_info *dev_info);
 
 /**
@@ -357,9 +336,6 @@ struct rte_dma_conf {
 };
 
 /**
- * @warning
- * @b EXPERIMENTAL: this API may change without prior notice.
- *
  * Configure a DMA device.
  *
  * This function must be invoked first before any other function in the
@@ -375,13 +351,9 @@ struct rte_dma_conf {
  * @return
  *   0 on success. Otherwise negative value is returned.
  */
-__rte_experimental
 int rte_dma_configure(int16_t dev_id, const struct rte_dma_conf *dev_conf);
 
 /**
- * @warning
- * @b EXPERIMENTAL: this API may change without prior notice.
- *
  * Start a DMA device.
  *
  * The device start step is the last one and consists of setting the DMA
@@ -393,13 +365,9 @@ int rte_dma_configure(int16_t dev_id, const struct rte_dma_conf *dev_conf);
  * @return
  *   0 on success. Otherwise negative value is returned.
  */
-__rte_experimental
 int rte_dma_start(int16_t dev_id);
 
 /**
- * @warning
- * @b EXPERIMENTAL: this API may change without prior notice.
- *
  * Stop a DMA device.
  *
  * The device can be restarted with a call to rte_dma_start().
@@ -410,13 +378,9 @@ int rte_dma_start(int16_t dev_id);
  * @return
  *   0 on success. Otherwise negative value is returned.
  */
-__rte_experimental
 int rte_dma_stop(int16_t dev_id);
 
 /**
- * @warning
- * @b EXPERIMENTAL: this API may change without prior notice.
- *
  * Close a DMA device.
  *
  * The device cannot be restarted after this call.
@@ -427,7 +391,6 @@ int rte_dma_stop(int16_t dev_id);
  * @return
  *   0 on success. Otherwise negative value is returned.
  */
-__rte_experimental
 int rte_dma_close(int16_t dev_id);
 
 /**
@@ -620,9 +583,6 @@ struct rte_dma_vchan_conf {
 };
 
 /**
- * @warning
- * @b EXPERIMENTAL: this API may change without prior notice.
- *
  * Allocate and set up a virtual DMA channel.
  *
  * @param dev_id
@@ -637,7 +597,6 @@ struct rte_dma_vchan_conf {
  * @return
  *   0 on success. Otherwise negative value is returned.
  */
-__rte_experimental
 int rte_dma_vchan_setup(int16_t dev_id, uint16_t vchan,
 			const struct rte_dma_vchan_conf *conf);
 
@@ -666,9 +625,6 @@ struct rte_dma_stats {
 #define RTE_DMA_ALL_VCHAN	0xFFFFu
 
 /**
- * @warning
- * @b EXPERIMENTAL: this API may change without prior notice.
- *
  * Retrieve basic statistics of a or all virtual DMA channel(s).
  *
  * @param dev_id
@@ -683,14 +639,10 @@ struct rte_dma_stats {
  * @return
  *   0 on success. Otherwise negative value is returned.
  */
-__rte_experimental
 int rte_dma_stats_get(int16_t dev_id, uint16_t vchan,
 		      struct rte_dma_stats *stats);
 
 /**
- * @warning
- * @b EXPERIMENTAL: this API may change without prior notice.
- *
  * Reset basic statistics of a or all virtual DMA channel(s).
  *
  * @param dev_id
@@ -702,7 +654,6 @@ int rte_dma_stats_get(int16_t dev_id, uint16_t vchan,
  * @return
  *   0 on success. Otherwise negative value is returned.
  */
-__rte_experimental
 int rte_dma_stats_reset(int16_t dev_id, uint16_t vchan);
 
 /**
@@ -718,9 +669,6 @@ enum rte_dma_vchan_status {
 };
 
 /**
- * @warning
- * @b EXPERIMENTAL: this API may change without prior notice.
- *
  * Determine if all jobs have completed on a device channel.
  * This function is primarily designed for testing use, as it allows a process to check if
  * all jobs are completed, without actually gathering completions from those jobs.
@@ -735,14 +683,10 @@ enum rte_dma_vchan_status {
  *   0 - call completed successfully
  *   < 0 - error code indicating there was a problem calling the API
  */
-__rte_experimental
 int
 rte_dma_vchan_status(int16_t dev_id, uint16_t vchan, enum rte_dma_vchan_status *status);
 
 /**
- * @warning
- * @b EXPERIMENTAL: this API may change without prior notice.
- *
  * Dump DMA device info.
  *
  * @param dev_id
@@ -753,7 +697,6 @@ rte_dma_vchan_status(int16_t dev_id, uint16_t vchan, enum rte_dma_vchan_status *
  * @return
  *   0 on success. Otherwise negative value is returned.
  */
-__rte_experimental
 int rte_dma_dump(int16_t dev_id, FILE *f);
 
 /**
@@ -864,9 +807,6 @@ struct rte_dma_sge {
 /**@}*/
 
 /**
- * @warning
- * @b EXPERIMENTAL: this API may change without prior notice.
- *
  * Enqueue a copy operation onto the virtual DMA channel.
  *
  * This queues up a copy operation to be performed by hardware, if the 'flags'
@@ -892,7 +832,6 @@ struct rte_dma_sge {
  *   - -ENOSPC: if no space left to enqueue.
  *   - other values < 0 on failure.
  */
-__rte_experimental
 static inline int
 rte_dma_copy(int16_t dev_id, uint16_t vchan, rte_iova_t src, rte_iova_t dst,
 	     uint32_t length, uint64_t flags)
@@ -910,9 +849,6 @@ rte_dma_copy(int16_t dev_id, uint16_t vchan, rte_iova_t src, rte_iova_t dst,
 }
 
 /**
- * @warning
- * @b EXPERIMENTAL: this API may change without prior notice.
- *
  * Enqueue a scatter-gather list copy operation onto the virtual DMA channel.
  *
  * This queues up a scatter-gather list copy operation to be performed by
@@ -942,7 +878,6 @@ rte_dma_copy(int16_t dev_id, uint16_t vchan, rte_iova_t src, rte_iova_t dst,
  *   - -ENOSPC: if no space left to enqueue.
  *   - other values < 0 on failure.
  */
-__rte_experimental
 static inline int
 rte_dma_copy_sg(int16_t dev_id, uint16_t vchan, struct rte_dma_sge *src,
 		struct rte_dma_sge *dst, uint16_t nb_src, uint16_t nb_dst,
@@ -963,9 +898,6 @@ rte_dma_copy_sg(int16_t dev_id, uint16_t vchan, struct rte_dma_sge *src,
 }
 
 /**
- * @warning
- * @b EXPERIMENTAL: this API may change without prior notice.
- *
  * Enqueue a fill operation onto the virtual DMA channel.
  *
  * This queues up a fill operation to be performed by hardware, if the 'flags'
@@ -991,7 +923,6 @@ rte_dma_copy_sg(int16_t dev_id, uint16_t vchan, struct rte_dma_sge *src,
  *   - -ENOSPC: if no space left to enqueue.
  *   - other values < 0 on failure.
  */
-__rte_experimental
 static inline int
 rte_dma_fill(int16_t dev_id, uint16_t vchan, uint64_t pattern,
 	     rte_iova_t dst, uint32_t length, uint64_t flags)
@@ -1010,9 +941,6 @@ rte_dma_fill(int16_t dev_id, uint16_t vchan, uint64_t pattern,
 }
 
 /**
- * @warning
- * @b EXPERIMENTAL: this API may change without prior notice.
- *
  * Trigger hardware to begin performing enqueued operations.
  *
  * Writes the "doorbell" to the hardware to trigger it
@@ -1026,7 +954,6 @@ rte_dma_fill(int16_t dev_id, uint16_t vchan, uint64_t pattern,
  * @return
  *   0 on success. Otherwise negative value is returned.
  */
-__rte_experimental
 static inline int
 rte_dma_submit(int16_t dev_id, uint16_t vchan)
 {
@@ -1043,9 +970,6 @@ rte_dma_submit(int16_t dev_id, uint16_t vchan)
 }
 
 /**
- * @warning
- * @b EXPERIMENTAL: this API may change without prior notice.
- *
  * Return the number of operations that have been successfully completed.
  * Once an operation has been reported as completed, the results of that
  * operation will be visible to all cores on the system.
@@ -1067,7 +991,6 @@ rte_dma_submit(int16_t dev_id, uint16_t vchan)
  *   The number of operations that successfully completed. This return value
  *   must be less than or equal to the value of nb_cpls.
  */
-__rte_experimental
 static inline uint16_t
 rte_dma_completed(int16_t dev_id, uint16_t vchan, const uint16_t nb_cpls,
 		  uint16_t *last_idx, bool *has_error)
@@ -1102,9 +1025,6 @@ rte_dma_completed(int16_t dev_id, uint16_t vchan, const uint16_t nb_cpls,
 }
 
 /**
- * @warning
- * @b EXPERIMENTAL: this API may change without prior notice.
- *
  * Return the number of operations that have been completed, and the operations
  * result may succeed or fail.
  * Once an operation has been reported as completed successfully, the results of that
@@ -1130,7 +1050,6 @@ rte_dma_completed(int16_t dev_id, uint16_t vchan, const uint16_t nb_cpls,
  *   If this number is greater than zero (assuming n), then n values in the
  *   status array are also set.
  */
-__rte_experimental
 static inline uint16_t
 rte_dma_completed_status(int16_t dev_id, uint16_t vchan,
 			 const uint16_t nb_cpls, uint16_t *last_idx,
@@ -1154,9 +1073,6 @@ rte_dma_completed_status(int16_t dev_id, uint16_t vchan,
 }
 
 /**
- * @warning
- * @b EXPERIMENTAL: this API may change without prior notice.
- *
  * Check remaining capacity in descriptor ring for the current burst.
  *
  * @param dev_id
@@ -1168,7 +1084,6 @@ rte_dma_completed_status(int16_t dev_id, uint16_t vchan,
  *   - Remaining space in the descriptor ring for the current burst.
  *   - 0 on error
  */
-__rte_experimental
 static inline uint16_t
 rte_dma_burst_capacity(int16_t dev_id, uint16_t vchan)
 {
diff --git a/lib/dmadev/version.map b/lib/dmadev/version.map
index 7031d6b335e9..2a3736514c8f 100644
--- a/lib/dmadev/version.map
+++ b/lib/dmadev/version.map
@@ -1,4 +1,4 @@
-EXPERIMENTAL {
+DPDK_24 {
 	global:
 
 	rte_dma_close;
-- 
2.39.2


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

* [PATCH v5 14/26] meter: remove experimental warning from comments
  2023-10-20 20:57 ` [PATCH v5 00/26] Promote many experimental API's to stable Stephen Hemminger
                     ` (12 preceding siblings ...)
  2023-10-20 20:57   ` [PATCH v5 13/26] dmadev: mark API's as not experimental Stephen Hemminger
@ 2023-10-20 20:57   ` Stephen Hemminger
  2023-10-23  7:29     ` David Marchand
  2023-10-20 20:57   ` [PATCH v5 15/26] power: remove experimental from API's Stephen Hemminger
                     ` (11 subsequent siblings)
  25 siblings, 1 reply; 219+ messages in thread
From: Stephen Hemminger @ 2023-10-20 20:57 UTC (permalink / raw)
  To: dev; +Cc: Stephen Hemminger, Bruce Richardson, Cristian Dumitrescu

The API's for rte_meter_trtcm were never properly flagged
as experimental; missing __rte_experimental but there was
an experimental comment in the docbook comment.
Remove the comment.

Signed-off-by: Stephen Hemminger <stephen@networkplumber.org>
Acked-by: Bruce Richardson <bruce.richardson@intel.com>
Acked-by: Cristian Dumitrescu <cristian.dumitrescu@intel.com>
---
 lib/meter/rte_meter.h | 12 ------------
 1 file changed, 12 deletions(-)

diff --git a/lib/meter/rte_meter.h b/lib/meter/rte_meter.h
index 6ba99674361a..bd68cbe38903 100644
--- a/lib/meter/rte_meter.h
+++ b/lib/meter/rte_meter.h
@@ -124,9 +124,6 @@ int
 rte_meter_trtcm_profile_config(struct rte_meter_trtcm_profile *p,
 	struct rte_meter_trtcm_params *params);
 /**
- * @warning
- * @b EXPERIMENTAL: this API may change without prior notice
- *
  * trTCM RFC 4115 profile configuration
  *
  * @param p
@@ -170,9 +167,6 @@ rte_meter_trtcm_config(struct rte_meter_trtcm *m,
 	struct rte_meter_trtcm_profile *p);
 
 /**
- * @warning
- * @b EXPERIMENTAL: this API may change without prior notice
- *
  * trTCM RFC 4115 configuration per metered traffic flow
  *
  * @param m
@@ -273,9 +267,6 @@ rte_meter_trtcm_color_aware_check(struct rte_meter_trtcm *m,
 	enum rte_color pkt_color);
 
 /**
- * @warning
- * @b EXPERIMENTAL: this API may change without prior notice
- *
  * trTCM RFC4115 color blind traffic metering
  *
  * @param m
@@ -297,9 +288,6 @@ rte_meter_trtcm_rfc4115_color_blind_check(
 	uint32_t pkt_len);
 
 /**
- * @warning
- * @b EXPERIMENTAL: this API may change without prior notice
- *
  * trTCM RFC4115 color aware traffic metering
  *
  * @param m
-- 
2.39.2


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

* [PATCH v5 15/26] power: remove experimental from API's
  2023-10-20 20:57 ` [PATCH v5 00/26] Promote many experimental API's to stable Stephen Hemminger
                     ` (13 preceding siblings ...)
  2023-10-20 20:57   ` [PATCH v5 14/26] meter: remove experimental warning from comments Stephen Hemminger
@ 2023-10-20 20:57   ` Stephen Hemminger
  2023-10-23  7:29     ` David Marchand
  2023-10-20 20:57   ` [PATCH v5 16/26] kvargs: remove experimental flag Stephen Hemminger
                     ` (10 subsequent siblings)
  25 siblings, 1 reply; 219+ messages in thread
From: Stephen Hemminger @ 2023-10-20 20:57 UTC (permalink / raw)
  To: dev; +Cc: Stephen Hemminger, David Hunt, Anatoly Burakov

The power management API's were last changed in 22.11 release.
Therefore remove experimental for 23.11 release.

Signed-off-by: Stephen Hemminger <stephen@networkplumber.org>
Acked-by: David Hunt<david.hunt@intel.com>
---
 lib/power/rte_power.h               |  4 ---
 lib/power/rte_power_guest_channel.h |  4 ---
 lib/power/rte_power_pmd_mgmt.h      | 40 ----------------------------
 lib/power/rte_power_uncore.h        |  5 ----
 lib/power/version.map               | 41 ++++++++++-------------------
 5 files changed, 14 insertions(+), 80 deletions(-)

diff --git a/lib/power/rte_power.h b/lib/power/rte_power.h
index e79bf1c4dd0c..4b624a01c5d7 100644
--- a/lib/power/rte_power.h
+++ b/lib/power/rte_power.h
@@ -25,9 +25,6 @@ enum power_management_env {PM_ENV_NOT_SET, PM_ENV_ACPI_CPUFREQ, PM_ENV_KVM_VM,
 		PM_ENV_AMD_PSTATE_CPUFREQ};
 
 /**
- * @warning
- * @b EXPERIMENTAL: this API may change, or be removed, without prior notice
- *
  * Check if a specific power management environment type is supported on a
  * currently running system.
  *
@@ -39,7 +36,6 @@ enum power_management_env {PM_ENV_NOT_SET, PM_ENV_ACPI_CPUFREQ, PM_ENV_KVM_VM,
  *   - 0 if unsupported
  *   - -1 if error, with rte_errno indicating reason for error.
  */
-__rte_experimental
 int rte_power_check_env_supported(enum power_management_env env);
 
 /**
diff --git a/lib/power/rte_power_guest_channel.h b/lib/power/rte_power_guest_channel.h
index b5de1bd24318..55b76dfc4c08 100644
--- a/lib/power/rte_power_guest_channel.h
+++ b/lib/power/rte_power_guest_channel.h
@@ -135,9 +135,6 @@ int rte_power_guest_channel_send_msg(struct rte_power_channel_packet *pkt,
 			unsigned int lcore_id);
 
 /**
- * @warning
- * @b EXPERIMENTAL: this API may change without prior notice.
- *
  * Receive a message contained in pkt over the Virtio-Serial
  * from the host endpoint.
  *
@@ -155,7 +152,6 @@ int rte_power_guest_channel_send_msg(struct rte_power_channel_packet *pkt,
  *  - 0 on success.
  *  - Negative on error.
  */
-__rte_experimental
 int rte_power_guest_channel_receive_msg(void *pkt,
 		size_t pkt_len,
 		unsigned int lcore_id);
diff --git a/lib/power/rte_power_pmd_mgmt.h b/lib/power/rte_power_pmd_mgmt.h
index 0f1a2eb22eb4..456145661917 100644
--- a/lib/power/rte_power_pmd_mgmt.h
+++ b/lib/power/rte_power_pmd_mgmt.h
@@ -33,9 +33,6 @@ enum rte_power_pmd_mgmt_type {
 };
 
 /**
- * @warning
- * @b EXPERIMENTAL: this API may change, or be removed, without prior notice.
- *
  * Enable power management on a specified Ethernet device Rx queue and lcore.
  *
  * @note This function is not thread-safe.
@@ -55,16 +52,12 @@ enum rte_power_pmd_mgmt_type {
  *   0 on success
  *   <0 on error
  */
-__rte_experimental
 int
 rte_power_ethdev_pmgmt_queue_enable(unsigned int lcore_id,
 		uint16_t port_id, uint16_t queue_id,
 		enum rte_power_pmd_mgmt_type mode);
 
 /**
- * @warning
- * @b EXPERIMENTAL: this API may change, or be removed, without prior notice.
- *
  * Disable power management on a specified Ethernet device Rx queue and lcore.
  *
  * @note This function is not thread-safe.
@@ -82,42 +75,30 @@ rte_power_ethdev_pmgmt_queue_enable(unsigned int lcore_id,
  *   0 on success
  *   <0 on error
  */
-__rte_experimental
 int
 rte_power_ethdev_pmgmt_queue_disable(unsigned int lcore_id,
 		uint16_t port_id, uint16_t queue_id);
 
 /**
- * @warning
- * @b EXPERIMENTAL: this API may change, or be removed, without prior notice.
- *
  * Set a emptypoll_max to specified value. Used to specify the number of empty
  * polls to wait before entering sleep state.
  *
  * @param max
  *   The value to set emptypoll_max to.
  */
-__rte_experimental
 void
 rte_power_pmd_mgmt_set_emptypoll_max(unsigned int max);
 
 /**
- * @warning
- * @b EXPERIMENTAL: this API may change, or be removed, without prior notice.
- *
  * Get the current value of emptypoll_max.
  *
  * @return
  *   The current emptypoll_max value
  */
-__rte_experimental
 unsigned int
 rte_power_pmd_mgmt_get_emptypoll_max(void);
 
 /**
- * @warning
- * @b EXPERIMENTAL: this API may change, or be removed, without prior notice.
- *
  * Set the pause_duration. Used to adjust the pause mode callback duration.
  *
  * @note Duration must be greater than zero.
@@ -128,27 +109,19 @@ rte_power_pmd_mgmt_get_emptypoll_max(void);
  *   0 on success
  *   <0 on error
  */
-__rte_experimental
 int
 rte_power_pmd_mgmt_set_pause_duration(unsigned int duration);
 
 /**
- * @warning
- * @b EXPERIMENTAL: this API may change, or be removed, without prior notice.
- *
  * Get the current value of pause_duration.
  *
  * @return
  *   The current pause_duration value.
  */
-__rte_experimental
 unsigned int
 rte_power_pmd_mgmt_get_pause_duration(void);
 
 /**
- * @warning
- * @b EXPERIMENTAL: this API may change, or be removed, without prior notice.
- *
  * Set the min frequency to be used for frequency scaling or zero to use defaults.
  *
  * @note Supported by: Pstate mode.
@@ -161,14 +134,10 @@ rte_power_pmd_mgmt_get_pause_duration(void);
  *   0 on success
  *   <0 on error
  */
-__rte_experimental
 int
 rte_power_pmd_mgmt_set_scaling_freq_min(unsigned int lcore, unsigned int min);
 
 /**
- * @warning
- * @b EXPERIMENTAL: this API may change, or be removed, without prior notice.
- *
  * Set the max frequency to be used for frequency scaling or zero to use defaults.
  *
  * @note Supported by: Pstate mode.
@@ -182,14 +151,10 @@ rte_power_pmd_mgmt_set_scaling_freq_min(unsigned int lcore, unsigned int min);
  *   0 on success
  *   <0 on error
  */
-__rte_experimental
 int
 rte_power_pmd_mgmt_set_scaling_freq_max(unsigned int lcore, unsigned int max);
 
 /**
- * @warning
- * @b EXPERIMENTAL: this API may change, or be removed, without prior notice.
- *
  * Get the current configured min frequency used for frequency scaling.
  *
  * @note Supported by: Pstate mode.
@@ -202,14 +167,10 @@ rte_power_pmd_mgmt_set_scaling_freq_max(unsigned int lcore, unsigned int max);
  *   , in KiloHertz, used for frequency scaling.
  *   <0 on error
  */
-__rte_experimental
 int
 rte_power_pmd_mgmt_get_scaling_freq_min(unsigned int lcore);
 
 /**
- * @warning
- * @b EXPERIMENTAL: this API may change, or be removed, without prior notice.
- *
  * Get the current configured max frequency used for frequency scaling.
  *
  * @note Supported by: Pstate mode.
@@ -222,7 +183,6 @@ rte_power_pmd_mgmt_get_scaling_freq_min(unsigned int lcore);
  *   , in KiloHertz, used for frequency scaling.
  *   <0 on error
  */
-__rte_experimental
 int
 rte_power_pmd_mgmt_get_scaling_freq_max(unsigned int lcore);
 
diff --git a/lib/power/rte_power_uncore.h b/lib/power/rte_power_uncore.h
index 295017b7f429..45d5235302c2 100644
--- a/lib/power/rte_power_uncore.h
+++ b/lib/power/rte_power_uncore.h
@@ -38,14 +38,12 @@ enum rte_uncore_power_mgmt_env {
  *  - 0 on success.
  *  - Negative on error.
  */
-__rte_experimental
 int rte_power_set_uncore_env(enum rte_uncore_power_mgmt_env env);
 
 /**
  * Unset the global uncore environment configuration.
  * This can only be called after all threads have completed.
  */
-__rte_experimental
 void rte_power_unset_uncore_env(void);
 
 /**
@@ -54,7 +52,6 @@ void rte_power_unset_uncore_env(void);
  * @return
  *  power_management_env The configured environment.
  */
-__rte_experimental
 enum rte_uncore_power_mgmt_env rte_power_get_uncore_env(void);
 
 /**
@@ -74,7 +71,6 @@ enum rte_uncore_power_mgmt_env rte_power_get_uncore_env(void);
  *  - 0 on success.
  *  - Negative on error.
  */
-__rte_experimental
 int
 rte_power_uncore_init(unsigned int pkg, unsigned int die);
 
@@ -96,7 +92,6 @@ rte_power_uncore_init(unsigned int pkg, unsigned int die);
  *  - 0 on success.
  *  - Negative on error.
  */
-__rte_experimental
 int
 rte_power_uncore_exit(unsigned int pkg, unsigned int die);
 
diff --git a/lib/power/version.map b/lib/power/version.map
index 53627b59f189..268711ac858b 100644
--- a/lib/power/version.map
+++ b/lib/power/version.map
@@ -1,6 +1,9 @@
 DPDK_24 {
 	global:
 
+	rte_power_check_env_supported;
+	rte_power_ethdev_pmgmt_queue_disable;
+	rte_power_ethdev_pmgmt_queue_enable;
 	rte_power_exit;
 	rte_power_freq_disable_turbo;
 	rte_power_freq_down;
@@ -12,27 +15,11 @@ DPDK_24 {
 	rte_power_get_capabilities;
 	rte_power_get_env;
 	rte_power_get_freq;
+	rte_power_get_uncore_env;
+	rte_power_get_uncore_freq;
+	rte_power_guest_channel_receive_msg;
 	rte_power_guest_channel_send_msg;
 	rte_power_init;
-	rte_power_set_env;
-	rte_power_set_freq;
-	rte_power_turbo_status;
-	rte_power_unset_env;
-
-	local: *;
-};
-
-EXPERIMENTAL {
-	global:
-
-	rte_power_check_env_supported;
-	rte_power_guest_channel_receive_msg;
-
-	# added in 21.02
-	rte_power_ethdev_pmgmt_queue_disable;
-	rte_power_ethdev_pmgmt_queue_enable;
-
-	# added in 22.07
 	rte_power_pmd_mgmt_get_emptypoll_max;
 	rte_power_pmd_mgmt_get_pause_duration;
 	rte_power_pmd_mgmt_get_scaling_freq_max;
@@ -41,21 +28,21 @@ EXPERIMENTAL {
 	rte_power_pmd_mgmt_set_pause_duration;
 	rte_power_pmd_mgmt_set_scaling_freq_max;
 	rte_power_pmd_mgmt_set_scaling_freq_min;
-
-	# added in 22.11
-	rte_power_get_uncore_freq;
+	rte_power_set_env;
+	rte_power_set_freq;
+	rte_power_set_uncore_env;
 	rte_power_set_uncore_freq;
+	rte_power_turbo_status;
 	rte_power_uncore_exit;
 	rte_power_uncore_freq_max;
 	rte_power_uncore_freq_min;
+	rte_power_uncore_freqs;
 	rte_power_uncore_get_num_dies;
 	rte_power_uncore_get_num_freqs;
 	rte_power_uncore_get_num_pkgs;
 	rte_power_uncore_init;
-
-	# added in 23.11
-	rte_power_get_uncore_env;
-	rte_power_set_uncore_env;
-	rte_power_uncore_freqs;
+	rte_power_unset_env;
 	rte_power_unset_uncore_env;
+
+	local: *;
 };
-- 
2.39.2


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

* [PATCH v5 16/26] kvargs: remove experimental flag
  2023-10-20 20:57 ` [PATCH v5 00/26] Promote many experimental API's to stable Stephen Hemminger
                     ` (14 preceding siblings ...)
  2023-10-20 20:57   ` [PATCH v5 15/26] power: remove experimental from API's Stephen Hemminger
@ 2023-10-20 20:57   ` Stephen Hemminger
  2023-10-20 20:57   ` [PATCH v5 17/26] ip_frag: mark a couple of functions stable Stephen Hemminger
                     ` (9 subsequent siblings)
  25 siblings, 0 replies; 219+ messages in thread
From: Stephen Hemminger @ 2023-10-20 20:57 UTC (permalink / raw)
  To: dev; +Cc: Stephen Hemminger, Bruce Richardson

The function rte_kvargs_get_with_value was added in 21.11
so experimental flag can be removed.

Signed-off-by: Stephen Hemminger <stephen@networkplumber.org>
Acked-by: Bruce Richardson <bruce.richardson@intel.com>
---
 lib/kvargs/rte_kvargs.h | 4 ----
 lib/kvargs/version.map  | 8 +-------
 2 files changed, 1 insertion(+), 11 deletions(-)

diff --git a/lib/kvargs/rte_kvargs.h b/lib/kvargs/rte_kvargs.h
index 4900b750bc0b..36804cfb1543 100644
--- a/lib/kvargs/rte_kvargs.h
+++ b/lib/kvargs/rte_kvargs.h
@@ -145,9 +145,6 @@ void rte_kvargs_free(struct rte_kvargs *kvlist);
 const char *rte_kvargs_get(const struct rte_kvargs *kvlist, const char *key);
 
 /**
- * @warning
- * @b EXPERIMENTAL: this API may change without prior notice
- *
  * Get the value associated with a given key and value.
  *
  * Find the first entry in the kvlist whose key and value match the
@@ -167,7 +164,6 @@ const char *rte_kvargs_get(const struct rte_kvargs *kvlist, const char *key);
  *   NULL if no key matches the input,
  *   a value associated with a matching key otherwise.
  */
-__rte_experimental
 const char *rte_kvargs_get_with_value(const struct rte_kvargs *kvlist,
 				      const char *key, const char *value);
 
diff --git a/lib/kvargs/version.map b/lib/kvargs/version.map
index 387a94e725cf..cda85d171f32 100644
--- a/lib/kvargs/version.map
+++ b/lib/kvargs/version.map
@@ -4,16 +4,10 @@ DPDK_24 {
 	rte_kvargs_count;
 	rte_kvargs_free;
 	rte_kvargs_get;
+	rte_kvargs_get_with_value;
 	rte_kvargs_parse;
 	rte_kvargs_parse_delim;
 	rte_kvargs_process;
 
 	local: *;
 };
-
-EXPERIMENTAL {
-	global:
-
-	# added in 21.11
-	rte_kvargs_get_with_value;
-};
-- 
2.39.2


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

* [PATCH v5 17/26] ip_frag: mark a couple of functions stable
  2023-10-20 20:57 ` [PATCH v5 00/26] Promote many experimental API's to stable Stephen Hemminger
                     ` (15 preceding siblings ...)
  2023-10-20 20:57   ` [PATCH v5 16/26] kvargs: remove experimental flag Stephen Hemminger
@ 2023-10-20 20:57   ` Stephen Hemminger
  2023-10-20 20:57   ` [PATCH v5 18/26] member: remove experimental tag Stephen Hemminger
                     ` (8 subsequent siblings)
  25 siblings, 0 replies; 219+ messages in thread
From: Stephen Hemminger @ 2023-10-20 20:57 UTC (permalink / raw)
  To: dev; +Cc: Stephen Hemminger, Konstantin Ananyev

There were two functions added in 22.11 which were
marked as experimental. Remove the experimental tag.

Signed-off-by: Stephen Hemminger <stephen@networkplumber.org>
Acked-by: Konstantin Ananyev <konstantin.v.ananyev@yandex.ru>
---
 lib/ip_frag/rte_ip_frag.h | 2 --
 lib/ip_frag/version.map   | 9 ++-------
 2 files changed, 2 insertions(+), 9 deletions(-)

diff --git a/lib/ip_frag/rte_ip_frag.h b/lib/ip_frag/rte_ip_frag.h
index feab72ae64b9..cd3a3e143ee7 100644
--- a/lib/ip_frag/rte_ip_frag.h
+++ b/lib/ip_frag/rte_ip_frag.h
@@ -205,7 +205,6 @@ int32_t rte_ipv4_fragment_packet(struct rte_mbuf *pkt_in,
  *   in the pkts_out array.
  *   Otherwise - (-1) * errno.
  */
-__rte_experimental
 int32_t
 rte_ipv4_fragment_copy_nonseg_packet(struct rte_mbuf *pkt_in,
 	struct rte_mbuf **pkts_out,
@@ -289,7 +288,6 @@ rte_ip_frag_table_statistics_dump(FILE * f, const struct rte_ip_frag_tbl *tbl);
  * @param tms
  *   Current timestamp
  */
-__rte_experimental
 void
 rte_ip_frag_table_del_expired_entries(struct rte_ip_frag_tbl *tbl,
 	struct rte_ip_frag_death_row *dr, uint64_t tms);
diff --git a/lib/ip_frag/version.map b/lib/ip_frag/version.map
index 7ba446c9938b..3e7e573dc412 100644
--- a/lib/ip_frag/version.map
+++ b/lib/ip_frag/version.map
@@ -3,19 +3,14 @@ DPDK_24 {
 
 	rte_ip_frag_free_death_row;
 	rte_ip_frag_table_create;
+	rte_ip_frag_table_del_expired_entries;
 	rte_ip_frag_table_destroy;
 	rte_ip_frag_table_statistics_dump;
 	rte_ipv4_frag_reassemble_packet;
+	rte_ipv4_fragment_copy_nonseg_packet;
 	rte_ipv4_fragment_packet;
 	rte_ipv6_frag_reassemble_packet;
 	rte_ipv6_fragment_packet;
 
 	local: *;
 };
-
-EXPERIMENTAL {
-	global:
-
-	rte_ip_frag_table_del_expired_entries;
-	rte_ipv4_fragment_copy_nonseg_packet;
-};
-- 
2.39.2


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

* [PATCH v5 18/26] member: remove experimental tag
  2023-10-20 20:57 ` [PATCH v5 00/26] Promote many experimental API's to stable Stephen Hemminger
                     ` (16 preceding siblings ...)
  2023-10-20 20:57   ` [PATCH v5 17/26] ip_frag: mark a couple of functions stable Stephen Hemminger
@ 2023-10-20 20:57   ` Stephen Hemminger
  2023-10-20 20:57   ` [PATCH v5 19/26] security: remove experimental flag from macsec Stephen Hemminger
                     ` (7 subsequent siblings)
  25 siblings, 0 replies; 219+ messages in thread
From: Stephen Hemminger @ 2023-10-20 20:57 UTC (permalink / raw)
  To: dev; +Cc: Stephen Hemminger, Yipeng Wang, Sameh Gobriel

The member library last received new API's in 22.11.
All the API's should be marked stable by now.

Signed-off-by: Stephen Hemminger <stephen@networkplumber.org>
---
 lib/member/rte_member.h | 54 -----------------------------------------
 lib/member/version.map  | 12 +++------
 2 files changed, 3 insertions(+), 63 deletions(-)

diff --git a/lib/member/rte_member.h b/lib/member/rte_member.h
index a15e0d69e696..a6bf22651700 100644
--- a/lib/member/rte_member.h
+++ b/lib/member/rte_member.h
@@ -15,9 +15,6 @@
  * bloom filter (vBF). For HT setsummary, two subtypes or modes are available,
  * cache and non-cache modes. The table below summarize some properties of
  * the different implementations.
- *
- * @warning
- * @b EXPERIMENTAL: this API may change without prior notice
  */
 
 /**
@@ -117,17 +114,11 @@ extern int librte_member_logtype;
 struct rte_member_setsum;
 
 /**
- * @warning
- * @b EXPERIMENTAL: this API may change without prior notice
- *
  * Parameter struct used to create set summary
  */
 struct rte_member_parameters;
 
 /**
- * @warning
- * @b EXPERIMENTAL: this API may change without prior notice
- *
  * Define different set summary types
  */
 enum rte_member_setsum_type {
@@ -207,9 +198,6 @@ struct rte_member_setsum {
 } __rte_cache_aligned;
 
 /**
- * @warning
- * @b EXPERIMENTAL: this API may change without prior notice
- *
  * Parameters used when create the set summary table. Currently user can
  * specify two types of setsummary: HT based and vBF. For HT based, user can
  * specify cache or non-cache mode. Here is a table to describe some differences
@@ -351,9 +339,6 @@ struct rte_member_parameters {
 } __rte_cache_aligned;
 
 /**
- * @warning
- * @b EXPERIMENTAL: this API may change without prior notice
- *
  * Find an existing set-summary and return a pointer to it.
  *
  * @param name
@@ -367,9 +352,6 @@ struct rte_member_setsum *
 rte_member_find_existing(const char *name);
 
 /**
- * @warning
- * @b EXPERIMENTAL: this API may change without prior notice
- *
  * Create set-summary (SS).
  *
  * @param params
@@ -382,9 +364,6 @@ struct rte_member_setsum *
 rte_member_create(const struct rte_member_parameters *params);
 
 /**
- * @warning
- * @b EXPERIMENTAL: this API may change without prior notice
- *
  * Lookup key in set-summary (SS).
  * Single key lookup and return as soon as the first match found
  *
@@ -402,9 +381,6 @@ rte_member_lookup(const struct rte_member_setsum *setsum, const void *key,
 			member_set_t *set_id);
 
 /**
- * @warning
- * @b EXPERIMENTAL: this API may change without prior notice
- *
  * Lookup bulk of keys in set-summary (SS).
  * Each key lookup returns as soon as the first match found
  *
@@ -427,9 +403,6 @@ rte_member_lookup_bulk(const struct rte_member_setsum *setsum,
 			member_set_t *set_ids);
 
 /**
- * @warning
- * @b EXPERIMENTAL: this API may change without prior notice
- *
  * Lookup a key in set-summary (SS) for multiple matches.
  * The key lookup will find all matched entries (multiple match).
  * Note that for cache mode of HT, each key can have at most one match. This is
@@ -456,9 +429,6 @@ rte_member_lookup_multi(const struct rte_member_setsum *setsum,
 		member_set_t *set_id);
 
 /**
- * @warning
- * @b EXPERIMENTAL: this API may change without prior notice
- *
  * Lookup a bulk of keys in set-summary (SS) for multiple matches each key.
  * Each key lookup will find all matched entries (multiple match).
  * Note that for cache mode HT, each key can have at most one match. So
@@ -489,9 +459,6 @@ rte_member_lookup_multi_bulk(const struct rte_member_setsum *setsum,
 		member_set_t *set_ids);
 
 /**
- * @warning
- * @b EXPERIMENTAL: this API may change without prior notice
- *
  * Insert key into set-summary (SS).
  *
  * @param setsum
@@ -522,9 +489,6 @@ rte_member_add(const struct rte_member_setsum *setsum, const void *key,
 			member_set_t set_id);
 
 /**
- * @warning
- * @b EXPERIMENTAL: this API may change without prior notice
- *
  * Add the packet byte size into the sketch.
  *
  * @param setsum
@@ -536,15 +500,11 @@ rte_member_add(const struct rte_member_setsum *setsum, const void *key,
  * @return
  * Return -EINVAL for invalid parameters, otherwise return 0.
  */
-__rte_experimental
 int
 rte_member_add_byte_count(const struct rte_member_setsum *setsum,
 			  const void *key, uint32_t byte_count);
 
 /**
- * @warning
- * @b EXPERIMENTAL: this API may change without prior notice
- *
  * Query packet count for a certain flow-key.
  *
  * @param setsum
@@ -556,16 +516,12 @@ rte_member_add_byte_count(const struct rte_member_setsum *setsum,
  * @return
  *   Return -EINVAL for invalid parameters.
  */
-__rte_experimental
 int
 rte_member_query_count(const struct rte_member_setsum *setsum,
 		       const void *key, uint64_t *count);
 
 
 /**
- * @warning
- * @b EXPERIMENTAL: this API may change without prior notice
- *
  * Report heavyhitter flow-keys into set-summary (SS).
  *
  * @param setsum
@@ -578,16 +534,12 @@ rte_member_query_count(const struct rte_member_setsum *setsum,
  *   Return -EINVAL for invalid parameters. Return a positive integer indicate
  *   how many heavy hitters are reported.
  */
-__rte_experimental
 int
 rte_member_report_heavyhitter(const struct rte_member_setsum *setsum,
 			      void **keys, uint64_t *counts);
 
 
 /**
- * @warning
- * @b EXPERIMENTAL: this API may change without prior notice
- *
  * De-allocate memory used by set-summary.
  *
  * @param setsum
@@ -598,9 +550,6 @@ void
 rte_member_free(struct rte_member_setsum *setsum);
 
 /**
- * @warning
- * @b EXPERIMENTAL: this API may change without prior notice
- *
  * Reset the set-summary tables. E.g. reset bits to be 0 in BF,
  * reset set_id in each entry to be RTE_MEMBER_NO_MATCH in HT based SS.
  *
@@ -611,9 +560,6 @@ void
 rte_member_reset(const struct rte_member_setsum *setsum);
 
 /**
- * @warning
- * @b EXPERIMENTAL: this API may change without prior notice
- *
  * Delete items from the set-summary. Note that vBF does not support deletion
  * in current implementation. For vBF, error code of -EINVAL will be returned.
  *
diff --git a/lib/member/version.map b/lib/member/version.map
index 9be5068d68fb..3aeba8826ba1 100644
--- a/lib/member/version.map
+++ b/lib/member/version.map
@@ -2,6 +2,7 @@ DPDK_24 {
 	global:
 
 	rte_member_add;
+	rte_member_add_byte_count;
 	rte_member_create;
 	rte_member_delete;
 	rte_member_find_existing;
@@ -10,16 +11,9 @@ DPDK_24 {
 	rte_member_lookup_bulk;
 	rte_member_lookup_multi;
 	rte_member_lookup_multi_bulk;
+	rte_member_query_count;
+	rte_member_report_heavyhitter;
 	rte_member_reset;
 
 	local: *;
 };
-
-EXPERIMENTAL {
-	global:
-
-	# added in 22.11
-	rte_member_add_byte_count;
-	rte_member_query_count;
-	rte_member_report_heavyhitter;
-};
-- 
2.39.2


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

* [PATCH v5 19/26] security: remove experimental flag from macsec
  2023-10-20 20:57 ` [PATCH v5 00/26] Promote many experimental API's to stable Stephen Hemminger
                     ` (17 preceding siblings ...)
  2023-10-20 20:57   ` [PATCH v5 18/26] member: remove experimental tag Stephen Hemminger
@ 2023-10-20 20:57   ` Stephen Hemminger
  2023-10-23 12:00     ` David Marchand
  2023-10-20 20:57   ` [PATCH v5 20/26] bbdev: remove experimental tag Stephen Hemminger
                     ` (6 subsequent siblings)
  25 siblings, 1 reply; 219+ messages in thread
From: Stephen Hemminger @ 2023-10-20 20:57 UTC (permalink / raw)
  To: dev; +Cc: Stephen Hemminger, Akhil Goyal

The rte_security API's for macsec were added in 22.11.
Therefore remove the experimental tag.

There is also one helper function for setting packet
metadata that should have been marked internal.

Signed-off-by: Stephen Hemminger <stephen@networkplumber.org>
Acked-by: Akhil Goyal <gakhil@marvell.com>
---
 lib/security/rte_security.h | 27 ---------------------------
 lib/security/version.map    | 18 +++++++++---------
 2 files changed, 9 insertions(+), 36 deletions(-)

diff --git a/lib/security/rte_security.h b/lib/security/rte_security.h
index d2d2af23d5d2..a19544906f21 100644
--- a/lib/security/rte_security.h
+++ b/lib/security/rte_security.h
@@ -815,7 +815,6 @@ rte_security_session_create(void *instance,
  *  - On success returns 0
  *  - On failure returns a negative errno value.
  */
-__rte_experimental
 int
 rte_security_session_update(void *instance,
 			    void *sess,
@@ -851,9 +850,6 @@ int
 rte_security_session_destroy(void *instance, void *sess);
 
 /**
- * @warning
- * @b EXPERIMENTAL: this API may change without prior notice
- *
  * Create MACsec security channel (SC).
  *
  * @param   instance	security instance
@@ -865,15 +861,11 @@ rte_security_session_destroy(void *instance, void *sess);
  *  - -ENOMEM if PMD is not capable to create more SC.
  *  - other negative value for other errors.
  */
-__rte_experimental
 int
 rte_security_macsec_sc_create(void *instance,
 			      struct rte_security_macsec_sc *conf);
 
 /**
- * @warning
- * @b EXPERIMENTAL: this API may change without prior notice
- *
  * Destroy MACsec security channel (SC).
  *
  * @param   instance	security instance
@@ -884,15 +876,11 @@ rte_security_macsec_sc_create(void *instance,
  *  - -EINVAL if sc_id is invalid or instance is NULL.
  *  - -EBUSY if sc is being used by some session.
  */
-__rte_experimental
 int
 rte_security_macsec_sc_destroy(void *instance, uint16_t sc_id,
 			       enum rte_security_macsec_direction dir);
 
 /**
- * @warning
- * @b EXPERIMENTAL: this API may change without prior notice
- *
  * Create MACsec security association (SA).
  *
  * @param   instance	security instance
@@ -904,15 +892,11 @@ rte_security_macsec_sc_destroy(void *instance, uint16_t sc_id,
  *  - -ENOMEM if PMD is not capable to create more SAs.
  *  - other negative value for other errors.
  */
-__rte_experimental
 int
 rte_security_macsec_sa_create(void *instance,
 			      struct rte_security_macsec_sa *conf);
 
 /**
- * @warning
- * @b EXPERIMENTAL: this API may change without prior notice
- *
  * Destroy MACsec security association (SA).
  *
  * @param   instance	security instance
@@ -923,7 +907,6 @@ rte_security_macsec_sa_create(void *instance,
  *  - -EINVAL if sa_id is invalid or instance is NULL.
  *  - -EBUSY if sa is being used by some session.
  */
-__rte_experimental
 int
 rte_security_macsec_sa_destroy(void *instance, uint16_t sa_id,
 			       enum rte_security_macsec_direction dir);
@@ -1059,7 +1042,6 @@ rte_security_session_fast_mdata_set(void *sess, uint64_t fdata)
 }
 
 /** Function to call PMD specific function pointer set_pkt_metadata() */
-__rte_experimental
 int __rte_security_set_pkt_metadata(void *instance,
 				    void *sess,
 				    struct rte_mbuf *m, void *params);
@@ -1230,16 +1212,12 @@ struct rte_security_stats {
  *  - On success, return 0
  *  - On failure, a negative value
  */
-__rte_experimental
 int
 rte_security_session_stats_get(void *instance,
 			       void *sess,
 			       struct rte_security_stats *stats);
 
 /**
- * @warning
- * @b EXPERIMENTAL: this API may change without prior notice
- *
  * Get MACsec SA statistics.
  *
  * @param	instance	security instance
@@ -1250,16 +1228,12 @@ rte_security_session_stats_get(void *instance,
  *  - On success, return 0.
  *  - On failure, a negative value.
  */
-__rte_experimental
 int
 rte_security_macsec_sa_stats_get(void *instance,
 				 uint16_t sa_id, enum rte_security_macsec_direction dir,
 				 struct rte_security_macsec_sa_stats *stats);
 
 /**
- * @warning
- * @b EXPERIMENTAL: this API may change without prior notice
- *
  * Get MACsec SC statistics.
  *
  * @param	instance	security instance
@@ -1270,7 +1244,6 @@ rte_security_macsec_sa_stats_get(void *instance,
  *  - On success, return 0.
  *  - On failure, a negative value.
  */
-__rte_experimental
 int
 rte_security_macsec_sc_stats_get(void *instance,
 				 uint16_t sc_id, enum rte_security_macsec_direction dir,
diff --git a/lib/security/version.map b/lib/security/version.map
index e07fca33a1e6..54c9a556798d 100644
--- a/lib/security/version.map
+++ b/lib/security/version.map
@@ -1,19 +1,12 @@
 DPDK_24 {
 	global:
 
+	__rte_security_set_pkt_metadata;
 	rte_security_capabilities_get;
 	rte_security_capability_get;
 	rte_security_session_create;
 	rte_security_session_destroy;
 	rte_security_session_get_size;
-
-	local: *;
-};
-
-EXPERIMENTAL {
-	global:
-
-	__rte_security_set_pkt_metadata;
 	rte_security_dynfield_offset;
 	rte_security_macsec_sa_create;
 	rte_security_macsec_sa_destroy;
@@ -23,8 +16,15 @@ EXPERIMENTAL {
 	rte_security_macsec_sc_stats_get;
 	rte_security_session_stats_get;
 	rte_security_session_update;
-	rte_security_oop_dynfield_offset;
 
+	local: *;
+};
+
+EXPERIMENTAL {
+	global:
+
+	# Added in 23.11
+	rte_security_oop_dynfield_offset;
 	rte_security_rx_inject_configure;
 	rte_security_inb_pkt_rx_inject;
 };
-- 
2.39.2


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

* [PATCH v5 20/26] bbdev: remove experimental tag
  2023-10-20 20:57 ` [PATCH v5 00/26] Promote many experimental API's to stable Stephen Hemminger
                     ` (18 preceding siblings ...)
  2023-10-20 20:57   ` [PATCH v5 19/26] security: remove experimental flag from macsec Stephen Hemminger
@ 2023-10-20 20:57   ` Stephen Hemminger
  2023-10-20 20:57   ` [PATCH v5 21/26] ipsec: remove experimental from SA API Stephen Hemminger
                     ` (5 subsequent siblings)
  25 siblings, 0 replies; 219+ messages in thread
From: Stephen Hemminger @ 2023-10-20 20:57 UTC (permalink / raw)
  To: dev; +Cc: Stephen Hemminger, Maxime Coquelin, Nicolas Chautru

The API's for bbdev were last added to in 22.11.
Remove experimental flag now.

Signed-off-by: Stephen Hemminger <stephen@networkplumber.org>
Acked-by: Maxime Coquelin <maxime.coquelin@redhat.com>
---
 lib/bbdev/rte_bbdev.h    |  4 ----
 lib/bbdev/rte_bbdev_op.h |  2 --
 lib/bbdev/version.map    | 15 +++++++--------
 3 files changed, 7 insertions(+), 14 deletions(-)

diff --git a/lib/bbdev/rte_bbdev.h b/lib/bbdev/rte_bbdev.h
index d12e2e7fbcf3..b43e98ef9d1b 100644
--- a/lib/bbdev/rte_bbdev.h
+++ b/lib/bbdev/rte_bbdev.h
@@ -675,7 +675,6 @@ rte_bbdev_enqueue_ldpc_dec_ops(uint16_t dev_id, uint16_t queue_id,
  *   The number of operations actually enqueued.
  *   (This is the number of processed entries in the @p ops array.)
  */
-__rte_experimental
 static inline uint16_t
 rte_bbdev_enqueue_fft_ops(uint16_t dev_id, uint16_t queue_id,
 		struct rte_bbdev_fft_op **ops, uint16_t num_ops)
@@ -860,7 +859,6 @@ rte_bbdev_dequeue_ldpc_dec_ops(uint16_t dev_id, uint16_t queue_id,
  *   The number of operations actually dequeued (this is the number of entries
  *   copied into the @p ops array).
  */
-__rte_experimental
 static inline uint16_t
 rte_bbdev_dequeue_fft_ops(uint16_t dev_id, uint16_t queue_id,
 		struct rte_bbdev_fft_op **ops, uint16_t num_ops)
@@ -1042,7 +1040,6 @@ rte_bbdev_queue_intr_ctl(uint16_t dev_id, uint16_t queue_id, int epfd, int op,
  * @returns
  *   Device status as string or NULL if invalid.
  */
-__rte_experimental
 const char*
 rte_bbdev_device_status_str(enum rte_bbdev_device_status status);
 
@@ -1055,7 +1052,6 @@ rte_bbdev_device_status_str(enum rte_bbdev_device_status status);
  * @returns
  *   Queue status as string or NULL if op_type is invalid.
  */
-__rte_experimental
 const char*
 rte_bbdev_enqueue_status_str(enum rte_bbdev_enqueue_status status);
 
diff --git a/lib/bbdev/rte_bbdev_op.h b/lib/bbdev/rte_bbdev_op.h
index 369ac331bf9b..459631d0d0b7 100644
--- a/lib/bbdev/rte_bbdev_op.h
+++ b/lib/bbdev/rte_bbdev_op.h
@@ -1130,7 +1130,6 @@ rte_bbdev_dec_op_alloc_bulk(struct rte_mempool *mempool,
  *   - 0 on success.
  *   - EINVAL if invalid mempool is provided.
  */
-__rte_experimental
 static inline int
 rte_bbdev_fft_op_alloc_bulk(struct rte_mempool *mempool,
 		struct rte_bbdev_fft_op **ops, unsigned int num_ops)
@@ -1220,7 +1219,6 @@ rte_bbdev_enc_op_free_bulk(struct rte_bbdev_enc_op **ops, unsigned int num_ops)
  * @param num_ops
  *   Number of structures.
  */
-__rte_experimental
 static inline void
 rte_bbdev_fft_op_free_bulk(struct rte_bbdev_fft_op **ops, unsigned int num_ops)
 {
diff --git a/lib/bbdev/version.map b/lib/bbdev/version.map
index eeb7ed475a6c..1840d2b2a491 100644
--- a/lib/bbdev/version.map
+++ b/lib/bbdev/version.map
@@ -10,11 +10,17 @@ DPDK_24 {
 	rte_bbdev_dec_op_free_bulk;
 	rte_bbdev_dequeue_dec_ops;
 	rte_bbdev_dequeue_enc_ops;
+	rte_bbdev_dequeue_fft_ops;
+	rte_bbdev_device_status_str;
 	rte_bbdev_devices;
 	rte_bbdev_enc_op_alloc_bulk;
 	rte_bbdev_enc_op_free_bulk;
 	rte_bbdev_enqueue_dec_ops;
 	rte_bbdev_enqueue_enc_ops;
+	rte_bbdev_enqueue_fft_ops;
+	rte_bbdev_enqueue_status_str;
+	rte_bbdev_fft_op_alloc_bulk;
+	rte_bbdev_fft_op_free_bulk;
 	rte_bbdev_find_next;
 	rte_bbdev_get_named_dev;
 	rte_bbdev_info_get;
@@ -43,14 +49,7 @@ DPDK_24 {
 EXPERIMENTAL {
 	global:
 
-	# added in 22.11
-	rte_bbdev_dequeue_fft_ops;
-	rte_bbdev_device_status_str;
-	rte_bbdev_enqueue_fft_ops;
-	rte_bbdev_enqueue_status_str;
-	rte_bbdev_fft_op_alloc_bulk;
-	rte_bbdev_fft_op_free_bulk;
-	#added in 23.11
+	# added in 23.11
 	rte_bbdev_dequeue_mldts_ops;
 	rte_bbdev_enqueue_mldts_ops;
 	rte_bbdev_mldts_op_alloc_bulk;
-- 
2.39.2


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

* [PATCH v5 21/26] ipsec: remove experimental from SA API
  2023-10-20 20:57 ` [PATCH v5 00/26] Promote many experimental API's to stable Stephen Hemminger
                     ` (19 preceding siblings ...)
  2023-10-20 20:57   ` [PATCH v5 20/26] bbdev: remove experimental tag Stephen Hemminger
@ 2023-10-20 20:57   ` Stephen Hemminger
  2023-10-20 20:57   ` [PATCH v5 22/26] compressdev: remove experimental flag Stephen Hemminger
                     ` (4 subsequent siblings)
  25 siblings, 0 replies; 219+ messages in thread
From: Stephen Hemminger @ 2023-10-20 20:57 UTC (permalink / raw)
  To: dev; +Cc: Stephen Hemminger, Konstantin Ananyev, Vladimir Medvedkin

These API's were added in 21.11, remove experimental flag.

Signed-off-by: Stephen Hemminger <stephen@networkplumber.org>
Acked-by: Konstantin Ananyev <konstantin.v.ananyev@yandex.ru>
---
 lib/ipsec/rte_ipsec.h | 2 --
 lib/ipsec/version.map | 9 +--------
 2 files changed, 1 insertion(+), 10 deletions(-)

diff --git a/lib/ipsec/rte_ipsec.h b/lib/ipsec/rte_ipsec.h
index 04129926b69f..81624f909192 100644
--- a/lib/ipsec/rte_ipsec.h
+++ b/lib/ipsec/rte_ipsec.h
@@ -168,7 +168,6 @@ rte_ipsec_pkt_process(const struct rte_ipsec_session *ss, struct rte_mbuf *mb[],
  * @return
  *   0 on success, negative value otherwise.
  */
-__rte_experimental
 int
 rte_ipsec_telemetry_sa_add(const struct rte_ipsec_sa *sa);
 
@@ -178,7 +177,6 @@ rte_ipsec_telemetry_sa_add(const struct rte_ipsec_sa *sa);
  * @param sa
  *   Pointer to the *rte_ipsec_sa* object that will have telemetry disabled.
  */
-__rte_experimental
 void
 rte_ipsec_telemetry_sa_del(const struct rte_ipsec_sa *sa);
 
diff --git a/lib/ipsec/version.map b/lib/ipsec/version.map
index f0063af354f0..9d01ebeadc4c 100644
--- a/lib/ipsec/version.map
+++ b/lib/ipsec/version.map
@@ -16,15 +16,8 @@ DPDK_24 {
 	rte_ipsec_sad_lookup;
 	rte_ipsec_ses_from_crypto;
 	rte_ipsec_session_prepare;
-
-	local: *;
-};
-
-EXPERIMENTAL {
-	global:
-
-	# added in 21.11
 	rte_ipsec_telemetry_sa_add;
 	rte_ipsec_telemetry_sa_del;
 
+	local: *;
 };
-- 
2.39.2


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

* [PATCH v5 22/26] compressdev: remove experimental flag
  2023-10-20 20:57 ` [PATCH v5 00/26] Promote many experimental API's to stable Stephen Hemminger
                     ` (20 preceding siblings ...)
  2023-10-20 20:57   ` [PATCH v5 21/26] ipsec: remove experimental from SA API Stephen Hemminger
@ 2023-10-20 20:57   ` Stephen Hemminger
  2023-10-23  9:12     ` Bruce Richardson
  2023-10-20 20:57   ` [PATCH v5 23/26] regexdev: remove experimental tag Stephen Hemminger
                     ` (3 subsequent siblings)
  25 siblings, 1 reply; 219+ messages in thread
From: Stephen Hemminger @ 2023-10-20 20:57 UTC (permalink / raw)
  To: dev; +Cc: Stephen Hemminger, Thomas Monjalon, Fan Zhang, Ashish Gupta

The compressdev can not hide under the experimental flag.
Remove the experimental flag and require ABI to be stable.

Signed-off-by: Stephen Hemminger <stephen@networkplumber.org>
---
 MAINTAINERS                           |  2 +-
 lib/compressdev/rte_comp.h            |  6 ------
 lib/compressdev/rte_compressdev.h     | 26 --------------------------
 lib/compressdev/rte_compressdev_pmd.h |  6 ------
 lib/compressdev/version.map           |  2 +-
 5 files changed, 2 insertions(+), 40 deletions(-)

diff --git a/MAINTAINERS b/MAINTAINERS
index 2f1ab5a0f328..789507ddccb7 100644
--- a/MAINTAINERS
+++ b/MAINTAINERS
@@ -459,7 +459,7 @@ F: lib/security/
 F: doc/guides/prog_guide/rte_security.rst
 F: app/test/test_security*
 
-Compression API - EXPERIMENTAL
+Compression API
 M: Fan Zhang <fanzhang.oss@gmail.com>
 M: Ashish Gupta <ashish.gupta@marvell.com>
 T: git://dpdk.org/next/dpdk-next-crypto
diff --git a/lib/compressdev/rte_comp.h b/lib/compressdev/rte_comp.h
index bf896d07223c..232564cf5e9a 100644
--- a/lib/compressdev/rte_comp.h
+++ b/lib/compressdev/rte_comp.h
@@ -499,7 +499,6 @@ struct rte_comp_op {
  *  - On success pointer to mempool
  *  - On failure NULL
  */
-__rte_experimental
 struct rte_mempool *
 rte_comp_op_pool_create(const char *name,
 		unsigned int nb_elts, unsigned int cache_size,
@@ -515,7 +514,6 @@ rte_comp_op_pool_create(const char *name,
  * - On success returns a valid rte_comp_op structure
  * - On failure returns NULL
  */
-__rte_experimental
 struct rte_comp_op *
 rte_comp_op_alloc(struct rte_mempool *mempool);
 
@@ -532,7 +530,6 @@ rte_comp_op_alloc(struct rte_mempool *mempool);
  *   - nb_ops: Success, the nb_ops requested was allocated
  *   - 0: Not enough entries in the mempool; no ops are retrieved.
  */
-__rte_experimental
 int
 rte_comp_op_bulk_alloc(struct rte_mempool *mempool,
 		struct rte_comp_op **ops, uint16_t nb_ops);
@@ -546,7 +543,6 @@ rte_comp_op_bulk_alloc(struct rte_mempool *mempool,
  *   Compress operation pointer allocated from rte_comp_op_alloc()
  *   If op is NULL, no operation is performed.
  */
-__rte_experimental
 void
 rte_comp_op_free(struct rte_comp_op *op);
 
@@ -561,7 +557,6 @@ rte_comp_op_free(struct rte_comp_op *op);
  * @param nb_ops
  *   Number of operations to free
  */
-__rte_experimental
 void
 rte_comp_op_bulk_free(struct rte_comp_op **ops, uint16_t nb_ops);
 
@@ -574,7 +569,6 @@ rte_comp_op_bulk_free(struct rte_comp_op **ops, uint16_t nb_ops);
  * @return
  *   The name of this flag, or NULL if it's not a valid feature flag.
  */
-__rte_experimental
 const char *
 rte_comp_get_feature_name(uint64_t flag);
 
diff --git a/lib/compressdev/rte_compressdev.h b/lib/compressdev/rte_compressdev.h
index 13a418631893..8cb5db0e3f7d 100644
--- a/lib/compressdev/rte_compressdev.h
+++ b/lib/compressdev/rte_compressdev.h
@@ -10,10 +10,6 @@
  *
  * RTE Compression Device APIs.
  *
- * @warning
- * @b EXPERIMENTAL:
- * All functions in this file may be changed or removed without prior notice.
- *
  * Defines comp device APIs for the provisioning of compression operations.
  */
 
@@ -54,7 +50,6 @@ struct rte_compressdev_capabilities {
 #define RTE_COMP_END_OF_CAPABILITIES_LIST() \
 	{ RTE_COMP_ALGO_UNSPECIFIED }
 
-__rte_experimental
 const struct rte_compressdev_capabilities *
 rte_compressdev_capability_get(uint8_t dev_id,
 			enum rte_comp_algorithm algo);
@@ -94,7 +89,6 @@ rte_compressdev_capability_get(uint8_t dev_id,
  * @return
  *   The name of this flag, or NULL if it's not a valid feature flag.
  */
-__rte_experimental
 const char *
 rte_compressdev_get_feature_name(uint64_t flag);
 
@@ -133,7 +127,6 @@ struct rte_compressdev_stats {
  *   - Returns compress device identifier on success.
  *   - Return -1 on failure to find named compress device.
  */
-__rte_experimental
 int
 rte_compressdev_get_dev_id(const char *name);
 
@@ -146,7 +139,6 @@ rte_compressdev_get_dev_id(const char *name);
  *   - Returns compress device name.
  *   - Returns NULL if compress device is not present.
  */
-__rte_experimental
 const char *
 rte_compressdev_name_get(uint8_t dev_id);
 
@@ -157,7 +149,6 @@ rte_compressdev_name_get(uint8_t dev_id);
  * @return
  *   - The total number of usable compress devices.
  */
-__rte_experimental
 uint8_t
 rte_compressdev_count(void);
 
@@ -175,7 +166,6 @@ rte_compressdev_count(void);
  * @return
  *   Returns number of attached compress devices.
  */
-__rte_experimental
 uint8_t
 rte_compressdev_devices_get(const char *driver_name, uint8_t *devices,
 		uint8_t nb_devices);
@@ -190,7 +180,6 @@ rte_compressdev_devices_get(const char *driver_name, uint8_t *devices,
  *   a default of zero if the socket could not be determined.
  *   -1 if returned is the dev_id value is out of range.
  */
-__rte_experimental
 int
 rte_compressdev_socket_id(uint8_t dev_id);
 
@@ -221,7 +210,6 @@ struct rte_compressdev_config {
  *   - 0: Success, device configured.
  *   - <0: Error code returned by the driver configuration function.
  */
-__rte_experimental
 int
 rte_compressdev_configure(uint8_t dev_id,
 			struct rte_compressdev_config *config);
@@ -240,7 +228,6 @@ rte_compressdev_configure(uint8_t dev_id,
  *   - 0: Success, device started.
  *   - <0: Error code of the driver device start function.
  */
-__rte_experimental
 int
 rte_compressdev_start(uint8_t dev_id);
 
@@ -251,7 +238,6 @@ rte_compressdev_start(uint8_t dev_id);
  * @param dev_id
  *   Compress device identifier
  */
-__rte_experimental
 void
 rte_compressdev_stop(uint8_t dev_id);
 
@@ -269,7 +255,6 @@ rte_compressdev_stop(uint8_t dev_id);
  *  - 0 on successfully closing device
  *  - <0 on failure to close device
  */
-__rte_experimental
 int
 rte_compressdev_close(uint8_t dev_id);
 
@@ -296,7 +281,6 @@ rte_compressdev_close(uint8_t dev_id);
  *   - 0: Success, queue pair correctly set up.
  *   - <0: Queue pair configuration failed
  */
-__rte_experimental
 int
 rte_compressdev_queue_pair_setup(uint8_t dev_id, uint16_t queue_pair_id,
 		uint32_t max_inflight_ops, int socket_id);
@@ -309,7 +293,6 @@ rte_compressdev_queue_pair_setup(uint8_t dev_id, uint16_t queue_pair_id,
  * @return
  *   - The number of configured queue pairs.
  */
-__rte_experimental
 uint16_t
 rte_compressdev_queue_pair_count(uint8_t dev_id);
 
@@ -327,7 +310,6 @@ rte_compressdev_queue_pair_count(uint8_t dev_id);
  *   - Zero if successful.
  *   - Non-zero otherwise.
  */
-__rte_experimental
 int
 rte_compressdev_stats_get(uint8_t dev_id, struct rte_compressdev_stats *stats);
 
@@ -337,7 +319,6 @@ rte_compressdev_stats_get(uint8_t dev_id, struct rte_compressdev_stats *stats);
  * @param dev_id
  *   The identifier of the device.
  */
-__rte_experimental
 void
 rte_compressdev_stats_reset(uint8_t dev_id);
 
@@ -355,7 +336,6 @@ rte_compressdev_stats_reset(uint8_t dev_id);
  * The element after the last valid element has it's op field set to
  * RTE_COMP_ALGO_UNSPECIFIED.
  */
-__rte_experimental
 void
 rte_compressdev_info_get(uint8_t dev_id, struct rte_compressdev_info *dev_info);
 
@@ -413,7 +393,6 @@ rte_compressdev_info_get(uint8_t dev_id, struct rte_compressdev_info *dev_info);
  *   of pointers to *rte_comp_op* structures effectively supplied to the
  *   *ops* array.
  */
-__rte_experimental
 uint16_t
 rte_compressdev_dequeue_burst(uint8_t dev_id, uint16_t qp_id,
 		struct rte_comp_op **ops, uint16_t nb_ops);
@@ -468,7 +447,6 @@ rte_compressdev_dequeue_burst(uint8_t dev_id, uint16_t qp_id,
  *   comp devices queue is full or if invalid parameters are specified in
  *   a *rte_comp_op*.
  */
-__rte_experimental
 uint16_t
 rte_compressdev_enqueue_burst(uint8_t dev_id, uint16_t qp_id,
 		struct rte_comp_op **ops, uint16_t nb_ops);
@@ -496,7 +474,6 @@ rte_compressdev_enqueue_burst(uint8_t dev_id, uint16_t qp_id,
  *  - Returns -ENOTSUP if comp device does not support the comp transform.
  *  - Returns -ENOMEM if the private stream could not be allocated.
  */
-__rte_experimental
 int
 rte_compressdev_stream_create(uint8_t dev_id,
 		const struct rte_comp_xform *xform,
@@ -518,7 +495,6 @@ rte_compressdev_stream_create(uint8_t dev_id,
  *  - Returns -ENOTSUP if comp device does not support STATEFUL operations.
  *  - Returns -EBUSY if can't free stream as there are inflight operations
  */
-__rte_experimental
 int
 rte_compressdev_stream_free(uint8_t dev_id, void *stream);
 
@@ -545,7 +521,6 @@ rte_compressdev_stream_free(uint8_t dev_id, void *stream);
  *  - Returns -ENOTSUP if comp device does not support the comp transform.
  *  - Returns -ENOMEM if the private_xform could not be allocated.
  */
-__rte_experimental
 int
 rte_compressdev_private_xform_create(uint8_t dev_id,
 		const struct rte_comp_xform *xform,
@@ -567,7 +542,6 @@ rte_compressdev_private_xform_create(uint8_t dev_id,
  *  - <0 in error cases
  *  - Returns -EINVAL if input parameters are invalid.
  */
-__rte_experimental
 int
 rte_compressdev_private_xform_free(uint8_t dev_id, void *private_xform);
 
diff --git a/lib/compressdev/rte_compressdev_pmd.h b/lib/compressdev/rte_compressdev_pmd.h
index ea012908b783..fa233492fe1f 100644
--- a/lib/compressdev/rte_compressdev_pmd.h
+++ b/lib/compressdev/rte_compressdev_pmd.h
@@ -59,7 +59,6 @@ struct rte_compressdev_global {
  * @return
  *   - The rte_compressdev structure pointer for the given device identifier.
  */
-__rte_experimental
 struct rte_compressdev *
 rte_compressdev_pmd_get_named_dev(const char *name);
 
@@ -292,7 +291,6 @@ struct rte_compressdev_ops {
  * @return
  *   - Slot in the rte_dev_devices array for a new device;
  */
-__rte_experimental
 struct rte_compressdev *
 rte_compressdev_pmd_allocate(const char *name, int socket_id);
 
@@ -308,7 +306,6 @@ rte_compressdev_pmd_allocate(const char *name, int socket_id);
  * @return
  *   - 0 on success, negative on error
  */
-__rte_experimental
 int
 rte_compressdev_pmd_release_device(struct rte_compressdev *dev);
 
@@ -331,7 +328,6 @@ rte_compressdev_pmd_release_device(struct rte_compressdev *dev);
  *  - 0 on success
  *  - errno on failure
  */
-__rte_experimental
 int
 rte_compressdev_pmd_parse_input_args(
 		struct rte_compressdev_pmd_init_params *params,
@@ -353,7 +349,6 @@ rte_compressdev_pmd_parse_input_args(
  *  - comp device instance on success
  *  - NULL on creation failure
  */
-__rte_experimental
 struct rte_compressdev *
 rte_compressdev_pmd_create(const char *name,
 		struct rte_device *device,
@@ -372,7 +367,6 @@ rte_compressdev_pmd_create(const char *name,
  *  - 0 on success
  *  - errno on failure
  */
-__rte_experimental
 int
 rte_compressdev_pmd_destroy(struct rte_compressdev *dev);
 
diff --git a/lib/compressdev/version.map b/lib/compressdev/version.map
index e2a108b6509f..fa891f669b5d 100644
--- a/lib/compressdev/version.map
+++ b/lib/compressdev/version.map
@@ -1,4 +1,4 @@
-EXPERIMENTAL {
+DPDK_24 {
 	global:
 
 	rte_compressdev_capability_get;
-- 
2.39.2


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

* [PATCH v5 23/26] regexdev: remove experimental tag
  2023-10-20 20:57 ` [PATCH v5 00/26] Promote many experimental API's to stable Stephen Hemminger
                     ` (21 preceding siblings ...)
  2023-10-20 20:57   ` [PATCH v5 22/26] compressdev: remove experimental flag Stephen Hemminger
@ 2023-10-20 20:57   ` 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
                     ` (2 subsequent siblings)
  25 siblings, 1 reply; 219+ messages in thread
From: Stephen Hemminger @ 2023-10-20 20:57 UTC (permalink / raw)
  To: dev; +Cc: Stephen Hemminger, Ori Kam

This library was added in 22.11.
Time to make it not experimental.

Signed-off-by: Stephen Hemminger <stephen@networkplumber.org>
---
 lib/regexdev/rte_regexdev.h | 92 -------------------------------------
 lib/regexdev/version.map    |  2 +-
 2 files changed, 1 insertion(+), 93 deletions(-)

diff --git a/lib/regexdev/rte_regexdev.h b/lib/regexdev/rte_regexdev.h
index d50af775b551..3ea1f0c061a0 100644
--- a/lib/regexdev/rte_regexdev.h
+++ b/lib/regexdev/rte_regexdev.h
@@ -226,9 +226,6 @@ extern int rte_regexdev_logtype;
 } while (0)
 
 /**
- * @warning
- * @b EXPERIMENTAL: this API may change without prior notice.
- *
  * Check if dev_id is ready.
  *
  * @param dev_id
@@ -238,27 +235,19 @@ extern int rte_regexdev_logtype;
  *   - 0 if device state is not in ready state.
  *   - 1 if device state is ready state.
  */
-__rte_experimental
 int rte_regexdev_is_valid_dev(uint16_t dev_id);
 
 /**
- * @warning
- * @b EXPERIMENTAL: this API may change without prior notice.
- *
  * Get the total number of RegEx devices that have been successfully
  * initialised.
  *
  * @return
  *   The total number of usable RegEx devices.
  */
-__rte_experimental
 uint8_t
 rte_regexdev_count(void);
 
 /**
- * @warning
- * @b EXPERIMENTAL: this API may change without prior notice.
- *
  * Get the device identifier for the named RegEx device.
  *
  * @param name
@@ -268,7 +257,6 @@ rte_regexdev_count(void);
  *   Returns RegEx device identifier on success.
  *   - <0: Failure to find named RegEx device.
  */
-__rte_experimental
 int
 rte_regexdev_get_dev_id(const char *name);
 
@@ -628,9 +616,6 @@ struct rte_regexdev_info {
 };
 
 /**
- * @warning
- * @b EXPERIMENTAL: this API may change without prior notice.
- *
  * Retrieve the contextual information of a RegEx device.
  *
  * @param dev_id
@@ -644,7 +629,6 @@ struct rte_regexdev_info {
  *   - 0: Success, driver updates the contextual information of the RegEx device
  *   - <0: Error code returned by the driver info get function.
  */
-__rte_experimental
 int
 rte_regexdev_info_get(uint8_t dev_id, struct rte_regexdev_info *dev_info);
 
@@ -723,9 +707,6 @@ struct rte_regexdev_config {
 };
 
 /**
- * @warning
- * @b EXPERIMENTAL: this API may change without prior notice.
- *
  * Configure a RegEx device.
  *
  * This function must be invoked first before any other function in the
@@ -743,7 +724,6 @@ struct rte_regexdev_config {
  * @return
  *   - 0: Success, device configured. Otherwise negative errno is returned.
  */
-__rte_experimental
 int
 rte_regexdev_configure(uint8_t dev_id, const struct rte_regexdev_config *cfg);
 
@@ -782,9 +762,6 @@ struct rte_regexdev_qp_conf {
 };
 
 /**
- * @warning
- * @b EXPERIMENTAL: this API may change without prior notice.
- *
  * Allocate and set up a RegEx queue pair for a RegEx device.
  *
  * @param dev_id
@@ -799,15 +776,11 @@ struct rte_regexdev_qp_conf {
  * @return
  *   0 on success. Otherwise negative errno is returned.
  */
-__rte_experimental
 int
 rte_regexdev_queue_pair_setup(uint8_t dev_id, uint16_t queue_pair_id,
 			      const struct rte_regexdev_qp_conf *qp_conf);
 
 /**
- * @warning
- * @b EXPERIMENTAL: this API may change without prior notice.
- *
  * Start a RegEx device.
  *
  * The device start step is the last one and consists of setting the RegEx
@@ -822,14 +795,10 @@ rte_regexdev_queue_pair_setup(uint8_t dev_id, uint16_t queue_pair_id,
  * @return
  *   0 on success. Otherwise negative errno is returned.
  */
-__rte_experimental
 int
 rte_regexdev_start(uint8_t dev_id);
 
 /**
- * @warning
- * @b EXPERIMENTAL: this API may change without prior notice.
- *
  * Stop a RegEx device.
  *
  * Stop a RegEx device. The device can be restarted with a call to
@@ -845,14 +814,10 @@ rte_regexdev_start(uint8_t dev_id);
  * @return
  *   0 on success. Otherwise negative errno is returned.
  */
-__rte_experimental
 int
 rte_regexdev_stop(uint8_t dev_id);
 
 /**
- * @warning
- * @b EXPERIMENTAL: this API may change without prior notice.
- *
  * Close a RegEx device. The device cannot be restarted!
  *
  * @param dev_id
@@ -861,7 +826,6 @@ rte_regexdev_stop(uint8_t dev_id);
  * @return
  *   0 on success. Otherwise negative errno is returned.
  */
-__rte_experimental
 int
 rte_regexdev_close(uint8_t dev_id);
 
@@ -897,9 +861,6 @@ enum rte_regexdev_attr_id {
 };
 
 /**
- * @warning
- * @b EXPERIMENTAL: this API may change without prior notice.
- *
  * Get an attribute from a RegEx device.
  *
  * @param dev_id
@@ -915,15 +876,11 @@ enum rte_regexdev_attr_id {
  *   - -EINVAL: Invalid device or  *attr_id* provided, or *attr_value* is NULL.
  *   - -ENOTSUP: if the device doesn't support specific *attr_id*.
  */
-__rte_experimental
 int
 rte_regexdev_attr_get(uint8_t dev_id, enum rte_regexdev_attr_id attr_id,
 		      void *attr_value);
 
 /**
- * @warning
- * @b EXPERIMENTAL: this API may change without prior notice.
- *
  * Set an attribute to a RegEx device.
  *
  * @param dev_id
@@ -939,7 +896,6 @@ rte_regexdev_attr_get(uint8_t dev_id, enum rte_regexdev_attr_id attr_id,
  *   - -EINVAL: Invalid device or  *attr_id* provided, or *attr_value* is NULL.
  *   - -ENOTSUP: if the device doesn't support specific *attr_id*.
  */
-__rte_experimental
 int
 rte_regexdev_attr_set(uint8_t dev_id, enum rte_regexdev_attr_id attr_id,
 		      const void *attr_value);
@@ -975,9 +931,6 @@ struct rte_regexdev_rule {
 };
 
 /**
- * @warning
- * @b EXPERIMENTAL: this API may change without prior notice.
- *
  * Update the local rule set.
  * This functions only modify the rule set in memory.
  * In order for the changes to take effect, the function
@@ -1008,16 +961,12 @@ struct rte_regexdev_rule {
  * @see rte_regexdev_rule_db_import(), rte_regexdev_rule_db_export(),
  *   rte_regexdev_rule_db_compile_activate()
  */
-__rte_experimental
 int
 rte_regexdev_rule_db_update(uint8_t dev_id,
 			    const struct rte_regexdev_rule *rules,
 			    uint32_t nb_rules);
 
 /**
- * @warning
- * @b EXPERIMENTAL: this API may change without prior notice.
- *
  * Compile local rule set and burn the complied result to the
  * RegEx device.
  *
@@ -1030,14 +979,10 @@ rte_regexdev_rule_db_update(uint8_t dev_id,
  * @see rte_regexdev_rule_db_import(), rte_regexdev_rule_db_export(),
  *   rte_regexdev_rule_db_update()
  */
-__rte_experimental
 int
 rte_regexdev_rule_db_compile_activate(uint8_t dev_id);
 
 /**
- * @warning
- * @b EXPERIMENTAL: this API may change without prior notice.
- *
  * Import a prebuilt rule database from a buffer to a RegEx device.
  *
  * @param dev_id
@@ -1055,15 +1000,11 @@ rte_regexdev_rule_db_compile_activate(uint8_t dev_id);
  *
  * @see rte_regexdev_rule_db_update(), rte_regexdev_rule_db_export()
  */
-__rte_experimental
 int
 rte_regexdev_rule_db_import(uint8_t dev_id, const char *rule_db,
 			    uint32_t rule_db_len);
 
 /**
- * @warning
- * @b EXPERIMENTAL: this API may change without prior notice.
- *
  * Export the prebuilt rule database from a RegEx device to the buffer.
  *
  * @param dev_id
@@ -1080,7 +1021,6 @@ rte_regexdev_rule_db_import(uint8_t dev_id, const char *rule_db,
  *
  * @see rte_regexdev_rule_db_update(), rte_regexdev_rule_db_import()
  */
-__rte_experimental
 int
 rte_regexdev_rule_db_export(uint8_t dev_id, char *rule_db);
 
@@ -1102,9 +1042,6 @@ struct rte_regexdev_xstats_map {
 };
 
 /**
- * @warning
- * @b EXPERIMENTAL: this API may change without prior notice.
- *
  * Retrieve names of extended statistics of a regex device.
  *
  * @param dev_id
@@ -1120,15 +1057,11 @@ struct rte_regexdev_xstats_map {
  *      -ENODEV for invalid *dev_id*
  *      -ENOTSUP if the device doesn't support this function.
  */
-__rte_experimental
 int
 rte_regexdev_xstats_names_get(uint8_t dev_id,
 			      struct rte_regexdev_xstats_map *xstats_map);
 
 /**
- * @warning
- * @b EXPERIMENTAL: this API may change without prior notice.
- *
  * Retrieve extended statistics of an regex device.
  *
  * @param dev_id
@@ -1147,15 +1080,11 @@ rte_regexdev_xstats_names_get(uint8_t dev_id,
  *      -ENODEV for invalid *dev_id*
  *      -ENOTSUP if the device doesn't support this function.
  */
-__rte_experimental
 int
 rte_regexdev_xstats_get(uint8_t dev_id, const uint16_t *ids,
 			uint64_t *values, uint16_t nb_values);
 
 /**
- * @warning
- * @b EXPERIMENTAL: this API may change without prior notice.
- *
  * Retrieve the value of a single stat by requesting it by name.
  *
  * @param dev_id
@@ -1174,15 +1103,11 @@ rte_regexdev_xstats_get(uint8_t dev_id, const uint16_t *ids,
  *   - -EINVAL: invalid parameters
  *   - -ENOTSUP: if not supported.
  */
-__rte_experimental
 int
 rte_regexdev_xstats_by_name_get(uint8_t dev_id, const char *name,
 				uint16_t *id, uint64_t *value);
 
 /**
- * @warning
- * @b EXPERIMENTAL: this API may change without prior notice.
- *
  * Reset the values of the xstats of the selected component in the device.
  *
  * @param dev_id
@@ -1198,15 +1123,11 @@ rte_regexdev_xstats_by_name_get(uint8_t dev_id, const char *name,
  *   - -EINVAL: invalid parameters.
  *   - -ENOTSUP: if not supported.
  */
-__rte_experimental
 int
 rte_regexdev_xstats_reset(uint8_t dev_id, const uint16_t *ids,
 			  uint16_t nb_ids);
 
 /**
- * @warning
- * @b EXPERIMENTAL: this API may change without prior notice.
- *
  * Trigger the RegEx device self test.
  *
  * @param dev_id
@@ -1216,14 +1137,10 @@ rte_regexdev_xstats_reset(uint8_t dev_id, const uint16_t *ids,
  *   - -ENOTSUP if the device doesn't support selftest.
  *   - other values < 0 on failure.
  */
-__rte_experimental
 int
 rte_regexdev_selftest(uint8_t dev_id);
 
 /**
- * @warning
- * @b EXPERIMENTAL: this API may change without prior notice.
- *
  * Dump internal information about *dev_id* to the FILE* provided in *f*.
  *
  * @param dev_id
@@ -1234,7 +1151,6 @@ rte_regexdev_selftest(uint8_t dev_id);
  * @return
  *   0 on success, negative errno on failure.
  */
-__rte_experimental
 int
 rte_regexdev_dump(uint8_t dev_id, FILE *f);
 
@@ -1428,9 +1344,6 @@ struct rte_regex_ops {
 #include "rte_regexdev_core.h"
 
 /**
- * @warning
- * @b EXPERIMENTAL: this API may change without prior notice.
- *
  * Enqueue a burst of scan request on a RegEx device.
  *
  * The rte_regexdev_enqueue_burst() function is invoked to place
@@ -1464,7 +1377,6 @@ struct rte_regex_ops {
  *   remaining ops at the end of *ops* are not consumed and the caller has
  *   to take care of them.
  */
-__rte_experimental
 static inline uint16_t
 rte_regexdev_enqueue_burst(uint8_t dev_id, uint16_t qp_id,
 			   struct rte_regex_ops **ops, uint16_t nb_ops)
@@ -1483,9 +1395,6 @@ rte_regexdev_enqueue_burst(uint8_t dev_id, uint16_t qp_id,
 }
 
 /**
- * @warning
- * @b EXPERIMENTAL: this API may change without prior notice.
- *
  * Dequeue a burst of scan response from a queue on the RegEx device.
  * The dequeued operation are stored in *rte_regexdev_op* structures
  * whose pointers are supplied in the *ops* array.
@@ -1524,7 +1433,6 @@ rte_regexdev_enqueue_burst(uint8_t dev_id, uint16_t qp_id,
  *   ops at the end of *ops* are not consumed and the caller has to take care
  *   of them.
  */
-__rte_experimental
 static inline uint16_t
 rte_regexdev_dequeue_burst(uint8_t dev_id, uint16_t qp_id,
 			   struct rte_regex_ops **ops, uint16_t nb_ops)
diff --git a/lib/regexdev/version.map b/lib/regexdev/version.map
index 3c6e9fffa1f5..914bd19dfd94 100644
--- a/lib/regexdev/version.map
+++ b/lib/regexdev/version.map
@@ -1,4 +1,4 @@
-EXPERIMENTAL {
+DPDK_24 {
 	global:
 
 	rte_regex_devices;
-- 
2.39.2


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

* [PATCH v5 24/26] node: remove some of the experimental tags
  2023-10-20 20:57 ` [PATCH v5 00/26] Promote many experimental API's to stable Stephen Hemminger
                     ` (22 preceding siblings ...)
  2023-10-20 20:57   ` [PATCH v5 23/26] regexdev: remove experimental tag Stephen Hemminger
@ 2023-10-20 20:57   ` 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
  25 siblings, 0 replies; 219+ messages in thread
From: Stephen Hemminger @ 2023-10-20 20:57 UTC (permalink / raw)
  To: dev
  Cc: Stephen Hemminger, Thomas Monjalon, Nithin Dabilpuram, Pavan Nikhilesh

The node library has been around long enough that experimental
tag should be removed.  The IPv6 support was added in 23.03
but that is still enough time that it can be marked stable.

The logtype variable should have been marked internal
since it is not intended to be used outside of library.

Signed-off-by: Stephen Hemminger <stephen@networkplumber.org>
---
 MAINTAINERS                 |  2 +-
 lib/node/rte_node_eth_api.h |  1 -
 lib/node/rte_node_ip4_api.h |  2 --
 lib/node/version.map        | 16 ++++++++++++----
 4 files changed, 13 insertions(+), 8 deletions(-)

diff --git a/MAINTAINERS b/MAINTAINERS
index 789507ddccb7..f6ea602da41f 100644
--- a/MAINTAINERS
+++ b/MAINTAINERS
@@ -1735,7 +1735,7 @@ F: app/test/test_graph*
 F: examples/l3fwd-graph/
 F: doc/guides/sample_app_ug/l3_forward_graph.rst
 
-Nodes - EXPERIMENTAL
+Nodes
 M: Nithin Dabilpuram <ndabilpuram@marvell.com>
 M: Pavan Nikhilesh <pbhagavatula@marvell.com>
 F: lib/node/
diff --git a/lib/node/rte_node_eth_api.h b/lib/node/rte_node_eth_api.h
index 40b2021f01f9..eaae50772dbe 100644
--- a/lib/node/rte_node_eth_api.h
+++ b/lib/node/rte_node_eth_api.h
@@ -55,7 +55,6 @@ struct rte_node_ethdev_config {
  * @return
  *   0 on successful initialization, negative otherwise.
  */
-__rte_experimental
 int rte_node_eth_config(struct rte_node_ethdev_config *cfg,
 			uint16_t cnt, uint16_t nb_graphs);
 #ifdef __cplusplus
diff --git a/lib/node/rte_node_ip4_api.h b/lib/node/rte_node_ip4_api.h
index a84dbb3b5499..24f8ec843a27 100644
--- a/lib/node/rte_node_ip4_api.h
+++ b/lib/node/rte_node_ip4_api.h
@@ -82,7 +82,6 @@ struct rte_node_ip4_reassembly_cfg {
  * @return
  *   0 on success, negative otherwise.
  */
-__rte_experimental
 int rte_node_ip4_route_add(uint32_t ip, uint8_t depth, uint16_t next_hop,
 			   enum rte_node_ip4_lookup_next next_node);
 
@@ -101,7 +100,6 @@ int rte_node_ip4_route_add(uint32_t ip, uint8_t depth, uint16_t next_hop,
  * @return
  *   0 on success, negative otherwise.
  */
-__rte_experimental
 int rte_node_ip4_rewrite_add(uint16_t next_hop, uint8_t *rewrite_data,
 			     uint8_t rewrite_len, uint16_t dst_port);
 
diff --git a/lib/node/version.map b/lib/node/version.map
index 3855569228e3..59c72ca76fd3 100644
--- a/lib/node/version.map
+++ b/lib/node/version.map
@@ -1,11 +1,15 @@
-EXPERIMENTAL {
+DPDK_24 {
 	global:
 
-	# added in 20.05
 	rte_node_eth_config;
 	rte_node_ip4_route_add;
 	rte_node_ip4_rewrite_add;
-	rte_node_logtype;
+
+	local: *;
+};
+
+EXPERIMENTAL {
+	global:
 
 	# added in 23.07
 	rte_node_ip6_rewrite_add;
@@ -15,6 +19,10 @@ EXPERIMENTAL {
 	rte_node_ip4_reassembly_configure;
 	rte_node_udp4_dst_port_add;
 	rte_node_udp4_usr_node_add;
+};
 
-	local: *;
+INTERNAL {
+	global:
+
+	rte_node_logtype;
 };
-- 
2.39.2


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

* [PATCH v5 25/26] eventdev: make many API's stable
  2023-10-20 20:57 ` [PATCH v5 00/26] Promote many experimental API's to stable Stephen Hemminger
                     ` (23 preceding siblings ...)
  2023-10-20 20:57   ` [PATCH v5 24/26] node: remove some of the experimental tags Stephen Hemminger
@ 2023-10-20 20:57   ` Stephen Hemminger
  2023-10-20 20:57   ` [PATCH v5 26/26] cryptodev: mark older " Stephen Hemminger
  25 siblings, 0 replies; 219+ messages in thread
From: Stephen Hemminger @ 2023-10-20 20:57 UTC (permalink / raw)
  To: dev
  Cc: Stephen Hemminger, Abhinandan Gujjar, Jerin Jacob,
	Naga Harish K S V, Erik Gabriel Carrillo

All API's in eventdev up to 22.11 release should be made stable.

Signed-off-by: Stephen Hemminger <stephen@networkplumber.org>
---
 lib/eventdev/rte_event_crypto_adapter.h |  4 ---
 lib/eventdev/rte_event_eth_rx_adapter.h |  6 -----
 lib/eventdev/rte_event_eth_tx_adapter.h |  3 ---
 lib/eventdev/rte_event_timer_adapter.h  |  3 ---
 lib/eventdev/rte_eventdev.h             |  4 ---
 lib/eventdev/version.map                | 34 ++++++++++---------------
 6 files changed, 13 insertions(+), 41 deletions(-)

diff --git a/lib/eventdev/rte_event_crypto_adapter.h b/lib/eventdev/rte_event_crypto_adapter.h
index 4e1f1bb3a8e6..e07f159b7760 100644
--- a/lib/eventdev/rte_event_crypto_adapter.h
+++ b/lib/eventdev/rte_event_crypto_adapter.h
@@ -694,9 +694,6 @@ rte_event_crypto_adapter_runtime_params_get(uint8_t id,
 		struct rte_event_crypto_adapter_runtime_params *params);
 
 /**
- * @warning
- * @b EXPERIMENTAL: this API may change without prior notice
- *
  * Retrieve vector limits for a given event dev and crypto dev pair.
  * @see rte_event_crypto_adapter_vector_limits
  *
@@ -712,7 +709,6 @@ rte_event_crypto_adapter_runtime_params_get(uint8_t id,
  *  - 0: Success.
  *  - <0: Error code on failure.
  */
-__rte_experimental
 int rte_event_crypto_adapter_vector_limits_get(
 	uint8_t dev_id, uint16_t cdev_id,
 	struct rte_event_crypto_adapter_vector_limits *limits);
diff --git a/lib/eventdev/rte_event_eth_rx_adapter.h b/lib/eventdev/rte_event_eth_rx_adapter.h
index 842581e87e02..cf42c69b0d71 100644
--- a/lib/eventdev/rte_event_eth_rx_adapter.h
+++ b/lib/eventdev/rte_event_eth_rx_adapter.h
@@ -466,7 +466,6 @@ int rte_event_eth_rx_adapter_create(uint8_t id, uint8_t dev_id,
  *   - 0: Success
  *   - <0: Error code on failure
  */
-__rte_experimental
 int rte_event_eth_rx_adapter_create_with_params(uint8_t id, uint8_t dev_id,
 			struct rte_event_port_conf *port_config,
 			struct rte_event_eth_rx_adapter_params *rxa_params);
@@ -711,7 +710,6 @@ int rte_event_eth_rx_adapter_vector_limits_get(
  *  - 0: Success, Receive queue added correctly.
  *  - <0: Error code on failure.
  */
-__rte_experimental
 int rte_event_eth_rx_adapter_queue_conf_get(uint8_t id,
 			uint16_t eth_dev_id,
 			uint16_t rx_queue_id,
@@ -736,7 +734,6 @@ int rte_event_eth_rx_adapter_queue_conf_get(uint8_t id,
  *  - 0: Success, queue buffer stats retrieved.
  *  - <0: Error code on failure.
  */
-__rte_experimental
 int
 rte_event_eth_rx_adapter_queue_stats_get(uint8_t id,
 		uint16_t eth_dev_id,
@@ -759,7 +756,6 @@ rte_event_eth_rx_adapter_queue_stats_get(uint8_t id,
  *  - 0: Success, queue buffer stats retrieved.
  *  - <0: Error code on failure.
  */
-__rte_experimental
 int
 rte_event_eth_rx_adapter_queue_stats_reset(uint8_t id,
 		uint16_t eth_dev_id,
@@ -780,7 +776,6 @@ rte_event_eth_rx_adapter_queue_stats_reset(uint8_t id,
  *  - <0: Error code on failure, if the adapter doesn't use a rte_service
  * function, this function returns -ESRCH.
  */
-__rte_experimental
 int
 rte_event_eth_rx_adapter_event_port_get(uint8_t id, uint8_t *event_port_id);
 
@@ -801,7 +796,6 @@ rte_event_eth_rx_adapter_event_port_get(uint8_t id, uint8_t *event_port_id);
  *  -  0: Success
  *  - <0: Error code on failure
  */
-__rte_experimental
 int
 rte_event_eth_rx_adapter_instance_get(uint16_t eth_dev_id,
 				      uint16_t rx_queue_id,
diff --git a/lib/eventdev/rte_event_eth_tx_adapter.h b/lib/eventdev/rte_event_eth_tx_adapter.h
index 1ea9a153164d..b38b3fce979b 100644
--- a/lib/eventdev/rte_event_eth_tx_adapter.h
+++ b/lib/eventdev/rte_event_eth_tx_adapter.h
@@ -492,7 +492,6 @@ rte_event_eth_tx_adapter_service_id_get(uint8_t id, uint32_t *service_id);
  *  -  0: Success
  *  - <0: Error code on failure
  */
-__rte_experimental
 int
 rte_event_eth_tx_adapter_instance_get(uint16_t eth_dev_id,
 				      uint16_t tx_queue_id,
@@ -527,7 +526,6 @@ rte_event_eth_tx_adapter_instance_get(uint16_t eth_dev_id,
  *   - 0: Success
  *   - <0: Error code on failure
  */
-__rte_experimental
 int
 rte_event_eth_tx_adapter_queue_start(uint16_t eth_dev_id, uint16_t tx_queue_id);
 
@@ -546,7 +544,6 @@ rte_event_eth_tx_adapter_queue_start(uint16_t eth_dev_id, uint16_t tx_queue_id);
  *   - 0: Success
  *   - <0: Error code on failure
  */
-__rte_experimental
 int
 rte_event_eth_tx_adapter_queue_stop(uint16_t eth_dev_id, uint16_t tx_queue_id);
 
diff --git a/lib/eventdev/rte_event_timer_adapter.h b/lib/eventdev/rte_event_timer_adapter.h
index fbdddf8f91bd..686cf80a675f 100644
--- a/lib/eventdev/rte_event_timer_adapter.h
+++ b/lib/eventdev/rte_event_timer_adapter.h
@@ -689,9 +689,6 @@ rte_event_timer_cancel_burst(const struct rte_event_timer_adapter *adapter,
 }
 
 /**
- * @warning
- * @b EXPERIMENTAL: this API may change without prior notice
- *
  * Get the number of ticks remaining until event timer expiry.
  *
  * @param adapter
diff --git a/lib/eventdev/rte_eventdev.h b/lib/eventdev/rte_eventdev.h
index 2ea98302b89f..ec9b02455d2e 100644
--- a/lib/eventdev/rte_eventdev.h
+++ b/lib/eventdev/rte_eventdev.h
@@ -785,7 +785,6 @@ rte_event_queue_attr_get(uint8_t dev_id, uint8_t queue_id, uint32_t attr_id,
  *   - -ENOTSUP: device does not support setting the event attribute.
  *   - <0: failed to set event queue attribute
  */
-__rte_experimental
 int
 rte_event_queue_attr_set(uint8_t dev_id, uint8_t queue_id, uint32_t attr_id,
 			 uint64_t attr_value);
@@ -948,7 +947,6 @@ typedef void (*rte_eventdev_port_flush_t)(uint8_t dev_id,
  * @param args
  *   Argument supplied to callback.
  */
-__rte_experimental
 void
 rte_event_port_quiesce(uint8_t dev_id, uint8_t port_id,
 		       rte_eventdev_port_flush_t release_cb, void *args);
@@ -2465,7 +2463,6 @@ rte_event_dequeue_burst(uint8_t dev_id, uint8_t port_id, struct rte_event ev[],
  *
  * @see RTE_EVENT_DEV_CAP_MAINTENANCE_FREE
  */
-__rte_experimental
 static inline int
 rte_event_maintain(uint8_t dev_id, uint8_t port_id, int op)
 {
@@ -2514,7 +2511,6 @@ rte_event_maintain(uint8_t dev_id, uint8_t port_id, int op)
  *  - 0 on success.
  *  - -EINVAL if *dev_id*,  *port_id*, or *profile_id* is invalid.
  */
-__rte_experimental
 static inline uint8_t
 rte_event_port_profile_switch(uint8_t dev_id, uint8_t port_id, uint8_t profile_id)
 {
diff --git a/lib/eventdev/version.map b/lib/eventdev/version.map
index 42a2f7206e4e..3d5c6c2b835c 100644
--- a/lib/eventdev/version.map
+++ b/lib/eventdev/version.map
@@ -5,6 +5,7 @@ DPDK_24 {
 	__rte_eventdev_trace_deq_burst;
 	__rte_eventdev_trace_enq_burst;
 	__rte_eventdev_trace_eth_tx_adapter_enqueue;
+	__rte_eventdev_trace_maintain;
 	__rte_eventdev_trace_timer_arm_burst;
 	__rte_eventdev_trace_timer_arm_tmo_tick_burst;
 	__rte_eventdev_trace_timer_cancel_burst;
@@ -20,6 +21,7 @@ DPDK_24 {
 	rte_event_crypto_adapter_stats_get;
 	rte_event_crypto_adapter_stats_reset;
 	rte_event_crypto_adapter_stop;
+	rte_event_crypto_adapter_vector_limits_get;
 	rte_event_dequeue_timeout_ticks;
 	rte_event_dev_attr_get;
 	rte_event_dev_close;
@@ -42,9 +44,15 @@ DPDK_24 {
 	rte_event_eth_rx_adapter_cb_register;
 	rte_event_eth_rx_adapter_create;
 	rte_event_eth_rx_adapter_create_ext;
+	rte_event_eth_rx_adapter_create_with_params;
+	rte_event_eth_rx_adapter_event_port_get;
 	rte_event_eth_rx_adapter_free;
+	rte_event_eth_rx_adapter_instance_get;
 	rte_event_eth_rx_adapter_queue_add;
+	rte_event_eth_rx_adapter_queue_conf_get;
 	rte_event_eth_rx_adapter_queue_del;
+	rte_event_eth_rx_adapter_queue_stats_get;
+	rte_event_eth_rx_adapter_queue_stats_reset;
 	rte_event_eth_rx_adapter_service_id_get;
 	rte_event_eth_rx_adapter_start;
 	rte_event_eth_rx_adapter_stats_get;
@@ -56,8 +64,11 @@ DPDK_24 {
 	rte_event_eth_tx_adapter_create_ext;
 	rte_event_eth_tx_adapter_event_port_get;
 	rte_event_eth_tx_adapter_free;
+	rte_event_eth_tx_adapter_instance_get;
 	rte_event_eth_tx_adapter_queue_add;
 	rte_event_eth_tx_adapter_queue_del;
+	rte_event_eth_tx_adapter_queue_start;
+	rte_event_eth_tx_adapter_queue_stop;
 	rte_event_eth_tx_adapter_service_id_get;
 	rte_event_eth_tx_adapter_start;
 	rte_event_eth_tx_adapter_stats_get;
@@ -68,10 +79,12 @@ DPDK_24 {
 	rte_event_port_default_conf_get;
 	rte_event_port_link;
 	rte_event_port_links_get;
+	rte_event_port_quiesce;
 	rte_event_port_setup;
 	rte_event_port_unlink;
 	rte_event_port_unlinks_in_progress;
 	rte_event_queue_attr_get;
+	rte_event_queue_attr_set;
 	rte_event_queue_default_conf_get;
 	rte_event_queue_setup;
 	rte_event_ring_create;
@@ -100,27 +113,6 @@ DPDK_24 {
 EXPERIMENTAL {
 	global:
 
-	# added in 21.11
-	__rte_eventdev_trace_maintain;
-	rte_event_eth_rx_adapter_create_with_params;
-	rte_event_eth_rx_adapter_queue_conf_get;
-	rte_event_eth_rx_adapter_queue_stats_get;
-	rte_event_eth_rx_adapter_queue_stats_reset;
-
-	# added in 22.03
-	rte_event_eth_rx_adapter_event_port_get;
-
-	# added in 22.07
-	rte_event_crypto_adapter_vector_limits_get;
-	rte_event_port_quiesce;
-	rte_event_queue_attr_set;
-
-	# added in 22.11
-	rte_event_eth_rx_adapter_instance_get;
-	rte_event_eth_tx_adapter_instance_get;
-	rte_event_eth_tx_adapter_queue_start;
-	rte_event_eth_tx_adapter_queue_stop;
-
 	# added in 23.03
 	rte_event_crypto_adapter_runtime_params_get;
 	rte_event_crypto_adapter_runtime_params_init;
-- 
2.39.2


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

* [PATCH v5 26/26] cryptodev: mark older API's stable
  2023-10-20 20:57 ` [PATCH v5 00/26] Promote many experimental API's to stable Stephen Hemminger
                     ` (24 preceding siblings ...)
  2023-10-20 20:57   ` [PATCH v5 25/26] eventdev: make many API's stable Stephen Hemminger
@ 2023-10-20 20:57   ` Stephen Hemminger
  25 siblings, 0 replies; 219+ messages in thread
From: Stephen Hemminger @ 2023-10-20 20:57 UTC (permalink / raw)
  To: dev; +Cc: Stephen Hemminger, Akhil Goyal, Fan Zhang

All the cryptodev API's from 2022 backwards shoudl be stable
at this point.

Signed-off-by: Stephen Hemminger <stephen@networkplumber.org>
---
 lib/cryptodev/rte_cryptodev.h | 31 --------------
 lib/cryptodev/version.map     | 77 +++++++++++++++--------------------
 2 files changed, 32 insertions(+), 76 deletions(-)

diff --git a/lib/cryptodev/rte_cryptodev.h b/lib/cryptodev/rte_cryptodev.h
index be0698ce9fc6..aa5b5529f44c 100644
--- a/lib/cryptodev/rte_cryptodev.h
+++ b/lib/cryptodev/rte_cryptodev.h
@@ -257,7 +257,6 @@ rte_cryptodev_sym_capability_get(uint8_t dev_id,
  *   - Return description of the asymmetric crypto capability if exist.
  *   - Return NULL if the capability not exist.
  */
-__rte_experimental
 const struct rte_cryptodev_asymmetric_xform_capability *
 rte_cryptodev_asym_capability_get(uint8_t dev_id,
 		const struct rte_cryptodev_asym_capability_idx *idx);
@@ -327,7 +326,6 @@ rte_cryptodev_sym_capability_check_aead(
  *   - Return 1 if the op type is supported
  *   - Return 0 if unsupported
  */
-__rte_experimental
 int
 rte_cryptodev_asym_xform_capability_check_optype(
 	const struct rte_cryptodev_asymmetric_xform_capability *capability,
@@ -343,7 +341,6 @@ rte_cryptodev_asym_xform_capability_check_optype(
  *   - Return 0 if the parameters are in range of the capability.
  *   - Return -1 if the parameters are out of range of the capability.
  */
-__rte_experimental
 int
 rte_cryptodev_asym_xform_capability_check_modlen(
 	const struct rte_cryptodev_asymmetric_xform_capability *capability,
@@ -359,7 +356,6 @@ rte_cryptodev_asym_xform_capability_check_modlen(
  *   - Return true if the hash algorithm is supported.
  *   - Return false if the hash algorithm is not supported.
  */
-__rte_experimental
 bool
 rte_cryptodev_asym_xform_capability_check_hash(
 	const struct rte_cryptodev_asymmetric_xform_capability *capability,
@@ -421,7 +417,6 @@ rte_cryptodev_get_aead_algo_enum(enum rte_crypto_aead_algorithm *algo_enum,
  * - Return -1 if string is not valid
  * - Return 0 if the string is valid
  */
-__rte_experimental
 int
 rte_cryptodev_asym_get_xform_enum(enum rte_crypto_asym_xform_type *xform_enum,
 		const char *xform_string);
@@ -860,7 +855,6 @@ rte_cryptodev_queue_pair_setup(uint8_t dev_id, uint16_t queue_pair_id,
  *	 - 1: qp was configured
  *	 - -EINVAL: device was not configured
  */
-__rte_experimental
 int
 rte_cryptodev_get_qp_status(uint8_t dev_id, uint16_t queue_pair_id);
 
@@ -1039,7 +1033,6 @@ rte_cryptodev_get_sec_ctx(uint8_t dev_id);
  *  - On success returns the created session mempool pointer
  *  - On failure returns NULL
  */
-__rte_experimental
 struct rte_mempool *
 rte_cryptodev_sym_session_pool_create(const char *name, uint32_t nb_elts,
 	uint32_t elt_size, uint32_t cache_size, uint16_t priv_size,
@@ -1066,7 +1059,6 @@ rte_cryptodev_sym_session_pool_create(const char *name, uint32_t nb_elts,
  *  - On success return mempool
  *  - On failure returns NULL
  */
-__rte_experimental
 struct rte_mempool *
 rte_cryptodev_asym_session_pool_create(const char *name, uint32_t nb_elts,
 	uint32_t cache_size, uint16_t user_data_size, int socket_id);
@@ -1108,7 +1100,6 @@ rte_cryptodev_sym_session_create(uint8_t dev_id,
  *  - -ENOMEM on memory error for session allocation.
  *  - -ENOTSUP if device doesn't support session configuration.
  */
-__rte_experimental
 int
 rte_cryptodev_asym_session_create(uint8_t dev_id,
 		struct rte_crypto_asym_xform *xforms, struct rte_mempool *mp,
@@ -1141,7 +1132,6 @@ rte_cryptodev_sym_session_free(uint8_t dev_id,
  *  - 0 if successful.
  *  - -EINVAL if device is invalid or session is NULL.
  */
-__rte_experimental
 int
 rte_cryptodev_asym_session_free(uint8_t dev_id, void *sess);
 
@@ -1151,7 +1141,6 @@ rte_cryptodev_asym_session_free(uint8_t dev_id, void *sess);
  * @return
  *   Size of the asymmetric header session.
  */
-__rte_experimental
 unsigned int
 rte_cryptodev_asym_get_header_session_size(void);
 
@@ -1179,7 +1168,6 @@ rte_cryptodev_sym_get_private_session_size(uint8_t dev_id);
  *   - Size of the asymmetric private data, if successful
  *   - 0 if device is invalid or does not have private session
  */
-__rte_experimental
 unsigned int
 rte_cryptodev_asym_get_private_session_size(uint8_t dev_id);
 
@@ -1226,7 +1214,6 @@ const char *rte_cryptodev_driver_name_get(uint8_t driver_id);
  *  - On success, zero.
  *  - On failure, a negative value.
  */
-__rte_experimental
 int
 rte_cryptodev_sym_session_set_user_data(void *sess,
 					void *data,
@@ -1263,7 +1250,6 @@ rte_cryptodev_sym_session_opaque_data_set(void *sess, uint64_t opaque)
  *  - On success return pointer to user data.
  *  - On failure returns NULL.
  */
-__rte_experimental
 void *
 rte_cryptodev_sym_session_get_user_data(void *sess);
 
@@ -1280,7 +1266,6 @@ rte_cryptodev_sym_session_get_user_data(void *sess);
  *  - -EINVAL if the session pointer is invalid.
  *  - -ENOMEM if the available user data size is smaller than the size parameter.
  */
-__rte_experimental
 int
 rte_cryptodev_asym_session_set_user_data(void *sess, void *data, uint16_t size);
 
@@ -1294,7 +1279,6 @@ rte_cryptodev_asym_session_set_user_data(void *sess, void *data, uint16_t size);
  *  - On success return pointer to user data.
  *  - On failure returns NULL.
  */
-__rte_experimental
 void *
 rte_cryptodev_asym_session_get_user_data(void *sess);
 
@@ -1310,7 +1294,6 @@ rte_cryptodev_asym_session_get_user_data(void *sess);
  * @return
  *  - Returns number of successfully processed packets.
  */
-__rte_experimental
 uint32_t
 rte_cryptodev_sym_cpu_crypto_process(uint8_t dev_id,
 	void *sess, union rte_crypto_sym_ofs ofs,
@@ -1325,7 +1308,6 @@ rte_cryptodev_sym_cpu_crypto_process(uint8_t dev_id,
  *   - If the device supports raw data-path APIs, return the context size.
  *   - If the device does not support the APIs, return -1.
  */
-__rte_experimental
 int
 rte_cryptodev_get_raw_dp_ctx_size(uint8_t dev_id);
 
@@ -1344,7 +1326,6 @@ rte_cryptodev_get_raw_dp_ctx_size(uint8_t dev_id);
  *  - On success, zero.
  *  - On failure, a negative value.
  */
-__rte_experimental
 int
 rte_cryptodev_session_event_mdata_set(uint8_t dev_id, void *sess,
 	enum rte_crypto_op_type op_type,
@@ -1570,7 +1551,6 @@ struct rte_crypto_raw_dp_ctx {
  *     - -ENOTSUP if crypto device does not support raw DP operations with the
  *        provided session.
  */
-__rte_experimental
 int
 rte_cryptodev_configure_raw_dp_ctx(uint8_t dev_id, uint16_t qp_id,
 	struct rte_crypto_raw_dp_ctx *ctx,
@@ -1602,7 +1582,6 @@ rte_cryptodev_configure_raw_dp_ctx(uint8_t dev_id, uint16_t qp_id,
  *     cached into the queue but not enqueued yet, depends on the
  *     "enqueue_status" value.
  */
-__rte_experimental
 uint32_t
 rte_cryptodev_raw_enqueue_burst(struct rte_crypto_raw_dp_ctx *ctx,
 	struct rte_crypto_sym_vec *vec, union rte_crypto_sym_ofs ofs,
@@ -1652,7 +1631,6 @@ rte_cryptodev_raw_enqueue(struct rte_crypto_raw_dp_ctx *ctx,
  *   - On success return 0.
  *   - On failure return negative integer.
  */
-__rte_experimental
 int
 rte_cryptodev_raw_enqueue_done(struct rte_crypto_raw_dp_ctx *ctx,
 		uint32_t n);
@@ -1698,7 +1676,6 @@ rte_cryptodev_raw_enqueue_done(struct rte_crypto_raw_dp_ctx *ctx,
  *   - The number of operations dequeued or completed but not freed from the
  *     queue, depends on "dequeue_status" value.
  */
-__rte_experimental
 uint32_t
 rte_cryptodev_raw_dequeue_burst(struct rte_crypto_raw_dp_ctx *ctx,
 	rte_cryptodev_raw_get_dequeue_count_t get_dequeue_count,
@@ -1748,7 +1725,6 @@ rte_cryptodev_raw_dequeue(struct rte_crypto_raw_dp_ctx *ctx,
  *   - On success return 0.
  *   - On failure return negative integer.
  */
-__rte_experimental
 int
 rte_cryptodev_raw_dequeue_done(struct rte_crypto_raw_dp_ctx *ctx,
 		uint32_t n);
@@ -1788,8 +1764,6 @@ rte_cryptodev_raw_dequeue_done(struct rte_crypto_raw_dp_ctx *ctx,
  *  - On success, a pointer value which can later be used to remove the
  *    callback.
  */
-
-__rte_experimental
 struct rte_cryptodev_cb *
 rte_cryptodev_add_enq_callback(uint8_t dev_id,
 			       uint16_t qp_id,
@@ -1817,8 +1791,6 @@ rte_cryptodev_add_enq_callback(uint8_t dev_id,
  *   - <0: The dev_id or the qp_id is out of range, or the callback
  *         is NULL or not found for the crypto device queue pair.
  */
-
-__rte_experimental
 int rte_cryptodev_remove_enq_callback(uint8_t dev_id,
 				      uint16_t qp_id,
 				      struct rte_cryptodev_cb *cb);
@@ -1857,8 +1829,6 @@ int rte_cryptodev_remove_enq_callback(uint8_t dev_id,
  *   - On success, a pointer value which can later be used to remove the
  *     callback.
  */
-
-__rte_experimental
 struct rte_cryptodev_cb *
 rte_cryptodev_add_deq_callback(uint8_t dev_id,
 			       uint16_t qp_id,
@@ -1886,7 +1856,6 @@ rte_cryptodev_add_deq_callback(uint8_t dev_id,
  *   - <0: The dev_id or the qp_id is out of range, or the callback
  *         is NULL or not found for the crypto device queue pair.
  */
-__rte_experimental
 int rte_cryptodev_remove_deq_callback(uint8_t dev_id,
 				      uint16_t qp_id,
 				      struct rte_cryptodev_cb *cb);
diff --git a/lib/cryptodev/version.map b/lib/cryptodev/version.map
index 208919b81950..c39199be54f5 100644
--- a/lib/cryptodev/version.map
+++ b/lib/cryptodev/version.map
@@ -1,15 +1,34 @@
 DPDK_24 {
 	global:
 
+	__rte_cryptodev_trace_dequeue_burst;
+	__rte_cryptodev_trace_enqueue_burst;
 	rte_crypto_aead_operation_strings;
+	rte_crypto_asym_ke_strings;
+	rte_crypto_asym_op_strings;
 	rte_crypto_auth_operation_strings;
 	rte_crypto_cipher_operation_strings;
 	rte_crypto_fp_ops;
 	rte_crypto_op_pool_create;
+	rte_cryptodev_add_deq_callback;
+	rte_cryptodev_add_enq_callback;
+	rte_cryptodev_asym_capability_get;
+	rte_cryptodev_asym_get_header_session_size;
+	rte_cryptodev_asym_get_private_session_size;
+	rte_cryptodev_asym_get_xform_enum;
+	rte_cryptodev_asym_session_create;
+	rte_cryptodev_asym_session_free;
+	rte_cryptodev_asym_session_get_user_data;
+	rte_cryptodev_asym_session_pool_create;
+	rte_cryptodev_asym_session_set_user_data;
+	rte_cryptodev_asym_xform_capability_check_hash;
+	rte_cryptodev_asym_xform_capability_check_modlen;
+	rte_cryptodev_asym_xform_capability_check_optype;
 	rte_cryptodev_callback_register;
 	rte_cryptodev_callback_unregister;
 	rte_cryptodev_close;
 	rte_cryptodev_configure;
+	rte_cryptodev_configure_raw_dp_ctx;
 	rte_cryptodev_count;
 	rte_cryptodev_device_count_by_driver;
 	rte_cryptodev_devices_get;
@@ -20,12 +39,21 @@ DPDK_24 {
 	rte_cryptodev_get_cipher_algo_enum;
 	rte_cryptodev_get_dev_id;
 	rte_cryptodev_get_feature_name;
+	rte_cryptodev_get_qp_status;
+	rte_cryptodev_get_raw_dp_ctx_size;
 	rte_cryptodev_get_sec_ctx;
 	rte_cryptodev_info_get;
 	rte_cryptodev_is_valid_dev;
 	rte_cryptodev_name_get;
 	rte_cryptodev_queue_pair_count;
 	rte_cryptodev_queue_pair_setup;
+	rte_cryptodev_raw_dequeue_burst;
+	rte_cryptodev_raw_dequeue_done;
+	rte_cryptodev_raw_enqueue_burst;
+	rte_cryptodev_raw_enqueue_done;
+	rte_cryptodev_remove_deq_callback;
+	rte_cryptodev_remove_enq_callback;
+	rte_cryptodev_session_event_mdata_set;
 	rte_cryptodev_socket_id;
 	rte_cryptodev_start;
 	rte_cryptodev_stats_get;
@@ -35,9 +63,13 @@ DPDK_24 {
 	rte_cryptodev_sym_capability_check_auth;
 	rte_cryptodev_sym_capability_check_cipher;
 	rte_cryptodev_sym_capability_get;
+	rte_cryptodev_sym_cpu_crypto_process;
 	rte_cryptodev_sym_get_private_session_size;
 	rte_cryptodev_sym_session_create;
 	rte_cryptodev_sym_session_free;
+	rte_cryptodev_sym_session_get_user_data;
+	rte_cryptodev_sym_session_pool_create;
+	rte_cryptodev_sym_session_set_user_data;
 
 	local: *;
 };
@@ -45,51 +77,6 @@ DPDK_24 {
 EXPERIMENTAL {
 	global:
 
-	rte_cryptodev_asym_capability_get;
-	rte_cryptodev_asym_get_header_session_size;
-	rte_cryptodev_asym_get_private_session_size;
-	rte_cryptodev_asym_get_xform_enum;
-	rte_cryptodev_asym_session_create;
-	rte_cryptodev_asym_session_free;
-	rte_cryptodev_asym_xform_capability_check_hash;
-	rte_cryptodev_asym_xform_capability_check_modlen;
-	rte_cryptodev_asym_xform_capability_check_optype;
-	rte_cryptodev_sym_cpu_crypto_process;
-	rte_cryptodev_sym_session_get_user_data;
-	rte_cryptodev_sym_session_pool_create;
-	rte_cryptodev_sym_session_set_user_data;
-	rte_crypto_asym_op_strings;
-
-	# added in 20.05
-	__rte_cryptodev_trace_dequeue_burst;
-	__rte_cryptodev_trace_enqueue_burst;
-
-	# added in 20.08
-	rte_cryptodev_get_qp_status;
-
-	# added in 20.11
-	rte_cryptodev_configure_raw_dp_ctx;
-	rte_cryptodev_get_raw_dp_ctx_size;
-	rte_cryptodev_raw_dequeue_burst;
-	rte_cryptodev_raw_dequeue_done;
-	rte_cryptodev_raw_enqueue_burst;
-	rte_cryptodev_raw_enqueue_done;
-
-	# added in 21.02
-	rte_cryptodev_add_deq_callback;
-	rte_cryptodev_add_enq_callback;
-	rte_cryptodev_remove_deq_callback;
-	rte_cryptodev_remove_enq_callback;
-
-	# added in 22.03
-	rte_cryptodev_asym_session_get_user_data;
-	rte_cryptodev_asym_session_pool_create;
-	rte_cryptodev_asym_session_set_user_data;
-
-	# added in 22.07
-	rte_cryptodev_session_event_mdata_set;
-	rte_crypto_asym_ke_strings;
-
 	# added in 23.03
 	rte_cryptodev_asym_get_xform_string;
 	rte_cryptodev_get_aead_algo_string;
-- 
2.39.2


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

* RE: [PATCH v5 23/26] regexdev: remove experimental tag
  2023-10-20 20:57   ` [PATCH v5 23/26] regexdev: remove experimental tag Stephen Hemminger
@ 2023-10-22 10:41     ` Ori Kam
  0 siblings, 0 replies; 219+ messages in thread
From: Ori Kam @ 2023-10-22 10:41 UTC (permalink / raw)
  To: Stephen Hemminger, dev

Hi Stephen,

As I replied to the previous patch,
Please don't remove the experimental tag from this lib, since
probably, Nvidia will remove support in the near future. The same with Marvel.
So this lib may be deprecated soon.

I don't think we want to notify everyone that those functions are here to stay,
and we don't want to force future HW provider with API that doesn't meet their need.

Thanks,
Ori

> -----Original Message-----
> From: Stephen Hemminger <stephen@networkplumber.org>
> Sent: Friday, October 20, 2023 11:58 PM
> To: dev@dpdk.org
> Cc: Stephen Hemminger <stephen@networkplumber.org>; Ori Kam
> <orika@nvidia.com>
> Subject: [PATCH v5 23/26] regexdev: remove experimental tag
> 
> This library was added in 22.11.
> Time to make it not experimental.
> 
> Signed-off-by: Stephen Hemminger <stephen@networkplumber.org>
> ---
>  lib/regexdev/rte_regexdev.h | 92 -------------------------------------
>  lib/regexdev/version.map    |  2 +-
>  2 files changed, 1 insertion(+), 93 deletions(-)
> 
> diff --git a/lib/regexdev/rte_regexdev.h b/lib/regexdev/rte_regexdev.h
> index d50af775b551..3ea1f0c061a0 100644
> --- a/lib/regexdev/rte_regexdev.h
> +++ b/lib/regexdev/rte_regexdev.h
> @@ -226,9 +226,6 @@ extern int rte_regexdev_logtype;
>  } while (0)
> 
>  /**
> - * @warning
> - * @b EXPERIMENTAL: this API may change without prior notice.
> - *
>   * Check if dev_id is ready.
>   *
>   * @param dev_id
> @@ -238,27 +235,19 @@ extern int rte_regexdev_logtype;
>   *   - 0 if device state is not in ready state.
>   *   - 1 if device state is ready state.
>   */
> -__rte_experimental
>  int rte_regexdev_is_valid_dev(uint16_t dev_id);
> 
>  /**
> - * @warning
> - * @b EXPERIMENTAL: this API may change without prior notice.
> - *
>   * Get the total number of RegEx devices that have been successfully
>   * initialised.
>   *
>   * @return
>   *   The total number of usable RegEx devices.
>   */
> -__rte_experimental
>  uint8_t
>  rte_regexdev_count(void);
> 
>  /**
> - * @warning
> - * @b EXPERIMENTAL: this API may change without prior notice.
> - *
>   * Get the device identifier for the named RegEx device.
>   *
>   * @param name
> @@ -268,7 +257,6 @@ rte_regexdev_count(void);
>   *   Returns RegEx device identifier on success.
>   *   - <0: Failure to find named RegEx device.
>   */
> -__rte_experimental
>  int
>  rte_regexdev_get_dev_id(const char *name);
> 
> @@ -628,9 +616,6 @@ struct rte_regexdev_info {
>  };
> 
>  /**
> - * @warning
> - * @b EXPERIMENTAL: this API may change without prior notice.
> - *
>   * Retrieve the contextual information of a RegEx device.
>   *
>   * @param dev_id
> @@ -644,7 +629,6 @@ struct rte_regexdev_info {
>   *   - 0: Success, driver updates the contextual information of the RegEx device
>   *   - <0: Error code returned by the driver info get function.
>   */
> -__rte_experimental
>  int
>  rte_regexdev_info_get(uint8_t dev_id, struct rte_regexdev_info *dev_info);
> 
> @@ -723,9 +707,6 @@ struct rte_regexdev_config {
>  };
> 
>  /**
> - * @warning
> - * @b EXPERIMENTAL: this API may change without prior notice.
> - *
>   * Configure a RegEx device.
>   *
>   * This function must be invoked first before any other function in the
> @@ -743,7 +724,6 @@ struct rte_regexdev_config {
>   * @return
>   *   - 0: Success, device configured. Otherwise negative errno is returned.
>   */
> -__rte_experimental
>  int
>  rte_regexdev_configure(uint8_t dev_id, const struct rte_regexdev_config *cfg);
> 
> @@ -782,9 +762,6 @@ struct rte_regexdev_qp_conf {
>  };
> 
>  /**
> - * @warning
> - * @b EXPERIMENTAL: this API may change without prior notice.
> - *
>   * Allocate and set up a RegEx queue pair for a RegEx device.
>   *
>   * @param dev_id
> @@ -799,15 +776,11 @@ struct rte_regexdev_qp_conf {
>   * @return
>   *   0 on success. Otherwise negative errno is returned.
>   */
> -__rte_experimental
>  int
>  rte_regexdev_queue_pair_setup(uint8_t dev_id, uint16_t queue_pair_id,
>  			      const struct rte_regexdev_qp_conf *qp_conf);
> 
>  /**
> - * @warning
> - * @b EXPERIMENTAL: this API may change without prior notice.
> - *
>   * Start a RegEx device.
>   *
>   * The device start step is the last one and consists of setting the RegEx
> @@ -822,14 +795,10 @@ rte_regexdev_queue_pair_setup(uint8_t dev_id,
> uint16_t queue_pair_id,
>   * @return
>   *   0 on success. Otherwise negative errno is returned.
>   */
> -__rte_experimental
>  int
>  rte_regexdev_start(uint8_t dev_id);
> 
>  /**
> - * @warning
> - * @b EXPERIMENTAL: this API may change without prior notice.
> - *
>   * Stop a RegEx device.
>   *
>   * Stop a RegEx device. The device can be restarted with a call to
> @@ -845,14 +814,10 @@ rte_regexdev_start(uint8_t dev_id);
>   * @return
>   *   0 on success. Otherwise negative errno is returned.
>   */
> -__rte_experimental
>  int
>  rte_regexdev_stop(uint8_t dev_id);
> 
>  /**
> - * @warning
> - * @b EXPERIMENTAL: this API may change without prior notice.
> - *
>   * Close a RegEx device. The device cannot be restarted!
>   *
>   * @param dev_id
> @@ -861,7 +826,6 @@ rte_regexdev_stop(uint8_t dev_id);
>   * @return
>   *   0 on success. Otherwise negative errno is returned.
>   */
> -__rte_experimental
>  int
>  rte_regexdev_close(uint8_t dev_id);
> 
> @@ -897,9 +861,6 @@ enum rte_regexdev_attr_id {
>  };
> 
>  /**
> - * @warning
> - * @b EXPERIMENTAL: this API may change without prior notice.
> - *
>   * Get an attribute from a RegEx device.
>   *
>   * @param dev_id
> @@ -915,15 +876,11 @@ enum rte_regexdev_attr_id {
>   *   - -EINVAL: Invalid device or  *attr_id* provided, or *attr_value* is NULL.
>   *   - -ENOTSUP: if the device doesn't support specific *attr_id*.
>   */
> -__rte_experimental
>  int
>  rte_regexdev_attr_get(uint8_t dev_id, enum rte_regexdev_attr_id attr_id,
>  		      void *attr_value);
> 
>  /**
> - * @warning
> - * @b EXPERIMENTAL: this API may change without prior notice.
> - *
>   * Set an attribute to a RegEx device.
>   *
>   * @param dev_id
> @@ -939,7 +896,6 @@ rte_regexdev_attr_get(uint8_t dev_id, enum
> rte_regexdev_attr_id attr_id,
>   *   - -EINVAL: Invalid device or  *attr_id* provided, or *attr_value* is NULL.
>   *   - -ENOTSUP: if the device doesn't support specific *attr_id*.
>   */
> -__rte_experimental
>  int
>  rte_regexdev_attr_set(uint8_t dev_id, enum rte_regexdev_attr_id attr_id,
>  		      const void *attr_value);
> @@ -975,9 +931,6 @@ struct rte_regexdev_rule {
>  };
> 
>  /**
> - * @warning
> - * @b EXPERIMENTAL: this API may change without prior notice.
> - *
>   * Update the local rule set.
>   * This functions only modify the rule set in memory.
>   * In order for the changes to take effect, the function
> @@ -1008,16 +961,12 @@ struct rte_regexdev_rule {
>   * @see rte_regexdev_rule_db_import(), rte_regexdev_rule_db_export(),
>   *   rte_regexdev_rule_db_compile_activate()
>   */
> -__rte_experimental
>  int
>  rte_regexdev_rule_db_update(uint8_t dev_id,
>  			    const struct rte_regexdev_rule *rules,
>  			    uint32_t nb_rules);
> 
>  /**
> - * @warning
> - * @b EXPERIMENTAL: this API may change without prior notice.
> - *
>   * Compile local rule set and burn the complied result to the
>   * RegEx device.
>   *
> @@ -1030,14 +979,10 @@ rte_regexdev_rule_db_update(uint8_t dev_id,
>   * @see rte_regexdev_rule_db_import(), rte_regexdev_rule_db_export(),
>   *   rte_regexdev_rule_db_update()
>   */
> -__rte_experimental
>  int
>  rte_regexdev_rule_db_compile_activate(uint8_t dev_id);
> 
>  /**
> - * @warning
> - * @b EXPERIMENTAL: this API may change without prior notice.
> - *
>   * Import a prebuilt rule database from a buffer to a RegEx device.
>   *
>   * @param dev_id
> @@ -1055,15 +1000,11 @@ rte_regexdev_rule_db_compile_activate(uint8_t
> dev_id);
>   *
>   * @see rte_regexdev_rule_db_update(), rte_regexdev_rule_db_export()
>   */
> -__rte_experimental
>  int
>  rte_regexdev_rule_db_import(uint8_t dev_id, const char *rule_db,
>  			    uint32_t rule_db_len);
> 
>  /**
> - * @warning
> - * @b EXPERIMENTAL: this API may change without prior notice.
> - *
>   * Export the prebuilt rule database from a RegEx device to the buffer.
>   *
>   * @param dev_id
> @@ -1080,7 +1021,6 @@ rte_regexdev_rule_db_import(uint8_t dev_id, const
> char *rule_db,
>   *
>   * @see rte_regexdev_rule_db_update(), rte_regexdev_rule_db_import()
>   */
> -__rte_experimental
>  int
>  rte_regexdev_rule_db_export(uint8_t dev_id, char *rule_db);
> 
> @@ -1102,9 +1042,6 @@ struct rte_regexdev_xstats_map {
>  };
> 
>  /**
> - * @warning
> - * @b EXPERIMENTAL: this API may change without prior notice.
> - *
>   * Retrieve names of extended statistics of a regex device.
>   *
>   * @param dev_id
> @@ -1120,15 +1057,11 @@ struct rte_regexdev_xstats_map {
>   *      -ENODEV for invalid *dev_id*
>   *      -ENOTSUP if the device doesn't support this function.
>   */
> -__rte_experimental
>  int
>  rte_regexdev_xstats_names_get(uint8_t dev_id,
>  			      struct rte_regexdev_xstats_map *xstats_map);
> 
>  /**
> - * @warning
> - * @b EXPERIMENTAL: this API may change without prior notice.
> - *
>   * Retrieve extended statistics of an regex device.
>   *
>   * @param dev_id
> @@ -1147,15 +1080,11 @@ rte_regexdev_xstats_names_get(uint8_t dev_id,
>   *      -ENODEV for invalid *dev_id*
>   *      -ENOTSUP if the device doesn't support this function.
>   */
> -__rte_experimental
>  int
>  rte_regexdev_xstats_get(uint8_t dev_id, const uint16_t *ids,
>  			uint64_t *values, uint16_t nb_values);
> 
>  /**
> - * @warning
> - * @b EXPERIMENTAL: this API may change without prior notice.
> - *
>   * Retrieve the value of a single stat by requesting it by name.
>   *
>   * @param dev_id
> @@ -1174,15 +1103,11 @@ rte_regexdev_xstats_get(uint8_t dev_id, const
> uint16_t *ids,
>   *   - -EINVAL: invalid parameters
>   *   - -ENOTSUP: if not supported.
>   */
> -__rte_experimental
>  int
>  rte_regexdev_xstats_by_name_get(uint8_t dev_id, const char *name,
>  				uint16_t *id, uint64_t *value);
> 
>  /**
> - * @warning
> - * @b EXPERIMENTAL: this API may change without prior notice.
> - *
>   * Reset the values of the xstats of the selected component in the device.
>   *
>   * @param dev_id
> @@ -1198,15 +1123,11 @@ rte_regexdev_xstats_by_name_get(uint8_t
> dev_id, const char *name,
>   *   - -EINVAL: invalid parameters.
>   *   - -ENOTSUP: if not supported.
>   */
> -__rte_experimental
>  int
>  rte_regexdev_xstats_reset(uint8_t dev_id, const uint16_t *ids,
>  			  uint16_t nb_ids);
> 
>  /**
> - * @warning
> - * @b EXPERIMENTAL: this API may change without prior notice.
> - *
>   * Trigger the RegEx device self test.
>   *
>   * @param dev_id
> @@ -1216,14 +1137,10 @@ rte_regexdev_xstats_reset(uint8_t dev_id, const
> uint16_t *ids,
>   *   - -ENOTSUP if the device doesn't support selftest.
>   *   - other values < 0 on failure.
>   */
> -__rte_experimental
>  int
>  rte_regexdev_selftest(uint8_t dev_id);
> 
>  /**
> - * @warning
> - * @b EXPERIMENTAL: this API may change without prior notice.
> - *
>   * Dump internal information about *dev_id* to the FILE* provided in *f*.
>   *
>   * @param dev_id
> @@ -1234,7 +1151,6 @@ rte_regexdev_selftest(uint8_t dev_id);
>   * @return
>   *   0 on success, negative errno on failure.
>   */
> -__rte_experimental
>  int
>  rte_regexdev_dump(uint8_t dev_id, FILE *f);
> 
> @@ -1428,9 +1344,6 @@ struct rte_regex_ops {
>  #include "rte_regexdev_core.h"
> 
>  /**
> - * @warning
> - * @b EXPERIMENTAL: this API may change without prior notice.
> - *
>   * Enqueue a burst of scan request on a RegEx device.
>   *
>   * The rte_regexdev_enqueue_burst() function is invoked to place
> @@ -1464,7 +1377,6 @@ struct rte_regex_ops {
>   *   remaining ops at the end of *ops* are not consumed and the caller has
>   *   to take care of them.
>   */
> -__rte_experimental
>  static inline uint16_t
>  rte_regexdev_enqueue_burst(uint8_t dev_id, uint16_t qp_id,
>  			   struct rte_regex_ops **ops, uint16_t nb_ops)
> @@ -1483,9 +1395,6 @@ rte_regexdev_enqueue_burst(uint8_t dev_id,
> uint16_t qp_id,
>  }
> 
>  /**
> - * @warning
> - * @b EXPERIMENTAL: this API may change without prior notice.
> - *
>   * Dequeue a burst of scan response from a queue on the RegEx device.
>   * The dequeued operation are stored in *rte_regexdev_op* structures
>   * whose pointers are supplied in the *ops* array.
> @@ -1524,7 +1433,6 @@ rte_regexdev_enqueue_burst(uint8_t dev_id,
> uint16_t qp_id,
>   *   ops at the end of *ops* are not consumed and the caller has to take care
>   *   of them.
>   */
> -__rte_experimental
>  static inline uint16_t
>  rte_regexdev_dequeue_burst(uint8_t dev_id, uint16_t qp_id,
>  			   struct rte_regex_ops **ops, uint16_t nb_ops)
> diff --git a/lib/regexdev/version.map b/lib/regexdev/version.map
> index 3c6e9fffa1f5..914bd19dfd94 100644
> --- a/lib/regexdev/version.map
> +++ b/lib/regexdev/version.map
> @@ -1,4 +1,4 @@
> -EXPERIMENTAL {
> +DPDK_24 {
>  	global:
> 
>  	rte_regex_devices;
> --
> 2.39.2


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

* Re: [PATCH v5 15/26] power: remove experimental from API's
  2023-10-20 20:57   ` [PATCH v5 15/26] power: remove experimental from API's Stephen Hemminger
@ 2023-10-23  7:29     ` David Marchand
  0 siblings, 0 replies; 219+ messages in thread
From: David Marchand @ 2023-10-23  7:29 UTC (permalink / raw)
  To: Stephen Hemminger; +Cc: dev, David Hunt, Anatoly Burakov, Sivaprasad Tummala

On Fri, Oct 20, 2023 at 11:00 PM Stephen Hemminger
<stephen@networkplumber.org> wrote:
>
> The power management API's were last changed in 22.11 release.
> Therefore remove experimental for 23.11 release.
>
> Signed-off-by: Stephen Hemminger <stephen@networkplumber.org>
> Acked-by: David Hunt<david.hunt@intel.com>
> ---

[snip]

> -       # added in 23.11
> -       rte_power_get_uncore_env;
> -       rte_power_set_uncore_env;
> -       rte_power_uncore_freqs;
> +       rte_power_unset_env;
>         rte_power_unset_uncore_env;
> +
> +       local: *;

Those symbols were introduced last week in ac1edcb6621a ("power:
refactor uncore power management API").


-- 
David Marchand


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

* Re: [PATCH v5 14/26] meter: remove experimental warning from comments
  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
  0 siblings, 1 reply; 219+ messages in thread
From: David Marchand @ 2023-10-23  7:29 UTC (permalink / raw)
  To: Stephen Hemminger; +Cc: dev, Bruce Richardson, Cristian Dumitrescu

On Fri, Oct 20, 2023 at 11:00 PM Stephen Hemminger
<stephen@networkplumber.org> wrote:
>
> The API's for rte_meter_trtcm were never properly flagged
> as experimental; missing __rte_experimental but there was
> an experimental comment in the docbook comment.
> Remove the comment.

While I don't object to this removal, I mentionned in previous mail
that this commitlog is wrong.
Those API were properly flagged as experimental.

I'll update the commitlog myself...

>
> Signed-off-by: Stephen Hemminger <stephen@networkplumber.org>
> Acked-by: Bruce Richardson <bruce.richardson@intel.com>
> Acked-by: Cristian Dumitrescu <cristian.dumitrescu@intel.com>


-- 
David Marchand


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

* Re: [PATCH v5 04/26] pdump: make API's stable
  2023-10-20 20:57   ` [PATCH v5 04/26] pdump: make API's stable Stephen Hemminger
@ 2023-10-23  9:03     ` Bruce Richardson
  0 siblings, 0 replies; 219+ messages in thread
From: Bruce Richardson @ 2023-10-23  9:03 UTC (permalink / raw)
  To: Stephen Hemminger; +Cc: dev, Reshma Pattan

On Fri, Oct 20, 2023 at 01:57:37PM -0700, Stephen Hemminger wrote:
> The filtering API's were added in 22.11 and can now be marked
> as not experimental.
> 
> Signed-off-by: Stephen Hemminger <stephen@networkplumber.org>
Acked-by: Bruce Richardson <bruce.richardson@intel.com>


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

* Re: [PATCH v5 10/26] hash: remove experimental from toeplitz hash
  2023-10-20 20:57   ` [PATCH v5 10/26] hash: remove experimental from toeplitz hash Stephen Hemminger
@ 2023-10-23  9:08     ` Bruce Richardson
  0 siblings, 0 replies; 219+ messages in thread
From: Bruce Richardson @ 2023-10-23  9:08 UTC (permalink / raw)
  To: Stephen Hemminger; +Cc: dev, Yipeng Wang, Sameh Gobriel, Vladimir Medvedkin

On Fri, Oct 20, 2023 at 01:57:43PM -0700, Stephen Hemminger wrote:
> The rte_thash_ functions have been around since 2020.
> Remove experimental tag.
> 
> Signed-off-by: Stephen Hemminger <stephen@networkplumber.org>

Anything around that long should definitely look to be made stable.

Acked-by: Bruce Richardson <bruce.richardson@intel.com>

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

* Re: [PATCH v5 11/26] timer: remove experimental from rte_timer_next_ticks
  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
  0 siblings, 0 replies; 219+ messages in thread
From: Bruce Richardson @ 2023-10-23  9:08 UTC (permalink / raw)
  To: Stephen Hemminger; +Cc: dev, Erik Gabriel Carrillo

On Fri, Oct 20, 2023 at 01:57:44PM -0700, Stephen Hemminger wrote:
> Function was added in 20.11, remove experimental flag.
> 
> Signed-off-by: Stephen Hemminger <stephen@networkplumber.org>
> ---
Acked-by: Bruce Richardson <bruce.richardson@intel.com>

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

* Re: [PATCH v5 22/26] compressdev: remove experimental flag
  2023-10-20 20:57   ` [PATCH v5 22/26] compressdev: remove experimental flag Stephen Hemminger
@ 2023-10-23  9:12     ` Bruce Richardson
  0 siblings, 0 replies; 219+ messages in thread
From: Bruce Richardson @ 2023-10-23  9:12 UTC (permalink / raw)
  To: Stephen Hemminger; +Cc: dev, Thomas Monjalon, Fan Zhang, Ashish Gupta

On Fri, Oct 20, 2023 at 01:57:55PM -0700, Stephen Hemminger wrote:
> The compressdev can not hide under the experimental flag.
> Remove the experimental flag and require ABI to be stable.
>

Not sure about the wording of the commit log. Better to just point out that
compressdev was added back in 2018, and, as such, should now be a stable
API.
 
> Signed-off-by: Stephen Hemminger <stephen@networkplumber.org>

Acked-by: Bruce Richardson <bruce.richardson@intel.com>


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

* RE: [PATCH v4 03/28] ethdev: mark rte_mtr API's as stable
  2023-10-20 20:32       ` Stephen Hemminger
@ 2023-10-23  9:16         ` Dumitrescu, Cristian
  0 siblings, 0 replies; 219+ messages in thread
From: Dumitrescu, Cristian @ 2023-10-23  9:16 UTC (permalink / raw)
  To: Stephen Hemminger; +Cc: dev, Thomas Monjalon, Ferruh Yigit, Andrew Rybchenko



> -----Original Message-----
> From: Stephen Hemminger <stephen@networkplumber.org>
> Sent: Friday, October 20, 2023 9:32 PM
> To: Dumitrescu, Cristian <cristian.dumitrescu@intel.com>
> Cc: dev@dpdk.org; Thomas Monjalon <thomas@monjalon.net>; Ferruh Yigit
> <ferruh.yigit@amd.com>; Andrew Rybchenko
> <andrew.rybchenko@oktetlabs.ru>
> Subject: Re: [PATCH v4 03/28] ethdev: mark rte_mtr API's as stable
> 
> On Fri, 20 Oct 2023 10:18:29 +0000
> "Dumitrescu, Cristian" <cristian.dumitrescu@intel.com> wrote:
> 
> > > -----Original Message-----
> > > From: Stephen Hemminger <stephen@networkplumber.org>
> > > Sent: Thursday, October 19, 2023 8:10 PM
> > > To: dev@dpdk.org
> > > Cc: Stephen Hemminger <stephen@networkplumber.org>; Thomas
> Monjalon
> > > <thomas@monjalon.net>; Dumitrescu, Cristian
> > > <cristian.dumitrescu@intel.com>; Ferruh Yigit <ferruh.yigit@amd.com>;
> > > Andrew Rybchenko <andrew.rybchenko@oktetlabs.ru>
> > > Subject: [PATCH v4 03/28] ethdev: mark rte_mtr API's as stable
> > >
> > > These haven't changed in a while, time has come to make them
> > > not experimental.
> > >
> > > Signed-off-by: Stephen Hemminger <stephen@networkplumber.org>
> > > ---
> >
> > NAK.
> >
> > This API needs more drivers to use it and more time before transitioning to
> stable.
> 
> We need to discuss this at tech board. The experimental flag was intended to
> be allowed for only a limited time. The mtr library was added 5 years ago in
> 17.11
> release! If it is not used now, it should be removed.

It is used, as you can quickly find for yourself, but implementing this API is
currently WIP for several devices; therefore, it would probably better to wait
a bit more before transitioning to stable in order to get this API right.

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

* Re: [PATCH v5 19/26] security: remove experimental flag from macsec
  2023-10-20 20:57   ` [PATCH v5 19/26] security: remove experimental flag from macsec Stephen Hemminger
@ 2023-10-23 12:00     ` David Marchand
  0 siblings, 0 replies; 219+ messages in thread
From: David Marchand @ 2023-10-23 12:00 UTC (permalink / raw)
  To: Stephen Hemminger; +Cc: dev, Akhil Goyal

On Fri, Oct 20, 2023 at 11:01 PM Stephen Hemminger
<stephen@networkplumber.org> wrote:
>
> The rte_security API's for macsec were added in 22.11.
> Therefore remove the experimental tag.
>
> There is also one helper function for setting packet
> metadata that should have been marked internal.
>
> Signed-off-by: Stephen Hemminger <stephen@networkplumber.org>
> Acked-by: Akhil Goyal <gakhil@marvell.com>

This patch does more than what is described in the commitlog (see below).
Please update the commitlog.


> ---
>  lib/security/rte_security.h | 27 ---------------------------
>  lib/security/version.map    | 18 +++++++++---------
>  2 files changed, 9 insertions(+), 36 deletions(-)
>
> diff --git a/lib/security/rte_security.h b/lib/security/rte_security.h
> index d2d2af23d5d2..a19544906f21 100644
> --- a/lib/security/rte_security.h
> +++ b/lib/security/rte_security.h
> @@ -815,7 +815,6 @@ rte_security_session_create(void *instance,
>   *  - On success returns 0
>   *  - On failure returns a negative errno value.
>   */
> -__rte_experimental
>  int
>  rte_security_session_update(void *instance,
>                             void *sess,

Not macsec related.

[snip]

> @@ -1059,7 +1042,6 @@ rte_security_session_fast_mdata_set(void *sess, uint64_t fdata)
>  }
>
>  /** Function to call PMD specific function pointer set_pkt_metadata() */
> -__rte_experimental
>  int __rte_security_set_pkt_metadata(void *instance,
>                                     void *sess,
>                                     struct rte_mbuf *m, void *params);

Not macsec related, but this is probably the helper mentionned in commitlog.


> @@ -1230,16 +1212,12 @@ struct rte_security_stats {
>   *  - On success, return 0
>   *  - On failure, a negative value
>   */
> -__rte_experimental
>  int
>  rte_security_session_stats_get(void *instance,
>                                void *sess,
>                                struct rte_security_stats *stats);

Not macsec related.

[snip]

> diff --git a/lib/security/version.map b/lib/security/version.map
> index e07fca33a1e6..54c9a556798d 100644
> --- a/lib/security/version.map
> +++ b/lib/security/version.map
> @@ -1,19 +1,12 @@
>  DPDK_24 {
>         global:
>
> +       __rte_security_set_pkt_metadata;
>         rte_security_capabilities_get;
>         rte_security_capability_get;
>         rte_security_session_create;
>         rte_security_session_destroy;
>         rte_security_session_get_size;
> -
> -       local: *;
> -};
> -
> -EXPERIMENTAL {
> -       global:
> -
> -       __rte_security_set_pkt_metadata;
>         rte_security_dynfield_offset;

If we mark rte_security_dynfield_offset stable, its accessor helper
(rte_security_dynfield) can be marked stable too.


>         rte_security_macsec_sa_create;
>         rte_security_macsec_sa_destroy;
> @@ -23,8 +16,15 @@ EXPERIMENTAL {
>         rte_security_macsec_sc_stats_get;
>         rte_security_session_stats_get;
>         rte_security_session_update;
> -       rte_security_oop_dynfield_offset;
>
> +       local: *;
> +};
> +
> +EXPERIMENTAL {
> +       global:
> +
> +       # Added in 23.11
> +       rte_security_oop_dynfield_offset;
>         rte_security_rx_inject_configure;
>         rte_security_inb_pkt_rx_inject;

Alphabetical order in the experimental section please.


-- 
David Marchand


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

* Re: [PATCH v5 14/26] meter: remove experimental warning from comments
  2023-10-23  7:29     ` David Marchand
@ 2023-10-24  2:30       ` Stephen Hemminger
  0 siblings, 0 replies; 219+ messages in thread
From: Stephen Hemminger @ 2023-10-24  2:30 UTC (permalink / raw)
  To: David Marchand; +Cc: dev, Bruce Richardson, Cristian Dumitrescu

On Mon, 23 Oct 2023 09:29:52 +0200
David Marchand <david.marchand@redhat.com> wrote:

> On Fri, Oct 20, 2023 at 11:00 PM Stephen Hemminger
> <stephen@networkplumber.org> wrote:
> >
> > The API's for rte_meter_trtcm were never properly flagged
> > as experimental; missing __rte_experimental but there was
> > an experimental comment in the docbook comment.
> > Remove the comment.  
> 
> While I don't object to this removal, I mentionned in previous mail
> that this commitlog is wrong.
> Those API were properly flagged as experimental.
> 
> I'll update the commitlog myself...

Look at rte_meter in main branch. For example:

/**
 * @warning
 * @b EXPERIMENTAL: this API may change without prior notice
 *
 * trTCM RFC 4115 profile configuration
 *
 * @param p
 *    Pointer to pre-allocated trTCM profile data structure
 * @param params
 *    trTCM profile parameters
 * @return
 *    0 upon success, error code otherwise
 */
int
rte_meter_trtcm_rfc4115_profile_config(
	struct rte_meter_trtcm_rfc4115_profile *p,
	struct rte_meter_trtcm_rfc4115_params *params);

The function is documented as experimental but the function
was not marked experimental in version.map or with __rte_experimental
attribute.  Will reword the commit message to clarify.

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

* [PATCH v6 00/25] Promite many experimental API's to stable
  2023-08-08 17:35 [PATCH 00/20] remove experimental flag from some API's Stephen Hemminger
                   ` (24 preceding siblings ...)
  2023-10-20 20:57 ` [PATCH v5 00/26] Promote many experimental API's to stable Stephen Hemminger
@ 2023-10-24  2:39 ` 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
                     ` (3 more replies)
  2023-10-24  2:53 ` [PATCH v7 00/25] Promote 22.11 and older API's to stable Stephen Hemminger
  2023-10-24  7:20 ` [PATCH 00/20] remove experimental flag from some API's Maxime Coquelin
  27 siblings, 4 replies; 219+ messages in thread
From: Stephen Hemminger @ 2023-10-24  2:39 UTC (permalink / raw)
  To: dev; +Cc: Stephen Hemminger

Since 23.11 is an LTS release it is time to remove the experimental
bandaid off many API's. There are about 890 API's marked with experimental
on current main branch. This addresses the easy to remove ones and
gets it down to about 510 places.

The rule is any API that has been in since 22.11 needs to have
experimental removed (or have API deleted). The experimental flag is not a
"get out of ABI stability for free" card

v6 - incorporate review comments
     drop regexdev

Stephen Hemminger (25):
  bpf: make rte_bpf_dump and rte_bpf_convert stable API's
  cmdline: make experimental API's stable
  ethdev: mark rte_tm API's as stable
  pdump: make API's stable
  pcapng: mark API's as stable
  net: remove experimental from functions
  rcu: remove experimental from rte_rcu_qbsr
  lpm: remove experimental
  mbuf: remove experimental from create_extbuf
  hash: remove experimental from toeplitz hash
  timer: remove experimental from rte_timer_next_ticks
  sched: remove experimental
  dmadev: mark API's as not experimental
  meter: remove experimental warning from comments
  power: remove experimental from API's
  kvargs: remove experimental flag
  ip_frag: mark a couple of functions stable
  member: remove experimental tag
  security: remove experimental flag
  bbdev: remove experimental tag
  ipsec: remove experimental from SA API
  compressdev: remove experimental flag
  node: remove some of the experimental tags
  eventdev: make many API's stable
  cryptodev: mark older API's stable

 MAINTAINERS                             |  8 +--
 lib/bbdev/rte_bbdev.h                   |  4 --
 lib/bbdev/rte_bbdev_op.h                |  2 -
 lib/bbdev/version.map                   | 15 ++---
 lib/bpf/rte_bpf.h                       |  2 -
 lib/bpf/version.map                     |  9 +--
 lib/cmdline/cmdline.h                   |  1 -
 lib/cmdline/cmdline_parse.h             |  4 --
 lib/cmdline/cmdline_rdline.h            |  4 --
 lib/cmdline/version.map                 | 26 +++-----
 lib/compressdev/rte_comp.h              |  6 --
 lib/compressdev/rte_compressdev.h       | 26 --------
 lib/compressdev/rte_compressdev_pmd.h   |  6 --
 lib/compressdev/version.map             |  2 +-
 lib/cryptodev/rte_cryptodev.h           | 31 ---------
 lib/cryptodev/version.map               | 77 ++++++++++------------
 lib/dmadev/rte_dmadev.h                 | 85 -------------------------
 lib/dmadev/version.map                  |  2 +-
 lib/ethdev/rte_tm.h                     | 34 ----------
 lib/ethdev/version.map                  | 62 +++++++++---------
 lib/eventdev/rte_event_crypto_adapter.h |  4 --
 lib/eventdev/rte_event_eth_rx_adapter.h |  6 --
 lib/eventdev/rte_event_eth_tx_adapter.h |  3 -
 lib/eventdev/rte_event_timer_adapter.h  |  3 -
 lib/eventdev/rte_eventdev.h             |  4 --
 lib/eventdev/version.map                | 34 ++++------
 lib/hash/rte_thash.h                    | 44 -------------
 lib/hash/rte_thash_gfni.h               |  8 ---
 lib/hash/rte_thash_x86_gfni.h           |  8 ---
 lib/hash/version.map                    | 16 ++---
 lib/ip_frag/rte_ip_frag.h               |  2 -
 lib/ip_frag/version.map                 |  9 +--
 lib/ipsec/rte_ipsec.h                   |  2 -
 lib/ipsec/version.map                   |  9 +--
 lib/kvargs/rte_kvargs.h                 |  4 --
 lib/kvargs/version.map                  |  8 +--
 lib/lpm/rte_lpm.h                       |  4 --
 lib/lpm/version.map                     |  7 +-
 lib/mbuf/rte_mbuf.h                     |  1 -
 lib/mbuf/version.map                    |  8 +--
 lib/member/rte_member.h                 | 54 ----------------
 lib/member/version.map                  | 12 +---
 lib/meter/rte_meter.h                   | 12 ----
 lib/net/rte_ip.h                        | 19 ------
 lib/node/rte_node_eth_api.h             |  1 -
 lib/node/rte_node_ip4_api.h             |  2 -
 lib/node/version.map                    | 16 +++--
 lib/pcapng/rte_pcapng.h                 | 11 ----
 lib/pcapng/version.map                  |  6 +-
 lib/pdump/rte_pdump.h                   | 12 ----
 lib/pdump/version.map                   | 11 +---
 lib/power/rte_power.h                   |  4 --
 lib/power/rte_power_guest_channel.h     |  4 --
 lib/power/rte_power_pmd_mgmt.h          | 40 ------------
 lib/power/rte_power_uncore.h            |  3 -
 lib/power/version.map                   | 37 +++++------
 lib/rcu/rte_rcu_qsbr.h                  | 20 ------
 lib/rcu/version.map                     | 15 ++---
 lib/sched/rte_pie.h                     |  8 ---
 lib/sched/rte_sched.h                   |  5 --
 lib/sched/version.map                   | 18 ++----
 lib/security/rte_security.h             | 35 ----------
 lib/security/version.map                | 18 +++---
 lib/timer/rte_timer.h                   |  4 --
 lib/timer/version.map                   |  7 +-
 65 files changed, 161 insertions(+), 803 deletions(-)

-- 
2.39.2


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

* [PATCH v6 01/25] bpf: make rte_bpf_dump and rte_bpf_convert stable API's
  2023-10-24  2:39 ` [PATCH v6 00/25] Promite many experimental API's to stable Stephen Hemminger
@ 2023-10-24  2:39   ` Stephen Hemminger
  2023-10-24  2:39   ` [PATCH v6 02/25] cmdline: make experimental API's stable Stephen Hemminger
                     ` (2 subsequent siblings)
  3 siblings, 0 replies; 219+ messages in thread
From: Stephen Hemminger @ 2023-10-24  2:39 UTC (permalink / raw)
  To: dev; +Cc: Stephen Hemminger, Konstantin Ananyev

These two API's were introduced in 22.11 and can now be
made not experimental.

Signed-off-by: Stephen Hemminger <stephen@networkplumber.org>
Acked-by: Konstantin Ananyev <konstantin.v.ananyev@yandex.ru>
---
 lib/bpf/rte_bpf.h   | 2 --
 lib/bpf/version.map | 9 ++-------
 2 files changed, 2 insertions(+), 9 deletions(-)

diff --git a/lib/bpf/rte_bpf.h b/lib/bpf/rte_bpf.h
index 4d71120dbd9d..f70d8dacd0d3 100644
--- a/lib/bpf/rte_bpf.h
+++ b/lib/bpf/rte_bpf.h
@@ -209,7 +209,6 @@ rte_bpf_get_jit(const struct rte_bpf *bpf, struct rte_bpf_jit *jit);
  * @param len
  *   Number of BPF instructions to dump.
  */
-__rte_experimental
 void
 rte_bpf_dump(FILE *f, const struct ebpf_insn *buf, uint32_t len);
 
@@ -229,7 +228,6 @@ struct bpf_program;
  *   - ENOMEM - can't reserve enough memory
  *   - ENOTSUP - operation not supported
  */
-__rte_experimental
 struct rte_bpf_prm *
 rte_bpf_convert(const struct bpf_program *prog);
 
diff --git a/lib/bpf/version.map b/lib/bpf/version.map
index c49bf1701f0a..2e957494e9df 100644
--- a/lib/bpf/version.map
+++ b/lib/bpf/version.map
@@ -1,7 +1,9 @@
 DPDK_24 {
 	global:
 
+	rte_bpf_convert;
 	rte_bpf_destroy;
+	rte_bpf_dump;
 	rte_bpf_elf_load;
 	rte_bpf_eth_rx_elf_load;
 	rte_bpf_eth_rx_unload;
@@ -14,10 +16,3 @@ DPDK_24 {
 
 	local: *;
 };
-
-EXPERIMENTAL {
-	global:
-
-	rte_bpf_convert;
-	rte_bpf_dump;
-};
-- 
2.39.2


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

* [PATCH v6 02/25] cmdline: make experimental API's stable
  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   ` 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
  3 siblings, 0 replies; 219+ messages in thread
From: Stephen Hemminger @ 2023-10-24  2:39 UTC (permalink / raw)
  To: dev; +Cc: Stephen Hemminger, Bruce Richardson

These API's have all ben around for several releases.

Signed-off-by: Stephen Hemminger <stephen@networkplumber.org>
Acked-by: Bruce Richardson <bruce.richardson@intel.com>
---
 lib/cmdline/cmdline.h        |  1 -
 lib/cmdline/cmdline_parse.h  |  4 ----
 lib/cmdline/cmdline_rdline.h |  4 ----
 lib/cmdline/version.map      | 26 ++++++++------------------
 4 files changed, 8 insertions(+), 27 deletions(-)

diff --git a/lib/cmdline/cmdline.h b/lib/cmdline/cmdline.h
index 992c84591456..dd41e1054378 100644
--- a/lib/cmdline/cmdline.h
+++ b/lib/cmdline/cmdline.h
@@ -39,7 +39,6 @@ void cmdline_printf(const struct cmdline *cl, const char *fmt, ...)
 int cmdline_in(struct cmdline *cl, const char *buf, int size);
 int cmdline_write_char(struct rdline *rdl, char c);
 
-__rte_experimental
 struct rdline *
 cmdline_get_rdline(struct cmdline *cl);
 
diff --git a/lib/cmdline/cmdline_parse.h b/lib/cmdline/cmdline_parse.h
index a852ac411c59..41b4db1f76f9 100644
--- a/lib/cmdline/cmdline_parse.h
+++ b/lib/cmdline/cmdline_parse.h
@@ -155,9 +155,6 @@ typedef cmdline_parse_inst_t *cmdline_parse_ctx_t;
 int cmdline_parse(struct cmdline *cl, const char *buf);
 
 /**
- * @warning
- * @b EXPERIMENTAL: this API may change without prior notice
- *
  * Try to parse a buffer according to the specified context, but do not
  * perform any function calls if parse is successful.
  *
@@ -166,7 +163,6 @@ int cmdline_parse(struct cmdline *cl, const char *buf);
  * CMDLINE_PARSE_BAD_ARGS on error and returns the parsed line length (>=0)
  * on successful parse.
  */
-__rte_experimental
 int cmdline_parse_check(struct cmdline *cl, const char *buf);
 
 /**
diff --git a/lib/cmdline/cmdline_rdline.h b/lib/cmdline/cmdline_rdline.h
index 1b4cc7ce5773..c6bb6bbbb36a 100644
--- a/lib/cmdline/cmdline_rdline.h
+++ b/lib/cmdline/cmdline_rdline.h
@@ -58,7 +58,6 @@ typedef int (rdline_complete_t)(struct rdline *rdl, const char *buf,
  *
  * \return New rdline object on success, NULL on failure.
  */
-__rte_experimental
 struct rdline *rdline_new(rdline_write_char_t *write_char,
 			  rdline_validate_t *validate,
 			  rdline_complete_t *complete,
@@ -70,7 +69,6 @@ struct rdline *rdline_new(rdline_write_char_t *write_char,
  * \param rdl A pointer to an initialized struct rdline.
  *            If NULL, this function is a no-op.
  */
-__rte_experimental
 void rdline_free(struct rdline *rdl);
 
 /**
@@ -163,13 +161,11 @@ char *rdline_get_history_item(struct rdline *rdl, unsigned int i);
 /**
  * Get maximum history buffer size.
  */
-__rte_experimental
 size_t rdline_get_history_buffer_size(struct rdline *rdl);
 
 /**
  * Get the opaque pointer supplied on struct rdline creation.
  */
-__rte_experimental
 void *rdline_get_opaque(struct rdline *rdl);
 
 #ifdef __cplusplus
diff --git a/lib/cmdline/version.map b/lib/cmdline/version.map
index 97166789016c..88174e39bcb7 100644
--- a/lib/cmdline/version.map
+++ b/lib/cmdline/version.map
@@ -30,11 +30,13 @@ DPDK_24 {
 	cmdline_get_help_num;
 	cmdline_get_help_portlist;
 	cmdline_get_help_string;
+	cmdline_get_rdline;
 	cmdline_in;
 	cmdline_interact;
 	cmdline_isendoftoken;
 	cmdline_new;
 	cmdline_parse;
+	cmdline_parse_check;
 	cmdline_parse_etheraddr;
 	cmdline_parse_ipaddr;
 	cmdline_parse_num;
@@ -51,37 +53,25 @@ DPDK_24 {
 	cmdline_token_portlist_ops;
 	cmdline_token_string_ops;
 	cmdline_write_char;
+
 	rdline_add_history;
 	rdline_char_in;
 	rdline_clear_history;
+	rdline_free;
 	rdline_get_buffer;
+	rdline_get_history_buffer_size;
 	rdline_get_history_item;
+	rdline_get_opaque;
+	rdline_new;
 	rdline_newline;
 	rdline_quit;
 	rdline_redisplay;
 	rdline_reset;
 	rdline_restart;
 	rdline_stop;
+
 	vt100_init;
 	vt100_parser;
 
 	local: *;
 };
-
-EXPERIMENTAL {
-	global:
-
-	# added in 20.11
-	cmdline_get_rdline;
-
-	# added in 21.11
-	rdline_new;
-	rdline_free;
-	rdline_get_history_buffer_size;
-	rdline_get_opaque;
-
-	# added in 22.07
-	cmdline_parse_check;
-
-	local: *;
-};
-- 
2.39.2


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

* [PATCH v6 03/25] ethdev: mark rte_tm API's as stable
  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   ` Stephen Hemminger
  2023-10-24  2:39   ` [PATCH v6 04/25] pdump: make API's stable Stephen Hemminger
  3 siblings, 0 replies; 219+ messages in thread
From: Stephen Hemminger @ 2023-10-24  2:39 UTC (permalink / raw)
  To: dev
  Cc: Stephen Hemminger, Cristian Dumitrescu, Thomas Monjalon,
	Ferruh Yigit, Andrew Rybchenko

These API's have been around since 20.11, mark them as not
experimental.

Signed-off-by: Stephen Hemminger <stephen@networkplumber.org>
Acked-by: Cristian Dumitrescu <cristian.dumitrescu@intel.com>
---
 MAINTAINERS            |  2 +-
 lib/ethdev/rte_tm.h    | 34 -----------------------
 lib/ethdev/version.map | 62 ++++++++++++++++++++----------------------
 3 files changed, 31 insertions(+), 67 deletions(-)

diff --git a/MAINTAINERS b/MAINTAINERS
index 4083658697fb..e5d92aa74926 100644
--- a/MAINTAINERS
+++ b/MAINTAINERS
@@ -421,7 +421,7 @@ F: app/test-pmd/cmdline_flow.c
 F: doc/guides/prog_guide/rte_flow.rst
 F: lib/ethdev/rte_flow*
 
-Traffic Management API - EXPERIMENTAL
+Traffic Management API
 M: Cristian Dumitrescu <cristian.dumitrescu@intel.com>
 T: git://dpdk.org/next/dpdk-next-net
 F: lib/ethdev/rte_tm*
diff --git a/lib/ethdev/rte_tm.h b/lib/ethdev/rte_tm.h
index 08c5fafecdf3..799b92aadaa9 100644
--- a/lib/ethdev/rte_tm.h
+++ b/lib/ethdev/rte_tm.h
@@ -14,10 +14,6 @@
  * This interface provides the ability to configure the traffic manager in a
  * generic way. It includes features such as: hierarchical scheduling,
  * traffic shaping, congestion management, packet marking, etc.
- *
- * @warning
- * @b EXPERIMENTAL:
- * All functions in this file may be changed or removed without prior notice.
  */
 
 #include <stdint.h>
@@ -1242,7 +1238,6 @@ struct rte_tm_error {
  * @return
  *   0 on success, non-zero error code otherwise.
  */
-__rte_experimental
 int
 rte_tm_get_number_of_leaf_nodes(uint16_t port_id,
 	uint32_t *n_leaf_nodes,
@@ -1267,7 +1262,6 @@ rte_tm_get_number_of_leaf_nodes(uint16_t port_id,
  * @return
  *   0 on success, non-zero error code otherwise.
  */
-__rte_experimental
 int
 rte_tm_node_type_get(uint16_t port_id,
 	uint32_t node_id,
@@ -1286,7 +1280,6 @@ rte_tm_node_type_get(uint16_t port_id,
  * @return
  *   0 on success, non-zero error code otherwise.
  */
-__rte_experimental
 int
 rte_tm_capabilities_get(uint16_t port_id,
 	struct rte_tm_capabilities *cap,
@@ -1307,7 +1300,6 @@ rte_tm_capabilities_get(uint16_t port_id,
  * @return
  *   0 on success, non-zero error code otherwise.
  */
-__rte_experimental
 int
 rte_tm_level_capabilities_get(uint16_t port_id,
 	uint32_t level_id,
@@ -1328,7 +1320,6 @@ rte_tm_level_capabilities_get(uint16_t port_id,
  * @return
  *   0 on success, non-zero error code otherwise.
  */
-__rte_experimental
 int
 rte_tm_node_capabilities_get(uint16_t port_id,
 	uint32_t node_id,
@@ -1354,7 +1345,6 @@ rte_tm_node_capabilities_get(uint16_t port_id,
  *
  * @see struct rte_tm_capabilities::cman_wred_context_n_max
  */
-__rte_experimental
 int
 rte_tm_wred_profile_add(uint16_t port_id,
 	uint32_t wred_profile_id,
@@ -1378,7 +1368,6 @@ rte_tm_wred_profile_add(uint16_t port_id,
  *
  * @see struct rte_tm_capabilities::cman_wred_context_n_max
  */
-__rte_experimental
 int
 rte_tm_wred_profile_delete(uint16_t port_id,
 	uint32_t wred_profile_id,
@@ -1410,7 +1399,6 @@ rte_tm_wred_profile_delete(uint16_t port_id,
  *
  * @see struct rte_tm_capabilities::cman_wred_context_shared_n_max
  */
-__rte_experimental
 int
 rte_tm_shared_wred_context_add_update(uint16_t port_id,
 	uint32_t shared_wred_context_id,
@@ -1435,7 +1423,6 @@ rte_tm_shared_wred_context_add_update(uint16_t port_id,
  *
  * @see struct rte_tm_capabilities::cman_wred_context_shared_n_max
  */
-__rte_experimental
 int
 rte_tm_shared_wred_context_delete(uint16_t port_id,
 	uint32_t shared_wred_context_id,
@@ -1460,7 +1447,6 @@ rte_tm_shared_wred_context_delete(uint16_t port_id,
  *
  * @see struct rte_tm_capabilities::shaper_n_max
  */
-__rte_experimental
 int
 rte_tm_shaper_profile_add(uint16_t port_id,
 	uint32_t shaper_profile_id,
@@ -1484,7 +1470,6 @@ rte_tm_shaper_profile_add(uint16_t port_id,
  *
  * @see struct rte_tm_capabilities::shaper_n_max
  */
-__rte_experimental
 int
 rte_tm_shaper_profile_delete(uint16_t port_id,
 	uint32_t shaper_profile_id,
@@ -1514,7 +1499,6 @@ rte_tm_shaper_profile_delete(uint16_t port_id,
  *
  * @see struct rte_tm_capabilities::shaper_shared_n_max
  */
-__rte_experimental
 int
 rte_tm_shared_shaper_add_update(uint16_t port_id,
 	uint32_t shared_shaper_id,
@@ -1538,7 +1522,6 @@ rte_tm_shared_shaper_add_update(uint16_t port_id,
  *
  * @see struct rte_tm_capabilities::shaper_shared_n_max
  */
-__rte_experimental
 int
 rte_tm_shared_shaper_delete(uint16_t port_id,
 	uint32_t shared_shaper_id,
@@ -1607,7 +1590,6 @@ rte_tm_shared_shaper_delete(uint16_t port_id,
  * @see RTE_TM_NODE_LEVEL_ID_ANY
  * @see struct rte_tm_capabilities
  */
-__rte_experimental
 int
 rte_tm_node_add(uint16_t port_id,
 	uint32_t node_id,
@@ -1641,7 +1623,6 @@ rte_tm_node_add(uint16_t port_id,
  *
  * @see RTE_TM_UPDATE_NODE_ADD_DELETE
  */
-__rte_experimental
 int
 rte_tm_node_delete(uint16_t port_id,
 	uint32_t node_id,
@@ -1666,7 +1647,6 @@ rte_tm_node_delete(uint16_t port_id,
  * @see rte_tm_node_resume()
  * @see RTE_TM_UPDATE_NODE_SUSPEND_RESUME
  */
-__rte_experimental
 int
 rte_tm_node_suspend(uint16_t port_id,
 	uint32_t node_id,
@@ -1690,7 +1670,6 @@ rte_tm_node_suspend(uint16_t port_id,
  * @see rte_tm_node_suspend()
  * @see RTE_TM_UPDATE_NODE_SUSPEND_RESUME
  */
-__rte_experimental
 int
 rte_tm_node_resume(uint16_t port_id,
 	uint32_t node_id,
@@ -1732,7 +1711,6 @@ rte_tm_node_resume(uint16_t port_id,
  * @see rte_tm_node_add()
  * @see rte_tm_node_delete()
  */
-__rte_experimental
 int
 rte_tm_hierarchy_commit(uint16_t port_id,
 	int clear_on_fail,
@@ -1773,7 +1751,6 @@ rte_tm_hierarchy_commit(uint16_t port_id,
  * @see RTE_TM_UPDATE_NODE_PARENT_KEEP_LEVEL
  * @see RTE_TM_UPDATE_NODE_PARENT_CHANGE_LEVEL
  */
-__rte_experimental
 int
 rte_tm_node_parent_update(uint16_t port_id,
 	uint32_t node_id,
@@ -1803,7 +1780,6 @@ rte_tm_node_parent_update(uint16_t port_id,
  *
  * @see struct rte_tm_capabilities::shaper_private_n_max
  */
-__rte_experimental
 int
 rte_tm_node_shaper_update(uint16_t port_id,
 	uint32_t node_id,
@@ -1831,7 +1807,6 @@ rte_tm_node_shaper_update(uint16_t port_id,
  *
  * @see struct rte_tm_capabilities::shaper_shared_n_max
  */
-__rte_experimental
 int
 rte_tm_node_shared_shaper_update(uint16_t port_id,
 	uint32_t node_id,
@@ -1859,7 +1834,6 @@ rte_tm_node_shared_shaper_update(uint16_t port_id,
  * @see enum rte_tm_stats_type
  * @see RTE_TM_UPDATE_NODE_STATS
  */
-__rte_experimental
 int
 rte_tm_node_stats_update(uint16_t port_id,
 	uint32_t node_id,
@@ -1888,7 +1862,6 @@ rte_tm_node_stats_update(uint16_t port_id,
  * @see RTE_TM_UPDATE_NODE_WFQ_WEIGHT_MODE
  * @see RTE_TM_UPDATE_NODE_N_SP_PRIORITIES
  */
-__rte_experimental
 int
 rte_tm_node_wfq_weight_mode_update(uint16_t port_id,
 	uint32_t node_id,
@@ -1912,7 +1885,6 @@ rte_tm_node_wfq_weight_mode_update(uint16_t port_id,
  *
  * @see RTE_TM_UPDATE_NODE_CMAN
  */
-__rte_experimental
 int
 rte_tm_node_cman_update(uint16_t port_id,
 	uint32_t node_id,
@@ -1937,7 +1909,6 @@ rte_tm_node_cman_update(uint16_t port_id,
  *
  * @see struct rte_tm_capabilities::cman_wred_context_private_n_max
  */
-__rte_experimental
 int
 rte_tm_node_wred_context_update(uint16_t port_id,
 	uint32_t node_id,
@@ -1963,7 +1934,6 @@ rte_tm_node_wred_context_update(uint16_t port_id,
  *
  * @see struct rte_tm_capabilities::cman_wred_context_shared_n_max
  */
-__rte_experimental
 int
 rte_tm_node_shared_wred_context_update(uint16_t port_id,
 	uint32_t node_id,
@@ -1996,7 +1966,6 @@ rte_tm_node_shared_wred_context_update(uint16_t port_id,
  *
  * @see enum rte_tm_stats_type
  */
-__rte_experimental
 int
 rte_tm_node_stats_read(uint16_t port_id,
 	uint32_t node_id,
@@ -2034,7 +2003,6 @@ rte_tm_node_stats_read(uint16_t port_id,
  *
  * @see struct rte_tm_capabilities::mark_vlan_dei_supported
  */
-__rte_experimental
 int
 rte_tm_mark_vlan_dei(uint16_t port_id,
 	int mark_green,
@@ -2085,7 +2053,6 @@ rte_tm_mark_vlan_dei(uint16_t port_id,
  * @see struct rte_tm_capabilities::mark_ip_ecn_tcp_supported
  * @see struct rte_tm_capabilities::mark_ip_ecn_sctp_supported
  */
-__rte_experimental
 int
 rte_tm_mark_ip_ecn(uint16_t port_id,
 	int mark_green,
@@ -2134,7 +2101,6 @@ rte_tm_mark_ip_ecn(uint16_t port_id,
  *
  * @see struct rte_tm_capabilities::mark_ip_dscp_supported
  */
-__rte_experimental
 int
 rte_tm_mark_ip_dscp(uint16_t port_id,
 	int mark_green,
diff --git a/lib/ethdev/version.map b/lib/ethdev/version.map
index 919ba5b8e65b..072ad3401235 100644
--- a/lib/ethdev/version.map
+++ b/lib/ethdev/version.map
@@ -135,6 +135,36 @@ DPDK_24 {
 	rte_flow_pick_transfer_proxy;
 	rte_flow_query;
 	rte_flow_validate;
+	rte_tm_capabilities_get;
+	rte_tm_get_number_of_leaf_nodes;
+	rte_tm_hierarchy_commit;
+	rte_tm_level_capabilities_get;
+	rte_tm_mark_ip_dscp;
+	rte_tm_mark_ip_ecn;
+	rte_tm_mark_vlan_dei;
+	rte_tm_node_add;
+	rte_tm_node_capabilities_get;
+	rte_tm_node_cman_update;
+	rte_tm_node_delete;
+	rte_tm_node_parent_update;
+	rte_tm_node_resume;
+	rte_tm_node_shaper_update;
+	rte_tm_node_shared_shaper_update;
+	rte_tm_node_shared_wred_context_update;
+	rte_tm_node_stats_read;
+	rte_tm_node_stats_update;
+	rte_tm_node_suspend;
+	rte_tm_node_type_get;
+	rte_tm_node_wfq_weight_mode_update;
+	rte_tm_node_wred_context_update;
+	rte_tm_shaper_profile_add;
+	rte_tm_shaper_profile_delete;
+	rte_tm_shared_shaper_add_update;
+	rte_tm_shared_shaper_delete;
+	rte_tm_shared_wred_context_add_update;
+	rte_tm_shared_wred_context_delete;
+	rte_tm_wred_profile_add;
+	rte_tm_wred_profile_delete;
 
 	local: *;
 };
@@ -181,38 +211,6 @@ EXPERIMENTAL {
 	__rte_ethdev_trace_tx_burst;
 	rte_flow_get_aged_flows;
 
-	# Marked as experimental in 20.11
-	rte_tm_capabilities_get;
-	rte_tm_get_number_of_leaf_nodes;
-	rte_tm_hierarchy_commit;
-	rte_tm_level_capabilities_get;
-	rte_tm_mark_ip_dscp;
-	rte_tm_mark_ip_ecn;
-	rte_tm_mark_vlan_dei;
-	rte_tm_node_add;
-	rte_tm_node_capabilities_get;
-	rte_tm_node_cman_update;
-	rte_tm_node_delete;
-	rte_tm_node_parent_update;
-	rte_tm_node_resume;
-	rte_tm_node_shaper_update;
-	rte_tm_node_shared_shaper_update;
-	rte_tm_node_shared_wred_context_update;
-	rte_tm_node_stats_read;
-	rte_tm_node_stats_update;
-	rte_tm_node_suspend;
-	rte_tm_node_type_get;
-	rte_tm_node_wfq_weight_mode_update;
-	rte_tm_node_wred_context_update;
-	rte_tm_shaper_profile_add;
-	rte_tm_shaper_profile_delete;
-	rte_tm_shared_shaper_add_update;
-	rte_tm_shared_shaper_delete;
-	rte_tm_shared_wred_context_add_update;
-	rte_tm_shared_wred_context_delete;
-	rte_tm_wred_profile_add;
-	rte_tm_wred_profile_delete;
-
 	# added in 20.11
 	rte_eth_hairpin_bind;
 	rte_eth_hairpin_get_peer_ports;
-- 
2.39.2


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

* [PATCH v6 04/25] pdump: make API's stable
  2023-10-24  2:39 ` [PATCH v6 00/25] Promite many experimental API's to stable Stephen Hemminger
                     ` (2 preceding siblings ...)
  2023-10-24  2:39   ` [PATCH v6 03/25] ethdev: mark rte_tm API's as stable Stephen Hemminger
@ 2023-10-24  2:39   ` Stephen Hemminger
  3 siblings, 0 replies; 219+ messages in thread
From: Stephen Hemminger @ 2023-10-24  2:39 UTC (permalink / raw)
  To: dev; +Cc: Stephen Hemminger, Bruce Richardson, Reshma Pattan

The filtering API's were added in 22.11 and can now be marked
as not experimental.

Signed-off-by: Stephen Hemminger <stephen@networkplumber.org>
Acked-by: Bruce Richardson <bruce.richardson@intel.com>
---
 lib/pdump/rte_pdump.h | 12 ------------
 lib/pdump/version.map | 11 +++--------
 2 files changed, 3 insertions(+), 20 deletions(-)

diff --git a/lib/pdump/rte_pdump.h b/lib/pdump/rte_pdump.h
index b1a391830c1d..414931a12cce 100644
--- a/lib/pdump/rte_pdump.h
+++ b/lib/pdump/rte_pdump.h
@@ -83,9 +83,6 @@ rte_pdump_enable(uint16_t port, uint16_t queue, uint32_t flags,
 		void *filter);
 
 /**
- * @warning
- * @b EXPERIMENTAL: this API may change, or be removed, without prior notice
- *
  * Enables packet capturing on given port and queue with filtering.
  *
  * @param port_id
@@ -109,7 +106,6 @@ rte_pdump_enable(uint16_t port, uint16_t queue, uint32_t flags,
  * @return
  *    0 on success, -1 on error, rte_errno is set accordingly.
  */
-__rte_experimental
 int
 rte_pdump_enable_bpf(uint16_t port_id, uint16_t queue,
 		     uint32_t flags, uint32_t snaplen,
@@ -169,9 +165,6 @@ rte_pdump_enable_by_deviceid(char *device_id, uint16_t queue,
 				void *filter);
 
 /**
- * @warning
- * @b EXPERIMENTAL: this API may change, or be removed, without prior notice
- *
  * Enables packet capturing on given device id and queue with filtering.
  * device_id can be name or pci address of device.
  *
@@ -196,7 +189,6 @@ rte_pdump_enable_by_deviceid(char *device_id, uint16_t queue,
  * @return
  *    0 on success, -1 on error, rte_errno is set accordingly.
  */
-__rte_experimental
 int
 rte_pdump_enable_bpf_by_deviceid(const char *device_id, uint16_t queue,
 				 uint32_t flags, uint32_t snaplen,
@@ -242,9 +234,6 @@ struct rte_pdump_stats {
 };
 
 /**
- * @warning
- * @b EXPERIMENTAL: this API may change, or be removed, without prior notice
- *
  * Retrieve the packet capture statistics for a queue.
  *
  * @param port_id
@@ -254,7 +243,6 @@ struct rte_pdump_stats {
  * @return
  *   Zero if successful. -1 on error and rte_errno is set.
  */
-__rte_experimental
 int
 rte_pdump_stats(uint16_t port_id, struct rte_pdump_stats *stats);
 
diff --git a/lib/pdump/version.map b/lib/pdump/version.map
index 225830dc85a7..ea5bd157cdb1 100644
--- a/lib/pdump/version.map
+++ b/lib/pdump/version.map
@@ -4,17 +4,12 @@ DPDK_24 {
 	rte_pdump_disable;
 	rte_pdump_disable_by_deviceid;
 	rte_pdump_enable;
+	rte_pdump_enable_bpf;
+	rte_pdump_enable_bpf_by_deviceid;
 	rte_pdump_enable_by_deviceid;
 	rte_pdump_init;
+	rte_pdump_stats;
 	rte_pdump_uninit;
 
 	local: *;
 };
-
-EXPERIMENTAL {
-	global:
-
-	rte_pdump_enable_bpf;
-	rte_pdump_enable_bpf_by_deviceid;
-	rte_pdump_stats;
-};
-- 
2.39.2


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

* [PATCH v7 00/25] Promote 22.11 and older API's to stable
  2023-08-08 17:35 [PATCH 00/20] remove experimental flag from some API's Stephen Hemminger
                   ` (25 preceding siblings ...)
  2023-10-24  2:39 ` [PATCH v6 00/25] Promite many experimental API's to stable Stephen Hemminger
@ 2023-10-24  2:53 ` 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
                     ` (25 more replies)
  2023-10-24  7:20 ` [PATCH 00/20] remove experimental flag from some API's Maxime Coquelin
  27 siblings, 26 replies; 219+ messages in thread
From: Stephen Hemminger @ 2023-10-24  2:53 UTC (permalink / raw)
  To: dev; +Cc: Stephen Hemminger

Since 23.11 is an LTS release it is time to remove the experimental
bandaid off many API's. There are about 890 API's marked with experimental
on current main branch. This addresses the easy to remove ones and
gets it down to about 510 places.

The rule is any API that has been in since 22.11 needs to have
experimental removed (or have API deleted). The experimental flag is not a
"get out of ABI stability for free" card

v7 - fix missing rte_experimental dropped in lib/power

v6 - incorporate review comments
     drop regexdev

Stephen Hemminger (25):
  bpf: make rte_bpf_dump and rte_bpf_convert stable API's
  cmdline: make experimental API's stable
  ethdev: mark rte_tm API's as stable
  pdump: make API's stable
  pcapng: mark API's as stable
  net: remove experimental from functions
  rcu: remove experimental from rte_rcu_qbsr
  lpm: remove experimental
  mbuf: remove experimental from create_extbuf
  hash: remove experimental from toeplitz hash
  timer: remove experimental from rte_timer_next_ticks
  sched: remove experimental
  dmadev: mark API's as not experimental
  meter: remove experimental warning from comments
  power: remove experimental from API's
  kvargs: remove experimental flag
  ip_frag: mark a couple of functions stable
  member: remove experimental tag
  security: remove experimental flag
  bbdev: remove experimental tag
  ipsec: remove experimental from SA API
  compressdev: remove experimental flag
  node: remove some of the experimental tags
  eventdev: make many API's stable
  cryptodev: mark older API's stable

 MAINTAINERS                             |  8 +--
 lib/bbdev/rte_bbdev.h                   |  4 --
 lib/bbdev/rte_bbdev_op.h                |  2 -
 lib/bbdev/version.map                   | 15 ++---
 lib/bpf/rte_bpf.h                       |  2 -
 lib/bpf/version.map                     |  9 +--
 lib/cmdline/cmdline.h                   |  1 -
 lib/cmdline/cmdline_parse.h             |  4 --
 lib/cmdline/cmdline_rdline.h            |  4 --
 lib/cmdline/version.map                 | 26 +++-----
 lib/compressdev/rte_comp.h              |  6 --
 lib/compressdev/rte_compressdev.h       | 26 --------
 lib/compressdev/rte_compressdev_pmd.h   |  6 --
 lib/compressdev/version.map             |  2 +-
 lib/cryptodev/rte_cryptodev.h           | 31 ---------
 lib/cryptodev/version.map               | 77 ++++++++++------------
 lib/dmadev/rte_dmadev.h                 | 85 -------------------------
 lib/dmadev/version.map                  |  2 +-
 lib/ethdev/rte_tm.h                     | 34 ----------
 lib/ethdev/version.map                  | 62 +++++++++---------
 lib/eventdev/rte_event_crypto_adapter.h |  4 --
 lib/eventdev/rte_event_eth_rx_adapter.h |  6 --
 lib/eventdev/rte_event_eth_tx_adapter.h |  3 -
 lib/eventdev/rte_event_timer_adapter.h  |  3 -
 lib/eventdev/rte_eventdev.h             |  4 --
 lib/eventdev/version.map                | 34 ++++------
 lib/hash/rte_thash.h                    | 44 -------------
 lib/hash/rte_thash_gfni.h               |  8 ---
 lib/hash/rte_thash_x86_gfni.h           |  8 ---
 lib/hash/version.map                    | 16 ++---
 lib/ip_frag/rte_ip_frag.h               |  2 -
 lib/ip_frag/version.map                 |  9 +--
 lib/ipsec/rte_ipsec.h                   |  2 -
 lib/ipsec/version.map                   |  9 +--
 lib/kvargs/rte_kvargs.h                 |  4 --
 lib/kvargs/version.map                  |  8 +--
 lib/lpm/rte_lpm.h                       |  4 --
 lib/lpm/version.map                     |  7 +-
 lib/mbuf/rte_mbuf.h                     |  1 -
 lib/mbuf/version.map                    |  8 +--
 lib/member/rte_member.h                 | 54 ----------------
 lib/member/version.map                  | 12 +---
 lib/meter/rte_meter.h                   | 12 ----
 lib/net/rte_ip.h                        | 19 ------
 lib/node/rte_node_eth_api.h             |  1 -
 lib/node/rte_node_ip4_api.h             |  2 -
 lib/node/version.map                    | 16 +++--
 lib/pcapng/rte_pcapng.h                 | 11 ----
 lib/pcapng/version.map                  |  6 +-
 lib/pdump/rte_pdump.h                   | 12 ----
 lib/pdump/version.map                   | 11 +---
 lib/power/rte_power.h                   |  4 --
 lib/power/rte_power_guest_channel.h     |  4 --
 lib/power/rte_power_pmd_mgmt.h          | 40 ------------
 lib/power/rte_power_uncore.h            |  2 -
 lib/power/version.map                   | 37 +++++------
 lib/rcu/rte_rcu_qsbr.h                  | 20 ------
 lib/rcu/version.map                     | 15 ++---
 lib/sched/rte_pie.h                     |  8 ---
 lib/sched/rte_sched.h                   |  5 --
 lib/sched/version.map                   | 18 ++----
 lib/security/rte_security.h             | 35 ----------
 lib/security/version.map                | 18 +++---
 lib/timer/rte_timer.h                   |  4 --
 lib/timer/version.map                   |  7 +-
 65 files changed, 161 insertions(+), 802 deletions(-)

-- 
2.39.2


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

* [PATCH v7 01/25] bpf: make rte_bpf_dump and rte_bpf_convert stable API's
  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   ` Stephen Hemminger
  2023-10-24  2:53   ` [PATCH v7 02/25] cmdline: make experimental API's stable Stephen Hemminger
                     ` (24 subsequent siblings)
  25 siblings, 0 replies; 219+ messages in thread
From: Stephen Hemminger @ 2023-10-24  2:53 UTC (permalink / raw)
  To: dev; +Cc: Stephen Hemminger, Konstantin Ananyev

These two API's were introduced in 22.11 and can now be
made not experimental.

Signed-off-by: Stephen Hemminger <stephen@networkplumber.org>
Acked-by: Konstantin Ananyev <konstantin.v.ananyev@yandex.ru>
---
 lib/bpf/rte_bpf.h   | 2 --
 lib/bpf/version.map | 9 ++-------
 2 files changed, 2 insertions(+), 9 deletions(-)

diff --git a/lib/bpf/rte_bpf.h b/lib/bpf/rte_bpf.h
index 4d71120dbd9d..f70d8dacd0d3 100644
--- a/lib/bpf/rte_bpf.h
+++ b/lib/bpf/rte_bpf.h
@@ -209,7 +209,6 @@ rte_bpf_get_jit(const struct rte_bpf *bpf, struct rte_bpf_jit *jit);
  * @param len
  *   Number of BPF instructions to dump.
  */
-__rte_experimental
 void
 rte_bpf_dump(FILE *f, const struct ebpf_insn *buf, uint32_t len);
 
@@ -229,7 +228,6 @@ struct bpf_program;
  *   - ENOMEM - can't reserve enough memory
  *   - ENOTSUP - operation not supported
  */
-__rte_experimental
 struct rte_bpf_prm *
 rte_bpf_convert(const struct bpf_program *prog);
 
diff --git a/lib/bpf/version.map b/lib/bpf/version.map
index c49bf1701f0a..2e957494e9df 100644
--- a/lib/bpf/version.map
+++ b/lib/bpf/version.map
@@ -1,7 +1,9 @@
 DPDK_24 {
 	global:
 
+	rte_bpf_convert;
 	rte_bpf_destroy;
+	rte_bpf_dump;
 	rte_bpf_elf_load;
 	rte_bpf_eth_rx_elf_load;
 	rte_bpf_eth_rx_unload;
@@ -14,10 +16,3 @@ DPDK_24 {
 
 	local: *;
 };
-
-EXPERIMENTAL {
-	global:
-
-	rte_bpf_convert;
-	rte_bpf_dump;
-};
-- 
2.39.2


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

* [PATCH v7 02/25] cmdline: make experimental API's stable
  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   ` Stephen Hemminger
  2023-10-24  2:54   ` [PATCH v7 03/25] ethdev: mark rte_tm API's as stable Stephen Hemminger
                     ` (23 subsequent siblings)
  25 siblings, 0 replies; 219+ messages in thread
From: Stephen Hemminger @ 2023-10-24  2:53 UTC (permalink / raw)
  To: dev; +Cc: Stephen Hemminger, Bruce Richardson

These API's have all ben around for several releases.

Signed-off-by: Stephen Hemminger <stephen@networkplumber.org>
Acked-by: Bruce Richardson <bruce.richardson@intel.com>
---
 lib/cmdline/cmdline.h        |  1 -
 lib/cmdline/cmdline_parse.h  |  4 ----
 lib/cmdline/cmdline_rdline.h |  4 ----
 lib/cmdline/version.map      | 26 ++++++++------------------
 4 files changed, 8 insertions(+), 27 deletions(-)

diff --git a/lib/cmdline/cmdline.h b/lib/cmdline/cmdline.h
index 992c84591456..dd41e1054378 100644
--- a/lib/cmdline/cmdline.h
+++ b/lib/cmdline/cmdline.h
@@ -39,7 +39,6 @@ void cmdline_printf(const struct cmdline *cl, const char *fmt, ...)
 int cmdline_in(struct cmdline *cl, const char *buf, int size);
 int cmdline_write_char(struct rdline *rdl, char c);
 
-__rte_experimental
 struct rdline *
 cmdline_get_rdline(struct cmdline *cl);
 
diff --git a/lib/cmdline/cmdline_parse.h b/lib/cmdline/cmdline_parse.h
index a852ac411c59..41b4db1f76f9 100644
--- a/lib/cmdline/cmdline_parse.h
+++ b/lib/cmdline/cmdline_parse.h
@@ -155,9 +155,6 @@ typedef cmdline_parse_inst_t *cmdline_parse_ctx_t;
 int cmdline_parse(struct cmdline *cl, const char *buf);
 
 /**
- * @warning
- * @b EXPERIMENTAL: this API may change without prior notice
- *
  * Try to parse a buffer according to the specified context, but do not
  * perform any function calls if parse is successful.
  *
@@ -166,7 +163,6 @@ int cmdline_parse(struct cmdline *cl, const char *buf);
  * CMDLINE_PARSE_BAD_ARGS on error and returns the parsed line length (>=0)
  * on successful parse.
  */
-__rte_experimental
 int cmdline_parse_check(struct cmdline *cl, const char *buf);
 
 /**
diff --git a/lib/cmdline/cmdline_rdline.h b/lib/cmdline/cmdline_rdline.h
index 1b4cc7ce5773..c6bb6bbbb36a 100644
--- a/lib/cmdline/cmdline_rdline.h
+++ b/lib/cmdline/cmdline_rdline.h
@@ -58,7 +58,6 @@ typedef int (rdline_complete_t)(struct rdline *rdl, const char *buf,
  *
  * \return New rdline object on success, NULL on failure.
  */
-__rte_experimental
 struct rdline *rdline_new(rdline_write_char_t *write_char,
 			  rdline_validate_t *validate,
 			  rdline_complete_t *complete,
@@ -70,7 +69,6 @@ struct rdline *rdline_new(rdline_write_char_t *write_char,
  * \param rdl A pointer to an initialized struct rdline.
  *            If NULL, this function is a no-op.
  */
-__rte_experimental
 void rdline_free(struct rdline *rdl);
 
 /**
@@ -163,13 +161,11 @@ char *rdline_get_history_item(struct rdline *rdl, unsigned int i);
 /**
  * Get maximum history buffer size.
  */
-__rte_experimental
 size_t rdline_get_history_buffer_size(struct rdline *rdl);
 
 /**
  * Get the opaque pointer supplied on struct rdline creation.
  */
-__rte_experimental
 void *rdline_get_opaque(struct rdline *rdl);
 
 #ifdef __cplusplus
diff --git a/lib/cmdline/version.map b/lib/cmdline/version.map
index 97166789016c..88174e39bcb7 100644
--- a/lib/cmdline/version.map
+++ b/lib/cmdline/version.map
@@ -30,11 +30,13 @@ DPDK_24 {
 	cmdline_get_help_num;
 	cmdline_get_help_portlist;
 	cmdline_get_help_string;
+	cmdline_get_rdline;
 	cmdline_in;
 	cmdline_interact;
 	cmdline_isendoftoken;
 	cmdline_new;
 	cmdline_parse;
+	cmdline_parse_check;
 	cmdline_parse_etheraddr;
 	cmdline_parse_ipaddr;
 	cmdline_parse_num;
@@ -51,37 +53,25 @@ DPDK_24 {
 	cmdline_token_portlist_ops;
 	cmdline_token_string_ops;
 	cmdline_write_char;
+
 	rdline_add_history;
 	rdline_char_in;
 	rdline_clear_history;
+	rdline_free;
 	rdline_get_buffer;
+	rdline_get_history_buffer_size;
 	rdline_get_history_item;
+	rdline_get_opaque;
+	rdline_new;
 	rdline_newline;
 	rdline_quit;
 	rdline_redisplay;
 	rdline_reset;
 	rdline_restart;
 	rdline_stop;
+
 	vt100_init;
 	vt100_parser;
 
 	local: *;
 };
-
-EXPERIMENTAL {
-	global:
-
-	# added in 20.11
-	cmdline_get_rdline;
-
-	# added in 21.11
-	rdline_new;
-	rdline_free;
-	rdline_get_history_buffer_size;
-	rdline_get_opaque;
-
-	# added in 22.07
-	cmdline_parse_check;
-
-	local: *;
-};
-- 
2.39.2


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

* [PATCH v7 03/25] ethdev: mark rte_tm API's as stable
  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   ` Stephen Hemminger
  2023-10-24  2:54   ` [PATCH v7 04/25] pdump: make API's stable Stephen Hemminger
                     ` (22 subsequent siblings)
  25 siblings, 0 replies; 219+ messages in thread
From: Stephen Hemminger @ 2023-10-24  2:54 UTC (permalink / raw)
  To: dev
  Cc: Stephen Hemminger, Cristian Dumitrescu, Thomas Monjalon,
	Ferruh Yigit, Andrew Rybchenko

These API's have been around since 20.11, mark them as not
experimental.

Signed-off-by: Stephen Hemminger <stephen@networkplumber.org>
Acked-by: Cristian Dumitrescu <cristian.dumitrescu@intel.com>
---
 MAINTAINERS            |  2 +-
 lib/ethdev/rte_tm.h    | 34 -----------------------
 lib/ethdev/version.map | 62 ++++++++++++++++++++----------------------
 3 files changed, 31 insertions(+), 67 deletions(-)

diff --git a/MAINTAINERS b/MAINTAINERS
index 4083658697fb..e5d92aa74926 100644
--- a/MAINTAINERS
+++ b/MAINTAINERS
@@ -421,7 +421,7 @@ F: app/test-pmd/cmdline_flow.c
 F: doc/guides/prog_guide/rte_flow.rst
 F: lib/ethdev/rte_flow*
 
-Traffic Management API - EXPERIMENTAL
+Traffic Management API
 M: Cristian Dumitrescu <cristian.dumitrescu@intel.com>
 T: git://dpdk.org/next/dpdk-next-net
 F: lib/ethdev/rte_tm*
diff --git a/lib/ethdev/rte_tm.h b/lib/ethdev/rte_tm.h
index 08c5fafecdf3..799b92aadaa9 100644
--- a/lib/ethdev/rte_tm.h
+++ b/lib/ethdev/rte_tm.h
@@ -14,10 +14,6 @@
  * This interface provides the ability to configure the traffic manager in a
  * generic way. It includes features such as: hierarchical scheduling,
  * traffic shaping, congestion management, packet marking, etc.
- *
- * @warning
- * @b EXPERIMENTAL:
- * All functions in this file may be changed or removed without prior notice.
  */
 
 #include <stdint.h>
@@ -1242,7 +1238,6 @@ struct rte_tm_error {
  * @return
  *   0 on success, non-zero error code otherwise.
  */
-__rte_experimental
 int
 rte_tm_get_number_of_leaf_nodes(uint16_t port_id,
 	uint32_t *n_leaf_nodes,
@@ -1267,7 +1262,6 @@ rte_tm_get_number_of_leaf_nodes(uint16_t port_id,
  * @return
  *   0 on success, non-zero error code otherwise.
  */
-__rte_experimental
 int
 rte_tm_node_type_get(uint16_t port_id,
 	uint32_t node_id,
@@ -1286,7 +1280,6 @@ rte_tm_node_type_get(uint16_t port_id,
  * @return
  *   0 on success, non-zero error code otherwise.
  */
-__rte_experimental
 int
 rte_tm_capabilities_get(uint16_t port_id,
 	struct rte_tm_capabilities *cap,
@@ -1307,7 +1300,6 @@ rte_tm_capabilities_get(uint16_t port_id,
  * @return
  *   0 on success, non-zero error code otherwise.
  */
-__rte_experimental
 int
 rte_tm_level_capabilities_get(uint16_t port_id,
 	uint32_t level_id,
@@ -1328,7 +1320,6 @@ rte_tm_level_capabilities_get(uint16_t port_id,
  * @return
  *   0 on success, non-zero error code otherwise.
  */
-__rte_experimental
 int
 rte_tm_node_capabilities_get(uint16_t port_id,
 	uint32_t node_id,
@@ -1354,7 +1345,6 @@ rte_tm_node_capabilities_get(uint16_t port_id,
  *
  * @see struct rte_tm_capabilities::cman_wred_context_n_max
  */
-__rte_experimental
 int
 rte_tm_wred_profile_add(uint16_t port_id,
 	uint32_t wred_profile_id,
@@ -1378,7 +1368,6 @@ rte_tm_wred_profile_add(uint16_t port_id,
  *
  * @see struct rte_tm_capabilities::cman_wred_context_n_max
  */
-__rte_experimental
 int
 rte_tm_wred_profile_delete(uint16_t port_id,
 	uint32_t wred_profile_id,
@@ -1410,7 +1399,6 @@ rte_tm_wred_profile_delete(uint16_t port_id,
  *
  * @see struct rte_tm_capabilities::cman_wred_context_shared_n_max
  */
-__rte_experimental
 int
 rte_tm_shared_wred_context_add_update(uint16_t port_id,
 	uint32_t shared_wred_context_id,
@@ -1435,7 +1423,6 @@ rte_tm_shared_wred_context_add_update(uint16_t port_id,
  *
  * @see struct rte_tm_capabilities::cman_wred_context_shared_n_max
  */
-__rte_experimental
 int
 rte_tm_shared_wred_context_delete(uint16_t port_id,
 	uint32_t shared_wred_context_id,
@@ -1460,7 +1447,6 @@ rte_tm_shared_wred_context_delete(uint16_t port_id,
  *
  * @see struct rte_tm_capabilities::shaper_n_max
  */
-__rte_experimental
 int
 rte_tm_shaper_profile_add(uint16_t port_id,
 	uint32_t shaper_profile_id,
@@ -1484,7 +1470,6 @@ rte_tm_shaper_profile_add(uint16_t port_id,
  *
  * @see struct rte_tm_capabilities::shaper_n_max
  */
-__rte_experimental
 int
 rte_tm_shaper_profile_delete(uint16_t port_id,
 	uint32_t shaper_profile_id,
@@ -1514,7 +1499,6 @@ rte_tm_shaper_profile_delete(uint16_t port_id,
  *
  * @see struct rte_tm_capabilities::shaper_shared_n_max
  */
-__rte_experimental
 int
 rte_tm_shared_shaper_add_update(uint16_t port_id,
 	uint32_t shared_shaper_id,
@@ -1538,7 +1522,6 @@ rte_tm_shared_shaper_add_update(uint16_t port_id,
  *
  * @see struct rte_tm_capabilities::shaper_shared_n_max
  */
-__rte_experimental
 int
 rte_tm_shared_shaper_delete(uint16_t port_id,
 	uint32_t shared_shaper_id,
@@ -1607,7 +1590,6 @@ rte_tm_shared_shaper_delete(uint16_t port_id,
  * @see RTE_TM_NODE_LEVEL_ID_ANY
  * @see struct rte_tm_capabilities
  */
-__rte_experimental
 int
 rte_tm_node_add(uint16_t port_id,
 	uint32_t node_id,
@@ -1641,7 +1623,6 @@ rte_tm_node_add(uint16_t port_id,
  *
  * @see RTE_TM_UPDATE_NODE_ADD_DELETE
  */
-__rte_experimental
 int
 rte_tm_node_delete(uint16_t port_id,
 	uint32_t node_id,
@@ -1666,7 +1647,6 @@ rte_tm_node_delete(uint16_t port_id,
  * @see rte_tm_node_resume()
  * @see RTE_TM_UPDATE_NODE_SUSPEND_RESUME
  */
-__rte_experimental
 int
 rte_tm_node_suspend(uint16_t port_id,
 	uint32_t node_id,
@@ -1690,7 +1670,6 @@ rte_tm_node_suspend(uint16_t port_id,
  * @see rte_tm_node_suspend()
  * @see RTE_TM_UPDATE_NODE_SUSPEND_RESUME
  */
-__rte_experimental
 int
 rte_tm_node_resume(uint16_t port_id,
 	uint32_t node_id,
@@ -1732,7 +1711,6 @@ rte_tm_node_resume(uint16_t port_id,
  * @see rte_tm_node_add()
  * @see rte_tm_node_delete()
  */
-__rte_experimental
 int
 rte_tm_hierarchy_commit(uint16_t port_id,
 	int clear_on_fail,
@@ -1773,7 +1751,6 @@ rte_tm_hierarchy_commit(uint16_t port_id,
  * @see RTE_TM_UPDATE_NODE_PARENT_KEEP_LEVEL
  * @see RTE_TM_UPDATE_NODE_PARENT_CHANGE_LEVEL
  */
-__rte_experimental
 int
 rte_tm_node_parent_update(uint16_t port_id,
 	uint32_t node_id,
@@ -1803,7 +1780,6 @@ rte_tm_node_parent_update(uint16_t port_id,
  *
  * @see struct rte_tm_capabilities::shaper_private_n_max
  */
-__rte_experimental
 int
 rte_tm_node_shaper_update(uint16_t port_id,
 	uint32_t node_id,
@@ -1831,7 +1807,6 @@ rte_tm_node_shaper_update(uint16_t port_id,
  *
  * @see struct rte_tm_capabilities::shaper_shared_n_max
  */
-__rte_experimental
 int
 rte_tm_node_shared_shaper_update(uint16_t port_id,
 	uint32_t node_id,
@@ -1859,7 +1834,6 @@ rte_tm_node_shared_shaper_update(uint16_t port_id,
  * @see enum rte_tm_stats_type
  * @see RTE_TM_UPDATE_NODE_STATS
  */
-__rte_experimental
 int
 rte_tm_node_stats_update(uint16_t port_id,
 	uint32_t node_id,
@@ -1888,7 +1862,6 @@ rte_tm_node_stats_update(uint16_t port_id,
  * @see RTE_TM_UPDATE_NODE_WFQ_WEIGHT_MODE
  * @see RTE_TM_UPDATE_NODE_N_SP_PRIORITIES
  */
-__rte_experimental
 int
 rte_tm_node_wfq_weight_mode_update(uint16_t port_id,
 	uint32_t node_id,
@@ -1912,7 +1885,6 @@ rte_tm_node_wfq_weight_mode_update(uint16_t port_id,
  *
  * @see RTE_TM_UPDATE_NODE_CMAN
  */
-__rte_experimental
 int
 rte_tm_node_cman_update(uint16_t port_id,
 	uint32_t node_id,
@@ -1937,7 +1909,6 @@ rte_tm_node_cman_update(uint16_t port_id,
  *
  * @see struct rte_tm_capabilities::cman_wred_context_private_n_max
  */
-__rte_experimental
 int
 rte_tm_node_wred_context_update(uint16_t port_id,
 	uint32_t node_id,
@@ -1963,7 +1934,6 @@ rte_tm_node_wred_context_update(uint16_t port_id,
  *
  * @see struct rte_tm_capabilities::cman_wred_context_shared_n_max
  */
-__rte_experimental
 int
 rte_tm_node_shared_wred_context_update(uint16_t port_id,
 	uint32_t node_id,
@@ -1996,7 +1966,6 @@ rte_tm_node_shared_wred_context_update(uint16_t port_id,
  *
  * @see enum rte_tm_stats_type
  */
-__rte_experimental
 int
 rte_tm_node_stats_read(uint16_t port_id,
 	uint32_t node_id,
@@ -2034,7 +2003,6 @@ rte_tm_node_stats_read(uint16_t port_id,
  *
  * @see struct rte_tm_capabilities::mark_vlan_dei_supported
  */
-__rte_experimental
 int
 rte_tm_mark_vlan_dei(uint16_t port_id,
 	int mark_green,
@@ -2085,7 +2053,6 @@ rte_tm_mark_vlan_dei(uint16_t port_id,
  * @see struct rte_tm_capabilities::mark_ip_ecn_tcp_supported
  * @see struct rte_tm_capabilities::mark_ip_ecn_sctp_supported
  */
-__rte_experimental
 int
 rte_tm_mark_ip_ecn(uint16_t port_id,
 	int mark_green,
@@ -2134,7 +2101,6 @@ rte_tm_mark_ip_ecn(uint16_t port_id,
  *
  * @see struct rte_tm_capabilities::mark_ip_dscp_supported
  */
-__rte_experimental
 int
 rte_tm_mark_ip_dscp(uint16_t port_id,
 	int mark_green,
diff --git a/lib/ethdev/version.map b/lib/ethdev/version.map
index 919ba5b8e65b..072ad3401235 100644
--- a/lib/ethdev/version.map
+++ b/lib/ethdev/version.map
@@ -135,6 +135,36 @@ DPDK_24 {
 	rte_flow_pick_transfer_proxy;
 	rte_flow_query;
 	rte_flow_validate;
+	rte_tm_capabilities_get;
+	rte_tm_get_number_of_leaf_nodes;
+	rte_tm_hierarchy_commit;
+	rte_tm_level_capabilities_get;
+	rte_tm_mark_ip_dscp;
+	rte_tm_mark_ip_ecn;
+	rte_tm_mark_vlan_dei;
+	rte_tm_node_add;
+	rte_tm_node_capabilities_get;
+	rte_tm_node_cman_update;
+	rte_tm_node_delete;
+	rte_tm_node_parent_update;
+	rte_tm_node_resume;
+	rte_tm_node_shaper_update;
+	rte_tm_node_shared_shaper_update;
+	rte_tm_node_shared_wred_context_update;
+	rte_tm_node_stats_read;
+	rte_tm_node_stats_update;
+	rte_tm_node_suspend;
+	rte_tm_node_type_get;
+	rte_tm_node_wfq_weight_mode_update;
+	rte_tm_node_wred_context_update;
+	rte_tm_shaper_profile_add;
+	rte_tm_shaper_profile_delete;
+	rte_tm_shared_shaper_add_update;
+	rte_tm_shared_shaper_delete;
+	rte_tm_shared_wred_context_add_update;
+	rte_tm_shared_wred_context_delete;
+	rte_tm_wred_profile_add;
+	rte_tm_wred_profile_delete;
 
 	local: *;
 };
@@ -181,38 +211,6 @@ EXPERIMENTAL {
 	__rte_ethdev_trace_tx_burst;
 	rte_flow_get_aged_flows;
 
-	# Marked as experimental in 20.11
-	rte_tm_capabilities_get;
-	rte_tm_get_number_of_leaf_nodes;
-	rte_tm_hierarchy_commit;
-	rte_tm_level_capabilities_get;
-	rte_tm_mark_ip_dscp;
-	rte_tm_mark_ip_ecn;
-	rte_tm_mark_vlan_dei;
-	rte_tm_node_add;
-	rte_tm_node_capabilities_get;
-	rte_tm_node_cman_update;
-	rte_tm_node_delete;
-	rte_tm_node_parent_update;
-	rte_tm_node_resume;
-	rte_tm_node_shaper_update;
-	rte_tm_node_shared_shaper_update;
-	rte_tm_node_shared_wred_context_update;
-	rte_tm_node_stats_read;
-	rte_tm_node_stats_update;
-	rte_tm_node_suspend;
-	rte_tm_node_type_get;
-	rte_tm_node_wfq_weight_mode_update;
-	rte_tm_node_wred_context_update;
-	rte_tm_shaper_profile_add;
-	rte_tm_shaper_profile_delete;
-	rte_tm_shared_shaper_add_update;
-	rte_tm_shared_shaper_delete;
-	rte_tm_shared_wred_context_add_update;
-	rte_tm_shared_wred_context_delete;
-	rte_tm_wred_profile_add;
-	rte_tm_wred_profile_delete;
-
 	# added in 20.11
 	rte_eth_hairpin_bind;
 	rte_eth_hairpin_get_peer_ports;
-- 
2.39.2


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

* [PATCH v7 04/25] pdump: make API's stable
  2023-10-24  2:53 ` [PATCH v7 00/25] Promote 22.11 and older API's to stable Stephen Hemminger
                     ` (2 preceding siblings ...)
  2023-10-24  2:54   ` [PATCH v7 03/25] ethdev: mark rte_tm API's as stable Stephen Hemminger
@ 2023-10-24  2:54   ` Stephen Hemminger
  2023-10-24  2:54   ` [PATCH v7 05/25] pcapng: mark API's as stable Stephen Hemminger
                     ` (21 subsequent siblings)
  25 siblings, 0 replies; 219+ messages in thread
From: Stephen Hemminger @ 2023-10-24  2:54 UTC (permalink / raw)
  To: dev; +Cc: Stephen Hemminger, Bruce Richardson, Reshma Pattan

The filtering API's were added in 22.11 and can now be marked
as not experimental.

Signed-off-by: Stephen Hemminger <stephen@networkplumber.org>
Acked-by: Bruce Richardson <bruce.richardson@intel.com>
---
 lib/pdump/rte_pdump.h | 12 ------------
 lib/pdump/version.map | 11 +++--------
 2 files changed, 3 insertions(+), 20 deletions(-)

diff --git a/lib/pdump/rte_pdump.h b/lib/pdump/rte_pdump.h
index b1a391830c1d..414931a12cce 100644
--- a/lib/pdump/rte_pdump.h
+++ b/lib/pdump/rte_pdump.h
@@ -83,9 +83,6 @@ rte_pdump_enable(uint16_t port, uint16_t queue, uint32_t flags,
 		void *filter);
 
 /**
- * @warning
- * @b EXPERIMENTAL: this API may change, or be removed, without prior notice
- *
  * Enables packet capturing on given port and queue with filtering.
  *
  * @param port_id
@@ -109,7 +106,6 @@ rte_pdump_enable(uint16_t port, uint16_t queue, uint32_t flags,
  * @return
  *    0 on success, -1 on error, rte_errno is set accordingly.
  */
-__rte_experimental
 int
 rte_pdump_enable_bpf(uint16_t port_id, uint16_t queue,
 		     uint32_t flags, uint32_t snaplen,
@@ -169,9 +165,6 @@ rte_pdump_enable_by_deviceid(char *device_id, uint16_t queue,
 				void *filter);
 
 /**
- * @warning
- * @b EXPERIMENTAL: this API may change, or be removed, without prior notice
- *
  * Enables packet capturing on given device id and queue with filtering.
  * device_id can be name or pci address of device.
  *
@@ -196,7 +189,6 @@ rte_pdump_enable_by_deviceid(char *device_id, uint16_t queue,
  * @return
  *    0 on success, -1 on error, rte_errno is set accordingly.
  */
-__rte_experimental
 int
 rte_pdump_enable_bpf_by_deviceid(const char *device_id, uint16_t queue,
 				 uint32_t flags, uint32_t snaplen,
@@ -242,9 +234,6 @@ struct rte_pdump_stats {
 };
 
 /**
- * @warning
- * @b EXPERIMENTAL: this API may change, or be removed, without prior notice
- *
  * Retrieve the packet capture statistics for a queue.
  *
  * @param port_id
@@ -254,7 +243,6 @@ struct rte_pdump_stats {
  * @return
  *   Zero if successful. -1 on error and rte_errno is set.
  */
-__rte_experimental
 int
 rte_pdump_stats(uint16_t port_id, struct rte_pdump_stats *stats);
 
diff --git a/lib/pdump/version.map b/lib/pdump/version.map
index 225830dc85a7..ea5bd157cdb1 100644
--- a/lib/pdump/version.map
+++ b/lib/pdump/version.map
@@ -4,17 +4,12 @@ DPDK_24 {
 	rte_pdump_disable;
 	rte_pdump_disable_by_deviceid;
 	rte_pdump_enable;
+	rte_pdump_enable_bpf;
+	rte_pdump_enable_bpf_by_deviceid;
 	rte_pdump_enable_by_deviceid;
 	rte_pdump_init;
+	rte_pdump_stats;
 	rte_pdump_uninit;
 
 	local: *;
 };
-
-EXPERIMENTAL {
-	global:
-
-	rte_pdump_enable_bpf;
-	rte_pdump_enable_bpf_by_deviceid;
-	rte_pdump_stats;
-};
-- 
2.39.2


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

* [PATCH v7 05/25] pcapng: mark API's as stable
  2023-10-24  2:53 ` [PATCH v7 00/25] Promote 22.11 and older API's to stable Stephen Hemminger
                     ` (3 preceding siblings ...)
  2023-10-24  2:54   ` [PATCH v7 04/25] pdump: make API's stable Stephen Hemminger
@ 2023-10-24  2:54   ` Stephen Hemminger
  2023-10-24  2:54   ` [PATCH v7 06/25] net: remove experimental from functions Stephen Hemminger
                     ` (20 subsequent siblings)
  25 siblings, 0 replies; 219+ messages in thread
From: Stephen Hemminger @ 2023-10-24  2:54 UTC (permalink / raw)
  To: dev; +Cc: Stephen Hemminger, Reshma Pattan

This API was added in 22.11 and can now be marked as not
experimental.

Signed-off-by: Stephen Hemminger <stephen@networkplumber.org>
---
 lib/pcapng/rte_pcapng.h | 11 -----------
 lib/pcapng/version.map  |  6 ++----
 2 files changed, 2 insertions(+), 15 deletions(-)

diff --git a/lib/pcapng/rte_pcapng.h b/lib/pcapng/rte_pcapng.h
index d93cc9f73ad5..c96c8994f38b 100644
--- a/lib/pcapng/rte_pcapng.h
+++ b/lib/pcapng/rte_pcapng.h
@@ -6,10 +6,6 @@
  * @file
  * RTE pcapng
  *
- * @warning
- * @b EXPERIMENTAL:
- * All functions in this file may be changed or removed without prior notice.
- *
  * Pcapng is an evolution from the pcap format, created to address some of
  * its deficiencies. Namely, the lack of extensibility and inability to store
  * additional information.
@@ -54,7 +50,6 @@ typedef struct rte_pcapng rte_pcapng_t;
  * @return
  *   handle to library, or NULL in case of error (and rte_errno is set).
  */
-__rte_experimental
 rte_pcapng_t *
 rte_pcapng_fdopen(int fd,
 		  const char *osname, const char *hardware,
@@ -66,7 +61,6 @@ rte_pcapng_fdopen(int fd,
  * @param self
  *  handle to library
  */
-__rte_experimental
 void
 rte_pcapng_close(rte_pcapng_t *self);
 
@@ -89,7 +83,6 @@ rte_pcapng_close(rte_pcapng_t *self);
  * and before any packet record. All ports used in packet capture
  * must be added.
  */
-__rte_experimental
 int
 rte_pcapng_add_interface(rte_pcapng_t *self, uint16_t port,
 			 const char *ifname, const char *ifdescr,
@@ -132,7 +125,6 @@ enum rte_pcapng_direction {
  *   - The pointer to the new mbuf formatted for pcapng_write
  *   - NULL if allocation fails.
  */
-__rte_experimental
 struct rte_mbuf *
 rte_pcapng_copy(uint16_t port_id, uint32_t queue,
 		const struct rte_mbuf *m, struct rte_mempool *mp,
@@ -149,7 +141,6 @@ rte_pcapng_copy(uint16_t port_id, uint32_t queue,
  *   The minimum size of mbuf data to handle packet with length bytes.
  *   Accounting for required header and trailer fields
  */
-__rte_experimental
 uint32_t
 rte_pcapng_mbuf_size(uint32_t length);
 
@@ -174,7 +165,6 @@ rte_pcapng_mbuf_size(uint32_t length);
  *  The number of bytes written to file, -1 on failure to write file.
  *  The mbuf's in *pkts* are always freed.
  */
-__rte_experimental
 ssize_t
 rte_pcapng_write_packets(rte_pcapng_t *self,
 			 struct rte_mbuf *pkts[], uint16_t nb_pkts);
@@ -205,7 +195,6 @@ rte_pcapng_write_packets(rte_pcapng_t *self,
  * @return
  *  number of bytes written to file, -1 on failure to write file
  */
-__rte_experimental
 ssize_t
 rte_pcapng_write_stats(rte_pcapng_t *self, uint16_t port,
 		       const char *comment,
diff --git a/lib/pcapng/version.map b/lib/pcapng/version.map
index 36393914d97c..81c9652ad6b5 100644
--- a/lib/pcapng/version.map
+++ b/lib/pcapng/version.map
@@ -1,6 +1,7 @@
-EXPERIMENTAL {
+DPDK_24 {
 	global:
 
+	rte_pcapng_add_interface;
 	rte_pcapng_close;
 	rte_pcapng_copy;
 	rte_pcapng_fdopen;
@@ -8,8 +9,5 @@ EXPERIMENTAL {
 	rte_pcapng_write_packets;
 	rte_pcapng_write_stats;
 
-	# added in 23.03
-	rte_pcapng_add_interface;
-
 	local: *;
 };
-- 
2.39.2


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

* [PATCH v7 06/25] net: remove experimental from functions
  2023-10-24  2:53 ` [PATCH v7 00/25] Promote 22.11 and older API's to stable Stephen Hemminger
                     ` (4 preceding siblings ...)
  2023-10-24  2:54   ` [PATCH v7 05/25] pcapng: mark API's as stable Stephen Hemminger
@ 2023-10-24  2:54   ` Stephen Hemminger
  2023-10-24  2:54   ` [PATCH v7 07/25] rcu: remove experimental from rte_rcu_qbsr Stephen Hemminger
                     ` (19 subsequent siblings)
  25 siblings, 0 replies; 219+ messages in thread
From: Stephen Hemminger @ 2023-10-24  2:54 UTC (permalink / raw)
  To: dev; +Cc: Stephen Hemminger

These functions have been around long enough should no
longer be experimental.

Signed-off-by: Stephen Hemminger <stephen@networkplumber.org>
---
 lib/net/rte_ip.h | 19 -------------------
 1 file changed, 19 deletions(-)

diff --git a/lib/net/rte_ip.h b/lib/net/rte_ip.h
index 7f58dc6f6a9c..2cb5be222cdd 100644
--- a/lib/net/rte_ip.h
+++ b/lib/net/rte_ip.h
@@ -435,9 +435,6 @@ __rte_ipv4_udptcp_cksum_mbuf(const struct rte_mbuf *m,
 }
 
 /**
- * @warning
- * @b EXPERIMENTAL: this API may change without prior notice.
- *
  * Compute the IPv4 UDP/TCP checksum of a packet.
  *
  * @param m
@@ -449,7 +446,6 @@ __rte_ipv4_udptcp_cksum_mbuf(const struct rte_mbuf *m,
  * @return
  *   The complemented checksum to set in the L4 header.
  */
-__rte_experimental
 static inline uint16_t
 rte_ipv4_udptcp_cksum_mbuf(const struct rte_mbuf *m,
 			   const struct rte_ipv4_hdr *ipv4_hdr, uint16_t l4_off)
@@ -482,7 +478,6 @@ rte_ipv4_udptcp_cksum_mbuf(const struct rte_mbuf *m,
  * @return
  *   Return 0 if the checksum is correct, else -1.
  */
-__rte_experimental
 static inline int
 rte_ipv4_udptcp_cksum_verify(const struct rte_ipv4_hdr *ipv4_hdr,
 			     const void *l4_hdr)
@@ -496,9 +491,6 @@ rte_ipv4_udptcp_cksum_verify(const struct rte_ipv4_hdr *ipv4_hdr,
 }
 
 /**
- * @warning
- * @b EXPERIMENTAL: this API may change without prior notice.
- *
  * Verify the IPv4 UDP/TCP checksum of a packet.
  *
  * In case of UDP, the caller must first check if udp_hdr->dgram_cksum is 0
@@ -513,7 +505,6 @@ rte_ipv4_udptcp_cksum_verify(const struct rte_ipv4_hdr *ipv4_hdr,
  * @return
  *   Return 0 if the checksum is correct, else -1.
  */
-__rte_experimental
 static inline int
 rte_ipv4_udptcp_cksum_mbuf_verify(const struct rte_mbuf *m,
 				  const struct rte_ipv4_hdr *ipv4_hdr,
@@ -687,9 +678,6 @@ __rte_ipv6_udptcp_cksum_mbuf(const struct rte_mbuf *m,
 }
 
 /**
- * @warning
- * @b EXPERIMENTAL: this API may change without prior notice.
- *
  * Process the IPv6 UDP or TCP checksum of a packet.
  *
  * The IPv6 header must not be followed by extension headers. The layer 4
@@ -704,7 +692,6 @@ __rte_ipv6_udptcp_cksum_mbuf(const struct rte_mbuf *m,
  * @return
  *   The complemented checksum to set in the L4 header.
  */
-__rte_experimental
 static inline uint16_t
 rte_ipv6_udptcp_cksum_mbuf(const struct rte_mbuf *m,
 			   const struct rte_ipv6_hdr *ipv6_hdr, uint16_t l4_off)
@@ -738,7 +725,6 @@ rte_ipv6_udptcp_cksum_mbuf(const struct rte_mbuf *m,
  * @return
  *   Return 0 if the checksum is correct, else -1.
  */
-__rte_experimental
 static inline int
 rte_ipv6_udptcp_cksum_verify(const struct rte_ipv6_hdr *ipv6_hdr,
 			     const void *l4_hdr)
@@ -752,9 +738,6 @@ rte_ipv6_udptcp_cksum_verify(const struct rte_ipv6_hdr *ipv6_hdr,
 }
 
 /**
- * @warning
- * @b EXPERIMENTAL: this API may change without prior notice.
- *
  * Validate the IPv6 UDP or TCP checksum of a packet.
  *
  * In case of UDP, the caller must first check if udp_hdr->dgram_cksum is 0:
@@ -770,7 +753,6 @@ rte_ipv6_udptcp_cksum_verify(const struct rte_ipv6_hdr *ipv6_hdr,
  * @return
  *   Return 0 if the checksum is correct, else -1.
  */
-__rte_experimental
 static inline int
 rte_ipv6_udptcp_cksum_mbuf_verify(const struct rte_mbuf *m,
 				  const struct rte_ipv6_hdr *ipv6_hdr,
@@ -825,7 +807,6 @@ struct rte_ipv6_fragment_ext {
  * @return
  *   next protocol number if proto is an IPv6 extension, -EINVAL otherwise
  */
-__rte_experimental
 static inline int
 rte_ipv6_get_next_ext(const uint8_t *p, int proto, size_t *ext_len)
 {
-- 
2.39.2


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

* [PATCH v7 07/25] rcu: remove experimental from rte_rcu_qbsr
  2023-10-24  2:53 ` [PATCH v7 00/25] Promote 22.11 and older API's to stable Stephen Hemminger
                     ` (5 preceding siblings ...)
  2023-10-24  2:54   ` [PATCH v7 06/25] net: remove experimental from functions Stephen Hemminger
@ 2023-10-24  2:54   ` Stephen Hemminger
  2023-10-24  2:54   ` [PATCH v7 08/25] lpm: remove experimental Stephen Hemminger
                     ` (18 subsequent siblings)
  25 siblings, 0 replies; 219+ messages in thread
From: Stephen Hemminger @ 2023-10-24  2:54 UTC (permalink / raw)
  To: dev; +Cc: Stephen Hemminger, Honnappa Nagarahalli

These functions were added back in 2020.
Remove experimental flag.

Signed-off-by: Stephen Hemminger <stephen@networkplumber.org>
Reviewed-by: Honnappa Nagarahalli <honnappa.nagarahalli@arm.com>
---
 lib/rcu/rte_rcu_qsbr.h | 20 --------------------
 lib/rcu/version.map    | 15 ++++-----------
 2 files changed, 4 insertions(+), 31 deletions(-)

diff --git a/lib/rcu/rte_rcu_qsbr.h b/lib/rcu/rte_rcu_qsbr.h
index 87e1b55153b5..74ef41e0fac1 100644
--- a/lib/rcu/rte_rcu_qsbr.h
+++ b/lib/rcu/rte_rcu_qsbr.h
@@ -10,10 +10,6 @@
  *
  * RTE Quiescent State Based Reclamation (QSBR).
  *
- * @warning
- * @b EXPERIMENTAL:
- * All functions in this file may be changed or removed without prior notice.
- *
  * Quiescent State (QS) is any point in the thread execution
  * where the thread does not hold a reference to a data structure
  * in shared memory. While using lock-less data structures, the writer
@@ -727,9 +723,6 @@ int
 rte_rcu_qsbr_dump(FILE *f, struct rte_rcu_qsbr *v);
 
 /**
- * @warning
- * @b EXPERIMENTAL: this API may change without prior notice
- *
  * Create a queue used to store the data structure elements that can
  * be freed later. This queue is referred to as 'defer queue'.
  *
@@ -742,14 +735,10 @@ rte_rcu_qsbr_dump(FILE *f, struct rte_rcu_qsbr *v);
  *   - EINVAL - NULL parameters are passed
  *   - ENOMEM - Not enough memory
  */
-__rte_experimental
 struct rte_rcu_qsbr_dq *
 rte_rcu_qsbr_dq_create(const struct rte_rcu_qsbr_dq_parameters *params);
 
 /**
- * @warning
- * @b EXPERIMENTAL: this API may change without prior notice
- *
  * Enqueue one resource to the defer queue and start the grace period.
  * The resource will be freed later after at least one grace period
  * is over.
@@ -777,14 +766,10 @@ rte_rcu_qsbr_dq_create(const struct rte_rcu_qsbr_dq_parameters *params);
  *		if the defer queue size is equal (or larger) than the
  *		number of elements in the data structure.
  */
-__rte_experimental
 int
 rte_rcu_qsbr_dq_enqueue(struct rte_rcu_qsbr_dq *dq, void *e);
 
 /**
- * @warning
- * @b EXPERIMENTAL: this API may change without prior notice
- *
  * Free resources from the defer queue.
  *
  * This API is multi-thread safe.
@@ -806,15 +791,11 @@ rte_rcu_qsbr_dq_enqueue(struct rte_rcu_qsbr_dq *dq, void *e);
  *   On error - 1 with rte_errno set to
  *   - EINVAL - NULL parameters are passed
  */
-__rte_experimental
 int
 rte_rcu_qsbr_dq_reclaim(struct rte_rcu_qsbr_dq *dq, unsigned int n,
 	unsigned int *freed, unsigned int *pending, unsigned int *available);
 
 /**
- * @warning
- * @b EXPERIMENTAL: this API may change without prior notice
- *
  * Delete a defer queue.
  *
  * It tries to reclaim all the resources on the defer queue.
@@ -832,7 +813,6 @@ rte_rcu_qsbr_dq_reclaim(struct rte_rcu_qsbr_dq *dq, unsigned int n,
  *   - EAGAIN - Some of the resources have not completed at least 1 grace
  *		period, try again.
  */
-__rte_experimental
 int
 rte_rcu_qsbr_dq_delete(struct rte_rcu_qsbr_dq *dq);
 
diff --git a/lib/rcu/version.map b/lib/rcu/version.map
index 9218ed1f3399..982ffd59d9cd 100644
--- a/lib/rcu/version.map
+++ b/lib/rcu/version.map
@@ -2,6 +2,10 @@ DPDK_24 {
 	global:
 
 	rte_rcu_log_type;
+	rte_rcu_qsbr_dq_create;
+	rte_rcu_qsbr_dq_delete;
+	rte_rcu_qsbr_dq_enqueue;
+	rte_rcu_qsbr_dq_reclaim;
 	rte_rcu_qsbr_dump;
 	rte_rcu_qsbr_get_memsize;
 	rte_rcu_qsbr_init;
@@ -11,14 +15,3 @@ DPDK_24 {
 
 	local: *;
 };
-
-EXPERIMENTAL {
-	global:
-
-	rte_rcu_qsbr_dq_create;
-	rte_rcu_qsbr_dq_enqueue;
-	rte_rcu_qsbr_dq_reclaim;
-	rte_rcu_qsbr_dq_delete;
-
-	local: *;
-};
-- 
2.39.2


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

* [PATCH v7 08/25] lpm: remove experimental
  2023-10-24  2:53 ` [PATCH v7 00/25] Promote 22.11 and older API's to stable Stephen Hemminger
                     ` (6 preceding siblings ...)
  2023-10-24  2:54   ` [PATCH v7 07/25] rcu: remove experimental from rte_rcu_qbsr Stephen Hemminger
@ 2023-10-24  2:54   ` Stephen Hemminger
  2023-10-24  2:54   ` [PATCH v7 09/25] mbuf: remove experimental from create_extbuf Stephen Hemminger
                     ` (17 subsequent siblings)
  25 siblings, 0 replies; 219+ messages in thread
From: Stephen Hemminger @ 2023-10-24  2:54 UTC (permalink / raw)
  To: dev; +Cc: Stephen Hemminger, Bruce Richardson, Vladimir Medvedkin

The function to associate RCU with LPM was added several releases ago.
Remove experimental.

Signed-off-by: Stephen Hemminger <stephen@networkplumber.org>
---
 lib/lpm/rte_lpm.h   | 4 ----
 lib/lpm/version.map | 7 +------
 2 files changed, 1 insertion(+), 10 deletions(-)

diff --git a/lib/lpm/rte_lpm.h b/lib/lpm/rte_lpm.h
index 75e27ff164ab..40825c5b8038 100644
--- a/lib/lpm/rte_lpm.h
+++ b/lib/lpm/rte_lpm.h
@@ -186,9 +186,6 @@ void
 rte_lpm_free(struct rte_lpm *lpm);
 
 /**
- * @warning
- * @b EXPERIMENTAL: this API may change without prior notice
- *
  * Associate RCU QSBR variable with an LPM object.
  *
  * @param lpm
@@ -203,7 +200,6 @@ rte_lpm_free(struct rte_lpm *lpm);
  *   - EEXIST - already added QSBR
  *   - ENOMEM - memory allocation failure
  */
-__rte_experimental
 int rte_lpm_rcu_qsbr_add(struct rte_lpm *lpm, struct rte_lpm_rcu_config *cfg);
 
 /**
diff --git a/lib/lpm/version.map b/lib/lpm/version.map
index 9ba73b2f938b..b6bee8c18b8a 100644
--- a/lib/lpm/version.map
+++ b/lib/lpm/version.map
@@ -18,12 +18,7 @@ DPDK_24 {
 	rte_lpm_find_existing;
 	rte_lpm_free;
 	rte_lpm_is_rule_present;
+	rte_lpm_rcu_qsbr_add;
 
 	local: *;
 };
-
-EXPERIMENTAL {
-	global:
-
-	rte_lpm_rcu_qsbr_add;
-};
-- 
2.39.2


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

* [PATCH v7 09/25] mbuf: remove experimental from create_extbuf
  2023-10-24  2:53 ` [PATCH v7 00/25] Promote 22.11 and older API's to stable Stephen Hemminger
                     ` (7 preceding siblings ...)
  2023-10-24  2:54   ` [PATCH v7 08/25] lpm: remove experimental Stephen Hemminger
@ 2023-10-24  2:54   ` Stephen Hemminger
  2023-10-24  2:54   ` [PATCH v7 10/25] hash: remove experimental from toeplitz hash Stephen Hemminger
                     ` (16 subsequent siblings)
  25 siblings, 0 replies; 219+ messages in thread
From: Stephen Hemminger @ 2023-10-24  2:54 UTC (permalink / raw)
  To: dev; +Cc: Stephen Hemminger, Bruce Richardson

This API was added in 2020 and should no longer be experimental.

Signed-off-by: Stephen Hemminger <stephen@networkplumber.org>
Acked-by: Bruce Richardson <bruce.richardson@intel.com>
---
 lib/mbuf/rte_mbuf.h  | 1 -
 lib/mbuf/version.map | 8 +-------
 2 files changed, 1 insertion(+), 8 deletions(-)

diff --git a/lib/mbuf/rte_mbuf.h b/lib/mbuf/rte_mbuf.h
index 913c459b1cc6..30fa3df85f53 100644
--- a/lib/mbuf/rte_mbuf.h
+++ b/lib/mbuf/rte_mbuf.h
@@ -800,7 +800,6 @@ struct rte_pktmbuf_extmem {
  *    - EEXIST - a memzone with the same name already exists
  *    - ENOMEM - no appropriate memory area found in which to create memzone
  */
-__rte_experimental
 struct rte_mempool *
 rte_pktmbuf_pool_create_extbuf(const char *name, unsigned int n,
 	unsigned int cache_size, uint16_t priv_size,
diff --git a/lib/mbuf/version.map b/lib/mbuf/version.map
index f010d4692e3e..daa65e2bbdb2 100644
--- a/lib/mbuf/version.map
+++ b/lib/mbuf/version.map
@@ -38,14 +38,8 @@ DPDK_24 {
 	rte_pktmbuf_init;
 	rte_pktmbuf_pool_create;
 	rte_pktmbuf_pool_create_by_ops;
+	rte_pktmbuf_pool_create_extbuf;
 	rte_pktmbuf_pool_init;
 
 	local: *;
 };
-
-EXPERIMENTAL {
-	global:
-
-	rte_pktmbuf_pool_create_extbuf;
-
-};
-- 
2.39.2


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

* [PATCH v7 10/25] hash: remove experimental from toeplitz hash
  2023-10-24  2:53 ` [PATCH v7 00/25] Promote 22.11 and older API's to stable Stephen Hemminger
                     ` (8 preceding siblings ...)
  2023-10-24  2:54   ` [PATCH v7 09/25] mbuf: remove experimental from create_extbuf Stephen Hemminger
@ 2023-10-24  2:54   ` Stephen Hemminger
  2023-10-24  2:54   ` [PATCH v7 11/25] timer: remove experimental from rte_timer_next_ticks Stephen Hemminger
                     ` (15 subsequent siblings)
  25 siblings, 0 replies; 219+ messages in thread
From: Stephen Hemminger @ 2023-10-24  2:54 UTC (permalink / raw)
  To: dev
  Cc: Stephen Hemminger, Bruce Richardson, Yipeng Wang, Sameh Gobriel,
	Vladimir Medvedkin

The rte_thash_ functions have been around since 2020.
Remove experimental tag.

Signed-off-by: Stephen Hemminger <stephen@networkplumber.org>
Acked-by: Bruce Richardson <bruce.richardson@intel.com>
---
 lib/hash/rte_thash.h          | 44 -----------------------------------
 lib/hash/rte_thash_gfni.h     |  8 -------
 lib/hash/rte_thash_x86_gfni.h |  8 -------
 lib/hash/version.map          | 16 ++++---------
 4 files changed, 4 insertions(+), 72 deletions(-)

diff --git a/lib/hash/rte_thash.h b/lib/hash/rte_thash.h
index da06cd53c0e0..071730c7bab9 100644
--- a/lib/hash/rte_thash.h
+++ b/lib/hash/rte_thash.h
@@ -221,14 +221,10 @@ rte_softrss_be(uint32_t *input_tuple, uint32_t input_len,
 /**
  * Indicates if GFNI implementations of the Toeplitz hash are supported.
  *
- * @warning
- * @b EXPERIMENTAL: this API may change without prior notice.
- *
  * @return
  *  1 if GFNI is supported
  *  0 otherwise
  */
-__rte_experimental
 int
 rte_thash_gfni_supported(void);
 
@@ -236,9 +232,6 @@ rte_thash_gfni_supported(void);
  * Converts Toeplitz hash key (RSS key) into matrixes required
  * for GFNI implementation
  *
- * @warning
- * @b EXPERIMENTAL: this API may change without prior notice.
- *
  * @param matrixes
  *  pointer to the memory where matrices will be written.
  *  Note: the size of this memory must be equal to size * 8
@@ -247,7 +240,6 @@ rte_thash_gfni_supported(void);
  * @param size
  *  Size of the rss_key in bytes.
  */
-__rte_experimental
 void
 rte_thash_complete_matrix(uint64_t *matrixes, const uint8_t *rss_key,
 	int size);
@@ -276,9 +268,6 @@ struct rte_thash_subtuple_helper;
 /**
  * Create a new thash context.
  *
- * @warning
- * @b EXPERIMENTAL: this API may change without prior notice.
- *
  * @param name
  *  Context name
  * @param key_len
@@ -298,7 +287,6 @@ struct rte_thash_subtuple_helper;
  *  A pointer to the created context on success
  *  NULL otherwise
  */
-__rte_experimental
 struct rte_thash_ctx *
 rte_thash_init_ctx(const char *name, uint32_t key_len, uint32_t reta_sz,
 	uint8_t *key, uint32_t flags);
@@ -306,9 +294,6 @@ rte_thash_init_ctx(const char *name, uint32_t key_len, uint32_t reta_sz,
 /**
  * Find an existing thash context and return a pointer to it.
  *
- * @warning
- * @b EXPERIMENTAL: this API may change without prior notice.
- *
  * @param name
  *  Name of the thash context
  * @return
@@ -316,20 +301,15 @@ rte_thash_init_ctx(const char *name, uint32_t key_len, uint32_t reta_sz,
  *  set appropriately. Possible rte_errno values include:
  *   - ENOENT - required entry not available to return.
  */
-__rte_experimental
 struct rte_thash_ctx *
 rte_thash_find_existing(const char *name);
 
 /**
  * Free a thash context object
  *
- * @warning
- * @b EXPERIMENTAL: this API may change without prior notice.
- *
  * @param ctx
  *  Thash context
  */
-__rte_experimental
 void
 rte_thash_free_ctx(struct rte_thash_ctx *ctx);
 
@@ -339,9 +319,6 @@ rte_thash_free_ctx(struct rte_thash_ctx *ctx);
  * to calculate toeplitz hash collisions.
  * This function is not multi-thread safe.
  *
- * @warning
- * @b EXPERIMENTAL: this API may change without prior notice.
- *
  * @param ctx
  *  Thash context
  * @param name
@@ -355,7 +332,6 @@ rte_thash_free_ctx(struct rte_thash_ctx *ctx);
  *  0 on success
  *  negative on error
  */
-__rte_experimental
 int
 rte_thash_add_helper(struct rte_thash_ctx *ctx, const char *name, uint32_t len,
 	uint32_t offset);
@@ -363,9 +339,6 @@ rte_thash_add_helper(struct rte_thash_ctx *ctx, const char *name, uint32_t len,
 /**
  * Find a helper in the context by the given name
  *
- * @warning
- * @b EXPERIMENTAL: this API may change without prior notice.
- *
  * @param ctx
  *  Thash context
  * @param name
@@ -373,7 +346,6 @@ rte_thash_add_helper(struct rte_thash_ctx *ctx, const char *name, uint32_t len,
  * @return
  *  Pointer to the thash helper or NULL if it was not found.
  */
-__rte_experimental
 struct rte_thash_subtuple_helper *
 rte_thash_get_helper(struct rte_thash_ctx *ctx, const char *name);
 
@@ -392,7 +364,6 @@ rte_thash_get_helper(struct rte_thash_ctx *ctx, const char *name);
  * @return
  *  A complementary value which must be xored with the corresponding subtuple
  */
-__rte_experimental
 uint32_t
 rte_thash_get_complement(struct rte_thash_subtuple_helper *h,
 	uint32_t hash, uint32_t desired_hash);
@@ -402,15 +373,11 @@ rte_thash_get_complement(struct rte_thash_subtuple_helper *h,
  * It changes after each addition of a helper. It should be installed to
  * the NIC.
  *
- * @warning
- * @b EXPERIMENTAL: this API may change without prior notice.
- *
  * @param ctx
  *  Thash context
  * @return
  *  A pointer to the toeplitz hash key
  */
-__rte_experimental
 const uint8_t *
 rte_thash_get_key(struct rte_thash_ctx *ctx);
 
@@ -420,16 +387,12 @@ rte_thash_get_key(struct rte_thash_ctx *ctx);
  * CPU supports GFNI.
  * Matrices changes after each addition of a helper.
  *
- * @warning
- * @b EXPERIMENTAL: this API may change without prior notice.
- *
  * @param ctx
  *  Thash context
  * @return
  *  A pointer to the toeplitz hash key matrices on success
  *  NULL if GFNI is not supported.
  */
-__rte_experimental
 const uint64_t *
 rte_thash_get_gfni_matrices(struct rte_thash_ctx *ctx);
 
@@ -439,9 +402,6 @@ rte_thash_get_gfni_matrices(struct rte_thash_ctx *ctx);
  * Generally it is some kind of lookup function to check
  * if adjusted tuple is already in use.
  *
- * @warning
- * @b EXPERIMENTAL: this API may change without prior notice.
- *
  * @param userdata
  *  Pointer to the userdata. It could be a pointer to the
  *  table with used tuples to search.
@@ -459,9 +419,6 @@ typedef int (*rte_thash_check_tuple_t)(void *userdata, uint8_t *tuple);
  * desired least significant bits.
  * This function is multi-thread safe.
  *
- * @warning
- * @b EXPERIMENTAL: this API may change without prior notice.
- *
  * @param ctx
  *  Thash context
  * @param h
@@ -483,7 +440,6 @@ typedef int (*rte_thash_check_tuple_t)(void *userdata, uint8_t *tuple);
  *  0 on success
  *  negative otherwise
  */
-__rte_experimental
 int
 rte_thash_adjust_tuple(struct rte_thash_ctx *ctx,
 	struct rte_thash_subtuple_helper *h,
diff --git a/lib/hash/rte_thash_gfni.h b/lib/hash/rte_thash_gfni.h
index ef90faa302d1..67d0fa4da988 100644
--- a/lib/hash/rte_thash_gfni.h
+++ b/lib/hash/rte_thash_gfni.h
@@ -24,9 +24,6 @@ extern "C" {
  * Calculate Toeplitz hash.
  * Dummy implementation.
  *
- * @warning
- * @b EXPERIMENTAL: this API may change without prior notice.
- *
  * @param m
  *  Pointer to the matrices generated from the corresponding
  *  RSS hash key using rte_thash_complete_matrix().
@@ -37,7 +34,6 @@ extern "C" {
  * @return
  *  Calculated Toeplitz hash value.
  */
-__rte_experimental
 static inline uint32_t
 rte_thash_gfni(const uint64_t *mtrx __rte_unused,
 	const uint8_t *key __rte_unused, int len __rte_unused)
@@ -50,9 +46,6 @@ rte_thash_gfni(const uint64_t *mtrx __rte_unused,
  * Bulk implementation for Toeplitz hash.
  * Dummy implementation.
  *
- * @warning
- * @b EXPERIMENTAL: this API may change without prior notice.
- *
  * @param m
  *  Pointer to the matrices generated from the corresponding
  *  RSS hash key using rte_thash_complete_matrix().
@@ -66,7 +59,6 @@ rte_thash_gfni(const uint64_t *mtrx __rte_unused,
  * @param num
  *  Number of tuples to hash.
  */
-__rte_experimental
 static inline void
 rte_thash_gfni_bulk(const uint64_t *mtrx __rte_unused,
 	int len __rte_unused, uint8_t *tuple[] __rte_unused,
diff --git a/lib/hash/rte_thash_x86_gfni.h b/lib/hash/rte_thash_x86_gfni.h
index fbec16dde081..0ff7ad07eeaa 100644
--- a/lib/hash/rte_thash_x86_gfni.h
+++ b/lib/hash/rte_thash_x86_gfni.h
@@ -161,9 +161,6 @@ __rte_thash_gfni(const uint64_t *mtrx, const uint8_t *tuple,
 /**
  * Calculate Toeplitz hash.
  *
- * @warning
- * @b EXPERIMENTAL: this API may change without prior notice.
- *
  * @param m
  *  Pointer to the matrices generated from the corresponding
  *  RSS hash key using rte_thash_complete_matrix().
@@ -175,7 +172,6 @@ __rte_thash_gfni(const uint64_t *mtrx, const uint8_t *tuple,
  * @return
  *  Calculated Toeplitz hash value.
  */
-__rte_experimental
 static inline uint32_t
 rte_thash_gfni(const uint64_t *m, const uint8_t *tuple, int len)
 {
@@ -190,9 +186,6 @@ rte_thash_gfni(const uint64_t *m, const uint8_t *tuple, int len)
 /**
  * Bulk implementation for Toeplitz hash.
  *
- * @warning
- * @b EXPERIMENTAL: this API may change without prior notice.
- *
  * @param m
  *  Pointer to the matrices generated from the corresponding
  *  RSS hash key using rte_thash_complete_matrix().
@@ -207,7 +200,6 @@ rte_thash_gfni(const uint64_t *m, const uint8_t *tuple, int len)
  * @param num
  *  Number of tuples to hash.
  */
-__rte_experimental
 static inline void
 rte_thash_gfni_bulk(const uint64_t *mtrx, int len, uint8_t *tuple[],
 	uint32_t val[], uint32_t num)
diff --git a/lib/hash/version.map b/lib/hash/version.map
index daaa9a8901db..b98b64a1638a 100644
--- a/lib/hash/version.map
+++ b/lib/hash/version.map
@@ -30,25 +30,17 @@ DPDK_24 {
 	rte_hash_rcu_qsbr_add;
 	rte_hash_reset;
 	rte_hash_set_cmp_func;
-
-	local: *;
-};
-
-EXPERIMENTAL {
-	global:
-
-	# added in 21.05
 	rte_thash_add_helper;
 	rte_thash_adjust_tuple;
+	rte_thash_complete_matrix;
 	rte_thash_find_existing;
 	rte_thash_free_ctx;
 	rte_thash_get_complement;
+	rte_thash_get_gfni_matrices;
 	rte_thash_get_helper;
 	rte_thash_get_key;
+	rte_thash_gfni_supported;
 	rte_thash_init_ctx;
 
-	# added in 21.11
-	rte_thash_complete_matrix;
-	rte_thash_get_gfni_matrices;
-	rte_thash_gfni_supported;
+	local: *;
 };
-- 
2.39.2


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

* [PATCH v7 11/25] timer: remove experimental from rte_timer_next_ticks
  2023-10-24  2:53 ` [PATCH v7 00/25] Promote 22.11 and older API's to stable Stephen Hemminger
                     ` (9 preceding siblings ...)
  2023-10-24  2:54   ` [PATCH v7 10/25] hash: remove experimental from toeplitz hash Stephen Hemminger
@ 2023-10-24  2:54   ` Stephen Hemminger
  2023-10-24  2:54   ` [PATCH v7 12/25] sched: remove experimental Stephen Hemminger
                     ` (14 subsequent siblings)
  25 siblings, 0 replies; 219+ messages in thread
From: Stephen Hemminger @ 2023-10-24  2:54 UTC (permalink / raw)
  To: dev; +Cc: Stephen Hemminger, Bruce Richardson, Erik Gabriel Carrillo

Function was added in 20.11, remove experimental flag.

Signed-off-by: Stephen Hemminger <stephen@networkplumber.org>
Acked-by: Bruce Richardson <bruce.richardson@intel.com>
---
 lib/timer/rte_timer.h | 4 ----
 lib/timer/version.map | 7 +------
 2 files changed, 1 insertion(+), 10 deletions(-)

diff --git a/lib/timer/rte_timer.h b/lib/timer/rte_timer.h
index d3927d5b6bac..153d1993573f 100644
--- a/lib/timer/rte_timer.h
+++ b/lib/timer/rte_timer.h
@@ -331,9 +331,6 @@ void rte_timer_stop_sync(struct rte_timer *tim);
 int rte_timer_pending(struct rte_timer *tim);
 
 /**
- * @warning
- * @b EXPERIMENTAL: this API may change without prior notice
- *
  * Time until the next timer on the current lcore
  * This function gives the ticks until the next timer will be active.
  *
@@ -343,7 +340,6 @@ int rte_timer_pending(struct rte_timer *tim);
  *   - 0: a timer is pending and will run at next rte_timer_manage()
  *   - >0: ticks until the next timer is ready
  */
-__rte_experimental
 int64_t rte_timer_next_ticks(void);
 
 /**
diff --git a/lib/timer/version.map b/lib/timer/version.map
index e3d5a043034c..b180708e2488 100644
--- a/lib/timer/version.map
+++ b/lib/timer/version.map
@@ -10,6 +10,7 @@ DPDK_24 {
 	rte_timer_dump_stats;
 	rte_timer_init;
 	rte_timer_manage;
+	rte_timer_next_ticks;
 	rte_timer_pending;
 	rte_timer_reset;
 	rte_timer_reset_sync;
@@ -21,9 +22,3 @@ DPDK_24 {
 
 	local: *;
 };
-
-EXPERIMENTAL {
-	global:
-
-	rte_timer_next_ticks;
-};
-- 
2.39.2


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

* [PATCH v7 12/25] sched: remove experimental
  2023-10-24  2:53 ` [PATCH v7 00/25] Promote 22.11 and older API's to stable Stephen Hemminger
                     ` (10 preceding siblings ...)
  2023-10-24  2:54   ` [PATCH v7 11/25] timer: remove experimental from rte_timer_next_ticks Stephen Hemminger
@ 2023-10-24  2:54   ` Stephen Hemminger
  2023-10-24  2:54   ` [PATCH v7 13/25] dmadev: mark API's as not experimental Stephen Hemminger
                     ` (13 subsequent siblings)
  25 siblings, 0 replies; 219+ messages in thread
From: Stephen Hemminger @ 2023-10-24  2:54 UTC (permalink / raw)
  To: dev; +Cc: Stephen Hemminger, Cristian Dumitrescu

The overcommit and PIE support was added back in 2020.
Remove experimental tag.

Signed-off-by: Stephen Hemminger <stephen@networkplumber.org>
Acked-by: Cristian Dumitrescu <cristian.dumitrescu@intel.com>
---
 lib/sched/rte_pie.h   |  8 --------
 lib/sched/rte_sched.h |  5 -----
 lib/sched/version.map | 18 ++++--------------
 3 files changed, 4 insertions(+), 27 deletions(-)

diff --git a/lib/sched/rte_pie.h b/lib/sched/rte_pie.h
index e0d6d5a3cdcd..631c657980eb 100644
--- a/lib/sched/rte_pie.h
+++ b/lib/sched/rte_pie.h
@@ -78,7 +78,6 @@ struct rte_pie {
  * @retval !0 error
  */
 int
-__rte_experimental
 rte_pie_rt_data_init(struct rte_pie *pie);
 
 /**
@@ -95,7 +94,6 @@ rte_pie_rt_data_init(struct rte_pie *pie);
  * @retval !0 error
  */
 int
-__rte_experimental
 rte_pie_config_init(struct rte_pie_config *pie_cfg,
 	const uint16_t qdelay_ref,
 	const uint16_t dp_update_interval,
@@ -116,7 +114,6 @@ rte_pie_config_init(struct rte_pie_config *pie_cfg,
  * @retval !0 drop the packet
  */
 static int
-__rte_experimental
 rte_pie_enqueue_empty(const struct rte_pie_config *pie_cfg,
 	struct rte_pie *pie,
 	uint32_t pkt_len)
@@ -148,7 +145,6 @@ rte_pie_enqueue_empty(const struct rte_pie_config *pie_cfg,
  * @param time [in] current time (measured in cpu cycles)
  */
 static void
-__rte_experimental
 _calc_drop_probability(const struct rte_pie_config *pie_cfg,
 	struct rte_pie *pie, uint64_t time)
 {
@@ -212,7 +208,6 @@ _calc_drop_probability(const struct rte_pie_config *pie_cfg,
  * @retval 1 drop the packet
  */
 static inline int
-__rte_experimental
 _rte_pie_drop(const struct rte_pie_config *pie_cfg,
 	struct rte_pie *pie)
 {
@@ -261,7 +256,6 @@ _rte_pie_drop(const struct rte_pie_config *pie_cfg,
  * @retval 2 drop the packet based on mark probability criterion
  */
 static inline int
-__rte_experimental
 rte_pie_enqueue_nonempty(const struct rte_pie_config *pie_cfg,
 	struct rte_pie *pie,
 	uint32_t pkt_len,
@@ -329,7 +323,6 @@ rte_pie_enqueue_nonempty(const struct rte_pie_config *pie_cfg,
  * @retval 1 drop the packet based on drop probability criteria
  */
 static inline int
-__rte_experimental
 rte_pie_enqueue(const struct rte_pie_config *pie_cfg,
 	struct rte_pie *pie,
 	const unsigned int qlen,
@@ -354,7 +347,6 @@ rte_pie_enqueue(const struct rte_pie_config *pie_cfg,
  * @param time [in] current time stamp in cpu cycles
  */
 static inline void
-__rte_experimental
 rte_pie_dequeue(struct rte_pie *pie,
 	uint32_t pkt_len,
 	uint64_t time)
diff --git a/lib/sched/rte_sched.h b/lib/sched/rte_sched.h
index a9ac5909ad0c..77fc78ce2fe9 100644
--- a/lib/sched/rte_sched.h
+++ b/lib/sched/rte_sched.h
@@ -353,9 +353,6 @@ rte_sched_subport_pipe_profile_add(struct rte_sched_port *port,
 	uint32_t *pipe_profile_id);
 
 /**
- * @warning
- * @b EXPERIMENTAL: this API may change without prior notice.
- *
  * Hierarchical scheduler subport bandwidth profile add
  * Note that this function is safe to use in runtime for adding new
  * subport bandwidth profile as it doesn't have any impact on hierarchical
@@ -369,7 +366,6 @@ rte_sched_subport_pipe_profile_add(struct rte_sched_port *port,
  * @return
  *   0 upon success, error code otherwise
  */
-__rte_experimental
 int
 rte_sched_port_subport_profile_add(struct rte_sched_port *port,
 	struct rte_sched_subport_profile_params *profile,
@@ -592,7 +588,6 @@ rte_sched_port_dequeue(struct rte_sched_port *port, struct rte_mbuf **pkts, uint
  * @return
  *   0 upon success, error code otherwise
  */
-__rte_experimental
 int
 rte_sched_subport_tc_ov_config(struct rte_sched_port *port, uint32_t subport_id, bool tc_ov_enable);
 
diff --git a/lib/sched/version.map b/lib/sched/version.map
index d9ce68be1449..be1decaeee46 100644
--- a/lib/sched/version.map
+++ b/lib/sched/version.map
@@ -2,6 +2,8 @@ DPDK_24 {
 	global:
 
 	rte_approx;
+	rte_pie_config_init;
+	rte_pie_rt_data_init;
 	rte_red_config_init;
 	rte_red_log2_1_minus_Wq;
 	rte_red_pow2_frac_inv;
@@ -17,24 +19,12 @@ DPDK_24 {
 	rte_sched_port_pkt_read_color;
 	rte_sched_port_pkt_read_tree_path;
 	rte_sched_port_pkt_write;
+	rte_sched_port_subport_profile_add;
 	rte_sched_queue_read_stats;
 	rte_sched_subport_config;
 	rte_sched_subport_pipe_profile_add;
 	rte_sched_subport_read_stats;
+	rte_sched_subport_tc_ov_config;
 
 	local: *;
 };
-
-EXPERIMENTAL {
-	global:
-
-	# added in 20.11
-	rte_sched_port_subport_profile_add;
-
-	# added in 21.11
-	rte_pie_rt_data_init;
-	rte_pie_config_init;
-
-	# added in 22.07
-	rte_sched_subport_tc_ov_config;
-};
-- 
2.39.2


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

* [PATCH v7 13/25] dmadev: mark API's as not experimental
  2023-10-24  2:53 ` [PATCH v7 00/25] Promote 22.11 and older API's to stable Stephen Hemminger
                     ` (11 preceding siblings ...)
  2023-10-24  2:54   ` [PATCH v7 12/25] sched: remove experimental Stephen Hemminger
@ 2023-10-24  2:54   ` Stephen Hemminger
  2023-10-24  2:54   ` [PATCH v7 14/25] meter: remove experimental warning from comments Stephen Hemminger
                     ` (12 subsequent siblings)
  25 siblings, 0 replies; 219+ messages in thread
From: Stephen Hemminger @ 2023-10-24  2:54 UTC (permalink / raw)
  To: dev
  Cc: Stephen Hemminger, Chengwen Feng, Bruce Richardson,
	Thomas Monjalon, Kevin Laatz

These were added in 20.11 time now to remove experimental flag.

Signed-off-by: Stephen Hemminger <stephen@networkplumber.org>
Acked-by: Chengwen Feng <fengchengwen@huawei.com>
Acked-by: Bruce Richardson <bruce.richardson@intel.com>
---
 MAINTAINERS             |  2 +-
 lib/dmadev/rte_dmadev.h | 85 -----------------------------------------
 lib/dmadev/version.map  |  2 +-
 3 files changed, 2 insertions(+), 87 deletions(-)

diff --git a/MAINTAINERS b/MAINTAINERS
index e5d92aa74926..2f1ab5a0f328 100644
--- a/MAINTAINERS
+++ b/MAINTAINERS
@@ -483,7 +483,7 @@ F: doc/guides/prog_guide/mldev.rst
 F: app/test-mldev/
 F: doc/guides/tools/testmldev.rst
 
-DMA device API - EXPERIMENTAL
+DMA device API
 M: Chengwen Feng <fengchengwen@huawei.com>
 F: lib/dmadev/
 F: drivers/dma/skeleton/
diff --git a/lib/dmadev/rte_dmadev.h b/lib/dmadev/rte_dmadev.h
index 493263a5d627..2c09939ff6c5 100644
--- a/lib/dmadev/rte_dmadev.h
+++ b/lib/dmadev/rte_dmadev.h
@@ -158,9 +158,6 @@ extern "C" {
 #define RTE_DMADEV_DEFAULT_MAX 64
 
 /**
- * @warning
- * @b EXPERIMENTAL: this API may change without prior notice.
- *
  * Configure the maximum number of dmadevs.
  * @note This function can be invoked before the primary process rte_eal_init()
  * to change the maximum number of dmadevs. If not invoked, the maximum number
@@ -172,13 +169,9 @@ extern "C" {
  * @return
  *   0 on success. Otherwise negative value is returned.
  */
-__rte_experimental
 int rte_dma_dev_max(size_t dev_max);
 
 /**
- * @warning
- * @b EXPERIMENTAL: this API may change without prior notice.
- *
  * Get the device identifier for the named DMA device.
  *
  * @param name
@@ -188,13 +181,9 @@ int rte_dma_dev_max(size_t dev_max);
  *   Returns DMA device identifier on success.
  *   - <0: Failure to find named DMA device.
  */
-__rte_experimental
 int rte_dma_get_dev_id_by_name(const char *name);
 
 /**
- * @warning
- * @b EXPERIMENTAL: this API may change without prior notice.
- *
  * Check whether the dev_id is valid.
  *
  * @param dev_id
@@ -203,20 +192,15 @@ int rte_dma_get_dev_id_by_name(const char *name);
  * @return
  *   - If the device index is valid (true) or not (false).
  */
-__rte_experimental
 bool rte_dma_is_valid(int16_t dev_id);
 
 /**
- * @warning
- * @b EXPERIMENTAL: this API may change without prior notice.
- *
  * Get the total number of DMA devices that have been successfully
  * initialised.
  *
  * @return
  *   The total number of usable DMA devices.
  */
-__rte_experimental
 uint16_t rte_dma_count_avail(void);
 
 /**
@@ -227,7 +211,6 @@ uint16_t rte_dma_count_avail(void);
  * @return
  *   Next valid dmadev, UINT16_MAX if there is none.
  */
-__rte_experimental
 int16_t rte_dma_next_dev(int16_t start_dev_id);
 
 /** Utility macro to iterate over all available dmadevs */
@@ -318,9 +301,6 @@ struct rte_dma_info {
 };
 
 /**
- * @warning
- * @b EXPERIMENTAL: this API may change without prior notice.
- *
  * Retrieve information of a DMA device.
  *
  * @param dev_id
@@ -332,7 +312,6 @@ struct rte_dma_info {
  * @return
  *   0 on success. Otherwise negative value is returned.
  */
-__rte_experimental
 int rte_dma_info_get(int16_t dev_id, struct rte_dma_info *dev_info);
 
 /**
@@ -357,9 +336,6 @@ struct rte_dma_conf {
 };
 
 /**
- * @warning
- * @b EXPERIMENTAL: this API may change without prior notice.
- *
  * Configure a DMA device.
  *
  * This function must be invoked first before any other function in the
@@ -375,13 +351,9 @@ struct rte_dma_conf {
  * @return
  *   0 on success. Otherwise negative value is returned.
  */
-__rte_experimental
 int rte_dma_configure(int16_t dev_id, const struct rte_dma_conf *dev_conf);
 
 /**
- * @warning
- * @b EXPERIMENTAL: this API may change without prior notice.
- *
  * Start a DMA device.
  *
  * The device start step is the last one and consists of setting the DMA
@@ -393,13 +365,9 @@ int rte_dma_configure(int16_t dev_id, const struct rte_dma_conf *dev_conf);
  * @return
  *   0 on success. Otherwise negative value is returned.
  */
-__rte_experimental
 int rte_dma_start(int16_t dev_id);
 
 /**
- * @warning
- * @b EXPERIMENTAL: this API may change without prior notice.
- *
  * Stop a DMA device.
  *
  * The device can be restarted with a call to rte_dma_start().
@@ -410,13 +378,9 @@ int rte_dma_start(int16_t dev_id);
  * @return
  *   0 on success. Otherwise negative value is returned.
  */
-__rte_experimental
 int rte_dma_stop(int16_t dev_id);
 
 /**
- * @warning
- * @b EXPERIMENTAL: this API may change without prior notice.
- *
  * Close a DMA device.
  *
  * The device cannot be restarted after this call.
@@ -427,7 +391,6 @@ int rte_dma_stop(int16_t dev_id);
  * @return
  *   0 on success. Otherwise negative value is returned.
  */
-__rte_experimental
 int rte_dma_close(int16_t dev_id);
 
 /**
@@ -620,9 +583,6 @@ struct rte_dma_vchan_conf {
 };
 
 /**
- * @warning
- * @b EXPERIMENTAL: this API may change without prior notice.
- *
  * Allocate and set up a virtual DMA channel.
  *
  * @param dev_id
@@ -637,7 +597,6 @@ struct rte_dma_vchan_conf {
  * @return
  *   0 on success. Otherwise negative value is returned.
  */
-__rte_experimental
 int rte_dma_vchan_setup(int16_t dev_id, uint16_t vchan,
 			const struct rte_dma_vchan_conf *conf);
 
@@ -666,9 +625,6 @@ struct rte_dma_stats {
 #define RTE_DMA_ALL_VCHAN	0xFFFFu
 
 /**
- * @warning
- * @b EXPERIMENTAL: this API may change without prior notice.
- *
  * Retrieve basic statistics of a or all virtual DMA channel(s).
  *
  * @param dev_id
@@ -683,14 +639,10 @@ struct rte_dma_stats {
  * @return
  *   0 on success. Otherwise negative value is returned.
  */
-__rte_experimental
 int rte_dma_stats_get(int16_t dev_id, uint16_t vchan,
 		      struct rte_dma_stats *stats);
 
 /**
- * @warning
- * @b EXPERIMENTAL: this API may change without prior notice.
- *
  * Reset basic statistics of a or all virtual DMA channel(s).
  *
  * @param dev_id
@@ -702,7 +654,6 @@ int rte_dma_stats_get(int16_t dev_id, uint16_t vchan,
  * @return
  *   0 on success. Otherwise negative value is returned.
  */
-__rte_experimental
 int rte_dma_stats_reset(int16_t dev_id, uint16_t vchan);
 
 /**
@@ -718,9 +669,6 @@ enum rte_dma_vchan_status {
 };
 
 /**
- * @warning
- * @b EXPERIMENTAL: this API may change without prior notice.
- *
  * Determine if all jobs have completed on a device channel.
  * This function is primarily designed for testing use, as it allows a process to check if
  * all jobs are completed, without actually gathering completions from those jobs.
@@ -735,14 +683,10 @@ enum rte_dma_vchan_status {
  *   0 - call completed successfully
  *   < 0 - error code indicating there was a problem calling the API
  */
-__rte_experimental
 int
 rte_dma_vchan_status(int16_t dev_id, uint16_t vchan, enum rte_dma_vchan_status *status);
 
 /**
- * @warning
- * @b EXPERIMENTAL: this API may change without prior notice.
- *
  * Dump DMA device info.
  *
  * @param dev_id
@@ -753,7 +697,6 @@ rte_dma_vchan_status(int16_t dev_id, uint16_t vchan, enum rte_dma_vchan_status *
  * @return
  *   0 on success. Otherwise negative value is returned.
  */
-__rte_experimental
 int rte_dma_dump(int16_t dev_id, FILE *f);
 
 /**
@@ -864,9 +807,6 @@ struct rte_dma_sge {
 /**@}*/
 
 /**
- * @warning
- * @b EXPERIMENTAL: this API may change without prior notice.
- *
  * Enqueue a copy operation onto the virtual DMA channel.
  *
  * This queues up a copy operation to be performed by hardware, if the 'flags'
@@ -892,7 +832,6 @@ struct rte_dma_sge {
  *   - -ENOSPC: if no space left to enqueue.
  *   - other values < 0 on failure.
  */
-__rte_experimental
 static inline int
 rte_dma_copy(int16_t dev_id, uint16_t vchan, rte_iova_t src, rte_iova_t dst,
 	     uint32_t length, uint64_t flags)
@@ -910,9 +849,6 @@ rte_dma_copy(int16_t dev_id, uint16_t vchan, rte_iova_t src, rte_iova_t dst,
 }
 
 /**
- * @warning
- * @b EXPERIMENTAL: this API may change without prior notice.
- *
  * Enqueue a scatter-gather list copy operation onto the virtual DMA channel.
  *
  * This queues up a scatter-gather list copy operation to be performed by
@@ -942,7 +878,6 @@ rte_dma_copy(int16_t dev_id, uint16_t vchan, rte_iova_t src, rte_iova_t dst,
  *   - -ENOSPC: if no space left to enqueue.
  *   - other values < 0 on failure.
  */
-__rte_experimental
 static inline int
 rte_dma_copy_sg(int16_t dev_id, uint16_t vchan, struct rte_dma_sge *src,
 		struct rte_dma_sge *dst, uint16_t nb_src, uint16_t nb_dst,
@@ -963,9 +898,6 @@ rte_dma_copy_sg(int16_t dev_id, uint16_t vchan, struct rte_dma_sge *src,
 }
 
 /**
- * @warning
- * @b EXPERIMENTAL: this API may change without prior notice.
- *
  * Enqueue a fill operation onto the virtual DMA channel.
  *
  * This queues up a fill operation to be performed by hardware, if the 'flags'
@@ -991,7 +923,6 @@ rte_dma_copy_sg(int16_t dev_id, uint16_t vchan, struct rte_dma_sge *src,
  *   - -ENOSPC: if no space left to enqueue.
  *   - other values < 0 on failure.
  */
-__rte_experimental
 static inline int
 rte_dma_fill(int16_t dev_id, uint16_t vchan, uint64_t pattern,
 	     rte_iova_t dst, uint32_t length, uint64_t flags)
@@ -1010,9 +941,6 @@ rte_dma_fill(int16_t dev_id, uint16_t vchan, uint64_t pattern,
 }
 
 /**
- * @warning
- * @b EXPERIMENTAL: this API may change without prior notice.
- *
  * Trigger hardware to begin performing enqueued operations.
  *
  * Writes the "doorbell" to the hardware to trigger it
@@ -1026,7 +954,6 @@ rte_dma_fill(int16_t dev_id, uint16_t vchan, uint64_t pattern,
  * @return
  *   0 on success. Otherwise negative value is returned.
  */
-__rte_experimental
 static inline int
 rte_dma_submit(int16_t dev_id, uint16_t vchan)
 {
@@ -1043,9 +970,6 @@ rte_dma_submit(int16_t dev_id, uint16_t vchan)
 }
 
 /**
- * @warning
- * @b EXPERIMENTAL: this API may change without prior notice.
- *
  * Return the number of operations that have been successfully completed.
  * Once an operation has been reported as completed, the results of that
  * operation will be visible to all cores on the system.
@@ -1067,7 +991,6 @@ rte_dma_submit(int16_t dev_id, uint16_t vchan)
  *   The number of operations that successfully completed. This return value
  *   must be less than or equal to the value of nb_cpls.
  */
-__rte_experimental
 static inline uint16_t
 rte_dma_completed(int16_t dev_id, uint16_t vchan, const uint16_t nb_cpls,
 		  uint16_t *last_idx, bool *has_error)
@@ -1102,9 +1025,6 @@ rte_dma_completed(int16_t dev_id, uint16_t vchan, const uint16_t nb_cpls,
 }
 
 /**
- * @warning
- * @b EXPERIMENTAL: this API may change without prior notice.
- *
  * Return the number of operations that have been completed, and the operations
  * result may succeed or fail.
  * Once an operation has been reported as completed successfully, the results of that
@@ -1130,7 +1050,6 @@ rte_dma_completed(int16_t dev_id, uint16_t vchan, const uint16_t nb_cpls,
  *   If this number is greater than zero (assuming n), then n values in the
  *   status array are also set.
  */
-__rte_experimental
 static inline uint16_t
 rte_dma_completed_status(int16_t dev_id, uint16_t vchan,
 			 const uint16_t nb_cpls, uint16_t *last_idx,
@@ -1154,9 +1073,6 @@ rte_dma_completed_status(int16_t dev_id, uint16_t vchan,
 }
 
 /**
- * @warning
- * @b EXPERIMENTAL: this API may change without prior notice.
- *
  * Check remaining capacity in descriptor ring for the current burst.
  *
  * @param dev_id
@@ -1168,7 +1084,6 @@ rte_dma_completed_status(int16_t dev_id, uint16_t vchan,
  *   - Remaining space in the descriptor ring for the current burst.
  *   - 0 on error
  */
-__rte_experimental
 static inline uint16_t
 rte_dma_burst_capacity(int16_t dev_id, uint16_t vchan)
 {
diff --git a/lib/dmadev/version.map b/lib/dmadev/version.map
index 7031d6b335e9..2a3736514c8f 100644
--- a/lib/dmadev/version.map
+++ b/lib/dmadev/version.map
@@ -1,4 +1,4 @@
-EXPERIMENTAL {
+DPDK_24 {
 	global:
 
 	rte_dma_close;
-- 
2.39.2


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

* [PATCH v7 14/25] meter: remove experimental warning from comments
  2023-10-24  2:53 ` [PATCH v7 00/25] Promote 22.11 and older API's to stable Stephen Hemminger
                     ` (12 preceding siblings ...)
  2023-10-24  2:54   ` [PATCH v7 13/25] dmadev: mark API's as not experimental Stephen Hemminger
@ 2023-10-24  2:54   ` Stephen Hemminger
  2023-10-24  2:54   ` [PATCH v7 15/25] power: remove experimental from API's Stephen Hemminger
                     ` (11 subsequent siblings)
  25 siblings, 0 replies; 219+ messages in thread
From: Stephen Hemminger @ 2023-10-24  2:54 UTC (permalink / raw)
  To: dev; +Cc: Stephen Hemminger, Bruce Richardson, Cristian Dumitrescu

The API's for rte_meter_trtcm were documented as experimental
with warning in documentation but the API's were not marked
as experimental in version.map and/or with __rte_experimental.

This patch removes the warnings from the docbook comment.

Signed-off-by: Stephen Hemminger <stephen@networkplumber.org>
Acked-by: Bruce Richardson <bruce.richardson@intel.com>
Acked-by: Cristian Dumitrescu <cristian.dumitrescu@intel.com>
---
 lib/meter/rte_meter.h | 12 ------------
 1 file changed, 12 deletions(-)

diff --git a/lib/meter/rte_meter.h b/lib/meter/rte_meter.h
index 6ba99674361a..bd68cbe38903 100644
--- a/lib/meter/rte_meter.h
+++ b/lib/meter/rte_meter.h
@@ -124,9 +124,6 @@ int
 rte_meter_trtcm_profile_config(struct rte_meter_trtcm_profile *p,
 	struct rte_meter_trtcm_params *params);
 /**
- * @warning
- * @b EXPERIMENTAL: this API may change without prior notice
- *
  * trTCM RFC 4115 profile configuration
  *
  * @param p
@@ -170,9 +167,6 @@ rte_meter_trtcm_config(struct rte_meter_trtcm *m,
 	struct rte_meter_trtcm_profile *p);
 
 /**
- * @warning
- * @b EXPERIMENTAL: this API may change without prior notice
- *
  * trTCM RFC 4115 configuration per metered traffic flow
  *
  * @param m
@@ -273,9 +267,6 @@ rte_meter_trtcm_color_aware_check(struct rte_meter_trtcm *m,
 	enum rte_color pkt_color);
 
 /**
- * @warning
- * @b EXPERIMENTAL: this API may change without prior notice
- *
  * trTCM RFC4115 color blind traffic metering
  *
  * @param m
@@ -297,9 +288,6 @@ rte_meter_trtcm_rfc4115_color_blind_check(
 	uint32_t pkt_len);
 
 /**
- * @warning
- * @b EXPERIMENTAL: this API may change without prior notice
- *
  * trTCM RFC4115 color aware traffic metering
  *
  * @param m
-- 
2.39.2


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

* [PATCH v7 15/25] power: remove experimental from API's
  2023-10-24  2:53 ` [PATCH v7 00/25] Promote 22.11 and older API's to stable Stephen Hemminger
                     ` (13 preceding siblings ...)
  2023-10-24  2:54   ` [PATCH v7 14/25] meter: remove experimental warning from comments Stephen Hemminger
@ 2023-10-24  2:54   ` Stephen Hemminger
  2023-10-24  2:54   ` [PATCH v7 16/25] kvargs: remove experimental flag Stephen Hemminger
                     ` (10 subsequent siblings)
  25 siblings, 0 replies; 219+ messages in thread
From: Stephen Hemminger @ 2023-10-24  2:54 UTC (permalink / raw)
  To: dev; +Cc: Stephen Hemminger, David Hunt, Anatoly Burakov

The power management API's were last changed in 22.11 release.

Signed-off-by: Stephen Hemminger <stephen@networkplumber.org>
Acked-by: David Hunt<david.hunt@intel.com>
---
 lib/power/rte_power.h               |  4 ---
 lib/power/rte_power_guest_channel.h |  4 ---
 lib/power/rte_power_pmd_mgmt.h      | 40 -----------------------------
 lib/power/rte_power_uncore.h        |  2 --
 lib/power/version.map               | 37 +++++++++++---------------
 5 files changed, 15 insertions(+), 72 deletions(-)

diff --git a/lib/power/rte_power.h b/lib/power/rte_power.h
index e79bf1c4dd0c..4b624a01c5d7 100644
--- a/lib/power/rte_power.h
+++ b/lib/power/rte_power.h
@@ -25,9 +25,6 @@ enum power_management_env {PM_ENV_NOT_SET, PM_ENV_ACPI_CPUFREQ, PM_ENV_KVM_VM,
 		PM_ENV_AMD_PSTATE_CPUFREQ};
 
 /**
- * @warning
- * @b EXPERIMENTAL: this API may change, or be removed, without prior notice
- *
  * Check if a specific power management environment type is supported on a
  * currently running system.
  *
@@ -39,7 +36,6 @@ enum power_management_env {PM_ENV_NOT_SET, PM_ENV_ACPI_CPUFREQ, PM_ENV_KVM_VM,
  *   - 0 if unsupported
  *   - -1 if error, with rte_errno indicating reason for error.
  */
-__rte_experimental
 int rte_power_check_env_supported(enum power_management_env env);
 
 /**
diff --git a/lib/power/rte_power_guest_channel.h b/lib/power/rte_power_guest_channel.h
index b5de1bd24318..55b76dfc4c08 100644
--- a/lib/power/rte_power_guest_channel.h
+++ b/lib/power/rte_power_guest_channel.h
@@ -135,9 +135,6 @@ int rte_power_guest_channel_send_msg(struct rte_power_channel_packet *pkt,
 			unsigned int lcore_id);
 
 /**
- * @warning
- * @b EXPERIMENTAL: this API may change without prior notice.
- *
  * Receive a message contained in pkt over the Virtio-Serial
  * from the host endpoint.
  *
@@ -155,7 +152,6 @@ int rte_power_guest_channel_send_msg(struct rte_power_channel_packet *pkt,
  *  - 0 on success.
  *  - Negative on error.
  */
-__rte_experimental
 int rte_power_guest_channel_receive_msg(void *pkt,
 		size_t pkt_len,
 		unsigned int lcore_id);
diff --git a/lib/power/rte_power_pmd_mgmt.h b/lib/power/rte_power_pmd_mgmt.h
index 0f1a2eb22eb4..456145661917 100644
--- a/lib/power/rte_power_pmd_mgmt.h
+++ b/lib/power/rte_power_pmd_mgmt.h
@@ -33,9 +33,6 @@ enum rte_power_pmd_mgmt_type {
 };
 
 /**
- * @warning
- * @b EXPERIMENTAL: this API may change, or be removed, without prior notice.
- *
  * Enable power management on a specified Ethernet device Rx queue and lcore.
  *
  * @note This function is not thread-safe.
@@ -55,16 +52,12 @@ enum rte_power_pmd_mgmt_type {
  *   0 on success
  *   <0 on error
  */
-__rte_experimental
 int
 rte_power_ethdev_pmgmt_queue_enable(unsigned int lcore_id,
 		uint16_t port_id, uint16_t queue_id,
 		enum rte_power_pmd_mgmt_type mode);
 
 /**
- * @warning
- * @b EXPERIMENTAL: this API may change, or be removed, without prior notice.
- *
  * Disable power management on a specified Ethernet device Rx queue and lcore.
  *
  * @note This function is not thread-safe.
@@ -82,42 +75,30 @@ rte_power_ethdev_pmgmt_queue_enable(unsigned int lcore_id,
  *   0 on success
  *   <0 on error
  */
-__rte_experimental
 int
 rte_power_ethdev_pmgmt_queue_disable(unsigned int lcore_id,
 		uint16_t port_id, uint16_t queue_id);
 
 /**
- * @warning
- * @b EXPERIMENTAL: this API may change, or be removed, without prior notice.
- *
  * Set a emptypoll_max to specified value. Used to specify the number of empty
  * polls to wait before entering sleep state.
  *
  * @param max
  *   The value to set emptypoll_max to.
  */
-__rte_experimental
 void
 rte_power_pmd_mgmt_set_emptypoll_max(unsigned int max);
 
 /**
- * @warning
- * @b EXPERIMENTAL: this API may change, or be removed, without prior notice.
- *
  * Get the current value of emptypoll_max.
  *
  * @return
  *   The current emptypoll_max value
  */
-__rte_experimental
 unsigned int
 rte_power_pmd_mgmt_get_emptypoll_max(void);
 
 /**
- * @warning
- * @b EXPERIMENTAL: this API may change, or be removed, without prior notice.
- *
  * Set the pause_duration. Used to adjust the pause mode callback duration.
  *
  * @note Duration must be greater than zero.
@@ -128,27 +109,19 @@ rte_power_pmd_mgmt_get_emptypoll_max(void);
  *   0 on success
  *   <0 on error
  */
-__rte_experimental
 int
 rte_power_pmd_mgmt_set_pause_duration(unsigned int duration);
 
 /**
- * @warning
- * @b EXPERIMENTAL: this API may change, or be removed, without prior notice.
- *
  * Get the current value of pause_duration.
  *
  * @return
  *   The current pause_duration value.
  */
-__rte_experimental
 unsigned int
 rte_power_pmd_mgmt_get_pause_duration(void);
 
 /**
- * @warning
- * @b EXPERIMENTAL: this API may change, or be removed, without prior notice.
- *
  * Set the min frequency to be used for frequency scaling or zero to use defaults.
  *
  * @note Supported by: Pstate mode.
@@ -161,14 +134,10 @@ rte_power_pmd_mgmt_get_pause_duration(void);
  *   0 on success
  *   <0 on error
  */
-__rte_experimental
 int
 rte_power_pmd_mgmt_set_scaling_freq_min(unsigned int lcore, unsigned int min);
 
 /**
- * @warning
- * @b EXPERIMENTAL: this API may change, or be removed, without prior notice.
- *
  * Set the max frequency to be used for frequency scaling or zero to use defaults.
  *
  * @note Supported by: Pstate mode.
@@ -182,14 +151,10 @@ rte_power_pmd_mgmt_set_scaling_freq_min(unsigned int lcore, unsigned int min);
  *   0 on success
  *   <0 on error
  */
-__rte_experimental
 int
 rte_power_pmd_mgmt_set_scaling_freq_max(unsigned int lcore, unsigned int max);
 
 /**
- * @warning
- * @b EXPERIMENTAL: this API may change, or be removed, without prior notice.
- *
  * Get the current configured min frequency used for frequency scaling.
  *
  * @note Supported by: Pstate mode.
@@ -202,14 +167,10 @@ rte_power_pmd_mgmt_set_scaling_freq_max(unsigned int lcore, unsigned int max);
  *   , in KiloHertz, used for frequency scaling.
  *   <0 on error
  */
-__rte_experimental
 int
 rte_power_pmd_mgmt_get_scaling_freq_min(unsigned int lcore);
 
 /**
- * @warning
- * @b EXPERIMENTAL: this API may change, or be removed, without prior notice.
- *
  * Get the current configured max frequency used for frequency scaling.
  *
  * @note Supported by: Pstate mode.
@@ -222,7 +183,6 @@ rte_power_pmd_mgmt_get_scaling_freq_min(unsigned int lcore);
  *   , in KiloHertz, used for frequency scaling.
  *   <0 on error
  */
-__rte_experimental
 int
 rte_power_pmd_mgmt_get_scaling_freq_max(unsigned int lcore);
 
diff --git a/lib/power/rte_power_uncore.h b/lib/power/rte_power_uncore.h
index 295017b7f429..a6a19019225c 100644
--- a/lib/power/rte_power_uncore.h
+++ b/lib/power/rte_power_uncore.h
@@ -74,7 +74,6 @@ enum rte_uncore_power_mgmt_env rte_power_get_uncore_env(void);
  *  - 0 on success.
  *  - Negative on error.
  */
-__rte_experimental
 int
 rte_power_uncore_init(unsigned int pkg, unsigned int die);
 
@@ -96,7 +95,6 @@ rte_power_uncore_init(unsigned int pkg, unsigned int die);
  *  - 0 on success.
  *  - Negative on error.
  */
-__rte_experimental
 int
 rte_power_uncore_exit(unsigned int pkg, unsigned int die);
 
diff --git a/lib/power/version.map b/lib/power/version.map
index 53627b59f189..ad92a65f913e 100644
--- a/lib/power/version.map
+++ b/lib/power/version.map
@@ -1,6 +1,9 @@
 DPDK_24 {
 	global:
 
+	rte_power_check_env_supported;
+	rte_power_ethdev_pmgmt_queue_disable;
+	rte_power_ethdev_pmgmt_queue_enable;
 	rte_power_exit;
 	rte_power_freq_disable_turbo;
 	rte_power_freq_down;
@@ -12,27 +15,10 @@ DPDK_24 {
 	rte_power_get_capabilities;
 	rte_power_get_env;
 	rte_power_get_freq;
+	rte_power_get_uncore_freq;
+	rte_power_guest_channel_receive_msg;
 	rte_power_guest_channel_send_msg;
 	rte_power_init;
-	rte_power_set_env;
-	rte_power_set_freq;
-	rte_power_turbo_status;
-	rte_power_unset_env;
-
-	local: *;
-};
-
-EXPERIMENTAL {
-	global:
-
-	rte_power_check_env_supported;
-	rte_power_guest_channel_receive_msg;
-
-	# added in 21.02
-	rte_power_ethdev_pmgmt_queue_disable;
-	rte_power_ethdev_pmgmt_queue_enable;
-
-	# added in 22.07
 	rte_power_pmd_mgmt_get_emptypoll_max;
 	rte_power_pmd_mgmt_get_pause_duration;
 	rte_power_pmd_mgmt_get_scaling_freq_max;
@@ -41,10 +27,10 @@ EXPERIMENTAL {
 	rte_power_pmd_mgmt_set_pause_duration;
 	rte_power_pmd_mgmt_set_scaling_freq_max;
 	rte_power_pmd_mgmt_set_scaling_freq_min;
-
-	# added in 22.11
-	rte_power_get_uncore_freq;
+	rte_power_set_env;
+	rte_power_set_freq;
 	rte_power_set_uncore_freq;
+	rte_power_turbo_status;
 	rte_power_uncore_exit;
 	rte_power_uncore_freq_max;
 	rte_power_uncore_freq_min;
@@ -52,6 +38,13 @@ EXPERIMENTAL {
 	rte_power_uncore_get_num_freqs;
 	rte_power_uncore_get_num_pkgs;
 	rte_power_uncore_init;
+	rte_power_unset_env;
+
+	local: *;
+};
+
+EXPERIMENTAL {
+	global:
 
 	# added in 23.11
 	rte_power_get_uncore_env;
-- 
2.39.2


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

* [PATCH v7 16/25] kvargs: remove experimental flag
  2023-10-24  2:53 ` [PATCH v7 00/25] Promote 22.11 and older API's to stable Stephen Hemminger
                     ` (14 preceding siblings ...)
  2023-10-24  2:54   ` [PATCH v7 15/25] power: remove experimental from API's Stephen Hemminger
@ 2023-10-24  2:54   ` Stephen Hemminger
  2023-10-24  2:54   ` [PATCH v7 17/25] ip_frag: mark a couple of functions stable Stephen Hemminger
                     ` (9 subsequent siblings)
  25 siblings, 0 replies; 219+ messages in thread
From: Stephen Hemminger @ 2023-10-24  2:54 UTC (permalink / raw)
  To: dev; +Cc: Stephen Hemminger, Bruce Richardson

The function rte_kvargs_get_with_value was added in 21.11
so experimental flag can be removed.

Signed-off-by: Stephen Hemminger <stephen@networkplumber.org>
Acked-by: Bruce Richardson <bruce.richardson@intel.com>
---
 lib/kvargs/rte_kvargs.h | 4 ----
 lib/kvargs/version.map  | 8 +-------
 2 files changed, 1 insertion(+), 11 deletions(-)

diff --git a/lib/kvargs/rte_kvargs.h b/lib/kvargs/rte_kvargs.h
index 4900b750bc0b..36804cfb1543 100644
--- a/lib/kvargs/rte_kvargs.h
+++ b/lib/kvargs/rte_kvargs.h
@@ -145,9 +145,6 @@ void rte_kvargs_free(struct rte_kvargs *kvlist);
 const char *rte_kvargs_get(const struct rte_kvargs *kvlist, const char *key);
 
 /**
- * @warning
- * @b EXPERIMENTAL: this API may change without prior notice
- *
  * Get the value associated with a given key and value.
  *
  * Find the first entry in the kvlist whose key and value match the
@@ -167,7 +164,6 @@ const char *rte_kvargs_get(const struct rte_kvargs *kvlist, const char *key);
  *   NULL if no key matches the input,
  *   a value associated with a matching key otherwise.
  */
-__rte_experimental
 const char *rte_kvargs_get_with_value(const struct rte_kvargs *kvlist,
 				      const char *key, const char *value);
 
diff --git a/lib/kvargs/version.map b/lib/kvargs/version.map
index 387a94e725cf..cda85d171f32 100644
--- a/lib/kvargs/version.map
+++ b/lib/kvargs/version.map
@@ -4,16 +4,10 @@ DPDK_24 {
 	rte_kvargs_count;
 	rte_kvargs_free;
 	rte_kvargs_get;
+	rte_kvargs_get_with_value;
 	rte_kvargs_parse;
 	rte_kvargs_parse_delim;
 	rte_kvargs_process;
 
 	local: *;
 };
-
-EXPERIMENTAL {
-	global:
-
-	# added in 21.11
-	rte_kvargs_get_with_value;
-};
-- 
2.39.2


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

* [PATCH v7 17/25] ip_frag: mark a couple of functions stable
  2023-10-24  2:53 ` [PATCH v7 00/25] Promote 22.11 and older API's to stable Stephen Hemminger
                     ` (15 preceding siblings ...)
  2023-10-24  2:54   ` [PATCH v7 16/25] kvargs: remove experimental flag Stephen Hemminger
@ 2023-10-24  2:54   ` Stephen Hemminger
  2023-10-24  2:54   ` [PATCH v7 18/25] member: remove experimental tag Stephen Hemminger
                     ` (8 subsequent siblings)
  25 siblings, 0 replies; 219+ messages in thread
From: Stephen Hemminger @ 2023-10-24  2:54 UTC (permalink / raw)
  To: dev; +Cc: Stephen Hemminger, Konstantin Ananyev

There were two functions added in 22.11 which were
marked as experimental. Remove the experimental tag.

Signed-off-by: Stephen Hemminger <stephen@networkplumber.org>
Acked-by: Konstantin Ananyev <konstantin.v.ananyev@yandex.ru>
---
 lib/ip_frag/rte_ip_frag.h | 2 --
 lib/ip_frag/version.map   | 9 ++-------
 2 files changed, 2 insertions(+), 9 deletions(-)

diff --git a/lib/ip_frag/rte_ip_frag.h b/lib/ip_frag/rte_ip_frag.h
index feab72ae64b9..cd3a3e143ee7 100644
--- a/lib/ip_frag/rte_ip_frag.h
+++ b/lib/ip_frag/rte_ip_frag.h
@@ -205,7 +205,6 @@ int32_t rte_ipv4_fragment_packet(struct rte_mbuf *pkt_in,
  *   in the pkts_out array.
  *   Otherwise - (-1) * errno.
  */
-__rte_experimental
 int32_t
 rte_ipv4_fragment_copy_nonseg_packet(struct rte_mbuf *pkt_in,
 	struct rte_mbuf **pkts_out,
@@ -289,7 +288,6 @@ rte_ip_frag_table_statistics_dump(FILE * f, const struct rte_ip_frag_tbl *tbl);
  * @param tms
  *   Current timestamp
  */
-__rte_experimental
 void
 rte_ip_frag_table_del_expired_entries(struct rte_ip_frag_tbl *tbl,
 	struct rte_ip_frag_death_row *dr, uint64_t tms);
diff --git a/lib/ip_frag/version.map b/lib/ip_frag/version.map
index 7ba446c9938b..3e7e573dc412 100644
--- a/lib/ip_frag/version.map
+++ b/lib/ip_frag/version.map
@@ -3,19 +3,14 @@ DPDK_24 {
 
 	rte_ip_frag_free_death_row;
 	rte_ip_frag_table_create;
+	rte_ip_frag_table_del_expired_entries;
 	rte_ip_frag_table_destroy;
 	rte_ip_frag_table_statistics_dump;
 	rte_ipv4_frag_reassemble_packet;
+	rte_ipv4_fragment_copy_nonseg_packet;
 	rte_ipv4_fragment_packet;
 	rte_ipv6_frag_reassemble_packet;
 	rte_ipv6_fragment_packet;
 
 	local: *;
 };
-
-EXPERIMENTAL {
-	global:
-
-	rte_ip_frag_table_del_expired_entries;
-	rte_ipv4_fragment_copy_nonseg_packet;
-};
-- 
2.39.2


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

* [PATCH v7 18/25] member: remove experimental tag
  2023-10-24  2:53 ` [PATCH v7 00/25] Promote 22.11 and older API's to stable Stephen Hemminger
                     ` (16 preceding siblings ...)
  2023-10-24  2:54   ` [PATCH v7 17/25] ip_frag: mark a couple of functions stable Stephen Hemminger
@ 2023-10-24  2:54   ` Stephen Hemminger
  2023-10-24  2:54   ` [PATCH v7 19/25] security: remove experimental flag Stephen Hemminger
                     ` (7 subsequent siblings)
  25 siblings, 0 replies; 219+ messages in thread
From: Stephen Hemminger @ 2023-10-24  2:54 UTC (permalink / raw)
  To: dev; +Cc: Stephen Hemminger, Yipeng Wang, Sameh Gobriel

The member library last received new API's in 22.11.
All the API's should be marked stable by now.

Signed-off-by: Stephen Hemminger <stephen@networkplumber.org>
---
 lib/member/rte_member.h | 54 -----------------------------------------
 lib/member/version.map  | 12 +++------
 2 files changed, 3 insertions(+), 63 deletions(-)

diff --git a/lib/member/rte_member.h b/lib/member/rte_member.h
index a15e0d69e696..a6bf22651700 100644
--- a/lib/member/rte_member.h
+++ b/lib/member/rte_member.h
@@ -15,9 +15,6 @@
  * bloom filter (vBF). For HT setsummary, two subtypes or modes are available,
  * cache and non-cache modes. The table below summarize some properties of
  * the different implementations.
- *
- * @warning
- * @b EXPERIMENTAL: this API may change without prior notice
  */
 
 /**
@@ -117,17 +114,11 @@ extern int librte_member_logtype;
 struct rte_member_setsum;
 
 /**
- * @warning
- * @b EXPERIMENTAL: this API may change without prior notice
- *
  * Parameter struct used to create set summary
  */
 struct rte_member_parameters;
 
 /**
- * @warning
- * @b EXPERIMENTAL: this API may change without prior notice
- *
  * Define different set summary types
  */
 enum rte_member_setsum_type {
@@ -207,9 +198,6 @@ struct rte_member_setsum {
 } __rte_cache_aligned;
 
 /**
- * @warning
- * @b EXPERIMENTAL: this API may change without prior notice
- *
  * Parameters used when create the set summary table. Currently user can
  * specify two types of setsummary: HT based and vBF. For HT based, user can
  * specify cache or non-cache mode. Here is a table to describe some differences
@@ -351,9 +339,6 @@ struct rte_member_parameters {
 } __rte_cache_aligned;
 
 /**
- * @warning
- * @b EXPERIMENTAL: this API may change without prior notice
- *
  * Find an existing set-summary and return a pointer to it.
  *
  * @param name
@@ -367,9 +352,6 @@ struct rte_member_setsum *
 rte_member_find_existing(const char *name);
 
 /**
- * @warning
- * @b EXPERIMENTAL: this API may change without prior notice
- *
  * Create set-summary (SS).
  *
  * @param params
@@ -382,9 +364,6 @@ struct rte_member_setsum *
 rte_member_create(const struct rte_member_parameters *params);
 
 /**
- * @warning
- * @b EXPERIMENTAL: this API may change without prior notice
- *
  * Lookup key in set-summary (SS).
  * Single key lookup and return as soon as the first match found
  *
@@ -402,9 +381,6 @@ rte_member_lookup(const struct rte_member_setsum *setsum, const void *key,
 			member_set_t *set_id);
 
 /**
- * @warning
- * @b EXPERIMENTAL: this API may change without prior notice
- *
  * Lookup bulk of keys in set-summary (SS).
  * Each key lookup returns as soon as the first match found
  *
@@ -427,9 +403,6 @@ rte_member_lookup_bulk(const struct rte_member_setsum *setsum,
 			member_set_t *set_ids);
 
 /**
- * @warning
- * @b EXPERIMENTAL: this API may change without prior notice
- *
  * Lookup a key in set-summary (SS) for multiple matches.
  * The key lookup will find all matched entries (multiple match).
  * Note that for cache mode of HT, each key can have at most one match. This is
@@ -456,9 +429,6 @@ rte_member_lookup_multi(const struct rte_member_setsum *setsum,
 		member_set_t *set_id);
 
 /**
- * @warning
- * @b EXPERIMENTAL: this API may change without prior notice
- *
  * Lookup a bulk of keys in set-summary (SS) for multiple matches each key.
  * Each key lookup will find all matched entries (multiple match).
  * Note that for cache mode HT, each key can have at most one match. So
@@ -489,9 +459,6 @@ rte_member_lookup_multi_bulk(const struct rte_member_setsum *setsum,
 		member_set_t *set_ids);
 
 /**
- * @warning
- * @b EXPERIMENTAL: this API may change without prior notice
- *
  * Insert key into set-summary (SS).
  *
  * @param setsum
@@ -522,9 +489,6 @@ rte_member_add(const struct rte_member_setsum *setsum, const void *key,
 			member_set_t set_id);
 
 /**
- * @warning
- * @b EXPERIMENTAL: this API may change without prior notice
- *
  * Add the packet byte size into the sketch.
  *
  * @param setsum
@@ -536,15 +500,11 @@ rte_member_add(const struct rte_member_setsum *setsum, const void *key,
  * @return
  * Return -EINVAL for invalid parameters, otherwise return 0.
  */
-__rte_experimental
 int
 rte_member_add_byte_count(const struct rte_member_setsum *setsum,
 			  const void *key, uint32_t byte_count);
 
 /**
- * @warning
- * @b EXPERIMENTAL: this API may change without prior notice
- *
  * Query packet count for a certain flow-key.
  *
  * @param setsum
@@ -556,16 +516,12 @@ rte_member_add_byte_count(const struct rte_member_setsum *setsum,
  * @return
  *   Return -EINVAL for invalid parameters.
  */
-__rte_experimental
 int
 rte_member_query_count(const struct rte_member_setsum *setsum,
 		       const void *key, uint64_t *count);
 
 
 /**
- * @warning
- * @b EXPERIMENTAL: this API may change without prior notice
- *
  * Report heavyhitter flow-keys into set-summary (SS).
  *
  * @param setsum
@@ -578,16 +534,12 @@ rte_member_query_count(const struct rte_member_setsum *setsum,
  *   Return -EINVAL for invalid parameters. Return a positive integer indicate
  *   how many heavy hitters are reported.
  */
-__rte_experimental
 int
 rte_member_report_heavyhitter(const struct rte_member_setsum *setsum,
 			      void **keys, uint64_t *counts);
 
 
 /**
- * @warning
- * @b EXPERIMENTAL: this API may change without prior notice
- *
  * De-allocate memory used by set-summary.
  *
  * @param setsum
@@ -598,9 +550,6 @@ void
 rte_member_free(struct rte_member_setsum *setsum);
 
 /**
- * @warning
- * @b EXPERIMENTAL: this API may change without prior notice
- *
  * Reset the set-summary tables. E.g. reset bits to be 0 in BF,
  * reset set_id in each entry to be RTE_MEMBER_NO_MATCH in HT based SS.
  *
@@ -611,9 +560,6 @@ void
 rte_member_reset(const struct rte_member_setsum *setsum);
 
 /**
- * @warning
- * @b EXPERIMENTAL: this API may change without prior notice
- *
  * Delete items from the set-summary. Note that vBF does not support deletion
  * in current implementation. For vBF, error code of -EINVAL will be returned.
  *
diff --git a/lib/member/version.map b/lib/member/version.map
index 9be5068d68fb..3aeba8826ba1 100644
--- a/lib/member/version.map
+++ b/lib/member/version.map
@@ -2,6 +2,7 @@ DPDK_24 {
 	global:
 
 	rte_member_add;
+	rte_member_add_byte_count;
 	rte_member_create;
 	rte_member_delete;
 	rte_member_find_existing;
@@ -10,16 +11,9 @@ DPDK_24 {
 	rte_member_lookup_bulk;
 	rte_member_lookup_multi;
 	rte_member_lookup_multi_bulk;
+	rte_member_query_count;
+	rte_member_report_heavyhitter;
 	rte_member_reset;
 
 	local: *;
 };
-
-EXPERIMENTAL {
-	global:
-
-	# added in 22.11
-	rte_member_add_byte_count;
-	rte_member_query_count;
-	rte_member_report_heavyhitter;
-};
-- 
2.39.2


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

* [PATCH v7 19/25] security: remove experimental flag
  2023-10-24  2:53 ` [PATCH v7 00/25] Promote 22.11 and older API's to stable Stephen Hemminger
                     ` (17 preceding siblings ...)
  2023-10-24  2:54   ` [PATCH v7 18/25] member: remove experimental tag Stephen Hemminger
@ 2023-10-24  2:54   ` Stephen Hemminger
  2023-10-24  2:54   ` [PATCH v7 20/25] bbdev: remove experimental tag Stephen Hemminger
                     ` (6 subsequent siblings)
  25 siblings, 0 replies; 219+ messages in thread
From: Stephen Hemminger @ 2023-10-24  2:54 UTC (permalink / raw)
  To: dev; +Cc: Stephen Hemminger, Akhil Goyal

Update security API's to stable:
	__rte_security_set_pkt_metadata		21.11
	rte_security_dynfield_offset		20.11
	rte_security_macsec_XXX			22.11
	rte_security_session_stats_get		18.11

Signed-off-by: Stephen Hemminger <stephen@networkplumber.org>
Acked-by: Akhil Goyal <gakhil@marvell.com>
---
 lib/security/rte_security.h | 35 -----------------------------------
 lib/security/version.map    | 18 +++++++++---------
 2 files changed, 9 insertions(+), 44 deletions(-)

diff --git a/lib/security/rte_security.h b/lib/security/rte_security.h
index d2d2af23d5d2..1c8474b74f93 100644
--- a/lib/security/rte_security.h
+++ b/lib/security/rte_security.h
@@ -815,7 +815,6 @@ rte_security_session_create(void *instance,
  *  - On success returns 0
  *  - On failure returns a negative errno value.
  */
-__rte_experimental
 int
 rte_security_session_update(void *instance,
 			    void *sess,
@@ -851,9 +850,6 @@ int
 rte_security_session_destroy(void *instance, void *sess);
 
 /**
- * @warning
- * @b EXPERIMENTAL: this API may change without prior notice
- *
  * Create MACsec security channel (SC).
  *
  * @param   instance	security instance
@@ -865,15 +861,11 @@ rte_security_session_destroy(void *instance, void *sess);
  *  - -ENOMEM if PMD is not capable to create more SC.
  *  - other negative value for other errors.
  */
-__rte_experimental
 int
 rte_security_macsec_sc_create(void *instance,
 			      struct rte_security_macsec_sc *conf);
 
 /**
- * @warning
- * @b EXPERIMENTAL: this API may change without prior notice
- *
  * Destroy MACsec security channel (SC).
  *
  * @param   instance	security instance
@@ -884,15 +876,11 @@ rte_security_macsec_sc_create(void *instance,
  *  - -EINVAL if sc_id is invalid or instance is NULL.
  *  - -EBUSY if sc is being used by some session.
  */
-__rte_experimental
 int
 rte_security_macsec_sc_destroy(void *instance, uint16_t sc_id,
 			       enum rte_security_macsec_direction dir);
 
 /**
- * @warning
- * @b EXPERIMENTAL: this API may change without prior notice
- *
  * Create MACsec security association (SA).
  *
  * @param   instance	security instance
@@ -904,15 +892,11 @@ rte_security_macsec_sc_destroy(void *instance, uint16_t sc_id,
  *  - -ENOMEM if PMD is not capable to create more SAs.
  *  - other negative value for other errors.
  */
-__rte_experimental
 int
 rte_security_macsec_sa_create(void *instance,
 			      struct rte_security_macsec_sa *conf);
 
 /**
- * @warning
- * @b EXPERIMENTAL: this API may change without prior notice
- *
  * Destroy MACsec security association (SA).
  *
  * @param   instance	security instance
@@ -923,7 +907,6 @@ rte_security_macsec_sa_create(void *instance,
  *  - -EINVAL if sa_id is invalid or instance is NULL.
  *  - -EBUSY if sa is being used by some session.
  */
-__rte_experimental
 int
 rte_security_macsec_sa_destroy(void *instance, uint16_t sa_id,
 			       enum rte_security_macsec_direction dir);
@@ -941,9 +924,6 @@ typedef struct rte_mbuf *rte_security_oop_dynfield_t;
 extern int rte_security_oop_dynfield_offset;
 
 /**
- * @warning
- * @b EXPERIMENTAL: this API may change without prior notice
- *
  * Get pointer to mbuf field for device-specific metadata.
  *
  * For performance reason, no check is done,
@@ -953,7 +933,6 @@ extern int rte_security_oop_dynfield_offset;
  * @param	mbuf	packet to access
  * @return pointer to mbuf field
  */
-__rte_experimental
 static inline rte_security_dynfield_t *
 rte_security_dynfield(struct rte_mbuf *mbuf)
 {
@@ -982,14 +961,10 @@ rte_security_oop_dynfield(struct rte_mbuf *mbuf)
 }
 
 /**
- * @warning
- * @b EXPERIMENTAL: this API may change without prior notice
- *
  * Check whether the dynamic field is registered.
  *
  * @return true if rte_security_dynfield_register() has been called.
  */
-__rte_experimental
 static inline bool rte_security_dynfield_is_registered(void)
 {
 	return rte_security_dynfield_offset >= 0;
@@ -1059,7 +1034,6 @@ rte_security_session_fast_mdata_set(void *sess, uint64_t fdata)
 }
 
 /** Function to call PMD specific function pointer set_pkt_metadata() */
-__rte_experimental
 int __rte_security_set_pkt_metadata(void *instance,
 				    void *sess,
 				    struct rte_mbuf *m, void *params);
@@ -1230,16 +1204,12 @@ struct rte_security_stats {
  *  - On success, return 0
  *  - On failure, a negative value
  */
-__rte_experimental
 int
 rte_security_session_stats_get(void *instance,
 			       void *sess,
 			       struct rte_security_stats *stats);
 
 /**
- * @warning
- * @b EXPERIMENTAL: this API may change without prior notice
- *
  * Get MACsec SA statistics.
  *
  * @param	instance	security instance
@@ -1250,16 +1220,12 @@ rte_security_session_stats_get(void *instance,
  *  - On success, return 0.
  *  - On failure, a negative value.
  */
-__rte_experimental
 int
 rte_security_macsec_sa_stats_get(void *instance,
 				 uint16_t sa_id, enum rte_security_macsec_direction dir,
 				 struct rte_security_macsec_sa_stats *stats);
 
 /**
- * @warning
- * @b EXPERIMENTAL: this API may change without prior notice
- *
  * Get MACsec SC statistics.
  *
  * @param	instance	security instance
@@ -1270,7 +1236,6 @@ rte_security_macsec_sa_stats_get(void *instance,
  *  - On success, return 0.
  *  - On failure, a negative value.
  */
-__rte_experimental
 int
 rte_security_macsec_sc_stats_get(void *instance,
 				 uint16_t sc_id, enum rte_security_macsec_direction dir,
diff --git a/lib/security/version.map b/lib/security/version.map
index e07fca33a1e6..54c9a556798d 100644
--- a/lib/security/version.map
+++ b/lib/security/version.map
@@ -1,19 +1,12 @@
 DPDK_24 {
 	global:
 
+	__rte_security_set_pkt_metadata;
 	rte_security_capabilities_get;
 	rte_security_capability_get;
 	rte_security_session_create;
 	rte_security_session_destroy;
 	rte_security_session_get_size;
-
-	local: *;
-};
-
-EXPERIMENTAL {
-	global:
-
-	__rte_security_set_pkt_metadata;
 	rte_security_dynfield_offset;
 	rte_security_macsec_sa_create;
 	rte_security_macsec_sa_destroy;
@@ -23,8 +16,15 @@ EXPERIMENTAL {
 	rte_security_macsec_sc_stats_get;
 	rte_security_session_stats_get;
 	rte_security_session_update;
-	rte_security_oop_dynfield_offset;
 
+	local: *;
+};
+
+EXPERIMENTAL {
+	global:
+
+	# Added in 23.11
+	rte_security_oop_dynfield_offset;
 	rte_security_rx_inject_configure;
 	rte_security_inb_pkt_rx_inject;
 };
-- 
2.39.2


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

* [PATCH v7 20/25] bbdev: remove experimental tag
  2023-10-24  2:53 ` [PATCH v7 00/25] Promote 22.11 and older API's to stable Stephen Hemminger
                     ` (18 preceding siblings ...)
  2023-10-24  2:54   ` [PATCH v7 19/25] security: remove experimental flag Stephen Hemminger
@ 2023-10-24  2:54   ` Stephen Hemminger
  2023-10-24  2:54   ` [PATCH v7 21/25] ipsec: remove experimental from SA API Stephen Hemminger
                     ` (5 subsequent siblings)
  25 siblings, 0 replies; 219+ messages in thread
From: Stephen Hemminger @ 2023-10-24  2:54 UTC (permalink / raw)
  To: dev; +Cc: Stephen Hemminger, Maxime Coquelin, Nicolas Chautru

The API's for bbdev were last added to in 22.11.
Remove experimental flag now.

Signed-off-by: Stephen Hemminger <stephen@networkplumber.org>
Acked-by: Maxime Coquelin <maxime.coquelin@redhat.com>
---
 lib/bbdev/rte_bbdev.h    |  4 ----
 lib/bbdev/rte_bbdev_op.h |  2 --
 lib/bbdev/version.map    | 15 +++++++--------
 3 files changed, 7 insertions(+), 14 deletions(-)

diff --git a/lib/bbdev/rte_bbdev.h b/lib/bbdev/rte_bbdev.h
index d12e2e7fbcf3..b43e98ef9d1b 100644
--- a/lib/bbdev/rte_bbdev.h
+++ b/lib/bbdev/rte_bbdev.h
@@ -675,7 +675,6 @@ rte_bbdev_enqueue_ldpc_dec_ops(uint16_t dev_id, uint16_t queue_id,
  *   The number of operations actually enqueued.
  *   (This is the number of processed entries in the @p ops array.)
  */
-__rte_experimental
 static inline uint16_t
 rte_bbdev_enqueue_fft_ops(uint16_t dev_id, uint16_t queue_id,
 		struct rte_bbdev_fft_op **ops, uint16_t num_ops)
@@ -860,7 +859,6 @@ rte_bbdev_dequeue_ldpc_dec_ops(uint16_t dev_id, uint16_t queue_id,
  *   The number of operations actually dequeued (this is the number of entries
  *   copied into the @p ops array).
  */
-__rte_experimental
 static inline uint16_t
 rte_bbdev_dequeue_fft_ops(uint16_t dev_id, uint16_t queue_id,
 		struct rte_bbdev_fft_op **ops, uint16_t num_ops)
@@ -1042,7 +1040,6 @@ rte_bbdev_queue_intr_ctl(uint16_t dev_id, uint16_t queue_id, int epfd, int op,
  * @returns
  *   Device status as string or NULL if invalid.
  */
-__rte_experimental
 const char*
 rte_bbdev_device_status_str(enum rte_bbdev_device_status status);
 
@@ -1055,7 +1052,6 @@ rte_bbdev_device_status_str(enum rte_bbdev_device_status status);
  * @returns
  *   Queue status as string or NULL if op_type is invalid.
  */
-__rte_experimental
 const char*
 rte_bbdev_enqueue_status_str(enum rte_bbdev_enqueue_status status);
 
diff --git a/lib/bbdev/rte_bbdev_op.h b/lib/bbdev/rte_bbdev_op.h
index 369ac331bf9b..459631d0d0b7 100644
--- a/lib/bbdev/rte_bbdev_op.h
+++ b/lib/bbdev/rte_bbdev_op.h
@@ -1130,7 +1130,6 @@ rte_bbdev_dec_op_alloc_bulk(struct rte_mempool *mempool,
  *   - 0 on success.
  *   - EINVAL if invalid mempool is provided.
  */
-__rte_experimental
 static inline int
 rte_bbdev_fft_op_alloc_bulk(struct rte_mempool *mempool,
 		struct rte_bbdev_fft_op **ops, unsigned int num_ops)
@@ -1220,7 +1219,6 @@ rte_bbdev_enc_op_free_bulk(struct rte_bbdev_enc_op **ops, unsigned int num_ops)
  * @param num_ops
  *   Number of structures.
  */
-__rte_experimental
 static inline void
 rte_bbdev_fft_op_free_bulk(struct rte_bbdev_fft_op **ops, unsigned int num_ops)
 {
diff --git a/lib/bbdev/version.map b/lib/bbdev/version.map
index eeb7ed475a6c..1840d2b2a491 100644
--- a/lib/bbdev/version.map
+++ b/lib/bbdev/version.map
@@ -10,11 +10,17 @@ DPDK_24 {
 	rte_bbdev_dec_op_free_bulk;
 	rte_bbdev_dequeue_dec_ops;
 	rte_bbdev_dequeue_enc_ops;
+	rte_bbdev_dequeue_fft_ops;
+	rte_bbdev_device_status_str;
 	rte_bbdev_devices;
 	rte_bbdev_enc_op_alloc_bulk;
 	rte_bbdev_enc_op_free_bulk;
 	rte_bbdev_enqueue_dec_ops;
 	rte_bbdev_enqueue_enc_ops;
+	rte_bbdev_enqueue_fft_ops;
+	rte_bbdev_enqueue_status_str;
+	rte_bbdev_fft_op_alloc_bulk;
+	rte_bbdev_fft_op_free_bulk;
 	rte_bbdev_find_next;
 	rte_bbdev_get_named_dev;
 	rte_bbdev_info_get;
@@ -43,14 +49,7 @@ DPDK_24 {
 EXPERIMENTAL {
 	global:
 
-	# added in 22.11
-	rte_bbdev_dequeue_fft_ops;
-	rte_bbdev_device_status_str;
-	rte_bbdev_enqueue_fft_ops;
-	rte_bbdev_enqueue_status_str;
-	rte_bbdev_fft_op_alloc_bulk;
-	rte_bbdev_fft_op_free_bulk;
-	#added in 23.11
+	# added in 23.11
 	rte_bbdev_dequeue_mldts_ops;
 	rte_bbdev_enqueue_mldts_ops;
 	rte_bbdev_mldts_op_alloc_bulk;
-- 
2.39.2


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

* [PATCH v7 21/25] ipsec: remove experimental from SA API
  2023-10-24  2:53 ` [PATCH v7 00/25] Promote 22.11 and older API's to stable Stephen Hemminger
                     ` (19 preceding siblings ...)
  2023-10-24  2:54   ` [PATCH v7 20/25] bbdev: remove experimental tag Stephen Hemminger
@ 2023-10-24  2:54   ` Stephen Hemminger
  2023-10-24  2:54   ` [PATCH v7 22/25] compressdev: remove experimental flag Stephen Hemminger
                     ` (4 subsequent siblings)
  25 siblings, 0 replies; 219+ messages in thread
From: Stephen Hemminger @ 2023-10-24  2:54 UTC (permalink / raw)
  To: dev; +Cc: Stephen Hemminger, Konstantin Ananyev, Vladimir Medvedkin

These API's were added in 21.11, remove experimental flag.

Signed-off-by: Stephen Hemminger <stephen@networkplumber.org>
Acked-by: Konstantin Ananyev <konstantin.v.ananyev@yandex.ru>
---
 lib/ipsec/rte_ipsec.h | 2 --
 lib/ipsec/version.map | 9 +--------
 2 files changed, 1 insertion(+), 10 deletions(-)

diff --git a/lib/ipsec/rte_ipsec.h b/lib/ipsec/rte_ipsec.h
index 04129926b69f..81624f909192 100644
--- a/lib/ipsec/rte_ipsec.h
+++ b/lib/ipsec/rte_ipsec.h
@@ -168,7 +168,6 @@ rte_ipsec_pkt_process(const struct rte_ipsec_session *ss, struct rte_mbuf *mb[],
  * @return
  *   0 on success, negative value otherwise.
  */
-__rte_experimental
 int
 rte_ipsec_telemetry_sa_add(const struct rte_ipsec_sa *sa);
 
@@ -178,7 +177,6 @@ rte_ipsec_telemetry_sa_add(const struct rte_ipsec_sa *sa);
  * @param sa
  *   Pointer to the *rte_ipsec_sa* object that will have telemetry disabled.
  */
-__rte_experimental
 void
 rte_ipsec_telemetry_sa_del(const struct rte_ipsec_sa *sa);
 
diff --git a/lib/ipsec/version.map b/lib/ipsec/version.map
index f0063af354f0..9d01ebeadc4c 100644
--- a/lib/ipsec/version.map
+++ b/lib/ipsec/version.map
@@ -16,15 +16,8 @@ DPDK_24 {
 	rte_ipsec_sad_lookup;
 	rte_ipsec_ses_from_crypto;
 	rte_ipsec_session_prepare;
-
-	local: *;
-};
-
-EXPERIMENTAL {
-	global:
-
-	# added in 21.11
 	rte_ipsec_telemetry_sa_add;
 	rte_ipsec_telemetry_sa_del;
 
+	local: *;
 };
-- 
2.39.2


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

* [PATCH v7 22/25] compressdev: remove experimental flag
  2023-10-24  2:53 ` [PATCH v7 00/25] Promote 22.11 and older API's to stable Stephen Hemminger
                     ` (20 preceding siblings ...)
  2023-10-24  2:54   ` [PATCH v7 21/25] ipsec: remove experimental from SA API Stephen Hemminger
@ 2023-10-24  2:54   ` Stephen Hemminger
  2023-10-24  2:54   ` [PATCH v7 23/25] node: remove some of the experimental tags Stephen Hemminger
                     ` (3 subsequent siblings)
  25 siblings, 0 replies; 219+ messages in thread
From: Stephen Hemminger @ 2023-10-24  2:54 UTC (permalink / raw)
  To: dev
  Cc: Stephen Hemminger, Bruce Richardson, Thomas Monjalon, Fan Zhang,
	Ashish Gupta

The compressdev was added back in 2018.
Remove the experimental flag and make ABI stable.

Signed-off-by: Stephen Hemminger <stephen@networkplumber.org>
Acked-by: Bruce Richardson <bruce.richardson@intel.com>
---
 MAINTAINERS                           |  2 +-
 lib/compressdev/rte_comp.h            |  6 ------
 lib/compressdev/rte_compressdev.h     | 26 --------------------------
 lib/compressdev/rte_compressdev_pmd.h |  6 ------
 lib/compressdev/version.map           |  2 +-
 5 files changed, 2 insertions(+), 40 deletions(-)

diff --git a/MAINTAINERS b/MAINTAINERS
index 2f1ab5a0f328..789507ddccb7 100644
--- a/MAINTAINERS
+++ b/MAINTAINERS
@@ -459,7 +459,7 @@ F: lib/security/
 F: doc/guides/prog_guide/rte_security.rst
 F: app/test/test_security*
 
-Compression API - EXPERIMENTAL
+Compression API
 M: Fan Zhang <fanzhang.oss@gmail.com>
 M: Ashish Gupta <ashish.gupta@marvell.com>
 T: git://dpdk.org/next/dpdk-next-crypto
diff --git a/lib/compressdev/rte_comp.h b/lib/compressdev/rte_comp.h
index bf896d07223c..232564cf5e9a 100644
--- a/lib/compressdev/rte_comp.h
+++ b/lib/compressdev/rte_comp.h
@@ -499,7 +499,6 @@ struct rte_comp_op {
  *  - On success pointer to mempool
  *  - On failure NULL
  */
-__rte_experimental
 struct rte_mempool *
 rte_comp_op_pool_create(const char *name,
 		unsigned int nb_elts, unsigned int cache_size,
@@ -515,7 +514,6 @@ rte_comp_op_pool_create(const char *name,
  * - On success returns a valid rte_comp_op structure
  * - On failure returns NULL
  */
-__rte_experimental
 struct rte_comp_op *
 rte_comp_op_alloc(struct rte_mempool *mempool);
 
@@ -532,7 +530,6 @@ rte_comp_op_alloc(struct rte_mempool *mempool);
  *   - nb_ops: Success, the nb_ops requested was allocated
  *   - 0: Not enough entries in the mempool; no ops are retrieved.
  */
-__rte_experimental
 int
 rte_comp_op_bulk_alloc(struct rte_mempool *mempool,
 		struct rte_comp_op **ops, uint16_t nb_ops);
@@ -546,7 +543,6 @@ rte_comp_op_bulk_alloc(struct rte_mempool *mempool,
  *   Compress operation pointer allocated from rte_comp_op_alloc()
  *   If op is NULL, no operation is performed.
  */
-__rte_experimental
 void
 rte_comp_op_free(struct rte_comp_op *op);
 
@@ -561,7 +557,6 @@ rte_comp_op_free(struct rte_comp_op *op);
  * @param nb_ops
  *   Number of operations to free
  */
-__rte_experimental
 void
 rte_comp_op_bulk_free(struct rte_comp_op **ops, uint16_t nb_ops);
 
@@ -574,7 +569,6 @@ rte_comp_op_bulk_free(struct rte_comp_op **ops, uint16_t nb_ops);
  * @return
  *   The name of this flag, or NULL if it's not a valid feature flag.
  */
-__rte_experimental
 const char *
 rte_comp_get_feature_name(uint64_t flag);
 
diff --git a/lib/compressdev/rte_compressdev.h b/lib/compressdev/rte_compressdev.h
index 13a418631893..8cb5db0e3f7d 100644
--- a/lib/compressdev/rte_compressdev.h
+++ b/lib/compressdev/rte_compressdev.h
@@ -10,10 +10,6 @@
  *
  * RTE Compression Device APIs.
  *
- * @warning
- * @b EXPERIMENTAL:
- * All functions in this file may be changed or removed without prior notice.
- *
  * Defines comp device APIs for the provisioning of compression operations.
  */
 
@@ -54,7 +50,6 @@ struct rte_compressdev_capabilities {
 #define RTE_COMP_END_OF_CAPABILITIES_LIST() \
 	{ RTE_COMP_ALGO_UNSPECIFIED }
 
-__rte_experimental
 const struct rte_compressdev_capabilities *
 rte_compressdev_capability_get(uint8_t dev_id,
 			enum rte_comp_algorithm algo);
@@ -94,7 +89,6 @@ rte_compressdev_capability_get(uint8_t dev_id,
  * @return
  *   The name of this flag, or NULL if it's not a valid feature flag.
  */
-__rte_experimental
 const char *
 rte_compressdev_get_feature_name(uint64_t flag);
 
@@ -133,7 +127,6 @@ struct rte_compressdev_stats {
  *   - Returns compress device identifier on success.
  *   - Return -1 on failure to find named compress device.
  */
-__rte_experimental
 int
 rte_compressdev_get_dev_id(const char *name);
 
@@ -146,7 +139,6 @@ rte_compressdev_get_dev_id(const char *name);
  *   - Returns compress device name.
  *   - Returns NULL if compress device is not present.
  */
-__rte_experimental
 const char *
 rte_compressdev_name_get(uint8_t dev_id);
 
@@ -157,7 +149,6 @@ rte_compressdev_name_get(uint8_t dev_id);
  * @return
  *   - The total number of usable compress devices.
  */
-__rte_experimental
 uint8_t
 rte_compressdev_count(void);
 
@@ -175,7 +166,6 @@ rte_compressdev_count(void);
  * @return
  *   Returns number of attached compress devices.
  */
-__rte_experimental
 uint8_t
 rte_compressdev_devices_get(const char *driver_name, uint8_t *devices,
 		uint8_t nb_devices);
@@ -190,7 +180,6 @@ rte_compressdev_devices_get(const char *driver_name, uint8_t *devices,
  *   a default of zero if the socket could not be determined.
  *   -1 if returned is the dev_id value is out of range.
  */
-__rte_experimental
 int
 rte_compressdev_socket_id(uint8_t dev_id);
 
@@ -221,7 +210,6 @@ struct rte_compressdev_config {
  *   - 0: Success, device configured.
  *   - <0: Error code returned by the driver configuration function.
  */
-__rte_experimental
 int
 rte_compressdev_configure(uint8_t dev_id,
 			struct rte_compressdev_config *config);
@@ -240,7 +228,6 @@ rte_compressdev_configure(uint8_t dev_id,
  *   - 0: Success, device started.
  *   - <0: Error code of the driver device start function.
  */
-__rte_experimental
 int
 rte_compressdev_start(uint8_t dev_id);
 
@@ -251,7 +238,6 @@ rte_compressdev_start(uint8_t dev_id);
  * @param dev_id
  *   Compress device identifier
  */
-__rte_experimental
 void
 rte_compressdev_stop(uint8_t dev_id);
 
@@ -269,7 +255,6 @@ rte_compressdev_stop(uint8_t dev_id);
  *  - 0 on successfully closing device
  *  - <0 on failure to close device
  */
-__rte_experimental
 int
 rte_compressdev_close(uint8_t dev_id);
 
@@ -296,7 +281,6 @@ rte_compressdev_close(uint8_t dev_id);
  *   - 0: Success, queue pair correctly set up.
  *   - <0: Queue pair configuration failed
  */
-__rte_experimental
 int
 rte_compressdev_queue_pair_setup(uint8_t dev_id, uint16_t queue_pair_id,
 		uint32_t max_inflight_ops, int socket_id);
@@ -309,7 +293,6 @@ rte_compressdev_queue_pair_setup(uint8_t dev_id, uint16_t queue_pair_id,
  * @return
  *   - The number of configured queue pairs.
  */
-__rte_experimental
 uint16_t
 rte_compressdev_queue_pair_count(uint8_t dev_id);
 
@@ -327,7 +310,6 @@ rte_compressdev_queue_pair_count(uint8_t dev_id);
  *   - Zero if successful.
  *   - Non-zero otherwise.
  */
-__rte_experimental
 int
 rte_compressdev_stats_get(uint8_t dev_id, struct rte_compressdev_stats *stats);
 
@@ -337,7 +319,6 @@ rte_compressdev_stats_get(uint8_t dev_id, struct rte_compressdev_stats *stats);
  * @param dev_id
  *   The identifier of the device.
  */
-__rte_experimental
 void
 rte_compressdev_stats_reset(uint8_t dev_id);
 
@@ -355,7 +336,6 @@ rte_compressdev_stats_reset(uint8_t dev_id);
  * The element after the last valid element has it's op field set to
  * RTE_COMP_ALGO_UNSPECIFIED.
  */
-__rte_experimental
 void
 rte_compressdev_info_get(uint8_t dev_id, struct rte_compressdev_info *dev_info);
 
@@ -413,7 +393,6 @@ rte_compressdev_info_get(uint8_t dev_id, struct rte_compressdev_info *dev_info);
  *   of pointers to *rte_comp_op* structures effectively supplied to the
  *   *ops* array.
  */
-__rte_experimental
 uint16_t
 rte_compressdev_dequeue_burst(uint8_t dev_id, uint16_t qp_id,
 		struct rte_comp_op **ops, uint16_t nb_ops);
@@ -468,7 +447,6 @@ rte_compressdev_dequeue_burst(uint8_t dev_id, uint16_t qp_id,
  *   comp devices queue is full or if invalid parameters are specified in
  *   a *rte_comp_op*.
  */
-__rte_experimental
 uint16_t
 rte_compressdev_enqueue_burst(uint8_t dev_id, uint16_t qp_id,
 		struct rte_comp_op **ops, uint16_t nb_ops);
@@ -496,7 +474,6 @@ rte_compressdev_enqueue_burst(uint8_t dev_id, uint16_t qp_id,
  *  - Returns -ENOTSUP if comp device does not support the comp transform.
  *  - Returns -ENOMEM if the private stream could not be allocated.
  */
-__rte_experimental
 int
 rte_compressdev_stream_create(uint8_t dev_id,
 		const struct rte_comp_xform *xform,
@@ -518,7 +495,6 @@ rte_compressdev_stream_create(uint8_t dev_id,
  *  - Returns -ENOTSUP if comp device does not support STATEFUL operations.
  *  - Returns -EBUSY if can't free stream as there are inflight operations
  */
-__rte_experimental
 int
 rte_compressdev_stream_free(uint8_t dev_id, void *stream);
 
@@ -545,7 +521,6 @@ rte_compressdev_stream_free(uint8_t dev_id, void *stream);
  *  - Returns -ENOTSUP if comp device does not support the comp transform.
  *  - Returns -ENOMEM if the private_xform could not be allocated.
  */
-__rte_experimental
 int
 rte_compressdev_private_xform_create(uint8_t dev_id,
 		const struct rte_comp_xform *xform,
@@ -567,7 +542,6 @@ rte_compressdev_private_xform_create(uint8_t dev_id,
  *  - <0 in error cases
  *  - Returns -EINVAL if input parameters are invalid.
  */
-__rte_experimental
 int
 rte_compressdev_private_xform_free(uint8_t dev_id, void *private_xform);
 
diff --git a/lib/compressdev/rte_compressdev_pmd.h b/lib/compressdev/rte_compressdev_pmd.h
index ea012908b783..fa233492fe1f 100644
--- a/lib/compressdev/rte_compressdev_pmd.h
+++ b/lib/compressdev/rte_compressdev_pmd.h
@@ -59,7 +59,6 @@ struct rte_compressdev_global {
  * @return
  *   - The rte_compressdev structure pointer for the given device identifier.
  */
-__rte_experimental
 struct rte_compressdev *
 rte_compressdev_pmd_get_named_dev(const char *name);
 
@@ -292,7 +291,6 @@ struct rte_compressdev_ops {
  * @return
  *   - Slot in the rte_dev_devices array for a new device;
  */
-__rte_experimental
 struct rte_compressdev *
 rte_compressdev_pmd_allocate(const char *name, int socket_id);
 
@@ -308,7 +306,6 @@ rte_compressdev_pmd_allocate(const char *name, int socket_id);
  * @return
  *   - 0 on success, negative on error
  */
-__rte_experimental
 int
 rte_compressdev_pmd_release_device(struct rte_compressdev *dev);
 
@@ -331,7 +328,6 @@ rte_compressdev_pmd_release_device(struct rte_compressdev *dev);
  *  - 0 on success
  *  - errno on failure
  */
-__rte_experimental
 int
 rte_compressdev_pmd_parse_input_args(
 		struct rte_compressdev_pmd_init_params *params,
@@ -353,7 +349,6 @@ rte_compressdev_pmd_parse_input_args(
  *  - comp device instance on success
  *  - NULL on creation failure
  */
-__rte_experimental
 struct rte_compressdev *
 rte_compressdev_pmd_create(const char *name,
 		struct rte_device *device,
@@ -372,7 +367,6 @@ rte_compressdev_pmd_create(const char *name,
  *  - 0 on success
  *  - errno on failure
  */
-__rte_experimental
 int
 rte_compressdev_pmd_destroy(struct rte_compressdev *dev);
 
diff --git a/lib/compressdev/version.map b/lib/compressdev/version.map
index e2a108b6509f..fa891f669b5d 100644
--- a/lib/compressdev/version.map
+++ b/lib/compressdev/version.map
@@ -1,4 +1,4 @@
-EXPERIMENTAL {
+DPDK_24 {
 	global:
 
 	rte_compressdev_capability_get;
-- 
2.39.2


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

* [PATCH v7 23/25] node: remove some of the experimental tags
  2023-10-24  2:53 ` [PATCH v7 00/25] Promote 22.11 and older API's to stable Stephen Hemminger
                     ` (21 preceding siblings ...)
  2023-10-24  2:54   ` [PATCH v7 22/25] compressdev: remove experimental flag Stephen Hemminger
@ 2023-10-24  2:54   ` Stephen Hemminger
  2023-11-12 14:58     ` David Marchand
  2023-10-24  2:54   ` [PATCH v7 24/25] eventdev: make many API's stable Stephen Hemminger
                     ` (2 subsequent siblings)
  25 siblings, 1 reply; 219+ messages in thread
From: Stephen Hemminger @ 2023-10-24  2:54 UTC (permalink / raw)
  To: dev
  Cc: Stephen Hemminger, Thomas Monjalon, Nithin Dabilpuram, Pavan Nikhilesh

The node library has been around long enough that experimental
tag should be removed.  The IPv6 support was added in 23.03
but that is still enough time that it can be marked stable.

The logtype variable should have been marked internal
since it is not intended to be used outside of library.

Signed-off-by: Stephen Hemminger <stephen@networkplumber.org>
---
 MAINTAINERS                 |  2 +-
 lib/node/rte_node_eth_api.h |  1 -
 lib/node/rte_node_ip4_api.h |  2 --
 lib/node/version.map        | 16 ++++++++++++----
 4 files changed, 13 insertions(+), 8 deletions(-)

diff --git a/MAINTAINERS b/MAINTAINERS
index 789507ddccb7..f6ea602da41f 100644
--- a/MAINTAINERS
+++ b/MAINTAINERS
@@ -1735,7 +1735,7 @@ F: app/test/test_graph*
 F: examples/l3fwd-graph/
 F: doc/guides/sample_app_ug/l3_forward_graph.rst
 
-Nodes - EXPERIMENTAL
+Nodes
 M: Nithin Dabilpuram <ndabilpuram@marvell.com>
 M: Pavan Nikhilesh <pbhagavatula@marvell.com>
 F: lib/node/
diff --git a/lib/node/rte_node_eth_api.h b/lib/node/rte_node_eth_api.h
index 40b2021f01f9..eaae50772dbe 100644
--- a/lib/node/rte_node_eth_api.h
+++ b/lib/node/rte_node_eth_api.h
@@ -55,7 +55,6 @@ struct rte_node_ethdev_config {
  * @return
  *   0 on successful initialization, negative otherwise.
  */
-__rte_experimental
 int rte_node_eth_config(struct rte_node_ethdev_config *cfg,
 			uint16_t cnt, uint16_t nb_graphs);
 #ifdef __cplusplus
diff --git a/lib/node/rte_node_ip4_api.h b/lib/node/rte_node_ip4_api.h
index a84dbb3b5499..24f8ec843a27 100644
--- a/lib/node/rte_node_ip4_api.h
+++ b/lib/node/rte_node_ip4_api.h
@@ -82,7 +82,6 @@ struct rte_node_ip4_reassembly_cfg {
  * @return
  *   0 on success, negative otherwise.
  */
-__rte_experimental
 int rte_node_ip4_route_add(uint32_t ip, uint8_t depth, uint16_t next_hop,
 			   enum rte_node_ip4_lookup_next next_node);
 
@@ -101,7 +100,6 @@ int rte_node_ip4_route_add(uint32_t ip, uint8_t depth, uint16_t next_hop,
  * @return
  *   0 on success, negative otherwise.
  */
-__rte_experimental
 int rte_node_ip4_rewrite_add(uint16_t next_hop, uint8_t *rewrite_data,
 			     uint8_t rewrite_len, uint16_t dst_port);
 
diff --git a/lib/node/version.map b/lib/node/version.map
index 3855569228e3..59c72ca76fd3 100644
--- a/lib/node/version.map
+++ b/lib/node/version.map
@@ -1,11 +1,15 @@
-EXPERIMENTAL {
+DPDK_24 {
 	global:
 
-	# added in 20.05
 	rte_node_eth_config;
 	rte_node_ip4_route_add;
 	rte_node_ip4_rewrite_add;
-	rte_node_logtype;
+
+	local: *;
+};
+
+EXPERIMENTAL {
+	global:
 
 	# added in 23.07
 	rte_node_ip6_rewrite_add;
@@ -15,6 +19,10 @@ EXPERIMENTAL {
 	rte_node_ip4_reassembly_configure;
 	rte_node_udp4_dst_port_add;
 	rte_node_udp4_usr_node_add;
+};
 
-	local: *;
+INTERNAL {
+	global:
+
+	rte_node_logtype;
 };
-- 
2.39.2


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

* [PATCH v7 24/25] eventdev: make many API's stable
  2023-10-24  2:53 ` [PATCH v7 00/25] Promote 22.11 and older API's to stable Stephen Hemminger
                     ` (22 preceding siblings ...)
  2023-10-24  2:54   ` [PATCH v7 23/25] node: remove some of the experimental tags Stephen Hemminger
@ 2023-10-24  2:54   ` 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
  25 siblings, 1 reply; 219+ messages in thread
From: Stephen Hemminger @ 2023-10-24  2:54 UTC (permalink / raw)
  To: dev
  Cc: Stephen Hemminger, Abhinandan Gujjar, Jerin Jacob,
	Naga Harish K S V, Erik Gabriel Carrillo

All API's in eventdev up to 22.11 release should be made stable.

Signed-off-by: Stephen Hemminger <stephen@networkplumber.org>
---
 lib/eventdev/rte_event_crypto_adapter.h |  4 ---
 lib/eventdev/rte_event_eth_rx_adapter.h |  6 -----
 lib/eventdev/rte_event_eth_tx_adapter.h |  3 ---
 lib/eventdev/rte_event_timer_adapter.h  |  3 ---
 lib/eventdev/rte_eventdev.h             |  4 ---
 lib/eventdev/version.map                | 34 ++++++++++---------------
 6 files changed, 13 insertions(+), 41 deletions(-)

diff --git a/lib/eventdev/rte_event_crypto_adapter.h b/lib/eventdev/rte_event_crypto_adapter.h
index 4e1f1bb3a8e6..e07f159b7760 100644
--- a/lib/eventdev/rte_event_crypto_adapter.h
+++ b/lib/eventdev/rte_event_crypto_adapter.h
@@ -694,9 +694,6 @@ rte_event_crypto_adapter_runtime_params_get(uint8_t id,
 		struct rte_event_crypto_adapter_runtime_params *params);
 
 /**
- * @warning
- * @b EXPERIMENTAL: this API may change without prior notice
- *
  * Retrieve vector limits for a given event dev and crypto dev pair.
  * @see rte_event_crypto_adapter_vector_limits
  *
@@ -712,7 +709,6 @@ rte_event_crypto_adapter_runtime_params_get(uint8_t id,
  *  - 0: Success.
  *  - <0: Error code on failure.
  */
-__rte_experimental
 int rte_event_crypto_adapter_vector_limits_get(
 	uint8_t dev_id, uint16_t cdev_id,
 	struct rte_event_crypto_adapter_vector_limits *limits);
diff --git a/lib/eventdev/rte_event_eth_rx_adapter.h b/lib/eventdev/rte_event_eth_rx_adapter.h
index 842581e87e02..cf42c69b0d71 100644
--- a/lib/eventdev/rte_event_eth_rx_adapter.h
+++ b/lib/eventdev/rte_event_eth_rx_adapter.h
@@ -466,7 +466,6 @@ int rte_event_eth_rx_adapter_create(uint8_t id, uint8_t dev_id,
  *   - 0: Success
  *   - <0: Error code on failure
  */
-__rte_experimental
 int rte_event_eth_rx_adapter_create_with_params(uint8_t id, uint8_t dev_id,
 			struct rte_event_port_conf *port_config,
 			struct rte_event_eth_rx_adapter_params *rxa_params);
@@ -711,7 +710,6 @@ int rte_event_eth_rx_adapter_vector_limits_get(
  *  - 0: Success, Receive queue added correctly.
  *  - <0: Error code on failure.
  */
-__rte_experimental
 int rte_event_eth_rx_adapter_queue_conf_get(uint8_t id,
 			uint16_t eth_dev_id,
 			uint16_t rx_queue_id,
@@ -736,7 +734,6 @@ int rte_event_eth_rx_adapter_queue_conf_get(uint8_t id,
  *  - 0: Success, queue buffer stats retrieved.
  *  - <0: Error code on failure.
  */
-__rte_experimental
 int
 rte_event_eth_rx_adapter_queue_stats_get(uint8_t id,
 		uint16_t eth_dev_id,
@@ -759,7 +756,6 @@ rte_event_eth_rx_adapter_queue_stats_get(uint8_t id,
  *  - 0: Success, queue buffer stats retrieved.
  *  - <0: Error code on failure.
  */
-__rte_experimental
 int
 rte_event_eth_rx_adapter_queue_stats_reset(uint8_t id,
 		uint16_t eth_dev_id,
@@ -780,7 +776,6 @@ rte_event_eth_rx_adapter_queue_stats_reset(uint8_t id,
  *  - <0: Error code on failure, if the adapter doesn't use a rte_service
  * function, this function returns -ESRCH.
  */
-__rte_experimental
 int
 rte_event_eth_rx_adapter_event_port_get(uint8_t id, uint8_t *event_port_id);
 
@@ -801,7 +796,6 @@ rte_event_eth_rx_adapter_event_port_get(uint8_t id, uint8_t *event_port_id);
  *  -  0: Success
  *  - <0: Error code on failure
  */
-__rte_experimental
 int
 rte_event_eth_rx_adapter_instance_get(uint16_t eth_dev_id,
 				      uint16_t rx_queue_id,
diff --git a/lib/eventdev/rte_event_eth_tx_adapter.h b/lib/eventdev/rte_event_eth_tx_adapter.h
index 1ea9a153164d..b38b3fce979b 100644
--- a/lib/eventdev/rte_event_eth_tx_adapter.h
+++ b/lib/eventdev/rte_event_eth_tx_adapter.h
@@ -492,7 +492,6 @@ rte_event_eth_tx_adapter_service_id_get(uint8_t id, uint32_t *service_id);
  *  -  0: Success
  *  - <0: Error code on failure
  */
-__rte_experimental
 int
 rte_event_eth_tx_adapter_instance_get(uint16_t eth_dev_id,
 				      uint16_t tx_queue_id,
@@ -527,7 +526,6 @@ rte_event_eth_tx_adapter_instance_get(uint16_t eth_dev_id,
  *   - 0: Success
  *   - <0: Error code on failure
  */
-__rte_experimental
 int
 rte_event_eth_tx_adapter_queue_start(uint16_t eth_dev_id, uint16_t tx_queue_id);
 
@@ -546,7 +544,6 @@ rte_event_eth_tx_adapter_queue_start(uint16_t eth_dev_id, uint16_t tx_queue_id);
  *   - 0: Success
  *   - <0: Error code on failure
  */
-__rte_experimental
 int
 rte_event_eth_tx_adapter_queue_stop(uint16_t eth_dev_id, uint16_t tx_queue_id);
 
diff --git a/lib/eventdev/rte_event_timer_adapter.h b/lib/eventdev/rte_event_timer_adapter.h
index fbdddf8f91bd..686cf80a675f 100644
--- a/lib/eventdev/rte_event_timer_adapter.h
+++ b/lib/eventdev/rte_event_timer_adapter.h
@@ -689,9 +689,6 @@ rte_event_timer_cancel_burst(const struct rte_event_timer_adapter *adapter,
 }
 
 /**
- * @warning
- * @b EXPERIMENTAL: this API may change without prior notice
- *
  * Get the number of ticks remaining until event timer expiry.
  *
  * @param adapter
diff --git a/lib/eventdev/rte_eventdev.h b/lib/eventdev/rte_eventdev.h
index 2ea98302b89f..ec9b02455d2e 100644
--- a/lib/eventdev/rte_eventdev.h
+++ b/lib/eventdev/rte_eventdev.h
@@ -785,7 +785,6 @@ rte_event_queue_attr_get(uint8_t dev_id, uint8_t queue_id, uint32_t attr_id,
  *   - -ENOTSUP: device does not support setting the event attribute.
  *   - <0: failed to set event queue attribute
  */
-__rte_experimental
 int
 rte_event_queue_attr_set(uint8_t dev_id, uint8_t queue_id, uint32_t attr_id,
 			 uint64_t attr_value);
@@ -948,7 +947,6 @@ typedef void (*rte_eventdev_port_flush_t)(uint8_t dev_id,
  * @param args
  *   Argument supplied to callback.
  */
-__rte_experimental
 void
 rte_event_port_quiesce(uint8_t dev_id, uint8_t port_id,
 		       rte_eventdev_port_flush_t release_cb, void *args);
@@ -2465,7 +2463,6 @@ rte_event_dequeue_burst(uint8_t dev_id, uint8_t port_id, struct rte_event ev[],
  *
  * @see RTE_EVENT_DEV_CAP_MAINTENANCE_FREE
  */
-__rte_experimental
 static inline int
 rte_event_maintain(uint8_t dev_id, uint8_t port_id, int op)
 {
@@ -2514,7 +2511,6 @@ rte_event_maintain(uint8_t dev_id, uint8_t port_id, int op)
  *  - 0 on success.
  *  - -EINVAL if *dev_id*,  *port_id*, or *profile_id* is invalid.
  */
-__rte_experimental
 static inline uint8_t
 rte_event_port_profile_switch(uint8_t dev_id, uint8_t port_id, uint8_t profile_id)
 {
diff --git a/lib/eventdev/version.map b/lib/eventdev/version.map
index 42a2f7206e4e..3d5c6c2b835c 100644
--- a/lib/eventdev/version.map
+++ b/lib/eventdev/version.map
@@ -5,6 +5,7 @@ DPDK_24 {
 	__rte_eventdev_trace_deq_burst;
 	__rte_eventdev_trace_enq_burst;
 	__rte_eventdev_trace_eth_tx_adapter_enqueue;
+	__rte_eventdev_trace_maintain;
 	__rte_eventdev_trace_timer_arm_burst;
 	__rte_eventdev_trace_timer_arm_tmo_tick_burst;
 	__rte_eventdev_trace_timer_cancel_burst;
@@ -20,6 +21,7 @@ DPDK_24 {
 	rte_event_crypto_adapter_stats_get;
 	rte_event_crypto_adapter_stats_reset;
 	rte_event_crypto_adapter_stop;
+	rte_event_crypto_adapter_vector_limits_get;
 	rte_event_dequeue_timeout_ticks;
 	rte_event_dev_attr_get;
 	rte_event_dev_close;
@@ -42,9 +44,15 @@ DPDK_24 {
 	rte_event_eth_rx_adapter_cb_register;
 	rte_event_eth_rx_adapter_create;
 	rte_event_eth_rx_adapter_create_ext;
+	rte_event_eth_rx_adapter_create_with_params;
+	rte_event_eth_rx_adapter_event_port_get;
 	rte_event_eth_rx_adapter_free;
+	rte_event_eth_rx_adapter_instance_get;
 	rte_event_eth_rx_adapter_queue_add;
+	rte_event_eth_rx_adapter_queue_conf_get;
 	rte_event_eth_rx_adapter_queue_del;
+	rte_event_eth_rx_adapter_queue_stats_get;
+	rte_event_eth_rx_adapter_queue_stats_reset;
 	rte_event_eth_rx_adapter_service_id_get;
 	rte_event_eth_rx_adapter_start;
 	rte_event_eth_rx_adapter_stats_get;
@@ -56,8 +64,11 @@ DPDK_24 {
 	rte_event_eth_tx_adapter_create_ext;
 	rte_event_eth_tx_adapter_event_port_get;
 	rte_event_eth_tx_adapter_free;
+	rte_event_eth_tx_adapter_instance_get;
 	rte_event_eth_tx_adapter_queue_add;
 	rte_event_eth_tx_adapter_queue_del;
+	rte_event_eth_tx_adapter_queue_start;
+	rte_event_eth_tx_adapter_queue_stop;
 	rte_event_eth_tx_adapter_service_id_get;
 	rte_event_eth_tx_adapter_start;
 	rte_event_eth_tx_adapter_stats_get;
@@ -68,10 +79,12 @@ DPDK_24 {
 	rte_event_port_default_conf_get;
 	rte_event_port_link;
 	rte_event_port_links_get;
+	rte_event_port_quiesce;
 	rte_event_port_setup;
 	rte_event_port_unlink;
 	rte_event_port_unlinks_in_progress;
 	rte_event_queue_attr_get;
+	rte_event_queue_attr_set;
 	rte_event_queue_default_conf_get;
 	rte_event_queue_setup;
 	rte_event_ring_create;
@@ -100,27 +113,6 @@ DPDK_24 {
 EXPERIMENTAL {
 	global:
 
-	# added in 21.11
-	__rte_eventdev_trace_maintain;
-	rte_event_eth_rx_adapter_create_with_params;
-	rte_event_eth_rx_adapter_queue_conf_get;
-	rte_event_eth_rx_adapter_queue_stats_get;
-	rte_event_eth_rx_adapter_queue_stats_reset;
-
-	# added in 22.03
-	rte_event_eth_rx_adapter_event_port_get;
-
-	# added in 22.07
-	rte_event_crypto_adapter_vector_limits_get;
-	rte_event_port_quiesce;
-	rte_event_queue_attr_set;
-
-	# added in 22.11
-	rte_event_eth_rx_adapter_instance_get;
-	rte_event_eth_tx_adapter_instance_get;
-	rte_event_eth_tx_adapter_queue_start;
-	rte_event_eth_tx_adapter_queue_stop;
-
 	# added in 23.03
 	rte_event_crypto_adapter_runtime_params_get;
 	rte_event_crypto_adapter_runtime_params_init;
-- 
2.39.2


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

* [PATCH v7 25/25] cryptodev: mark older API's stable
  2023-10-24  2:53 ` [PATCH v7 00/25] Promote 22.11 and older API's to stable Stephen Hemminger
                     ` (23 preceding siblings ...)
  2023-10-24  2:54   ` [PATCH v7 24/25] eventdev: make many API's stable Stephen Hemminger
@ 2023-10-24  2:54   ` Stephen Hemminger
  2023-11-13 15:45   ` [PATCH v7 00/25] Promote 22.11 and older API's to stable David Marchand
  25 siblings, 0 replies; 219+ messages in thread
From: Stephen Hemminger @ 2023-10-24  2:54 UTC (permalink / raw)
  To: dev; +Cc: Stephen Hemminger, Akhil Goyal, Fan Zhang

All the cryptodev API's from 2022 backwards should be stable
at this point.

Signed-off-by: Stephen Hemminger <stephen@networkplumber.org>
---
 lib/cryptodev/rte_cryptodev.h | 31 --------------
 lib/cryptodev/version.map     | 77 +++++++++++++++--------------------
 2 files changed, 32 insertions(+), 76 deletions(-)

diff --git a/lib/cryptodev/rte_cryptodev.h b/lib/cryptodev/rte_cryptodev.h
index be0698ce9fc6..aa5b5529f44c 100644
--- a/lib/cryptodev/rte_cryptodev.h
+++ b/lib/cryptodev/rte_cryptodev.h
@@ -257,7 +257,6 @@ rte_cryptodev_sym_capability_get(uint8_t dev_id,
  *   - Return description of the asymmetric crypto capability if exist.
  *   - Return NULL if the capability not exist.
  */
-__rte_experimental
 const struct rte_cryptodev_asymmetric_xform_capability *
 rte_cryptodev_asym_capability_get(uint8_t dev_id,
 		const struct rte_cryptodev_asym_capability_idx *idx);
@@ -327,7 +326,6 @@ rte_cryptodev_sym_capability_check_aead(
  *   - Return 1 if the op type is supported
  *   - Return 0 if unsupported
  */
-__rte_experimental
 int
 rte_cryptodev_asym_xform_capability_check_optype(
 	const struct rte_cryptodev_asymmetric_xform_capability *capability,
@@ -343,7 +341,6 @@ rte_cryptodev_asym_xform_capability_check_optype(
  *   - Return 0 if the parameters are in range of the capability.
  *   - Return -1 if the parameters are out of range of the capability.
  */
-__rte_experimental
 int
 rte_cryptodev_asym_xform_capability_check_modlen(
 	const struct rte_cryptodev_asymmetric_xform_capability *capability,
@@ -359,7 +356,6 @@ rte_cryptodev_asym_xform_capability_check_modlen(
  *   - Return true if the hash algorithm is supported.
  *   - Return false if the hash algorithm is not supported.
  */
-__rte_experimental
 bool
 rte_cryptodev_asym_xform_capability_check_hash(
 	const struct rte_cryptodev_asymmetric_xform_capability *capability,
@@ -421,7 +417,6 @@ rte_cryptodev_get_aead_algo_enum(enum rte_crypto_aead_algorithm *algo_enum,
  * - Return -1 if string is not valid
  * - Return 0 if the string is valid
  */
-__rte_experimental
 int
 rte_cryptodev_asym_get_xform_enum(enum rte_crypto_asym_xform_type *xform_enum,
 		const char *xform_string);
@@ -860,7 +855,6 @@ rte_cryptodev_queue_pair_setup(uint8_t dev_id, uint16_t queue_pair_id,
  *	 - 1: qp was configured
  *	 - -EINVAL: device was not configured
  */
-__rte_experimental
 int
 rte_cryptodev_get_qp_status(uint8_t dev_id, uint16_t queue_pair_id);
 
@@ -1039,7 +1033,6 @@ rte_cryptodev_get_sec_ctx(uint8_t dev_id);
  *  - On success returns the created session mempool pointer
  *  - On failure returns NULL
  */
-__rte_experimental
 struct rte_mempool *
 rte_cryptodev_sym_session_pool_create(const char *name, uint32_t nb_elts,
 	uint32_t elt_size, uint32_t cache_size, uint16_t priv_size,
@@ -1066,7 +1059,6 @@ rte_cryptodev_sym_session_pool_create(const char *name, uint32_t nb_elts,
  *  - On success return mempool
  *  - On failure returns NULL
  */
-__rte_experimental
 struct rte_mempool *
 rte_cryptodev_asym_session_pool_create(const char *name, uint32_t nb_elts,
 	uint32_t cache_size, uint16_t user_data_size, int socket_id);
@@ -1108,7 +1100,6 @@ rte_cryptodev_sym_session_create(uint8_t dev_id,
  *  - -ENOMEM on memory error for session allocation.
  *  - -ENOTSUP if device doesn't support session configuration.
  */
-__rte_experimental
 int
 rte_cryptodev_asym_session_create(uint8_t dev_id,
 		struct rte_crypto_asym_xform *xforms, struct rte_mempool *mp,
@@ -1141,7 +1132,6 @@ rte_cryptodev_sym_session_free(uint8_t dev_id,
  *  - 0 if successful.
  *  - -EINVAL if device is invalid or session is NULL.
  */
-__rte_experimental
 int
 rte_cryptodev_asym_session_free(uint8_t dev_id, void *sess);
 
@@ -1151,7 +1141,6 @@ rte_cryptodev_asym_session_free(uint8_t dev_id, void *sess);
  * @return
  *   Size of the asymmetric header session.
  */
-__rte_experimental
 unsigned int
 rte_cryptodev_asym_get_header_session_size(void);
 
@@ -1179,7 +1168,6 @@ rte_cryptodev_sym_get_private_session_size(uint8_t dev_id);
  *   - Size of the asymmetric private data, if successful
  *   - 0 if device is invalid or does not have private session
  */
-__rte_experimental
 unsigned int
 rte_cryptodev_asym_get_private_session_size(uint8_t dev_id);
 
@@ -1226,7 +1214,6 @@ const char *rte_cryptodev_driver_name_get(uint8_t driver_id);
  *  - On success, zero.
  *  - On failure, a negative value.
  */
-__rte_experimental
 int
 rte_cryptodev_sym_session_set_user_data(void *sess,
 					void *data,
@@ -1263,7 +1250,6 @@ rte_cryptodev_sym_session_opaque_data_set(void *sess, uint64_t opaque)
  *  - On success return pointer to user data.
  *  - On failure returns NULL.
  */
-__rte_experimental
 void *
 rte_cryptodev_sym_session_get_user_data(void *sess);
 
@@ -1280,7 +1266,6 @@ rte_cryptodev_sym_session_get_user_data(void *sess);
  *  - -EINVAL if the session pointer is invalid.
  *  - -ENOMEM if the available user data size is smaller than the size parameter.
  */
-__rte_experimental
 int
 rte_cryptodev_asym_session_set_user_data(void *sess, void *data, uint16_t size);
 
@@ -1294,7 +1279,6 @@ rte_cryptodev_asym_session_set_user_data(void *sess, void *data, uint16_t size);
  *  - On success return pointer to user data.
  *  - On failure returns NULL.
  */
-__rte_experimental
 void *
 rte_cryptodev_asym_session_get_user_data(void *sess);
 
@@ -1310,7 +1294,6 @@ rte_cryptodev_asym_session_get_user_data(void *sess);
  * @return
  *  - Returns number of successfully processed packets.
  */
-__rte_experimental
 uint32_t
 rte_cryptodev_sym_cpu_crypto_process(uint8_t dev_id,
 	void *sess, union rte_crypto_sym_ofs ofs,
@@ -1325,7 +1308,6 @@ rte_cryptodev_sym_cpu_crypto_process(uint8_t dev_id,
  *   - If the device supports raw data-path APIs, return the context size.
  *   - If the device does not support the APIs, return -1.
  */
-__rte_experimental
 int
 rte_cryptodev_get_raw_dp_ctx_size(uint8_t dev_id);
 
@@ -1344,7 +1326,6 @@ rte_cryptodev_get_raw_dp_ctx_size(uint8_t dev_id);
  *  - On success, zero.
  *  - On failure, a negative value.
  */
-__rte_experimental
 int
 rte_cryptodev_session_event_mdata_set(uint8_t dev_id, void *sess,
 	enum rte_crypto_op_type op_type,
@@ -1570,7 +1551,6 @@ struct rte_crypto_raw_dp_ctx {
  *     - -ENOTSUP if crypto device does not support raw DP operations with the
  *        provided session.
  */
-__rte_experimental
 int
 rte_cryptodev_configure_raw_dp_ctx(uint8_t dev_id, uint16_t qp_id,
 	struct rte_crypto_raw_dp_ctx *ctx,
@@ -1602,7 +1582,6 @@ rte_cryptodev_configure_raw_dp_ctx(uint8_t dev_id, uint16_t qp_id,
  *     cached into the queue but not enqueued yet, depends on the
  *     "enqueue_status" value.
  */
-__rte_experimental
 uint32_t
 rte_cryptodev_raw_enqueue_burst(struct rte_crypto_raw_dp_ctx *ctx,
 	struct rte_crypto_sym_vec *vec, union rte_crypto_sym_ofs ofs,
@@ -1652,7 +1631,6 @@ rte_cryptodev_raw_enqueue(struct rte_crypto_raw_dp_ctx *ctx,
  *   - On success return 0.
  *   - On failure return negative integer.
  */
-__rte_experimental
 int
 rte_cryptodev_raw_enqueue_done(struct rte_crypto_raw_dp_ctx *ctx,
 		uint32_t n);
@@ -1698,7 +1676,6 @@ rte_cryptodev_raw_enqueue_done(struct rte_crypto_raw_dp_ctx *ctx,
  *   - The number of operations dequeued or completed but not freed from the
  *     queue, depends on "dequeue_status" value.
  */
-__rte_experimental
 uint32_t
 rte_cryptodev_raw_dequeue_burst(struct rte_crypto_raw_dp_ctx *ctx,
 	rte_cryptodev_raw_get_dequeue_count_t get_dequeue_count,
@@ -1748,7 +1725,6 @@ rte_cryptodev_raw_dequeue(struct rte_crypto_raw_dp_ctx *ctx,
  *   - On success return 0.
  *   - On failure return negative integer.
  */
-__rte_experimental
 int
 rte_cryptodev_raw_dequeue_done(struct rte_crypto_raw_dp_ctx *ctx,
 		uint32_t n);
@@ -1788,8 +1764,6 @@ rte_cryptodev_raw_dequeue_done(struct rte_crypto_raw_dp_ctx *ctx,
  *  - On success, a pointer value which can later be used to remove the
  *    callback.
  */
-
-__rte_experimental
 struct rte_cryptodev_cb *
 rte_cryptodev_add_enq_callback(uint8_t dev_id,
 			       uint16_t qp_id,
@@ -1817,8 +1791,6 @@ rte_cryptodev_add_enq_callback(uint8_t dev_id,
  *   - <0: The dev_id or the qp_id is out of range, or the callback
  *         is NULL or not found for the crypto device queue pair.
  */
-
-__rte_experimental
 int rte_cryptodev_remove_enq_callback(uint8_t dev_id,
 				      uint16_t qp_id,
 				      struct rte_cryptodev_cb *cb);
@@ -1857,8 +1829,6 @@ int rte_cryptodev_remove_enq_callback(uint8_t dev_id,
  *   - On success, a pointer value which can later be used to remove the
  *     callback.
  */
-
-__rte_experimental
 struct rte_cryptodev_cb *
 rte_cryptodev_add_deq_callback(uint8_t dev_id,
 			       uint16_t qp_id,
@@ -1886,7 +1856,6 @@ rte_cryptodev_add_deq_callback(uint8_t dev_id,
  *   - <0: The dev_id or the qp_id is out of range, or the callback
  *         is NULL or not found for the crypto device queue pair.
  */
-__rte_experimental
 int rte_cryptodev_remove_deq_callback(uint8_t dev_id,
 				      uint16_t qp_id,
 				      struct rte_cryptodev_cb *cb);
diff --git a/lib/cryptodev/version.map b/lib/cryptodev/version.map
index 208919b81950..c39199be54f5 100644
--- a/lib/cryptodev/version.map
+++ b/lib/cryptodev/version.map
@@ -1,15 +1,34 @@
 DPDK_24 {
 	global:
 
+	__rte_cryptodev_trace_dequeue_burst;
+	__rte_cryptodev_trace_enqueue_burst;
 	rte_crypto_aead_operation_strings;
+	rte_crypto_asym_ke_strings;
+	rte_crypto_asym_op_strings;
 	rte_crypto_auth_operation_strings;
 	rte_crypto_cipher_operation_strings;
 	rte_crypto_fp_ops;
 	rte_crypto_op_pool_create;
+	rte_cryptodev_add_deq_callback;
+	rte_cryptodev_add_enq_callback;
+	rte_cryptodev_asym_capability_get;
+	rte_cryptodev_asym_get_header_session_size;
+	rte_cryptodev_asym_get_private_session_size;
+	rte_cryptodev_asym_get_xform_enum;
+	rte_cryptodev_asym_session_create;
+	rte_cryptodev_asym_session_free;
+	rte_cryptodev_asym_session_get_user_data;
+	rte_cryptodev_asym_session_pool_create;
+	rte_cryptodev_asym_session_set_user_data;
+	rte_cryptodev_asym_xform_capability_check_hash;
+	rte_cryptodev_asym_xform_capability_check_modlen;
+	rte_cryptodev_asym_xform_capability_check_optype;
 	rte_cryptodev_callback_register;
 	rte_cryptodev_callback_unregister;
 	rte_cryptodev_close;
 	rte_cryptodev_configure;
+	rte_cryptodev_configure_raw_dp_ctx;
 	rte_cryptodev_count;
 	rte_cryptodev_device_count_by_driver;
 	rte_cryptodev_devices_get;
@@ -20,12 +39,21 @@ DPDK_24 {
 	rte_cryptodev_get_cipher_algo_enum;
 	rte_cryptodev_get_dev_id;
 	rte_cryptodev_get_feature_name;
+	rte_cryptodev_get_qp_status;
+	rte_cryptodev_get_raw_dp_ctx_size;
 	rte_cryptodev_get_sec_ctx;
 	rte_cryptodev_info_get;
 	rte_cryptodev_is_valid_dev;
 	rte_cryptodev_name_get;
 	rte_cryptodev_queue_pair_count;
 	rte_cryptodev_queue_pair_setup;
+	rte_cryptodev_raw_dequeue_burst;
+	rte_cryptodev_raw_dequeue_done;
+	rte_cryptodev_raw_enqueue_burst;
+	rte_cryptodev_raw_enqueue_done;
+	rte_cryptodev_remove_deq_callback;
+	rte_cryptodev_remove_enq_callback;
+	rte_cryptodev_session_event_mdata_set;
 	rte_cryptodev_socket_id;
 	rte_cryptodev_start;
 	rte_cryptodev_stats_get;
@@ -35,9 +63,13 @@ DPDK_24 {
 	rte_cryptodev_sym_capability_check_auth;
 	rte_cryptodev_sym_capability_check_cipher;
 	rte_cryptodev_sym_capability_get;
+	rte_cryptodev_sym_cpu_crypto_process;
 	rte_cryptodev_sym_get_private_session_size;
 	rte_cryptodev_sym_session_create;
 	rte_cryptodev_sym_session_free;
+	rte_cryptodev_sym_session_get_user_data;
+	rte_cryptodev_sym_session_pool_create;
+	rte_cryptodev_sym_session_set_user_data;
 
 	local: *;
 };
@@ -45,51 +77,6 @@ DPDK_24 {
 EXPERIMENTAL {
 	global:
 
-	rte_cryptodev_asym_capability_get;
-	rte_cryptodev_asym_get_header_session_size;
-	rte_cryptodev_asym_get_private_session_size;
-	rte_cryptodev_asym_get_xform_enum;
-	rte_cryptodev_asym_session_create;
-	rte_cryptodev_asym_session_free;
-	rte_cryptodev_asym_xform_capability_check_hash;
-	rte_cryptodev_asym_xform_capability_check_modlen;
-	rte_cryptodev_asym_xform_capability_check_optype;
-	rte_cryptodev_sym_cpu_crypto_process;
-	rte_cryptodev_sym_session_get_user_data;
-	rte_cryptodev_sym_session_pool_create;
-	rte_cryptodev_sym_session_set_user_data;
-	rte_crypto_asym_op_strings;
-
-	# added in 20.05
-	__rte_cryptodev_trace_dequeue_burst;
-	__rte_cryptodev_trace_enqueue_burst;
-
-	# added in 20.08
-	rte_cryptodev_get_qp_status;
-
-	# added in 20.11
-	rte_cryptodev_configure_raw_dp_ctx;
-	rte_cryptodev_get_raw_dp_ctx_size;
-	rte_cryptodev_raw_dequeue_burst;
-	rte_cryptodev_raw_dequeue_done;
-	rte_cryptodev_raw_enqueue_burst;
-	rte_cryptodev_raw_enqueue_done;
-
-	# added in 21.02
-	rte_cryptodev_add_deq_callback;
-	rte_cryptodev_add_enq_callback;
-	rte_cryptodev_remove_deq_callback;
-	rte_cryptodev_remove_enq_callback;
-
-	# added in 22.03
-	rte_cryptodev_asym_session_get_user_data;
-	rte_cryptodev_asym_session_pool_create;
-	rte_cryptodev_asym_session_set_user_data;
-
-	# added in 22.07
-	rte_cryptodev_session_event_mdata_set;
-	rte_crypto_asym_ke_strings;
-
 	# added in 23.03
 	rte_cryptodev_asym_get_xform_string;
 	rte_cryptodev_get_aead_algo_string;
-- 
2.39.2


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

* Re: [PATCH 00/20] remove experimental flag from some API's
  2023-08-08 17:35 [PATCH 00/20] remove experimental flag from some API's Stephen Hemminger
                   ` (26 preceding siblings ...)
  2023-10-24  2:53 ` [PATCH v7 00/25] Promote 22.11 and older API's to stable Stephen Hemminger
@ 2023-10-24  7:20 ` Maxime Coquelin
  2023-10-24 16:05   ` Stephen Hemminger
  27 siblings, 1 reply; 219+ messages in thread
From: Maxime Coquelin @ 2023-10-24  7:20 UTC (permalink / raw)
  To: Stephen Hemminger, dev



On 8/8/23 19:35, Stephen Hemminger wrote:
> Since 23.11 is an LTS release it is time to remove the experimental
> bandaid off many API's. There are about 850 API's marked with experimental
> on current main branch. This addresses the easy to remove ones and
> gets it down to about 690 places.
> 
> The rule is any API that has been in since 22.11 needs to have
> experimental removed (or deleted). The experimental flag is not a
> "get out of ABI stability for free" card.
> 
> Stephen Hemminger (20):
>    bpf: make rte_bpf_dump and rte_bpf_convert stable API's
>    cmdline: make experimental API's stable
>    ethdev: mark rte_mtr API's as stable
>    ethdev: mark rte_tm API's as stable
>    pdump: make API's stable
>    pcapng: mark API's as stable
>    net: remove experimental from functions
>    rcu: remove experimental from rte_rcu_qbsr
>    lpm: remove experimental
>    mbuf: remove experimental from create_extbuf
>    hash: remove experimental from toeplitz hash
>    timer: remove experimental from rte_timer_next_ticks
>    sched: remove experimental
>    dmadev: mark API's as not experimental
>    meter: remove experimental warning from comments
>    power: remove experimental from API's
>    kvargs: remove experimental flag
>    ip_frag: mark a couple of functions stable
>    member: remove experimental tag
>    security: remove experimental flag
> 
>   lib/bpf/rte_bpf.h                   |  2 -
>   lib/bpf/version.map                 |  9 +--
>   lib/cmdline/cmdline.h               |  1 -
>   lib/cmdline/cmdline_parse.h         |  4 --
>   lib/cmdline/cmdline_rdline.h        |  4 --
>   lib/cmdline/version.map             | 26 +++------
>   lib/dmadev/rte_dmadev.h             | 85 ----------------------------
>   lib/dmadev/version.map              |  2 +-
>   lib/ethdev/rte_mtr.h                | 25 +-------
>   lib/ethdev/rte_tm.h                 | 34 -----------
>   lib/ethdev/version.map              | 88 ++++++++++++++---------------
>   lib/hash/rte_thash.h                | 44 ---------------
>   lib/hash/rte_thash_gfni.h           |  8 ---
>   lib/hash/rte_thash_x86_gfni.h       |  8 ---
>   lib/hash/version.map                | 16 ++----
>   lib/ip_frag/rte_ip_frag.h           |  2 -
>   lib/ip_frag/version.map             |  9 +--
>   lib/kvargs/rte_kvargs.h             |  4 --
>   lib/kvargs/version.map              |  8 +--
>   lib/lpm/rte_lpm.h                   |  4 --
>   lib/lpm/version.map                 |  7 +--
>   lib/mbuf/rte_mbuf.h                 |  1 -
>   lib/mbuf/version.map                |  8 +--
>   lib/member/rte_member.h             | 54 ------------------
>   lib/member/version.map              | 12 +---
>   lib/meter/rte_meter.h               | 12 ----
>   lib/net/rte_ip.h                    | 19 -------
>   lib/pcapng/rte_pcapng.h             | 11 ----
>   lib/pcapng/version.map              |  6 +-
>   lib/pdump/rte_pdump.h               | 12 ----
>   lib/pdump/version.map               | 11 +---
>   lib/power/rte_power.h               |  4 --
>   lib/power/rte_power_guest_channel.h |  4 --
>   lib/power/rte_power_intel_uncore.h  |  9 ---
>   lib/power/rte_power_pmd_mgmt.h      | 40 -------------
>   lib/power/version.map               | 33 ++++-------
>   lib/rcu/rte_rcu_qsbr.h              | 20 -------
>   lib/rcu/version.map                 | 15 ++---
>   lib/sched/rte_pie.h                 |  8 ---
>   lib/sched/rte_sched.h               |  5 --
>   lib/sched/version.map               | 18 ++----
>   lib/security/rte_security.h         | 35 ------------
>   lib/security/version.map            | 17 ++----
>   lib/timer/rte_timer.h               |  4 --
>   lib/timer/version.map               |  7 +--
>   45 files changed, 97 insertions(+), 658 deletions(-)
> 

You removed Vhost changes altogether, but I only asked for the Vhost
Async API changes to be removed, i.e. the APIs in rte_vhost_async.h.

Maxime


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

* Re: [PATCH 00/20] remove experimental flag from some API's
  2023-10-24  7:20 ` [PATCH 00/20] remove experimental flag from some API's Maxime Coquelin
@ 2023-10-24 16:05   ` Stephen Hemminger
  0 siblings, 0 replies; 219+ messages in thread
From: Stephen Hemminger @ 2023-10-24 16:05 UTC (permalink / raw)
  To: Maxime Coquelin; +Cc: dev

On Tue, 24 Oct 2023 09:20:05 +0200
Maxime Coquelin <maxime.coquelin@redhat.com> wrote:

> You removed Vhost changes altogether, but I only asked for the Vhost
> Async API changes to be removed, i.e. the APIs in rte_vhost_async.h.
> 
> Maxime

Will get back to vhost, just moved it to the end of the TODO list.

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

* Re: [PATCH v7 23/25] node: remove some of the experimental tags
  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
  0 siblings, 1 reply; 219+ messages in thread
From: David Marchand @ 2023-11-12 14:58 UTC (permalink / raw)
  To: Stephen Hemminger, Nithin Dabilpuram, Pavan Nikhilesh
  Cc: dev, Thomas Monjalon

On Tue, Oct 24, 2023 at 4:57 AM Stephen Hemminger
<stephen@networkplumber.org> wrote:
>
> The node library has been around long enough that experimental
> tag should be removed.  The IPv6 support was added in 23.03
> but that is still enough time that it can be marked stable.
>
> The logtype variable should have been marked internal
> since it is not intended to be used outside of library.

There is, even, no need to export this symbol in the first place.

$ git grep -lw rte_node_logtype
lib/node/log.c
lib/node/node_private.h

$ git grep -lw node_private.h '**.h'


We only need to remove rte_node_logtype from version.map.
This can be fixed when applying.

>
> Signed-off-by: Stephen Hemminger <stephen@networkplumber.org>


-- 
David Marchand


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

* Re: [PATCH v7 24/25] eventdev: make many API's stable
  2023-10-24  2:54   ` [PATCH v7 24/25] eventdev: make many API's stable Stephen Hemminger
@ 2023-11-13 10:06     ` Jerin Jacob
  0 siblings, 0 replies; 219+ messages in thread
From: Jerin Jacob @ 2023-11-13 10:06 UTC (permalink / raw)
  To: Stephen Hemminger
  Cc: dev, Abhinandan Gujjar, Jerin Jacob, Naga Harish K S V,
	Erik Gabriel Carrillo

On Tue, Oct 24, 2023 at 12:42 PM Stephen Hemminger
<stephen@networkplumber.org> wrote:
>
> All API's in eventdev up to 22.11 release should be made stable.
>
> Signed-off-by: Stephen Hemminger <stephen@networkplumber.org>

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

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

* Re: [PATCH v7 23/25] node: remove some of the experimental tags
  2023-11-12 14:58     ` David Marchand
@ 2023-11-13 10:07       ` Jerin Jacob
  0 siblings, 0 replies; 219+ messages in thread
From: Jerin Jacob @ 2023-11-13 10:07 UTC (permalink / raw)
  To: David Marchand
  Cc: Stephen Hemminger, Nithin Dabilpuram, Pavan Nikhilesh, dev,
	Thomas Monjalon

On Sun, Nov 12, 2023 at 8:29 PM David Marchand
<david.marchand@redhat.com> wrote:
>
> On Tue, Oct 24, 2023 at 4:57 AM Stephen Hemminger
> <stephen@networkplumber.org> wrote:
> >
> > The node library has been around long enough that experimental
> > tag should be removed.  The IPv6 support was added in 23.03
> > but that is still enough time that it can be marked stable.
> >
> > The logtype variable should have been marked internal
> > since it is not intended to be used outside of library.
>
> There is, even, no need to export this symbol in the first place.
>
> $ git grep -lw rte_node_logtype
> lib/node/log.c
> lib/node/node_private.h
>
> $ git grep -lw node_private.h '**.h'
>
>
> We only need to remove rte_node_logtype from version.map.
> This can be fixed when applying.
>
> >
> > Signed-off-by: Stephen Hemminger <stephen@networkplumber.org>

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


>
>
> --
> David Marchand
>

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

* Re: [PATCH v7 00/25] Promote 22.11 and older API's to stable
  2023-10-24  2:53 ` [PATCH v7 00/25] Promote 22.11 and older API's to stable Stephen Hemminger
                     ` (24 preceding siblings ...)
  2023-10-24  2:54   ` [PATCH v7 25/25] cryptodev: mark older " Stephen Hemminger
@ 2023-11-13 15:45   ` David Marchand
  25 siblings, 0 replies; 219+ messages in thread
From: David Marchand @ 2023-11-13 15:45 UTC (permalink / raw)
  To: Stephen Hemminger; +Cc: dev

On Tue, Oct 24, 2023 at 4:54 AM Stephen Hemminger
<stephen@networkplumber.org> wrote:
>
> Since 23.11 is an LTS release it is time to remove the experimental
> bandaid off many API's. There are about 890 API's marked with experimental
> on current main branch. This addresses the easy to remove ones and
> gets it down to about 510 places.
>
> The rule is any API that has been in since 22.11 needs to have
> experimental removed (or have API deleted). The experimental flag is not a
> "get out of ABI stability for free" card

There is no such rule.
And I think some libraries do keep the experimental tag for good reasons.
The topic of such a rule is to be discussed in a later techboard meeting.

In any case, there is enough acks on this series.
I fixed the lib/node patch, sorted version.map files content and
removed inclusion of rte_compat as I had requested in a previous
revision.
Series applied thanks.


-- 
David Marchand


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

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

Thread overview: 219+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
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   ` [PATCH v4 28/28] port: make API's stable Stephen Hemminger
2023-10-20 10:11     ` 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

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