diff options
author | Alexander Lobakin <alobakin@pm.me> | 2021-02-13 17:13:09 +0300 |
---|---|---|
committer | David S. Miller <davem@davemloft.net> | 2021-02-14 01:32:04 +0300 |
commit | 9243adfc311a20371c3f4d8eaf0af4b135e6fac3 (patch) | |
tree | 69fbf812f67550da5b4ed3781bc650bbba4c2a0e /include/linux/skbuff.h | |
parent | cfb8ec6595217430166fe833bca611e6bb126d2d (diff) | |
download | linux-9243adfc311a20371c3f4d8eaf0af4b135e6fac3.tar.xz |
skbuff: queue NAPI_MERGED_FREE skbs into NAPI cache instead of freeing
napi_frags_finish() and napi_skb_finish() can only be called inside
NAPI Rx context, so we can feed NAPI cache with skbuff_heads that
got NAPI_MERGED_FREE verdict instead of immediate freeing.
Replace __kfree_skb() with __kfree_skb_defer() in napi_skb_finish()
and move napi_skb_free_stolen_head() to skbuff.c, so it can drop skbs
to NAPI cache.
As many drivers call napi_alloc_skb()/napi_get_frags() on their
receive path, this becomes especially useful.
Signed-off-by: Alexander Lobakin <alobakin@pm.me>
Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'include/linux/skbuff.h')
-rw-r--r-- | include/linux/skbuff.h | 1 |
1 files changed, 1 insertions, 0 deletions
diff --git a/include/linux/skbuff.h b/include/linux/skbuff.h index 906122eac82a..6d0a33d1c0db 100644 --- a/include/linux/skbuff.h +++ b/include/linux/skbuff.h @@ -2921,6 +2921,7 @@ static inline struct sk_buff *napi_alloc_skb(struct napi_struct *napi, } void napi_consume_skb(struct sk_buff *skb, int budget); +void napi_skb_free_stolen_head(struct sk_buff *skb); void __kfree_skb_defer(struct sk_buff *skb); /** |