Linux/linux 12b0355drivers/net/ethernet/sun sungem.c

net: sungem: fix rx checksum support

After commit 88078d98d1bb ("net: pskb_trim_rcsum() and CHECKSUM_COMPLETE
are friends"), sungem owners reported the infamous "eth0: hw csum failure"
message.

CHECKSUM_COMPLETE has in fact never worked for this driver, but this
was masked by the fact that upper stacks had to strip the FCS, and
therefore skb->ip_summed was set back to CHECKSUM_NONE before
my recent change.

Driver configures a number of bytes to skip when the chip computes
the checksum, and for some reason only half of the Ethernet header
was skipped.

Then a second problem is that we should strip the FCS by default,
unless the driver is updated to eventually support NETIF_F_RXFCS in
the future.

Finally, a driver should check if NETIF_F_RXCSUM feature is enabled
or not, so that the admin can turn off rx checksum if wanted.

Many thanks to Andreas Schwab and Mathieu Malaterre for their
help in debugging this issue.

Signed-off-by: Eric Dumazet <edumazet at google.com>
Reported-by: Meelis Roos <mroos at linux.ee>
Reported-by: Mathieu Malaterre <malat at debian.org>
Reported-by: Andreas Schwab <schwab at linux-m68k.org>
Tested-by: Andreas Schwab <schwab at linux-m68k.org>
Signed-off-by: David S. Miller <davem at davemloft.net>
DeltaFile
+12-10drivers/net/ethernet/sun/sungem.c
+12-101 files

UnifiedSplitRaw