git: b5ee7411bfab - stable/14 - tcp rack: fix sending

From: Michael Tuexen <tuexen_at_FreeBSD.org>
Date: Wed, 17 Apr 2024 14:15:30 UTC
The branch stable/14 has been updated by tuexen:

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

commit b5ee7411bfabaf85f226fdfc4f2d8e0515d66691
Author:     Michael Tuexen <tuexen@FreeBSD.org>
AuthorDate: 2024-04-05 15:47:03 +0000
Commit:     Michael Tuexen <tuexen@FreeBSD.org>
CommitDate: 2024-04-17 14:15:03 +0000

    tcp rack: fix sending
    
    In rack_output(), idle is used as a boolean variable. So don't use it
    as an int and don't clear it afterwards.
    This avoids setting idle to false, when it is not intended.
    
    Reported by:            olivier
    Reviewed by:            rrs, rscheff
    Sponsored by:           Netflix, Inc.
    Differential Revision:  https://reviews.freebsd.org/D44610
    
    (cherry picked from commit 7df0ef5f48e1c67b3f1df7c7964bfa59bc56f4e4)
---
 sys/netinet/tcp_stacks/rack.c | 9 ++++++---
 1 file changed, 6 insertions(+), 3 deletions(-)

diff --git a/sys/netinet/tcp_stacks/rack.c b/sys/netinet/tcp_stacks/rack.c
index fa3cd2f4f698..b05d19f5cbc2 100644
--- a/sys/netinet/tcp_stacks/rack.c
+++ b/sys/netinet/tcp_stacks/rack.c
@@ -19927,6 +19927,10 @@ rack_output(struct tcpcb *tp)
 
 #endif
 	int32_t idle, sendalot;
+<<<<<<< HEAD
+=======
+	uint32_t tot_idle;
+>>>>>>> 7df0ef5f48e1 (tcp rack: fix sending)
 	int32_t sub_from_prr = 0;
 	volatile int32_t sack_rxmit;
 	struct rack_sendmap *rsm = NULL;
@@ -20164,8 +20168,8 @@ rack_output(struct tcpcb *tp)
 	if ((tp->snd_una == tp->snd_max) &&
 	    rack->r_ctl.rc_went_idle_time &&
 	    TSTMP_GT(cts, rack->r_ctl.rc_went_idle_time)) {
-		idle = cts - rack->r_ctl.rc_went_idle_time;
-		if (idle > rack_min_probertt_hold) {
+		tot_idle = (cts - rack->r_ctl.rc_went_idle_time);
+		if (tot_idle > rack_min_probertt_hold) {
 			/* Count as a probe rtt */
 			if (rack->in_probe_rtt == 0) {
 				rack->r_ctl.rc_lower_rtt_us_cts = cts;
@@ -20176,7 +20180,6 @@ rack_output(struct tcpcb *tp)
 				rack_exit_probertt(rack, cts);
 			}
 		}
-		idle = 0;
 	}
 	if (rack_use_fsb &&
 	    (rack->r_ctl.fsb.tcp_ip_hdr) &&