netvsc: fix incorrect receive checksum offloading
authorStephen Hemminger <sthemmin@microsoft.com>
Mon, 24 Oct 2016 04:32:47 +0000 (21:32 -0700)
committerDavid S. Miller <davem@davemloft.net>
Thu, 27 Oct 2016 03:18:36 +0000 (23:18 -0400)
commite52fed7177f74382f742c27de2cc5314790aebb6
tree735e5655df5c00b144df54885fd1a0ae419a6639
parent10df8e6152c6c400a563a673e9956320bfce1871
netvsc: fix incorrect receive checksum offloading

The Hyper-V netvsc driver was looking at the incorrect status bits
in the checksum info. It was setting the receive checksum unnecessary
flag based on the IP header checksum being correct. The checksum
flag is skb is about TCP and UDP checksum status. Because of this
bug, any packet received with bad TCP checksum would be passed
up the stack and to the application causing data corruption.
The problem is reproducible via netcat and netem.

This had a side effect of not doing receive checksum offload
on IPv6. The driver was also also always doing checksum offload
independent of the checksum setting done via ethtool.

Signed-off-by: Stephen Hemminger <sthemmin@microsoft.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
drivers/net/hyperv/netvsc_drv.c