[<prev] [next>] [day] [month] [year] [list]
Message-ID: <20250506145530.2877229-5-jon@nutanix.com>
Date: Tue, 6 May 2025 07:55:29 -0700
From: Jon Kohler <jon@...anix.com>
To: ast@...nel.org, daniel@...earbox.net, davem@...emloft.net, kuba@...nel.org,
hawk@...nel.org, john.fastabend@...il.com, netdev@...r.kernel.org,
bpf@...r.kernel.org, jon@...anix.com, aleksander.lobakin@...el.com,
Willem de Bruijn <willemdebruijn.kernel@...il.com>,
Jason Wang <jasowang@...hat.com>, Andrew Lunn <andrew+netdev@...n.ch>,
Eric Dumazet <edumazet@...gle.com>, Paolo Abeni <pabeni@...hat.com>,
linux-kernel@...r.kernel.org (open list)
Subject: [PATCH net-next 4/4] tun: use napi_consume_skb in tun_do_read
Now that we have the build_skb paths using local NAPI cache, use
napi_consume_skb in tun_do_read, so that the local cache gets refilled
on read. This is especially useful in the vhost worker use case where
the RX and TX paths are running on the same worker kthread.
Signed-off-by: Jon Kohler <jon@...anix.com>
---
drivers/net/tun.c | 9 ++++++---
1 file changed, 6 insertions(+), 3 deletions(-)
diff --git a/drivers/net/tun.c b/drivers/net/tun.c
index 7b13d4bf5374..f85115383667 100644
--- a/drivers/net/tun.c
+++ b/drivers/net/tun.c
@@ -2163,10 +2163,13 @@ static ssize_t tun_do_read(struct tun_struct *tun, struct tun_file *tfile,
struct sk_buff *skb = ptr;
ret = tun_put_user(tun, tfile, skb, to);
- if (unlikely(ret < 0))
+ if (ret >= 0) {
+ local_bh_disable();
+ napi_consume_skb(skb, 1);
+ local_bh_enable();
+ } else {
kfree_skb(skb);
- else
- consume_skb(skb);
+ }
}
return ret;
--
2.43.0
Powered by blists - more mailing lists