mirror of
https://github.com/torvalds/linux.git
synced 2026-01-25 15:03:52 +08:00
net: page_pool: create page_pool_alloc_netmem
Create page_pool_alloc_netmem to be the mirror of page_pool_alloc. This enables drivers that want currently use page_pool_alloc to transition to netmem by converting the call sites to page_pool_alloc_netmem. Signed-off-by: Mina Almasry <almasrymina@google.com> Acked-by: Stanislav Fomichev <sdf@fomichev.me> Link: https://patch.msgid.link/20241211212033.1684197-3-almasrymina@google.com Signed-off-by: Jakub Kicinski <kuba@kernel.org>
This commit is contained in:
committed by
Jakub Kicinski
parent
91a152cbb4
commit
8156c31049
@@ -115,22 +115,22 @@ static inline struct page *page_pool_dev_alloc_frag(struct page_pool *pool,
|
||||
return page_pool_alloc_frag(pool, offset, size, gfp);
|
||||
}
|
||||
|
||||
static inline struct page *page_pool_alloc(struct page_pool *pool,
|
||||
unsigned int *offset,
|
||||
unsigned int *size, gfp_t gfp)
|
||||
static inline netmem_ref page_pool_alloc_netmem(struct page_pool *pool,
|
||||
unsigned int *offset,
|
||||
unsigned int *size, gfp_t gfp)
|
||||
{
|
||||
unsigned int max_size = PAGE_SIZE << pool->p.order;
|
||||
struct page *page;
|
||||
netmem_ref netmem;
|
||||
|
||||
if ((*size << 1) > max_size) {
|
||||
*size = max_size;
|
||||
*offset = 0;
|
||||
return page_pool_alloc_pages(pool, gfp);
|
||||
return page_pool_alloc_netmems(pool, gfp);
|
||||
}
|
||||
|
||||
page = page_pool_alloc_frag(pool, offset, *size, gfp);
|
||||
if (unlikely(!page))
|
||||
return NULL;
|
||||
netmem = page_pool_alloc_frag_netmem(pool, offset, *size, gfp);
|
||||
if (unlikely(!netmem))
|
||||
return 0;
|
||||
|
||||
/* There is very likely not enough space for another fragment, so append
|
||||
* the remaining size to the current fragment to avoid truesize
|
||||
@@ -141,7 +141,14 @@ static inline struct page *page_pool_alloc(struct page_pool *pool,
|
||||
pool->frag_offset = max_size;
|
||||
}
|
||||
|
||||
return page;
|
||||
return netmem;
|
||||
}
|
||||
|
||||
static inline struct page *page_pool_alloc(struct page_pool *pool,
|
||||
unsigned int *offset,
|
||||
unsigned int *size, gfp_t gfp)
|
||||
{
|
||||
return netmem_to_page(page_pool_alloc_netmem(pool, offset, size, gfp));
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
Reference in New Issue
Block a user