diff --git a/quic/core/quic_connection.cc b/quic/core/quic_connection.cc
index 9a74a33..f8e3f6e 100644
--- a/quic/core/quic_connection.cc
+++ b/quic/core/quic_connection.cc
@@ -4601,14 +4601,9 @@
       new_value);
 }
 
-size_t QuicConnection::ack_frequency_before_ack_decimation() const {
-  return uber_received_packet_manager_.ack_frequency_before_ack_decimation();
-}
-
-void QuicConnection::set_ack_frequency_before_ack_decimation(size_t new_value) {
+void QuicConnection::set_ack_frequency(size_t new_value) {
   DCHECK_GT(new_value, 0u);
-  uber_received_packet_manager_.set_ack_frequency_before_ack_decimation(
-      new_value);
+  uber_received_packet_manager_.set_ack_frequency(new_value);
 }
 
 const QuicAckFrame& QuicConnection::ack_frame() const {
diff --git a/quic/core/quic_connection.h b/quic/core/quic_connection.h
index 9439adf..32eabef 100644
--- a/quic/core/quic_connection.h
+++ b/quic/core/quic_connection.h
@@ -897,8 +897,7 @@
   size_t min_received_before_ack_decimation() const;
   void set_min_received_before_ack_decimation(size_t new_value);
 
-  size_t ack_frequency_before_ack_decimation() const;
-  void set_ack_frequency_before_ack_decimation(size_t new_value);
+  void set_ack_frequency(size_t new_value);
 
   // If |defer| is true, configures the connection to defer sending packets in
   // response to an ACK to the SendAlarm. If |defer| is false, packets may be
diff --git a/quic/core/quic_connection_test.cc b/quic/core/quic_connection_test.cc
index ac301c2..5db917f 100644
--- a/quic/core/quic_connection_test.cc
+++ b/quic/core/quic_connection_test.cc
@@ -2936,7 +2936,7 @@
 }
 
 TEST_P(QuicConnectionTest, AckSentEveryNthPacket) {
-  connection_.set_ack_frequency_before_ack_decimation(3);
+  connection_.set_ack_frequency(3);
 
   EXPECT_CALL(visitor_, OnSuccessfulVersionNegotiation(_));
   EXPECT_CALL(visitor_, OnStreamFrame(_)).Times(39);
diff --git a/quic/core/quic_received_packet_manager.cc b/quic/core/quic_received_packet_manager.cc
index 324767c..9cc6c29 100644
--- a/quic/core/quic_received_packet_manager.cc
+++ b/quic/core/quic_received_packet_manager.cc
@@ -44,8 +44,7 @@
       ack_mode_(ACK_DECIMATION),
       num_retransmittable_packets_received_since_last_ack_sent_(0),
       min_received_before_ack_decimation_(kMinReceivedBeforeAckDecimation),
-      ack_frequency_before_ack_decimation_(
-          kDefaultRetransmittablePacketsBeforeAck),
+      ack_frequency_(kDefaultRetransmittablePacketsBeforeAck),
       ack_decimation_delay_(kAckDecimationDelay),
       unlimited_ack_decimation_(false),
       fast_ack_after_quiescence_(false),
@@ -216,6 +215,38 @@
          ack_frame_.packets.Min() >= peer_least_packet_awaiting_ack_);
 }
 
+QuicTime::Delta QuicReceivedPacketManager::GetMaxAckDelay(
+    QuicPacketNumber last_received_packet_number,
+    const RttStats& rtt_stats) const {
+  DCHECK(simplify_received_packet_manager_ack_);
+  if (last_received_packet_number <
+      PeerFirstSendingPacketNumber() + min_received_before_ack_decimation_) {
+    return local_max_ack_delay_;
+  }
+
+  // Wait for the minimum of the ack decimation delay or the delayed ack time
+  // before sending an ack.
+  QuicTime::Delta ack_delay = std::min(
+      local_max_ack_delay_, rtt_stats.min_rtt() * ack_decimation_delay_);
+  if (GetQuicReloadableFlag(quic_ack_delay_alarm_granularity)) {
+    QUIC_RELOADABLE_FLAG_COUNT(quic_ack_delay_alarm_granularity);
+    ack_delay = std::max(ack_delay, kAlarmGranularity);
+  }
+  return ack_delay;
+}
+
+void QuicReceivedPacketManager::MaybeUpdateAckFrequency(
+    QuicPacketNumber last_received_packet_number) {
+  DCHECK(simplify_received_packet_manager_ack_);
+  if (last_received_packet_number <
+      PeerFirstSendingPacketNumber() + min_received_before_ack_decimation_) {
+    return;
+  }
+  ack_frequency_ = unlimited_ack_decimation_
+                       ? std::numeric_limits<size_t>::max()
+                       : kMaxRetransmittablePacketsBeforeAck;
+}
+
 void QuicReceivedPacketManager::MaybeUpdateAckTimeout(
     bool should_last_packet_instigate_acks,
     QuicPacketNumber last_received_packet_number,
@@ -240,6 +271,26 @@
   }
 
   ++num_retransmittable_packets_received_since_last_ack_sent_;
