Page MenuHomeFreeBSD

tcp: Align PRR implementation with RFC 9937
ClosedPublic

Authored by mohnishhemanthkumar_gmail.com on Apr 20 2026, 5:46 PM.
Referenced Files
Unknown Object (File)
Thu, Aug 13, 1:14 AM
Unknown Object (File)
Wed, Aug 12, 9:24 PM
Unknown Object (File)
Tue, Aug 11, 6:16 PM
Unknown Object (File)
Mon, Aug 10, 10:46 AM
Unknown Object (File)
Mon, Aug 10, 8:56 AM
Unknown Object (File)
Sat, Aug 8, 9:48 PM
Unknown Object (File)
Sat, Aug 8, 3:04 PM
Unknown Object (File)
Sat, Aug 8, 10:26 AM

Details

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)

This work was contributed by a team from the National Institute of Technology Karnataka (NITK), under the guidance of Dr. Mohit P. Tahiliani. Team members: @mohnishhemanthkumar_gmail.com, @nikhilkottoli2005_gmail.com , @manishagarwal428728_gmail.com , and @ppal61679_gmail.com .

Test Plan

Diff Detail

Repository
rG FreeBSD src repository
Lint
Lint Not Applicable
Unit
Tests Not Applicable

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.

This revision was not accepted when it landed; it landed in state Needs Review.Sat, Jul 18, 9:25 AM
This revision was automatically updated to reflect the committed changes.

@tuexen is currently looking to create standard compliant packetdrill scripts to check various test cases.

Reviewed this together with @tuexen; for some reason, this diff can not be edited to have additional reviewers or minor changes.
Accepting this on behalf of @rscheff and @tuexen.

The commit will have the declarations moved up to the beginning of the functions, and some minor white-space fixes - no functional changes.