RE: [PATCH bpf-next 1/8] page_pool: Add callback to init pages when they are allocated
From: John Fastabend <john.fastabend@gmail.com>
Date: 2021-12-08 22:30:19
Also in:
bpf
Toke Høiland-Jørgensen wrote:
Add a new callback function to page_pool that, if set, will be called every time a new page is allocated. This will be used from bpf_test_run() to initialise the page data with the data provided by userspace when running XDP programs with redirect turned on. Signed-off-by: Toke Høiland-Jørgensen <redacted> ---
LGTM. Acked-by: John Fastabend <john.fastabend@gmail.com>
quoted hunk ↗ jump to hunk
include/net/page_pool.h | 2 ++ net/core/page_pool.c | 2 ++ 2 files changed, 4 insertions(+)diff --git a/include/net/page_pool.h b/include/net/page_pool.h index 3855f069627f..a71201854c41 100644 --- a/include/net/page_pool.h +++ b/include/net/page_pool.h@@ -80,6 +80,8 @@ struct page_pool_params { enum dma_data_direction dma_dir; /* DMA mapping direction */ unsigned int max_len; /* max DMA sync memory size */ unsigned int offset; /* DMA addr offset */ + void (*init_callback)(struct page *page, void *arg); + void *init_arg; }; struct page_pool {diff --git a/net/core/page_pool.c b/net/core/page_pool.c index 9b60e4301a44..fb5a90b9d574 100644 --- a/net/core/page_pool.c +++ b/net/core/page_pool.c@@ -219,6 +219,8 @@ static void page_pool_set_pp_info(struct page_pool *pool, { page->pp = pool; page->pp_magic |= PP_SIGNATURE; + if (unlikely(pool->p.init_callback)) + pool->p.init_callback(page, pool->p.init_arg);
already in slow path right? So unlikely in a slow path should not have any impact on performance is my reading.
} static void page_pool_clear_pp_info(struct page *page) -- 2.34.0