ethdev: convert experimental symbols etc
cover ethdev: convert experimental symbols etc
The DPDK policy is that experimental status should be short term
with the expectation that it will be removed after one or two releases. A large part of the ethdev API has been left marked experimental long past that point. Several API's have stayed experimental as far back as 17.11.
This series promotes 119 ethdev symbols introduced in 24.11 or earlier. It also cleans up comments warnings on structures and inline functions.
The trace point symbols are left experimental on purpose; trace infrastructure is intended to stay unstable.
Stephen Hemminger (22):
ethdev: promote meter API to stable
ethdev: promote module EEPROM API to stable
ethdev: promote rte_flow_conv to stable
ethdev: promote hairpin API to stable
ethdev: promote read clock and flow dump to stable
ethdev: promote FEC API to stable
ethdev: promote link speed helpers to stable
ethdev: promote flow tunnel offload API to stable
ethdev: promote aged flow query to stable
ethdev: promote indirect action API to stable
ethdev: promote asynchronous flow API to stable
ethdev: promote flex item API to stable
ethdev: promote remaining aged flow helpers to stable
ethdev: promote congestion management API to stable
ethdev: promote IP reassembly offload API to stable
ethdev: promote per-queue priority flow control to stable
ethdev: promote device info and dump helpers to stable
ethdev: promote speed lanes API to stable
ethdev: promote queue helpers and aggregated ports to stable
ethdev: promote remaining aged symbols to stable
ethdev: promote fast path inline helpers to stable
ethdev: promote experimental structures to stable
doc/guides/rel_notes/release_26_11.rst | 67 +++++ lib/ethdev/rte_ethdev.c | 84 +++--- lib/ethdev/rte_ethdev.h | 228 --------------- lib/ethdev/rte_ethdev_cman.c | 8 +- lib/ethdev/rte_flow.c | 102 +++---- lib/ethdev/rte_flow.h | 370 +------------------------ lib/ethdev/rte_mtr.c | 42 +-- lib/ethdev/rte_mtr.h | 24 -- lib/ethdev/rte_tm.c | 2 +- lib/ethdev/rte_tm.h | 1 - 10 files changed, 189 insertions(+), 739 deletions(-)
Signature · 1 line
2.53.0
PATCH 1/22 ethdev: promote meter API to stable
The traffic metering and policing (MTR) API was introduced in v17.11 and has carried the experimental tag ever since. The core of the interface - profile and object management, statistics and the meter enable/disable controls - has not changed since it was added.
Later additions to the same API are promoted together with it, since they are all long past the two-release probation:
17.11 profile add/delete/update, create, destroy, meter
enable/disable, dscp table update, capabilities get, stats read/update
21.05 meter policy validate/add/delete/update 22.07 meter vlan table update, color in protocol set/get,
color in protocol priority get
22.11 meter profile get, meter policy get
--- doc/guides/rel_notes/release_26_11.rst | 4 +++ lib/ethdev/rte_mtr.c | 42 +++++++++++++------------- lib/ethdev/rte_mtr.h | 24 --------------- 3 files changed, 25 insertions(+), 45 deletions(-)
doc/guides/rel_notes/release_26_11.rst +4 -0
@@ -95,6 +95,10 @@ API Changes Also, make sure to start the actual text at the margin. ======================================================= +* ethdev: Promoted the following API from experimental to stable: + + * meter (MTR) and policing: ``rte_mtr_*`` + ABI Changes -----------
lib/ethdev/rte_mtr.c +21 -21
168 lines not on this page · raw message
lib/ethdev/rte_mtr.h +0 -24
@@ -41,9 +41,6 @@* 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>
@@ -569,7 +566,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 +589,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 +610,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 +629,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 +656,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 +682,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 +702,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 +783,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 +811,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 +834,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 +861,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 +882,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 +901,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 +921,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 +947,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 +973,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 +1003,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 +1022,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 +1043,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 +1066,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 +1097,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,
Signature · 1 line
2.53.0
PATCH 2/22 ethdev: promote module EEPROM API to stable
In reply to Stephen Hemmingerrte_eth_dev_get_module_info() and rte_eth_dev_get_module_eeprom() were added in v18.05 to report SFF module identification and dump the module EEPROM. Both are widely implemented by PMDs and their signatures have not changed since they were introduced.
--- doc/guides/rel_notes/release_26_11.rst | 1 + lib/ethdev/rte_ethdev.c | 4 ++-- lib/ethdev/rte_ethdev.h | 8 -------- 3 files changed, 3 insertions(+), 10 deletions(-)
doc/guides/rel_notes/release_26_11.rst +1 -0
@@ -98,6 +98,7 @@ API Changes * ethdev: Promoted the following API from experimental to stable: * meter (MTR) and policing: ``rte_mtr_*`` + * SFF: ``rte_eth_dev_get_module_info`` and ``rte_eth_dev_get_module_eeprom`` ABI Changes
lib/ethdev/rte_ethdev.c +2 -2
@@ -6952,7 +6952,7 @@ rte_eth_dev_set_eeprom(uint16_t port_id, struct rte_dev_eeprom_info *info)return ret; } -RTE_EXPORT_EXPERIMENTAL_SYMBOL(rte_eth_dev_get_module_info, 18.05) +RTE_EXPORT_SYMBOL (rte_eth_dev_get_module_info) intrte_eth_dev_get_module_info (uint16_t port_id,struct rte_eth_dev_module_info *modinfo)
@@ -6979,7 +6979,7 @@ rte_eth_dev_get_module_info(uint16_t port_id,return ret; } -RTE_EXPORT_EXPERIMENTAL_SYMBOL(rte_eth_dev_get_module_eeprom, 18.05) +RTE_EXPORT_SYMBOL (rte_eth_dev_get_module_eeprom) intrte_eth_dev_get_module_eeprom (uint16_t port_id,struct rte_dev_eeprom_info *info)
lib/ethdev/rte_ethdev.h +0 -8
@@ -5392,9 +5392,6 @@ int rte_eth_dev_get_eeprom(uint16_t port_id, struct rte_dev_eeprom_info *info);int rte_eth_dev_set_eeprom (uint16_t port_id,struct rte_dev_eeprom_info *info);/** -* @warning -* @b EXPERIMENTAL: this API may change without prior notice. -* * Retrieve the type and size of plugin module EEPROM * * @param port_id
@@ -5409,15 +5406,11 @@ int rte_eth_dev_set_eeprom(uint16_t port_id, struct rte_dev_eeprom_info *info);* - (-EIO) if device is removed. * - others depends on the specific operations implementation. */ -__rte_experimental int rte_eth_dev_get_module_info(uint16_t port_id, struct rte_eth_dev_module_info *modinfo) __rte_warn_unused_result;/** -* @warning -* @b EXPERIMENTAL: this API may change without prior notice. -* * Retrieve the data of plugin module EEPROM * * @param port_id
@@ -5433,7 +5426,6 @@ rte_eth_dev_get_module_info(uint16_t port_id, struct rte_eth_dev_module_info *mo* - (-EIO) if device is removed. * - others depends on the specific operations implementation. */ -__rte_experimental int rte_eth_dev_get_module_eeprom(uint16_t port_id, struct rte_dev_eeprom_info *info) __rte_warn_unused_result;
Signature · 1 line
2.53.0
PATCH 3/22 ethdev: promote rte_flow_conv to stable
In reply to Stephen Hemmingerrte_flow_conv() was added in v18.11 as the generic helper to copy and convert flow API objects (items, actions, attributes, rules). Its prototype and the rte_flow_conv_op enum have been unchanged since, and it is used by drivers and applications alike.
--- doc/guides/rel_notes/release_26_11.rst | 1 + lib/ethdev/rte_flow.c | 2 +- lib/ethdev/rte_flow.h | 1 - 3 files changed, 2 insertions(+), 2 deletions(-)
doc/guides/rel_notes/release_26_11.rst +1 -0
@@ -99,6 +99,7 @@ API Changes * meter (MTR) and policing: ``rte_mtr_*`` * SFF: ``rte_eth_dev_get_module_info`` and ``rte_eth_dev_get_module_eeprom`` + * flow conversion: ``rte_flow_conv`` ABI Changes
lib/ethdev/rte_flow.c +1 -1
@@ -1119,7 +1119,7 @@ rte_flow_conv_name(int is_action, }/** Helper function to convert flow API objects. */ -RTE_EXPORT_EXPERIMENTAL_SYMBOL(rte_flow_conv, 18.11) +RTE_EXPORT_SYMBOL(rte_flow_conv) int rte_flow_conv(enum rte_flow_conv_op op, void *dst,
lib/ethdev/rte_flow.h +0 -1
@@ -4949,7 +4949,6 @@ rte_flow_copy(struct rte_flow_desc *fd, size_t len,* * @see rte_flow_conv_op */ -__rte_experimental int rte_flow_conv(enum rte_flow_conv_op op, void *dst,
Signature · 1 line
2.53.0
PATCH 4/22 ethdev: promote hairpin API to stable
In reply to Stephen HemmingerHairpin support was introduced in v19.11 with the queue setup and capability query functions, and completed in v20.11 with the explicit bind/unbind and peer port query functions:
19.11 rte_eth_rx_hairpin_queue_setup
rte_eth_tx_hairpin_queue_setup
rte_eth_dev_hairpin_capability_get
20.11 rte_eth_hairpin_bind
rte_eth_hairpin_unbind
rte_eth_hairpin_get_peer_ports
The interface has been unchanged since and is implemented by several PMDs, so promote the feature as a whole.
--- doc/guides/rel_notes/release_26_11.rst | 6 +++++ lib/ethdev/rte_ethdev.c | 12 ++++----- lib/ethdev/rte_ethdev.h | 36 -------------------------- 3 files changed, 12 insertions(+), 42 deletions(-)
doc/guides/rel_notes/release_26_11.rst +6 -0
@@ -100,6 +100,12 @@ API Changes * meter (MTR) and policing: ``rte_mtr_*`` * SFF: ``rte_eth_dev_get_module_info`` and ``rte_eth_dev_get_module_eeprom`` * flow conversion: ``rte_flow_conv`` + * hairpin queue: ``rte_eth_rx_hairpin_queue_setup``, + ``rte_eth_tx_hairpin_queue_setup``, + ``rte_eth_dev_hairpin_capability_get``, + ``rte_eth_hairpin_bind``, + ``rte_eth_hairpin_unbind``, + ``rte_eth_hairpin_get_peer_ports`` ABI Changes
lib/ethdev/rte_ethdev.c +6 -6
@@ -2506,7 +2506,7 @@ rte_eth_rx_queue_setup(uint16_t port_id, uint16_t rx_queue_id,return eth_err (port_id, ret); } -RTE_EXPORT_EXPERIMENTAL_SYMBOL(rte_eth_rx_hairpin_queue_setup, 19.11) +RTE_EXPORT_SYMBOL(rte_eth_rx_hairpin_queue_setup) int rte_eth_rx_hairpin_queue_setup(uint16_t port_id, uint16_t rx_queue_id, uint16_t nb_rx_desc,
@@ -2724,7 +2724,7 @@ rte_eth_tx_queue_setup(uint16_t port_id, uint16_t tx_queue_id, tx_queue_id, nb_tx_desc, socket_id, &local_conf)); } -RTE_EXPORT_EXPERIMENTAL_SYMBOL(rte_eth_tx_hairpin_queue_setup, 19.11) +RTE_EXPORT_SYMBOL(rte_eth_tx_hairpin_queue_setup) int rte_eth_tx_hairpin_queue_setup(uint16_t port_id, uint16_t tx_queue_id, uint16_t nb_tx_desc,
@@ -2824,7 +2824,7 @@ rte_eth_tx_hairpin_queue_setup(uint16_t port_id, uint16_t tx_queue_id,return ret; } -RTE_EXPORT_EXPERIMENTAL_SYMBOL(rte_eth_hairpin_bind, 20.11) +RTE_EXPORT_SYMBOL (rte_eth_hairpin_bind) intrte_eth_hairpin_bind (uint16_t tx_port,uint16_t rx_port) {
@@ -2852,7 +2852,7 @@ rte_eth_hairpin_bind(uint16_t tx_port, uint16_t rx_port)return ret; } -RTE_EXPORT_EXPERIMENTAL_SYMBOL(rte_eth_hairpin_unbind, 20.11) +RTE_EXPORT_SYMBOL (rte_eth_hairpin_unbind) intrte_eth_hairpin_unbind (uint16_t tx_port,uint16_t rx_port) {
@@ -2880,7 +2880,7 @@ rte_eth_hairpin_unbind(uint16_t tx_port, uint16_t rx_port)return ret; } -RTE_EXPORT_EXPERIMENTAL_SYMBOL(rte_eth_hairpin_get_peer_ports, 20.11) +RTE_EXPORT_SYMBOL (rte_eth_hairpin_get_peer_ports) intrte_eth_hairpin_get_peer_ports (uint16_t port_id,uint16_t *peer_ports,size_t len,uint32_t direction)
@@ -7094,7 +7094,7 @@ rte_eth_dev_adjust_nb_rx_tx_desc(uint16_t port_id,return 0 ; } -RTE_EXPORT_EXPERIMENTAL_SYMBOL(rte_eth_dev_hairpin_capability_get, 19.11) +RTE_EXPORT_SYMBOL (rte_eth_dev_hairpin_capability_get) intrte_eth_dev_hairpin_capability_get (uint16_t port_id,struct rte_eth_hairpin_cap *cap)
lib/ethdev/rte_ethdev.h +0 -36
@@ -1240,9 +1240,6 @@ struct rte_eth_txconf { };/** -* @warning -* @b EXPERIMENTAL: this API may change, or be removed, without prior notice -* * A structure used to return the Tx or Rx hairpin queue capabilities. */ struct rte_eth_hairpin_queue_cap {
@@ -1262,9 +1259,6 @@ struct rte_eth_hairpin_queue_cap { };/** -* @warning -* @b EXPERIMENTAL: this API may change, or be removed, without prior notice -* * A structure used to return the hairpin capabilities that are supported. */ struct rte_eth_hairpin_cap {
@@ -1282,9 +1276,6 @@ struct rte_eth_hairpin_cap {#define RTE_ETH_MAX_HAIRPIN_PEERS 32/** -* @warning -* @b EXPERIMENTAL: this API may change, or be removed, without prior notice -* * A structure used to hold hairpin peer data. */ struct rte_eth_hairpin_peer {
@@ -1293,9 +1284,6 @@ struct rte_eth_hairpin_peer { };/** -* @warning -* @b EXPERIMENTAL: this API may change, or be removed, without prior notice -* * A structure used to configure hairpin binding. */ struct rte_eth_hairpin_conf {
@@ -2531,9 +2519,6 @@ int rte_eth_rx_queue_setup(uint16_t port_id, uint16_t rx_queue_id, struct rte_mempool *mb_pool);/** -* @warning -* @b EXPERIMENTAL: this API may change, or be removed, without prior notice -* * Allocate and set up a hairpin receive queue for an Ethernet device. * * The function set up the selected queue to be used in hairpin.
@@ -2557,7 +2542,6 @@ int rte_eth_rx_queue_setup(uint16_t port_id, uint16_t rx_queue_id,* - (-EINVAL) if bad parameter. * - (-ENOMEM) if unable to allocate the resources. */ -__rte_experimental int rte_eth_rx_hairpin_queue_setup (uint16_t port_id,uint16_t rx_queue_id,uint16_t nb_rx_desc,const struct rte_eth_hairpin_conf *conf);
@@ -2615,9 +2599,6 @@ int rte_eth_tx_queue_setup(uint16_t port_id, uint16_t tx_queue_id, const struct rte_eth_txconf *tx_conf);/** -* @warning -* @b EXPERIMENTAL: this API may change, or be removed, without prior notice -* * Allocate and set up a transmit hairpin queue for an Ethernet device. * * @param port_id
@@ -2639,15 +2620,11 @@ int rte_eth_tx_queue_setup(uint16_t port_id, uint16_t tx_queue_id,* - (-EINVAL) if bad parameter. * - (-ENOMEM) if unable to allocate the resources. */ -__rte_experimental int rte_eth_tx_hairpin_queue_setup (uint16_t port_id,uint16_t tx_queue_id,uint16_t nb_tx_desc,const struct rte_eth_hairpin_conf *conf);/** -* @warning -* @b EXPERIMENTAL: this API may change, or be removed, without prior notice -* * Get all the hairpin peer Rx / Tx ports of the current port. * The caller should ensure that the array is large enough to save the ports * list.
@@ -2670,14 +2647,10 @@ int rte_eth_tx_hairpin_queue_setup* - (-ENOTSUP) if hardware doesn't support. * - Others detailed errors from PMDs. */ -__rte_experimental int rte_eth_hairpin_get_peer_ports (uint16_t port_id,uint16_t *peer_ports,size_t len,uint32_t direction);/** -* @warning -* @b EXPERIMENTAL: this API may change, or be removed, without prior notice -* * Bind all hairpin Tx queues of one port to the Rx queues of the peer port. * It is only allowed to call this function after all hairpin queues are * configured properly and the devices are in started state.
@@ -2696,13 +2669,9 @@ int rte_eth_hairpin_get_peer_ports(uint16_t port_id, uint16_t *peer_ports,* - (-ENOTSUP) if hardware doesn't support. * - Others detailed errors from PMDs. */ -__rte_experimental int rte_eth_hairpin_bind (uint16_t tx_port,uint16_t rx_port);/** -* @warning -* @b EXPERIMENTAL: this API may change, or be removed, without prior notice -* * Unbind all hairpin Tx queues of one port from the Rx queues of the peer port. * This should be called before closing the Tx or Rx devices, if the bind * function is called before.
@@ -2723,7 +2692,6 @@ int rte_eth_hairpin_bind(uint16_t tx_port, uint16_t rx_port);* - (-ENOTSUP) if hardware doesn't support. * - Others detailed errors from PMDs. */ -__rte_experimental int rte_eth_hairpin_unbind (uint16_t tx_port,uint16_t rx_port);/**
@@ -5755,9 +5723,6 @@ void * rte_eth_dev_get_sec_ctx(uint16_t port_id);/** -* @warning -* @b EXPERIMENTAL: this API may change, or be removed, without prior notice -* * Query the device hairpin capabilities. * * @param port_id
@@ -5769,7 +5734,6 @@ rte_eth_dev_get_sec_ctx(uint16_t port_id);* - (-ENOTSUP) if hardware doesn't support. * - (-EINVAL) if bad parameter. */ -__rte_experimental int rte_eth_dev_hairpin_capability_get (uint16_t port_id,struct rte_eth_hairpin_cap *cap);
Signature · 1 line
2.53.0
PATCH 5/22 ethdev: promote read clock and flow dump to stable
In reply to Stephen HemmingerTwo long-standing ethdev helpers graduate here:
19.08 rte_eth_read_clock, to read the device clock counter 20.02 rte_flow_dev_dump, to dump the internal flow representation
Neither has changed since it was added.
--- doc/guides/rel_notes/release_26_11.rst | 2 ++ lib/ethdev/rte_ethdev.c | 2 +- lib/ethdev/rte_ethdev.h | 4 ---- lib/ethdev/rte_flow.c | 2 +- lib/ethdev/rte_flow.h | 4 ---- 5 files changed, 4 insertions(+), 10 deletions(-)
doc/guides/rel_notes/release_26_11.rst +2 -0
@@ -106,6 +106,8 @@ API Changes ``rte_eth_hairpin_bind``, ``rte_eth_hairpin_unbind``, ``rte_eth_hairpin_get_peer_ports`` + * clock: ``rte_eth_read_clock`` + * flow dump: ``rte_flow_dev_dump`` ABI Changes
lib/ethdev/rte_ethdev.c +1 -1
@@ -6789,7 +6789,7 @@ rte_eth_timesync_write_time(uint16_t port_id, const struct timespec *timestamp)return ret; } -RTE_EXPORT_EXPERIMENTAL_SYMBOL(rte_eth_read_clock, 19.08) +RTE_EXPORT_SYMBOL (rte_eth_read_clock) intrte_eth_read_clock (uint16_t port_id,uint64_t *clock) {
lib/ethdev/rte_ethdev.h +0 -4
@@ -5588,9 +5588,6 @@ int rte_eth_timesync_read_time(uint16_t port_id, struct timespec *time);int rte_eth_timesync_write_time (uint16_t port_id,const struct timespec *time);/** -* @warning -* @b EXPERIMENTAL: this API may change without prior notice. -* * Read the current clock counter of an Ethernet device * * This returns the current raw clock value of an Ethernet device. It is
@@ -5632,7 +5629,6 @@ int rte_eth_timesync_write_time(uint16_t port_id, const struct timespec *time);* - -ENOTSUP: The function is not supported by the Ethernet driver. * - -EINVAL: if bad parameter. */ -__rte_experimental int rte_eth_read_clock (uint16_t port_id,uint64_t *clock);
lib/ethdev/rte_flow.c +1 -1
@@ -1246,7 +1246,7 @@ rte_flow_copy(struct rte_flow_desc *desc, size_t len,return ret; } -RTE_EXPORT_EXPERIMENTAL_SYMBOL(rte_flow_dev_dump, 20.02) +RTE_EXPORT_SYMBOL (rte_flow_dev_dump) intrte_flow_dev_dump (uint16_t port_id,struct rte_flow *flow, FILE *file,struct rte_flow_error *error)
lib/ethdev/rte_flow.h +0 -4
@@ -4559,9 +4559,6 @@ enum rte_flow_conv_op { };/** -* @warning -* @b EXPERIMENTAL: this API may change without prior notice. -* * Dump hardware internal representation information of * rte flow to file. *
@@ -4577,7 +4574,6 @@ enum rte_flow_conv_op {* @return * 0 on success, a negative value otherwise. */ -__rte_experimental int rte_flow_dev_dump (uint16_t port_id,struct rte_flow *flow,FILE *file,struct rte_flow_error *error);
Signature · 1 line
2.53.0
PATCH 6/22 ethdev: promote FEC API to stable
In reply to Stephen HemmingerThe forward error correction API was added in v20.11 to query the supported FEC modes of a port and to get and set the current mode. The three functions have kept their prototypes since, and are implemented by several PMDs.
--- doc/guides/rel_notes/release_26_11.rst | 1 + lib/ethdev/rte_ethdev.c | 6 +++--- lib/ethdev/rte_ethdev.h | 12 ------------ 3 files changed, 4 insertions(+), 15 deletions(-)
doc/guides/rel_notes/release_26_11.rst +1 -0
@@ -108,6 +108,7 @@ API Changes ``rte_eth_hairpin_get_peer_ports`` * clock: ``rte_eth_read_clock`` * flow dump: ``rte_flow_dev_dump`` + * FEC: ``rte_eth_fec_get_capability``, ``rte_eth_fec_get`` and ``rte_eth_fec_set`` ABI Changes
lib/ethdev/rte_ethdev.c +3 -3
@@ -5288,7 +5288,7 @@ rte_eth_led_off(uint16_t port_id)return ret; } -RTE_EXPORT_EXPERIMENTAL_SYMBOL(rte_eth_fec_get_capability, 20.11) +RTE_EXPORT_SYMBOL(rte_eth_fec_get_capability) int rte_eth_fec_get_capability(uint16_t port_id, struct rte_eth_fec_capa *speed_fec_capa,
@@ -5316,7 +5316,7 @@ rte_eth_fec_get_capability(uint16_t port_id,return ret; } -RTE_EXPORT_EXPERIMENTAL_SYMBOL(rte_eth_fec_get, 20.11) +RTE_EXPORT_SYMBOL (rte_eth_fec_get) intrte_eth_fec_get (uint16_t port_id,uint32_t *fec_capa) {
@@ -5342,7 +5342,7 @@ rte_eth_fec_get(uint16_t port_id, uint32_t *fec_capa)return ret; } -RTE_EXPORT_EXPERIMENTAL_SYMBOL(rte_eth_fec_set, 20.11) +RTE_EXPORT_SYMBOL (rte_eth_fec_set) intrte_eth_fec_set (uint16_t port_id,uint32_t fec_capa) {
lib/ethdev/rte_ethdev.h +0 -12
@@ -4455,9 +4455,6 @@ int rte_eth_led_on(uint16_t port_id);int rte_eth_led_off (uint16_t port_id);/** -* @warning -* @b EXPERIMENTAL: this API may change, or be removed, without prior notice -* * Get Forward Error Correction(FEC) capability. * * @param port_id
@@ -4482,15 +4479,11 @@ int rte_eth_led_off(uint16_t port_id);* - (-ENODEV) if *port_id* invalid. * - (-EINVAL) if *num* or *speed_fec_capa* invalid */ -__rte_experimental int rte_eth_fec_get_capability (uint16_t port_id,struct rte_eth_fec_capa *speed_fec_capa,unsigned int num);/** -* @warning -* @b EXPERIMENTAL: this API may change, or be removed, without prior notice -* * Get current Forward Error Correction(FEC) mode. * If link is down and AUTO is enabled, AUTO is returned, otherwise, * configured FEC mode is returned.
@@ -4507,13 +4500,9 @@ int rte_eth_fec_get_capability(uint16_t port_id,* - (-EIO) if device is removed. * - (-ENODEV) if *port_id* invalid. */ -__rte_experimental int rte_eth_fec_get (uint16_t port_id,uint32_t *fec_capa);/** -* @warning -* @b EXPERIMENTAL: this API may change, or be removed, without prior notice -* * Set Forward Error Correction(FEC) mode. * * @param port_id
@@ -4533,7 +4522,6 @@ int rte_eth_fec_get(uint16_t port_id, uint32_t *fec_capa);* - (-EIO) if device is removed. * - (-ENODEV) if *port_id* invalid. */ -__rte_experimental int rte_eth_fec_set (uint16_t port_id,uint32_t fec_capa);/**
Signature · 1 line
2.53.0
PATCH 7/22 ethdev: promote link speed helpers to stable
In reply to Stephen Hemmingerrte_eth_link_speed_to_str() and rte_eth_link_to_str() were added in v20.11 to give applications a common way to format link information instead of open coding it. Both are unchanged since.
--- doc/guides/rel_notes/release_26_11.rst | 1 + lib/ethdev/rte_ethdev.c | 4 ++-- lib/ethdev/rte_ethdev.h | 8 -------- 3 files changed, 3 insertions(+), 10 deletions(-)
doc/guides/rel_notes/release_26_11.rst +1 -0
@@ -109,6 +109,7 @@ API Changes * clock: ``rte_eth_read_clock`` * flow dump: ``rte_flow_dev_dump`` * FEC: ``rte_eth_fec_get_capability``, ``rte_eth_fec_get`` and ``rte_eth_fec_set`` + * link speed: ``rte_eth_link_speed_to_str`` and ``rte_eth_link_to_str`` ABI Changes
lib/ethdev/rte_ethdev.c +2 -2
@@ -3208,7 +3208,7 @@ rte_eth_link_get_nowait(uint16_t port_id, struct rte_eth_link *eth_link)return 0 ; } -RTE_EXPORT_EXPERIMENTAL_SYMBOL(rte_eth_link_speed_to_str, 20.11) +RTE_EXPORT_SYMBOL (rte_eth_link_speed_to_str) const char *rte_eth_link_speed_to_str (uint32_t link_speed) {
@@ -3275,7 +3275,7 @@ rte_eth_link_speed_to_str(uint32_t link_speed)return ret; } -RTE_EXPORT_EXPERIMENTAL_SYMBOL(rte_eth_link_to_str, 20.11) +RTE_EXPORT_SYMBOL (rte_eth_link_to_str) intrte_eth_link_to_str (char *str,size_t len,const struct rte_eth_link *eth_link) {
lib/ethdev/rte_ethdev.h +0 -8
@@ -3110,9 +3110,6 @@ int rte_eth_link_get_nowait(uint16_t port_id, struct rte_eth_link *link) __rte_warn_unused_result;/** -* @warning -* @b EXPERIMENTAL: this API may change without prior notice. -* * The function converts a link_speed to a string. It handles all special * values like unknown or none speed. *
@@ -3122,7 +3119,6 @@ int rte_eth_link_get_nowait(uint16_t port_id, struct rte_eth_link *link)* Link speed in textual format. It's pointer to immutable memory. * No free is required. */ -__rte_experimental const char *rte_eth_link_speed_to_str (uint32_t link_speed);/**
@@ -3140,9 +3136,6 @@ __rte_experimentalconst char *rte_eth_link_connector_to_str (enum rte_eth_link_connector link_connector);/** -* @warning -* @b EXPERIMENTAL: this API may change without prior notice. -* * The function converts a rte_eth_link struct representing a link status to * a string. *
@@ -3157,7 +3150,6 @@ const char *rte_eth_link_connector_to_str(enum rte_eth_link_connector link_conne* @return * Number of bytes written to str array or -EINVAL if bad parameter. */ -__rte_experimental int rte_eth_link_to_str (char *str,size_t len,const struct rte_eth_link *eth_link);
Signature · 1 line
2.53.0
Re: [PATCH 07/22] ethdev: promote link speed helpers to stable
Quoted 6 lines · Stephen Hemminger
rte_eth_link_speed_to_str()andrte_eth_link_to_str()were added in v20.11 to give applications a common way to format link information instead of open coding it. Both are unchanged since.Signed-off-by Stephen Hemminger <[email protected]>---
PATCH 8/22 ethdev: promote flow tunnel offload API to stable
In reply to Stephen HemmingerThe tunnel offload model was added in v20.11 to let PMDs split tunnel handling between the match and the decap stages and to let applications recover the missed packet state.
The only change since was in v23.06, when flow restore was made discoverable through an mbuf dynamic flag; the function prototypes were not touched. The API is implemented by several PMDs (mlx5, sfc, bnxt, cnxk, nfp), so promote it as one unit.
--- doc/guides/rel_notes/release_26_11.rst | 4 ++++ lib/ethdev/rte_flow.c | 10 +++++----- lib/ethdev/rte_flow.h | 5 ----- 3 files changed, 9 insertions(+), 10 deletions(-)
doc/guides/rel_notes/release_26_11.rst +4 -0
@@ -110,6 +110,10 @@ API Changes * flow dump: ``rte_flow_dev_dump`` * FEC: ``rte_eth_fec_get_capability``, ``rte_eth_fec_get`` and ``rte_eth_fec_set`` * link speed: ``rte_eth_link_speed_to_str`` and ``rte_eth_link_to_str`` + * flow tunnel: ``rte_flow_tunnel_decap_set``, ``rte_flow_tunnel_match``, + ``rte_flow_tunnel_item_release``, + ``rte_flow_tunnel_action_decap_release`` and + ``rte_flow_get_restore_info`` ABI Changes
lib/ethdev/rte_flow.c +5 -5
@@ -1424,7 +1424,7 @@ rte_flow_action_handle_query(uint16_t port_id,return ret; } -RTE_EXPORT_EXPERIMENTAL_SYMBOL(rte_flow_tunnel_decap_set, 20.11) +RTE_EXPORT_SYMBOL(rte_flow_tunnel_decap_set) int rte_flow_tunnel_decap_set(uint16_t port_id, struct rte_flow_tunnel *tunnel,
@@ -1454,7 +1454,7 @@ rte_flow_tunnel_decap_set(uint16_t port_id, NULL, rte_strerror(ENOTSUP)); } -RTE_EXPORT_EXPERIMENTAL_SYMBOL(rte_flow_tunnel_match, 20.11) +RTE_EXPORT_SYMBOL(rte_flow_tunnel_match) int rte_flow_tunnel_match(uint16_t port_id, struct rte_flow_tunnel *tunnel,
@@ -1484,7 +1484,7 @@ rte_flow_tunnel_match(uint16_t port_id, NULL, rte_strerror(ENOTSUP)); } -RTE_EXPORT_EXPERIMENTAL_SYMBOL(rte_flow_get_restore_info, 20.11) +RTE_EXPORT_SYMBOL(rte_flow_get_restore_info) int rte_flow_get_restore_info(uint16_t port_id, struct rte_mbuf *m,
@@ -1540,7 +1540,7 @@ rte_flow_restore_info_dynflag_register(void)return 0 ; } -RTE_EXPORT_EXPERIMENTAL_SYMBOL(rte_flow_tunnel_action_decap_release, 20.11) +RTE_EXPORT_SYMBOL(rte_flow_tunnel_action_decap_release) int rte_flow_tunnel_action_decap_release(uint16_t port_id, struct rte_flow_action *actions,
@@ -1570,7 +1570,7 @@ rte_flow_tunnel_action_decap_release(uint16_t port_id, NULL, rte_strerror(ENOTSUP)); } -RTE_EXPORT_EXPERIMENTAL_SYMBOL(rte_flow_tunnel_item_release, 20.11) +RTE_EXPORT_SYMBOL(rte_flow_tunnel_item_release) int rte_flow_tunnel_item_release(uint16_t port_id, struct rte_flow_item *items,
lib/ethdev/rte_flow.h +0 -5
@@ -5270,7 +5270,6 @@ struct rte_flow_restore_info {* @return * 0 on success, a negative errno value otherwise and rte_errno is set. */ -__rte_experimental int rte_flow_tunnel_decap_set(uint16_t port_id, struct rte_flow_tunnel *tunnel,
@@ -5301,7 +5300,6 @@ rte_flow_tunnel_decap_set(uint16_t port_id,* @return * 0 on success, a negative errno value otherwise and rte_errno is set. */ -__rte_experimental int rte_flow_tunnel_match(uint16_t port_id, struct rte_flow_tunnel *tunnel,
@@ -5345,7 +5343,6 @@ rte_flow_restore_info_dynflag(void);* @return * 0 on success, a negative errno value otherwise and rte_errno is set. */ -__rte_experimental int rte_flow_get_restore_info(uint16_t port_id, struct rte_mbuf *m,
@@ -5368,7 +5365,6 @@ rte_flow_get_restore_info(uint16_t port_id,* @return * 0 on success, a negative errno value otherwise and rte_errno is set. */ -__rte_experimental int rte_flow_tunnel_action_decap_release(uint16_t port_id, struct rte_flow_action *actions,
@@ -5391,7 +5387,6 @@ rte_flow_tunnel_action_decap_release(uint16_t port_id,* @return * 0 on success, a negative errno value otherwise and rte_errno is set. */ -__rte_experimental int rte_flow_tunnel_item_release(uint16_t port_id, struct rte_flow_item *items,
Signature · 1 line
2.53.0
PATCH 9/22 ethdev: promote aged flow query to stable
In reply to Stephen Hemmingerrte_flow_get_aged_flows() was added in v20.05 to retrieve the flows that hit their age action timeout, and rte_flow_get_q_aged_flows() in v22.11 for the same purpose on a template table queue.
--- doc/guides/rel_notes/release_26_11.rst | 1 + lib/ethdev/rte_flow.c | 4 ++-- lib/ethdev/rte_flow.h | 5 ----- 3 files changed, 3 insertions(+), 7 deletions(-)
doc/guides/rel_notes/release_26_11.rst +1 -0
@@ -114,6 +114,7 @@ API Changes ``rte_flow_tunnel_item_release``, ``rte_flow_tunnel_action_decap_release`` and ``rte_flow_get_restore_info`` + * flow age: ``rte_flow_get_aged_flows`` and ``rte_flow_get_q_aged_flows`` ABI Changes
lib/ethdev/rte_flow.c +2 -2
@@ -1268,7 +1268,7 @@ rte_flow_dev_dump(uint16_t port_id, struct rte_flow *flow, NULL, rte_strerror(ENOSYS)); } -RTE_EXPORT_EXPERIMENTAL_SYMBOL(rte_flow_get_aged_flows, 20.05) +RTE_EXPORT_SYMBOL (rte_flow_get_aged_flows) intrte_flow_get_aged_flows (uint16_t port_id,void **contexts,uint32_t nb_contexts,struct rte_flow_error *error)
@@ -1294,7 +1294,7 @@ rte_flow_get_aged_flows(uint16_t port_id, void **contexts, NULL, rte_strerror(ENOTSUP)); } -RTE_EXPORT_EXPERIMENTAL_SYMBOL(rte_flow_get_q_aged_flows, 22.11) +RTE_EXPORT_SYMBOL (rte_flow_get_q_aged_flows) intrte_flow_get_q_aged_flows (uint16_t port_id,uint32_t queue_id,void **contexts,uint32_t nb_contexts,struct rte_flow_error *error)
lib/ethdev/rte_flow.h +0 -5
@@ -4980,15 +4980,11 @@ rte_flow_conv(enum rte_flow_conv_op op,* @see rte_flow_action_age * @see RTE_ETH_EVENT_FLOW_AGED */ -__rte_experimental int rte_flow_get_aged_flows (uint16_t port_id,void **contexts,uint32_t nb_contexts,struct rte_flow_error *error);/** -* @warning -* @b EXPERIMENTAL: this API may change without prior notice. -* * Get aged-out flows of a given port on the given flow queue. * * If application configure port attribute with RTE_FLOW_PORT_FLAG_STRICT_QUEUE,
@@ -5024,7 +5020,6 @@ rte_flow_get_aged_flows(uint16_t port_id, void **contexts,* @see RTE_ETH_EVENT_FLOW_AGED * @see rte_flow_port_flag */ -__rte_experimental int rte_flow_get_q_aged_flows (uint16_t port_id,uint32_t queue_id,void **contexts,uint32_t nb_contexts,struct rte_flow_error *error);
Signature · 1 line
2.53.0
PATCH 10/22 ethdev: promote indirect action API to stable
In reply to Stephen HemmingerIndirect (shared) flow actions were introduced in v21.05 and have been extended twice since, without any change to the original prototypes:
21.05 rte_flow_action_handle_create, _destroy, _update, _query 23.03 rte_flow_action_handle_query_update 23.07 rte_flow_action_list_handle_create, _destroy,
_query_update
The synchronous side of the interface is promoted here; the matching rte_flow_async_action_handle_* calls belong to the async flow API and are promoted with it.
--- doc/guides/rel_notes/release_26_11.rst | 1 + lib/ethdev/rte_flow.c | 16 ++++++------ lib/ethdev/rte_flow.h | 35 -------------------------- 3 files changed, 9 insertions(+), 43 deletions(-)
doc/guides/rel_notes/release_26_11.rst +1 -0
@@ -115,6 +115,7 @@ API Changes ``rte_flow_tunnel_action_decap_release`` and ``rte_flow_get_restore_info`` * flow age: ``rte_flow_get_aged_flows`` and ``rte_flow_get_q_aged_flows`` + * flow action: ``rte_flow_action_handle_*`` and ``rte_flow_action_list_handle_*`` ABI Changes
lib/ethdev/rte_flow.c +8 -8
@@ -1322,7 +1322,7 @@ rte_flow_get_q_aged_flows(uint16_t port_id, uint32_t queue_id, void **contexts, NULL, rte_strerror(ENOTSUP)); } -RTE_EXPORT_EXPERIMENTAL_SYMBOL(rte_flow_action_handle_create, 21.05) +RTE_EXPORT_SYMBOL (rte_flow_action_handle_create) struct rte_flow_action_handle * rte_flow_action_handle_create(uint16_t port_id, const struct rte_flow_indir_action_conf *conf,
@@ -1350,7 +1350,7 @@ rte_flow_action_handle_create(uint16_t port_id,return handle; } -RTE_EXPORT_EXPERIMENTAL_SYMBOL(rte_flow_action_handle_destroy, 21.05) +RTE_EXPORT_SYMBOL(rte_flow_action_handle_destroy) int rte_flow_action_handle_destroy(uint16_t port_id, struct rte_flow_action_handle *handle,
@@ -1374,7 +1374,7 @@ rte_flow_action_handle_destroy(uint16_t port_id,return ret; } -RTE_EXPORT_EXPERIMENTAL_SYMBOL(rte_flow_action_handle_update, 21.05) +RTE_EXPORT_SYMBOL(rte_flow_action_handle_update) int rte_flow_action_handle_update(uint16_t port_id, struct rte_flow_action_handle *handle,
@@ -1399,7 +1399,7 @@ rte_flow_action_handle_update(uint16_t port_id,return ret; } -RTE_EXPORT_EXPERIMENTAL_SYMBOL(rte_flow_action_handle_query, 21.05) +RTE_EXPORT_SYMBOL(rte_flow_action_handle_query) int rte_flow_action_handle_query(uint16_t port_id, const struct rte_flow_action_handle *handle,
@@ -2460,7 +2460,7 @@ rte_flow_async_action_handle_query(uint16_t port_id,return ret; } -RTE_EXPORT_EXPERIMENTAL_SYMBOL(rte_flow_action_handle_query_update, 23.03) +RTE_EXPORT_SYMBOL(rte_flow_action_handle_query_update) int rte_flow_action_handle_query_update(uint16_t port_id, struct rte_flow_action_handle *handle,
@@ -2513,7 +2513,7 @@ rte_flow_async_action_handle_query_update(uint16_t port_id, uint32_t queue_id, user_data, error); } -RTE_EXPORT_EXPERIMENTAL_SYMBOL(rte_flow_action_list_handle_create, 23.07) +RTE_EXPORT_SYMBOL (rte_flow_action_list_handle_create) struct rte_flow_action_list_handle * rte_flow_action_list_handle_create(uint16_t port_id, const
@@ -2541,7 +2541,7 @@ rte_flow_action_list_handle_create(uint16_t port_id,return handle; } -RTE_EXPORT_EXPERIMENTAL_SYMBOL(rte_flow_action_list_handle_destroy, 23.07) +RTE_EXPORT_SYMBOL(rte_flow_action_list_handle_destroy) int rte_flow_action_list_handle_destroy(uint16_t port_id, struct rte_flow_action_list_handle *handle,
@@ -2629,7 +2629,7 @@ rte_flow_async_action_list_handle_destroy(uint16_t port_id, uint32_t queue_id,return ret; } -RTE_EXPORT_EXPERIMENTAL_SYMBOL(rte_flow_action_list_handle_query_update, 23.07) +RTE_EXPORT_SYMBOL(rte_flow_action_list_handle_query_update) int rte_flow_action_list_handle_query_update(uint16_t port_id, const struct rte_flow_action_list_handle *handle,
lib/ethdev/rte_flow.h +0 -35
@@ -5046,9 +5046,6 @@ struct rte_flow_indir_action_conf { };/** -* @warning -* @b EXPERIMENTAL: this API may change without prior notice. -* * Create an indirect action object that can be used in flow rules * via its handle. * The created object handle has single state and configuration
@@ -5072,7 +5069,6 @@ struct rte_flow_indir_action_conf {* - (EINVAL) if *action* invalid. * - (ENOTSUP) if *action* valid but unsupported. */ -__rte_experimental struct rte_flow_action_handle * rte_flow_action_handle_create(uint16_t port_id, const struct rte_flow_indir_action_conf *conf,
@@ -5080,9 +5076,6 @@ rte_flow_action_handle_create(uint16_t port_id, struct rte_flow_error *error);/** -* @warning -* @b EXPERIMENTAL: this API may change without prior notice. -* * Destroy indirect action by handle. * * @param[in] port_id
@@ -5101,16 +5094,12 @@ rte_flow_action_handle_create(uint16_t port_id,* - (-EBUSY) if action pointed by *action* handle still used by some rules * rte_errno is also set. */ -__rte_experimental int rte_flow_action_handle_destroy (uint16_t port_id,struct rte_flow_action_handle *handle,struct rte_flow_error *error);/** -* @warning -* @b EXPERIMENTAL: this API may change without prior notice. -* * Update in-place the action configuration and / or state pointed * by action *handle* with the configuration provided as *update* argument. * The update of the action configuration effects all flow rules reusing
@@ -5140,7 +5129,6 @@ rte_flow_action_handle_destroy(uint16_t port_id,* - (-ENOENT) if indirect action object pointed by *handle* was not found. * rte_errno is also set. */ -__rte_experimental int rte_flow_action_handle_update(uint16_t port_id, struct rte_flow_action_handle *handle,
@@ -5148,9 +5136,6 @@ rte_flow_action_handle_update(uint16_t port_id, struct rte_flow_error *error);/** -* @warning -* @b EXPERIMENTAL: this API may change without prior notice. -* * Query the direct action by corresponding indirect action object handle. * * Retrieve action-specific data such as counters.
@@ -5172,7 +5157,6 @@ rte_flow_action_handle_update(uint16_t port_id,* @return * 0 on success, a negative errno value otherwise and rte_errno is set. */ -__rte_experimental int rte_flow_action_handle_query(uint16_t port_id, const struct rte_flow_action_handle *handle,
@@ -6562,9 +6546,6 @@ rte_flow_async_action_handle_query(uint16_t port_id, struct rte_flow_error *error);/** -* @warning -* @b EXPERIMENTAL: this API may change without prior notice. -* * Query and update operational mode. * * @see rte_flow_action_handle_query_update()
@@ -6576,9 +6557,6 @@ enum rte_flow_query_update_mode { };/** -* @warning -* @b EXPERIMENTAL: this API may change without prior notice. -* * Query and/or update indirect flow action. * If both query and update not NULL, the function atomically * queries and updates indirect action. Query and update are carried in order
@@ -6608,7 +6586,6 @@ enum rte_flow_query_update_mode {* - (-EINVAL) if *handle* or *mode* invalid or * both *query* and *update* are NULL. */ -__rte_experimental int rte_flow_action_handle_query_update(uint16_t port_id, struct rte_flow_action_handle *handle,
@@ -6686,9 +6663,6 @@ struct rte_flow_action_indirect_list { };/** -* @warning -* @b EXPERIMENTAL: this API may change without prior notice. -* * Create an indirect flow action object from flow actions list. * The object is identified by a unique handle. * The handle has single state and configuration
@@ -6712,7 +6686,6 @@ struct rte_flow_action_indirect_list {* - (-EINVAL) if *actions* list invalid. * - (-ENOTSUP) if *action* list element valid but unsupported. */ -__rte_experimental struct rte_flow_action_list_handle * rte_flow_action_list_handle_create(uint16_t port_id, const
@@ -6764,9 +6737,6 @@ rte_flow_async_action_list_handle_create(uint16_t port_id, uint32_t queue_id, struct rte_flow_error *error);/** -* @warning -* @b EXPERIMENTAL: this API may change without prior notice. -* * Destroy indirect actions list by handle. * * @param[in] port_id
@@ -6784,7 +6754,6 @@ rte_flow_async_action_list_handle_create(uint16_t port_id, uint32_t queue_id,* - (-ENOENT) if actions list pointed by *action* handle was not found. * - (-EBUSY) if actions list pointed by *action* handle still used */ -__rte_experimental int rte_flow_action_list_handle_destroy(uint16_t port_id, struct rte_flow_action_list_handle *handle,
@@ -6829,9 +6798,6 @@ rte_flow_async_action_list_handle_destroy void *user_data, struct rte_flow_error *error);/** -* @warning -* @b EXPERIMENTAL: this API may change without prior notice. -* * Query and/or update indirect flow actions list. * If both query and update not NULL, the function atomically * queries and updates indirect action. Query and update are carried in order
@@ -6864,7 +6830,6 @@ rte_flow_async_action_list_handle_destroy* - (-EINVAL) if *handle* or *mode* invalid or * both *query* and *update* are NULL. */ -__rte_experimental int rte_flow_action_list_handle_query_update(uint16_t port_id, const struct rte_flow_action_list_handle *handle,
Signature · 1 line
2.53.0
PATCH 11/22 ethdev: promote asynchronous flow API to stable
In reply to Stephen HemmingerThe template based, queue oriented flow API was introduced in v22.03 and completed over the following releases:
22.03 rte_flow_configure, rte_flow_info_get,
rte_flow_pattern_template_create/destroy, rte_flow_actions_template_create/destroy, rte_flow_template_table_create/destroy, rte_flow_async_create, rte_flow_async_destroy, rte_flow_push, rte_flow_pull, rte_flow_async_action_handle_create/destroy/update
22.11 rte_flow_async_action_handle_query
23.03 rte_flow_async_action_handle_query_update,
rte_flow_async_create_by_index
23.07 rte_flow_async_actions_update,
rte_flow_async_action_list_handle_create/destroy/ query_update
24.03 rte_flow_template_table_resizable/resize/resize_complete,
rte_flow_async_update_resized
24.11 rte_flow_async_create_by_index_with_pattern
No new symbol has been added to this API since 24.11 and no prototype has changed, so the interface has settled. It is implemented by mlx5 and several other PMDs and is the recommended flow offload path, so promote it as one unit.
--- doc/guides/rel_notes/release_26_11.rst | 7 ++ lib/ethdev/rte_flow.c | 54 +++++------ lib/ethdev/rte_flow.h | 129 ------------------------- 3 files changed, 34 insertions(+), 156 deletions(-)
doc/guides/rel_notes/release_26_11.rst +7 -0
@@ -116,6 +116,13 @@ API Changes ``rte_flow_get_restore_info`` * flow age: ``rte_flow_get_aged_flows`` and ``rte_flow_get_q_aged_flows`` * flow action: ``rte_flow_action_handle_*`` and ``rte_flow_action_list_handle_*`` + * flow template: + ``rte_flow_configure``, ``rte_flow_info_get``, + ``rte_flow_pattern_*``, + ``rte_flow_actions_*``, + ``rte_flow_template_*``, + ``rte_flow_async_*``, + ``rte_flow_push``, ``rte_flow_pull`` ABI Changes
lib/ethdev/rte_flow.c +27 -27
216 lines not on this page · raw message
lib/ethdev/rte_flow.h +0 -129
494 lines not on this page · raw message
Signature · 1 line
2.53.0
PATCH 12/22 ethdev: promote flex item API to stable
In reply to Stephen Hemmingerrte_flow_flex_item_create() and rte_flow_flex_item_release() were added in v21.11 to let applications describe vendor specific or otherwise unsupported protocol headers for matching. Both are unchanged since.
--- doc/guides/rel_notes/release_26_11.rst | 1 + lib/ethdev/rte_flow.c | 4 ++-- lib/ethdev/rte_flow.h | 9 --------- 3 files changed, 3 insertions(+), 11 deletions(-)
doc/guides/rel_notes/release_26_11.rst +1 -0
@@ -123,6 +123,7 @@ API Changes ``rte_flow_template_*``, ``rte_flow_async_*``, ``rte_flow_push``, ``rte_flow_pull`` + * flow flex: ``rte_flow_flex_item_create`` and ``rte_flow_flex_item_release`` ABI Changes
lib/ethdev/rte_flow.c +2 -2
@@ -1626,7 +1626,7 @@ rte_flow_pick_transfer_proxy(uint16_t port_id, uint16_t *proxy_port_id,return ret; } -RTE_EXPORT_EXPERIMENTAL_SYMBOL(rte_flow_flex_item_create, 21.11) +RTE_EXPORT_SYMBOL (rte_flow_flex_item_create) struct rte_flow_item_flex_handle * rte_flow_flex_item_create(uint16_t port_id, const struct rte_flow_item_flex_conf *conf,
@@ -1653,7 +1653,7 @@ rte_flow_flex_item_create(uint16_t port_id,return handle; } -RTE_EXPORT_EXPERIMENTAL_SYMBOL(rte_flow_flex_item_release, 21.11) +RTE_EXPORT_SYMBOL(rte_flow_flex_item_release) int rte_flow_flex_item_release(uint16_t port_id, const struct rte_flow_item_flex_handle *handle,
lib/ethdev/rte_flow.h +0 -9
@@ -2252,10 +2252,6 @@ struct rte_flow_item_flex_link {uint32_t next; }; -/** -* @warning -* @b EXPERIMENTAL: this structure may change without prior notice -*/ struct rte_flow_item_flex_conf {/** * Specifies the flex item and tunnel relations and tells the PMD
@@ -5402,9 +5398,6 @@ rte_flow_pick_transfer_proxy(uint16_t port_id, uint16_t *proxy_port_id, struct rte_flow_error *error);/** -* @warning -* @b EXPERIMENTAL: this API may change without prior notice. -* * Create the flex item with specified configuration over * the Ethernet device. *
@@ -5419,7 +5412,6 @@ rte_flow_pick_transfer_proxy(uint16_t port_id, uint16_t *proxy_port_id,* @return * Non-NULL opaque pointer on success, NULL otherwise and rte_errno is set. */ -__rte_experimental struct rte_flow_item_flex_handle * rte_flow_flex_item_create(uint16_t port_id, const struct rte_flow_item_flex_conf *conf,
@@ -5439,7 +5431,6 @@ rte_flow_flex_item_create(uint16_t port_id,* @return * 0 on success, a negative errno value otherwise and rte_errno is set. */ -__rte_experimental int rte_flow_flex_item_release(uint16_t port_id, const struct rte_flow_item_flex_handle *handle,
Signature · 1 line
2.53.0
PATCH 13/22 ethdev: promote remaining aged flow helpers to stable
In reply to Stephen HemmingerThe last aged experimental symbols of rte_flow:
23.07 rte_flow_actions_update, rte_flow_restore_info_dynflag 23.11 rte_flow_calc_table_hash, rte_flow_group_set_miss_actions 24.03 rte_flow_calc_encap_hash
With this rte_flow.c has no experimental symbol left.
--- doc/guides/rel_notes/release_26_11.rst | 3 +++ lib/ethdev/rte_flow.c | 10 +++++----- lib/ethdev/rte_flow.h | 17 ----------------- 3 files changed, 8 insertions(+), 22 deletions(-)
doc/guides/rel_notes/release_26_11.rst +3 -0
@@ -124,6 +124,9 @@ API Changes ``rte_flow_async_*``, ``rte_flow_push``, ``rte_flow_pull`` * flow flex: ``rte_flow_flex_item_create`` and ``rte_flow_flex_item_release`` + * remaining flow helpers: ``rte_flow_actions_update``, ``rte_flow_restore_info_dynflag``, + ``rte_flow_calc_table_hash``, ``rte_flow_group_set_miss_actions``, + and ``rte_flow_calc_encap_hash`` ABI Changes
lib/ethdev/rte_flow.c +5 -5
@@ -466,7 +466,7 @@ rte_flow_destroy(uint16_t port_id, NULL, rte_strerror(ENOSYS)); } -RTE_EXPORT_EXPERIMENTAL_SYMBOL(rte_flow_actions_update, 23.07) +RTE_EXPORT_SYMBOL(rte_flow_actions_update) int rte_flow_actions_update(uint16_t port_id, struct rte_flow *flow,
@@ -1519,7 +1519,7 @@ static struct { .desc = { .name = "RTE_MBUF_F_RX_RESTORE_INFO", }, }; -RTE_EXPORT_EXPERIMENTAL_SYMBOL(rte_flow_restore_info_dynflag, 23.07) +RTE_EXPORT_SYMBOL (rte_flow_restore_info_dynflag) uint64_trte_flow_restore_info_dynflag (void ) {
@@ -2062,7 +2062,7 @@ rte_flow_template_table_destroy(uint16_t port_id, NULL, rte_strerror(ENOTSUP)); } -RTE_EXPORT_EXPERIMENTAL_SYMBOL(rte_flow_group_set_miss_actions, 23.11) +RTE_EXPORT_SYMBOL(rte_flow_group_set_miss_actions) int rte_flow_group_set_miss_actions(uint16_t port_id, uint32_t group_id,
@@ -2691,7 +2691,7 @@ rte_flow_async_action_list_handle_query_update(uint16_t port_id, uint32_t queue_return ret; } -RTE_EXPORT_EXPERIMENTAL_SYMBOL(rte_flow_calc_table_hash, 23.11) +RTE_EXPORT_SYMBOL(rte_flow_calc_table_hash) int rte_flow_calc_table_hash(uint16_t port_id, const struct rte_flow_template_table *table, const struct rte_flow_item pattern[], uint8_t pattern_template_index,
@@ -2713,7 +2713,7 @@ rte_flow_calc_table_hash(uint16_t port_id, const struct rte_flow_template_tablereturn flow_err (port_id, ret, error); } -RTE_EXPORT_EXPERIMENTAL_SYMBOL(rte_flow_calc_encap_hash, 24.03) +RTE_EXPORT_SYMBOL(rte_flow_calc_encap_hash) int rte_flow_calc_encap_hash(uint16_t port_id, const struct rte_flow_item pattern[], enum rte_flow_encap_hash_field dest_field, uint8_t hash_len,
lib/ethdev/rte_flow.h +0 -17
@@ -4726,7 +4726,6 @@ rte_flow_destroy(uint16_t port_id,* @return * 0 on success, a negative errno value otherwise and rte_errno is set. */ -__rte_experimental int rte_flow_actions_update(uint16_t port_id, struct rte_flow *flow,
@@ -5293,7 +5292,6 @@ rte_flow_tunnel_match(uint16_t port_id,* @return * The offload flag indicating rte_flow_get_restore_info() must be called. */ -__rte_experimental uint64_t rte_flow_restore_info_dynflag (void );
@@ -5964,9 +5962,6 @@ rte_flow_template_table_destroy(uint16_t port_id, struct rte_flow_error *error);/** -* @warning -* @b EXPERIMENTAL: this API may change without prior notice. -* * Set group miss actions. * * @param port_id
@@ -5984,7 +5979,6 @@ rte_flow_template_table_destroy(uint16_t port_id,* @return * 0 on success, a negative errno value otherwise and rte_errno is set. */ -__rte_experimental int rte_flow_group_set_miss_actions(uint16_t port_id, uint32_t group_id,
@@ -6765,9 +6759,6 @@ rte_flow_async_action_list_handle_query_update(uint16_t port_id, uint32_t queue_ struct rte_flow_error *error);/** -* @warning -* @b EXPERIMENTAL: this API may change without prior notice. -* * Calculate the hash for a given pattern in a given table as * calculated by the HW. *
@@ -6790,16 +6781,12 @@ rte_flow_async_action_list_handle_query_update(uint16_t port_id, uint32_t queue_* - (-ENODEV) if *port_id* invalid. * - (-ENOTSUP) if underlying device does not support this functionality. */ -__rte_experimental int rte_flow_calc_table_hash (uint16_t port_id,const struct rte_flow_template_table *table,const struct rte_flow_item pattern[],uint8_t pattern_template_index,uint32_t *hash,struct rte_flow_error *error);/** -* @warning -* @b EXPERIMENTAL: this API may change without prior notice. -* * Destination field type for the hash calculation, when encap action is used. * The encap field implies the size, meaning XXX_SRC_PORT hash len is 2 bytes, * while XXX_NVGRE_FLOW_ID hash len is 1 byte.
@@ -6814,9 +6801,6 @@ enum rte_flow_encap_hash_field { };/** -* @warning -* @b EXPERIMENTAL: this API may change without prior notice. -* * Simulate HW hash calculation that is done when an encap action is being used. * This hash can be stored in tunnel outer header to improve packet distribution. *
@@ -6843,7 +6827,6 @@ enum rte_flow_encap_hash_field {* - (-EINVAL) if *pattern* doesn't hold enough information to calculate the hash * or the dest is not supported. */ -__rte_experimental int rte_flow_calc_encap_hash(uint16_t port_id, const struct rte_flow_item pattern[], enum rte_flow_encap_hash_field dest_field, uint8_t hash_len,
Signature · 1 line
2.53.0
PATCH 14/22 ethdev: promote congestion management API to stable
In reply to Stephen HemmingerThe congestion management interface was added in v22.11 and its four functions have not changed since. With this rte_ethdev_cman.c has no experimental symbol left.
--- doc/guides/rel_notes/release_26_11.rst | 3 +++ lib/ethdev/rte_ethdev.h | 22 ---------------------- lib/ethdev/rte_ethdev_cman.c | 8 ++++---- 3 files changed, 7 insertions(+), 26 deletions(-)
doc/guides/rel_notes/release_26_11.rst +3 -0
@@ -127,6 +127,9 @@ API Changes * remaining flow helpers: ``rte_flow_actions_update``, ``rte_flow_restore_info_dynflag``, ``rte_flow_calc_table_hash``, ``rte_flow_group_set_miss_actions``, and ``rte_flow_calc_encap_hash`` + * congestion management: + ``rte_eth_cman_config_init``, ``rte_eth_cman_config_set``, + ``rte_eth_cman_config_get`` and ``rte_eth_cman_info_get`` ABI Changes
lib/ethdev/rte_ethdev.h +0 -22
@@ -6040,9 +6040,6 @@ enum rte_eth_cman_obj { };/** -* @warning -* @b EXPERIMENTAL: this structure may change, or be removed, without prior notice -* * A structure used to retrieve information of ethdev congestion management. */ struct rte_eth_cman_info {
@@ -6064,9 +6061,6 @@ struct rte_eth_cman_info { };/** -* @warning -* @b EXPERIMENTAL: this structure may change, or be removed, without prior notice -* * A structure used to configure the ethdev congestion management. */ struct rte_eth_cman_config {
@@ -6108,9 +6102,6 @@ struct rte_eth_cman_config { };/** -* @warning -* @b EXPERIMENTAL: this API may change, or be removed, without prior notice -* * Retrieve the information for ethdev congestion management * * @param port_id
@@ -6124,13 +6115,9 @@ struct rte_eth_cman_config {* - (-ENODEV) if *port_id* invalid. * - (-EINVAL) if bad parameter. */ -__rte_experimental int rte_eth_cman_info_get (uint16_t port_id,struct rte_eth_cman_info *info);/** -* @warning -* @b EXPERIMENTAL: this API may change, or be removed, without prior notice -* * Initialize the ethdev congestion management configuration structure with default values. * * @param port_id
@@ -6144,13 +6131,9 @@ int rte_eth_cman_info_get(uint16_t port_id, struct rte_eth_cman_info *info);* - (-ENODEV) if *port_id* invalid. * - (-EINVAL) if bad parameter. */ -__rte_experimental int rte_eth_cman_config_init (uint16_t port_id,struct rte_eth_cman_config *config);/** -* @warning -* @b EXPERIMENTAL: this API may change, or be removed, without prior notice -* * Configure ethdev congestion management * * @param port_id
@@ -6163,13 +6146,9 @@ int rte_eth_cman_config_init(uint16_t port_id, struct rte_eth_cman_config *confi* - (-ENODEV) if *port_id* invalid. * - (-EINVAL) if bad parameter. */ -__rte_experimental int rte_eth_cman_config_set (uint16_t port_id,const struct rte_eth_cman_config *config);/** -* @warning -* @b EXPERIMENTAL: this API may change, or be removed, without prior notice -* * Retrieve the applied ethdev congestion management parameters for the given port. * * @param port_id
@@ -6186,7 +6165,6 @@ int rte_eth_cman_config_set(uint16_t port_id, const struct rte_eth_cman_config ** - (-ENODEV) if *port_id* invalid. * - (-EINVAL) if bad parameter. */ -__rte_experimental int rte_eth_cman_config_get (uint16_t port_id,struct rte_eth_cman_config *config);#ifdef __cplusplus
lib/ethdev/rte_ethdev_cman.c +4 -4
@@ -12,7 +12,7 @@#include "ethdev_trace.h" /* Get congestion management information for a port */ -RTE_EXPORT_EXPERIMENTAL_SYMBOL(rte_eth_cman_info_get, 22.11) +RTE_EXPORT_SYMBOL (rte_eth_cman_info_get) intrte_eth_cman_info_get (uint16_t port_id,struct rte_eth_cman_info *info) {
@@ -41,7 +41,7 @@ rte_eth_cman_info_get(uint16_t port_id, struct rte_eth_cman_info *info) }/* Initialize congestion management structure with default values */ -RTE_EXPORT_EXPERIMENTAL_SYMBOL(rte_eth_cman_config_init, 22.11) +RTE_EXPORT_SYMBOL (rte_eth_cman_config_init) intrte_eth_cman_config_init (uint16_t port_id,struct rte_eth_cman_config *config) {
@@ -70,7 +70,7 @@ rte_eth_cman_config_init(uint16_t port_id, struct rte_eth_cman_config *config) }/* Configure congestion management on a port */ -RTE_EXPORT_EXPERIMENTAL_SYMBOL(rte_eth_cman_config_set, 22.11) +RTE_EXPORT_SYMBOL (rte_eth_cman_config_set) intrte_eth_cman_config_set (uint16_t port_id,const struct rte_eth_cman_config *config) {
@@ -98,7 +98,7 @@ rte_eth_cman_config_set(uint16_t port_id, const struct rte_eth_cman_config *conf }/* Retrieve congestion management configuration of a port */ -RTE_EXPORT_EXPERIMENTAL_SYMBOL(rte_eth_cman_config_get, 22.11) +RTE_EXPORT_SYMBOL (rte_eth_cman_config_get) intrte_eth_cman_config_get (uint16_t port_id,struct rte_eth_cman_config *config) {
Signature · 1 line
2.53.0
PATCH 15/22 ethdev: promote IP reassembly offload API to stable
In reply to Stephen HemmingerThe IP reassembly offload configuration was added in v22.03 and the three functions are unchanged since.
--- doc/guides/rel_notes/release_26_11.rst | 3 +++ lib/ethdev/rte_ethdev.c | 6 +++--- lib/ethdev/rte_ethdev.h | 12 ------------ 3 files changed, 6 insertions(+), 15 deletions(-)
doc/guides/rel_notes/release_26_11.rst +3 -0
@@ -130,6 +130,9 @@ API Changes * congestion management: ``rte_eth_cman_config_init``, ``rte_eth_cman_config_set``, ``rte_eth_cman_config_get`` and ``rte_eth_cman_info_get`` + * ip reassembly: + ``rte_eth_ip_reassembly_capability_get``, ``rte_eth_ip_reassembly_conf_get`` and + ``rte_eth_ip_reassembly_conf_set`` ABI Changes
lib/ethdev/rte_ethdev.c +3 -3
@@ -7205,7 +7205,7 @@ rte_eth_rx_metadata_negotiate(uint16_t port_id, uint64_t *features)return ret; } -RTE_EXPORT_EXPERIMENTAL_SYMBOL(rte_eth_ip_reassembly_capability_get, 22.03) +RTE_EXPORT_SYMBOL (rte_eth_ip_reassembly_capability_get) intrte_eth_ip_reassembly_capability_get (uint16_t port_id,struct rte_eth_ip_reassembly_params *reassembly_capa)
@@ -7241,7 +7241,7 @@ rte_eth_ip_reassembly_capability_get(uint16_t port_id,return ret; } -RTE_EXPORT_EXPERIMENTAL_SYMBOL(rte_eth_ip_reassembly_conf_get, 22.03) +RTE_EXPORT_SYMBOL (rte_eth_ip_reassembly_conf_get) intrte_eth_ip_reassembly_conf_get (uint16_t port_id,struct rte_eth_ip_reassembly_params *conf)
@@ -7275,7 +7275,7 @@ rte_eth_ip_reassembly_conf_get(uint16_t port_id,return ret; } -RTE_EXPORT_EXPERIMENTAL_SYMBOL(rte_eth_ip_reassembly_conf_set, 22.03) +RTE_EXPORT_SYMBOL (rte_eth_ip_reassembly_conf_set) intrte_eth_ip_reassembly_conf_set (uint16_t port_id,const struct rte_eth_ip_reassembly_params *conf)
lib/ethdev/rte_ethdev.h +0 -12
@@ -5850,9 +5850,6 @@ struct rte_eth_ip_reassembly_params { };/** -* @warning -* @b EXPERIMENTAL: this API may change without prior notice -* * Get IP reassembly capabilities supported by the PMD. This is the first API * to be called for enabling the IP reassembly offload feature. PMD will return * the maximum values of parameters that PMD can support and user can call
@@ -5869,14 +5866,10 @@ struct rte_eth_ip_reassembly_params {* - (-EINVAL) if device is not configured or *capa* passed is NULL. * - (0) on success. */ -__rte_experimental int rte_eth_ip_reassembly_capability_get (uint16_t port_id,struct rte_eth_ip_reassembly_params *capa);/** -* @warning -* @b EXPERIMENTAL: this API may change without prior notice -* * Get IP reassembly configuration parameters currently set in PMD. * The API will return error if the configuration is not already * set using rte_eth_ip_reassembly_conf_set() before calling this API or if
@@ -5894,14 +5887,10 @@ int rte_eth_ip_reassembly_capability_get(uint16_t port_id,* configuration is not set using rte_eth_ip_reassembly_conf_set(). * - (0) on success. */ -__rte_experimental int rte_eth_ip_reassembly_conf_get (uint16_t port_id,struct rte_eth_ip_reassembly_params *conf);/** -* @warning -* @b EXPERIMENTAL: this API may change without prior notice -* * Set IP reassembly configuration parameters if the PMD supports IP reassembly * offload. User should first call rte_eth_ip_reassembly_capability_get() to * check the maximum values supported by the PMD before setting the
@@ -5927,7 +5916,6 @@ int rte_eth_ip_reassembly_conf_get(uint16_t port_id,* successfully by the PMD. * - (0) on success. */ -__rte_experimental int rte_eth_ip_reassembly_conf_set (uint16_t port_id,const struct rte_eth_ip_reassembly_params *conf);
Signature · 1 line
2.53.0
PATCH 16/22 ethdev: promote per-queue priority flow control to stable
In reply to Stephen Hemmingerrte_eth_dev_priority_flow_ctrl_queue_configure() and rte_eth_dev_priority_flow_ctrl_queue_info_get() were added in v22.03 to configure PFC on a per queue basis. Neither has changed since.
--- doc/guides/rel_notes/release_26_11.rst | 3 +++ lib/ethdev/rte_ethdev.c | 4 ++-- lib/ethdev/rte_ethdev.h | 14 -------------- 3 files changed, 5 insertions(+), 16 deletions(-)
doc/guides/rel_notes/release_26_11.rst +3 -0
@@ -133,6 +133,9 @@ API Changes * ip reassembly: ``rte_eth_ip_reassembly_capability_get``, ``rte_eth_ip_reassembly_conf_get`` and ``rte_eth_ip_reassembly_conf_set`` + * priority flow: + ``rte_eth_dev_priority_flow_ctrl_queue_configure`` and + ``rte_eth_dev_priority_flow_ctrl_queue_info_get`` ABI Changes
lib/ethdev/rte_ethdev.c +2 -2
@@ -4813,7 +4813,7 @@ validate_tx_pause_config(struct rte_eth_dev_info *dev_info, uint8_t tc_max,return 0 ; } -RTE_EXPORT_EXPERIMENTAL_SYMBOL(rte_eth_dev_priority_flow_ctrl_queue_info_get, 22.03) +RTE_EXPORT_SYMBOL (rte_eth_dev_priority_flow_ctrl_queue_info_get) intrte_eth_dev_priority_flow_ctrl_queue_info_get (uint16_t port_id,struct rte_eth_pfc_queue_info *pfc_queue_info)
@@ -4841,7 +4841,7 @@ rte_eth_dev_priority_flow_ctrl_queue_info_get(uint16_t port_id,return ret; } -RTE_EXPORT_EXPERIMENTAL_SYMBOL(rte_eth_dev_priority_flow_ctrl_queue_configure, 22.03) +RTE_EXPORT_SYMBOL (rte_eth_dev_priority_flow_ctrl_queue_configure) intrte_eth_dev_priority_flow_ctrl_queue_configure (uint16_t port_id,struct rte_eth_pfc_queue_conf *pfc_queue_conf)
lib/ethdev/rte_ethdev.h +0 -14
@@ -1424,9 +1424,6 @@ struct rte_eth_pfc_conf { };/** -* @warning -* @b EXPERIMENTAL: this API may change, or be removed, without prior notice -* * A structure used to retrieve information of queue based PFC. */ struct rte_eth_pfc_queue_info {
@@ -1439,9 +1436,6 @@ struct rte_eth_pfc_queue_info { };/** -* @warning -* @b EXPERIMENTAL: this API may change, or be removed, without prior notice -* * A structure used to configure Ethernet priority flow control parameters for * ethdev queues. *
@@ -4590,9 +4584,6 @@ int rte_eth_dev_mac_addr_add(uint16_t port_id, struct rte_ether_addr *mac_addr, uint32_t pool);/** -* @warning -* @b EXPERIMENTAL: this API may change without prior notice. -* * Retrieve the information for queue based PFC. * * @param port_id
@@ -4606,14 +4597,10 @@ int rte_eth_dev_mac_addr_add(uint16_t port_id, struct rte_ether_addr *mac_addr,* - (-ENODEV) if *port_id* invalid. * - (-EINVAL) if bad parameter. */ -__rte_experimental int rte_eth_dev_priority_flow_ctrl_queue_info_get (uint16_t port_id,struct rte_eth_pfc_queue_info *pfc_queue_info);/** -* @warning -* @b EXPERIMENTAL: this API may change without prior notice. -* * Configure the queue based priority flow control for a given queue * for Ethernet device. *
@@ -4633,7 +4620,6 @@ int rte_eth_dev_priority_flow_ctrl_queue_info_get(uint16_t port_id,* - (-EINVAL) if bad parameter * - (-EIO) if flow control setup queue failure */ -__rte_experimental int rte_eth_dev_priority_flow_ctrl_queue_configure (uint16_t port_id,struct rte_eth_pfc_queue_conf *pfc_queue_conf);
Signature · 1 line
2.53.0
PATCH 17/22 ethdev: promote device info and dump helpers to stable
In reply to Stephen HemmingerA set of introspection helpers that have been stable for years:
21.11 rte_eth_dev_capability_name, rte_eth_dev_conf_get,
rte_eth_macaddrs_get
22.03 rte_eth_dev_priv_dump 22.11 rte_eth_rx_descriptor_dump, rte_eth_tx_descriptor_dump 23.11 rte_eth_dev_rss_algo_name 24.03 rte_eth_find_rss_algo 24.11 rte_eth_dev_get_reg_info_ext
--- doc/guides/rel_notes/release_26_11.rst | 6 +++++ lib/ethdev/rte_ethdev.c | 18 +++++++------- lib/ethdev/rte_ethdev.h | 33 -------------------------- 3 files changed, 15 insertions(+), 42 deletions(-)
doc/guides/rel_notes/release_26_11.rst +6 -0
@@ -136,6 +136,12 @@ API Changes * priority flow: ``rte_eth_dev_priority_flow_ctrl_queue_configure`` and ``rte_eth_dev_priority_flow_ctrl_queue_info_get`` + * device info: + ``rte_eth_dev_capability_name``, ``rte_eth_dev_conf_get``, + ``rte_eth_macaddrs_get``, ``rte_eth_dev_priv_dump``, + ``rte_eth_rx_descriptor_dump``, ``rte_eth_tx_descriptor_dump``, + ``rte_eth_dev_rss_algo_name``, ``rte_eth_find_rss_algo`` and + ``rte_eth_dev_get_reg_info_ext`` ABI Changes
lib/ethdev/rte_ethdev.c +9 -9
@@ -1171,7 +1171,7 @@ eth_dev_offload_names(uint64_t bitmask, char *buf, size_t size,return buf; } -RTE_EXPORT_EXPERIMENTAL_SYMBOL(rte_eth_dev_capability_name, 21.11) +RTE_EXPORT_SYMBOL (rte_eth_dev_capability_name) const char *rte_eth_dev_capability_name (uint64_t capability) {
@@ -4153,7 +4153,7 @@ rte_eth_dev_info_get(uint16_t port_id, struct rte_eth_dev_info *dev_info)return 0 ; } -RTE_EXPORT_EXPERIMENTAL_SYMBOL(rte_eth_dev_conf_get, 21.11) +RTE_EXPORT_SYMBOL (rte_eth_dev_conf_get) intrte_eth_dev_conf_get (uint16_t port_id,struct rte_eth_conf *dev_conf) {
@@ -4314,7 +4314,7 @@ rte_eth_dev_set_ptypes(uint16_t port_id, uint32_t ptype_mask,return ret; } -RTE_EXPORT_EXPERIMENTAL_SYMBOL(rte_eth_macaddrs_get, 21.11) +RTE_EXPORT_SYMBOL (rte_eth_macaddrs_get) intrte_eth_macaddrs_get (uint16_t port_id,struct rte_ether_addr *ma,unsigned int num)
@@ -5155,7 +5155,7 @@ rte_eth_dev_rss_hash_conf_get(uint16_t port_id,return ret; } -RTE_EXPORT_EXPERIMENTAL_SYMBOL(rte_eth_dev_rss_algo_name, 23.11) +RTE_EXPORT_SYMBOL (rte_eth_dev_rss_algo_name) const char *rte_eth_dev_rss_algo_name (enum rte_eth_hash_function rss_algo) {
@@ -5170,7 +5170,7 @@ rte_eth_dev_rss_algo_name(enum rte_eth_hash_function rss_algo)return name; } -RTE_EXPORT_EXPERIMENTAL_SYMBOL(rte_eth_find_rss_algo, 24.03) +RTE_EXPORT_SYMBOL (rte_eth_find_rss_algo) intrte_eth_find_rss_algo (const char *name,uint32_t *algo) {
@@ -6845,7 +6845,7 @@ rte_eth_dev_get_reg_info(uint16_t port_id, struct rte_dev_reg_info *info)return 0 ; } -RTE_EXPORT_EXPERIMENTAL_SYMBOL(rte_eth_dev_get_reg_info_ext, 24.11) +RTE_EXPORT_SYMBOL (rte_eth_dev_get_reg_info_ext) intrte_eth_dev_get_reg_info_ext (uint16_t port_id,struct rte_dev_reg_info *info) {
@@ -7316,7 +7316,7 @@ rte_eth_ip_reassembly_conf_set(uint16_t port_id,return ret; } -RTE_EXPORT_EXPERIMENTAL_SYMBOL(rte_eth_dev_priv_dump, 22.03) +RTE_EXPORT_SYMBOL (rte_eth_dev_priv_dump) intrte_eth_dev_priv_dump (uint16_t port_id,FILE *file) {
@@ -7335,7 +7335,7 @@ rte_eth_dev_priv_dump(uint16_t port_id, FILE *file)return eth_err (port_id, dev->dev_ops->eth_dev_priv_dump (dev, file)); } -RTE_EXPORT_EXPERIMENTAL_SYMBOL(rte_eth_rx_descriptor_dump, 22.11) +RTE_EXPORT_SYMBOL (rte_eth_rx_descriptor_dump) intrte_eth_rx_descriptor_dump (uint16_t port_id,uint16_t queue_id,uint16_t offset,uint16_t num, FILE *file)
@@ -7362,7 +7362,7 @@ rte_eth_rx_descriptor_dump(uint16_t port_id, uint16_t queue_id, dev->dev_ops->eth_rx_descriptor_dump(dev, queue_id, offset, num, file)); } -RTE_EXPORT_EXPERIMENTAL_SYMBOL(rte_eth_tx_descriptor_dump, 22.11) +RTE_EXPORT_SYMBOL (rte_eth_tx_descriptor_dump) intrte_eth_tx_descriptor_dump (uint16_t port_id,uint16_t queue_id,uint16_t offset,uint16_t num, FILE *file)
lib/ethdev/rte_ethdev.h +0 -33
@@ -2379,9 +2379,6 @@ const char *rte_eth_dev_rx_offload_name(uint64_t offload);const char *rte_eth_dev_tx_offload_name (uint64_t offload);/** -* @warning -* @b EXPERIMENTAL: this API may change without prior notice. -* * Get RTE_ETH_DEV_CAPA_* flag name. * * @param capability
@@ -2389,7 +2386,6 @@ const char *rte_eth_dev_tx_offload_name(uint64_t offload);* @return * Capability name or 'UNKNOWN' if the flag cannot be recognized. */ -__rte_experimental const char *rte_eth_dev_capability_name (uint64_t capability);/**
@@ -3506,9 +3502,6 @@ int rte_eth_dev_set_rx_queue_stats_mapping(uint16_t port_id,int rte_eth_macaddr_get (uint16_t port_id,struct rte_ether_addr *mac_addr);/** -* @warning -* @b EXPERIMENTAL: this API may change without prior notice -* * Retrieve the Ethernet addresses of an Ethernet device. * * @param port_id
@@ -3525,7 +3518,6 @@ int rte_eth_macaddr_get(uint16_t port_id, struct rte_ether_addr *mac_addr);* - (-ENODEV) if *port_id* invalid. * - (-EINVAL) if bad parameter. */ -__rte_experimental int rte_eth_macaddrs_get (uint16_t port_id,struct rte_ether_addr *ma,unsigned int num);
@@ -3552,9 +3544,6 @@ int rte_eth_dev_info_get(uint16_t port_id, struct rte_eth_dev_info *dev_info) __rte_warn_unused_result;/** -* @warning -* @b EXPERIMENTAL: this API may change without prior notice. -* * Retrieve the configuration of an Ethernet device. * * @param port_id
@@ -3566,7 +3555,6 @@ int rte_eth_dev_info_get(uint16_t port_id, struct rte_eth_dev_info *dev_info)* - (-ENODEV) if *port_id* invalid. * - (-EINVAL) if bad parameter. */ -__rte_experimental int rte_eth_dev_conf_get(uint16_t port_id, struct rte_eth_conf *dev_conf) __rte_warn_unused_result;
@@ -4825,9 +4813,6 @@ rte_eth_dev_rss_hash_conf_get(uint16_t port_id, struct rte_eth_rss_conf *rss_conf);/** -* @warning -* @b EXPERIMENTAL: this API may change, or be removed, without prior notice. -* * Get the name of RSS hash algorithm. * * @param rss_algo
@@ -4836,14 +4821,10 @@ rte_eth_dev_rss_hash_conf_get(uint16_t port_id,* @return * Hash algorithm name or 'UNKNOWN' if the rss_algo cannot be recognized. */ -__rte_experimental const char *rte_eth_dev_rss_algo_name (enum rte_eth_hash_function rss_algo);/** -* @warning -* @b EXPERIMENTAL: this API may change, or be removed, without prior notice. -* * Get RSS hash algorithm by its name. * * @param name
@@ -4856,7 +4837,6 @@ rte_eth_dev_rss_algo_name(enum rte_eth_hash_function rss_algo);* - (0) if successful. * - (-EINVAL) if not found. */ -__rte_experimental int rte_eth_find_rss_algo (const char *name,uint32_t *algo);
@@ -5251,7 +5231,6 @@ int rte_eth_get_monitor_addr(uint16_t port_id, uint16_t queue_id,* - (-EIO) if device is removed. * - others depends on the specific operations implementation. */ -__rte_experimental int rte_eth_dev_get_reg_info_ext (uint16_t port_id,struct rte_dev_reg_info *info);/**
@@ -5925,9 +5904,6 @@ typedef struct { } rte_eth_ip_reassembly_dynfield_t;/** -* @warning -* @b EXPERIMENTAL: this API may change, or be removed, without prior notice -* * Dump private info from device to a file. Provided data and the order depends * on the PMD. *
@@ -5942,13 +5918,9 @@ typedef struct {* - (-ENOTSUP) if the device does not support this function. * - (-EIO) if device is removed. */ -__rte_experimental int rte_eth_dev_priv_dump (uint16_t port_id,FILE *file);/** -* @warning -* @b EXPERIMENTAL: this API may change, or be removed, without prior notice -* * Dump ethdev Rx descriptor info to a file. * * This API is used for debugging, not a dataplane API.
@@ -5968,14 +5940,10 @@ int rte_eth_dev_priv_dump(uint16_t port_id, FILE *file);* - On success, zero. * - On failure, a negative value. */ -__rte_experimental int rte_eth_rx_descriptor_dump (uint16_t port_id,uint16_t queue_id,uint16_t offset,uint16_t num,FILE *file);/** -* @warning -* @b EXPERIMENTAL: this API may change, or be removed, without prior notice -* * Dump ethdev Tx descriptor info to a file. * * This API is used for debugging, not a dataplane API.
@@ -5995,7 +5963,6 @@ int rte_eth_rx_descriptor_dump(uint16_t port_id, uint16_t queue_id,* - On success, zero. * - On failure, a negative value. */ -__rte_experimental int rte_eth_tx_descriptor_dump (uint16_t port_id,uint16_t queue_id,uint16_t offset,uint16_t num,FILE *file);
Signature · 1 line
2.53.0
PATCH 18/22 ethdev: promote speed lanes API to stable
In reply to Stephen HemmingerThe speed lanes configuration was added in v24.11 to query and set the number of lanes used by a link. The three functions are unchanged since.
--- doc/guides/rel_notes/release_26_11.rst | 3 +++ lib/ethdev/rte_ethdev.c | 6 +++--- lib/ethdev/rte_ethdev.h | 12 ------------ 3 files changed, 6 insertions(+), 15 deletions(-)
doc/guides/rel_notes/release_26_11.rst +3 -0
@@ -142,6 +142,9 @@ API Changes ``rte_eth_rx_descriptor_dump``, ``rte_eth_tx_descriptor_dump``, ``rte_eth_dev_rss_algo_name``, ``rte_eth_find_rss_algo`` and ``rte_eth_dev_get_reg_info_ext`` + * speed lanes: + ``rte_eth_speed_lanes_get``, ``rte_eth_speed_lanes_set`` and + ``rte_eth_speed_lanes_get_capability`` ABI Changes
lib/ethdev/rte_ethdev.c +3 -3
@@ -1929,7 +1929,7 @@ rte_eth_dev_set_link_down(uint16_t port_id)return ret; } -RTE_EXPORT_EXPERIMENTAL_SYMBOL(rte_eth_speed_lanes_get, 24.11) +RTE_EXPORT_SYMBOL (rte_eth_speed_lanes_get) intrte_eth_speed_lanes_get (uint16_t port_id,uint32_t *lane) {
@@ -1943,7 +1943,7 @@ rte_eth_speed_lanes_get(uint16_t port_id, uint32_t *lane)return eth_err (port_id, dev->dev_ops->speed_lanes_get (dev, lane)); } -RTE_EXPORT_EXPERIMENTAL_SYMBOL(rte_eth_speed_lanes_get_capability, 24.11) +RTE_EXPORT_SYMBOL(rte_eth_speed_lanes_get_capability) int rte_eth_speed_lanes_get_capability(uint16_t port_id, struct rte_eth_speed_lanes_capa *speed_lanes_capa,
@@ -1970,7 +1970,7 @@ rte_eth_speed_lanes_get_capability(uint16_t port_id,return ret; } -RTE_EXPORT_EXPERIMENTAL_SYMBOL(rte_eth_speed_lanes_set, 24.11) +RTE_EXPORT_SYMBOL (rte_eth_speed_lanes_set) intrte_eth_speed_lanes_set (uint16_t port_id,uint32_t speed_lanes_capa) {
lib/ethdev/rte_ethdev.h +0 -12
@@ -3144,9 +3144,6 @@ int rte_eth_link_to_str(char *str, size_t len, const struct rte_eth_link *eth_link);/** -* @warning -* @b EXPERIMENTAL: this API may change, or be removed, without prior notice -* * Get Active lanes. * * @param port_id
@@ -3163,13 +3160,9 @@ int rte_eth_link_to_str(char *str, size_t len,* - (-EIO) if device is removed. * - (-ENODEV) if *port_id* invalid. */ -__rte_experimental int rte_eth_speed_lanes_get (uint16_t port_id,uint32_t *lanes);/** -* @warning -* @b EXPERIMENTAL: this API may change, or be removed, without prior notice -* * Set speed lanes supported by the NIC. * * @param port_id
@@ -3187,13 +3180,9 @@ int rte_eth_speed_lanes_get(uint16_t port_id, uint32_t *lanes);* - (-ENODEV) if *port_id* invalid. * - (-EINVAL) if *lanes* count not in speeds capability list. */ -__rte_experimental int rte_eth_speed_lanes_set (uint16_t port_id,uint32_t speed_lanes);/** -* @warning -* @b EXPERIMENTAL: this API may change, or be removed, without prior notice -* * Get speed lanes supported by the NIC. * * @param port_id
@@ -3212,7 +3201,6 @@ int rte_eth_speed_lanes_set(uint16_t port_id, uint32_t speed_lanes);* - (-ENODEV) if *port_id* invalid. * - (-EINVAL) if *speed_lanes* invalid */ -__rte_experimental int rte_eth_speed_lanes_get_capability (uint16_t port_id,struct rte_eth_speed_lanes_capa *speed_lanes_capa,unsigned int num);
Signature · 1 line
2.53.0
PATCH 19/22 ethdev: promote queue helpers and aggregated ports to stable
In reply to Stephen Hemminger 22.07 rte_eth_rx_avail_thresh_set, rte_eth_rx_avail_thresh_query 23.03 rte_eth_dev_count_aggr_ports,
rte_eth_dev_map_aggr_tx_affinity
23.07 rte_eth_rx_queue_is_valid, rte_eth_tx_queue_is_valid 23.11 rte_eth_recycle_rx_queue_info_get
None of these has changed since it was introduced.
--- doc/guides/rel_notes/release_26_11.rst | 6 +++++ lib/ethdev/rte_ethdev.c | 14 ++++++------ lib/ethdev/rte_ethdev.h | 31 -------------------------- 3 files changed, 13 insertions(+), 38 deletions(-)
doc/guides/rel_notes/release_26_11.rst +6 -0
@@ -145,6 +145,12 @@ API Changes * speed lanes: ``rte_eth_speed_lanes_get``, ``rte_eth_speed_lanes_set`` and ``rte_eth_speed_lanes_get_capability`` + * queue helpers: + ``rte_eth_rx_queue_is_valid``, ``rte_eth_tx_queue_is_valid``, + ``rte_eth_rx_avail_thresh_set``, ``rte_eth_rx_avail_thresh_query``, + ``rte_eth_recycle_rx_queue_info_get``, + ``rte_eth_dev_count_aggr_ports`` and + ``rte_eth_dev_map_aggr_tx_affinity`` ABI Changes
lib/ethdev/rte_ethdev.c +7 -7
@@ -839,7 +839,7 @@ eth_dev_validate_tx_queue(const struct rte_eth_dev *dev, uint16_t tx_queue_id)return 0 ; } -RTE_EXPORT_EXPERIMENTAL_SYMBOL(rte_eth_rx_queue_is_valid, 23.07) +RTE_EXPORT_SYMBOL (rte_eth_rx_queue_is_valid) intrte_eth_rx_queue_is_valid (uint16_t port_id,uint16_t queue_id) {
@@ -851,7 +851,7 @@ rte_eth_rx_queue_is_valid(uint16_t port_id, uint16_t queue_id)return eth_dev_validate_rx_queue (dev, queue_id); } -RTE_EXPORT_EXPERIMENTAL_SYMBOL(rte_eth_tx_queue_is_valid, 23.07) +RTE_EXPORT_SYMBOL (rte_eth_tx_queue_is_valid) intrte_eth_tx_queue_is_valid (uint16_t port_id,uint16_t queue_id) {
@@ -5737,7 +5737,7 @@ int rte_eth_get_queue_rate_limit(uint16_t port_id, uint16_t queue_idx,return ret; } -RTE_EXPORT_EXPERIMENTAL_SYMBOL(rte_eth_rx_avail_thresh_set, 22.07) +RTE_EXPORT_SYMBOL (rte_eth_rx_avail_thresh_set) int rte_eth_rx_avail_thresh_set(uint16_t port_id, uint16_t queue_id,uint8_t avail_thresh) {
@@ -5770,7 +5770,7 @@ int rte_eth_rx_avail_thresh_set(uint16_t port_id, uint16_t queue_id,return ret; } -RTE_EXPORT_EXPERIMENTAL_SYMBOL(rte_eth_rx_avail_thresh_query, 22.07) +RTE_EXPORT_SYMBOL (rte_eth_rx_avail_thresh_query) int rte_eth_rx_avail_thresh_query(uint16_t port_id, uint16_t *queue_id,uint8_t *avail_thresh) {
@@ -6456,7 +6456,7 @@ rte_eth_tx_queue_info_get(uint16_t port_id, uint16_t queue_id,return 0 ; } -RTE_EXPORT_EXPERIMENTAL_SYMBOL(rte_eth_recycle_rx_queue_info_get, 23.11) +RTE_EXPORT_SYMBOL (rte_eth_recycle_rx_queue_info_get) intrte_eth_recycle_rx_queue_info_get (uint16_t port_id,uint16_t queue_id,struct rte_eth_recycle_rxq_info *recycle_rxq_info)
@@ -7429,7 +7429,7 @@ rte_eth_buffer_split_get_supported_hdr_ptypes(uint16_t port_id, uint32_t *ptypesreturn j; } -RTE_EXPORT_EXPERIMENTAL_SYMBOL(rte_eth_dev_count_aggr_ports, 23.03) +RTE_EXPORT_SYMBOL (rte_eth_dev_count_aggr_ports) int rte_eth_dev_count_aggr_ports(uint16_t port_id) {struct rte_eth_dev *dev;
@@ -7447,7 +7447,7 @@ int rte_eth_dev_count_aggr_ports(uint16_t port_id)return ret; } -RTE_EXPORT_EXPERIMENTAL_SYMBOL(rte_eth_dev_map_aggr_tx_affinity, 23.03) +RTE_EXPORT_SYMBOL (rte_eth_dev_map_aggr_tx_affinity) int rte_eth_dev_map_aggr_tx_affinity(uint16_t port_id, uint16_t tx_queue_id,uint8_t affinity) {
lib/ethdev/rte_ethdev.h +0 -31
@@ -1913,9 +1913,6 @@ struct __rte_cache_min_aligned rte_eth_txq_info { };/** -* @warning -* @b EXPERIMENTAL: this structure may change without prior notice. -* * Ethernet device Rx queue information structure for recycling mbufs. * Used to retrieve Rx queue information when Tx queue reusing mbufs and moving * them into Rx mbuf ring.
@@ -2685,9 +2682,6 @@ int rte_eth_hairpin_bind(uint16_t tx_port, uint16_t rx_port);int rte_eth_hairpin_unbind (uint16_t tx_port,uint16_t rx_port);/** -* @warning -* @b EXPERIMENTAL: this API may change without prior notice. -* * Get the number of aggregated ports of the DPDK port (specified with port_id). * It is used when multiple ports are aggregated into a single one. *
@@ -2699,13 +2693,9 @@ int rte_eth_hairpin_unbind(uint16_t tx_port, uint16_t rx_port);* @return * - (>=0) the number of aggregated port if success. */ -__rte_experimental int rte_eth_dev_count_aggr_ports (uint16_t port_id);/** -* @warning -* @b EXPERIMENTAL: this API may change without prior notice. -* * Map a Tx queue with an aggregated port of the DPDK port (specified with port_id). * When multiple ports are aggregated into a single one, * it allows choosing which port to use for Tx via a queue.
@@ -2729,7 +2719,6 @@ int rte_eth_dev_count_aggr_ports(uint16_t port_id);* @return * Zero if successful. Non-zero otherwise. */ -__rte_experimental int rte_eth_dev_map_aggr_tx_affinity (uint16_t port_id,uint16_t tx_queue_id,uint8_t affinity);
@@ -2759,9 +2748,6 @@ int rte_eth_dev_socket_id(uint16_t port_id);int rte_eth_dev_is_valid_port (uint16_t port_id);/** -* @warning -* @b EXPERIMENTAL: this API may change, or be removed, without prior notice. -* * Check if Rx queue is valid. * If the queue has been setup, it is considered valid. *
@@ -2774,13 +2760,9 @@ int rte_eth_dev_is_valid_port(uint16_t port_id);* - -EINVAL: if queue_id is out of range or queue has not been setup. * - 0 if Rx queue is valid. */ -__rte_experimental int rte_eth_rx_queue_is_valid (uint16_t port_id,uint16_t queue_id);/** -* @warning -* @b EXPERIMENTAL: this API may change, or be removed, without prior notice. -* * Check if Tx queue is valid. * If the queue has been setup, it is considered valid. *
@@ -2793,7 +2775,6 @@ int rte_eth_rx_queue_is_valid(uint16_t port_id, uint16_t queue_id);* - -EINVAL: if queue_id is out of range or queue has not been setup. * - 0 if Tx queue is valid. */ -__rte_experimental int rte_eth_tx_queue_is_valid (uint16_t port_id,uint16_t queue_id);/**
@@ -3791,9 +3772,6 @@ int rte_eth_dev_get_vlan_offload(uint16_t port_id);int rte_eth_dev_set_vlan_pvid (uint16_t port_id,uint16_t pvid,int on);/** -* @warning -* @b EXPERIMENTAL: this API may change without prior notice. -* * Set Rx queue available descriptors threshold. * * @param port_id
@@ -3815,14 +3793,10 @@ int rte_eth_dev_set_vlan_pvid(uint16_t port_id, uint16_t pvid, int on);* - (-ENOTSUP) if available Rx descriptors threshold is not supported. * - (-EIO) if device is removed. */ -__rte_experimental int rte_eth_rx_avail_thresh_set (uint16_t port_id,uint16_t queue_id,uint8_t avail_thresh);/** -* @warning -* @b EXPERIMENTAL: this API may change without prior notice. -* * Find Rx queue with RTE_ETH_EVENT_RX_AVAIL_THRESH event pending. * * @param port_id
@@ -3845,7 +3819,6 @@ int rte_eth_rx_avail_thresh_set(uint16_t port_id, uint16_t queue_id,* - (-ENOTSUP) if operation is not supported. * - (-EIO) if device is removed. */ -__rte_experimental int rte_eth_rx_avail_thresh_query (uint16_t port_id,uint16_t *queue_id,uint8_t *avail_thresh);
@@ -5103,9 +5076,6 @@ int rte_eth_tx_queue_info_get(uint16_t port_id, uint16_t queue_id, struct rte_eth_txq_info *qinfo);/** -* @warning -* @b EXPERIMENTAL: this API may change, or be removed, without prior notice -* * Retrieve information about given ports's Rx queue for recycling mbufs. * * @param port_id
@@ -5122,7 +5092,6 @@ int rte_eth_tx_queue_info_get(uint16_t port_id, uint16_t queue_id,* - -ENOTSUP: routine is not supported by the device PMD. * - -EINVAL: The queue_id is out of range. */ -__rte_experimental int rte_eth_recycle_rx_queue_info_get (uint16_t port_id,uint16_t queue_id,struct rte_eth_recycle_rxq_info *recycle_rxq_info);
Signature · 1 line
2.53.0
PATCH 20/22 ethdev: promote remaining aged symbols to stable
In reply to Stephen HemmingerThe last ethdev symbols that are at least two years old:
21.02 rte_eth_get_monitor_addr 21.05 rte_eth_representor_info_get 22.11 rte_eth_buffer_split_get_supported_hdr_ptypes 24.11 rte_eth_timesync_adjust_freq 24.11 rte_tm_node_query
With this the only exported, non-inline experimental symbols left in ethdev are from 25.03 and later. The inline helpers rte_eth_recycle_mbufs() and rte_eth_tx_queue_count(), and the trace point symbols, keep the experimental tag and are left for later.
--- doc/guides/rel_notes/release_26_11.rst | 4 ++++ lib/ethdev/rte_ethdev.c | 8 ++++---- lib/ethdev/rte_ethdev.h | 16 ---------------- lib/ethdev/rte_tm.c | 2 +- lib/ethdev/rte_tm.h | 1 - 5 files changed, 9 insertions(+), 22 deletions(-)
doc/guides/rel_notes/release_26_11.rst +4 -0
@@ -151,6 +151,10 @@ API Changes ``rte_eth_recycle_rx_queue_info_get``, ``rte_eth_dev_count_aggr_ports`` and ``rte_eth_dev_map_aggr_tx_affinity`` + * utility funcs: + ``rte_eth_get_monitor_addr``, ``rte_eth_representor_info_get``, + ``rte_eth_buffer_split_get_supported_hdr_ptypes``, + ``rte_eth_timesync_adjust_freq`` and ``rte_tm_node_query`` ABI Changes
lib/ethdev/rte_ethdev.c +4 -4
@@ -6547,7 +6547,7 @@ rte_eth_tx_burst_mode_get(uint16_t port_id, uint16_t queue_id,return ret; } -RTE_EXPORT_EXPERIMENTAL_SYMBOL(rte_eth_get_monitor_addr, 21.02) +RTE_EXPORT_SYMBOL (rte_eth_get_monitor_addr) intrte_eth_get_monitor_addr (uint16_t port_id,uint16_t queue_id,struct rte_power_monitor_cond *pmc)
@@ -6718,7 +6718,7 @@ rte_eth_timesync_adjust_time(uint16_t port_id, int64_t delta)return ret; } -RTE_EXPORT_EXPERIMENTAL_SYMBOL(rte_eth_timesync_adjust_freq, 24.11) +RTE_EXPORT_SYMBOL (rte_eth_timesync_adjust_freq) intrte_eth_timesync_adjust_freq (uint16_t port_id,int64_t ppm) {
@@ -7149,7 +7149,7 @@ rte_eth_dev_pool_ops_supported(uint16_t port_id, const char *pool)return ret; } -RTE_EXPORT_EXPERIMENTAL_SYMBOL(rte_eth_representor_info_get, 21.05) +RTE_EXPORT_SYMBOL (rte_eth_representor_info_get) intrte_eth_representor_info_get (uint16_t port_id,struct rte_eth_representor_info *info)
@@ -7389,7 +7389,7 @@ rte_eth_tx_descriptor_dump(uint16_t port_id, uint16_t queue_id, dev->dev_ops->eth_tx_descriptor_dump(dev, queue_id, offset, num, file)); } -RTE_EXPORT_EXPERIMENTAL_SYMBOL(rte_eth_buffer_split_get_supported_hdr_ptypes, 22.11) +RTE_EXPORT_SYMBOL (rte_eth_buffer_split_get_supported_hdr_ptypes) intrte_eth_buffer_split_get_supported_hdr_ptypes (uint16_t port_id,uint32_t *ptypes,int num) {
lib/ethdev/rte_ethdev.h +0 -16
@@ -5139,9 +5139,6 @@ int rte_eth_tx_burst_mode_get(uint16_t port_id, uint16_t queue_id, struct rte_eth_burst_mode *mode);/** -* @warning -* @b EXPERIMENTAL: this API may change without prior notice. -* * Retrieve the monitor condition for a given receive queue. * * @param port_id
@@ -5158,7 +5155,6 @@ int rte_eth_tx_burst_mode_get(uint16_t port_id, uint16_t queue_id,* -EINVAL: Invalid parameters. * -ENODEV: Invalid port ID. */ -__rte_experimental int rte_eth_get_monitor_addr (uint16_t port_id,uint16_t queue_id,struct rte_power_monitor_cond *pmc);
@@ -5449,7 +5445,6 @@ int rte_eth_timesync_adjust_time(uint16_t port_id, int64_t delta);* - -EIO: if device is removed. * - -ENOTSUP: The function is not supported by the Ethernet driver. */ -__rte_experimental int rte_eth_timesync_adjust_freq (uint16_t port_id,int64_t ppm);/**
@@ -5636,9 +5631,6 @@ int rte_eth_dev_hairpin_capability_get(uint16_t port_id, struct rte_eth_hairpin_cap *cap);/** -* @warning -* @b EXPERIMENTAL: this structure may change without prior notice. -* * Ethernet device representor ID range entry */ struct rte_eth_representor_range {
@@ -5656,9 +5648,6 @@ struct rte_eth_representor_range { };/** -* @warning -* @b EXPERIMENTAL: this structure may change without prior notice. -* * Ethernet device representor information */ struct rte_eth_representor_info {
@@ -5692,7 +5681,6 @@ struct rte_eth_representor_info {* - (-EIO) if device is removed. * - (>=0) number of available representor range entries. */ -__rte_experimental int rte_eth_representor_info_get (uint16_t port_id,struct rte_eth_representor_info *info);
@@ -6921,9 +6909,6 @@ rte_eth_recycle_mbufs(uint16_t rx_port_id, uint16_t rx_queue_id, }/** -* @warning -* @b EXPERIMENTAL: this API may change without prior notice -* * Get supported header protocols to split on Rx. * * When a packet type is announced to be split,
@@ -6948,7 +6933,6 @@ rte_eth_recycle_mbufs(uint16_t rx_port_id, uint16_t rx_queue_id,* - (-ENODEV) if *port_id* invalid. * - (-EINVAL) if bad parameter. */ -__rte_experimental int rte_eth_buffer_split_get_supported_hdr_ptypes(uint16_t port_id, uint32_t *ptypes, int num) __rte_warn_unused_result;
lib/ethdev/rte_tm.c +1 -1
@@ -316,7 +316,7 @@ int rte_tm_node_add(uint16_t port_id,return ret; } -RTE_EXPORT_EXPERIMENTAL_SYMBOL(rte_tm_node_query, 24.11) +RTE_EXPORT_SYMBOL(rte_tm_node_query) int rte_tm_node_query(uint16_t port_id, uint32_t node_id, uint32_t *parent_node_id,
lib/ethdev/rte_tm.h +0 -1
@@ -1638,7 +1638,6 @@ rte_tm_node_add(uint16_t port_id,* -EINVAL - port or node id value is invalid * -ENOENT - no node exists with the provided id on the provided port */ -__rte_experimental int rte_tm_node_query(uint16_t port_id, uint32_t node_id,
Signature · 1 line
2.53.0
PATCH 21/22 ethdev: promote fast path inline helpers to stable
In reply to Stephen HemmingerThe two remaining experimental fast path inline helpers are both at least two years old:
23.11 rte_eth_recycle_mbufs
24.03 rte_eth_tx_queue_count
The trace point symbols these call are deliberately left experimental. Trace infrastructure is intended to stay unstable, and promoting it would add an ABI contract that is not wanted.
This does not affect users of the inline functions. RTE_EXPORT_EXPERIMENTAL_SYMBOL only places the symbol in the EXPERIMENTAL version node; it is not a __rte_experimental attribute on the declaration, so it does not warn in application code built without ALLOW_EXPERIMENTAL_API.
--- doc/guides/rel_notes/release_26_11.rst | 2 ++ lib/ethdev/rte_ethdev.h | 8 -------- 2 files changed, 2 insertions(+), 8 deletions(-)
doc/guides/rel_notes/release_26_11.rst +2 -0
@@ -155,6 +155,8 @@ API Changes ``rte_eth_get_monitor_addr``, ``rte_eth_representor_info_get``, ``rte_eth_buffer_split_get_supported_hdr_ptypes``, ``rte_eth_timesync_adjust_freq`` and ``rte_tm_node_query`` + * fast path inline funcs: + ``rte_eth_recycle_mbufs`` and ``rte_eth_tx_queue_count`` ABI Changes
lib/ethdev/rte_ethdev.h +0 -8
@@ -6782,9 +6782,6 @@ rte_eth_tx_buffer(uint16_t port_id, uint16_t queue_id, }/** -* @warning -* @b EXPERIMENTAL: this API may change, or be removed, without prior notice -* * Recycle used mbufs from a transmit queue of an Ethernet device, and move * these mbufs into a mbuf ring for a receive queue of an Ethernet device. * This can bypass mempool path to save CPU cycles.
@@ -6834,7 +6831,6 @@ rte_eth_tx_buffer(uint16_t port_id, uint16_t queue_id,* @return * The number of recycling mbufs. */ -__rte_experimental static inline uint16_t rte_eth_recycle_mbufs(uint16_t rx_port_id, uint16_t rx_queue_id, uint16_t tx_port_id, uint16_t tx_queue_id,
@@ -6937,9 +6933,6 @@ int rte_eth_buffer_split_get_supported_hdr_ptypes(uint16_t port_id, uint32_t *pt __rte_warn_unused_result;/** -* @warning -* @b EXPERIMENTAL: this API may change, or be removed, without prior notice. -* * Get the number of used descriptors of a Tx queue. * * This function retrieves the number of used descriptors of a transmit queue.
@@ -6970,7 +6963,6 @@ int rte_eth_buffer_split_get_supported_hdr_ptypes(uint16_t port_id, uint32_t *pt* If the use case only involves checking the status of a specific descriptor slot, * opt for rte_eth_tx_descriptor_status() instead. */ -__rte_experimental static inline int rte_eth_tx_queue_count (uint16_t port_id,uint16_t queue_id) {
Signature · 1 line
2.53.0
PATCH 22/22 ethdev: promote experimental structures to stable
In reply to Stephen HemmingerThe doxygen EXPERIMENTAL warnings on structures and enumerations were never cleaned up along with the functions that use them. All of the remaining ones in ethdev are at least two years old:
21.05 rte_eth_rxseg_split, rte_eth_rxseg, rte_eth_rxseg_capa 22.11 rte_eth_err_handle_mode
and in rte_flow every remaining item, action, template and async operation structure, the oldest from 21.05 and the newest rte_flow_action_jump_to_table_index from 24.11.
These are only documentation comments; the structures themselves are already part of the ABI because they are embedded in stable API signatures.
Two flex item structures had no description other than the warning itself, so give them one instead of leaving an empty comment block.
--- doc/guides/rel_notes/release_26_11.rst | 4 + lib/ethdev/rte_ethdev.h | 12 -- lib/ethdev/rte_flow.h | 169 +------------------------ 3 files changed, 9 insertions(+), 176 deletions(-)
doc/guides/rel_notes/release_26_11.rst +4 -0
@@ -157,6 +157,10 @@ API Changes ``rte_eth_timesync_adjust_freq`` and ``rte_tm_node_query`` * fast path inline funcs: ``rte_eth_recycle_mbufs`` and ``rte_eth_tx_queue_count`` + * buffer split and error handling types: + ``rte_eth_rxseg_split``, ``rte_eth_rxseg``, ``rte_eth_rxseg_capa`` + and ``rte_eth_err_handle_mode`` + * all remaining ``rte_flow`` item, action and async operation structures ABI Changes
lib/ethdev/rte_ethdev.h +0 -12
@@ -1061,9 +1061,6 @@ struct rte_eth_txmode { };/** -* @warning -* @b EXPERIMENTAL: this structure may change without prior notice. -* * A structure used to configure an Rx packet segment to split. * * If RTE_ETH_RX_OFFLOAD_BUFFER_SPLIT flag is set in offloads field,
@@ -1149,9 +1146,6 @@ struct rte_eth_rxseg_split { };/** -* @warning -* @b EXPERIMENTAL: this structure may change without prior notice. -* * A common structure used to describe Rx packet segment properties. */ union rte_eth_rxseg {
@@ -1740,9 +1734,6 @@ struct rte_eth_switch_info { };/** -* @warning -* @b EXPERIMENTAL: this structure may change without prior notice. -* * Ethernet device Rx buffer segmentation capabilities. * * @see rte_eth_rxseg_split
@@ -1772,9 +1763,6 @@ enum rte_eth_representor_type { };/** -* @warning -* @b EXPERIMENTAL: this enumeration may change without prior notice. -* * Ethernet device error handling mode. */ enum rte_eth_err_handle_mode {
lib/ethdev/rte_flow.h +5 -164
505 lines not on this page · raw message
Signature · 1 line
2.53.0
Quoted 25 lines · Stephen Hemminger
The DPDK policy is that experimental status should be short term
with the expectation that it will be removed after one or two releases. A large part of the ethdev API has been left marked experimental long past that point. Several API's have stayed experimental as far back as 17.11.
This series promotes 119 ethdev symbols introduced in 24.11 or earlier. It also cleans up comments warnings on structures and inline functions.The trace point symbols are left experimental on purpose; trace infrastructure is intended to stay unstable.
Stephen Hemminger (22):
ethdev: promote meter API to stable
ethdev: promote module EEPROM API to stable
ethdev: promoterte_flow_convto stable
ethdev: promote hairpin API to stable
ethdev: promote read clock and flow dump to stable
ethdev: promote FEC API to stable
ethdev: promote link speed helpers to stable
ethdev: promote flow tunnel offload API to stable
ethdev: promote aged flow query to stable
ethdev: promote indirect action API to stable
ethdev: promote asynchronous flow API to stable
ethdev: promote flex item API to stable
ethdev: promote remaining aged flow helpers to stable
ethdev: promote congestion management API to stable
Quoted 9 lines
ethdev: promote IP reassembly offload API to stable
ethdev: promote per-queue priority flow control to stable
ethdev: promote device info and dump helpers to stable
ethdev: promote speed lanes API to stable
ethdev: promote queue helpers and aggregated ports to stable
ethdev: promote remaining aged symbols to stable
ethdev: promote fast path inline helpers to stable
ethdev: promote experimental structures to stable
These can all be merged into a single commit, I think, but agree it's good to stabilize all these APIs since they've been around a while.
Once this set is applied (and hopefully pulled to main), that unblocks merge of [1] which otherwise gives chkincs errors after patch 1.
/Bruce
[1] https://patches.dpdk.org/project/dpdk/list/?series=39206
Stephen Hemminger
AppliedQuoted 9 lines · On Tue, 1 Sep 2026 13:22:59 -0700 Stephen Hemminger…
The DPDK policy is that experimental status should be short term
with the expectation that it will be removed after one or two releases. A large part of the ethdev API has been left marked experimental long past that point. Several API's have stayed experimental as far back as 17.11.
This series promotes 119 ethdev symbols introduced in 24.11 or earlier. It also cleans up comments warnings on structures and inline functions.The trace point symbols are left experimental on purpose; trace infrastructure is intended to stay unstable.
Applied to next-net