+
+  if (simplify_received_packet_manager_ack_) {
+    QUIC_RELOADABLE_FLAG_COUNT(quic_simplify_received_packet_manager_ack);
+    MaybeUpdateAckFrequency(last_received_packet_number);
+    if (num_retransmittable_packets_received_since_last_ack_sent_ >=
+        ack_frequency_) {
+      ack_timeout_ = now;
+      return;
+    }
+
+    if (HasNewMissingPackets()) {
+      ack_timeout_ = now;
+      return;
+    }
+
+    MaybeUpdateAckTimeoutTo(
+        now + GetMaxAckDelay(last_received_packet_number, *rtt_stats));
+    return;
+  }
+
   if (ack_mode_ != TCP_ACKING &&
       last_received_packet_number >= PeerFirstSendingPacketNumber() +
                                          min_received_before_ack_decimation_) {
@@ -269,7 +320,7 @@
   } else {
     // Ack with a timer or every 2 packets by default.
     if (num_retransmittable_packets_received_since_last_ack_sent_ >=
-        ack_frequency_before_ack_decimation_) {
+        ack_frequency_) {
       ack_timeout_ = now;
     } else if (fast_ack_after_quiescence_ &&
                (now - time_of_previous_received_packet_) >
diff --git a/quic/core/quic_received_packet_manager.h b/quic/core/quic_received_packet_manager.h
index a350462..5f5525a 100644
--- a/quic/core/quic_received_packet_manager.h
+++ b/quic/core/quic_received_packet_manager.h
@@ -113,15 +113,11 @@
     min_received_before_ack_decimation_ = new_value;
   }
 
-  size_t ack_frequency_before_ack_decimation() const {
-    return ack_frequency_before_ack_decimation_;
-  }
-  void set_ack_frequency_before_ack_decimation(size_t new_value) {
+  void set_ack_frequency(size_t new_value) {
     DCHECK_GT(new_value, 0u);
-    ack_frequency_before_ack_decimation_ = new_value;
+    ack_frequency_ = new_value;
   }
 
-  QuicTime::Delta local_max_ack_delay() const { return local_max_ack_delay_; }
   void set_local_max_ack_delay(QuicTime::Delta local_max_ack_delay) {
     local_max_ack_delay_ = local_max_ack_delay;
   }
@@ -136,6 +132,12 @@
   // Sets ack_timeout_ to |time| if ack_timeout_ is not initialized or > time.
   void MaybeUpdateAckTimeoutTo(QuicTime time);
 
+  // Maybe update ack_frequency_ when condition meets.
+  void MaybeUpdateAckFrequency(QuicPacketNumber last_received_packet_number);
+
+  QuicTime::Delta GetMaxAckDelay(QuicPacketNumber last_received_packet_number,
+                                 const RttStats& rtt_stats) const;
+
   // Least packet number of the the packet sent by the peer for which it
   // hasn't received an ack.
   QuicPacketNumber peer_least_packet_awaiting_ack_;
@@ -168,8 +170,8 @@
   QuicPacketCount num_retransmittable_packets_received_since_last_ack_sent_;
   // Ack decimation will start happening after this many packets are received.
   size_t min_received_before_ack_decimation_;
-  // Before ack decimation starts (if enabled), we ack every n-th packet.
-  size_t ack_frequency_before_ack_decimation_;
+  // Ack every n-th packet.
+  size_t ack_frequency_;
   // The max delay in fraction of min_rtt to use when sending decimated acks.
   float ack_decimation_delay_;
   // When true, removes ack decimation's max number of packets(10) before
@@ -200,6 +202,10 @@
   const bool remove_unused_ack_options_ =
       GetQuicReloadableFlag(quic_remove_unused_ack_options);
 
+  const bool simplify_received_packet_manager_ack_ =
+      remove_unused_ack_options_ &&
+      GetQuicReloadableFlag(quic_simplify_received_packet_manager_ack);
+
   // Last sent largest acked, which gets updated when ACK was successfully sent.
   QuicPacketNumber last_sent_largest_acked_;
 };
diff --git a/quic/core/quic_received_packet_manager_test.cc b/quic/core/quic_received_packet_manager_test.cc
index 56b6643..ca56662 100644
--- a/quic/core/quic_received_packet_manager_test.cc
+++ b/quic/core/quic_received_packet_manager_test.cc
@@ -352,7 +352,7 @@
 
 TEST_P(QuicReceivedPacketManagerTest, AckSentEveryNthPacket) {
   EXPECT_FALSE(HasPendingAck());
-  received_manager_.set_ack_frequency_before_ack_decimation(3);
+  received_manager_.set_ack_frequency(3);
 
   // Receives packets 1 - 39.
   for (size_t i = 1; i <= 39; ++i) {
diff --git a/quic/core/uber_received_packet_manager.cc b/quic/core/uber_received_packet_manager.cc
index 723ac30..b017a84 100644
--- a/quic/core/uber_received_packet_manager.cc
+++ b/quic/core/uber_received_packet_manager.cc
@@ -193,14 +193,9 @@
   }
 }
 
-size_t UberReceivedPacketManager::ack_frequency_before_ack_decimation() const {
-  return received_packet_managers_[0].ack_frequency_before_ack_decimation();
-}
-
-void UberReceivedPacketManager::set_ack_frequency_before_ack_decimation(
-    size_t new_value) {
+void UberReceivedPacketManager::set_ack_frequency(size_t new_value) {
   for (auto& received_packet_manager : received_packet_managers_) {
-    received_packet_manager.set_ack_frequency_before_ack_decimation(new_value);
+    received_packet_manager.set_ack_frequency(new_value);
   }
 }
 
@@ -221,13 +216,6 @@
   }
 }
 
