diff --git a/quic/core/quic_config.cc b/quic/core/quic_config.cc
index 5a3e769..a06e698 100644
--- a/quic/core/quic_config.cc
+++ b/quic/core/quic_config.cc
@@ -590,16 +590,10 @@
           ContainsQuicTag(client_connection_options_.GetSendValues(), tag));
 }
 
-void QuicConfig::SetIdleNetworkTimeout(
-    QuicTime::Delta max_idle_network_timeout,
-    QuicTime::Delta default_idle_network_timeout) {
-  idle_network_timeout_seconds_.set(
-      static_cast<uint32_t>(max_idle_network_timeout.ToSeconds()),
-      static_cast<uint32_t>(default_idle_network_timeout.ToSeconds()));
-}
-
 void QuicConfig::SetIdleNetworkTimeout(QuicTime::Delta idle_network_timeout) {
-  SetIdleNetworkTimeout(idle_network_timeout, idle_network_timeout);
+  idle_network_timeout_seconds_.set(
+      static_cast<uint32_t>(idle_network_timeout.ToSeconds()),
+      static_cast<uint32_t>(idle_network_timeout.ToSeconds()));
 }
 
 QuicTime::Delta QuicConfig::IdleNetworkTimeout() const {
@@ -956,8 +950,7 @@
 }
 
 void QuicConfig::SetDefaults() {
-  idle_network_timeout_seconds_.set(kMaximumIdleTimeoutSecs,
-                                    kDefaultIdleTimeoutSecs);
+  SetIdleNetworkTimeout(QuicTime::Delta::FromSeconds(kMaximumIdleTimeoutSecs));
   SetMaxBidirectionalStreamsToSend(kDefaultMaxStreamsPerConnection);
   SetMaxUnidirectionalStreamsToSend(kDefaultMaxStreamsPerConnection);
   max_time_before_crypto_handshake_ =
diff --git a/quic/core/quic_config.h b/quic/core/quic_config.h
index 2a46ae6..0009cda 100644
--- a/quic/core/quic_config.h
+++ b/quic/core/quic_config.h
@@ -333,10 +333,6 @@
   bool HasClientRequestedIndependentOption(QuicTag tag,
                                            Perspective perspective) const;
 
-  void SetIdleNetworkTimeout(QuicTime::Delta max_idle_network_timeout,
-                             QuicTime::Delta default_idle_network_timeout);
-
-  // Sets both default and max to the same value.
   void SetIdleNetworkTimeout(QuicTime::Delta idle_network_timeout);
 
   QuicTime::Delta IdleNetworkTimeout() const;
@@ -376,10 +372,6 @@
     return max_idle_time_before_crypto_handshake_;
   }
 
-  QuicNegotiableUint32 idle_network_timeout_seconds() const {
-    return idle_network_timeout_seconds_;
-  }
-
   void set_max_undecryptable_packets(size_t max_undecryptable_packets) {
     max_undecryptable_packets_ = max_undecryptable_packets;
   }
diff --git a/quic/core/quic_config_test.cc b/quic/core/quic_config_test.cc
index 9ce6024..cb8d3be 100644
--- a/quic/core/quic_config_test.cc
+++ b/quic/core/quic_config_test.cc
@@ -89,8 +89,7 @@
       kInitialStreamFlowControlWindowForTest);
   config_.SetInitialSessionFlowControlWindowToSend(
       kInitialSessionFlowControlWindowForTest);
-  config_.SetIdleNetworkTimeout(QuicTime::Delta::FromSeconds(5),
-                                QuicTime::Delta::FromSeconds(2));
+  config_.SetIdleNetworkTimeout(QuicTime::Delta::FromSeconds(5));
   CryptoHandshakeMessage msg;
   config_.ToHandshakeMessage(&msg, GetParam());
 
@@ -115,8 +114,7 @@
   QuicTagVector cgst;
   cgst.push_back(kQBIC);
   client_config.SetIdleNetworkTimeout(
-      QuicTime::Delta::FromSeconds(2 * kMaximumIdleTimeoutSecs),
-      QuicTime::Delta::FromSeconds(kMaximumIdleTimeoutSecs));
+      QuicTime::Delta::FromSeconds(2 * kMaximumIdleTimeoutSecs));
   client_config.SetInitialRoundTripTimeUsToSend(10 * kNumMicrosPerMilli);
   client_config.SetInitialStreamFlowControlWindowToSend(
       2 * kInitialStreamFlowControlWindowForTest);
