mirror of
https://mirrors.bfsu.edu.cn/git/linux.git
synced 2024-11-14 07:44:21 +08:00
page_pool: export page_pool_disable_direct_recycling()
56ef27e3
unexported page_pool_unlink_napi() and renamed it to
page_pool_disable_direct_recycling(). This is because there was no
in-tree user of page_pool_unlink_napi().
Since then Rx queue API and an implementation in bnxt got merged. In the
bnxt implementation, it broadly follows the following steps: allocate
new queue memory + page pool, stop old rx queue, swap, then destroy old
queue memory + page pool.
The existing NAPI instance is re-used so when the old page pool that is
no longer used but still linked to this shared NAPI instance is
destroyed, it will trigger warnings.
In my initial patches I unlinked a page pool from a NAPI instance
directly. Instead, export page_pool_disable_direct_recycling() and call
that instead to avoid having a driver touch a core struct.
Suggested-by: Jakub Kicinski <kuba@kernel.org>
Signed-off-by: David Wei <dw@davidwei.uk>
Reviewed-by: Jakub Kicinski <kuba@kernel.org>
Signed-off-by: Paolo Abeni <pabeni@redhat.com>
This commit is contained in:
parent
e2dd0d0593
commit
d7f39aee79
@ -229,6 +229,7 @@ struct page_pool *page_pool_create_percpu(const struct page_pool_params *params,
|
||||
struct xdp_mem_info;
|
||||
|
||||
#ifdef CONFIG_PAGE_POOL
|
||||
void page_pool_disable_direct_recycling(struct page_pool *pool);
|
||||
void page_pool_destroy(struct page_pool *pool);
|
||||
void page_pool_use_xdp_mem(struct page_pool *pool, void (*disconnect)(void *),
|
||||
const struct xdp_mem_info *mem);
|
||||
|
@ -1014,7 +1014,7 @@ void page_pool_use_xdp_mem(struct page_pool *pool, void (*disconnect)(void *),
|
||||
pool->xdp_mem_id = mem->id;
|
||||
}
|
||||
|
||||
static void page_pool_disable_direct_recycling(struct page_pool *pool)
|
||||
void page_pool_disable_direct_recycling(struct page_pool *pool)
|
||||
{
|
||||
/* Disable direct recycling based on pool->cpuid.
|
||||
* Paired with READ_ONCE() in page_pool_napi_local().
|
||||
@ -1032,6 +1032,7 @@ static void page_pool_disable_direct_recycling(struct page_pool *pool)
|
||||
|
||||
WRITE_ONCE(pool->p.napi, NULL);
|
||||
}
|
||||
EXPORT_SYMBOL(page_pool_disable_direct_recycling);
|
||||
|
||||
void page_pool_destroy(struct page_pool *pool)
|
||||
{
|
||||
|
Loading…
Reference in New Issue
Block a user