]> git.ipfire.org Git - thirdparty/kernel/stable.git/commitdiff
io_uring/zcrx: add support for custom DMA devices
authorDragos Tatulea <dtatulea@nvidia.com>
Wed, 27 Aug 2025 14:39:56 +0000 (17:39 +0300)
committerJakub Kicinski <kuba@kernel.org>
Thu, 28 Aug 2025 23:05:31 +0000 (16:05 -0700)
Use the new API for getting a DMA device for a specific netdev queue.

This patch will allow io_uring zero-copy rx to work with devices
where the DMA device is not stored in the parent device. mlx5 SFs
are an example of such a device.

Signed-off-by: Dragos Tatulea <dtatulea@nvidia.com>
Reviewed-by: Mina Almasry <almasrymina@google.com>
Reviewed-by: Pavel Begunkov <asml.silence@gmail.com>
Link: https://patch.msgid.link/20250827144017.1529208-4-dtatulea@nvidia.com
Signed-off-by: Jakub Kicinski <kuba@kernel.org>
io_uring/zcrx.c

index e5ff49f3425e0752909deec2e87992b575848416..319eddfd30e090f6e9a3f97aa58f2a1435d3a181 100644 (file)
@@ -12,6 +12,7 @@
 #include <net/page_pool/helpers.h>
 #include <net/page_pool/memory_provider.h>
 #include <net/netlink.h>
+#include <net/netdev_queues.h>
 #include <net/netdev_rx_queue.h>
 #include <net/tcp.h>
 #include <net/rps.h>
@@ -599,7 +600,7 @@ int io_register_zcrx_ifq(struct io_ring_ctx *ctx,
                goto err;
        }
 
-       ifq->dev = ifq->netdev->dev.parent;
+       ifq->dev = netdev_queue_get_dma_dev(ifq->netdev, ifq->if_rxq);
        if (!ifq->dev) {
                ret = -EOPNOTSUPP;
                goto err;