git: 429f14f83ae1 - main - tcp: clean PRR state after ECN congestion recovery.
- Go to: [ bottom of page ] [ top of archives ] [ this month ]
Date: Mon, 08 Jan 2024 18:39:58 UTC
The branch main has been updated by rscheff:
URL: https://cgit.FreeBSD.org/src/commit/?id=429f14f83ae1f6357a9455d4f075522420b01b03
commit 429f14f83ae1f6357a9455d4f075522420b01b03
Author: Richard Scheffenegger <rscheff@FreeBSD.org>
AuthorDate: 2024-01-08 08:28:01 +0000
Commit: Richard Scheffenegger <rscheff@FreeBSD.org>
CommitDate: 2024-01-08 09:53:04 +0000
tcp: clean PRR state after ECN congestion recovery.
PRR state was not properly reset on subsequent ECN CE
events. Clean up after local transmission failures too.
Reviewed by: tuexen, cc, #transport
MFC after: 3 days
Sponsored by: NetApp, Inc.
Differential Revision: https://reviews.freebsd.org/D43170
---
sys/netinet/tcp_input.c | 1 +
sys/netinet/tcp_output.c | 2 ++
2 files changed, 3 insertions(+)
diff --git a/sys/netinet/tcp_input.c b/sys/netinet/tcp_input.c
index 0014c11d9daa..ed5f28490852 100644
--- a/sys/netinet/tcp_input.c
+++ b/sys/netinet/tcp_input.c
@@ -483,6 +483,7 @@ cc_post_recovery(struct tcpcb *tp, struct tcphdr *th)
/* XXXLAS: EXIT_RECOVERY ? */
tp->t_bytes_acked = 0;
tp->sackhint.delivered_data = 0;
+ tp->sackhint.prr_delivered = 0;
tp->sackhint.prr_out = 0;
}
diff --git a/sys/netinet/tcp_output.c b/sys/netinet/tcp_output.c
index 8d863ffcf432..1ff6f5bee39a 100644
--- a/sys/netinet/tcp_output.c
+++ b/sys/netinet/tcp_output.c
@@ -1663,6 +1663,8 @@ timer:
if (flags & TH_FIN)
tp->snd_nxt--;
}
+ if (IN_RECOVERY(tp->t_flags))
+ tp->sackhint.prr_out -= len;
}
SOCKBUF_UNLOCK_ASSERT(&so->so_snd); /* Check gotos. */
switch (error) {