On 2018年10月11日 18:22, ake wrote:

On 2018年10月11日 18:44, Jason Wang wrote:

On 2018年10月11日 15:51, Ake Koomsin wrote:
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 <a...@igel.co.jp>
---
   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(struct
virtio_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

Reply via email to