Deprecate gfe2_restart_flags_quic_receive_ecn, replace with quic_receive_ecn2 as canary-only. Also remove flag count that is not actually protected by the flag.

See go/ecn-flags for discussion.

PiperOrigin-RevId: 540301668
diff --git a/quiche/quic/core/http/end_to_end_test.cc b/quiche/quic/core/http/end_to_end_test.cc
index 8892b9c..6404559 100644
--- a/quiche/quic/core/http/end_to_end_test.cc
+++ b/quiche/quic/core/http/end_to_end_test.cc
@@ -7184,7 +7184,7 @@
   EXPECT_EQ(ecn->ce, 0);
   EXPECT_TRUE(client_connection->set_ecn_codepoint(ECN_ECT0));
   client_->SendSynchronousRequest("/foo");
-  if (!GetQuicRestartFlag(quic_receive_ecn) ||
+  if (!GetQuicRestartFlag(quic_receive_ecn2) ||
       !VersionHasIetfQuicFrames(version_.transport_version)) {
     EXPECT_EQ(ecn->ect0, 0);
   } else {
@@ -7209,7 +7209,7 @@
   EXPECT_EQ(ecn->ce, 0);
   EXPECT_TRUE(client_connection->set_ecn_codepoint(ECN_ECT1));
   client_->SendSynchronousRequest("/foo");
-  if (!GetQuicRestartFlag(quic_receive_ecn) ||
+  if (!GetQuicRestartFlag(quic_receive_ecn2) ||
       !VersionHasIetfQuicFrames(version_.transport_version)) {
     EXPECT_EQ(ecn->ect1, 0);
   } else {
@@ -7234,7 +7234,7 @@
   EXPECT_EQ(ecn->ce, 0);
   EXPECT_TRUE(client_connection->set_ecn_codepoint(ECN_CE));
   client_->SendSynchronousRequest("/foo");
-  if (!GetQuicRestartFlag(quic_receive_ecn) ||
+  if (!GetQuicRestartFlag(quic_receive_ecn2) ||
       !VersionHasIetfQuicFrames(version_.transport_version)) {
     EXPECT_EQ(ecn->ce, 0);
   } else {
@@ -7263,7 +7263,7 @@
   server_thread_->Pause();
   EXPECT_EQ(ecn->ect0, 0);
   EXPECT_EQ(ecn->ce, 0);
-  if (!GetQuicRestartFlag(quic_receive_ecn) ||
+  if (!GetQuicRestartFlag(quic_receive_ecn2) ||
       !VersionHasIetfQuicFrames(version_.transport_version)) {
     EXPECT_EQ(ecn->ect1, 0);
   } else {
diff --git a/quiche/quic/core/quic_connection_test.cc b/quiche/quic/core/quic_connection_test.cc
index 0d48535..bdfd034 100644
--- a/quiche/quic/core/quic_connection_test.cc
+++ b/quiche/quic/core/quic_connection_test.cc
@@ -16838,7 +16838,7 @@
     QuicConnectionPeer::SendPing(&connection_);
   }
   QuicConnectionStats stats = connection_.GetStats();
-  if (GetQuicRestartFlag(quic_receive_ecn)) {
+  if (GetQuicRestartFlag(quic_receive_ecn2)) {
     ASSERT_TRUE(ack_frame.ecn_counters.has_value());
     EXPECT_EQ(ack_frame.ecn_counters->ect0, 1);
     EXPECT_EQ(stats.num_ack_frames_sent_with_ecn,
@@ -16854,7 +16854,7 @@
 
 TEST_P(QuicConnectionTest, EcnMarksCoalescedPacket) {
   if (!connection_.version().CanSendCoalescedPackets() ||
-      !GetQuicRestartFlag(quic_receive_ecn)) {
+      !GetQuicRestartFlag(quic_receive_ecn2)) {
     return;
   }
   QuicCryptoFrame crypto_frame1{ENCRYPTION_HANDSHAKE, 0, "foo"};
@@ -16906,7 +16906,7 @@
     EXPECT_TRUE(ack_frame.ecn_counters.has_value());
     EXPECT_EQ(ack_frame.ecn_counters->ect0, 1);
   }
-  if (GetQuicRestartFlag(quic_receive_ecn)) {
+  if (GetQuicRestartFlag(quic_receive_ecn2)) {
     EXPECT_EQ(stats.num_ecn_marks_received.ect0, 2);
     EXPECT_EQ(stats.num_ack_frames_sent_with_ecn,
               connection_.version().HasIetfQuicFrames() ? 2 : 0);
@@ -16920,7 +16920,7 @@
 
 TEST_P(QuicConnectionTest, EcnMarksUndecryptableCoalescedPacket) {
   if (!connection_.version().CanSendCoalescedPackets() ||
-      !GetQuicRestartFlag(quic_receive_ecn)) {
+      !GetQuicRestartFlag(quic_receive_ecn2)) {
     return;
   }
   // SetFromConfig is always called after construction from InitializeSession.
@@ -17036,10 +17036,10 @@
             connection_.SupportsMultiplePacketNumberSpaces() ? 1 : 2);
   QuicConnectionStats stats = connection_.GetStats();
   EXPECT_EQ(stats.num_ecn_marks_received.ect0,
-            GetQuicRestartFlag(quic_receive_ecn) ? 2 : 0);
+            GetQuicRestartFlag(quic_receive_ecn2) ? 2 : 0);
   EXPECT_EQ(stats.num_ecn_marks_received.ect1, 0);
   EXPECT_EQ(stats.num_ecn_marks_received.ce,
-            GetQuicRestartFlag(quic_receive_ecn) ? 1 : 0);
+            GetQuicRestartFlag(quic_receive_ecn2) ? 1 : 0);
 }
 
 TEST_P(QuicConnectionTest, ReceivedPacketInfoDefaults) {
diff --git a/quiche/quic/core/quic_flags_list.h b/quiche/quic/core/quic_flags_list.h
index 7c21d75..f9ffb39 100644
--- a/quiche/quic/core/quic_flags_list.h
+++ b/quiche/quic/core/quic_flags_list.h
@@ -84,7 +84,7 @@
 // When true, defaults to BBR congestion control instead of Cubic.
 QUIC_FLAG(quic_reloadable_flag_quic_default_to_bbr, false)
 // When true, report received ECN markings to the peer.
-QUIC_FLAG(quic_restart_flag_quic_receive_ecn, true)
+QUIC_FLAG(quic_restart_flag_quic_receive_ecn2, false)
 // When true, sends QUIC packets marked ECT(1).
 QUIC_FLAG(quic_reloadable_flag_quic_send_ect1, false)
 // When true, support RFC9369.
diff --git a/quiche/quic/core/quic_framer.cc b/quiche/quic/core/quic_framer.cc
index b2b1278..885135a 100644
--- a/quiche/quic/core/quic_framer.cc
+++ b/quiche/quic/core/quic_framer.cc
@@ -3727,9 +3727,6 @@
       set_detailed_error("Unable to read ack ecn_ce_count.");
       return false;
     }
-    if (GetQuicRestartFlag(quic_receive_ecn)) {
-      QUIC_RESTART_FLAG_COUNT_N(quic_receive_ecn, 2, 3);
-    }
   }
 
   if (!visitor_->OnAckFrameEnd(QuicPacketNumber(block_low),
diff --git a/quiche/quic/core/quic_packet_reader.cc b/quiche/quic/core/quic_packet_reader.cc
index 8dd52a1..71b723c 100644
--- a/quiche/quic/core/quic_packet_reader.cc
+++ b/quiche/quic/core/quic_packet_reader.cc
@@ -54,8 +54,8 @@
        QuicUdpPacketInfoBit::PEER_ADDRESS, QuicUdpPacketInfoBit::V4_SELF_IP,
        QuicUdpPacketInfoBit::V6_SELF_IP, QuicUdpPacketInfoBit::RECV_TIMESTAMP,
        QuicUdpPacketInfoBit::TTL, QuicUdpPacketInfoBit::GOOGLE_PACKET_HEADER});
-  if (GetQuicRestartFlag(quic_receive_ecn)) {
-    QUIC_RESTART_FLAG_COUNT_N(quic_receive_ecn, 3, 3);
+  if (GetQuicRestartFlag(quic_receive_ecn2)) {
+    QUIC_RESTART_FLAG_COUNT_N(quic_receive_ecn2, 2, 2);
     info_bits.Set(QuicUdpPacketInfoBit::ECN);
   }
   size_t packets_read =
diff --git a/quiche/quic/core/quic_received_packet_manager.cc b/quiche/quic/core/quic_received_packet_manager.cc
index 0486618..faa27e6 100644
--- a/quiche/quic/core/quic_received_packet_manager.cc
+++ b/quiche/quic/core/quic_received_packet_manager.cc
@@ -122,8 +122,8 @@
     }
   }
 
-  if (GetQuicRestartFlag(quic_receive_ecn) && ecn != ECN_NOT_ECT) {
-    QUIC_RESTART_FLAG_COUNT_N(quic_receive_ecn, 1, 3);
+  if (GetQuicRestartFlag(quic_receive_ecn2) && ecn != ECN_NOT_ECT) {
+    QUIC_RESTART_FLAG_COUNT_N(quic_receive_ecn2, 1, 2);
     if (!ack_frame_.ecn_counters.has_value()) {
       ack_frame_.ecn_counters = QuicEcnCounts();
     }
diff --git a/quiche/quic/core/quic_received_packet_manager_test.cc b/quiche/quic/core/quic_received_packet_manager_test.cc
index 143654e..b3bc9b7 100644
--- a/quiche/quic/core/quic_received_packet_manager_test.cc
+++ b/quiche/quic/core/quic_received_packet_manager_test.cc
@@ -689,7 +689,7 @@
   RecordPacketReceipt(5, QuicTime::Zero(), ECN_ECT1);
   RecordPacketReceipt(6, QuicTime::Zero(), ECN_CE);
   QuicFrame ack = received_manager_.GetUpdatedAckFrame(QuicTime::Zero());
-  if (GetQuicRestartFlag(quic_receive_ecn)) {
+  if (GetQuicRestartFlag(quic_receive_ecn2)) {
     EXPECT_TRUE(ack.ack_frame->ecn_counters.has_value());
     EXPECT_EQ(ack.ack_frame->ecn_counters->ect0, 1);
     EXPECT_EQ(ack.ack_frame->ecn_counters->ect1, 1);
diff --git a/quiche/quic/core/quic_versions.cc b/quiche/quic/core/quic_versions.cc
index e14f06e..8fcb1a6 100644
--- a/quiche/quic/core/quic_versions.cc
+++ b/quiche/quic/core/quic_versions.cc
@@ -625,7 +625,7 @@
 
 void QuicVersionInitializeSupportForIetfDraft() {
   // Enable necessary flags.
-  SetQuicRestartFlag(quic_receive_ecn, true);
+  SetQuicRestartFlag(quic_receive_ecn2, true);
 }
 
 void QuicEnableVersion(const ParsedQuicVersion& version) {