diff options
author | Richard Scheffenegger <rscheff@FreeBSD.org> | 2023-12-18 12:01:28 +0000 |
---|---|---|
committer | Richard Scheffenegger <rscheff@FreeBSD.org> | 2023-12-24 13:32:29 +0000 |
commit | ac83f3fa44f3c64ddb4f817aa4c2032546a1ac92 (patch) | |
tree | 543caf4a26b2ecc8b30449e37a05316b070121f3 | |
parent | 4c29e65cd8cea7f425eacaf240912da320af92f9 (diff) | |
download | src-ac83f3fa44f3c64ddb4f817aa4c2032546a1ac92.tar.gz src-ac83f3fa44f3c64ddb4f817aa4c2032546a1ac92.zip |
tcp: properly unroll SACK transmission on TX error with LRD
PR: 275798
Reported by: ddaniel@nvidia.com
Reviewed by: tuexen, #transport
MFC after: 1 week
Sponsored by: NetApp, Inc.
Differential Revision: https://reviews.freebsd.org/D43085
(cherry picked from commit e3b9058e5cd0f541da596624a366e14cabcf2e2a)
-rw-r--r-- | sys/netinet/tcp_output.c | 2 |
1 files changed, 1 insertions, 1 deletions
diff --git a/sys/netinet/tcp_output.c b/sys/netinet/tcp_output.c index d83d4b8d65b1..8efea91e116f 100644 --- a/sys/netinet/tcp_output.c +++ b/sys/netinet/tcp_output.c @@ -1654,7 +1654,7 @@ timer: ((flags & TH_SYN) == 0) && (error != EPERM)) { if (sack_rxmit) { - p->rxmit -= len; + p->rxmit = SEQ_MIN(p->end, p->rxmit) - len; tp->sackhint.sack_bytes_rexmit -= len; KASSERT(tp->sackhint.sack_bytes_rexmit >= 0, ("sackhint bytes rtx >= 0")); |