llc: replace the socket list with a local address based hash
authorOctavian Purdila <opurdila@ixiacom.com>
Sat, 26 Dec 2009 11:51:05 +0000 (11:51 +0000)
committerDavid S. Miller <davem@davemloft.net>
Sun, 27 Dec 2009 04:45:32 +0000 (20:45 -0800)
commit52d58aef5ee460fedd7f250f05e79081019f2c79
tree9c8d2bf8374570038820a47325a2305bcb83111d
parent6d2e3ea284463d5ab34e9cf2a41d0b8627b95d02
llc: replace the socket list with a local address based hash

For the cases where a lot of interfaces are used in conjunction with a
lot of LLC sockets bound to the same SAP, the iteration of the socket
list becomes prohibitively expensive.

Replacing the list with a a local address based hash significantly
improves the bind and listener lookup operations as well as the
datagram delivery.

Connected sockets delivery is also improved, but this patch does not
address the case where we have lots of sockets with the same local
address connected to different remote addresses.

In order to keep the socket sanity checks alive and fast a socket
counter was added to the SAP structure.

Signed-off-by: Octavian Purdila <opurdila@ixiacom.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
include/net/llc.h
net/llc/llc_conn.c
net/llc/llc_core.c
net/llc/llc_proc.c
net/llc/llc_sap.c