This patch set adds a 2nd listener hashtable. It is to resolve the performance issue when a process is listening at many IP addresses with the same port (e.g. [IP1]:443, [IP2]:443... [IPN]:443)
v2: - Move the new lhash2 and lhash2_mask before the existing listening_hash to avoid adding another cacheline to inet_hashinfo (Suggested by Eric Dumazet, Thanks!) - I take this chance to plug an existing 4 bytes hole while adding 'unsigned int lhash2_mask'. - Add some comments about lhash2 in inet_hashtables.h Martin KaFai Lau (4): inet: Add a count to struct inet_listen_hashbucket udp: Move udp[46]_portaddr_hash() to net/ip[v6].h inet: Add a 2nd listener hashtable (port+addr) tcp: Enable 2nd listener hashtable in TCP include/net/inet_connection_sock.h | 2 + include/net/inet_hashtables.h | 29 +++++-- include/net/ip.h | 9 ++ include/net/ipv6.h | 17 ++++ net/ipv4/inet_hashtables.c | 173 +++++++++++++++++++++++++++++++++++-- net/ipv4/tcp.c | 3 + net/ipv4/udp.c | 22 ++--- net/ipv6/inet6_hashtables.c | 66 ++++++++++++++ net/ipv6/udp.c | 32 ++----- 9 files changed, 301 insertions(+), 52 deletions(-) -- 2.9.5