diff --git a/quic/core/congestion_control/bbr_sender.cc b/quic/core/congestion_control/bbr_sender.cc
index 3bef1dd..6ef3572 100644
--- a/quic/core/congestion_control/bbr_sender.cc
+++ b/quic/core/congestion_control/bbr_sender.cc
@@ -342,7 +342,7 @@
   const QuicBandwidth& bandwidth = params.bandwidth;
   const QuicTime::Delta& rtt = params.rtt;
 
-  if (GetQuicReloadableFlag(quic_bbr_donot_inject_bandwidth)) {
+  if (params.quic_bbr_donot_inject_bandwidth) {
     QUIC_RELOADABLE_FLAG_COUNT(quic_bbr_donot_inject_bandwidth);
   } else if (!bandwidth.IsZero()) {
     max_bandwidth_.Update(bandwidth, round_trip_count_);
@@ -358,11 +358,10 @@
     }
     const QuicByteCount new_cwnd = std::max(
         kMinInitialCongestionWindow * kDefaultTCPMSS,
-        std::min(
-            kMaxInitialCongestionWindow * kDefaultTCPMSS,
-            bandwidth * (GetQuicReloadableFlag(quic_bbr_donot_inject_bandwidth)
-                             ? GetMinRtt()
-                             : rtt_stats_->SmoothedOrInitialRtt())));
+        std::min(kMaxInitialCongestionWindow * kDefaultTCPMSS,
+                 bandwidth * (params.quic_bbr_donot_inject_bandwidth
+                                  ? GetMinRtt()
+                                  : rtt_stats_->SmoothedOrInitialRtt())));
     if (!rtt_stats_->smoothed_rtt().IsZero()) {
       QUIC_CODE_COUNT(quic_smoothed_rtt_available);
     } else if (rtt_stats_->initial_rtt() !=
diff --git a/quic/core/congestion_control/send_algorithm_interface.h b/quic/core/congestion_control/send_algorithm_interface.h
index 628e0d6..33ab222 100644
--- a/quic/core/congestion_control/send_algorithm_interface.h
+++ b/quic/core/congestion_control/send_algorithm_interface.h
@@ -45,24 +45,30 @@
           quic_fix_bbr_cwnd_in_bandwidth_resumption(
               GetQuicReloadableFlag(quic_fix_bbr_cwnd_in_bandwidth_resumption)),
           quic_bbr_fix_pacing_rate(
-              GetQuicReloadableFlag(quic_bbr_fix_pacing_rate)) {}
+              GetQuicReloadableFlag(quic_bbr_fix_pacing_rate)),
+          quic_bbr_donot_inject_bandwidth(
+              GetQuicReloadableFlag(quic_bbr_donot_inject_bandwidth)) {}
 
     bool operator==(const NetworkParams& other) const {
       return bandwidth == other.bandwidth && rtt == other.rtt &&
              allow_cwnd_to_decrease == other.allow_cwnd_to_decrease &&
              quic_fix_bbr_cwnd_in_bandwidth_resumption ==
                  other.quic_fix_bbr_cwnd_in_bandwidth_resumption &&
-             quic_bbr_fix_pacing_rate == other.quic_bbr_fix_pacing_rate;
+             quic_bbr_fix_pacing_rate == other.quic_bbr_fix_pacing_rate &&
+             quic_bbr_donot_inject_bandwidth ==
+                 other.quic_bbr_donot_inject_bandwidth;
     }
 
     QuicBandwidth bandwidth;
     QuicTime::Delta rtt;
     bool allow_cwnd_to_decrease;
     // Code changes that are controlled by flags.
-    // TODO(b/131899599): Remove when impact of fix is measured.
+    // TODO(b/131899599): Remove after impact of fix is measured.
     bool quic_fix_bbr_cwnd_in_bandwidth_resumption;
-    // TODO(b/143540157): Remove when impact of fix is measured.
+    // TODO(b/143540157): Remove after impact of fix is measured.
     bool quic_bbr_fix_pacing_rate;
+    // TODO(b/72089315, b/143891040): Remove after impact of fix is measured.
+    bool quic_bbr_donot_inject_bandwidth;
   };
 
   static SendAlgorithmInterface* Create(
