]> git.ipfire.org Git - thirdparty/kernel/linux.git/commit
selftests/net: packetdrill: cover RFC 5961 5.2 challenge ACK on both edges
authorJiayuan Chen <jiayuan.chen@linux.dev>
Wed, 22 Apr 2026 12:35:39 +0000 (20:35 +0800)
committerJakub Kicinski <kuba@kernel.org>
Thu, 23 Apr 2026 18:04:01 +0000 (11:04 -0700)
commitcf94b3c0f052c2674328b330309604af2dedd3a0
tree62eab3c35853d330043a2d048b9e625be634270c
parent42726ec644cbdde0035c3e0417fee8ed9547e120
selftests/net: packetdrill: cover RFC 5961 5.2 challenge ACK on both edges

RFC 5961 Section 5.2 / RFC 793 Section 3.9 require a challenge ACK
whenever an incoming SEG.ACK falls outside
[SND.UNA - MAX.SND.WND, SND.NXT].  There is currently no packetdrill
coverage for either edge.

Add tcp_rfc5961_ack-out-of-window.pkt, which in a single passive-open
connection exercises:

  - Upper edge (SEG.ACK > SND.NXT): peer ACKs data that was never
    sent before the server has transmitted anything.
  - Lower edge (SEG.ACK < SND.UNA - MAX.SND.WND): after the server
    has sent 2000 bytes (the peer-advertised rwnd forces two 1000-byte
    segments, both acknowledged), peer sends an ACK that is older
    than the acceptable window.

Both cases must elicit a challenge ACK
<SEQ = SND.NXT, ACK = RCV.NXT, CTL = ACK>.  The per-socket RFC 5961
Section 7 rate limit is disabled for the duration of the test so that
both challenge ACKs can fire back-to-back.

Signed-off-by: Jiayuan Chen <jiayuan.chen@linux.dev>
Reviewed-by: Eric Dumazet <edumazet@google.com>
Link: https://patch.msgid.link/20260422123605.320000-3-jiayuan.chen@linux.dev
Signed-off-by: Jakub Kicinski <kuba@kernel.org>
tools/testing/selftests/net/packetdrill/tcp_rfc5961_ack-out-of-window.pkt [new file with mode: 0644]