aboutsummaryrefslogtreecommitdiffstats
path: root/hw/virtio-net.c
diff options
context:
space:
mode:
authorMichael S. Tsirkin <mst@redhat.com>2011-02-09 18:45:09 +0200
committerAurelien Jarno <aurelien@aurel32.net>2011-02-20 18:06:21 +0100
commit3299369856db73a02c68869cb03fd1e24238eb9b (patch)
tree881f6b5aabbd155837e86ede3eb781b77381b66f /hw/virtio-net.c
parentab1cbe1c6df3c1f11db42148f929113ad9608ba1 (diff)
vhost: disable on tap link down
qemu makes it possible to disable link at tap which is not communicated to the guest but causes all packets to be dropped. When vhost-net is enabled, vhost needs to be aware of both the virtio link_down and the peer link_down. we switch to userspace emulation when either is down. Signed-off-by: Michael S. Tsirkin <mst@redhat.com> Reported-by: pradeep <psuriset@linux.vnet.ibm.com> Acked-by: Alex Williamson <alex.williamson@redhat.com> Acked-by: Jason Wang <jasowang@redhat.com> Signed-off-by: Aurelien Jarno <aurelien@aurel32.net>
Diffstat (limited to 'hw/virtio-net.c')
-rw-r--r--hw/virtio-net.c3
1 files changed, 2 insertions, 1 deletions
diff --git a/hw/virtio-net.c b/hw/virtio-net.c
index 671d95292..20cf680e6 100644
--- a/hw/virtio-net.c
+++ b/hw/virtio-net.c
@@ -115,7 +115,8 @@ static void virtio_net_vhost_status(VirtIONet *n, uint8_t status)
if (!tap_get_vhost_net(n->nic->nc.peer)) {
return;
}
- if (!!n->vhost_started == virtio_net_started(n, status)) {
+ if (!!n->vhost_started == virtio_net_started(n, status) &&
+ !n->nic->nc.peer->link_down) {
return;
}
if (!n->vhost_started) {