@@ -373,10 +371,9 @@
 }
 
 TEST_P(QuicConfigTest, IncomingLargeIdleTimeoutTransportParameter) {
-  // Configure our default to 30s and max to 60s, then receive 120s from peer.
-  // Since the received value is above the max, we should then use the max.
-  config_.SetIdleNetworkTimeout(quic::QuicTime::Delta::FromSeconds(60),
-                                quic::QuicTime::Delta::FromSeconds(30));
+  // Configure our idle timeout to 60s, then receive 120s from peer.
+  // Since the received value is above ours, we should then use ours.
+  config_.SetIdleNetworkTimeout(quic::QuicTime::Delta::FromSeconds(60));
   TransportParameters params;
   params.idle_timeout_milliseconds.set_value(120000);
 
diff --git a/quic/core/quic_connection_test.cc b/quic/core/quic_connection_test.cc
index a9ee2af..5c3cbad 100644
--- a/quic/core/quic_connection_test.cc
+++ b/quic/core/quic_connection_test.cc
@@ -4251,8 +4251,8 @@
   QuicTagVector options;
   options.push_back(kTLPR);
   config.SetConnectionOptionsToSend(options);
-  QuicConfigPeer::ReceiveIdleNetworkTimeout(&config, SERVER,
-                                            kDefaultIdleTimeoutSecs);
+  QuicConfigPeer::ReceiveIdleNetworkTimeout(
+      &config, SERVER, QuicTime::Delta::FromSeconds(kMaximumIdleTimeoutSecs));
   connection_.SetFromConfig(config);
   connection_.SetMaxTailLossProbes(1);
 
@@ -5781,7 +5781,7 @@
   client_config.SetInitialSessionFlowControlWindowToSend(
       kInitialSessionFlowControlWindowForTest);
   client_config.SetIdleNetworkTimeout(
-      QuicTime::Delta::FromSeconds(kDefaultIdleTimeoutSecs));
+      QuicTime::Delta::FromSeconds(kMaximumIdleTimeoutSecs));
   client_config.ToHandshakeMessage(&msg, connection_.transport_version());
   const QuicErrorCode error =
       config.ProcessPeerHello(msg, CLIENT, &error_details);
@@ -5790,7 +5790,7 @@
   connection_.SetFromConfig(config);
 
   const QuicTime::Delta default_idle_timeout =
-      QuicTime::Delta::FromSeconds(kDefaultIdleTimeoutSecs - 1);
+      QuicTime::Delta::FromSeconds(kMaximumIdleTimeoutSecs - 1);
   const QuicTime::Delta five_ms = QuicTime::Delta::FromMilliseconds(5);
   QuicTime default_timeout = clock_.ApproximateNow() + default_idle_timeout;
 
@@ -5870,7 +5870,7 @@
   client_config.SetInitialSessionFlowControlWindowToSend(
       kInitialSessionFlowControlWindowForTest);
   client_config.SetIdleNetworkTimeout(
-      QuicTime::Delta::FromSeconds(kDefaultIdleTimeoutSecs));
+      QuicTime::Delta::FromSeconds(kMaximumIdleTimeoutSecs));
   client_config.ToHandshakeMessage(&msg, connection_.transport_version());
   const QuicErrorCode error =
       config.ProcessPeerHello(msg, CLIENT, &error_details);
@@ -5879,7 +5879,7 @@
   connection_.SetFromConfig(config);
 
   const QuicTime::Delta default_idle_timeout =
-      QuicTime::Delta::FromSeconds(kDefaultIdleTimeoutSecs - 1);
+      QuicTime::Delta::FromSeconds(kMaximumIdleTimeoutSecs - 1);
   const QuicTime::Delta five_ms = QuicTime::Delta::FromMilliseconds(5);
   QuicTime default_timeout = clock_.ApproximateNow() + default_idle_timeout;
 
@@ -5931,7 +5931,7 @@
   client_config.SetInitialSessionFlowControlWindowToSend(
       kInitialSessionFlowControlWindowForTest);
   client_config.SetIdleNetworkTimeout(
-      QuicTime::Delta::FromSeconds(kDefaultIdleTimeoutSecs));
+      QuicTime::Delta::FromSeconds(kMaximumIdleTimeoutSecs));
   client_config.ToHandshakeMessage(&msg, connection_.transport_version());
   const QuicErrorCode error =
       config.ProcessPeerHello(msg, CLIENT, &error_details);
@@ -5940,7 +5940,7 @@
   connection_.SetFromConfig(config);
 
   const QuicTime::Delta default_idle_timeout =
