Hi Ian,
The attached patch fixes
pcnet data corruption for VMX guests as reported by you.
All the packets go through
the qemu generic packet interface to the specific device model. In this case
the device model is pcnet.
The pcnet device model
receiver is registered with it like this.
qemu_add_read_packet(nd,
pcnet_can_receive, pcnet_receive, d);
pcnet_can_receive
function is used to tell the generic qemu framework that the DM can receive
packets. It is suppose block incoming packets in the cases such as when the
pcnet driver is not yet started by the OS or pcnet device is suspended or
stopped by the OS or it is not ready to receive more packets.
When the traffic is
heavy on the DM, its receive rings can get filled up, and it will has to drop
the receiving packets. This patch detects this situation in the
pcnet_can_receive() function and avoids dropping of packets. This mechanism is
working as a bandwidth handshaking between device model and the sender. Dm is
saying send me up to the rate at which I can handle it.
Signed-Off-By: Nitin A Kamble <nitin.a.kamble@xxxxxxxxx>
Thanks & Regards,
Nitin
-----------------------------------------------------------------------------------
Open Source Technology Center, Intel Corp