Tom Herbert
dfd8645ea1
vxlan: Remote checksum offload
...
Add support for remote checksum offload in VXLAN. This uses a
reserved bit to indicate that RCO is being done, and uses the low order
reserved eight bits of the VNI to hold the start and offset values in a
compressed manner.
Start is encoded in the low order seven bits of VNI. This is start >> 1
so that the checksum start offset is 0-254 using even values only.
Checksum offset (transport checksum field) is indicated in the high
order bit in the low order byte of the VNI. If the bit is set, the
checksum field is for UDP (so offset = start + 6), else checksum
field is for TCP (so offset = start + 16). Only TCP and UDP are
supported in this implementation.
Remote checksum offload for VXLAN is described in:
https://tools.ietf.org/html/draft-herbert-vxlan-rco-00
Tested by running 200 TCP_STREAM connections with VXLAN (over IPv4).
With UDP checksums and Remote Checksum Offload
IPv4
Client
11.84% CPU utilization
Server
12.96% CPU utilization
9197 Mbps
IPv6
Client
12.46% CPU utilization
Server
14.48% CPU utilization
8963 Mbps
With UDP checksums, no remote checksum offload
IPv4
Client
15.67% CPU utilization
Server
14.83% CPU utilization
9094 Mbps
IPv6
Client
16.21% CPU utilization
Server
14.32% CPU utilization
9058 Mbps
No UDP checksums
IPv4
Client
15.03% CPU utilization
Server
23.09% CPU utilization
9089 Mbps
IPv6
Client
16.18% CPU utilization
Server
26.57% CPU utilization
8954 Mbps
Signed-off-by: Tom Herbert <therbert@google.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
2015-01-14 15:20:04 -05:00
..
9p
net/9p: remove a comment about pref member which doesn't exist
2014-11-06 14:59:19 -05:00
bluetooth
Bluetooth: Introduce HCI_QUIRK_BROKEN_LOCAL_COMMANDS constant
2014-12-26 20:16:10 +02:00
caif
caif_hsi.h: Remove extern from function prototypes
2013-09-23 16:29:41 -04:00
irda
irda: Convert function pointer arrays and uses to const
2014-12-10 15:33:16 -05:00
iucv
netfilter
Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net-next
2014-12-11 14:27:06 -08:00
netns
xfrm: Do not hash socket policies
2014-11-13 11:25:03 +01:00
nfc
NFC: hci: Add specific hci macro to not create a pipe
2014-12-02 22:48:13 +01:00
phonet
sctp
switch sctp_user_addto_chunk() and sctp_datamsg_from_user() to passing iov_iter
2014-11-24 05:16:40 -05:00
tc_act
tc_vlan: fix type of tcfv_push_vid
2014-11-24 16:12:03 -05:00
6lowpan.h
ieee802154: 6lowpan: rename process_data and lowpan_process_data
2014-10-27 15:51:16 +01:00
act_api.h
net_sched: act: refuse to remove bound action outside
2014-02-12 19:23:32 -05:00
addrconf.h
Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net
2014-09-23 12:09:27 -04:00
af_ieee802154.h
ieee802154: mac802154: remove FSF address
2014-10-25 08:07:30 +02:00
af_rxrpc.h
af_rxrpc.h: Remove extern from function prototypes
2013-07-31 17:50:01 -07:00
af_unix.h
af_unix: improve STREAM behavior with fragmented memory
2013-08-10 01:16:44 -07:00
af_vsock.h
vmci_transport: switch ->enqeue_dgram, ->enqueue_stream and ->dequeue_stream to msghdr
2014-11-24 05:16:42 -05:00
ah.h
ipsec: Remove obsolete MAX_AH_AUTH_LEN
2014-09-18 10:54:36 +02:00
arp.h
arp: make arp_invalidate static
2013-12-28 17:02:46 -05:00
atmclip.h
ax25.h
ax25.h: Remove extern from function prototypes
2013-07-31 17:50:02 -07:00
ax88796.h
bond_3ad.h
net: Move bonding headers under include/net
2014-11-10 13:27:49 -05:00
bond_alb.h
net: Move bonding headers under include/net
2014-11-10 13:27:49 -05:00
bond_options.h
net: Move bonding headers under include/net
2014-11-10 13:27:49 -05:00
bonding.h
net: Move bonding headers under include/net
2014-11-10 13:27:49 -05:00
busy_poll.h
sched, net: Fixup busy_loop_us_clock()
2014-01-13 17:39:11 +01:00
cfg80211-wext.h
cfg80211.h
cfg80211: clean up beacon loss CQM event
2014-11-26 20:56:42 +01:00
cfg802154.h
nl802154: introduce support for cca settings
2014-12-19 00:19:23 +01:00
checksum.h
net: Add remcsum_adjust as common function for remote checksum offload
2014-11-26 12:25:43 -05:00
cipso_ipv4.h
cipso: cleanup cipso_v4_translate() when !CONFIG_NETLABEL
2013-12-10 17:56:54 -05:00
cls_cgroup.h
cgroup: clean up cgroup_subsys names and initialization
2014-02-08 10:36:58 -05:00
codel.h
net: use ktime_get_ns() and ktime_get_real_ns() helpers
2014-08-22 19:57:23 -07:00
compat.h
fold verify_iovec() into copy_msghdr_from_user()
2014-11-19 16:23:49 -05:00
datalink.h
net: Move prototype declaration to header file include/net/datalink.h from net/ipx/af_ipx.c
2014-02-09 17:32:50 -08:00
dcbevent.h
include/net/: Fix FSF address in file headers
2013-12-06 12:37:56 -05:00
dcbnl.h
Update setapp/getapp prototypes in dcbnl_rtnl_ops to return int instead of u8
2014-07-17 16:02:29 -07:00
dn.h
net: Move prototype declaration to header file include/net/dn.h from net/decnet/af_decnet.c
2014-02-09 17:32:49 -08:00
dn_dev.h
dn_dev: add support for IFA_FLAGS nl attribute
2013-12-10 21:50:00 -05:00
dn_fib.h
decnet (dn*.h): Remove extern from function prototypes
2013-09-20 14:49:32 -04:00
dn_neigh.h
decnet (dn*.h): Remove extern from function prototypes
2013-09-20 14:49:32 -04:00
dn_nsp.h
decnet (dn*.h): Remove extern from function prototypes
2013-09-20 14:49:32 -04:00
dn_route.h
net: Move prototype declaration to appropriate header file from decnet/af_decnet.c
2014-02-09 17:32:49 -08:00
dsa.h
net: dsa: Add support for reading switch registers with ethtool
2014-10-30 14:54:11 -04:00
dsfield.h
dst.h
xfrm: Generate queueing routes only from route lookup functions
2014-09-16 10:08:49 +02:00
dst_ops.h
percpu_counter: add @gfp to percpu_counter_init()
2014-09-08 09:51:29 +09:00
esp.h
net: move pskb_put() to core code
2013-11-07 19:28:58 -05:00
ethoc.h
net: ethoc: set up MII management bus clock
2014-02-04 20:19:51 -08:00
fib_rules.h
fib_rules.h: Remove extern from function prototypes
2013-09-20 14:49:33 -04:00
firewire.h
flow.h
ipv4, fib: pass LOOPBACK_IFINDEX instead of 0 to flowi4_iif
2014-04-16 15:05:11 -04:00
flow_keys.h
net: Add function for parsing the header length out of linear ethernet frames
2014-09-05 17:47:02 -07:00
flowcache.h
flowcache: Make flow cache name space aware
2014-02-12 07:02:11 +01:00
fou.h
ip_tunnel: Ops registration for secondary encap (fou, gue)
2014-11-12 15:01:35 -05:00
garp.h
garp.h: Remove extern from function prototypes
2013-09-20 14:49:33 -04:00
gen_stats.h
net: sched: enable per cpu qstats
2014-09-30 01:02:26 -04:00
genetlink.h
netlink/genetlink: pass network namespace to bind/unbind
2014-12-27 03:07:50 -05:00
geneve.h
geneve: Remove socket hash table.
2015-01-04 22:21:33 -05:00
gre.h
gre: Call gso_make_checksum
2014-06-04 22:46:38 -07:00
gro_cells.h
gue.h
gue: Protocol constants for remote checksum offload
2014-11-05 16:30:03 -05:00
icmp.h
icmp.h: Remove extern from function prototypes
2013-09-20 14:49:33 -04:00
ieee80211_radiotap.h
mac80211: propagate STBC / LDPC flags to radiotap
2014-02-06 09:34:58 +01:00
ieee802154_netdev.h
ieee802154: rework cca setting
2014-12-19 00:19:23 +01:00
if_inet6.h
ipv6: remove aca_lock spinlock from struct ifacaddr6
2014-10-14 13:15:15 -04:00
inet6_connection_sock.h
ipv4: add a sock pointer to ip_queue_xmit()
2014-04-15 12:58:34 -04:00
inet6_hashtables.h
ipv6: move INET6_MATCH() to include/net/inet6_hashtables.h
2014-11-05 16:59:04 -05:00
inet_common.h
net-timestamp: make tcp_recvmsg call ipv6_recv_error for AF_INET6 socks
2014-11-26 15:45:04 -05:00
inet_connection_sock.h
net: tcp: add key management to congestion control
2015-01-05 22:55:24 -05:00
inet_ecn.h
tunnel: fix RFC number in comment for INET_ECN_decapsulate()
2014-05-07 15:30:52 -04:00
inet_frag.h
percpu_counter: add @gfp to percpu_counter_init()
2014-09-08 09:51:29 +09:00
inet_hashtables.h
net: Use a more standard macro for INET_ADDR_COOKIE
2014-05-14 16:07:23 -04:00
inet_sock.h
ip: Add offset parameter to ip_cmsg_recv
2015-01-05 22:44:46 -05:00
inet_timewait_sock.h
inet: move ipv6only in sock_common
2014-07-01 23:46:21 -07:00
inetpeer.h
inet: remove dead inetpeer sequence code
2014-09-08 16:42:42 -07:00
ip.h
ip: Add offset parameter to ip_cmsg_recv
2015-01-05 22:44:46 -05:00
ip6_checksum.h
net: add gro_compute_pseudo functions
2014-08-24 18:09:23 -07:00
ip6_fib.h
net: fib6: convert cfg metric to u32 outside of table write lock
2015-01-05 22:55:24 -05:00
ip6_route.h
Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net
2014-05-24 00:32:30 -04:00
ip6_tunnel.h
ipv6: Allow sending packets through tunnels with wildcard endpoints
2014-11-06 14:19:19 -05:00
ip_fib.h
fib_trie: Push rcu_read_lock/unlock to callers
2014-12-31 18:25:54 -05:00
ip_tunnels.h
ip_tunnel: Ops registration for secondary encap (fou, gue)
2014-11-12 15:01:35 -05:00
ip_vs.h
ipvs: Clean up comment style in ip_vs.h
2014-10-02 18:30:58 +02:00
ipcomp.h
ipconfig.h
ipv6.h
drivers/net, ipv6: Select IPv6 fragment idents for virtio UFO packets
2014-10-30 20:01:18 -04:00
ipx.h
switch ipxrtr_route_packet() from iovec to msghdr
2014-11-24 04:28:49 -05:00
iw_handler.h
iw_handler.h: Remove extern from function prototypes
2013-09-21 14:01:39 -04:00
lapb.h
lapb.h: Remove extern from function prototypes
2013-09-21 14:01:38 -04:00
lib80211.h
lib80211: remove unused print_ssid()
2014-10-14 02:18:27 +02:00
llc.h
llc: make lock static
2014-01-03 20:56:48 -05:00
llc_c_ac.h
llc*.h: Remove extern from function prototypes
2013-09-21 14:01:38 -04:00
llc_c_ev.h
llc*.h: Remove extern from function prototypes
2013-09-21 14:01:38 -04:00
llc_c_st.h
llc: Make llc_conn_ev_qfyr_t function pointer arrays const
2014-12-10 15:21:24 -05:00
llc_conn.h
llc*.h: Remove extern from function prototypes
2013-09-21 14:01:38 -04:00
llc_if.h
llc*.h: Remove extern from function prototypes
2013-09-21 14:01:38 -04:00
llc_pdu.h
net: llc: fix order of evaluation in llc_conn_ac_inc_vr_by_1
2014-01-01 22:22:43 -05:00
llc_s_ac.h
llc*.h: Remove extern from function prototypes
2013-09-21 14:01:38 -04:00
llc_s_ev.h
llc*.h: Remove extern from function prototypes
2013-09-21 14:01:38 -04:00
llc_s_st.h
llc: Make llc_sap_action_t function pointer arrays const
2014-12-10 15:21:24 -05:00
llc_sap.h
llc*.h: Remove extern from function prototypes
2013-09-21 14:01:38 -04:00
mac80211.h
Revert "mac80211: Fix accounting of the tailroom-needed counter"
2015-01-05 10:33:46 +01:00
mac802154.h
ieee802154: rework cca setting
2014-12-19 00:19:23 +01:00
mip6.h
include/net/: Fix FSF address in file headers
2013-12-06 12:37:56 -05:00
mld.h
ipv6: mld: answer mldv2 queries with mldv1 reports in mldv1 fallback
2014-09-22 16:23:15 -04:00
mpls.h
openvswitch: Add basic MPLS support to kernel
2014-11-05 23:52:33 -08:00
mrp.h
Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net
2013-10-01 17:06:14 -04:00
ndisc.h
ndisc.h: Remove extern from function prototypes
2013-09-21 14:01:39 -04:00
neighbour.h
neigh: remove next ptr from struct neigh_table
2014-12-26 17:07:08 -05:00
net_namespace.h
common object embedded into various struct ....ns
2014-12-04 14:31:00 -05:00
net_ratelimit.h
netevent.h
netevent/netlink.h: Remove extern from function prototypes
2013-09-21 14:01:39 -04:00
netlabel.h
netlabel: fix the netlbl_catmap_setlong() dummy function
2014-08-07 20:55:21 -04:00
netlink.h
netlink: Warn on unordered or illegal nla_nest_cancel() or nlmsg_cancel()
2015-01-05 22:38:22 -05:00
netprio_cgroup.h
cgroup: clean up cgroup_subsys names and initialization
2014-02-08 10:36:58 -05:00
netrom.h
netrom.h: Remove extern from function prototypes
2013-09-21 14:01:39 -04:00
nexthop.h
nl802154.h
nl802154: introduce support for cca settings
2014-12-19 00:19:23 +01:00
p8022.h
p8022.h: Remove extern from function prototypes
2013-09-21 14:01:39 -04:00
ping.h
icmp: Remove some spurious dropped packet profile hits from the ICMP path
2014-11-18 15:28:28 -05:00
pkt_cls.h
net: sched: remove tcf_proto from ematch calls
2014-10-06 18:02:32 -04:00
pkt_sched.h
net: rename vlan_tx_* helpers since "tx" is misleading there
2015-01-13 17:51:08 -05:00
protocol.h
net: Eliminate no_check from protosw
2014-05-23 16:28:53 -04:00
psnap.h
psnap.h: Remove extern from function prototypes
2013-09-23 01:51:08 -04:00
raw.h
raw/rawv6.h: Remove extern from function prototypes
2013-09-23 01:51:08 -04:00
rawv6.h
raw/rawv6.h: Remove extern from function prototypes
2013-09-23 01:51:08 -04:00
red.h
reciprocal_divide: update/correction of the algorithm
2014-01-21 23:17:20 -08:00
regulatory.h
cfg80211: leave invalid channels on regdomain change
2014-11-28 14:33:41 +01:00
request_sock.h
inet: includes a sock_common in request_sock
2013-10-10 00:08:07 -04:00
rose.h
rose.h: Remove extern from function prototypes
2013-09-23 01:51:08 -04:00
route.h
ipv4: remove ip_rt_dump from route.c
2014-03-24 12:45:01 -04:00
rtnetlink.h
net: rtnetlink - make create_link take name_assign_type
2014-07-15 16:13:07 -07:00
sch_generic.h
net: sched: cls: remove unused op put from tcf_proto_ops
2014-12-09 14:49:02 -05:00
scm.h
scm.h: Remove extern from function prototypes
2013-09-23 01:51:09 -04:00
secure_seq.h
inetpeer: get rid of ip_id_count
2014-06-02 11:00:41 -07:00
slhc_vj.h
snmp.h
Merge branch 'for-3.18-consistent-ops' of git://git.kernel.org/pub/scm/linux/kernel/git/tj/percpu
2014-10-15 07:48:18 +02:00
sock.h
Merge git://git.kernel.org/pub/scm/linux/kernel/git/herbert/crypto-2.6
2014-12-13 13:33:26 -08:00
Space.h
drivers: net: Include new header file in sbni.c
2013-12-19 18:51:20 -05:00
stp.h
stp.h: Remove extern from function prototypes
2013-09-23 01:51:09 -04:00
switchdev.h
bridge: call netdev_sw_port_stp_update when bridge port STP status changes
2014-12-02 20:01:22 -08:00
tcp.h
net: tcp: add per route congestion control
2015-01-05 22:55:24 -05:00
tcp_memcontrol.h
tcp_memcontrol: Kill struct tcp_memcontrol
2013-10-21 18:43:02 -04:00
tcp_states.h
timewait_sock.h
transp_v6.h
ipv6: make IPV6_RECVPKTINFO work for ipv4 datagrams
2014-01-19 19:53:18 -08:00
tso.h
net: Add a software TSO helper API
2014-05-22 14:57:15 -04:00
udp.h
udp: Generalize skb_udp_segment
2014-10-01 21:35:51 -04:00
udp_tunnel.h
udptunnel: Add SKB_GSO_UDP_TUNNEL during gro_complete.
2014-11-10 15:09:45 -05:00
udplite.h
put iov_iter into msghdr
2014-12-09 16:29:03 -05:00
vsock_addr.h
VSOCK: Move af_vsock.h and vsock_addr.h to include/net
2013-07-27 22:14:06 -07:00
vxlan.h
vxlan: Remote checksum offload
2015-01-14 15:20:04 -05:00
wext.h
wext.h: Remove extern from function prototypes
2013-09-23 16:29:40 -04:00
wimax.h
net: treewide: Fix typo found in DocBook/networking.xml
2014-09-05 17:35:28 -07:00
x25.h
x25.h: Remove extern from function prototypes
2013-09-23 16:29:41 -04:00
x25device.h
xfrm.h
xfrm: configure policy hash table thresholds by netlink
2014-09-02 13:37:56 +02:00