From: Simon Baatz Date: Mon, 16 Mar 2026 18:51:10 +0000 (+0100) Subject: selftests/net: packetdrill: improve tcp_rcv_neg_window.pkt X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=96a584db75bb21781562dc79f11932ce38a1205f;p=thirdparty%2Flinux.git selftests/net: packetdrill: improve tcp_rcv_neg_window.pkt The test depends on accepting a packet that is larger than the advertised window and that does not trigger an immediate ACK. Previously, the test might still pass even if kernel behavior changed unexpectedly. Add assertions verifying that the large packet was accepted and no ACK was sent. Suggested-by: Eric Dumazet Signed-off-by: Simon Baatz Link: https://patch.msgid.link/20260316-improve_tcp_neg_usable_wnd_test-v1-1-f16d5e365107@gmail.com Signed-off-by: Paolo Abeni --- diff --git a/tools/testing/selftests/net/packetdrill/tcp_rcv_neg_window.pkt b/tools/testing/selftests/net/packetdrill/tcp_rcv_neg_window.pkt index 15a9b4938f16d..b9ab264b2a118 100644 --- a/tools/testing/selftests/net/packetdrill/tcp_rcv_neg_window.pkt +++ b/tools/testing/selftests/net/packetdrill/tcp_rcv_neg_window.pkt @@ -1,4 +1,7 @@ // SPDX-License-Identifier: GPL-2.0 +// Test maximum advertised window limit when rcv_nxt advances past +// rcv_mwnd_seq. The "usable window" must be properly clamped to zero +// rather than becoming negative. --mss=1000 @@ -17,10 +20,15 @@ +0 accept(3, ..., ...) = 4 -// A too big packet is accepted if the receive queue is empty +// A too big packet is accepted if the receive queue is empty. It +// does not trigger an immediate ACK. +0 < P. 1:20001(20000) ack 1 win 257 + +0 %{ assert tcpi_bytes_received == 20000, tcpi_bytes_received; }% + // Send a RST immediately so that there is no rcv_wup/rcv_mwnd_seq update yet +0 < R. 20001:20001(0) ack 1 win 257 - +.1 %{ assert tcpi_state == TCP_CLOSE, tcpi_state }% - +// Verify that the RST was accepted. Indirectly this also verifies that no +// immediate ACK was sent for the data packet above. + +0 < . 20001:20001(0) ack 1 win 257 + +0 > R 1:1(0)