linux/net
Herbert Xu 903ab86d19 udp: Add lockless transmit path
The UDP transmit path has been running under the socket lock
for a long time because of the corking feature.  This means that
transmitting to the same socket in multiple threads does not
scale at all.

However, as most users don't actually use corking, the locking
can be removed in the common case.

This patch creates a lockless fast path where corking is not used.

Please note that this does create a slight inaccuracy in the
enforcement of socket send buffer limits.  In particular, we
may exceed the socket limit by up to (number of CPUs) * (packet
size) because of the way the limit is computed.

As the primary purpose of socket buffers is to indicate congestion,
this should not be a great problem for now.

Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
Acked-by: Eric Dumazet <eric.dumazet@gmail.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
2011-03-01 12:35:42 -08:00
..
9p net: cleanup unused macros in net directory 2011-01-19 23:20:04 -08:00
802
8021q net: change netdev->features to u32 2011-01-24 15:32:47 -08:00
appletalk
atm Merge branch 'for-2.6.38' of git://git.kernel.org/pub/scm/linux/kernel/git/tj/wq 2011-01-07 16:58:04 -08:00
ax25 net: ax25: fix information leak to userland harder 2011-01-12 00:34:49 -08:00
batman-adv Merge branch 'batman-adv/next' of git://git.open-mesh.org/ecsv/linux-merge 2011-02-11 21:20:27 -08:00
bluetooth Merge ssh://master.kernel.org/pub/scm/linux/kernel/git/linville/wireless-2.6 2011-02-18 17:03:41 -05:00
bridge Merge branch 'master' of master.kernel.org:/pub/scm/linux/kernel/git/davem/net-2.6 2011-02-19 19:17:35 -08:00
caif Merge branch 'master' of master.kernel.org:/pub/scm/linux/kernel/git/davem/net-2.6 2011-02-08 17:19:01 -08:00
can can: test size of struct sockaddr in sendmsg 2011-01-15 20:56:42 -08:00
ceph Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/sage/ceph-client 2011-01-13 10:25:24 -08:00
core inet: Remove unused sk_sndmsg_* from UFO 2011-03-01 12:35:02 -08:00
dcb Don't potentially dereference NULL in net/dcb/dcbnl.c:dcbnl_getapp() 2011-02-13 11:21:14 -08:00
dccp dccp: newdp is declared/assigned but never be used 2011-02-25 14:00:21 -08:00
decnet net: Add initial_ref arg to dst_alloc(). 2011-02-17 15:44:00 -08:00
dns_resolver Net: dns_resolver: Makefile: Remove deprecated kbuild goal definitions 2010-11-22 08:16:10 -08:00
dsa module: fix missing semicolons in MODULE macro usage 2011-01-24 14:32:54 +10:30
econet econet: remove compiler warnings 2011-01-27 14:15:54 -08:00
ethernet eth: fix new kernel-doc warning 2011-01-12 19:00:40 -08:00
ieee802154 net: RCU conversion of dev_getbyhwaddr() and arp_ioctl() 2010-12-08 10:07:24 -08:00
ipv4 udp: Add lockless transmit path 2011-03-01 12:35:42 -08:00
ipv6 inet: Remove unused sk_sndmsg_* from UFO 2011-03-01 12:35:02 -08:00
ipx
irda Merge branch 'master' of master.kernel.org:/pub/scm/linux/kernel/git/davem/net-2.6 2010-12-26 22:37:05 -08:00
iucv [S390] irq: have detailed statistics for interrupt types 2011-01-05 12:47:25 +01:00
key pfkey: Use const where possible. 2011-02-25 18:07:06 -08:00
l2tp Merge branch 'master' of master.kernel.org:/pub/scm/linux/kernel/git/davem/net-2.6 2010-12-08 13:47:38 -08:00
lapb Net: lapb: Makefile: Remove deprecated kbuild goal definitions 2010-11-22 08:16:14 -08:00
llc llc: avoid skb_clone() if there is only one handler 2011-02-28 12:28:50 -08:00
mac80211 Merge branch 'master' of git://git.kernel.org/pub/scm/linux/kernel/git/linville/wireless-next-2.6 into for-davem 2011-02-22 15:10:22 -05:00
netfilter Merge branch 'master' of master.kernel.org:/pub/scm/linux/kernel/git/davem/net-2.6 2011-02-19 19:17:35 -08:00
netlabel net: kill unused macros 2010-12-19 21:59:35 -08:00
netlink Revert "netlink: test for all flags of the NLM_F_DUMP composite" 2011-01-19 13:34:20 -08:00
netrom
packet network: Allow af_packet to transmit +4 bytes for VLAN packets. 2011-02-11 21:26:32 -08:00
phonet phonet: Protect pipe_do_remove() with appropriate ifdefs. 2011-02-25 11:23:22 -08:00
rds net: cleanup unused macros in net directory 2011-01-19 23:20:04 -08:00
rfkill kconfig: rename CONFIG_EMBEDDED to CONFIG_EXPERT 2011-01-20 17:02:05 -08:00
rose ROSE: AX25: finding routes simplification 2011-02-14 13:33:49 -08:00
rxrpc rxrpc: rxrpc_workqueue isn't used during memory reclaim 2011-01-14 09:25:11 -08:00
sched sched: protocol only needed when CONFIG_NET_CLS_ACT is enabled 2011-02-25 14:00:23 -08:00
sctp net: add __rcu annotations to sk_wq and wq 2011-02-22 10:19:31 -08:00
sunrpc net: add __rcu annotations to sk_wq and wq 2011-02-22 10:19:31 -08:00
tipc tipc: Avoid reliable broadcast preparation for NACK messages 2011-02-23 18:05:23 -05:00
unix net: add __rcu annotations to sk_wq and wq 2011-02-22 10:19:31 -08:00
wanrouter net: cleanup unused macros in net directory 2011-01-19 23:20:04 -08:00
wimax
wireless Merge branch 'master' of git://git.kernel.org/pub/scm/linux/kernel/git/linville/wireless-next-2.6 2011-02-08 13:52:31 -08:00
x25 x25: Do not reference freed memory. 2011-02-09 22:36:13 -08:00
xfrm xfrm: Pass const xfrm_address_t objects to xfrm_state_lookup* and xfrm_find_acq. 2011-02-27 23:17:24 -08:00
Kconfig net: RPS: Enable hardware acceleration of RFS 2011-01-24 14:53:01 -08:00
Makefile net: Add batman-adv meshing protocol 2010-12-16 13:44:24 -08:00
TUNABLE
compat.c net: Limit socket I/O iovec total length to INT_MAX. 2010-10-28 11:47:52 -07:00
nonet.c
socket.c socket: suppress sparse warnings 2011-02-23 14:11:30 -08:00
sysctl_net.c