[PATCH net-next 00/10] net/mlx5e: Add netdev support for data direct
From: Tariq Toukan
Date: Thu Oct 08 2026 - 09:33:08 EST
Hi,
This patch series by Dragos adds data direct support for netdev devices,
allowing a mlx5 netdev to issue DMA commands through multiple paths.
This feature is critical for improving performance and reaching line
rate in certain environments where issuing PCI transactions over one
path may be significantly faster than over another. These differences
can arise from various PCI generations in the system or the specific
system topology.
Data direct for netdev will work with devmem by returning the data
direct DMA device instead of the DMA device of the NIC. Each PF netdev
registers its own data direct device and support for RX and TX datapath
is added. The feature is selected through a new data direct priv flag.
The feature is enabled though a ethtool private flag. When this flag
is enabled, the driver will return the data direct device in the
ndo_queue_get_dma_dev op.
During data_direct device unbind, a re-creation of the channels is
triggered.
A note about the unbind: it does not does not tear down dmabuf bindings
attached to the data direct device; the recreated channels will still
pick up the binding via rxq->mp_params and post DMA addresses from the
data direct IOMMU domain to the PF, causing IOMMU faults. A devmem
revoke hook is needed to close those bindings before the switch. This is
out of scope for this series.
A note about io_uring support: currently io_uring rejects the
configuration where the dmabuf dev != page_pool dev.
Regards,
Tariq
[1] https://lore.kernel.org/all/cover.1722512548.git.leon@xxxxxxxxxx/
Dragos Tatulea (10):
net/mlx5: Log the data direct to PF device mapping
net/mlx5e: Register supported netdevs as data direct users
net/mlx5e: Pre-calculate UMR padding and entry size
net/mlx5e: Add data direct ethtool private flag
net/mlx5e: Add data direct RX infrastructure
net/mlx5e: Add data direct TX infrastructure
net/mlx5e: Use the correct DMA dev when data_direct pdev enabled
net/mlx5e: Recreate netdev channels on data direct device unbind
net: devmem: add netdev_has_dmabuf_binding() helper
net/mlx5e: Enable the data direct netdev feature
.../ethernet/mellanox/mlx5/core/data_direct.c | 5 +
drivers/net/ethernet/mellanox/mlx5/core/en.h | 13 ++
.../ethernet/mellanox/mlx5/core/en/params.c | 5 +
.../ethernet/mellanox/mlx5/core/en/params.h | 2 +
.../mellanox/mlx5/core/en/reporter_rx.c | 1 +
.../mellanox/mlx5/core/en/reporter_tx.c | 1 +
.../ethernet/mellanox/mlx5/core/en_common.c | 38 +++-
.../ethernet/mellanox/mlx5/core/en_ethtool.c | 40 ++++
.../net/ethernet/mellanox/mlx5/core/en_main.c | 173 +++++++++++++++++-
.../net/ethernet/mellanox/mlx5/core/en_rx.c | 28 +--
.../net/ethernet/mellanox/mlx5/core/en_tx.c | 4 +-
include/linux/mlx5/driver.h | 1 +
include/net/netmem.h | 23 +++
net/core/devmem.c | 30 +++
net/core/devmem.h | 2 +
15 files changed, 342 insertions(+), 24 deletions(-)
base-commit: 8df0638138d3e0344fd1fb36cf2d1ca1cf5028f0
--
2.44.0