linux/net/ipv6
Jesse Gross dd4fff23f0 tunnels: Don't apply GRO to multiple layers of encapsulation.
[ Upstream commit fac8e0f579 ]

When drivers express support for TSO of encapsulated packets, they
only mean that they can do it for one layer of encapsulation.
Supporting additional levels would mean updating, at a minimum,
more IP length fields and they are unaware of this.

No encapsulation device expresses support for handling offloaded
encapsulated packets, so we won't generate these types of frames
in the transmit path. However, GRO doesn't have a check for
multiple levels of encapsulation and will attempt to build them.

UDP tunnel GRO actually does prevent this situation but it only
handles multiple UDP tunnels stacked on top of each other. This
generalizes that solution to prevent any kind of tunnel stacking
that would cause problems.

Fixes: bf5a755f ("net-gre-gro: Add GRE support to the GRO stack")
Signed-off-by: Jesse Gross <jesse@kernel.org>
Signed-off-by: David S. Miller <davem@davemloft.net>
Signed-off-by: Sasha Levin <alexander.levin@verizon.com>
History 2017-01-15 09:49:53 -05:00
..
netfilter netfilter: x_tables: speed up jump target validation 2016-08-03 11:34:46 -04:00
addrconf.c ipv6: addrconf: fix dev refcont leak when DAD failed 2016-10-05 22:40:20 -04:00
addrconf_core.c ipv6: remove rt6i_genid 2014-09-30 14:00:48 -04:00
addrlabel.c ipv6/addrlabel: fix ip6addrlbl_get() 2016-02-15 15:42:42 -05:00
af_inet6.c net: add validation for the socket syscall protocol argument 2016-01-15 18:41:51 -05:00
ah6.c ipsec: Remove obsolete MAX_AH_AUTH_LEN 2014-09-18 10:54:36 +02:00
anycast.c ipv6: remove aca_lock spinlock from struct ifacaddr6 2014-10-14 13:15:15 -04:00
datagram.c ipv6: add complete rcu protection around np->opt 2015-12-14 12:19:26 -05:00
esp6.c ipv6: White-space cleansing : Structure layouts 2014-08-24 22:37:52 -07:00
exthdrs.c ipv6: add complete rcu protection around np->opt 2015-12-14 12:19:26 -05:00
exthdrs_core.c ipv6: re-enable fragment header matching in ipv6_find_hdr 2016-07-12 08:47:30 -04:00
exthdrs_offload.c ipv6: fix exthdrs offload registration in out_rt path 2015-10-27 09:33:00 -04:00
fib6_rules.c ipv6: fix backtracking for throw routes 2015-03-24 08:22:21 -04:00
icmp.c ipv6: Do not warn for informational ICMP messages, regardless of type. 2014-10-07 16:33:53 -04:00
inet6_connection_sock.c ipv6: add complete rcu protection around np->opt 2015-12-14 12:19:26 -05:00
inet6_hashtables.c ipv6: White-space cleansing : gaps between function and symbol export 2014-08-24 22:37:52 -07:00
ip6_checksum.c udp: Generic functions to set checksum 2014-06-04 22:46:38 -07:00
ip6_fib.c ipv6: replacing a rt6_info needs to purge possible propagated rt6_infos too 2015-02-26 17:49:01 -08:00
ip6_flowlabel.c ipv6: White-space cleansing : gaps between function and symbol export 2014-08-24 22:37:52 -07:00
ip6_gre.c Correct backport for ip6_gre: release cached dst on tunnel removal 2016-03-14 10:07:28 -04:00
ip6_icmp.c ipv6: White-space cleansing : Line Layouts 2014-08-24 22:37:52 -07:00
ip6_input.c ipv6: Make MLD packets to only be processed locally 2015-09-27 12:18:54 -04:00
ip6_offload.c tunnels: Don't apply GRO to multiple layers of encapsulation. 2017-01-15 09:49:53 -05:00
ip6_offload.h ipv6: Pull IPv6 GSO registration out of the module 2012-11-15 17:39:24 -05:00
ip6_output.c ipv6: drop frames with attached skb->sk in forwarding 2016-03-14 16:55:13 -04:00
ip6_tunnel.c ip6_tunnel: set rtnl_link_ops before calling register_netdevice 2016-07-12 08:47:43 -04:00
ip6_udp_tunnel.c ip6_udp_tunnel: Fix checksum calculation 2014-11-25 14:12:12 -05:00
ip6_vti.c ip_vti/ip6_vti: Preserve skb->mark after rcv_cb call 2015-08-27 13:26:14 -04:00
ip6mr.c net: ip6mr: fix static mfc/dev leaks on table destruction 2015-12-14 12:19:25 -05:00
ipcomp6.c ipv6: White-space cleansing : Structure layouts 2014-08-24 22:37:52 -07:00
ipv6_sockglue.c ipv6: add complete rcu protection around np->opt 2015-12-14 12:19:26 -05:00
Kconfig ip6_vti: Fix build when NET_IP_TUNNEL is not set. 2014-02-20 14:29:49 +01:00
Makefile udp_tunnel: Only build ip6_udp_tunnel.c when IPV6 is selected 2014-09-19 22:05:28 -04:00
mcast.c snmp: Remove duplicate OUTMCAST stat increment 2015-12-14 12:19:23 -05:00
mip6.c ipv6: White-space cleansing : Structure layouts 2014-08-24 22:37:52 -07:00
ndisc.c ipv6: Don't reduce hop limit for an interface 2015-04-27 16:48:25 -04:00
netfilter.c netfilter: Fix potential use after free in ip6_route_me_harder() 2014-05-09 02:36:39 +02:00
output_core.c drivers/net, ipv6: Select IPv6 fragment idents for virtio UFO packets 2014-10-30 20:01:18 -04:00
ping.c net: ping: Return EAFNOSUPPORT when appropriate. 2015-03-14 15:37:14 -04:00
proc.c ipv6: White-space cleansing : Line Layouts 2014-08-24 22:37:52 -07:00
protocol.c net: Export inet_offloads and inet6_offloads 2014-09-19 17:15:31 -04:00
raw.c ipv6: add complete rcu protection around np->opt 2015-12-14 12:19:26 -05:00
reassembly.c ipv6: distinguish frag queues by device for multicast and link-local packets 2015-12-14 12:19:26 -05:00
route.c ipv6: fix ipv6_cow_metrics for non DST_HOST case 2015-03-14 15:37:10 -04:00
sit.c sit: fix sit0 percpu double allocations 2015-12-14 12:17:19 -05:00
syncookies.c ipv6: add complete rcu protection around np->opt 2015-12-14 12:19:26 -05:00
sysctl_net_ipv6.c ipv6: add sysctl_mld_qrv to configure query robustness variable 2014-09-04 22:26:14 -07:00
tcp_ipv6.c tcp: record TLP and ER timer stats in v6 stats 2016-07-12 08:48:22 -04:00
tcpv6_offload.c net: Remove gso_send_check as an offload callback 2014-09-26 00:22:47 -04:00
tunnel6.c ipv6: White-space cleansing : gaps between function and symbol export 2014-08-24 22:37:52 -07:00
udp.c udp: properly support MSG_PEEK with truncated buffers 2016-11-19 10:15:10 -05:00
udp_impl.h net: ipv4/ipv6: Remove extern from function prototypes 2013-10-19 19:12:11 -04:00
udp_offload.c fou: eliminate IPv4,v6 specific GRO functions 2014-10-03 16:53:32 -07:00
udplite.c net: Eliminate no_check from protosw 2014-05-23 16:28:53 -04:00
xfrm6_input.c ipv6: White-space cleansing : gaps between function and symbol export 2014-08-24 22:37:52 -07:00
xfrm6_mode_beet.c ipsec: be careful of non existing mac headers 2012-02-23 16:50:45 -05:00
xfrm6_mode_ro.c ipv4/ipv6: Fix FSF address in file headers 2013-12-06 12:37:56 -05:00
xfrm6_mode_transport.c [IPSEC]: Use IPv6 calling convention as the convention for x->mode->output 2007-10-10 16:55:54 -07:00
xfrm6_mode_tunnel.c ipv6: update skb->csum when CE mark is propagated 2016-02-15 15:42:44 -05:00
xfrm6_output.c ipv6: White-space cleansing : gaps between function and symbol export 2014-08-24 22:37:52 -07:00
xfrm6_policy.c xfrm: dst_entries_init() per-net dst_ops 2016-02-15 15:42:46 -05:00
xfrm6_protocol.c xfrm6: Properly handle unsupported protocols 2014-05-06 07:08:38 +02:00
xfrm6_state.c ipv6: White-space cleansing : Line Layouts 2014-08-24 22:37:52 -07:00
xfrm6_tunnel.c ipv6: White-space cleansing : gaps between function and symbol export 2014-08-24 22:37:52 -07:00