RE: [PATCH bpf-next 1/8] page_pool: Add callback to init pages when they are allocated
From: Toke Høiland-Jørgensen <hidden>
Date: 2021-12-09 16:02:08
Also in:
bpf
John Fastabend [off-list ref] writes:
Toke Høiland-Jørgensen wrote:quoted
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
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.
Yeah, fair point, may have gone a little overboard on the "minimise impact to existing code" here - will drop. -Toke