Exit PROBE_DOWN when bytes in flight goes below the target instead of prior_in_flight. Also adds missing flag counts.
Protected by quic_reloadable_flag_quic_bbr2_use_post_inflight_to_detect_queuing.
PiperOrigin-RevId: 332848621
Change-Id: I90b3434dbfef842f2475a06c9854bd5e2e15f40a
diff --git a/quic/core/congestion_control/bbr2_probe_bw.cc b/quic/core/congestion_control/bbr2_probe_bw.cc
index 8cf8b2e..1729118 100644
--- a/quic/core/congestion_control/bbr2_probe_bw.cc
+++ b/quic/core/congestion_control/bbr2_probe_bw.cc
@@ -9,6 +9,7 @@
#include "net/third_party/quiche/src/quic/core/quic_bandwidth.h"
#include "net/third_party/quiche/src/quic/core/quic_time.h"
#include "net/third_party/quiche/src/quic/core/quic_types.h"
+#include "net/third_party/quiche/src/quic/platform/api/quic_flag_utils.h"
#include "net/third_party/quiche/src/quic/platform/api/quic_flags.h"
#include "net/third_party/quiche/src/quic/platform/api/quic_logging.h"
@@ -165,18 +166,26 @@
QUIC_DVLOG(3)
<< sender_
<< " Checking if have enough inflight headroom. prior_in_flight:"
- << prior_in_flight
+ << prior_in_flight << " congestion_event.bytes_in_flight:"
+ << congestion_event.bytes_in_flight
<< ", inflight_with_headroom:" << inflight_with_headroom;
- if (prior_in_flight > inflight_with_headroom) {
+ QuicByteCount bytes_in_flight = prior_in_flight;
+ if (GetQuicReloadableFlag(quic_bbr2_use_post_inflight_to_detect_queuing)) {
+ // TODO(ianswett): Remove prior_in_flight from UpdateProbeDown.
+ QUIC_RELOADABLE_FLAG_COUNT_N(quic_bbr2_use_post_inflight_to_detect_queuing,
+ 2, 2);
+ bytes_in_flight = congestion_event.bytes_in_flight;
+ }
+ if (bytes_in_flight > inflight_with_headroom) {
// Stay in PROBE_DOWN.
return;
}
// Transition to PROBE_CRUISE iff we've drained to target.
QuicByteCount bdp = model_->BDP(model_->MaxBandwidth());
- QUIC_DVLOG(3) << sender_ << " Checking if drained to target. prior_in_flight:"
- << prior_in_flight << ", bdp:" << bdp;
- if (prior_in_flight < bdp) {
+ QUIC_DVLOG(3) << sender_ << " Checking if drained to target. bytes_in_flight:"
+ << bytes_in_flight << ", bdp:" << bdp;
+ if (bytes_in_flight < bdp) {
EnterProbeCruise(congestion_event.event_time);
}
}
@@ -437,6 +446,8 @@
(Params().probe_bw_probe_inflight_gain * bdp) +
queuing_threshold_extra_bytes;
if (GetQuicReloadableFlag(quic_bbr2_use_post_inflight_to_detect_queuing)) {
+ QUIC_RELOADABLE_FLAG_COUNT_N(
+ quic_bbr2_use_post_inflight_to_detect_queuing, 1, 2);
is_queuing = congestion_event.bytes_in_flight >= queuing_threshold;
} else {
is_queuing = prior_in_flight >= queuing_threshold;