HomeFreeBSD

tcp: Deal with DSACKs, and adjust rescue hole on success.

Description

tcp: Deal with DSACKs, and adjust rescue hole on success.

When a rescue retransmission is successful, rather than
inserting new holes to the left of it, adjust the old
rescue entry to cover the missed sequence space.

Also, as snd_fack may be stale by that point, pull it forward
in order to never create a hole left of snd_una/th_ack.

Finally, with DSACKs, tcp_sack_doack() may be called
with new full ACKs but a DSACK block. Account for this
eventuality properly to keep sacked_bytes >= 0.

MFC after: 3 days
Reviewed By: kbowling, tuexen, transport
Sponsored by: NetApp, Inc.
Differential Revision: https://reviews.freebsd.org/D29835

(cherry picked from commit a649f1f6fd7a098ab173a69fe87916c04a8c6f8d)

Details

Provenance
rscheffAuthored on Apr 20 2021, 12:53 PM
Reviewer
transport
Differential Revision
D29835: tcp: Deal with DSACKs, and adjust rescue hole on success.
Parents
rGd76eb0da7283: tcp: keep SACK scoreboard sorted when doing rescue retransmission
Branches
Unknown
Tags
Unknown