Remove deprecated min_ack_delay transport parameter.

This parameter was replaced by the draft10 version. This CL removes the old parameter and all references to it.

This also removes some dead code.

Protected by FLAGS_quic_reloadable_flag_quic_receive_ack_frequency.

PiperOrigin-RevId: 761611928
diff --git a/quiche/quic/core/crypto/transport_parameters.cc b/quiche/quic/core/crypto/transport_parameters.cc
index 8863c49..bdbae3b 100644
--- a/quiche/quic/core/crypto/transport_parameters.cc
+++ b/quiche/quic/core/crypto/transport_parameters.cc
@@ -76,9 +76,8 @@
   kGoogleQuicVersion =
       0x4752,  // Used to transmit version and supported_versions.
 
-  kMinAckDelay = 0xDE1A,             // draft-iyengar-quic-delayed-ack.
-  kMinAckDelayDraft10 = 0xFF04DE1B,  // draft-ietf-quic-delayed-ack-10.
-  kVersionInformation = 0x11,  // RFC 9368.
+  kMinAckDelayDraft10 = 0xFF04DE1B,  // draft-ietf-quic-delayed-ack-10 and -11.
+  kVersionInformation = 0x11,        // RFC 9368.
 
   // draft-ietf-quic-reliable-stream-reset.
   kReliableStreamReset = 0x17F7586D2CB571,
@@ -149,7 +148,6 @@
       return "google_connection_options";
     case TransportParameters::kGoogleQuicVersion:
       return "google-version";
-    case TransportParameters::kMinAckDelay:
     case TransportParameters::kMinAckDelayDraft10:
       return "min_ack_delay_us";
     case TransportParameters::kVersionInformation:
@@ -228,7 +226,6 @@
     case TransportParameters::kInitialRoundTripTime:
     case TransportParameters::kGoogleConnectionOptions:
     case TransportParameters::kGoogleQuicVersion:
-    case TransportParameters::kMinAckDelay:
     case TransportParameters::kMinAckDelayDraft10:
     case TransportParameters::kReliableStreamReset:
     case TransportParameters::kVersionInformation:
@@ -448,7 +445,6 @@
   rv += initial_max_streams_uni.ToString(/*for_use_in_list=*/true);
   rv += ack_delay_exponent.ToString(/*for_use_in_list=*/true);
   rv += max_ack_delay.ToString(/*for_use_in_list=*/true);
-  rv += min_ack_delay_us.ToString(/*for_use_in_list=*/true);
   if (min_ack_delay_us_draft10.has_value()) {
     absl::StrAppend(&rv, " ", TransportParameterIdToString(kMinAckDelayDraft10),
                     " ", *min_ack_delay_us_draft10);
@@ -527,8 +523,6 @@
                          kMaxAckDelayExponentTransportParam),
       max_ack_delay(kMaxAckDelay, kDefaultMaxAckDelayTransportParam, 0,
                     kMaxMaxAckDelayTransportParam),
-      min_ack_delay_us(kMinAckDelay, 0, 0,
-                       kMaxMaxAckDelayTransportParam * kNumMicrosPerMilli),
       disable_active_migration(false),
       active_connection_id_limit(kActiveConnectionIdLimit,
                                  kDefaultActiveConnectionIdLimitTransportParam,
@@ -562,7 +556,6 @@
       initial_max_streams_uni(other.initial_max_streams_uni),
       ack_delay_exponent(other.ack_delay_exponent),
       max_ack_delay(other.max_ack_delay),
-      min_ack_delay_us(other.min_ack_delay_us),
       min_ack_delay_us_draft10(other.min_ack_delay_us_draft10),
       disable_active_migration(other.disable_active_migration),
       active_connection_id_limit(other.active_connection_id_limit),
@@ -603,7 +596,6 @@
             rhs.initial_max_streams_uni.value() &&
         ack_delay_exponent.value() == rhs.ack_delay_exponent.value() &&
         max_ack_delay.value() == rhs.max_ack_delay.value() &&
-        min_ack_delay_us.value() == rhs.min_ack_delay_us.value() &&
         min_ack_delay_us_draft10 == rhs.min_ack_delay_us_draft10 &&
         disable_active_migration == rhs.disable_active_migration &&
         active_connection_id_limit.value() ==
@@ -697,6 +689,12 @@
     *error_details = "Server cannot send initial round trip time";
     return false;
   }
