• Mina Almasry's avatar
    net: mirror skb frag ref/unref helpers · a580ea99
    Mina Almasry authored
    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: default avatarMina Almasry <almasrymina@google.com>
    Reviewed-by: default avatarDragos Tatulea <dtatulea@nvidia.com>
    Reviewed-by: default avatarJacob Keller <jacob.e.keller@intel.com>
    Link: https://lore.kernel.org/r/20240410190505.1225848-3-almasrymina@google.comSigned-off-by: default avatarJakub Kicinski <kuba@kernel.org>
    a580ea99
skbuff.c 178 KB