The main changes required in tcp_do_prr_ack() (in tcp_input.c) are:
- Early return when no new data is delivered (del_data = 0). ([[ https://www.rfc-editor.org/rfc/rfc9937.html#section-6.2-6 | RFC 9937 6.2 ]])
- Switching from PRR-CRB to PRR-SSRB only when both SND.UNA advances and no further loss is indicated. ([[ https://www.rfc-editor.org/rfc/rfc9937.html#section-4-3 | RFC 9937 4 ]])
- Accounting for sequence ranges SACKed before entering recovery in RecoverFS calculation. ([[ https://www.rfc-editor.org/rfc/rfc9937.html#section-4-5 | RFC 9937 4 ]])
- Force a fast retransmit upon entering recovery when prr_out is 0 AND SndCnt is 0. ([[ https://www.rfc-editor.org/rfc/rfc9937.html#section-4-6 | RFC 9937 4 ]])
- Set cwnd to ssthresh post recovery. ([[ https://www.rfc-editor.org/rfc/rfc9937.html#section-4-7 | RFC 9937 4 ]])