skbuff: queue NAPI_MERGED_FREE skbs into NAPI cache instead of freeing
authorAlexander Lobakin <alobakin@pm.me>
Sat, 13 Feb 2021 14:13:09 +0000 (14:13 +0000)
committerDavid S. Miller <davem@davemloft.net>
Sat, 13 Feb 2021 22:32:04 +0000 (14:32 -0800)
commit9243adfc311a20371c3f4d8eaf0af4b135e6fac3
tree69fbf812f67550da5b4ed3781bc650bbba4c2a0e
parentcfb8ec6595217430166fe833bca611e6bb126d2d
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>
include/linux/skbuff.h
net/core/dev.c
net/core/skbuff.c