tcp: add more specific possible drop reasons in tcp_rcv_synsent_state_process()
authorJason Xing <kernelxing@tencent.com>
Mon, 26 Feb 2024 03:22:24 +0000 (11:22 +0800)
committerDavid S. Miller <davem@davemloft.net>
Wed, 28 Feb 2024 10:39:22 +0000 (10:39 +0000)
This patch does two things:
1) add two more new reasons
2) only change the return value(1) to various drop reason values
for the future use

For now, we still cannot trace those two reasons. We'll implement the full
function in the subsequent patch in this series.

Signed-off-by: Jason Xing <kernelxing@tencent.com>
Reviewed-by: Eric Dumazet <edumazet@google.com>
Reviewed-by: David Ahern <dsahern@kernel.org>
Reviewed-by: Kuniyuki Iwashima <kuniyu@amazon.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
net/ipv4/tcp_input.c

index 74c03f0..83308cc 100644 (file)
@@ -6361,6 +6361,7 @@ static int tcp_rcv_synsent_state_process(struct sock *sk, struct sk_buff *skb,
                                inet_csk_reset_xmit_timer(sk,
                                                ICSK_TIME_RETRANS,
                                                TCP_TIMEOUT_MIN, TCP_RTO_MAX);
+                       SKB_DR_SET(reason, TCP_INVALID_ACK_SEQUENCE);
                        goto reset_and_undo;
                }
 
@@ -6369,6 +6370,7 @@ static int tcp_rcv_synsent_state_process(struct sock *sk, struct sk_buff *skb,
                             tcp_time_stamp_ts(tp))) {
                        NET_INC_STATS(sock_net(sk),
                                        LINUX_MIB_PAWSACTIVEREJECTED);
+                       SKB_DR_SET(reason, TCP_RFC7323_PAWS);
                        goto reset_and_undo;
                }
 
@@ -6572,7 +6574,8 @@ discard_and_undo:
 reset_and_undo:
        tcp_clear_options(&tp->rx_opt);
        tp->rx_opt.mss_clamp = saved_clamp;
-       return 1;
+       /* we can reuse/return @reason to its caller to handle the exception */
+       return reason;
 }
 
 static void tcp_rcv_synrecv_state_fastopen(struct sock *sk)