summaryrefslogtreecommitdiff
path: root/include
diff options
context:
space:
mode:
authorAlexander Lobakin <alobakin@pm.me>2021-02-13 17:13:09 +0300
committerDavid S. Miller <davem@davemloft.net>2021-02-14 01:32:04 +0300
commit9243adfc311a20371c3f4d8eaf0af4b135e6fac3 (patch)
tree69fbf812f67550da5b4ed3781bc650bbba4c2a0e /include
parentcfb8ec6595217430166fe833bca611e6bb126d2d (diff)
downloadlinux-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')
-rw-r--r--include/linux/skbuff.h1
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);
/**