Re: [PATCH] virtio_net: enable tx after resuming from suspend
From: Jason Wang <jasowang@redhat.com>
Date: 2018-10-11 13:06:27
Also in:
lkml, virtualization
On 2018年10月11日 18:22, ake wrote:
On 2018年10月11日 18:44, Jason Wang wrote:quoted
On 2018年10月11日 15:51, Ake Koomsin wrote:quoted
commit 713a98d90c5e ("virtio-net: serialize tx routine during reset") disabled the virtio tx before going to suspend to avoid a use after free. However, after resuming, it causes the virtio_net device to lose its network connectivity. To solve the issue, we need to enable tx after resuming. Fixes commit 713a98d90c5e ("virtio-net: serialize tx routine during reset") Signed-off-by: Ake Koomsin <redacted> --- drivers/net/virtio_net.c | 1 + 1 file changed, 1 insertion(+)diff --git a/drivers/net/virtio_net.c b/drivers/net/virtio_net.c index dab504ec5e50..3453d80f5f81 100644 --- a/drivers/net/virtio_net.c +++ b/drivers/net/virtio_net.c@@ -2256,6 +2256,7 @@ static int virtnet_restore_up(structvirtio_device *vdev) } netif_device_attach(vi->dev); + netif_start_queue(vi->dev);I believe this is duplicated with netif_tx_wake_all_queues() in netif_device_attach() above?Thank you for your review. If both netif_tx_wake_all_queues() and netif_start_queue() result in clearing __QUEUE_STATE_DRV_XOFF, then is it possible that some conditions in netif_device_attach() is not satisfied?
Yes, maybe. One case I can see now is when the device is down, in this case netif_device_attach() won't try to wakeup the queue.
Without netif_start_queue(), the virtio_net device does not resume properly after waking up.
How do you trigger the issue? Just do suspend/resume?
Is it better to report this as a bug first?
Nope, you're very welcome to post patch directly.
If I am to do more investigation, what areas should I look into?
As you've figured out, you can start with why netif_tx_wake_all_queues() were not executed? (Btw, does the issue disappear if you move netif_tx_disable() under the check of netif_running() in virtnet_freeze_down()?) Thanks
Best Regards Ake Koomsin
_______________________________________________ Virtualization mailing list Virtualization@lists.linux-foundation.org https://lists.linuxfoundation.org/mailman/listinfo/virtualization