This patch set: - Adds support for GSO and GRO for ip6ip6 and ip4ip6 - Add support for FOU and GUE in IPv6 - Support GRE, ip6ip6 and ip4ip6 over FOU/GUE - Fixes ip6_input to deal with UDP encapsulations - Some other minor fixes
v2: - Removed a check of GSO types in MPLS - Define GSO type SKB_GSO_IPXIP6 and SKB_GSO_IPXIP4 (based on input from Alexander) - Don't define GSO types specifally for IP6IP6 and IP4IP6, above fix makes that uncessary - Don't bother clearing encapsulation flag in UDP tunnel segment (another item suggested by Alexander). v3: - Address some minor comments from Alexander v4: - Rebase on changes to fix IP TX tunnels - Fix MTU issues in ip4ip6, ip6ip6 - Add test data for above Tested: Tested a variety of case, but not the full matrix (which is quite large now). Most of the obivous cases (e.g. GRE) work fine. Still some issues probably with GSO/GRO being effective in all cases. - IPv4/GRE/GUE/IPv6 with RCO 1 TCP_STREAM 6616 Mbps 200 TCP_RR 1244043 tps 141/243/446 90/95/99% latencies 86.61% CPU utilization - IPv6/GRE/GUE/IPv6 with RCO 1 TCP_STREAM 6940 Mbps 200 TCP_RR 1270903 tps 138/236/440 90/95/99% latencies 87.51% CPU utilization - IP6IP6 1 TCP_STREAM 2576 Mbps 200 TCP_RR 498981 tps 388/498/631 90/95/99% latencies 19.75% CPU utilization (1 CPU saturated) - IP6IP6/GUE with RCO 1 TCP_STREAM 2031 Mbps 200 TCP_RR 1233818 tps 143/244/451 90/95/99% latencies 87.57 CPU utilization - IP4IP6 1 TCP_STREAM 2371 Mbps 200 TCP_RR 763774 tps 250/318/466 90/95/99% latencies 35.25% CPU utilization (1 CPU saturated) - IP4IP6/GUE with RCO 1 TCP_STREAM 2054 Mbps 200 TCP_RR 1196385 tps 148/251/460 90/95/99% latencies 87.56 CPU utilization - GRE with keyid 200 TCP_RR 744173 tps 258/332/461 90/95/99% latencies 34.59% CPU utilization (1 CPU saturated) Tom Herbert (13): gso: Remove arbitrary checks for unsupported GSO net: define gso types for IPx over IPv4 and IPv6 fou: Call setup_udp_tunnel_sock fou: Split out {fou,gue}_build_header fou: Add encap ops for IPv6 tunnels ipv6: Fix nexthdr for reinjection ipv6: Change "final" protocol processing for encapsulation fou: Support IPv6 in fou ip6_tun: Add infrastructure for doing encapsulation ip6_gre: Add support for fou/gue encapsulation ip6_tunnel: Add support for fou/gue encapsulation ip6ip6: Support for GSO/GRO ip4ip6: Support for GSO/GRO drivers/net/ethernet/broadcom/bnx2x/bnx2x_main.c | 5 +- drivers/net/ethernet/broadcom/bnxt/bnxt.c | 4 +- drivers/net/ethernet/intel/i40e/i40e_main.c | 3 +- drivers/net/ethernet/intel/i40e/i40e_txrx.c | 3 +- drivers/net/ethernet/intel/i40evf/i40e_txrx.c | 3 +- drivers/net/ethernet/intel/i40evf/i40evf_main.c | 3 +- drivers/net/ethernet/intel/ixgbe/ixgbe_main.c | 3 +- drivers/net/ethernet/intel/ixgbevf/ixgbevf_main.c | 3 +- include/linux/netdev_features.h | 12 +- include/linux/netdevice.h | 4 +- include/linux/skbuff.h | 4 +- include/net/fou.h | 10 +- include/net/inet_common.h | 5 + include/net/ip6_tunnel.h | 22 +++- net/core/ethtool.c | 4 +- net/ipv4/af_inet.c | 32 ++--- net/ipv4/fou.c | 144 +++++++++++++--------- net/ipv4/gre_offload.c | 14 --- net/ipv4/ipip.c | 2 +- net/ipv4/tcp_offload.c | 19 --- net/ipv4/udp_offload.c | 10 -- net/ipv6/Makefile | 4 +- net/ipv6/fou6.c | 140 +++++++++++++++++++++ net/ipv6/ip6_gre.c | 77 +++++++++++- net/ipv6/ip6_input.c | 24 +++- net/ipv6/ip6_offload.c | 77 ++++++++---- net/ipv6/ip6_tunnel.c | 116 +++++++++++++++-- net/ipv6/ip6_tunnel_core.c | 108 ++++++++++++++++ net/ipv6/sit.c | 4 +- net/ipv6/udp_offload.c | 13 -- net/mpls/mpls_gso.c | 9 -- net/netfilter/ipvs/ip_vs_xmit.c | 17 ++- 32 files changed, 662 insertions(+), 236 deletions(-) create mode 100644 net/ipv6/fou6.c create mode 100644 net/ipv6/ip6_tunnel_core.c -- 2.8.0.rc2