summaryrefslogtreecommitdiffstats
path: root/net/core
diff options
context:
space:
mode:
authorDavid Wei <dw@davidwei.uk>2024-06-26 20:01:59 -0700
committerPaolo Abeni <pabeni@redhat.com>2024-07-02 15:00:11 +0200
commitd7f39aee79f04eeaa42085728423501b33ac5be5 (patch)
tree7926a7f07708adb12c5b7f2965ff094ddf108949 /net/core
parente2dd0d0593c17f32c7263e9d6f7554ecaabb0baf (diff)
downloadlinux-stable-d7f39aee79f04eeaa42085728423501b33ac5be5.tar.gz
linux-stable-d7f39aee79f04eeaa42085728423501b33ac5be5.tar.bz2
linux-stable-d7f39aee79f04eeaa42085728423501b33ac5be5.zip
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>
Diffstat (limited to 'net/core')
-rw-r--r--net/core/page_pool.c3
1 files changed, 2 insertions, 1 deletions
diff --git a/net/core/page_pool.c b/net/core/page_pool.c
index 3927a0a7fa9a..5f1ed6f2ca8f 100644
--- a/net/core/page_pool.c
+++ b/net/core/page_pool.c
@@ -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)
{