Messages in this thread | | | From | Eric Dumazet <> | Date | Wed, 3 Apr 2024 18:21:19 +0200 | Subject | Re: [PATCH net-next v4 2/3] net: mirror skb frag ref/unref helpers |
| |
On Wed, Apr 3, 2024 at 5:28 PM Mina Almasry <almasrymina@google.com> wrote: > > Refactor some of the skb frag ref/unref helpers for improved clarity. > > Implement napi_pp_get_page() to be the mirror counterpart of > napi_pp_put_page(). > > Implement skb_page_ref() to be the mirror of skb_page_unref(). > > Improve __skb_frag_ref() to become a mirror counterpart of > __skb_frag_unref(). Previously unref could handle pp & non-pp pages, > while the ref could only handle non-pp pages. Now both the ref & unref > helpers can correctly handle both pp & non-pp pages. > > Now that __skb_frag_ref() can handle both pp & non-pp pages, remove > skb_pp_frag_ref(), and use __skb_frag_ref() instead. This lets us > remove pp specific handling from skb_try_coalesce. > > Additionally, since __skb_frag_ref() can now handle both pp & non-pp > pages, a latent issue in skb_shift() should now be fixed. Previously > this function would do a non-pp ref & pp unref on potential pp frags > (fragfrom). After this patch, skb_shift() should correctly do a pp > ref/unref on pp frags. > > Signed-off-by: Mina Almasry <almasrymina@google.com> > Reviewed-by: Dragos Tatulea <dtatulea@nvidia.com> >
..
> #if IS_ENABLED(CONFIG_PAGE_POOL) > +bool napi_pp_get_page(struct page *page) > +{ > + page = compound_head(page); > + > + if (!is_pp_page(page)) > + return false; > + > + page_pool_ref_page(page); > + return true; > +} > +EXPORT_SYMBOL(napi_pp_get_page);
It seems this could be inlined (along with is_pp_page())
| |