net: skb: plumb napi state thru skb freeing paths
authorJakub Kicinski <kuba@kernel.org>
Thu, 13 Apr 2023 04:26:03 +0000 (21:26 -0700)
committerJakub Kicinski <kuba@kernel.org>
Sat, 15 Apr 2023 01:56:12 +0000 (18:56 -0700)
commitb07a2d97ba5ef154fe736aa510e43a3299eee5f8
treeeed24e900219327c88caf4b5b5dafa29f74f0bc2
parentc11d2e718c792468e67389b506451eddf26c2dac
net: skb: plumb napi state thru skb freeing paths

We maintain a NAPI-local cache of skbs which is fed by napi_consume_skb().
Going forward we will also try to cache head and data pages.
Plumb the "are we in a normal NAPI context" information thru
deeper into the freeing path, up to skb_release_data() and
skb_free_head()/skb_pp_recycle(). The "not normal NAPI context"
comes from netpoll which passes budget of 0 to try to reap
the Tx completions but not perform any Rx.

Use "bool napi_safe" rather than bare "int budget",
the further we get from NAPI the more confusing the budget
argument may seem (particularly whether 0 or MAX is the
correct value to pass in when not in NAPI).

Reviewed-by: Tariq Toukan <tariqt@nvidia.com>
Tested-by: Dragos Tatulea <dtatulea@nvidia.com>
Signed-off-by: Jakub Kicinski <kuba@kernel.org>
net/core/skbuff.c