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

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 specifically for IP6IP6 and IP4IP6, above
    fix makes that unnecessary
  - 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

v5:
  - Address feedback from Shmulik Ladkani regarding extension header
    code that does not return next header but in instead relies
    on returning value via nhoff. Solution here is to fix EH
    processing to return nexthdr value.
  - Refactored IPv4 encaps so that we won't need to create
    a ip6_tunnel_core.c when adding encap support IPv6.

v6:
  - Fix build issues with regard to new GSO constants
  - FIx MTU calculation issues ip6_tunnel.c pointed out byt ALex
  - Add encap_hlen into headroom for GREv6 to work with FOU/GUE

Tested:
   Tested a variety of case, but not the full matrix (which is quite
   large now). Most of the obvious 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 (14):
  gso: Remove arbitrary checks for unsupported GSO
  net: define gso types for IPx over IPv4 and IPv6
  ipv6: Fix nexthdr for reinjection
  ipv6: Change "final" protocol processing for encapsulation
  net: Cleanup encap items in ip_tunnels.h
  fou: Call setup_udp_tunnel_sock
  fou: Split out {fou,gue}_build_header
  fou: Support IPv6 in fou
  ip6_tun: Add infrastructure for doing encapsulation
  fou: Add encap ops for IPv6 tunnels
  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         |   5 +-
 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/igb/igb_main.c         |   3 +-
 drivers/net/ethernet/intel/igbvf/netdev.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                          |  58 ++++++++
 include/net/ip_tunnels.h                          |  76 +++++++---
 net/core/ethtool.c                                |   4 +-
 net/ipv4/af_inet.c                                |  32 ++---
 net/ipv4/fou.c                                    | 144 +++++++++++--------
 net/ipv4/gre_offload.c                            |  14 --
 net/ipv4/ip_tunnel.c                              |  45 ------
 net/ipv4/ip_tunnel_core.c                         |   9 ++
 net/ipv4/ipip.c                                   |   2 +-
 net/ipv4/tcp_offload.c                            |  19 ---
 net/ipv4/udp_offload.c                            |  10 --
 net/ipv6/Makefile                                 |   1 +
 net/ipv6/fou6.c                                   | 140 +++++++++++++++++++
 net/ipv6/ip6_gre.c                                |  79 ++++++++++-
 net/ipv6/ip6_input.c                              |  33 ++++-
 net/ipv6/ip6_offload.c                            |  77 +++++++---
 net/ipv6/ip6_tunnel.c                             | 163 ++++++++++++++++++++--
 net/ipv6/sit.c                                    |   4 +-
 net/ipv6/udp_offload.c                            |  13 --
 net/mpls/mpls_gso.c                               |  11 +-
 net/netfilter/ipvs/ip_vs_xmit.c                   |  17 +--
 36 files changed, 719 insertions(+), 301 deletions(-)
 create mode 100644 net/ipv6/fou6.c

-- 
2.8.0.rc2

Reply via email to