linux/net
Eric Dumazet 5051ebd275 ipv4: 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 added in previous patch.

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, INADDR_ANY) chain to find socket 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>
2009-11-08 20:53:07 -08:00
..
9p virtio: add virtio IDs file 2009-09-23 22:26:32 +09:30
802 net: remove COMPAT_NET_DEV_OPS 2009-05-25 01:53:53 -07:00
8021q net: Support specifying the network namespace upon device creation. 2009-11-08 00:53:51 -08:00
appletalk net/appletalk: using compat_ptr needs inclusion of linux/compat.h 2009-11-08 20:41:03 -08:00
atm net: pass kern to net_proto_family create function 2009-11-05 22:18:14 -08:00
ax25 net: pass kern to net_proto_family create function 2009-11-05 22:18:14 -08:00
bluetooth net: check kern before calling security subsystem 2009-11-05 22:18:18 -08:00
bridge Merge branch 'master' of master.kernel.org:/pub/scm/linux/kernel/git/davem/net-2.6 2009-11-06 00:55:55 -08:00
can net: pass kern to net_proto_family create function 2009-11-05 22:18:14 -08:00
core net: Support specifying the network namespace upon device creation. 2009-11-08 00:53:51 -08:00
dcb net: fix double skb free in dcbnl 2009-09-26 20:16:15 -07:00
dccp net: drop capability from protocol definitions 2009-11-05 21:40:17 -08:00
decnet Merge branch 'master' of master.kernel.org:/pub/scm/linux/kernel/git/davem/net-2.6 2009-11-06 00:55:55 -08:00
dsa netdev: convert pseudo-devices to netdev_tx_t 2009-09-01 01:13:07 -07:00
econet net: pass kern to net_proto_family create function 2009-11-05 22:18:14 -08:00
ethernet net: remove COMPAT_NET_DEV_OPS 2009-05-25 01:53:53 -07:00
ieee802154 Merge branch 'for-next' of git://git.kernel.org/pub/scm/linux/kernel/git/lowpan/lowpan 2009-11-06 17:57:51 -08:00
ipv4 ipv4: udp: optimize unicast RX path 2009-11-08 20:53:07 -08:00
ipv6 udp: split sk_hash into two u16 hashes 2009-11-08 20:53:05 -08:00
ipx net/ipx: push down BKL into a ipx_dgram_ops 2009-11-07 00:46:39 -08:00
irda net/irda: push BKL into proto_ops 2009-11-07 00:46:39 -08:00
iucv net: pass kern to net_proto_family create function 2009-11-05 22:18:14 -08:00
key net: pass kern to net_proto_family create function 2009-11-05 22:18:14 -08:00
lapb net: remove NET_RX_BAD and NET_RX_CN* defines 2009-07-05 19:15:35 -07:00
llc net: pass kern to net_proto_family create function 2009-11-05 22:18:14 -08:00
mac80211 Merge branch 'master' of master.kernel.org:/pub/scm/linux/kernel/git/davem/net-2.6 2009-11-06 00:55:55 -08:00
netfilter Merge branch 'master' of master.kernel.org:/pub/scm/linux/kernel/git/davem/net-2.6 2009-11-06 00:55:55 -08:00
netlabel netlabel: remove dev_put() calls 2009-11-05 22:34:18 -08:00
netlink net: pass kern to net_proto_family create function 2009-11-05 22:18:14 -08:00
netrom net: pass kern to net_proto_family create function 2009-11-05 22:18:14 -08:00
packet net: pass kern to net_proto_family create function 2009-11-05 22:18:14 -08:00
phonet net: pass kern to net_proto_family create function 2009-11-05 22:18:14 -08:00
rds net: pass kern to net_proto_family create function 2009-11-05 22:18:14 -08:00
rfkill headers: remove sched.h from poll.h 2009-10-04 15:05:10 -07:00
rose Merge branch 'master' of master.kernel.org:/pub/scm/linux/kernel/git/davem/net-2.6 2009-11-06 00:55:55 -08:00
rxrpc net: pass kern to net_proto_family create function 2009-11-05 22:18:14 -08:00
sched net_cls: Use __dev_get_by_index() 2009-11-05 22:34:21 -08:00
sctp sctp: ipv6: avoid touching device refcount 2009-11-05 22:34:21 -08:00
sunrpc Merge branch 'master' of master.kernel.org:/pub/scm/linux/kernel/git/davem/net-2.6 2009-11-06 00:55:55 -08:00
tipc net: pass kern to net_proto_family create function 2009-11-05 22:18:14 -08:00
unix net: pass kern to net_proto_family create function 2009-11-05 22:18:14 -08:00
wanrouter headers: smp_lock.h redux 2009-07-12 12:22:34 -07:00
wimax wimax: allow WIMAX_RF_QUERY calls when state is still uninitialized 2009-10-19 15:56:14 +09:00
wireless Merge branch 'master' of master.kernel.org:/pub/scm/linux/kernel/git/davem/net-2.6 2009-11-06 00:55:55 -08:00
x25 net/x25: push BKL usage into x25_proto 2009-11-07 00:46:40 -08:00
xfrm xfrm: remove skb_icv_walk 2009-10-18 21:32:01 -07:00
compat.c net: Cleanup redundant tests on unsigned 2009-10-29 01:39:54 -07:00
Kconfig net/compat/wext: send different messages to compat tasks 2009-07-15 08:53:39 -07:00
Makefile net: remove redundant sched/ in net/Makefile 2009-07-12 20:11:14 -07:00
nonet.c
socket.c net, compat_ioctl: handle more ioctls correctly 2009-11-06 23:11:15 -08:00
sysctl_net.c net: sysctl_net - use net_eq to compare nets 2009-03-16 16:23:30 +01:00
TUNABLE