linux/net/ipv4
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
..
netfilter Merge branch 'master' of master.kernel.org:/pub/scm/linux/kernel/git/davem/net-2.6 2011-02-04 14:28:58 -08:00
af_inet.c Merge branch 'master' of master.kernel.org:/pub/scm/linux/kernel/git/davem/net-2.6 2011-01-31 13:13:24 -08:00
ah4.c ipsec: allow to align IPv4 AH on 32 bits 2011-02-08 14:00:40 -08:00
arp.c net: arp_ioctl() must hold RTNL 2011-01-24 13:16:16 -08:00
cipso_ipv4.c
datagram.c
devinet.c Merge branch 'master' of master.kernel.org:/pub/scm/linux/kernel/git/davem/net-2.6 2011-02-19 19:17:35 -08:00
esp4.c
fib_frontend.c ipv4: Implement __ip_dev_find using new interface address hash. 2011-02-18 12:43:09 -08:00
fib_lookup.h ipv4: Remember FIB alias list head and table in lookup results. 2011-01-31 16:10:03 -08:00
fib_rules.c ipv4: Use const'ify fib_result deep in the route call chains. 2011-02-17 15:54:42 -08:00
fib_semantics.c ipv4: fix rcu lock imbalance in fib_select_default() 2011-02-14 11:23:04 -08:00
fib_trie.c ipv4: Avoid use of signed integers in fib_trie code. 2011-02-17 15:49:26 -08:00
gre.c
icmp.c inetpeer: Move ICMP rate limiting state into inet_peer entries. 2011-02-04 15:59:53 -08:00
igmp.c
inet_connection_sock.c tcp: disallow bind() to reuse addr/port 2011-01-11 14:03:07 -08:00
inet_diag.c Revert "netlink: test for all flags of the NLM_F_DUMP composite" 2011-01-19 13:34:20 -08:00
inet_fragment.c
inet_hashtables.c
inet_lro.c
inet_timewait_sock.c tcp: fix inet_twsk_deschedule() 2011-02-19 18:59:04 -08:00
inetpeer.c inetpeer: Add redirect and PMTU discovery cached info. 2011-02-10 13:29:30 -08:00
ip_forward.c
ip_fragment.c ipv4: IP defragmentation must be ECN aware 2011-01-06 11:21:30 -08:00
ip_gre.c ip_gre: Add IPPROTO_GRE to flowi in ipgre_tunnel_xmit 2011-02-11 11:23:12 -08:00
ip_input.c netfilter: fix Kconfig dependencies 2011-01-14 13:36:42 +01:00
ip_options.c
ip_output.c inet: Add ip_make_skb and ip_finish_skb 2011-03-01 12:35:03 -08:00
ip_sockglue.c
ipcomp.c
ipconfig.c
ipip.c
ipmr.c net: Support compat SIOCGETVIFCNT ioctl in ipv4. 2011-02-03 17:24:28 -08:00
Kconfig ipv4: Remove fib_hash. 2011-02-01 15:35:25 -08:00
Makefile ipv4: Remove fib_hash. 2011-02-01 15:35:25 -08:00
netfilter.c
proc.c
protocol.c
raw.c net: Add compat ioctl support for the ipv4 multicast ioctl SIOCGETSGCNT 2011-01-30 01:14:38 -08:00
route.c Merge branch 'master' of master.kernel.org:/pub/scm/linux/kernel/git/davem/net-2.6 2011-02-19 19:17:35 -08:00
syncookies.c
sysctl_net_ipv4.c
tcp_bic.c
tcp_cong.c
tcp_cubic.c
tcp_diag.c
tcp_highspeed.c
tcp_htcp.c
tcp_hybla.c
tcp_illinois.c
tcp_input.c tcp: Increase the initial congestion window to 10. 2011-02-02 20:48:47 -08:00
tcp_ipv4.c ipv4: Rearrange how ip_route_newports() gets port keys. 2011-02-24 13:38:12 -08:00
tcp_lp.c
tcp_minisocks.c
tcp_output.c Merge branch 'for-next' of git://git.kernel.org/pub/scm/linux/kernel/git/jikos/trivial 2011-01-13 10:05:56 -08:00
tcp_probe.c
tcp_scalable.c
tcp_timer.c tcp: Remove debug macro of TCP_CHECK_TIMER 2011-02-20 11:10:14 -08:00
tcp_vegas.c
tcp_vegas.h
tcp_veno.c
tcp_westwood.c
tcp_yeah.c
tcp.c tcp: Remove debug macro of TCP_CHECK_TIMER 2011-02-20 11:10:14 -08:00
tunnel4.c
udp_impl.h
udp.c udp: Add lockless transmit path 2011-03-01 12:35:42 -08:00
udplite.c net: fix nulls list corruptions in sk_prot_alloc 2010-12-16 14:26:56 -08:00
xfrm4_input.c
xfrm4_mode_beet.c
xfrm4_mode_transport.c
xfrm4_mode_tunnel.c
xfrm4_output.c
xfrm4_policy.c xfrm: Const'ify address arguments to ->dst_lookup() 2011-02-23 23:07:38 -08:00
xfrm4_state.c xfrm: Const'ify tmpl and address arguments to ->init_temprop() 2011-02-23 23:07:37 -08:00
xfrm4_tunnel.c