summaryrefslogtreecommitdiffstats
path: root/net/ipv4
diff options
context:
space:
mode:
authorEric Dumazet2009-11-08 11:18:30 +0100
committerDavid S. Miller2009-11-09 05:53:07 +0100
commitfddc17defa22d8caba1cdfb2e22b50bb4b9f35c0 (patch)
tree565a1232275c2abbed3d55950a73f647a66e1289 /net/ipv4
parentipv4: udp: optimize unicast RX path (diff)
downloadkernel-qcow2-linux-fddc17defa22d8caba1cdfb2e22b50bb4b9f35c0.tar.gz
kernel-qcow2-linux-fddc17defa22d8caba1cdfb2e22b50bb4b9f35c0.tar.xz
kernel-qcow2-linux-fddc17defa22d8caba1cdfb2e22b50bb4b9f35c0.zip
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>
Diffstat (limited to 'net/ipv4')
0 files changed, 0 insertions, 0 deletions