linux/net
Eric Dumazet 55a93b3ea7 qdisc: validate skb without holding lock
Validation of skb can be pretty expensive :

GSO segmentation and/or checksum computations.

We can do this without holding qdisc lock, so that other cpus
can queue additional packets.

Trick is that requeued packets were already validated, so we carry
a boolean so that sch_direct_xmit() can validate a fresh skb list,
or directly use an old one.

Tested on 40Gb NIC (8 TX queues) and 200 concurrent flows, 48 threads
host.

Turning TSO on or off had no effect on throughput, only few more cpu
cycles. Lock contention on qdisc lock disappeared.

Same if disabling TX checksum offload.

Signed-off-by: Eric Dumazet <edumazet@google.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
2014-10-03 15:36:11 -07:00
..
6lowpan
9p
802
8021q
appletalk
atm atm: Convert pr_warning to pr_warn 2014-09-10 12:40:10 -07:00
ax25
batman-adv
bluetooth Bluetooth: Fix re-setting RPA as expired when deferring update 2014-09-12 18:34:25 +02:00
bridge net: bridge: add a br_set_state helper function 2014-10-01 22:03:50 -04:00
caif
can
ceph libceph: do not hard code max auth ticket len 2014-09-10 20:08:36 +04:00
core qdisc: validate skb without holding lock 2014-10-03 15:36:11 -07:00
dcb
dccp net/dccp/ccid.c: add __init to ccid_activate 2014-10-01 18:33:13 -04:00
decnet
dns_resolver
dsa net: dsa: Fix build warning for !PM_SLEEP 2014-10-01 15:24:00 -04:00
ethernet
hsr
ieee802154 ieee802154: fix __init functions 2014-10-01 02:03:13 -04:00
ipv4 Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net 2014-10-02 11:25:43 -07:00
ipv6 Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net 2014-10-02 11:25:43 -07:00
ipx
irda irda: add __init to irlan_open 2014-09-30 17:08:06 -04:00
iucv iucv: Convert pr_warning to pr_warn 2014-09-10 12:40:10 -07:00
key
l2tp l2tp: Refactor l2tp core driver to make use of the common UDP tunnel functions 2014-09-19 15:57:15 -04:00
lapb
llc
mac80211 Merge tag 'master-2014-09-16' of git://git.kernel.org/pub/scm/linux/kernel/git/linville/wireless-next 2014-09-26 15:39:24 -04:00
mac802154
mpls net: Remove gso_send_check as an offload callback 2014-09-26 00:22:47 -04:00
netfilter Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net 2014-10-02 11:25:43 -07:00
netlabel
netlink
netrom
nfc
openvswitch net/openvswitch: remove dup comment in vport.h 2014-09-26 16:42:33 -04:00
packet
phonet
rds
rfkill net: rfkill: gpio: Fix clock status 2014-09-22 16:02:15 -04:00
rose
rxrpc Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net 2014-09-23 12:09:27 -04:00
sched qdisc: validate skb without holding lock 2014-10-03 15:36:11 -07:00
sctp net/ipv4: bind ip_nonlocal_bind to current netns 2014-09-09 11:27:09 -07:00
sunrpc
tipc tipc: fix sparse warnings 2014-09-10 14:00:58 -07:00
unix
vmw_vsock
wimax
wireless Merge tag 'master-2014-09-16' of git://git.kernel.org/pub/scm/linux/kernel/git/linville/wireless-next 2014-09-26 15:39:24 -04:00
x25
xfrm net: cleanup and document skb fclone layout 2014-10-01 16:34:25 -04:00
compat.c
Kconfig netfilter: bridge: build br_nf_core only if required 2014-09-30 14:07:51 -04:00
Makefile
nonet.c
socket.c Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net 2014-09-23 12:09:27 -04:00
sysctl_net.c