ipv6: udp: optimize unicast RX path
authorEric Dumazet <eric.dumazet@gmail.com>
Sun, 8 Nov 2009 10:18:30 +0000 (10:18 +0000)
committerDavid S. Miller <davem@davemloft.net>
Mon, 9 Nov 2009 04:53:07 +0000 (20:53 -0800)
commitfddc17defa22d8caba1cdfb2e22b50bb4b9f35c0
tree565a1232275c2abbed3d55950a73f647a66e1289
parent5051ebd275de672b807c28d93002c2fb0514a3c9
ipv6: udp: optimize unicast RX path

We first locate the (local port) hash chain head
If few sockets are in this chain, we proceed with previous lookup algo.

If too many sockets are listed, we take a look at the secondary
(port, address) hash chain.

We choose the shortest chain and proceed with a RCU lookup on the elected chain.

But, if we chose (port, address) chain, and fail to find a socket on given address,
 we must try another lookup on (port, in6addr_any) chain to find sockets not bound
to a particular IP.

-> No extra cost for typical setups, where the first lookup will probabbly
be performed.

RCU lookups everywhere, we dont acquire spinlock.

Signed-off-by: Eric Dumazet <eric.dumazet@gmail.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
net/ipv6/udp.c