[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Qemu-devel] Re: [PATCH] vhost: disable on tap link down
From: |
pradeep |
Subject: |
[Qemu-devel] Re: [PATCH] vhost: disable on tap link down |
Date: |
Tue, 8 Feb 2011 17:40:58 +0530 |
On Mon, 7 Feb 2011 15:50:01 +0200
"Michael S. Tsirkin" <address@hidden> wrote:
> qemu makes it possible to disable link at tap
> which is not communicated to the guest but
> causes all packets to be dropped.
>
> Handle this with vhost simply by moving to the userspace emulation.
>
> Note: it might be a good idea to make peer link status match
> tap in this case, so the guest gets an event
> and updates the carrier state. For now
> stay bug for bug compatible with what we used to have.
>
> Signed-off-by: Michael S. Tsirkin <address@hidden>
> Reported-by: pradeep <address@hidden>
> ---
>
> Untested.
> Pradeep, mind trying this patch out and reporting?
Hi mst
This patch works. Thanks
--Pradeep
> Thanks!
>
> hw/virtio-net.c | 4 ++++
> net.c | 7 +++++++
> 2 files changed, 11 insertions(+), 0 deletions(-)
>
> diff --git a/hw/virtio-net.c b/hw/virtio-net.c
> index 671d952..fc2d6f5 100644
> --- a/hw/virtio-net.c
> +++ b/hw/virtio-net.c
> @@ -112,6 +112,10 @@ static void virtio_net_vhost_status(VirtIONet
> *n, uint8_t status) return;
> }
>
> + if (n->nic->nc.peer->link_down) {
> + return;
> + }
> +
> if (!tap_get_vhost_net(n->nic->nc.peer)) {
> return;
> }
> diff --git a/net.c b/net.c
> index 9ba5be2..57ee997 100644
> --- a/net.c
> +++ b/net.c
> @@ -1324,6 +1324,13 @@ done:
> if (vc->info->link_status_changed) {
> vc->info->link_status_changed(vc);
> }
> +
> + /* Notify peer. Don't update peer link status: this makes it
> possible to
> + * disconnect from host network without notifying the guest.
> + * FIXME: is this useful? Could just be an artifact of vlan
> support. */
> + if (vc->peer && vc->peer->info->link_status_changed) {
> + vc->peer->info->link_status_changed(vc->peer);
> + }
> return 0;
> }
>