diff --git a/quic/core/crypto/crypto_protocol.h b/quic/core/crypto/crypto_protocol.h
index 74b9604..172fd82 100644
--- a/quic/core/crypto/crypto_protocol.h
+++ b/quic/core/crypto/crypto_protocol.h
@@ -27,7 +27,7 @@
 typedef std::string ServerConfigID;
 
 // The following tags have been deprecated and should not be reused:
-// "1CON", "BBQ4", "NCON", "RCID", "SREJ", "TBKP", "TB10", "SCLS"
+// "1CON", "BBQ4", "NCON", "RCID", "SREJ", "TBKP", "TB10", "SCLS", "SMHL"
 
 // clang-format off
 const QuicTag kCHLO = TAG('C', 'H', 'L', 'O');   // Client hello
@@ -188,10 +188,6 @@
                                                  // threshold
 const QuicTag kRUNT = TAG('R', 'U', 'N', 'T');   // No packet threshold loss
                                                  // detection for "runt" packet.
-// TODO(fayang): Remove this connection option when QUIC_VERSION_35, is removed
-// Since MAX_HEADER_LIST_SIZE settings frame is supported instead.
-const QuicTag kSMHL = TAG('S', 'M', 'H', 'L');   // Support MAX_HEADER_LIST_SIZE
-                                                 // settings frame.
 const QuicTag kNSTP = TAG('N', 'S', 'T', 'P');   // No stop waiting frames.
 const QuicTag kNRTT = TAG('N', 'R', 'T', 'T');   // Ignore initial RTT
 
diff --git a/quic/core/quic_config.cc b/quic/core/quic_config.cc
index a9b8440..52de65d 100644
--- a/quic/core/quic_config.cc
+++ b/quic/core/quic_config.cc
@@ -514,7 +514,6 @@
       initial_session_flow_control_window_bytes_(kCFCW, PRESENCE_OPTIONAL),
       connection_migration_disabled_(kNCMR, PRESENCE_OPTIONAL),
       alternate_server_address_(kASAD, PRESENCE_OPTIONAL),
-      support_max_header_list_size_(kSMHL, PRESENCE_OPTIONAL),
       stateless_reset_token_(kSRST, PRESENCE_OPTIONAL),
       max_ack_delay_ms_(kMAD, PRESENCE_OPTIONAL),
       ack_delay_exponent_(kADE, PRESENCE_OPTIONAL),
@@ -875,14 +874,6 @@
   return alternate_server_address_.GetReceivedValue();
 }
 
-void QuicConfig::SetSupportMaxHeaderListSize() {
-  support_max_header_list_size_.SetSendValue(1);
-}
-
-bool QuicConfig::SupportMaxHeaderListSize() const {
-  return support_max_header_list_size_.HasReceivedValue();
-}
-
 void QuicConfig::SetStatelessResetTokenToSend(
     QuicUint128 stateless_reset_token) {
   stateless_reset_token_.SetSendValue(stateless_reset_token);
@@ -924,7 +915,6 @@
   SetInitialStreamFlowControlWindowToSend(kMinimumFlowControlSendWindow);
   SetInitialSessionFlowControlWindowToSend(kMinimumFlowControlSendWindow);
   SetMaxAckDelayToSendMs(kDefaultDelayedAckTimeMs);
-  SetSupportMaxHeaderListSize();
   SetAckDelayExponentToSend(kDefaultAckDelayExponent);
   SetMaxPacketSizeToSend(kMaxIncomingPacketSize);
   SetMaxDatagramFrameSizeToSend(kMaxAcceptedDatagramFrameSize);
@@ -953,7 +943,6 @@
   connection_migration_disabled_.ToHandshakeMessage(out);
   connection_options_.ToHandshakeMessage(out);
   alternate_server_address_.ToHandshakeMessage(out);
-  support_max_header_list_size_.ToHandshakeMessage(out);
   stateless_reset_token_.ToHandshakeMessage(out);
 }
 
@@ -1005,10 +994,6 @@
                                                        error_details);
   }
   if (error == QUIC_NO_ERROR) {
-    error = support_max_header_list_size_.ProcessPeerHello(
-        peer_hello, hello_type, error_details);
-  }
-  if (error == QUIC_NO_ERROR) {
     error = stateless_reset_token_.ProcessPeerHello(peer_hello, hello_type,
                                                     error_details);
   }
diff --git a/quic/core/quic_config.h b/quic/core/quic_config.h
index 96284cb..e39cf78 100644
--- a/quic/core/quic_config.h
+++ b/quic/core/quic_config.h
@@ -460,10 +460,6 @@
 
   const QuicSocketAddress& ReceivedAlternateServerAddress() const;
 
-  void SetSupportMaxHeaderListSize();
-
-  bool SupportMaxHeaderListSize() const;
-
   void SetStatelessResetTokenToSend(QuicUint128 stateless_reset_token);
 
   bool HasReceivedStatelessResetToken() const;
@@ -607,9 +603,6 @@
   // An alternate server address the client could connect to.
   QuicFixedSocketAddress alternate_server_address_;
 
-  // Whether support HTTP/2 SETTINGS_MAX_HEADER_LIST_SIZE SETTINGS frame.
-  QuicFixedUint32 support_max_header_list_size_;
-
   // Stateless reset token used in IETF public reset packet.
   // Uses the stateless_reset_token transport parameter in IETF QUIC.
   QuicFixedUint128 stateless_reset_token_;