+  if (min_ack_delay_us_draft10.has_value() &&
+      (*min_ack_delay_us_draft10 >
+       (max_ack_delay.value() * kNumMicrosPerMilli))) {
+    *error_details = "min_ack_delay cannot be larger than max_ack_delay";
+    return false;
+  }
   if (version_information.has_value()) {
     const QuicVersionLabel& chosen_version =
         version_information->chosen_version;
@@ -728,7 +726,7 @@
       initial_max_stream_data_uni.IsValid() &&
       initial_max_streams_bidi.IsValid() && initial_max_streams_uni.IsValid() &&
       ack_delay_exponent.IsValid() && max_ack_delay.IsValid() &&
-      min_ack_delay_us.IsValid() && active_connection_id_limit.IsValid() &&
+      active_connection_id_limit.IsValid() &&
       max_datagram_frame_size.IsValid() && initial_round_trip_time_us.IsValid();
   if (!ok) {
     *error_details = "Invalid transport parameters " + this->ToString();
@@ -795,7 +793,6 @@
       kIntegerParameterLength +           // initial_max_streams_uni
       kIntegerParameterLength +           // ack_delay_exponent
       kIntegerParameterLength +           // max_ack_delay
-      kIntegerParameterLength +           // min_ack_delay_us
       kIntegerParameterLength +           // min_ack_delay_us_draft10
       kTypeAndValueLength +               // disable_active_migration
       kPreferredAddressParameterLength +  // preferred_address
@@ -823,7 +820,6 @@
       TransportParameters::kInitialMaxStreamsUni,
       TransportParameters::kAckDelayExponent,
       TransportParameters::kMaxAckDelay,
-      TransportParameters::kMinAckDelay,
       TransportParameters::kMinAckDelayDraft10,
       TransportParameters::kActiveConnectionIdLimit,
       TransportParameters::kMaxDatagramFrameSize,
@@ -1027,10 +1023,6 @@
           return false;
         }
       } break;
-      // min_ack_delay_us
-      case TransportParameters::kMinAckDelay: {
-        QUICHE_DCHECK(in.min_ack_delay_us.value() == 0);
-      } break;
       // min_ack_delay_us_draft10
       case TransportParameters::kMinAckDelayDraft10: {
         if (!in.min_ack_delay_us_draft10.has_value()) {
@@ -1608,10 +1600,6 @@
           out->version_information->other_versions.push_back(other_version);
         }
       } break;
