This patch set: - Fixes GRE6 to process translate flags correctly from configuration - 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
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/IPv6 with RCO 1 TCP_STREAM 1854 Mbps 200 TCP_RR 1233818 tps 143/244/451 90/95/99% latencies 87.57 CPU utilization - IP4IP6 1 TCP_STREAM 200 TCP_RR 763774 tps 250/318/466 90/95/99% latencies 35.25% CPU utilization (1 CPU saturated) - GRE with keyid 200 TCP_RR 744173 tps 258/332/461 90/95/99% latencies 34.59% CPU utilization (1 CPU saturated) Tom Herbert (14): gso: Remove arbitrary checks for unsupported GSO gre6: Fix flag translations udp: Don't set skb->encapsulation with RCO 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 include/linux/netdev_features.h | 8 ++- include/linux/netdevice.h | 2 + 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 | 1 + net/ipv4/af_inet.c | 30 ++------- net/ipv4/fou.c | 144 ++++++++++++++++++++++++---------------- net/ipv4/gre_offload.c | 14 ---- net/ipv4/tcp_offload.c | 19 ------ net/ipv4/udp_offload.c | 20 ++---- net/ipv6/Makefile | 4 +- net/ipv6/fou6.c | 140 ++++++++++++++++++++++++++++++++++++++ net/ipv6/ip6_gre.c | 95 +++++++++++++++++++++++--- net/ipv6/ip6_input.c | 24 +++++-- net/ipv6/ip6_offload.c | 76 +++++++++++++++------ net/ipv6/ip6_tunnel.c | 101 ++++++++++++++++++++++++++-- net/ipv6/ip6_tunnel_core.c | 108 ++++++++++++++++++++++++++++++ net/ipv6/udp_offload.c | 13 ---- 20 files changed, 652 insertions(+), 188 deletions(-) create mode 100644 net/ipv6/fou6.c create mode 100644 net/ipv6/ip6_tunnel_core.c -- 2.8.0.rc2