]> git.baikalelectronics.ru Git - kernel.git/commit
udp: Add lockless transmit path
authorHerbert Xu <herbert@gondor.apana.org.au>
Tue, 1 Mar 2011 02:36:48 +0000 (02:36 +0000)
committerDavid S. Miller <davem@davemloft.net>
Tue, 1 Mar 2011 20:35:42 +0000 (12:35 -0800)
commit38712ecbdfc1dd1a9603c9ee7ebd0ae074663079
tree2b73fe727bf843bf0a0629dce044da61dc9cb166
parent77879213f99ff613bba5c6b5d40dfe4aacd5ee33
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>
net/ipv4/udp.c