Page MenuHomeFreeBSD

tcp: Align PRR implementation with RFC 9937
Needs ReviewPublic

Authored by mohnishhemanthkumar_gmail.com on Apr 20 2026, 5:46 PM.
Referenced Files
Unknown Object (File)
Mon, Jun 8, 8:01 PM
Unknown Object (File)
Thu, Jun 4, 6:53 AM
Unknown Object (File)
Fri, May 29, 3:10 PM
Unknown Object (File)
May 14 2026, 2:30 AM
Unknown Object (File)
May 13 2026, 6:42 PM
Unknown Object (File)
May 13 2026, 6:42 PM
Unknown Object (File)
May 13 2026, 4:18 PM
Unknown Object (File)
May 13 2026, 4:18 PM

Details

Reviewers
rscheff
Group Reviewers
transport
Summary

The main changes implemented in tcp_do_prr_ack() (in tcp_input.c) are:

  • Early return when no new data is delivered (del_data = 0). (RFC 9937 6.2)
  • Switching from PRR-CRB to PRR-SSRB only when both SND.UNA advances and no further loss is indicated. (RFC 9937 4)
  • Accounting for sequence ranges SACKed before entering recovery in RecoverFS calculation. (RFC 9937 4)
  • Force a fast retransmit upon entering recovery when prr_out is 0 AND SndCnt is 0. (RFC 9937 4)
  • Set cwnd to ssthresh post recovery. (RFC 9937 4)
Test Plan

Diff Detail

Repository
rG FreeBSD src repository
Lint
Lint Skipped
Unit
Tests Skipped

Event Timeline

mohnishhemanthkumar_gmail.com retitled this revision from Align PRR implementation with RFC9937 to tcp: Align PRR implementation with RFC 9937.Apr 20 2026, 6:43 PM

Thanks,
I'll discuss this with all the transport committers in the next call.

First reading looks good, have to check the packetdrill differences too.