Skip to content

Commit c449d5f

Browse files
mrprekuba-moo
authored andcommitted
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>
1 parent 0427141 commit c449d5f

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
@@ -37,6 +37,8 @@ unsigned_long LINUX_MIB_TIMEWAITKILLED
3737
unsigned_long LINUX_MIB_PAWSACTIVEREJECTED
3838
unsigned_long LINUX_MIB_PAWSESTABREJECTED
3939
unsigned_long LINUX_MIB_TSECR_REJECTED
40+
unsigned_long LINUX_MIB_PAWS_OLD_ACK
41+
unsigned_long LINUX_MIB_PAWS_TW_REJECTED
4042
unsigned_long LINUX_MIB_DELAYEDACKLOST
4143
unsigned_long LINUX_MIB_LISTENOVERFLOWS
4244
unsigned_long LINUX_MIB_LISTENDROPS

include/net/dropreason-core.h

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -287,6 +287,7 @@ enum skb_drop_reason {
287287
/**
288288
* @SKB_DROP_REASON_TCP_RFC7323_TW_PAWS: PAWS check, socket is in
289289
* TIME_WAIT state.
290+
* Corresponds to LINUX_MIB_PAWS_TW_REJECTED.
290291
*/
291292
SKB_DROP_REASON_TCP_RFC7323_TW_PAWS,
292293
/**

include/uapi/linux/snmp.h

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -188,6 +188,7 @@ enum
188188
LINUX_MIB_PAWSESTABREJECTED, /* PAWSEstabRejected */
189189
LINUX_MIB_TSECRREJECTED, /* TSEcrRejected */
190190
LINUX_MIB_PAWS_OLD_ACK, /* PAWSOldAck */
191+
LINUX_MIB_PAWS_TW_REJECTED, /* PAWSTimewait */
191192
LINUX_MIB_DELAYEDACKS, /* DelayedACKs */
192193
LINUX_MIB_DELAYEDACKLOCKED, /* DelayedACKLocked */
193194
LINUX_MIB_DELAYEDACKLOST, /* DelayedACKLost */

net/ipv4/proc.c

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -191,6 +191,7 @@ static const struct snmp_mib snmp4_net_list[] = {
191191
SNMP_MIB_ITEM("PAWSEstab", LINUX_MIB_PAWSESTABREJECTED),
192192
SNMP_MIB_ITEM("TSEcrRejected", LINUX_MIB_TSECRREJECTED),
193193
SNMP_MIB_ITEM("PAWSOldAck", LINUX_MIB_PAWS_OLD_ACK),
194+
SNMP_MIB_ITEM("PAWSTimewait", LINUX_MIB_PAWS_TW_REJECTED),
194195
SNMP_MIB_ITEM("DelayedACKs", LINUX_MIB_DELAYEDACKS),
195196
SNMP_MIB_ITEM("DelayedACKLocked", LINUX_MIB_DELAYEDACKLOCKED),
196197
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
@@ -248,7 +248,7 @@ tcp_timewait_state_process(struct inet_timewait_sock *tw, struct sk_buff *skb,
248248

249249
if (paws_reject) {
250250
*drop_reason = SKB_DROP_REASON_TCP_RFC7323_TW_PAWS;
251-
__NET_INC_STATS(twsk_net(tw), LINUX_MIB_PAWSESTABREJECTED);
251+
__NET_INC_STATS(twsk_net(tw), LINUX_MIB_PAWS_TW_REJECTED);
252252
}
253253

254254
if (!th->rst) {

0 commit comments

Comments
 (0)