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

Reply via email to