In case csum offloaded packet, vmxnet3 implementation always passes an RxCompDesc with the "Checksum calculated and found correct" notification to the OS. This emulates the observed ESXi behavior.
Therefore, if packet has the NEEDS_CSUM bit set, we must calculate and place a fully computed checksum into the tcp/udp header. Otherwise, the OS driver will receive a checksum-correct indication but with the actual tcp/udp checksum field having just the pseudo header csum value. Fix, by converting partially summed packets to be fully checksummed. Shmulik Ladkani: net/vmxnet3: Refactor 'vmxnet_rx_pkt_attach_data' Dana Rubin: net/vmxnet3: Fix RX TCP/UDP checksum on partially summed packets hw/net/vmxnet3.c | 59 ++++++++++++++++++++++++++++++++++++++++++++++++++ hw/net/vmxnet_rx_pkt.c | 12 +++++++--- hw/net/vmxnet_rx_pkt.h | 11 ++++++++++ 3 files changed, 79 insertions(+), 3 deletions(-) -- 1.9.1