u32     packets_out;    /* Packets which are "in flight"        */
        u32     retrans_out;    /* Retransmitted packets out            */
        u32     max_packets_out;  /* max packets_out in last window */
-       u32     max_packets_seq;  /* right edge of max_packets_out flight */
+       u32     cwnd_usage_seq;  /* right edge of cwnd usage tracking flight */
 
        u16     urg_data;       /* Saved octet of OOB data and control flags */
        u8      ecn_flags;      /* ECN status bits.                     */
 
 {
        const struct tcp_sock *tp = tcp_sk(sk);
 
+       if (tp->is_cwnd_limited)
+               return true;
+
        /* If in slow start, ensure cwnd grows to twice what was ACKed. */
        if (tcp_in_slow_start(tp))
                return tcp_snd_cwnd(tp) < 2 * tp->max_packets_out;
 
-       return tp->is_cwnd_limited;
+       return false;
 }
 
 /* BBR congestion control needs pacing.
 
        tp->snd_ssthresh = TCP_INFINITE_SSTHRESH;
        tcp_snd_cwnd_set(tp, TCP_INIT_CWND);
        tp->snd_cwnd_cnt = 0;
+       tp->is_cwnd_limited = 0;
+       tp->max_packets_out = 0;
        tp->window_clamp = 0;
        tp->delivered = 0;
        tp->delivered_ce = 0;
 
        const struct tcp_congestion_ops *ca_ops = inet_csk(sk)->icsk_ca_ops;
        struct tcp_sock *tp = tcp_sk(sk);
 
-       /* Track the maximum number of outstanding packets in each
-        * window, and remember whether we were cwnd-limited then.
+       /* Track the strongest available signal of the degree to which the cwnd
+        * is fully utilized. If cwnd-limited then remember that fact for the
+        * current window. If not cwnd-limited then track the maximum number of
+        * outstanding packets in the current window. (If cwnd-limited then we
+        * chose to not update tp->max_packets_out to avoid an extra else
+        * clause with no functional impact.)
         */
-       if (!before(tp->snd_una, tp->max_packets_seq) ||
-           tp->packets_out > tp->max_packets_out ||
-           is_cwnd_limited) {
-               tp->max_packets_out = tp->packets_out;
-               tp->max_packets_seq = tp->snd_nxt;
+       if (!before(tp->snd_una, tp->cwnd_usage_seq) ||
+           is_cwnd_limited ||
+           (!tp->is_cwnd_limited &&
+            tp->packets_out > tp->max_packets_out)) {
                tp->is_cwnd_limited = is_cwnd_limited;
+               tp->max_packets_out = tp->packets_out;
+               tp->cwnd_usage_seq = tp->snd_nxt;
        }
 
        if (tcp_is_cwnd_limited(sk)) {