From: Joanne Koong <joannelkoong@xxxxxxxxx> Date: Wed, 18 May 2022 16:19:11 -0700 > We currently have one tcp bind table (bhash) which hashes by port > number only. In the socket bind path, we check for bind conflicts by > traversing the specified port's inet_bind2_bucket while holding the > bucket's spinlock (see inet_csk_get_port() and inet_csk_bind_conflict()). > > In instances where there are tons of sockets hashed to the same port > at different addresses, checking for a bind conflict is time-intensive > and can cause softirq cpu lockups, as well as stops new tcp connections > since __inet_inherit_port() also contests for the spinlock. > > This patch proposes adding a second bind table, bhash2, that hashes by > port and ip address. Searching the bhash2 table leads to significantly > faster conflict resolution and less time holding the spinlock. > > Signed-off-by: Joanne Koong <joannelkoong@xxxxxxxxx> > Reviewed-by: Eric Dumazet <edumazet@xxxxxxxxxx> Acked-by: Kuniyuki Iwashima <kuniyu@xxxxxxxxxxxx> To maintainers: lore and patchwork seem to miss this version...? Thank you.