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)
Thu, May 14, 2:30 AM
Unknown Object (File)
Wed, May 13, 6:42 PM
Unknown Object (File)
Wed, May 13, 6:42 PM
Unknown Object (File)
Wed, May 13, 4:18 PM
Unknown Object (File)
Wed, May 13, 4:18 PM
Unknown Object (File)
Mon, May 11, 12:24 PM
Unknown Object (File)
Wed, May 6, 2:24 PM
Unknown Object (File)
Tue, May 5, 10:19 AM

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.