git: 038699a8f18a - main - tcp: cubic - restart epoch after RTO

From: Richard Scheffenegger <rscheff_at_FreeBSD.org>
Date: Sat, 24 Feb 2024 16:15:40 UTC
The branch main has been updated by rscheff:

URL: https://cgit.FreeBSD.org/src/commit/?id=038699a8f18a0a651ee06b85fa1dbbee1eab56f1

commit 038699a8f18a0a651ee06b85fa1dbbee1eab56f1
Author:     Richard Scheffenegger <rscheff@FreeBSD.org>
AuthorDate: 2024-02-24 16:07:25 +0000
Commit:     Richard Scheffenegger <rscheff@FreeBSD.org>
CommitDate: 2024-02-24 16:07:46 +0000

    tcp: cubic - restart epoch after RTO
    
    This is a migitation to avoid sudden extreme jumps in
    cwnd, as t_epoch can be very out of date after an RTO.
    Per RFC9438, sec 4.8, t_epoch is to be reset whenever
    cwnd grows beyond ssthresh (CC phase transitions from
    slow start to congestion avoidance), to be fixed with
    the upcoming cc_cubic changes.
    
    MFC after:              3 days
    Reviewed By:            cc, #transport
    Sponsored by:           NetApp, Inc
    Differential Revision:  https://reviews.freebsd.org/D44023
---
 sys/netinet/cc/cc_cubic.c | 1 +
 1 file changed, 1 insertion(+)

diff --git a/sys/netinet/cc/cc_cubic.c b/sys/netinet/cc/cc_cubic.c
index a9c7592b80ca..b4050326ae31 100644
--- a/sys/netinet/cc/cc_cubic.c
+++ b/sys/netinet/cc/cc_cubic.c
@@ -270,6 +270,7 @@ cubic_ack_received(struct cc_var *ccv, ccsignal_t type)
 				cubic_data->flags &= ~(CUBICFLAG_RTO_EVENT |
 						       CUBICFLAG_IN_SLOWSTART);
 				cubic_data->W_max = CCV(ccv, snd_cwnd);
+				cubic_data->t_epoch = ticks;
 				cubic_data->K = 0;
 			} else if (cubic_data->flags & (CUBICFLAG_IN_SLOWSTART |
 						 CUBICFLAG_IN_APPLIMIT)) {