tcp/dccp: install syn_recv requests into ehash table
In this patch, we insert request sockets into TCP/DCCP regular ehash table (where ESTABLISHED and TIMEWAIT sockets are) instead of using the per listener hash table. ACK packets find SYN_RECV pseudo sockets without having to find and lock the listener. In nominal conditions, this halves pressure on listener lock. Note that this will allow for SO_REUSEPORT refinements, so that we can select a listener using cpu/numa affinities instead of the prior 'consistent hash', since only SYN packets will apply this selection logic. We will shrink listen_sock in the following patch to ease code review. Signed-off-by:Eric Dumazet <edumazet@google.com> Cc: Ying Cai <ycai@google.com> Cc: Willem de Bruijn <willemb@google.com> Signed-off-by:
David S. Miller <davem@davemloft.net>
Showing
- include/net/inet_connection_sock.h 0 additions, 4 deletionsinclude/net/inet_connection_sock.h
- include/net/inet_hashtables.h 1 addition, 0 deletionsinclude/net/inet_hashtables.h
- include/net/request_sock.h 0 additions, 4 deletionsinclude/net/request_sock.h
- include/net/tcp.h 0 additions, 3 deletionsinclude/net/tcp.h
- net/core/request_sock.c 1 addition, 27 deletionsnet/core/request_sock.c
- net/dccp/ipv4.c 21 additions, 43 deletionsnet/dccp/ipv4.c
- net/dccp/ipv6.c 22 additions, 50 deletionsnet/dccp/ipv6.c
- net/ipv4/inet_connection_sock.c 21 additions, 82 deletionsnet/ipv4/inet_connection_sock.c
- net/ipv4/inet_diag.c 8 additions, 88 deletionsnet/ipv4/inet_diag.c
- net/ipv4/inet_hashtables.c 12 additions, 2 deletionsnet/ipv4/inet_hashtables.c
- net/ipv4/syncookies.c 4 additions, 0 deletionsnet/ipv4/syncookies.c
- net/ipv4/tcp_input.c 1 addition, 1 deletionnet/ipv4/tcp_input.c
- net/ipv4/tcp_ipv4.c 33 additions, 84 deletionsnet/ipv4/tcp_ipv4.c
- net/ipv6/inet6_connection_sock.c 0 additions, 67 deletionsnet/ipv6/inet6_connection_sock.c
- net/ipv6/tcp_ipv6.c 36 additions, 46 deletionsnet/ipv6/tcp_ipv6.c
Loading