Thread (16 messages) flat view 16 messages, 2 authors, 2025-08-14

Re: [RFC net-next v1 4/6] net: convert page pool dma helpers to netmem_desc

From: Mina Almasry <hidden>
Date: 2025-08-13 00:05:17

On Mon, Aug 11, 2025 at 9:28 AM Pavel Begunkov [off-list ref] wrote:
quoted hunk ↗ jump to hunk
struct netmem_desc has a clearly defined field that keeps dma_addr. Use
the new type in netmem and page_pool functions and get rid of a bunch of
now unnecessary accessor helpers.

While doing so, extract a helper for getting a dma address out of a
netmem desc, which can be used to optimise paths that already know the
underlying netmem type like memory providers.

Signed-off-by: Pavel Begunkov <asml.silence@gmail.com>
---
 include/net/netmem.h            |  5 -----
 include/net/page_pool/helpers.h | 12 ++++++++++--
 net/core/netmem_priv.h          |  6 ------
 net/core/page_pool_priv.h       |  9 +++++----
 4 files changed, 15 insertions(+), 17 deletions(-)
diff --git a/include/net/netmem.h b/include/net/netmem.h
index d08797e40a7c..ca6d5d151acc 100644
--- a/include/net/netmem.h
+++ b/include/net/netmem.h
@@ -389,11 +389,6 @@ static inline bool netmem_is_pfmemalloc(netmem_ref netmem)
        return page_is_pfmemalloc(netmem_to_page(netmem));
 }

-static inline unsigned long netmem_get_dma_addr(netmem_ref netmem)
-{
-       return netmem_to_nmdesc(netmem)->dma_addr;
-}
-
 void get_netmem(netmem_ref netmem);
 void put_netmem(netmem_ref netmem);
diff --git a/include/net/page_pool/helpers.h b/include/net/page_pool/helpers.h
index db180626be06..a9774d582933 100644
--- a/include/net/page_pool/helpers.h
+++ b/include/net/page_pool/helpers.h
@@ -425,9 +425,10 @@ static inline void page_pool_free_va(struct page_pool *pool, void *va,
        page_pool_put_page(pool, virt_to_head_page(va), -1, allow_direct);
 }

-static inline dma_addr_t page_pool_get_dma_addr_netmem(netmem_ref netmem)
+static inline dma_addr_t
+page_pool_get_dma_addr_nmdesc(const struct netmem_desc *nmdesc)
 {
-       dma_addr_t ret = netmem_get_dma_addr(netmem);
+       dma_addr_t ret = nmdesc->dma_addr;

        if (PAGE_POOL_32BIT_ARCH_WITH_64BIT_DMA)
                ret <<= PAGE_SHIFT;
@@ -435,6 +436,13 @@ static inline dma_addr_t page_pool_get_dma_addr_netmem(netmem_ref netmem)
        return ret;
 }

+static inline dma_addr_t page_pool_get_dma_addr_netmem(netmem_ref netmem)
+{
+       const struct netmem_desc *desc = netmem_to_nmdesc(netmem);
+
+       return page_pool_get_dma_addr_nmdesc(desc);
+}
+
nit: this wrapper feels very unnecessary. The _nmdesc variant has only
one call site from page_pool_get_dma_addr_netmem. I'd really prefer we
don't have the _nmdesc variant.

But, minor issue, so reviewed-by anyway.

Reviewed-by: Mina Almasry <redacted>
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help