soreuseport: fast reuseport TCP socket selection
authorCraig Gallek <kraig@google.com>
Wed, 10 Feb 2016 16:50:40 +0000 (11:50 -0500)
committerDavid S. Miller <davem@davemloft.net>
Thu, 11 Feb 2016 08:54:15 +0000 (03:54 -0500)
commitc125e80b88687b25b321795457309eaaee4bf270
treed61eb6c67a62046691c8f354c0fad948ef298f99
parentfa463497679352c04d201631534955e6be66eef8
soreuseport: fast reuseport TCP socket selection

This change extends the fast SO_REUSEPORT socket lookup implemented
for UDP to TCP.  Listener sockets with SO_REUSEPORT and the same
receive address are additionally added to an array for faster
random access.  This means that only a single socket from the group
must be found in the listener list before any socket in the group can
be used to receive a packet.  Previously, every socket in the group
needed to be considered before handing off the incoming packet.

This feature also exposes the ability to use a BPF program when
selecting a socket from a reuseport group.

Signed-off-by: Craig Gallek <kraig@google.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
include/net/inet_hashtables.h
net/ipv4/inet_connection_sock.c
net/ipv4/inet_hashtables.c
net/ipv4/udp.c
net/ipv6/inet6_connection_sock.c
net/ipv6/inet6_hashtables.c