Add kAFF1 enabling the usage of smoothed RTT in the computation of ack delay in AckFrequencyFrame.
Protected by FLAGS_quic_reloadable_flag_quic_can_send_ack_frequency.
PiperOrigin-RevId: 337381712
Change-Id: Icdc57863d57e54a516fe73139903e974097800e5
diff --git a/quic/core/quic_sent_packet_manager.cc b/quic/core/quic_sent_packet_manager.cc
index b98f65c..bdad0e4 100644
--- a/quic/core/quic_sent_packet_manager.cc
+++ b/quic/core/quic_sent_packet_manager.cc
@@ -150,6 +150,9 @@
peer_min_ack_delay_ =
QuicTime::Delta::FromMilliseconds(config.ReceivedMinAckDelayMs());
}
+ if (config.HasClientSentConnectionOption(kAFF1, perspective)) {
+ use_smoothed_rtt_in_ack_delay_ = true;
+ }
}
if (config.HasClientSentConnectionOption(kMAD0, perspective)) {
rtt_stats_.set_ignore_max_ack_delay(true);
@@ -725,7 +728,8 @@
QUIC_RELOADABLE_FLAG_COUNT(quic_can_send_ack_frequency);
frame.packet_tolerance = kMaxRetransmittablePacketsBeforeAck;
- auto rtt = rtt_stats_.MinOrInitialRtt();
+ auto rtt = use_smoothed_rtt_in_ack_delay_ ? rtt_stats_.SmoothedOrInitialRtt()
+ : rtt_stats_.MinOrInitialRtt();
frame.max_ack_delay = rtt * kAckDecimationDelay;
frame.max_ack_delay = std::max(frame.max_ack_delay, peer_min_ack_delay_);