-      QuicTime::Delta::FromSeconds(kDefaultIdleTimeoutSecs - 1);
+      QuicTime::Delta::FromSeconds(kMaximumIdleTimeoutSecs - 1);
   const QuicTime::Delta five_ms = QuicTime::Delta::FromMilliseconds(5);
   QuicTime default_timeout = clock_.ApproximateNow() + default_idle_timeout;
 
@@ -6103,8 +6103,8 @@
   QuicTagVector connection_options;
   connection_options.push_back(k5RTO);
   config.SetConnectionOptionsToSend(connection_options);
-  QuicConfigPeer::ReceiveIdleNetworkTimeout(&config, SERVER,
-                                            kDefaultIdleTimeoutSecs);
+  QuicConfigPeer::ReceiveIdleNetworkTimeout(
+      &config, SERVER, QuicTime::Delta::FromSeconds(kMaximumIdleTimeoutSecs));
   connection_.SetFromConfig(config);
 
   // Send stream data.
@@ -9875,8 +9875,8 @@
   connection_options.push_back(k1PTO);
   connection_options.push_back(k6PTO);
   config.SetConnectionOptionsToSend(connection_options);
-  QuicConfigPeer::ReceiveIdleNetworkTimeout(&config, SERVER,
-                                            kDefaultIdleTimeoutSecs);
+  QuicConfigPeer::ReceiveIdleNetworkTimeout(
+      &config, SERVER, QuicTime::Delta::FromSeconds(kMaximumIdleTimeoutSecs));
   EXPECT_CALL(*send_algorithm_, SetFromConfig(_, _));
   connection_.SetFromConfig(config);
   EXPECT_FALSE(connection_.GetRetransmissionAlarm()->IsSet());
@@ -9923,8 +9923,8 @@
   connection_options.push_back(k2PTO);
   connection_options.push_back(k7PTO);
   config.SetConnectionOptionsToSend(connection_options);
-  QuicConfigPeer::ReceiveIdleNetworkTimeout(&config, SERVER,
-                                            kDefaultIdleTimeoutSecs);
+  QuicConfigPeer::ReceiveIdleNetworkTimeout(
+      &config, SERVER, QuicTime::Delta::FromSeconds(kMaximumIdleTimeoutSecs));
   EXPECT_CALL(*send_algorithm_, SetFromConfig(_, _));
   connection_.SetFromConfig(config);
   EXPECT_FALSE(connection_.GetRetransmissionAlarm()->IsSet());
@@ -9969,8 +9969,8 @@
   QuicTagVector connection_options;
   connection_options.push_back(k2PTO);
   connection_options.push_back(k8PTO);
-  QuicConfigPeer::ReceiveIdleNetworkTimeout(&config, SERVER,
-                                            kDefaultIdleTimeoutSecs);
+  QuicConfigPeer::ReceiveIdleNetworkTimeout(
+      &config, SERVER, QuicTime::Delta::FromSeconds(kMaximumIdleTimeoutSecs));
   config.SetConnectionOptionsToSend(connection_options);
   EXPECT_CALL(*send_algorithm_, SetFromConfig(_, _));
   connection_.SetFromConfig(config);
diff --git a/quic/test_tools/quic_config_peer.cc b/quic/test_tools/quic_config_peer.cc
index 20463ab..7b4c9f9 100644
--- a/quic/test_tools/quic_config_peer.cc
+++ b/quic/test_tools/quic_config_peer.cc
@@ -98,12 +98,13 @@
 }
 
 // static
-void QuicConfigPeer::ReceiveIdleNetworkTimeout(QuicConfig* config,
-                                               HelloType hello_type,
-                                               uint32_t idle_timeout_seconds) {
+void QuicConfigPeer::ReceiveIdleNetworkTimeout(
+    QuicConfig* config,
+    HelloType hello_type,
+    QuicTime::Delta idle_network_timeout) {
   std::string error_details;
   config->idle_network_timeout_seconds_.ReceiveValue(
-      idle_timeout_seconds, hello_type, &error_details);
+      idle_network_timeout.ToSeconds(), hello_type, &error_details);
 }
 
 }  // namespace test
diff --git a/quic/test_tools/quic_config_peer.h b/quic/test_tools/quic_config_peer.h
index b52bf42..5ce7a04 100644
--- a/quic/test_tools/quic_config_peer.h
+++ b/quic/test_tools/quic_config_peer.h
@@ -61,7 +61,7 @@
 
   static void ReceiveIdleNetworkTimeout(QuicConfig* config,
                                         HelloType hello_type,
-                                        uint32_t idle_timeout_seconds);
+                                        QuicTime::Delta idle_network_timeout);
 };
 
 }  // namespace test
