Two networking issues have been observed: 1. When the USB network interface and dump net client are on the same "VLAN", the USB network interface drops packets. This was assumed to be because the dump net client can receive packets all the time, whereas the USB network interface has a single buffer that the guest must empty.
The (incorrect) fix for #1 was to only broadcast "VLAN" packets when all net clients can receive. Once this code change was merged a new issue appeared: 2. When two NICs are on a "VLAN" they must both be up. If one NIC is not up then no traffic can flow on the "VLAN". This patch series fixes the root cause for #1, namely, that the USB network interface clobbers its input buffer when usbnet_receive() is called before the guest has a chance to empty the buffer. Then we can revert the "VLAN" flow control change which caused #2. The result is that both #1 and #2 are now fixed. Stefan Hajnoczi (3): net: clean up usbnet_receive() net: fix usbnet_receive() packet drops net: broadcast hub packets if at least one port can receive hw/usb/dev-network.c | 49 +++++++++++++++++++++++++++++++++---------------- net/hub.c | 6 +++--- 2 files changed, 36 insertions(+), 19 deletions(-) -- 1.7.10.4