diff mbox series

[net-next,v4,3/4] skbuff: Add a function to check if a page belongs to page_pool

Message ID 20231129031201.32014-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

Checks

Context Check Description
netdev/series_format success Posting correctly formatted
netdev/codegen success Generated files up to date
netdev/tree_selection success Clearly marked for net-next
netdev/fixes_present success Fixes tag not required for -next series
netdev/header_inline success No static functions without inline keyword in header files
netdev/build_32bit success Errors and warnings before: 1117 this patch: 1117
netdev/cc_maintainers success CCed 4 of 4 maintainers
netdev/build_clang success Errors and warnings before: 1143 this patch: 1143
netdev/verify_signedoff success Signed-off-by tag matches author and committer
netdev/deprecated_api success None detected
netdev/check_selftest success No net selftest shell script
netdev/verify_fixes success No Fixes tag
netdev/build_allmodconfig_warn success Errors and warnings before: 1144 this patch: 1144
netdev/checkpatch success total: 0 errors, 0 warnings, 0 checks, 19 lines checked
netdev/build_clang_rust success No Rust files in patch. Skipping build
netdev/kdoc success Errors and warnings before: 0 this patch: 0
netdev/source_inline fail Was 0 now: 1

Commit Message

Liang Chen Nov. 29, 2023, 3:12 a.m. UTC
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>
---
 net/core/skbuff.c | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

Comments

Yunsheng Lin Nov. 29, 2023, 3:40 a.m. UTC | #1
On 2023/11/29 11:12, Liang Chen 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>
> ---
>  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..310207389f51 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 inline bool skb_frag_is_pp_page(struct page *page)

I am not sure about the 'skb_frag' part, But I am not able to come
up with a better name too:)

Also, Generally, 'inline' is not really encouraged in c file in
the networking unless there is a clear justification as the compiler
can make better decision about whether inlining most of the time.

Other than the 'inlining' part, LGTM.
Reviewed-by: Yunsheng Lin <linyunsheng@huawei.com>

> +{
> +	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;
>
Liang Chen Nov. 29, 2023, 7:08 a.m. UTC | #2
On Wed, Nov 29, 2023 at 11:40 AM Yunsheng Lin <linyunsheng@huawei.com> wrote:
>
> On 2023/11/29 11:12, Liang Chen 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>
> > ---
> >  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..310207389f51 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 inline bool skb_frag_is_pp_page(struct page *page)
>
> I am not sure about the 'skb_frag' part, But I am not able to come
> up with a better name too:)
>

So, let's leave it there for now:)
> Also, Generally, 'inline' is not really encouraged in c file in
> the networking unless there is a clear justification as the compiler
> can make better decision about whether inlining most of the time.
>

Sure. will remove 'inline' in v5.

> Other than the 'inlining' part, LGTM.
> Reviewed-by: Yunsheng Lin <linyunsheng@huawei.com>
>
> > +{
> > +     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;
> >
diff mbox series

Patch

diff --git a/net/core/skbuff.c b/net/core/skbuff.c
index b157efea5dea..310207389f51 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 inline 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;