Message ID | 20240219032838.91723-8-kerneljasonxing@gmail.com (mailing list archive) |
---|---|
State | Superseded |
Delegated to: | Netdev Maintainers |
Headers | show |
Series | introduce drop reasons for tcp receive path | expand |
From: Jason Xing <kerneljasonxing@gmail.com> Date: Mon, 19 Feb 2024 11:28:34 +0800 > From: Jason Xing <kernelxing@tencent.com> > > This patch does two things: > 1) add two more new reasons description was not updated since this patch was split. > 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 serie. > > Signed-off-by: Jason Xing <kernelxing@tencent.com>
On Mon, Feb 19, 2024 at 12:55 PM Kuniyuki Iwashima <kuniyu@amazon.com> wrote: > > From: Jason Xing <kerneljasonxing@gmail.com> > Date: Mon, 19 Feb 2024 11:28:34 +0800 > > From: Jason Xing <kernelxing@tencent.com> > > > > This patch does two things: > > 1) add two more new reasons > > description was not updated since this patch was split. I checked that since v3 patchset the current patch has not changed. The description from my perspective is right because it truly adds two reasons in tcp_rcv_synsent_state_process(). The first series in v4: For "patch v4 [1/5]" - "patch v4 [5/5]", they correspond to "patch v6 [1/11]" - "patch v6 [5/11]". The other series in v4: For "patch v4 [1/6]" - "patch v4 [6/6]", they correspond to "patch v6 [6/11]" - "patch v6 [11/11]". > > > > 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 serie. > > > > Signed-off-by: Jason Xing <kernelxing@tencent.com>
diff --git a/net/ipv4/tcp_input.c b/net/ipv4/tcp_input.c index 74c03f0a6c0c..83308cca1610 100644 --- a/net/ipv4/tcp_input.c +++ b/net/ipv4/tcp_input.c @@ -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 @@ static int tcp_rcv_synsent_state_process(struct sock *sk, struct sk_buff *skb, 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)