aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRichard Scheffenegger <rscheff@FreeBSD.org>2023-12-18 12:01:28 +0000
committerRichard Scheffenegger <rscheff@FreeBSD.org>2023-12-24 13:32:29 +0000
commitac83f3fa44f3c64ddb4f817aa4c2032546a1ac92 (patch)
tree543caf4a26b2ecc8b30449e37a05316b070121f3
parent4c29e65cd8cea7f425eacaf240912da320af92f9 (diff)
downloadsrc-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.c2
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"));