> 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. Paul.