linux/drivers/net/ethernet/cisco/enic
Govindarajulu Varadarajan 17e96834fd enic: fix rx skb checksum
Hardware always provides compliment of IP pseudo checksum. Stack expects
whole packet checksum without pseudo checksum if CHECKSUM_COMPLETE is set.

This causes checksum error in nf & ovs.

kernel: qg-19546f09-f2: hw csum failure
kernel: CPU: 9 PID: 0 Comm: swapper/9 Tainted: GF          O--------------   3.10.0-123.8.1.el7.x86_64 #1
kernel: Hardware name: Cisco Systems Inc UCSB-B200-M3/UCSB-B200-M3, BIOS B200M3.2.2.3.0.080820141339 08/08/2014
kernel: ffff881218f40000 df68243feb35e3a8 ffff881237a43ab8 ffffffff815e237b
kernel: ffff881237a43ad0 ffffffff814cd4ca ffff8829ec71eb00 ffff881237a43af0
kernel: ffffffff814c6232 0000000000000286 ffff8829ec71eb00 ffff881237a43b00
kernel: Call Trace:
kernel: <IRQ>  [<ffffffff815e237b>] dump_stack+0x19/0x1b
kernel: [<ffffffff814cd4ca>] netdev_rx_csum_fault+0x3a/0x40
kernel: [<ffffffff814c6232>] __skb_checksum_complete_head+0x62/0x70
kernel: [<ffffffff814c6251>] __skb_checksum_complete+0x11/0x20
kernel: [<ffffffff8155a20c>] nf_ip_checksum+0xcc/0x100
kernel: [<ffffffffa049edc7>] icmp_error+0x1f7/0x35c [nf_conntrack_ipv4]
kernel: [<ffffffff814cf419>] ? netif_rx+0xb9/0x1d0
kernel: [<ffffffffa040eb7b>] ? internal_dev_recv+0xdb/0x130 [openvswitch]
kernel: [<ffffffffa04c8330>] nf_conntrack_in+0xf0/0xa80 [nf_conntrack]
kernel: [<ffffffff81509380>] ? inet_del_offload+0x40/0x40
kernel: [<ffffffffa049e302>] ipv4_conntrack_in+0x22/0x30 [nf_conntrack_ipv4]
kernel: [<ffffffff815005ca>] nf_iterate+0xaa/0xc0
kernel: [<ffffffff81509380>] ? inet_del_offload+0x40/0x40
kernel: [<ffffffff81500664>] nf_hook_slow+0x84/0x140
kernel: [<ffffffff81509380>] ? inet_del_offload+0x40/0x40
kernel: [<ffffffff81509dd4>] ip_rcv+0x344/0x380

Hardware verifies IP & tcp/udp header checksum but does not provide payload
checksum, use CHECKSUM_UNNECESSARY. Set it only if its valid IP tcp/udp packet.

Cc: Jiri Benc <jbenc@redhat.com>
Cc: Stefan Assmann <sassmann@redhat.com>
Reported-by: Sunil Choudhary <schoudha@redhat.com>
Signed-off-by: Govindarajulu Varadarajan <_govind@gmx.com>
Reviewed-by: Jiri Benc <jbenc@redhat.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
2014-12-19 15:45:28 -05:00
..
cq_desc.h
cq_enet_desc.h
enic_api.c enic: fix lockdep around devcmd_lock 2014-06-23 14:32:19 -07:00
enic_api.h drivers/net: enic: Add an interface for USNIC to interact with firmware 2013-08-20 13:41:01 -07:00
enic_clsf.c enic: fix possible deadlock in enic_stop/ enic_rfs_flw_tbl_free 2014-10-21 15:24:25 -04:00
enic_clsf.h enic: Add ethtool support to show classifier filters added by the driver 2014-07-21 20:22:46 -07:00
enic_dev.c enic: fix lockdep around devcmd_lock 2014-06-23 14:32:19 -07:00
enic_dev.h enic: fix lockdep around devcmd_lock 2014-06-23 14:32:19 -07:00
enic_ethtool.c enic: add support for set/get rss hash key 2014-12-10 14:41:48 -05:00
enic_main.c enic: fix rx skb checksum 2014-12-19 15:45:28 -05:00
enic_pp.c net: enic: slight optimization of addr compare 2013-12-31 16:48:31 -05:00
enic_pp.h
enic_res.c enic: Add Accelerated RFS support 2014-06-23 14:32:19 -07:00
enic_res.h drivers/net: enic: Adding support for Cisco Low Latency NIC 2013-08-20 13:41:01 -07:00
enic.h enic: add support for set/get rss hash key 2014-12-10 14:41:48 -05:00
Kconfig
Makefile enic: devcmd for adding IP 5 tuple hardware filters 2014-06-23 14:32:19 -07:00
rq_enet_desc.h
vnic_cq.c
vnic_cq.h enic: Add support for adaptive interrupt coalescing 2014-05-21 17:04:13 -04:00
vnic_dev.c drivers/net: Convert remaining uses of pr_warning to pr_warn 2014-09-09 20:37:08 -07:00
vnic_dev.h enic: devcmd for adding IP 5 tuple hardware filters 2014-06-23 14:32:19 -07:00
vnic_devcmd.h enic: devcmd for adding IP 5 tuple hardware filters 2014-06-23 14:32:19 -07:00
vnic_enet.h enic: Add Accelerated RFS support 2014-06-23 14:32:19 -07:00
vnic_intr.c
vnic_intr.h
vnic_nic.h
vnic_resource.h
vnic_rq.c drivers/net: enic: Adding support for Cisco Low Latency NIC 2013-08-20 13:41:01 -07:00
vnic_rq.h enic: add low latency socket busy_poll support 2014-06-23 14:32:19 -07:00
vnic_rss.h enic: use netdev_rss_key_fill() helper 2014-11-23 21:01:42 -05:00
vnic_stats.h
vnic_vic.c
vnic_vic.h
vnic_wq.c drivers/net: enic: Adding support for Cisco Low Latency NIC 2013-08-20 13:41:01 -07:00
vnic_wq.h enic: support skb->xmit_more 2014-11-21 12:17:54 -05:00
wq_enet_desc.h