Message ID | 20230105214631.3939268-20-willy@infradead.org (mailing list archive) |
---|---|
State | New |
Headers | show |
Series | Split netmem from struct page | expand |
On 05/01/2023 22.46, Matthew Wilcox (Oracle) wrote: > We dereference the 'pp' member of struct page, so we must use a netmem > here. > > Signed-off-by: Matthew Wilcox (Oracle)<willy@infradead.org> > --- > net/core/xdp.c | 7 ++++--- > 1 file changed, 4 insertions(+), 3 deletions(-) Acked-by: Jesper Dangaard Brouer <brouer@redhat.com>
On Thu, Jan 05, 2023 at 09:46:26PM +0000, Matthew Wilcox (Oracle) wrote: > We dereference the 'pp' member of struct page, so we must use a netmem > here. > > Signed-off-by: Matthew Wilcox (Oracle) <willy@infradead.org> > --- > net/core/xdp.c | 7 ++++--- > 1 file changed, 4 insertions(+), 3 deletions(-) > > diff --git a/net/core/xdp.c b/net/core/xdp.c > index 844c9d99dc0e..7520c3b27356 100644 > --- a/net/core/xdp.c > +++ b/net/core/xdp.c > @@ -375,17 +375,18 @@ EXPORT_SYMBOL_GPL(xdp_rxq_info_reg_mem_model); > void __xdp_return(void *data, struct xdp_mem_info *mem, bool napi_direct, > struct xdp_buff *xdp) > { > + struct netmem *nmem; > struct page *page; > > switch (mem->type) { > case MEM_TYPE_PAGE_POOL: > - page = virt_to_head_page(data); > + nmem = virt_to_netmem(data); > if (napi_direct && xdp_return_frame_no_direct()) > napi_direct = false; > - /* No need to check ((page->pp_magic & ~0x3UL) == PP_SIGNATURE) > + /* No need to check ((nmem->pp_magic & ~0x3UL) == PP_SIGNATURE) > * as mem->type knows this a page_pool page > */ > - page_pool_put_full_page(page->pp, page, napi_direct); > + page_pool_put_full_netmem(nmem->pp, nmem, napi_direct); > break; > case MEM_TYPE_PAGE_SHARED: > page_frag_free(data); > -- > 2.35.1 > Reviewed-by: Ilias Apalodimas <ilias.apalodimas@linaro.org>
diff --git a/net/core/xdp.c b/net/core/xdp.c index 844c9d99dc0e..7520c3b27356 100644 --- a/net/core/xdp.c +++ b/net/core/xdp.c @@ -375,17 +375,18 @@ EXPORT_SYMBOL_GPL(xdp_rxq_info_reg_mem_model); void __xdp_return(void *data, struct xdp_mem_info *mem, bool napi_direct, struct xdp_buff *xdp) { + struct netmem *nmem; struct page *page; switch (mem->type) { case MEM_TYPE_PAGE_POOL: - page = virt_to_head_page(data); + nmem = virt_to_netmem(data); if (napi_direct && xdp_return_frame_no_direct()) napi_direct = false; - /* No need to check ((page->pp_magic & ~0x3UL) == PP_SIGNATURE) + /* No need to check ((nmem->pp_magic & ~0x3UL) == PP_SIGNATURE) * as mem->type knows this a page_pool page */ - page_pool_put_full_page(page->pp, page, napi_direct); + page_pool_put_full_netmem(nmem->pp, nmem, napi_direct); break; case MEM_TYPE_PAGE_SHARED: page_frag_free(data);
We dereference the 'pp' member of struct page, so we must use a netmem here. Signed-off-by: Matthew Wilcox (Oracle) <willy@infradead.org> --- net/core/xdp.c | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-)