gfe-relnote: Add a connection option(1ACK) to send only one immediate ACK in QUIC after reordering, instead of 4. Protected by gfe2_reloadable_flag_quic_one_immediate_ack
PiperOrigin-RevId: 290743392
Change-Id: I0c1a557d48f3b0b0c3e58c235d6c97dd79973c68
diff --git a/quic/core/quic_received_packet_manager.cc b/quic/core/quic_received_packet_manager.cc
index 9e33ea4..4333323 100644
--- a/quic/core/quic_received_packet_manager.cc
+++ b/quic/core/quic_received_packet_manager.cc
@@ -12,6 +12,7 @@
#include "net/third_party/quiche/src/quic/core/crypto/crypto_protocol.h"
#include "net/third_party/quiche/src/quic/core/quic_connection_stats.h"
#include "net/third_party/quiche/src/quic/platform/api/quic_bug_tracker.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"
namespace quic {
@@ -50,6 +51,7 @@
ack_decimation_delay_(kAckDecimationDelay),
unlimited_ack_decimation_(false),
fast_ack_after_quiescence_(false),
+ one_immediate_ack_(false),
local_max_ack_delay_(
QuicTime::Delta::FromMilliseconds(kDefaultDelayedAckTimeMs)),
ack_timeout_(QuicTime::Zero()),
@@ -88,6 +90,11 @@
if (config.HasClientSentConnectionOption(kACKQ, perspective)) {
fast_ack_after_quiescence_ = true;
}
+ if (GetQuicReloadableFlag(quic_one_immediate_ack) &&
+ config.HasClientSentConnectionOption(k1ACK, perspective)) {
+ QUIC_RELOADABLE_FLAG_COUNT(quic_one_immediate_ack);
+ one_immediate_ack_ = true;
+ }
}
void QuicReceivedPacketManager::RecordPacketReceived(
@@ -315,6 +322,9 @@
}
bool QuicReceivedPacketManager::HasNewMissingPackets() const {
+ if (one_immediate_ack_) {
+ return HasMissingPackets() && ack_frame_.packets.LastIntervalLength() == 1;
+ }
return HasMissingPackets() &&
ack_frame_.packets.LastIntervalLength() <= kMaxPacketsAfterNewMissing;
}