-      case TransportParameters::kMinAckDelay:
-        parse_success =
-            out->min_ack_delay_us.Read(&value_reader, error_details);
-        break;
       case TransportParameters::kMinAckDelayDraft10: {
         if (out->min_ack_delay_us_draft10.has_value()) {
           *error_details = "Received a second min_ack_delay_us_draft10";
diff --git a/quiche/quic/core/crypto/transport_parameters.h b/quiche/quic/core/crypto/transport_parameters.h
index 4696278..7467814 100644
--- a/quiche/quic/core/crypto/transport_parameters.h
+++ b/quiche/quic/core/crypto/transport_parameters.h
@@ -223,9 +223,6 @@
   // delay sending acknowledgments.
   IntegerParameter max_ack_delay;
 
-  // Minimum amount of time in microseconds by which the endpoint will
-  // delay sending acknowledgments. Used to enable sender control of ack delay.
-  IntegerParameter min_ack_delay_us;
   // There is no "default" value for this. If it is not nullopt, it should be
   // sent regardless of the default value. Even if the incoming value matches
   // the default, it indicates readiness to receive ACK_FREQUENCY and
diff --git a/quiche/quic/core/crypto/transport_parameters_test.cc b/quiche/quic/core/crypto/transport_parameters_test.cc
index fbdf9f3..e314ede 100644
--- a/quiche/quic/core/crypto/transport_parameters_test.cc
+++ b/quiche/quic/core/crypto/transport_parameters_test.cc
@@ -645,7 +645,6 @@
             new_params.initial_max_streams_uni.value());
   EXPECT_EQ(kAckDelayExponentForTest, new_params.ack_delay_exponent.value());
   EXPECT_EQ(kMaxAckDelayForTest, new_params.max_ack_delay.value());
-  EXPECT_EQ(0, new_params.min_ack_delay_us.value());
   EXPECT_EQ(kMinAckDelayUsForTest, *new_params.min_ack_delay_us_draft10);
   EXPECT_EQ(kFakeDisableMigration, new_params.disable_active_migration);
   EXPECT_EQ(kFakeReliableStreamReset, new_params.reliable_stream_reset);
@@ -917,7 +916,6 @@
             new_params.initial_max_streams_uni.value());
   EXPECT_EQ(kAckDelayExponentForTest, new_params.ack_delay_exponent.value());
   EXPECT_EQ(kMaxAckDelayForTest, new_params.max_ack_delay.value());
-  EXPECT_EQ(0, new_params.min_ack_delay_us.value());
   EXPECT_EQ(kMinAckDelayUsForTest, *new_params.min_ack_delay_us_draft10);
   EXPECT_EQ(kFakeDisableMigration, new_params.disable_active_migration);
   EXPECT_EQ(kFakeReliableStreamReset, new_params.reliable_stream_reset);
@@ -1050,7 +1048,6 @@
   orig_params.initial_max_streams_uni.set_value(kFakeInitialMaxStreamsUni);
   orig_params.ack_delay_exponent.set_value(kAckDelayExponentForTest);
   orig_params.max_ack_delay.set_value(kMaxAckDelayForTest);
-  orig_params.min_ack_delay_us.set_value(0);
   orig_params.min_ack_delay_us_draft10 = kMinAckDelayUsForTest;
   orig_params.disable_active_migration = kFakeDisableMigration;
   orig_params.reliable_stream_reset = kFakeReliableStreamReset;
@@ -1096,7 +1093,6 @@
   orig_params.initial_max_streams_uni.set_value(kFakeInitialMaxStreamsUni);
   orig_params.ack_delay_exponent.set_value(kAckDelayExponentForTest);
   orig_params.max_ack_delay.set_value(kMaxAckDelayForTest);
-  orig_params.min_ack_delay_us.set_value(0);
   orig_params.min_ack_delay_us_draft10 = kMinAckDelayUsForTest;
   orig_params.disable_active_migration = kFakeDisableMigration;
   orig_params.reliable_stream_reset = kFakeReliableStreamReset;
@@ -1156,7 +1152,6 @@
         kFakeInitialMaxStreamsUni);
     original_params_.ack_delay_exponent.set_value(kAckDelayExponentForTest);
     original_params_.max_ack_delay.set_value(kMaxAckDelayForTest);
-    original_params_.min_ack_delay_us.set_value(0);
     original_params_.min_ack_delay_us_draft10 = kMinAckDelayUsForTest;
     original_params_.disable_active_migration = kFakeDisableMigration;
     original_params_.reliable_stream_reset = kFakeReliableStreamReset;
