[PATCH 0/4] [25.11] net/mlx5: add driver event and steering toggle APIs

Raslan Darawsheh rasland at nvidia.com
Thu Oct 16 14:10:43 CEST 2025


Hi,


On 27/08/2025 9:28 AM, Maayan Kashani wrote:
> mlx5 PMD is a bifurcated driver, which means that instead of communicating with HW directly
> using UIO or VFIO, the driver uses existing kernel and userspace APIs for that purpose.
> mlx5 PMD requires that `mlx5_core`, `mlx5_ib` and `ib_uverbs` kernel modules are loaded,
> and that NIC is bound to `mlx5_core` driver.
> 
> Kernel bypass is achieved through rdma-core library
> which exposes required functionalities e.g.,
> mapping memory to the device, FW access for setting up Rx and Tx queues
> (through mlx5dv_devx_* interfaces) and flow rule offloading.
> 
> One benefit of such architecture is that it allows libraries and applications
> to build additional features on top of DPDK, utilizing rdma-core directly.
> For example it is possible to implement additional flow rule offloads.
> This can be achieved by creating an IBV (IB Verbs) context and PD (protection domain)
> through rdma-core and sharing it with mlx5 PMD through `cmd_fd` and `pd_handle` device arguments
> provided during probing [1].
> mlx5 PMD will then create all necessary resources for DPDK using imported context and PD.
> 
> What is missing for that approach to work, is that
> external libraries and applications are not aware of HW identifiers of Rx and Tx queues
> (returned from mlx5dv_devx_* APIs) created by DPDK through imported context and PD.
> Knowledge of these identifiers is crucial for correct flow rule offload.
> 
> This patchset proposes the introduction of the following private PMD APIs
> to address the above use case:
> 
> 1. mlx5 PMD driver events
> 2. mlx5 PMD steering toggle
> 
> mlx5 PMD driver events, exposed through `rte_pmd_mlx5_driver_event_cb_register/unregister()` functions,
> allow libraries and applications to register a custom callback.
> This callback will be called whenever mlx5 PMD creates or destroys an Rx/Tx queue.
> All necessary HW identifiers along with corresponding DPDK port and queue
> indexes will be passed as parameters.
> 
> mlx5 PMD steering toggle, exposed through `rte_pmd_mlx5_driver_disable/enable_steering()` functions,
> allow libraries and applications to disable/enable flow rule offloading provided by mlx5 PMD.
> This is added to support use cases where library/application needs full control of flow rule offloading.
> Library/application will use data provided through driver events API to configure flow rules by itself.
> When flow rule offloading is disabled, DPDK flow API will return ENOSYS for mlx5 PMD.
> 
> Patches:
> 
> - Patch 1 - Add mlx5 PMD driver events private API
> - Patches 2-3 - Minor clean ups in mlx5 PMD which make introduction of
>    steering toggle private API easier.
> - Patch 4 - Add mlx5 PMD steering toggle private API
> 
> [1]: https://doc.dpdk.org/guides/platform/mlx5.html#device-arguments
> 
> Dariusz Sosnowski (4):
>    net/mlx5: add driver event callbacks
>    net/mlx5: move eCPRI release function to flex
>    net/mlx5: rework Rx queue mark flag functions
>    net/mlx5: add steering toggle API
> 
>   drivers/net/mlx5/meson.build         |   1 +
>   drivers/net/mlx5/mlx5.c              |  18 --
>   drivers/net/mlx5/mlx5.h              |   1 +
>   drivers/net/mlx5/mlx5_devx.c         |  17 ++
>   drivers/net/mlx5/mlx5_driver_event.c | 300 +++++++++++++++++++++++++++
>   drivers/net/mlx5/mlx5_driver_event.h |  18 ++
>   drivers/net/mlx5/mlx5_flow.c         | 199 +++++++++++++++++-
>   drivers/net/mlx5/mlx5_flow.h         |   7 +-
>   drivers/net/mlx5/mlx5_flow_flex.c    |  18 ++
>   drivers/net/mlx5/mlx5_trigger.c      |  30 +++
>   drivers/net/mlx5/rte_pmd_mlx5.h      | 192 +++++++++++++++++
>   11 files changed, 772 insertions(+), 29 deletions(-)
>   create mode 100644 drivers/net/mlx5/mlx5_driver_event.c
>   create mode 100644 drivers/net/mlx5/mlx5_driver_event.h
> 
Series applied to next-net-mlx,

Kindest regards
Raslan Darawsheh



More information about the dev mailing list