public inbox for io-uring@vger.kernel.org
 help / color / mirror / Atom feed
* [PATCH net-next v8 1/9] netmem: add niov->type attribute to distinguish different net_iov types
@ 2025-04-15 22:47 Mina Almasry
  2025-04-15 22:47 ` [PATCH net-next v8 2/9] net: add get_netmem/put_netmem support Mina Almasry
                   ` (7 more replies)
  0 siblings, 8 replies; 10+ messages in thread
From: Mina Almasry @ 2025-04-15 22:47 UTC (permalink / raw)
  To: netdev, linux-kernel, linux-doc, io-uring, kvm, virtualization,
	linux-kselftest
  Cc: Mina Almasry, David S. Miller, Eric Dumazet, Jakub Kicinski,
	Paolo Abeni, Simon Horman, Donald Hunter, Jonathan Corbet,
	Andrew Lunn, Jeroen de Borst, Harshitha Ramamurthy,
	Kuniyuki Iwashima, Willem de Bruijn, Jens Axboe, Pavel Begunkov,
	David Ahern, Neal Cardwell, Stefan Hajnoczi, Stefano Garzarella,
	Michael S. Tsirkin, Jason Wang, Xuan Zhuo, Eugenio Pérez,
	Shuah Khan

Later patches in the series adds TX net_iovs where there is no pp
associated, so we can't rely on niov->pp->mp_ops to tell what is the
type of the net_iov.

Add a type enum to the net_iov which tells us the net_iov type.

Signed-off-by: Mina Almasry <almasrymina@google.com>

---

v8:
- Since io_uring zcrx is now in net-next, update io_uring net_iov type
  setting and remove the NET_IOV_UNSPECIFIED type

v7:
- New patch


fix iouring

---
 include/net/netmem.h | 11 ++++++++++-
 io_uring/zcrx.c      |  1 +
 net/core/devmem.c    |  3 ++-
 3 files changed, 13 insertions(+), 2 deletions(-)

diff --git a/include/net/netmem.h b/include/net/netmem.h
index c61d5b21e7b4..64af9a288c80 100644
--- a/include/net/netmem.h
+++ b/include/net/netmem.h
@@ -20,8 +20,17 @@ DECLARE_STATIC_KEY_FALSE(page_pool_mem_providers);
  */
 #define NET_IOV 0x01UL
 
+enum net_iov_type {
+	NET_IOV_DMABUF,
+	NET_IOV_IOURING,
+
+	/* Force size to unsigned long to make the NET_IOV_ASSERTS below pass.
+	 */
+	NET_IOV_MAX = ULONG_MAX,
+};
+
 struct net_iov {
-	unsigned long __unused_padding;
+	enum net_iov_type type;
 	unsigned long pp_magic;
 	struct page_pool *pp;
 	struct net_iov_area *owner;
diff --git a/io_uring/zcrx.c b/io_uring/zcrx.c
index 0f46e0404c04..17a54e74ed5d 100644
--- a/io_uring/zcrx.c
+++ b/io_uring/zcrx.c
@@ -247,6 +247,7 @@ static int io_zcrx_create_area(struct io_zcrx_ifq *ifq,
 		niov->owner = &area->nia;
 		area->freelist[i] = i;
 		atomic_set(&area->user_refs[i], 0);
+		niov->type = NET_IOV_IOURING;
 	}
 
 	area->free_count = nr_iovs;
diff --git a/net/core/devmem.c b/net/core/devmem.c
index 6e27a47d0493..f5c3a7e6dbb7 100644
--- a/net/core/devmem.c
+++ b/net/core/devmem.c
@@ -30,7 +30,7 @@ static const struct memory_provider_ops dmabuf_devmem_ops;
 
 bool net_is_devmem_iov(struct net_iov *niov)
 {
-	return niov->pp->mp_ops == &dmabuf_devmem_ops;
+	return niov->type == NET_IOV_DMABUF;
 }
 
 static void net_devmem_dmabuf_free_chunk_owner(struct gen_pool *genpool,
@@ -266,6 +266,7 @@ net_devmem_bind_dmabuf(struct net_device *dev, unsigned int dmabuf_fd,
 
 		for (i = 0; i < owner->area.num_niovs; i++) {
 			niov = &owner->area.niovs[i];
+			niov->type = NET_IOV_DMABUF;
 			niov->owner = &owner->area;
 			page_pool_set_dma_addr_netmem(net_iov_to_netmem(niov),
 						      net_devmem_get_dma_addr(niov));

base-commit: bbfc077d457272bcea4f14b3a28247ade99b196d
-- 
2.49.0.777.g153de2bbd5-goog


^ permalink raw reply related	[flat|nested] 10+ messages in thread

end of thread, other threads:[~2025-04-16 17:26 UTC | newest]

Thread overview: 10+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2025-04-15 22:47 [PATCH net-next v8 1/9] netmem: add niov->type attribute to distinguish different net_iov types Mina Almasry
2025-04-15 22:47 ` [PATCH net-next v8 2/9] net: add get_netmem/put_netmem support Mina Almasry
2025-04-15 22:47 ` [PATCH net-next v8 3/9] net: devmem: TCP tx netlink api Mina Almasry
2025-04-15 22:47 ` [PATCH net-next v8 4/9] net: devmem: Implement TX path Mina Almasry
2025-04-16 17:26   ` Stanislav Fomichev
2025-04-15 22:47 ` [PATCH net-next v8 5/9] net: add devmem TCP TX documentation Mina Almasry
2025-04-15 22:47 ` [PATCH net-next v8 6/9] net: enable driver support for netmem TX Mina Almasry
2025-04-15 22:47 ` [PATCH net-next v8 7/9] gve: add netmem TX support to GVE DQO-RDA mode Mina Almasry
2025-04-15 22:47 ` [PATCH net-next v8 8/9] net: check for driver support in netmem TX Mina Almasry
2025-04-15 22:47 ` [PATCH net-next v8 9/9] selftests: ncdevmem: Implement devmem TCP TX Mina Almasry

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox