Skip to content

Commit 2426af7

Browse files
committed
tcp: add LINUX_MIB_PAWS_TW_REJECTED counter
JIRA: https://issues.redhat.com/browse/RHEL-88890 Upstream Status: net-next.git Conflicts:\ - Context differences in the documentation due to missing upstream commits 54b771e ("doc: net: Fix .rst rendering of net_cachelines pages") and 3ba0752 ("tcp: be less liberal in TSEcr received while in SYN_RECV state") in c9s. commit c449d5f Author: Jiayuan Chen <jiayuan.chen@linux.dev> Date: Wed Apr 9 19:26:05 2025 +0800 tcp: add LINUX_MIB_PAWS_TW_REJECTED counter When TCP is in TIME_WAIT state, PAWS verification uses LINUX_PAWSESTABREJECTED, which is ambiguous and cannot be distinguished from other PAWS verification processes. We added a new counter, like the existing PAWS_OLD_ACK one. Also we update the doc with previously missing PAWS_OLD_ACK. usage: ''' nstat -az | grep PAWSTimewait TcpExtPAWSTimewait 1 0.0 ''' Suggested-by: Eric Dumazet <edumazet@google.com> Signed-off-by: Jiayuan Chen <jiayuan.chen@linux.dev> Reviewed-by: Eric Dumazet <edumazet@google.com> Link: https://patch.msgid.link/20250409112614.16153-3-jiayuan.chen@linux.dev Signed-off-by: Jakub Kicinski <kuba@kernel.org> Signed-off-by: Antoine Tenart <atenart@redhat.com>
1 parent e7d4641 commit 2426af7

File tree

5 files changed

+6
-1
lines changed

5 files changed

+6
-1
lines changed

Documentation/networking/net_cachelines/snmp.rst

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -35,6 +35,8 @@ unsigned_long LINUX_MIB_TIMEWAITRECYCLED
3535
unsigned_long LINUX_MIB_TIMEWAITKILLED
3636
unsigned_long LINUX_MIB_PAWSACTIVEREJECTED
3737
unsigned_long LINUX_MIB_PAWSESTABREJECTED
38+
unsigned_long LINUX_MIB_PAWS_OLD_ACK
39+
unsigned_long LINUX_MIB_PAWS_TW_REJECTED
3840
unsigned_long LINUX_MIB_DELAYEDACKLOST
3941
unsigned_long LINUX_MIB_LISTENOVERFLOWS
4042
unsigned_long LINUX_MIB_LISTENDROPS

include/net/dropreason-core.h

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -245,6 +245,7 @@ enum skb_drop_reason {
245245
/**
246246
* @SKB_DROP_REASON_TCP_RFC7323_TW_PAWS: PAWS check, socket is in
247247
* TIME_WAIT state.
248+
* Corresponds to LINUX_MIB_PAWS_TW_REJECTED.
248249
*/
249250
SKB_DROP_REASON_TCP_RFC7323_TW_PAWS,
250251
/**

include/uapi/linux/snmp.h

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -187,6 +187,7 @@ enum
187187
LINUX_MIB_PAWSACTIVEREJECTED, /* PAWSActiveRejected */
188188
LINUX_MIB_PAWSESTABREJECTED, /* PAWSEstabRejected */
189189
LINUX_MIB_PAWS_OLD_ACK, /* PAWSOldAck */
190+
LINUX_MIB_PAWS_TW_REJECTED, /* PAWSTimewait */
190191
LINUX_MIB_DELAYEDACKS, /* DelayedACKs */
191192
LINUX_MIB_DELAYEDACKLOCKED, /* DelayedACKLocked */
192193
LINUX_MIB_DELAYEDACKLOST, /* DelayedACKLost */

net/ipv4/proc.c

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -189,6 +189,7 @@ static const struct snmp_mib snmp4_net_list[] = {
189189
SNMP_MIB_ITEM("PAWSActive", LINUX_MIB_PAWSACTIVEREJECTED),
190190
SNMP_MIB_ITEM("PAWSEstab", LINUX_MIB_PAWSESTABREJECTED),
191191
SNMP_MIB_ITEM("PAWSOldAck", LINUX_MIB_PAWS_OLD_ACK),
192+
SNMP_MIB_ITEM("PAWSTimewait", LINUX_MIB_PAWS_TW_REJECTED),
192193
SNMP_MIB_ITEM("DelayedACKs", LINUX_MIB_DELAYEDACKS),
193194
SNMP_MIB_ITEM("DelayedACKLocked", LINUX_MIB_DELAYEDACKLOCKED),
194195
SNMP_MIB_ITEM("DelayedACKLost", LINUX_MIB_DELAYEDACKLOST),

net/ipv4/tcp_minisocks.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -236,7 +236,7 @@ tcp_timewait_state_process(struct inet_timewait_sock *tw, struct sk_buff *skb,
236236

237237
if (paws_reject) {
238238
*drop_reason = SKB_DROP_REASON_TCP_RFC7323_TW_PAWS;
239-
__NET_INC_STATS(twsk_net(tw), LINUX_MIB_PAWSESTABREJECTED);
239+
__NET_INC_STATS(twsk_net(tw), LINUX_MIB_PAWS_TW_REJECTED);
240240
}
241241

242242
if (!th->rst) {

0 commit comments

Comments
 (0)