Commit 02b3de80 authored by Jakub Kicinski's avatar Jakub Kicinski Committed by Paolo Abeni

net: page_pool: stash the NAPI ID for easier access

To avoid any issues with race conditions on accessing napi
and having to think about the lifetime of NAPI objects
in netlink GET - stash the napi_id to which page pool
was linked at creation time.
Reviewed-by: default avatarEric Dumazet <edumazet@google.com>
Acked-by: default avatarJesper Dangaard Brouer <hawk@kernel.org>
Signed-off-by: default avatarJakub Kicinski <kuba@kernel.org>
Signed-off-by: default avatarPaolo Abeni <pabeni@redhat.com>
parent 083772c9
...@@ -193,6 +193,7 @@ struct page_pool { ...@@ -193,6 +193,7 @@ struct page_pool {
/* User-facing fields, protected by page_pools_lock */ /* User-facing fields, protected by page_pools_lock */
struct { struct {
struct hlist_node list; struct hlist_node list;
u32 napi_id;
u32 id; u32 id;
} user; } user;
}; };
......
...@@ -37,9 +37,11 @@ int page_pool_list(struct page_pool *pool) ...@@ -37,9 +37,11 @@ int page_pool_list(struct page_pool *pool)
if (err < 0) if (err < 0)
goto err_unlock; goto err_unlock;
if (pool->slow.netdev) if (pool->slow.netdev) {
hlist_add_head(&pool->user.list, hlist_add_head(&pool->user.list,
&pool->slow.netdev->page_pools); &pool->slow.netdev->page_pools);
pool->user.napi_id = pool->p.napi ? pool->p.napi->napi_id : 0;
}
mutex_unlock(&page_pools_lock); mutex_unlock(&page_pools_lock);
return 0; return 0;
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment