linux/drivers/net/ethernet/broadcom
Eric Dumazet d6cb3e4138 bnx2x: fix checksum validation
bnx2x driver incorrectly sets ip_summed to CHECKSUM_UNNECESSARY on
encapsulated segments. TCP stack happily accepts frames with bad
checksums, if they are inside a GRE or IPIP encapsulation.

Our understanding is that if no IP or L4 csum validation was done by the
hardware, we should leave ip_summed as is (CHECKSUM_NONE), since
hardware doesn't provide CHECKSUM_COMPLETE support in its cqe.

Then, if IP/L4 checksumming was done by the hardware, set
CHECKSUM_UNNECESSARY if no error was flagged.

Patch based on findings and analysis from Robert Evans

Signed-off-by: Eric Dumazet <edumazet@google.com>
Cc: Eilon Greenstein <eilong@broadcom.com>
Cc: Yaniv Rosner <yanivr@broadcom.com>
Cc: Merav Sicron <meravs@broadcom.com>
Cc: Tom Herbert <therbert@google.com>
Cc: Robert Evans <evansr@google.com>
Cc: Willem de Bruijn <willemb@google.com>
Acked-by: Eilon Greenstein <eilong@broadcom.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
2012-06-13 15:58:53 -07:00
..
bnx2x bnx2x: fix checksum validation 2012-06-13 15:58:53 -07:00
Kconfig
Makefile
b44.c Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net 2012-02-26 21:55:51 -05:00
b44.h
bcm63xx_enet.c bcm63xx-enet: fix PHY name to match MDIO bus name 2012-02-13 16:04:08 -05:00
bcm63xx_enet.h
bnx2.c net: allow skb->head to be a page fragment 2012-04-30 21:35:11 -04:00
bnx2.h bnx2: Add support for ethtool --show-channels|--set-channels 2012-02-05 22:42:00 -05:00
bnx2_fw.h
cnic.c cnic: Fix parity error code conflict 2012-03-21 21:57:36 -04:00
cnic.h
cnic_defs.h cnic: Fix parity error code conflict 2012-03-21 21:57:36 -04:00
cnic_if.h cnic: Fix parity error code conflict 2012-03-21 21:57:36 -04:00
sb1250-mac.c drivers/net: Remove alloc_etherdev error messages 2012-01-31 16:20:48 -05:00
tg3.c tg3: Apply short DMA frag workaround to 5906 2012-06-11 16:55:10 -07:00
tg3.h tg3: use netdev_alloc_frag() API 2012-05-19 04:02:12 -04:00