net: aquantia: tcp checksum 0xffff being handled incorrectly
authorNikita Danilov <ndanilov@aquantia.com>
Sat, 25 May 2019 09:58:05 +0000 (09:58 +0000)
committerDavid S. Miller <davem@davemloft.net>
Mon, 27 May 2019 17:24:14 +0000 (10:24 -0700)
commit76f254d4afe2f9c5860922d5304821b4ef05b712
tree32ba0ea6d3fc6f1b3887e463bc1cf096fcfa7049
parenteaeb3b7494ba9159323814a8ce8af06a9277d99b
net: aquantia: tcp checksum 0xffff being handled incorrectly

Thats a known quirk in windows tcp stack it can produce 0xffff checksum.
Thats incorrect but it is.

Atlantic HW with LRO enabled handles that incorrectly and changes csum to
0xfffe - but indicates that csum is invalid. This causes driver to pass
packet to linux networking stack with CSUM_NONE, stack eventually drops
the packet.

There is a quirk in atlantic HW to enable correct processing of
0xffff incorrect csum. Enable it.

The visible bug is that windows link partner with software generated csums
caused TCP connection to be unstable since all packets that csum value
are dropped.

Reported-by: Dmitry Bezrukov <dmitry.bezrukov@aquantia.com>
Signed-off-by: Nikita Danilov <ndanilov@aquantia.com>
Signed-off-by: Igor Russkikh <igor.russkikh@aquantia.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
drivers/net/ethernet/aquantia/atlantic/hw_atl/hw_atl_b0.c