net/virtio: revert fix restart
authorYuanhan Liu <yuanhan.liu@linux.intel.com>
Sat, 5 Nov 2016 09:40:56 +0000 (17:40 +0800)
committerThomas Monjalon <thomas.monjalon@6wind.com>
Mon, 7 Nov 2016 14:39:43 +0000 (15:39 +0100)
commit3f3b3d549bd5f308aaf425a9ab58473e4fb812b1
treea8b8983a093a063a22616ca7af1b8f9be065e33a
parentf74ea27bb5d4e6dd0db39629e4fefd0d1851f8b5
net/virtio: revert fix restart

This reverts commit 9a0615af7746 ("virtio: fix restart"); conflict is
manually addressed.

Kyle reported an issue with above commit

    qemu-kvm: Guest moved used index from 5 to 1

with following steps,

    1) Start my virtio interfaces
    2) Send some traffic into/out of the interfaces
    3) Stop the interfaces
    4) Start the interfaces
    5) Send some more traffic

And here are some quotes from Kyle's analysis,

    Prior to the patch, if an interface were stopped then started, without
    restarting the application, the queues would be left as-is, because
    hw->started would be set to 1. Now, calling stop sets hw->started to 0,
    which means the next call to start will "touch the queues". This is the
    unintended side-effect that causes the problem.

We should not touch the queues once the init is done, otherwise, the vring
state of virtio PMD driver and vhost-user would be inconsistent, leading
some issue like above.

Thus this patch is reverted.

Fixes: 9a0615af7746 ("virtio: fix restart")

Reported-by: Kyle Larose <klarose@sandvine.com>
Signed-off-by: Yuanhan Liu <yuanhan.liu@linux.intel.com>
Reviewed-by: Maxime Coquelin <maxime.coquelin@redhat.com>
drivers/net/virtio/virtio_ethdev.c