diff --git a/quiche/quic/core/congestion_control/bbr2_misc.cc b/quiche/quic/core/congestion_control/bbr2_misc.cc
index f85c602..d234f5b 100644
--- a/quiche/quic/core/congestion_control/bbr2_misc.cc
+++ b/quiche/quic/core/congestion_control/bbr2_misc.cc
@@ -283,15 +283,15 @@
     // fast, conservation style response to loss, use the last sample.
     last_bandwidth = congestion_event.sample_max_bandwidth;
   }
-  if (pacing_gain_ > Params().startup_full_bw_threshold) {
+  if (pacing_gain_ > Params().full_bw_threshold) {
     // In STARTUP, pacing_gain_ is applied to bandwidth_lo_ in
     // UpdatePacingRate, so this backs that multiplication out to allow the
     // pacing rate to decrease, but not below
-    // last_bandwidth * startup_full_bw_threshold.
+    // last_bandwidth * full_bw_threshold.
     // TODO(ianswett): Consider altering pacing_gain_ when in STARTUP instead.
-    bandwidth_lo_ = std::max(
-        bandwidth_lo_,
-        last_bandwidth * (Params().startup_full_bw_threshold / pacing_gain_));
+    bandwidth_lo_ =
+        std::max(bandwidth_lo_,
+                 last_bandwidth * (Params().full_bw_threshold / pacing_gain_));
   } else {
     // Ensure bandwidth_lo isn't lower than last_bandwidth.
     bandwidth_lo_ = std::max(bandwidth_lo_, last_bandwidth);
@@ -410,7 +410,7 @@
   QUICHE_DCHECK(congestion_event.end_of_round_trip);
 
   QuicBandwidth threshold =
-      full_bandwidth_baseline_ * Params().startup_full_bw_threshold;
+      full_bandwidth_baseline_ * Params().full_bw_threshold;
 
   if (MaxBandwidth() >= threshold) {
     QUIC_DVLOG(3) << " CheckBandwidthGrowth at end of round. max_bandwidth:"
diff --git a/quiche/quic/core/congestion_control/bbr2_misc.h b/quiche/quic/core/congestion_control/bbr2_misc.h
index 579a7b5..e817e74 100644
--- a/quiche/quic/core/congestion_control/bbr2_misc.h
+++ b/quiche/quic/core/congestion_control/bbr2_misc.h
@@ -80,10 +80,9 @@
   // TODO(wub): Maybe change to the newly derived value of 2.773 (4 * ln(2)).
   float startup_pacing_gain = 2.885;
 
-  // Full bandwidth is declared if the total bandwidth growth is less than
-  // |startup_full_bw_threshold| times in the last |startup_full_bw_rounds|
-  // round trips.
-  float startup_full_bw_threshold = 1.25;
+  // STARTUP or PROBE_UP are exited if the total bandwidth growth is less than
+  // |full_bw_threshold| in the last |startup_full_bw_rounds| round trips.
+  float full_bw_threshold = 1.25;
 
   QuicRoundTripCount startup_full_bw_rounds = 3;
 
@@ -136,9 +135,6 @@
   int64_t probe_bw_full_loss_count =
       GetQuicFlag(quic_bbr2_default_probe_bw_full_loss_count);
 
-  // Multiplier to get target inflight (as multiple of BDP) for PROBE_UP phase.
-  float probe_bw_probe_inflight_gain = 1.25;
-
   // When attempting to grow inflight_hi in PROBE_UP, check whether we are cwnd
   // limited before the current aggregation epoch, instead of before the current
   // ack event.
diff --git a/quiche/quic/core/congestion_control/bbr2_probe_bw.cc b/quiche/quic/core/congestion_control/bbr2_probe_bw.cc
index 9b9ab3c..1e35b97 100644
--- a/quiche/quic/core/congestion_control/bbr2_probe_bw.cc
+++ b/quiche/quic/core/congestion_control/bbr2_probe_bw.cc
@@ -499,8 +499,8 @@
   } else if (cycle_.rounds_in_phase > 0) {
     if (Params().probe_up_dont_exit_if_no_queue_) {
       is_queuing = congestion_event.end_of_round_trip &&
-                   model_->CheckPersistentQueue(
-                       congestion_event, Params().probe_bw_probe_inflight_gain);
+                   model_->CheckPersistentQueue(congestion_event,
+                                                Params().full_bw_threshold);
     } else {
       QuicByteCount queuing_threshold_extra_bytes =
           model_->QueueingThresholdExtraBytes();
@@ -508,7 +508,7 @@
         queuing_threshold_extra_bytes += model_->MaxAckHeight();
       }
       QuicByteCount queuing_threshold =
-          (Params().probe_bw_probe_inflight_gain * model_->BDP()) +
+          (Params().full_bw_threshold * model_->BDP()) +
           queuing_threshold_extra_bytes;
 
       is_queuing = congestion_event.bytes_in_flight >= queuing_threshold;
diff --git a/quiche/quic/core/congestion_control/bbr2_startup.cc b/quiche/quic/core/congestion_control/bbr2_startup.cc
index addf64b..8f9bd0e 100644
--- a/quiche/quic/core/congestion_control/bbr2_startup.cc
+++ b/quiche/quic/core/congestion_control/bbr2_startup.cc
@@ -76,11 +76,11 @@
                              static_cast<double>(
                                  max_bw_at_round_beginning_.ToBitsPerSecond()));
         // Even when bandwidth isn't increasing, use a gain large enough to
-        // cause a startup_full_bw_threshold increase.
+        // cause a full_bw_threshold increase.
         const float new_gain =
-            ((bandwidth_ratio - 1) * (Params().startup_pacing_gain -
-                                      Params().startup_full_bw_threshold)) +
-            Params().startup_full_bw_threshold;
+            ((bandwidth_ratio - 1) *
+             (Params().startup_pacing_gain - Params().full_bw_threshold)) +
+            Params().full_bw_threshold;
         // Allow the pacing gain to decrease.
         model_->set_pacing_gain(
             std::min(Params().startup_pacing_gain, new_gain));
