]> git.ipfire.org Git - thirdparty/kernel/linux.git/commitdiff
tcp: Call tcp_syn_ack_timeout() directly.
authorKuniyuki Iwashima <kuniyu@google.com>
Thu, 6 Nov 2025 00:32:40 +0000 (00:32 +0000)
committerJakub Kicinski <kuba@kernel.org>
Sat, 8 Nov 2025 02:05:25 +0000 (18:05 -0800)
Since DCCP has been removed, we do not need to use
request_sock_ops.syn_ack_timeout().

Let's call tcp_syn_ack_timeout() directly.

Now other function pointers of request_sock_ops are
protocol-dependent.

Signed-off-by: Kuniyuki Iwashima <kuniyu@google.com>
Reviewed-by: Eric Dumazet <edumazet@google.com>
Link: https://patch.msgid.link/20251106003357.273403-2-kuniyu@google.com
Signed-off-by: Jakub Kicinski <kuba@kernel.org>
include/net/request_sock.h
net/ipv4/inet_connection_sock.c
net/ipv4/tcp_ipv4.c
net/ipv4/tcp_timer.c
net/ipv6/tcp_ipv6.c

index cd4d4cf71d0d22bdb980f6e1cbe10e8307965b0e..9b9e04f6bb8931088d9bb2fa7d4420fecf235895 100644 (file)
@@ -36,7 +36,6 @@ struct request_sock_ops {
                                      struct sk_buff *skb,
                                      enum sk_rst_reason reason);
        void            (*destructor)(struct request_sock *req);
-       void            (*syn_ack_timeout)(const struct request_sock *req);
 };
 
 struct saved_syn {
index 3b83b66b2284cac671d326244965625c249db426..6a86c1ac301124bc2e51625f8b52e0050f4caf74 100644 (file)
@@ -1096,9 +1096,11 @@ static void reqsk_timer_handler(struct timer_list *t)
                        young <<= 1;
                }
        }
+
        syn_ack_recalc(req, max_syn_ack_retries, READ_ONCE(queue->rskq_defer_accept),
                       &expire, &resend);
-       req->rsk_ops->syn_ack_timeout(req);
+       tcp_syn_ack_timeout(req);
+
        if (!expire &&
            (!resend ||
             !tcp_rtx_synack(sk_listener, req) ||
index b7526a7888cbe296c0f4ba6350772741cfe1765b..0cfebac33a910d7f304272df65c4aa6ffd94f07a 100644 (file)
@@ -1660,7 +1660,6 @@ struct request_sock_ops tcp_request_sock_ops __read_mostly = {
        .send_ack       =       tcp_v4_reqsk_send_ack,
        .destructor     =       tcp_v4_reqsk_destructor,
        .send_reset     =       tcp_v4_send_reset,
-       .syn_ack_timeout =      tcp_syn_ack_timeout,
 };
 
 const struct tcp_request_sock_ops tcp_request_sock_ipv4_ops = {
index 2dd73a4e8e517ab46d69ab655a6b1a9cbcaf7c1e..0672c3d8f4f104e4358629ecd4039b3689d08903 100644 (file)
@@ -458,7 +458,7 @@ static void tcp_fastopen_synack_timer(struct sock *sk, struct request_sock *req)
        struct tcp_sock *tp = tcp_sk(sk);
        int max_retries;
 
-       req->rsk_ops->syn_ack_timeout(req);
+       tcp_syn_ack_timeout(req);
 
        /* Add one more retry for fastopen.
         * Paired with WRITE_ONCE() in tcp_sock_set_syncnt()
@@ -752,7 +752,6 @@ void tcp_syn_ack_timeout(const struct request_sock *req)
 
        __NET_INC_STATS(net, LINUX_MIB_TCPTIMEOUTS);
 }
-EXPORT_IPV6_MOD(tcp_syn_ack_timeout);
 
 void tcp_reset_keepalive_timer(struct sock *sk, unsigned long len)
 {
index 7df21c1cba21358b7da1a88400d998e915d0dd39..08113f43012494df04ef7c66a89169856e5c98df 100644 (file)
@@ -796,7 +796,6 @@ struct request_sock_ops tcp6_request_sock_ops __read_mostly = {
        .send_ack       =       tcp_v6_reqsk_send_ack,
        .destructor     =       tcp_v6_reqsk_destructor,
        .send_reset     =       tcp_v6_send_reset,
-       .syn_ack_timeout =      tcp_syn_ack_timeout,
 };
 
 const struct tcp_request_sock_ops tcp_request_sock_ipv6_ops = {