Message ID | 20231130115611.6632-4-liangchen.linux@gmail.com (mailing list archive) |
---|---|
State | Superseded |
Delegated to: | Netdev Maintainers |
Headers | show |
Series | skbuff: Optimize SKB coalescing for page pool | expand |
The second time is the charm, apologize for the noise.. resending it as plain-text On Thu, 30 Nov 2023 at 13:59, Liang Chen <liangchen.linux@gmail.com> wrote: > > Wrap code for checking if a page is a page_pool page into a > function for better readability and ease of reuse. > > Signed-off-by: Liang Chen <liangchen.linux@gmail.com> > Reviewed-by: Yunsheng Lin <linyunsheng@huawei.com> > --- > net/core/skbuff.c | 7 ++++++- > 1 file changed, 6 insertions(+), 1 deletion(-) > > diff --git a/net/core/skbuff.c b/net/core/skbuff.c > index b157efea5dea..31e57c29c556 100644 > --- a/net/core/skbuff.c > +++ b/net/core/skbuff.c > @@ -890,6 +890,11 @@ static void skb_clone_fraglist(struct sk_buff *skb) > skb_get(list); > } > > +static bool skb_frag_is_pp_page(struct page *page) > +{ > + return (page->pp_magic & ~0x3UL) == PP_SIGNATURE; > +} > + That's fine, but why _frag? The same logic applies to non-fragmented pages no? So rename it to skb_from_pp()? [...] Thanks /Ilias
On Fri, Dec 1, 2023 at 6:23 PM Ilias Apalodimas <ilias.apalodimas@linaro.org> wrote: > > The second time is the charm, apologize for the noise.. resending it > as plain-text > > On Thu, 30 Nov 2023 at 13:59, Liang Chen <liangchen.linux@gmail.com> wrote: > > > > Wrap code for checking if a page is a page_pool page into a > > function for better readability and ease of reuse. > > > > Signed-off-by: Liang Chen <liangchen.linux@gmail.com> > > Reviewed-by: Yunsheng Lin <linyunsheng@huawei.com> > > --- > > net/core/skbuff.c | 7 ++++++- > > 1 file changed, 6 insertions(+), 1 deletion(-) > > > > diff --git a/net/core/skbuff.c b/net/core/skbuff.c > > index b157efea5dea..31e57c29c556 100644 > > --- a/net/core/skbuff.c > > +++ b/net/core/skbuff.c > > @@ -890,6 +890,11 @@ static void skb_clone_fraglist(struct sk_buff *skb) > > skb_get(list); > > } > > > > +static bool skb_frag_is_pp_page(struct page *page) > > +{ > > + return (page->pp_magic & ~0x3UL) == PP_SIGNATURE; > > +} > > + > > That's fine, but why _frag? The same logic applies to non-fragmented pages no? > So rename it to skb_from_pp()? > Yeah, the same logic applies to non-fragmented pages. How about changing it to 'is_pp_page'? It takes a page as an argument instead of the entire skb. > [...] > > Thanks > /Ilias
Hi Liang, On Mon, 4 Dec 2023 at 04:40, Liang Chen <liangchen.linux@gmail.com> wrote: > > On Fri, Dec 1, 2023 at 6:23 PM Ilias Apalodimas > <ilias.apalodimas@linaro.org> wrote: > > > > The second time is the charm, apologize for the noise.. resending it > > as plain-text > > > > On Thu, 30 Nov 2023 at 13:59, Liang Chen <liangchen.linux@gmail.com> wrote: > > > > > > Wrap code for checking if a page is a page_pool page into a > > > function for better readability and ease of reuse. > > > > > > Signed-off-by: Liang Chen <liangchen.linux@gmail.com> > > > Reviewed-by: Yunsheng Lin <linyunsheng@huawei.com> > > > --- > > > net/core/skbuff.c | 7 ++++++- > > > 1 file changed, 6 insertions(+), 1 deletion(-) > > > > > > diff --git a/net/core/skbuff.c b/net/core/skbuff.c > > > index b157efea5dea..31e57c29c556 100644 > > > --- a/net/core/skbuff.c > > > +++ b/net/core/skbuff.c > > > @@ -890,6 +890,11 @@ static void skb_clone_fraglist(struct sk_buff *skb) > > > skb_get(list); > > > } > > > > > > +static bool skb_frag_is_pp_page(struct page *page) > > > +{ > > > + return (page->pp_magic & ~0x3UL) == PP_SIGNATURE; > > > +} > > > + > > > > That's fine, but why _frag? The same logic applies to non-fragmented pages no? > > So rename it to skb_from_pp()? > > > > Yeah, the same logic applies to non-fragmented pages. How about > changing it to 'is_pp_page'? It takes a page as an argument instead of > the entire skb. Naming stuff is always hard. Any of skb_from_pp/is_pp_page would work for me Thanks /Ilias > > [...] > > > > Thanks > > /Ilias
diff --git a/net/core/skbuff.c b/net/core/skbuff.c index b157efea5dea..31e57c29c556 100644 --- a/net/core/skbuff.c +++ b/net/core/skbuff.c @@ -890,6 +890,11 @@ static void skb_clone_fraglist(struct sk_buff *skb) skb_get(list); } +static bool skb_frag_is_pp_page(struct page *page) +{ + return (page->pp_magic & ~0x3UL) == PP_SIGNATURE; +} + #if IS_ENABLED(CONFIG_PAGE_POOL) bool napi_pp_put_page(struct page *page, bool napi_safe) { @@ -905,7 +910,7 @@ bool napi_pp_put_page(struct page *page, bool napi_safe) * and page_is_pfmemalloc() is checked in __page_pool_put_page() * to avoid recycling the pfmemalloc page. */ - if (unlikely((page->pp_magic & ~0x3UL) != PP_SIGNATURE)) + if (unlikely(!skb_frag_is_pp_page(page))) return false; pp = page->pp;