git: 407054ed4891 - stable/14 - tcp: clean PRR state after ECN congestion recovery.
- Go to: [ bottom of page ] [ top of archives ] [ this month ]
Date: Thu, 11 Jan 2024 00:42:27 UTC
The branch stable/14 has been updated by rscheff: URL: https://cgit.FreeBSD.org/src/commit/?id=407054ed48916e8d19d0b8d0cb9f5df16a27c69c commit 407054ed48916e8d19d0b8d0cb9f5df16a27c69c Author: Richard Scheffenegger <rscheff@FreeBSD.org> AuthorDate: 2024-01-08 08:28:01 +0000 Commit: Richard Scheffenegger <rscheff@FreeBSD.org> CommitDate: 2024-01-11 00:33:53 +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 (cherry picked from commit 429f14f83ae1f6357a9455d4f075522420b01b03) --- 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 2d7a6fa11b4e..9eefef3ea81e 100644 --- a/sys/netinet/tcp_input.c +++ b/sys/netinet/tcp_input.c @@ -487,6 +487,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 8efea91e116f..549218badcec 100644 --- a/sys/netinet/tcp_output.c +++ b/sys/netinet/tcp_output.c @@ -1665,6 +1665,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) {