]> www.infradead.org Git - users/jedix/linux-maple.git/commit
tcp: use RCU in __inet{6}_check_established()
authorEric Dumazet <edumazet@google.com>
Sun, 2 Mar 2025 12:42:34 +0000 (12:42 +0000)
committerJakub Kicinski <kuba@kernel.org>
Wed, 5 Mar 2025 01:46:26 +0000 (17:46 -0800)
commitae9d5b19b322d4b557efda684da2f4df21670ef8
treee79540fcc50c21b6d6b9547ca2da86694719fcc1
parent7ff1c88fc89688c27f773ba956f65f0c11367269
tcp: use RCU in __inet{6}_check_established()

When __inet_hash_connect() has to try many 4-tuples before
finding an available one, we see a high spinlock cost from
__inet_check_established() and/or __inet6_check_established().

This patch adds an RCU lookup to avoid the spinlock
acquisition when the 4-tuple is found in the hash table.

Note that there are still spin_lock_bh() calls in
__inet_hash_connect() to protect inet_bind_hashbucket,
this will be fixed later in this series.

Signed-off-by: Eric Dumazet <edumazet@google.com>
Reviewed-by: Jason Xing <kerneljasonxing@gmail.com>
Tested-by: Jason Xing <kerneljasonxing@gmail.com>
Reviewed-by: Kuniyuki Iwashima <kuniyu@amazon.com>
Link: https://patch.msgid.link/20250302124237.3913746-2-edumazet@google.com
Signed-off-by: Jakub Kicinski <kuba@kernel.org>
net/ipv4/inet_hashtables.c
net/ipv6/inet6_hashtables.c