Lance Richardson
18767acb7b
openvswitch: maintain correct checksum state in conntrack actions
[ Upstream commit 75f01a4c9cc291ff5cb28ca1216adb163b7a20ee ]
When executing conntrack actions on skbuffs with checksum mode
CHECKSUM_COMPLETE, the checksum must be updated to account for
header pushes and pulls. Otherwise we get "hw csum failure"
logs similar to this (ICMP packet received on geneve tunnel
via ixgbe NIC):
[ 405.740065] genev_sys_6081: hw csum failure
[ 405.740106] CPU: 3 PID: 0 Comm: swapper/3 Tainted: G I 4.10.0-rc3+ #1
[ 405.740108] Call Trace:
[ 405.740110] <IRQ>
[ 405.740113] dump_stack+0x63/0x87
[ 405.740116] netdev_rx_csum_fault+0x3a/0x40
[ 405.740118] __skb_checksum_complete+0xcf/0xe0
[ 405.740120] nf_ip_checksum+0xc8/0xf0
[ 405.740124] icmp_error+0x1de/0x351 [nf_conntrack_ipv4]
[ 405.740132] nf_conntrack_in+0xe1/0x550 [nf_conntrack]
[ 405.740137] ? find_bucket.isra.2+0x62/0x70 [openvswitch]
[ 405.740143] __ovs_ct_lookup+0x95/0x980 [openvswitch]
[ 405.740145] ? netif_rx_internal+0x44/0x110
[ 405.740149] ovs_ct_execute+0x147/0x4b0 [openvswitch]
[ 405.740153] do_execute_actions+0x22e/0xa70 [openvswitch]
[ 405.740157] ovs_execute_actions+0x40/0x120 [openvswitch]
[ 405.740161] ovs_dp_process_packet+0x84/0x120 [openvswitch]
[ 405.740166] ovs_vport_receive+0x73/0xd0 [openvswitch]
[ 405.740168] ? udp_rcv+0x1a/0x20
[ 405.740170] ? ip_local_deliver_finish+0x93/0x1e0
[ 405.740172] ? ip_local_deliver+0x6f/0xe0
[ 405.740174] ? ip_rcv_finish+0x3a0/0x3a0
[ 405.740176] ? ip_rcv_finish+0xdb/0x3a0
[ 405.740177] ? ip_rcv+0x2a7/0x400
[ 405.740180] ? __netif_receive_skb_core+0x970/0xa00
[ 405.740185] netdev_frame_hook+0xd3/0x160 [openvswitch]
[ 405.740187] __netif_receive_skb_core+0x1dc/0xa00
[ 405.740194] ? ixgbe_clean_rx_irq+0x46d/0xa20 [ixgbe]
[ 405.740197] __netif_receive_skb+0x18/0x60
[ 405.740199] netif_receive_skb_internal+0x40/0xb0
[ 405.740201] napi_gro_receive+0xcd/0x120
[ 405.740204] gro_cell_poll+0x57/0x80 [geneve]
[ 405.740206] net_rx_action+0x260/0x3c0
[ 405.740209] __do_softirq+0xc9/0x28c
[ 405.740211] irq_exit+0xd9/0xf0
[ 405.740213] do_IRQ+0x51/0xd0
[ 405.740215] common_interrupt+0x93/0x93
Fixes: 7f8a436eaa ("openvswitch: Add conntrack action")
Signed-off-by: Lance Richardson <lrichard@redhat.com>
Acked-by: Pravin B Shelar <pshelar@ovn.org>
Signed-off-by: David S. Miller <davem@davemloft.net>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
|
2017-02-04 09:47:09 +01:00 |
| .. |
|
actions.c
|
openvswitch: use mpls_hdr
|
2016-10-03 02:00:22 -04:00 |
|
conntrack.c
|
openvswitch: maintain correct checksum state in conntrack actions
|
2017-02-04 09:47:09 +01:00 |
|
conntrack.h
|
openvswitch: Interface with NAT.
|
2016-03-14 23:47:29 +01:00 |
|
datapath.c
|
openvswitch: avoid resetting flow key while installing new flow.
|
2016-09-20 22:54:35 -04:00 |
|
datapath.h
|
openvswitch: Add packet truncation support.
|
2016-06-10 17:58:03 -07:00 |
|
dp_notify.c
|
openvswitch: fix hangup on vxlan/gre/geneve device deletion
|
2015-12-03 14:29:25 -05:00 |
|
flow.c
|
openvswitch: vlan: remove wrong likely statement
|
2016-10-13 10:03:23 -04:00 |
|
flow.h
|
openvswitch: use percpu flow stats
|
2016-09-18 22:14:01 -04:00 |
|
flow_netlink.c
|
openvswitch: avoid resetting flow key while installing new flow.
|
2016-09-20 22:54:35 -04:00 |
|
flow_netlink.h
|
openvswitch: avoid resetting flow key while installing new flow.
|
2016-09-20 22:54:35 -04:00 |
|
flow_table.c
|
openvswitch: use percpu flow stats
|
2016-09-18 22:14:01 -04:00 |
|
flow_table.h
|
openvswitch: Zero flows on allocation.
|
2015-09-22 17:33:41 -07:00 |
|
Kconfig
|
openvswitch: call only into reachable nf-nat code
|
2016-03-28 17:58:59 +02:00 |
|
Makefile
|
openvswitch: Remove conntrack Kconfig option.
|
2015-09-06 23:48:33 -07:00 |
|
vport-geneve.c
|
openvswitch: do not ignore netdev errors when creating tunnel vports
|
2016-08-10 23:13:23 -07:00 |
|
vport-gre.c
|
openvswitch: do not ignore netdev errors when creating tunnel vports
|
2016-08-10 23:13:23 -07:00 |
|
vport-internal_dev.c
|
openvswitch: add NETIF_F_HW_VLAN_STAG_TX to internal dev
|
2016-10-13 10:03:23 -04:00 |
|
vport-internal_dev.h
|
openvswitch: introduce rtnl ops stub
|
2014-07-01 14:40:17 -07:00 |
|
vport-netdev.c
|
net: use skb_postpush_rcsum instead of own implementations
|
2016-02-19 23:43:10 -05:00 |
|
vport-netdev.h
|
openvswitch: Use dev_queue_xmit for vport send.
|
2015-10-22 06:46:16 -07:00 |
|
vport-vxlan.c
|
openvswitch: do not ignore netdev errors when creating tunnel vports
|
2016-08-10 23:13:23 -07:00 |
|
vport.c
|
openvswitch: fix vlan subtraction from packet length
|
2016-10-13 10:03:23 -04:00 |
|
vport.h
|
net: use skb_postpush_rcsum instead of own implementations
|
2016-02-19 23:43:10 -05:00 |