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)