The branch stable/14 has been updated by rscheff:

URL: 
https://cgit.FreeBSD.org/src/commit/?id=407054ed48916e8d19d0b8d0cb9f5df16a27c69c

commit 407054ed48916e8d19d0b8d0cb9f5df16a27c69c
Author:     Richard Scheffenegger <rsch...@freebsd.org>
AuthorDate: 2024-01-08 08:28:01 +0000
Commit:     Richard Scheffenegger <rsch...@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) {

Reply via email to