[RFC 02/19] netmem: introduce netmem alloc/put API to wrap page alloc/put API

From: Byungchul Park
Date: Fri May 09 2025 - 07:54:39 EST


To eliminate the use of struct page in page pool, the page pool code
should use netmem descriptor and API instead.

As part of the work, introduce netmem alloc/put API allowing the code to
use them rather than struct page things.

Signed-off-by: Byungchul Park <byungchul@xxxxxx>
---
include/net/netmem.h | 18 ++++++++++++++++++
1 file changed, 18 insertions(+)

diff --git a/include/net/netmem.h b/include/net/netmem.h
index 45c209d6cc689..c87a604e980b9 100644
--- a/include/net/netmem.h
+++ b/include/net/netmem.h
@@ -138,6 +138,24 @@ static inline netmem_ref page_to_netmem(struct page *page)
return (__force netmem_ref)page;
}

+static inline netmem_ref alloc_netmems_node(int nid, gfp_t gfp_mask,
+ unsigned int order)
+{
+ return page_to_netmem(alloc_pages_node(nid, gfp_mask, order));
+}
+
+static inline unsigned long alloc_netmems_bulk_node(gfp_t gfp, int nid,
+ unsigned long nr_netmems, netmem_ref *netmem_array)
+{
+ return alloc_pages_bulk_node(gfp, nid, nr_netmems,
+ (struct page **)netmem_array);
+}
+
+static inline void put_netmem(netmem_ref netmem)
+{
+ put_page(netmem_to_page(netmem));
+}
+
/**
* virt_to_netmem - convert virtual memory pointer to a netmem reference
* @data: host memory pointer to convert
--
2.17.1