[PATCH 26.07 0/5] net/mlx5: legacy vport match support with HWS

Raslan Darawsheh rasland at nvidia.com
Sun Apr 19 13:14:24 CEST 2026


Hi,

On 25/03/2026 11:07 AM, Dariusz Sosnowski wrote:
> NVIDIA NICs and DPUs have an embedded switch (E-Switch)
> to which all associated functions (PFs, VFs, SFs) and physical ports
> are connected through virtual ports (vports).
> mlx5 PMD supports devices with E-Switch enabled and
> also exposes flow rule offloading to the E-Switch
> through transfer flow rules.
> 
> Flow rules matching on vports (with flow item REPRESENTED_PORT)
> can match on specific vport using one of the two internal mechanisms:
> 
> - vport metadata - E-Switch internally tags all packets with a metadata value
>    associated with originating vport.
>    mlx5 PMD can match on that metadata through a specialized HW register in each flow rule.
>    vport metadata enables features such as VF-LAG, Multiport E-Switch and
>    others mentioned in [1].
> - legacy match - A static value known as "source vport" is assigned to each vport.
>    These values are not globally unique, because they are statically assigned per E-Switch
>    (e.g., VF0 on each of the PFs will have the same source_vport number).
> 
> Users can select the vport matching mode through devlink [1].
> vport metadata matching mode is the default and is enough for most of the use cases.
> However, internally tagging all the packets with metadata values,
> increases the packet latency in the E-Switch. As described in the linked kernel docs,
> disabling vport metadata matching can increase packet rate up to 20%.
> If features provided by vport metadata matching are not required,
> it can be disabled to increase E-Switch's throughput.
> 
> mlx5 PMD with HW Steering flow engine enabled, only supported
> vport metadata mode when running on a device with enabled E-Switch.
> Goal of this patchset is to enable support of devices with
> disabled vport metadata matching. This is purely an internal change in mlx5 PMD.
> No changes in DPDK applications should be required.
> 
> - Patches 1-2 - Extend information queried from the device by mlx5 PMD
>    to include information necessary to implement legacy vport match.
>    This data is always available, regardless of selected E-Switch matching mode.
> - Patch 3 - Adjusts internal translation of DPDK port ID to flow rule matching data,
>    so that returned data is always valid even if vport metadata matching is disabled.
>    Also adds detection of vport matching mode to HWS layer.
> - Patch 4 - Adds support for REPRESENTED_PORT item in HWS layer
>    whenever vport metadata matching mode is disabled.
>    This involves correctly translating DPDK port index to "source vport".
> - Patch 5 - Removes all validation checks from mlx5 PMD which prevented probing
>    on devices with disabled vport metadata matching mode.
>    Adjusts internal PMD logic to work with "source vport" whenever needed.
> 
> [1]: https://docs.kernel.org/networking/devlink/mlx5.html
> 
> Dariusz Sosnowski (5):
>    common/mlx5: query vport VHCA ID
>    net/mlx5: store port VHCA ID
>    net/mlx5: return port info regardless of register mask
>    net/mlx5/hws: add source vport match in HWS
>    net/mlx5: allow legacy source vport match
> 
>   drivers/common/mlx5/linux/mlx5_glue.c |  4 ++
>   drivers/common/mlx5/linux/mlx5_glue.h |  2 +
>   drivers/net/mlx5/hws/mlx5dr_cmd.c     | 13 +++-
>   drivers/net/mlx5/hws/mlx5dr_cmd.h     |  1 +
>   drivers/net/mlx5/hws/mlx5dr_definer.c | 99 ++++++++++++++++++++++-----
>   drivers/net/mlx5/hws/mlx5dr_definer.h |  2 +
>   drivers/net/mlx5/hws/mlx5dr_table.c   |  6 ++
>   drivers/net/mlx5/linux/mlx5_os.c      | 38 +++-------
>   drivers/net/mlx5/mlx5.h               |  4 ++
>   drivers/net/mlx5/mlx5_flow.h          |  3 +-
>   drivers/net/mlx5/mlx5_flow_dv.c       |  3 +
>   drivers/net/mlx5/mlx5_flow_hw.c       | 34 ++++-----
>   12 files changed, 140 insertions(+), 69 deletions(-)
> 
> --
> 2.47.3
> 

Series applied to next-net-mlx,

Kindest regards
Raslan Darawsheh



More information about the dev mailing list