To eliminate the use of struct page in page pool, the page pool code should use netmem descriptor and APIs instead. As part of the work, introduce a netmem API to convert a virtual address to a head netmem allowing the code to use it rather than the existing API, virt_to_head_page() for struct page. Signed-off-by: Byungchul Park <byungchul@xxxxxx> Reviewed-by: Toke Høiland-Jørgensen <toke@xxxxxxxxxx> Reviewed-by: Pavel Begunkov <asml.silence@xxxxxxxxx> Reviewed-by: Mina Almasry <almasrymina@xxxxxxxxxx> --- include/net/netmem.h | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/include/net/netmem.h b/include/net/netmem.h index d0a84557983d..d49ed49d250b 100644 --- a/include/net/netmem.h +++ b/include/net/netmem.h @@ -276,6 +276,13 @@ static inline netmem_ref netmem_compound_head(netmem_ref netmem) return page_to_netmem(compound_head(netmem_to_page(netmem))); } +static inline netmem_ref virt_to_head_netmem(const void *x) +{ + netmem_ref netmem = virt_to_netmem(x); + + return netmem_compound_head(netmem); +} + /** * __netmem_address - unsafely get pointer to the memory backing @netmem * @netmem: netmem reference to get the pointer for -- 2.17.1