Paul Brook 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.
I agree - or alternatively signal that there's no point sending it packets and they should be dropped without bothering to construct them. But anyway, this flow control mechanism is buggy - what if instead of an interface down, you just have a *slow* guest? That should not push back so much that it makes other guests networking with each other slow down. -- Jamie