]> git.dujemihanovic.xyz Git - linux.git/commitdiff
tcp: get rid of twsk_unique()
authorEric Dumazet <edumazet@google.com>
Tue, 7 May 2024 16:41:40 +0000 (16:41 +0000)
committerJakub Kicinski <kuba@kernel.org>
Fri, 10 May 2024 03:25:55 +0000 (20:25 -0700)
DCCP is going away soon, and had no twsk_unique() method.

We can directly call tcp_twsk_unique() for TCP sockets.

Signed-off-by: Eric Dumazet <edumazet@google.com>
Reviewed-by: Kuniyuki Iwashima <kuniyu@amazon.com>
Link: https://lore.kernel.org/r/20240507164140.940547-1-edumazet@google.com
Signed-off-by: Jakub Kicinski <kuba@kernel.org>
include/net/timewait_sock.h
net/ipv4/inet_hashtables.c
net/ipv4/tcp_ipv4.c
net/ipv6/inet6_hashtables.c
net/ipv6/tcp_ipv6.c

index 74d2b463cc95e61baced94ff3e6aea3913b506ee..62b3e9f2aed404ba818f4b57d7f2d3acb8ef73f2 100644 (file)
@@ -15,18 +15,9 @@ struct timewait_sock_ops {
        struct kmem_cache       *twsk_slab;
        char            *twsk_slab_name;
        unsigned int    twsk_obj_size;
-       int             (*twsk_unique)(struct sock *sk,
-                                      struct sock *sktw, void *twp);
        void            (*twsk_destructor)(struct sock *sk);
 };
 
-static inline int twsk_unique(struct sock *sk, struct sock *sktw, void *twp)
-{
-       if (sk->sk_prot->twsk_prot->twsk_unique != NULL)
-               return sk->sk_prot->twsk_prot->twsk_unique(sk, sktw, twp);
-       return 0;
-}
-
 static inline void twsk_destructor(struct sock *sk)
 {
        if (sk->sk_prot->twsk_prot->twsk_destructor != NULL)
index cf88eca5f1b40563e177c6d84dd59416c62c30e5..48d0d494185b19a5e7282ffb6b33051604c28c9f 100644 (file)
@@ -565,7 +565,8 @@ static int __inet_check_established(struct inet_timewait_death_row *death_row,
                if (likely(inet_match(net, sk2, acookie, ports, dif, sdif))) {
                        if (sk2->sk_state == TCP_TIME_WAIT) {
                                tw = inet_twsk(sk2);
-                               if (twsk_unique(sk, sk2, twp))
+                               if (sk->sk_protocol == IPPROTO_TCP &&
+                                   tcp_twsk_unique(sk, sk2, twp))
                                        break;
                        }
                        goto not_unique;
index 95e3d28b83b8909e4410648c6dbf758ecf3a88f5..108a438dc2479b85b3001bb9a49094fab7b67afd 100644 (file)
@@ -2437,7 +2437,6 @@ do_time_wait:
 
 static struct timewait_sock_ops tcp_timewait_sock_ops = {
        .twsk_obj_size  = sizeof(struct tcp_timewait_sock),
-       .twsk_unique    = tcp_twsk_unique,
        .twsk_destructor= tcp_twsk_destructor,
 };
 
index 2e81383b663b71b95719a295fd9629f1193e4225..6db71bb1cd300a9a3d91a8d771db4521978bc5d6 100644 (file)
@@ -21,6 +21,7 @@
 #include <net/secure_seq.h>
 #include <net/ip.h>
 #include <net/sock_reuseport.h>
+#include <net/tcp.h>
 
 u32 inet6_ehashfn(const struct net *net,
                  const struct in6_addr *laddr, const u16 lport,
@@ -289,7 +290,8 @@ static int __inet6_check_established(struct inet_timewait_death_row *death_row,
                                       dif, sdif))) {
                        if (sk2->sk_state == TCP_TIME_WAIT) {
                                tw = inet_twsk(sk2);
-                               if (twsk_unique(sk, sk2, twp))
+                               if (sk->sk_protocol == IPPROTO_TCP &&
+                                   tcp_twsk_unique(sk, sk2, twp))
                                        break;
                        }
                        goto not_unique;
index 37201c4fb3931d1eb93fcd6868de7167977bf0a1..7f6693e794bd011371a8a794f703192f400546e5 100644 (file)
@@ -2049,7 +2049,6 @@ void tcp_v6_early_demux(struct sk_buff *skb)
 
 static struct timewait_sock_ops tcp6_timewait_sock_ops = {
        .twsk_obj_size  = sizeof(struct tcp6_timewait_sock),
-       .twsk_unique    = tcp_twsk_unique,
        .twsk_destructor = tcp_twsk_destructor,
 };