This patch series enables the use of segmentation and checksum offloads with IPv6 based GRE tunnels.
In order to enable this series I had to make a change to iptunnel_handle_offloads so that it would no longer free the skb. This was necessary as there were multiple paths in the IPv6 GRE code that required the skb to still be present so it could be freed. As it turned out I believe this actually fixes a bug that was present in FOU/GUE based tunnels anyway. Below is a quick breakdown of the performance gains seen with a simple netperf test passing traffic through a ip6gretap tunnel and then an i40e interface: Throughput Throughput Local Local Result Units CPU Service Tag Util Demand % 3544.93 10^6bits/s 6.30 4.656 "before" 13081.75 10^6bits/s 3.75 0.752 "after" --- Alexander Duyck (5): ip_tunnel_core: iptunnel_handle_offloads returns int and doesn't free skb ip6gretap: Fix MTU to allow for Ethernet header ip6gre: Add support for basic offloads offloads excluding GSO GRE: Add support for GRO/GSO of IPv6 GRE traffic ip6gre: Add support for GSO drivers/net/geneve.c | 32 ++++++--------- drivers/net/vxlan.c | 6 +-- include/net/ip_tunnels.h | 2 - include/net/udp_tunnel.h | 3 - net/ipv4/fou.c | 16 ++++---- net/ipv4/gre_offload.c | 14 ++++++- net/ipv4/ip_gre.c | 20 +++------- net/ipv4/ip_tunnel_core.c | 13 ++---- net/ipv4/ipip.c | 7 +-- net/ipv6/ip6_gre.c | 81 +++++++++++++++++++++++++++------------ net/ipv6/sit.c | 14 +++---- net/netfilter/ipvs/ip_vs_xmit.c | 6 +-- 12 files changed, 116 insertions(+), 98 deletions(-) --