Merge branch 'GREoIPV6'
authorDavid S. Miller <davem@davemloft.net>
Fri, 20 May 2016 22:03:26 +0000 (18:03 -0400)
committerDavid S. Miller <davem@davemloft.net>
Fri, 20 May 2016 22:03:26 +0000 (18:03 -0400)
commit911f6b1f57c48c9f379e6658e2e5198d84acdab3
tree2676cf613cb92be36942e63bb7880b78432d6a59
parent948350140ef060a42621de0de5c396807f7ec1fc
parent3ee93eaf2bbfbe0083f71a18a265d48adbd5bb27
Merge branch 'GREoIPV6'

Tom Herbert says:

====================
ipv6: Enable GUEoIPv6 and more fixes for v6 tunneling

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

v7:
  - Added skb_set_inner_ipproto to ip4ip6 and ip6ip6
  - Clarified max_headroom in ip6_tnl_xmit
  - Set features for IPv6 tunnels
  - Other cleanup suggested by Alexander
  - Above fixes throughput performance issues in ip4ip6 and ip6ip6,
    updated test results to reflect that

Tested: Various cases of IP tunnels with netperf TCP_STREAM and TCP_RR.

    - 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
5307 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
5575 Mbps
      200 TCP_RR
1233818 tps
143/244/451 90/95/99% latencies
87.57 CPU utilization

     - IP4IP6
      1 TCP_STREAM
5235 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
5337 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)
====================

Signed-off-by: David S. Miller <davem@davemloft.net>