Patch "virtio-net: disable NAPI only when enabled during XDP set" has been added to the 4.14-stable tree
Subsystems (3)
This is a note to let you know that I've just added the patch titled
virtio-net: disable NAPI only when enabled during XDP set
to the 4.14-stable tree which can be found at:
http://www.kernel.org/git/?p=linux/kernel/git/stable/stable-queue.git;a=summary
The filename of the patch is:
virtio-net-disable-napi-only-when-enabled-during-xdp-set.patch
and it can be found in the queue-4.14 subdirectory.
If you, or anyone else, feels it should not be added to the stable tree, please let <[email protected]> know about it.
Quoted 1 line
From foo@baz Tue Mar 6 19:02:12 PST 2018
From: Jason Wang <[email protected]>
Date: Wed, 28 Feb 2018 18:20:04 +0800
Subject: virtio-net: disable NAPI only when enabled during XDP set
From: Jason Wang <[email protected]>
[ Upstream commit 4e09ff5362843dff3accfa84c805c7f3a99de9cd ]
We try to disable NAPI to prevent a single XDP TX queue being used by multiple cpus. But we don't check if device is up (NAPI is enabled), this could result stall because of infinite wait in napi_disable(). Fixing this by checking device state through netif_running() before.
--- drivers/net/virtio_net.c | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-)
drivers/net/virtio_net.c +5 -3
@@ -1995,8 +1995,9 @@ static int virtnet_xdp_set(struct net_de }/* Make sure NAPI is not using any XDP TX queues for RX. */ -for (i =0 ; i < vi->max_queue_pairs; i++) -napi_disable (&vi->rq[i].napi); +if (netif_running (dev)) +for (i =0 ; i < vi->max_queue_pairs; i++) +napi_disable (&vi->rq[i].napi);netif_set_real_num_rx_queues (dev, curr_qp + xdp_qp); err =_virtnet_set_queues (vi, curr_qp + xdp_qp);
@@ -2015,7 +2016,8 @@ static int virtnet_xdp_set(struct net_de }if (old_prog)bpf_prog_put (old_prog); -virtnet_napi_enable (vi->rq[i].vq, &vi->rq[i].napi); +if (netif_running (dev)) +virtnet_napi_enable (vi->rq[i].vq, &vi->rq[i].napi); }return 0 ;
Patches currently in stable-queue which might be from [email protected] are
queue-4.14/tuntap-correctly-add-the-missing-xdp-flush.patch queue-4.14/virtio-net-disable-napi-only-when-enabled-during-xdp-set.patch queue-4.14/tuntap-disable-preemption-during-xdp-processing.patch