Skip site navigation (1)Skip section navigation (2)
Date:      Thu, 11 Jan 2024 00:41:28 GMT
From:      Richard Scheffenegger <rscheff@FreeBSD.org>
To:        src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org
Subject:   git: 8923d34c6cbf - stable/13 - tcp: clean PRR state after ECN congestion recovery.
Message-ID:  <202401110041.40B0fS1k013221@gitrepo.freebsd.org>

next in thread | raw e-mail | index | archive | help
The branch stable/13 has been updated by rscheff:

URL: https://cgit.FreeBSD.org/src/commit/?id=8923d34c6cbf68d506abd9fcf8a790a77eb952ad

commit 8923d34c6cbf68d506abd9fcf8a790a77eb952ad
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:40:14 +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 9a5b9b05f210..262e95d08071 100644
--- a/sys/netinet/tcp_input.c
+++ b/sys/netinet/tcp_input.c
@@ -529,6 +529,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 3e1a2320f331..834bce35f5ba 100644
--- a/sys/netinet/tcp_output.c
+++ b/sys/netinet/tcp_output.c
@@ -1691,6 +1691,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) {



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?202401110041.40B0fS1k013221>