diff --git a/quiche/quic/core/quic_config.cc b/quiche/quic/core/quic_config.cc
index 01073f5..d44cad4 100644
--- a/quiche/quic/core/quic_config.cc
+++ b/quiche/quic/core/quic_config.cc
@@ -448,7 +448,6 @@
       alternate_server_address_ipv4_(kASAD, PRESENCE_OPTIONAL),
       stateless_reset_token_(kSRST, PRESENCE_OPTIONAL),
       max_ack_delay_ms_(kMAD, PRESENCE_OPTIONAL),
-      min_ack_delay_ms_(0, PRESENCE_OPTIONAL),
       min_ack_delay_ms_draft10_(0, PRESENCE_OPTIONAL),
       ack_delay_exponent_(kADE, PRESENCE_OPTIONAL),
       max_udp_payload_size_(0, PRESENCE_OPTIONAL),
@@ -646,12 +645,12 @@
   return min_ack_delay_ms_draft10_.GetSendValue();
 }
 
-bool QuicConfig::HasReceivedMinAckDelayMs() const {
-  return min_ack_delay_ms_.HasReceivedValue();
+bool QuicConfig::HasReceivedMinAckDelayDraft10Ms() const {
+  return min_ack_delay_ms_draft10_.HasReceivedValue();
 }
 
-uint32_t QuicConfig::ReceivedMinAckDelayMs() const {
-  return min_ack_delay_ms_.GetReceivedValue();
+uint32_t QuicConfig::ReceivedMinAckDelayDraft10Ms() const {
+  return min_ack_delay_ms_draft10_.GetReceivedValue();
 }
 
 void QuicConfig::SetAckDelayExponentToSend(uint32_t exponent) {
@@ -1229,10 +1228,6 @@
   params->initial_max_streams_uni.set_value(
       GetMaxUnidirectionalStreamsToSend());
   params->max_ack_delay.set_value(GetMaxAckDelayToSendMs());
-  if (min_ack_delay_ms_.HasSendValue()) {
-    params->min_ack_delay_us.set_value(min_ack_delay_ms_.GetSendValue() *
-                                       kNumMicrosPerMilli);
-  }
   if (min_ack_delay_ms_draft10_.HasSendValue()) {
     params->min_ack_delay_us_draft10 =
         min_ack_delay_ms_draft10_.GetSendValue() * kNumMicrosPerMilli;
@@ -1392,22 +1387,6 @@
                 &params.preferred_address->stateless_reset_token.front()));
       }
     }
-    if (params.min_ack_delay_us.value() > 0 &&
-        params.min_ack_delay_us_draft10.has_value()) {
-      *error_details =
-          "Two versions of MinAckDelay. ACK_FREQUENCY frames are "
-          "ambiguous.";
-      return IETF_QUIC_PROTOCOL_VIOLATION;
-    }
-    if (params.min_ack_delay_us.value() != 0) {
-      if (params.min_ack_delay_us.value() >
-          params.max_ack_delay.value() * kNumMicrosPerMilli) {
-        *error_details = "MinAckDelay is greater than MaxAckDelay.";
-        return IETF_QUIC_PROTOCOL_VIOLATION;
-      }
-      min_ack_delay_ms_.SetReceivedValue(params.min_ack_delay_us.value() /
-                                         kNumMicrosPerMilli);
-    }
     if (params.min_ack_delay_us_draft10.has_value()) {
       if (*params.min_ack_delay_us_draft10 >
           params.max_ack_delay.value() * kNumMicrosPerMilli) {
diff --git a/quiche/quic/core/quic_config.h b/quiche/quic/core/quic_config.h
index d12200a..90974b0 100644
--- a/quiche/quic/core/quic_config.h
+++ b/quiche/quic/core/quic_config.h
@@ -481,8 +481,8 @@
   void SetMinAckDelayDraft10Ms(uint64_t min_ack_delay_ms);
   bool HasMinAckDelayDraft10ToSend() const;
   uint64_t GetMinAckDelayDraft10ToSendMs() const;
-  bool HasReceivedMinAckDelayMs() const;
-  uint32_t ReceivedMinAckDelayMs() const;
+  bool HasReceivedMinAckDelayDraft10Ms() const;
+  uint32_t ReceivedMinAckDelayDraft10Ms() const;
 
   void SetAckDelayExponentToSend(uint32_t exponent);
   uint32_t GetAckDelayExponentToSend() const;
@@ -668,9 +668,9 @@
   // Uses the max_ack_delay transport parameter in IETF QUIC.
   QuicFixedUint32 max_ack_delay_ms_;
 
-  // Minimum ack delay. Used to enable sender control of max_ack_delay.
-  // Uses the min_ack_delay transport parameter in IETF QUIC extension.
-  QuicFixedUint32 min_ack_delay_ms_;
+  // Minimum ack delay. Used to enable sender control of min_ack_delay.
+  // Uses the min_ack_delay transport parameter in IETF QUIC extension,
+  // draft-10 through -11.
   QuicFixedUint62 min_ack_delay_ms_draft10_;
 
   // The sent exponent is the exponent that this node uses when serializing an
diff --git a/quiche/quic/core/quic_config_test.cc b/quiche/quic/core/quic_config_test.cc
index 2576a00..5799fd7 100644
--- a/quiche/quic/core/quic_config_test.cc
+++ b/quiche/quic/core/quic_config_test.cc
@@ -440,29 +440,6 @@
             config_.IdleNetworkTimeout());
 }
 
