diff options
author | Eric Dumazet <eric.dumazet@gmail.com> | 2010-11-15 19:58:26 +0000 |
---|---|---|
committer | David S. Miller <davem@davemloft.net> | 2010-11-16 11:17:43 -0800 |
commit | c31504dc0d1dc853dcee509d9999169a9097a717 (patch) | |
tree | 8ee1d5616b7140759cf742ef89cf9f7ba1c01b20 /net/ipv6/udp.c | |
parent | 213b15ca818adf7766cd7162c2159a6ecdd3bab8 (diff) | |
download | linux-stable-c31504dc0d1dc853dcee509d9999169a9097a717.tar.gz linux-stable-c31504dc0d1dc853dcee509d9999169a9097a717.tar.bz2 linux-stable-c31504dc0d1dc853dcee509d9999169a9097a717.zip |
udp: use atomic_inc_not_zero_hint
UDP sockets refcount is usually 2, unless an incoming frame is going to
be queued in receive or backlog queue.
Using atomic_inc_not_zero_hint() permits to reduce latency, because
processor issues less memory transactions.
Signed-off-by: Eric Dumazet <eric.dumazet@gmail.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'net/ipv6/udp.c')
-rw-r--r-- | net/ipv6/udp.c | 4 |
1 files changed, 2 insertions, 2 deletions
diff --git a/net/ipv6/udp.c b/net/ipv6/udp.c index 91def93bec85..b541a4e009fb 100644 --- a/net/ipv6/udp.c +++ b/net/ipv6/udp.c @@ -227,7 +227,7 @@ begin: if (result) { exact_match: - if (unlikely(!atomic_inc_not_zero(&result->sk_refcnt))) + if (unlikely(!atomic_inc_not_zero_hint(&result->sk_refcnt, 2))) result = NULL; else if (unlikely(compute_score2(result, net, saddr, sport, daddr, hnum, dif) < badness)) { @@ -294,7 +294,7 @@ begin: goto begin; if (result) { - if (unlikely(!atomic_inc_not_zero(&result->sk_refcnt))) + if (unlikely(!atomic_inc_not_zero_hint(&result->sk_refcnt, 2))) result = NULL; else if (unlikely(compute_score(result, net, hnum, saddr, sport, daddr, dport, dif) < badness)) { |