tcp: optimize inet_use_bhash2_on_bind()
authorEric Dumazet <edumazet@google.com>
Sun, 2 Mar 2025 12:42:35 +0000 (12:42 +0000)
committerJakub Kicinski <kuba@kernel.org>
Wed, 5 Mar 2025 01:46:26 +0000 (17:46 -0800)
There is no reason to call ipv6_addr_type().

Instead, use highly optimized ipv6_addr_any() and ipv6_addr_v4mapped().

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

index bf9ce0c..b4e514d 100644 (file)
@@ -157,12 +157,10 @@ static bool inet_use_bhash2_on_bind(const struct sock *sk)
 {
 #if IS_ENABLED(CONFIG_IPV6)
        if (sk->sk_family == AF_INET6) {
-               int addr_type = ipv6_addr_type(&sk->sk_v6_rcv_saddr);
-
-               if (addr_type == IPV6_ADDR_ANY)
+               if (ipv6_addr_any(&sk->sk_v6_rcv_saddr))
                        return false;
 
-               if (addr_type != IPV6_ADDR_MAPPED)
+               if (!ipv6_addr_v4mapped(&sk->sk_v6_rcv_saddr))
                        return true;
        }
 #endif