• H
    udp: Add lockless transmit path · 903ab86d
    Herbert Xu 提交于
    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: NHerbert Xu <herbert@gondor.apana.org.au>
    Acked-by: NEric Dumazet <eric.dumazet@gmail.com>
    Signed-off-by: NDavid S. Miller <davem@davemloft.net>
    903ab86d
udp.c 57.0 KB