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>
This commit is contained in:

committed by
David S. Miller

parent
2feda34192
commit
079096f103
@@ -266,8 +266,4 @@ static inline int reqsk_queue_is_full(const struct request_sock_queue *queue)
|
||||
return reqsk_queue_len(queue) >> queue->listen_opt->max_qlen_log;
|
||||
}
|
||||
|
||||
void reqsk_queue_hash_req(struct request_sock_queue *queue,
|
||||
u32 hash, struct request_sock *req,
|
||||
unsigned long timeout);
|
||||
|
||||
#endif /* _REQUEST_SOCK_H */
|
||||
|
Reference in New Issue
Block a user