Following experimental functions are exposed by mlx5 PMD since 25.11 release:
- rte_pmd_mlx5_driver_event_cb_register - rte_pmd_mlx5_driver_event_cb_unregister - rte_pmd_mlx5_enable_steering - rte_pmd_mlx5_disable_steering First two are used to register callbacks for driver events (when Rx/Tx queues are created or destroyed). Other two are used to enable/disable flow steering in mlx5 PMD. No changes were made and no changes are planned to these symbols. These are currently used by NVIDIA DOCA SDK since version 3.3, which started depending on upstream DPDK releases [1]. Purpose of their use is to: - expose HW identifiers of Rx/Tx mlx5 queues managed by DPDK and - allow flow steering to happen outside of DPDK. Also, some of these symbols will be used by netdev-doca backend in Open vSwitch [2]. Whenever a DOCA netdev would be added/removed in Open vSwitch, it will have to disable/enable steering for mlx5 driver. Stabilizing these symbols is required by current OVS policy to remove the need for ALLOW_EXPERIMENTAL_API [3]. This patch promotes aforementioned symbols to stable. [1]: https://docs.nvidia.com/doca/sdk/customer-affecting-changes/index.html [2]: https://patchwork.ozlabs.org/project/openvswitch/list/?series=504726&state=%2A&archive=both [3]: https://mail.openvswitch.org/pipermail/ovs-dev/2026-May/432066.html Signed-off-by: Dariusz Sosnowski <[email protected]> --- v2: - Updated 26.07 release notes. doc/guides/rel_notes/release_26_07.rst | 9 +++++++++ drivers/net/mlx5/mlx5_driver_event.c | 4 ++-- drivers/net/mlx5/mlx5_flow.c | 4 ++-- drivers/net/mlx5/rte_pmd_mlx5.h | 4 ---- 4 files changed, 13 insertions(+), 8 deletions(-) diff --git a/doc/guides/rel_notes/release_26_07.rst b/doc/guides/rel_notes/release_26_07.rst index 6eba91a5e9..2af24d40a0 100644 --- a/doc/guides/rel_notes/release_26_07.rst +++ b/doc/guides/rel_notes/release_26_07.rst @@ -127,6 +127,15 @@ API Changes - ``rte_flow_dynf_metadata_get`` - ``rte_flow_dynf_metadata_set`` +* **mlx5: promoted driver event and steering management APIs from experimental to stable.** + + The following mlx5 APIs are no longer marked experimental: + + - ``rte_pmd_mlx5_driver_event_cb_register`` + - ``rte_pmd_mlx5_driver_event_cb_unregister`` + - ``rte_pmd_mlx5_enable_steering`` + - ``rte_pmd_mlx5_disable_steering`` + ABI Changes ----------- diff --git a/drivers/net/mlx5/mlx5_driver_event.c b/drivers/net/mlx5/mlx5_driver_event.c index 1dc8029ee5..89e49331c8 100644 --- a/drivers/net/mlx5/mlx5_driver_event.c +++ b/drivers/net/mlx5/mlx5_driver_event.c @@ -236,7 +236,7 @@ notify_existing_devices(rte_pmd_mlx5_driver_event_callback_t cb, void *opaque) notify_existing_queues(port_id, cb, opaque); } -RTE_EXPORT_EXPERIMENTAL_SYMBOL(rte_pmd_mlx5_driver_event_cb_register, 25.11) +RTE_EXPORT_SYMBOL(rte_pmd_mlx5_driver_event_cb_register) int rte_pmd_mlx5_driver_event_cb_register(rte_pmd_mlx5_driver_event_callback_t cb, void *opaque) { @@ -264,7 +264,7 @@ rte_pmd_mlx5_driver_event_cb_register(rte_pmd_mlx5_driver_event_callback_t cb, v return 0; } -RTE_EXPORT_EXPERIMENTAL_SYMBOL(rte_pmd_mlx5_driver_event_cb_unregister, 25.11) +RTE_EXPORT_SYMBOL(rte_pmd_mlx5_driver_event_cb_unregister) int rte_pmd_mlx5_driver_event_cb_unregister(rte_pmd_mlx5_driver_event_callback_t cb) { diff --git a/drivers/net/mlx5/mlx5_flow.c b/drivers/net/mlx5/mlx5_flow.c index 915ea29a5a..a95dd9dc94 100644 --- a/drivers/net/mlx5/mlx5_flow.c +++ b/drivers/net/mlx5/mlx5_flow.c @@ -12506,7 +12506,7 @@ flow_disable_steering_run_on_related(struct rte_eth_dev *dev, } } -RTE_EXPORT_EXPERIMENTAL_SYMBOL(rte_pmd_mlx5_disable_steering, 25.11) +RTE_EXPORT_SYMBOL(rte_pmd_mlx5_disable_steering) void rte_pmd_mlx5_disable_steering(void) { @@ -12532,7 +12532,7 @@ rte_pmd_mlx5_disable_steering(void) mlx5_steering_disabled = true; } -RTE_EXPORT_EXPERIMENTAL_SYMBOL(rte_pmd_mlx5_enable_steering, 25.11) +RTE_EXPORT_SYMBOL(rte_pmd_mlx5_enable_steering) int rte_pmd_mlx5_enable_steering(void) { diff --git a/drivers/net/mlx5/rte_pmd_mlx5.h b/drivers/net/mlx5/rte_pmd_mlx5.h index 55a26cb067..f482875434 100644 --- a/drivers/net/mlx5/rte_pmd_mlx5.h +++ b/drivers/net/mlx5/rte_pmd_mlx5.h @@ -620,7 +620,6 @@ int rte_pmd_mlx5_external_sq_disable(uint16_t port_id, uint32_t sq_num); * - (-EEXIST) if @p cb was already registered. * - (-ENOMEM) if failed to allocate memory for callback entry. */ -__rte_experimental int rte_pmd_mlx5_driver_event_cb_register(rte_pmd_mlx5_driver_event_callback_t cb, void *opaque); @@ -641,7 +640,6 @@ rte_pmd_mlx5_driver_event_cb_register(rte_pmd_mlx5_driver_event_callback_t cb, v * - 0 if callback was successfully unregistered or if no such callback was registered. * - (-EINVAL) if @p cb is NULL. */ -__rte_experimental int rte_pmd_mlx5_driver_event_cb_unregister(rte_pmd_mlx5_driver_event_callback_t cb); @@ -679,7 +677,6 @@ rte_pmd_mlx5_driver_event_cb_unregister(rte_pmd_mlx5_driver_event_callback_t cb) * with other functions from ethdev API used to configure any of the mlx5 ports. * It is the responsibility of the application to enforce this. */ -__rte_experimental void rte_pmd_mlx5_disable_steering(void); @@ -697,7 +694,6 @@ rte_pmd_mlx5_disable_steering(void); * - 0 - Flow steering was successfully enabled or it flow steering was never disabled. * - (-EBUSY) - There are mlx5 ports probed and re-enabling steering cannot be done safely. */ -__rte_experimental int rte_pmd_mlx5_enable_steering(void); -- 2.47.3

