Skip to content

Commit 2e0deaa

Browse files
committed
tcp: add four drop reasons to tcp_check_req()
JIRA: https://issues.redhat.com/browse/RHEL-88891 Upstream Status: linux.git Conflicts:\ - Removed parts linked to TSEcr as c10s is missing upstream commit 3ba0752 ("tcp: be less liberal in TSEcr received while in SYN_RECV state"). commit a11a791 Author: Eric Dumazet <edumazet@google.com> Date: Sat Mar 1 20:14:20 2025 +0000 tcp: add four drop reasons to tcp_check_req() Use two existing drop reasons in tcp_check_req(): - TCP_RFC7323_PAWS - TCP_OVERWINDOW Add two new ones: - TCP_RFC7323_TSECR (corresponds to LINUX_MIB_TSECRREJECTED) - TCP_LISTEN_OVERFLOW (when a listener accept queue is full) 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/20250301201424.2046477-3-edumazet@google.com Signed-off-by: Jakub Kicinski <kuba@kernel.org> Signed-off-by: Antoine Tenart <atenart@redhat.com>
1 parent 0ff8c8b commit 2e0deaa

File tree

2 files changed

+15
-1
lines changed

2 files changed

+15
-1
lines changed

include/net/dropreason-core.h

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -40,6 +40,8 @@
4040
FN(TCP_OFOMERGE) \
4141
FN(TCP_RFC7323_PAWS) \
4242
FN(TCP_RFC7323_PAWS_ACK) \
43+
FN(TCP_RFC7323_TSECR) \
44+
FN(TCP_LISTEN_OVERFLOW) \
4345
FN(TCP_OLD_SEQUENCE) \
4446
FN(TCP_INVALID_SEQUENCE) \
4547
FN(TCP_INVALID_ACK_SEQUENCE) \
@@ -281,6 +283,13 @@ enum skb_drop_reason {
281283
* Corresponds to LINUX_MIB_PAWS_OLD_ACK.
282284
*/
283285
SKB_DROP_REASON_TCP_RFC7323_PAWS_ACK,
286+
/**
287+
* @SKB_DROP_REASON_TCP_RFC7323_TSECR: PAWS check, invalid TSEcr.
288+
* Corresponds to LINUX_MIB_TSECRREJECTED.
289+
*/
290+
SKB_DROP_REASON_TCP_RFC7323_TSECR,
291+
/** @SKB_DROP_REASON_TCP_LISTEN_OVERFLOW: listener queue full. */
292+
SKB_DROP_REASON_TCP_LISTEN_OVERFLOW,
284293
/** @SKB_DROP_REASON_TCP_OLD_SEQUENCE: Old SEQ field (duplicate packet) */
285294
SKB_DROP_REASON_TCP_OLD_SEQUENCE,
286295
/** @SKB_DROP_REASON_TCP_INVALID_SEQUENCE: Not acceptable SEQ field */

net/ipv4/tcp_minisocks.c

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -800,8 +800,12 @@ struct sock *tcp_check_req(struct sock *sk, struct sk_buff *skb,
800800
LINUX_MIB_TCPACKSKIPPEDSYNRECV,
801801
&tcp_rsk(req)->last_oow_ack_time))
802802
req->rsk_ops->send_ack(sk, skb, req);
803-
if (paws_reject)
803+
if (paws_reject) {
804+
SKB_DR_SET(*drop_reason, TCP_RFC7323_PAWS);
804805
NET_INC_STATS(sock_net(sk), LINUX_MIB_PAWSESTABREJECTED);
806+
} else {
807+
SKB_DR_SET(*drop_reason, TCP_OVERWINDOW);
808+
}
805809
return NULL;
806810
}
807811

@@ -871,6 +875,7 @@ struct sock *tcp_check_req(struct sock *sk, struct sk_buff *skb,
871875
return inet_csk_complete_hashdance(sk, child, req, own_req);
872876

873877
listen_overflow:
878+
SKB_DR_SET(*drop_reason, TCP_LISTEN_OVERFLOW);
874879
if (sk != req->rsk_listener)
875880
__NET_INC_STATS(sock_net(sk), LINUX_MIB_TCPMIGRATEREQFAILURE);
876881

0 commit comments

Comments
 (0)