Something went wrong. Try again.
(I'm so sorry!) Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
Something went wrong. Try again.
C
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475/* SPDX-License-Identifier: GPL-2.0-or-later *//* * Skb ref helpers. * */
#ifndef _LINUX_SKBUFF_REF_H#define _LINUX_SKBUFF_REF_H
#include <linux/skbuff.h>
/** * __skb_frag_ref - take an addition reference on a paged fragment. * @frag: the paged fragment * * Takes an additional reference on the paged fragment @frag. */static __always_inline void __skb_frag_ref(skb_frag_t *frag){ get_netmem(skb_frag_netmem(frag));}
/** * skb_frag_ref - take an addition reference on a paged fragment of an skb. * @skb: the buffer * @f: the fragment offset. * * Takes an additional reference on the @f'th paged fragment of @skb. */static __always_inline void skb_frag_ref(struct sk_buff *skb, int f){ __skb_frag_ref(&skb_shinfo(skb)->frags[f]);}
bool napi_pp_put_page(netmem_ref netmem);
static __always_inline void skb_page_unref(netmem_ref netmem, bool recycle){#ifdef CONFIG_PAGE_POOL if (recycle && napi_pp_put_page(netmem)) return;#endif put_netmem(netmem);}
/** * __skb_frag_unref - release a reference on a paged fragment. * @frag: the paged fragment * @recycle: recycle the page if allocated via page_pool * * Releases a reference on the paged fragment @frag * or recycles the page via the page_pool API. */static __always_inline void __skb_frag_unref(skb_frag_t *frag, bool recycle){ skb_page_unref(skb_frag_netmem(frag), recycle);}
/** * skb_frag_unref - release a reference on a paged fragment of an skb. * @skb: the buffer * @f: the fragment offset * * Releases a reference on the @f'th paged fragment of @skb. */static __always_inline void skb_frag_unref(struct sk_buff *skb, int f){ struct skb_shared_info *shinfo = skb_shinfo(skb);
if (!skb_zcopy_managed(skb)) __skb_frag_unref(&shinfo->frags[f], skb->pp_recycle);}
#endif /* _LINUX_SKBUFF_REF_H */