-QuicTime::Delta UberReceivedPacketManager::max_ack_delay() {
-  if (!supports_multiple_packet_number_spaces_) {
-    return received_packet_managers_[0].local_max_ack_delay();
-  }
-  return received_packet_managers_[APPLICATION_DATA].local_max_ack_delay();
-}
-
 void UberReceivedPacketManager::set_max_ack_delay(
     QuicTime::Delta max_ack_delay) {
   if (!supports_multiple_packet_number_spaces_) {
diff --git a/quic/core/uber_received_packet_manager.h b/quic/core/uber_received_packet_manager.h
index d76ce13..9cfa247 100644
--- a/quic/core/uber_received_packet_manager.h
+++ b/quic/core/uber_received_packet_manager.h
@@ -78,8 +78,7 @@
   size_t min_received_before_ack_decimation() const;
   void set_min_received_before_ack_decimation(size_t new_value);
 
-  size_t ack_frequency_before_ack_decimation() const;
-  void set_ack_frequency_before_ack_decimation(size_t new_value);
+  void set_ack_frequency(size_t new_value);
 
   bool supports_multiple_packet_number_spaces() const {
     return supports_multiple_packet_number_spaces_;
@@ -91,8 +90,7 @@
 
   void set_max_ack_ranges(size_t max_ack_ranges);
 
-  // Get and set the max ack delay to use for application data.
-  QuicTime::Delta max_ack_delay();
+  // Set the max ack delay to use for application data.
   void set_max_ack_delay(QuicTime::Delta max_ack_delay);
 
   void set_save_timestamps(bool save_timestamps);
diff --git a/quic/core/uber_received_packet_manager_test.cc b/quic/core/uber_received_packet_manager_test.cc
index 41dadcb..1b5a196 100644
--- a/quic/core/uber_received_packet_manager_test.cc
+++ b/quic/core/uber_received_packet_manager_test.cc
@@ -299,7 +299,7 @@
 
 TEST_F(UberReceivedPacketManagerTest, AckSentEveryNthPacket) {
   EXPECT_FALSE(HasPendingAck());
-  manager_->set_ack_frequency_before_ack_decimation(3);
+  manager_->set_ack_frequency(3);
 
   // Receives packets 1 - 39.
   for (size_t i = 1; i <= 39; ++i) {