-TEST_P(QuicConfigTest, ReceivedInvalidMinAckDelayInTransportParameter) {
-  if (!version_.UsesTls()) {
-    // TransportParameters are only used for QUIC+TLS.
-    return;
-  }
-  TransportParameters params;
-
-  params.max_ack_delay.set_value(25 /*ms*/);
-  params.min_ack_delay_us.set_value(25 * kNumMicrosPerMilli + 1);
-  std::string error_details = "foobar";
-  EXPECT_THAT(config_.ProcessTransportParameters(
-                  params, /* is_resumption = */ false, &error_details),
-              IsError(IETF_QUIC_PROTOCOL_VIOLATION));
-  EXPECT_EQ("MinAckDelay is greater than MaxAckDelay.", error_details);
-
-  params.max_ack_delay.set_value(25 /*ms*/);
-  params.min_ack_delay_us.set_value(25 * kNumMicrosPerMilli);
-  EXPECT_THAT(config_.ProcessTransportParameters(
-                  params, /* is_resumption = */ false, &error_details),
-              IsQuicNoError());
-  EXPECT_TRUE(error_details.empty());
-}
-
 TEST_P(QuicConfigTest, ReceivedInvalidMinAckDelayDraft10InTransportParameter) {
   if (!version_.UsesTls()) {
     // TransportParameters are only used for QUIC+TLS.
@@ -486,22 +463,6 @@
   EXPECT_TRUE(error_details.empty());
 }
 
-TEST_P(QuicConfigTest, ReceivedBothMinAckDelayVersionsInTransportParameter) {
-  if (!version_.UsesTls()) {
-    // TransportParameters are only used for QUIC+TLS.
-    return;
-  }
-  TransportParameters params;
-  params.min_ack_delay_us.set_value(25 * kNumMicrosPerMilli);
-  params.min_ack_delay_us_draft10 = 25 * kNumMicrosPerMilli;
-  std::string error_details = "foobar";
-  EXPECT_THAT(config_.ProcessTransportParameters(
-                  params, /* is_resumption = */ false, &error_details),
-              IsError(IETF_QUIC_PROTOCOL_VIOLATION));
-  EXPECT_EQ("Two versions of MinAckDelay. ACK_FREQUENCY frames are ambiguous.",
-            error_details);
-}
-
 TEST_P(QuicConfigTest, FillTransportParams) {
   if (!version_.UsesTls()) {
     // TransportParameters are only used for QUIC+TLS.
@@ -713,7 +674,7 @@
   params.initial_max_streams_bidi.set_value(kDefaultMaxStreamsPerConnection);
   params.stateless_reset_token = CreateStatelessResetTokenForTest();
   params.max_ack_delay.set_value(kMaxAckDelayForTest);
-  params.min_ack_delay_us.set_value(kMinAckDelayUsForTest);
+  params.min_ack_delay_us_draft10 = kMinAckDelayUsForTest;
   params.ack_delay_exponent.set_value(kAckDelayExponentForTest);
   params.active_connection_id_limit.set_value(kActiveConnectionIdLimitForTest);
   params.original_destination_connection_id = TestConnectionId(0x1111);
@@ -761,7 +722,7 @@
   EXPECT_FALSE(config_.HasReceivedStatelessResetToken());
   EXPECT_FALSE(config_.HasReceivedMaxAckDelayMs());
   EXPECT_FALSE(config_.HasReceivedAckDelayExponent());
-  EXPECT_FALSE(config_.HasReceivedMinAckDelayMs());
+  EXPECT_FALSE(config_.HasReceivedMinAckDelayDraft10Ms());
   EXPECT_FALSE(config_.HasReceivedOriginalConnectionId());
   EXPECT_FALSE(config_.HasReceivedInitialSourceConnectionId());
   EXPECT_FALSE(config_.HasReceivedRetrySourceConnectionId());
@@ -820,8 +781,8 @@
   ASSERT_TRUE(config_.HasReceivedMaxAckDelayMs());
   EXPECT_EQ(config_.ReceivedMaxAckDelayMs(), kMaxAckDelayForTest);
 
-  ASSERT_TRUE(config_.HasReceivedMinAckDelayMs());
-  EXPECT_EQ(config_.ReceivedMinAckDelayMs(),
+  ASSERT_TRUE(config_.HasReceivedMinAckDelayDraft10Ms());
+  EXPECT_EQ(config_.ReceivedMinAckDelayDraft10Ms(),
             kMinAckDelayUsForTest / kNumMicrosPerMilli);
 
   ASSERT_TRUE(config_.HasReceivedAckDelayExponent());
diff --git a/quiche/quic/core/quic_connection.cc b/quiche/quic/core/quic_connection.cc
index c68a452..214414a 100644
--- a/quiche/quic/core/quic_connection.cc
+++ b/quiche/quic/core/quic_connection.cc
@@ -2112,7 +2112,7 @@
     return false;
   }
 
-  if (!can_receive_ack_frequency_frame_) {
+  if (!can_receive_ack_frequency_immediate_ack_) {
     QUIC_LOG_EVERY_N_SEC(ERROR, 120) << "Get unexpected AckFrequencyFrame.";
     return false;
   }
diff --git a/quiche/quic/core/quic_connection.h b/quiche/quic/core/quic_connection.h
index 42875f5..a2f7bfa 100644
--- a/quiche/quic/core/quic_connection.h
+++ b/quiche/quic/core/quic_connection.h
@@ -1315,14 +1315,6 @@
       std::unique_ptr<QuicPathValidator::ResultDelegate> result_delegate,
       PathValidationReason reason);
 
-  bool can_receive_ack_frequency_frame() const {
-    return can_receive_ack_frequency_frame_;
-  }
-
-  void set_can_receive_ack_frequency_frame() {
-    can_receive_ack_frequency_frame_ = true;
-  }
-
   void set_can_receive_ack_frequency_immediate_ack(bool can_receive) {
     can_receive_ack_frequency_immediate_ack_ = can_receive;
   }
@@ -2476,7 +2468,6 @@
       GetQuicFlag(quic_anti_amplification_factor);
 
   // True if AckFrequencyFrame is supported.
-  bool can_receive_ack_frequency_frame_ = false;
   bool can_receive_ack_frequency_immediate_ack_ = false;
 
   // Indicate whether coalescing is done.
diff --git a/quiche/quic/core/quic_connection_test.cc b/quiche/quic/core/quic_connection_test.cc
index fc93634..1950e10 100644
--- a/quiche/quic/core/quic_connection_test.cc
+++ b/quiche/quic/core/quic_connection_test.cc
@@ -3584,7 +3584,7 @@
   if (!GetParam().version.HasIetfQuicFrames()) {
     return;
   }
-  connection_.set_can_receive_ack_frequency_frame();
+  connection_.set_can_receive_ack_frequency_immediate_ack(true);
 
   // Expect 13 acks, every 3rd packet including the first packet with
   // AckFrequencyFrame.
@@ -15799,7 +15799,6 @@
   connection_.CreateConnectionIdManager();
   QuicConnectionPeer::GetSelfIssuedConnectionIdManager(&connection_)
       ->MaybeSendNewConnectionIds();
-  connection_.set_can_receive_ack_frequency_frame();
   connection_.set_can_receive_ack_frequency_immediate_ack(true);
 
   QuicAckFrame ack_frame = InitAckFrame(1);
diff --git a/quiche/quic/core/quic_sent_packet_manager.cc b/quiche/quic/core/quic_sent_packet_manager.cc
index 1887e86..2e10bbc 100644
--- a/quiche/quic/core/quic_sent_packet_manager.cc
+++ b/quiche/quic/core/quic_sent_packet_manager.cc
@@ -12,16 +12,15 @@
 #include <utility>
 #include <vector>
 
-#include "quiche/quic/core/congestion_control/general_loss_algorithm.h"
 #include "quiche/quic/core/congestion_control/pacing_sender.h"
 #include "quiche/quic/core/congestion_control/send_algorithm_interface.h"
 #include "quiche/quic/core/crypto/crypto_protocol.h"
 #include "quiche/quic/core/frames/quic_ack_frequency_frame.h"
-#include "quiche/quic/core/proto/cached_network_parameters_proto.h"
 #include "quiche/quic/core/quic_connection_stats.h"
 #include "quiche/quic/core/quic_constants.h"
 #include "quiche/quic/core/quic_packet_number.h"
 #include "quiche/quic/core/quic_tag.h"
+#include "quiche/quic/core/quic_time.h"
 #include "quiche/quic/core/quic_transmission_info.h"
 #include "quiche/quic/core/quic_types.h"
 #include "quiche/quic/core/quic_utils.h"
@@ -124,9 +123,9 @@
   }
   if (GetQuicReloadableFlag(quic_can_send_ack_frequency) &&
       perspective == Perspective::IS_SERVER) {
-    if (config.HasReceivedMinAckDelayMs()) {
-      peer_min_ack_delay_ =
-          QuicTime::Delta::FromMilliseconds(config.ReceivedMinAckDelayMs());
+    if (config.HasReceivedMinAckDelayDraft10Ms()) {
+      peer_min_ack_delay_ = QuicTime::Delta::FromMilliseconds(
+          config.ReceivedMinAckDelayDraft10Ms());
     }
     if (config.HasClientSentConnectionOption(kAFF1, perspective)) {
       use_smoothed_rtt_in_ack_delay_ = true;
diff --git a/quiche/quic/test_tools/quic_config_peer.cc b/quiche/quic/test_tools/quic_config_peer.cc
index 165fd72..f599380 100644
--- a/quiche/quic/test_tools/quic_config_peer.cc
+++ b/quiche/quic/test_tools/quic_config_peer.cc
@@ -97,7 +97,7 @@
 // static
 void QuicConfigPeer::SetReceivedMinAckDelayMs(QuicConfig* config,
                                               uint32_t min_ack_delay_ms) {
-  config->min_ack_delay_ms_.SetReceivedValue(min_ack_delay_ms);
+  config->min_ack_delay_ms_draft10_.SetReceivedValue(min_ack_delay_ms);
 }
 
 // static