[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [Qemu-devel] How to lock-up your tap-based VM network
From: |
Blue Swirl |
Subject: |
Re: [Qemu-devel] How to lock-up your tap-based VM network |
Date: |
Tue, 13 Apr 2010 21:48:14 +0300 |
On 4/12/10, Paul Brook <address@hidden> wrote:
> > A major reason for this deadlock could likely be removed by shutting
> > down the tap (if peered) or dropping packets in user space (in case of
> > vlan) when a NIC is stopped or otherwise shut down. Currently most (if
> > not all) NIC models seem to signal both "queue full" and "RX disabled"
> > via !can_receive().
>
>
> No. A disabled device should return true from can_recieve, then discard the
> packets in its receive callback. Failure to do so is a bug in the device. It
> looks like the virtio-net device may be buggy.
Awesome, it looks like a longstanding bug with pcnet/lance has is
fixed by this change! OpenBSD installer would hang when receiving
packages, now it works!
diff --git a/hw/pcnet.c b/hw/pcnet.c
index 5e63eb5..a04ad09 100644
--- a/hw/pcnet.c
+++ b/hw/pcnet.c
@@ -1031,8 +1031,6 @@ static int pcnet_tdte_poll(PCNetState *s)
int pcnet_can_receive(VLANClientState *nc)
{
PCNetState *s = DO_UPCAST(NICState, nc, nc)->opaque;
- if (CSR_STOP(s) || CSR_SPND(s))
- return 0;
return sizeof(s->buffer)-16;
}
Re: [Qemu-devel] How to lock-up your tap-based VM network,
Blue Swirl <=