gfe-relnote: Change QuicSentPacketManager::SetSendAlgorithm(CongestionControlType) to a no-op if the current and the requested cc_type are the same. Protected by --gfe2_reloadable_flag_quic_set_send_algorithm_noop_if_cc_type_unchanged.

PiperOrigin-RevId: 292011155
Change-Id: Ibac886fb3ebf97c4c54405d462e2c0a4ea1f41ac
diff --git a/quic/core/quic_sent_packet_manager.cc b/quic/core/quic_sent_packet_manager.cc
index 9246499..302daf4 100644
--- a/quic/core/quic_sent_packet_manager.cc
+++ b/quic/core/quic_sent_packet_manager.cc
@@ -1121,6 +1121,18 @@
 
 void QuicSentPacketManager::SetSendAlgorithm(
     CongestionControlType congestion_control_type) {
+  if (GetQuicReloadableFlag(
+          quic_set_send_algorithm_noop_if_cc_type_unchanged)) {
+    if (send_algorithm_ && send_algorithm_->GetCongestionControlType() ==
+                               congestion_control_type) {
+      QUIC_RELOADABLE_FLAG_COUNT_N(
+          quic_set_send_algorithm_noop_if_cc_type_unchanged, 1, 2);
+      return;
+    }
+    QUIC_RELOADABLE_FLAG_COUNT_N(
+        quic_set_send_algorithm_noop_if_cc_type_unchanged, 2, 2);
+    // Fallthrough to change the send algorithm.
+  }
   SetSendAlgorithm(SendAlgorithmInterface::Create(
       clock_, &rtt_stats_, &unacked_packets_, congestion_control_type, random_,
       stats_, initial_congestion_window_));
diff --git a/quic/core/quic_sent_packet_manager_test.cc b/quic/core/quic_sent_packet_manager_test.cc
index 247c03f..c677afa 100644
--- a/quic/core/quic_sent_packet_manager_test.cc
+++ b/quic/core/quic_sent_packet_manager_test.cc
@@ -85,12 +85,13 @@
   }
 
  protected:
+  const CongestionControlType kInitialCongestionControlType = kCubicBytes;
   QuicSentPacketManagerTest()
       : manager_(Perspective::IS_SERVER,
                  &clock_,
                  QuicRandom::GetInstance(),
                  &stats_,
-                 kCubicBytes,
+                 kInitialCongestionControlType,
                  GetDefaultLossDetectionType()),
         send_algorithm_(new StrictMock<MockSendAlgorithm>),
         network_change_visitor_(new StrictMock<MockNetworkChangeVisitor>) {
@@ -102,6 +103,8 @@
     manager_.SetNetworkChangeVisitor(network_change_visitor_.get());
     manager_.SetSessionNotifier(&notifier_);
 
+    EXPECT_CALL(*send_algorithm_, GetCongestionControlType())
+        .WillRepeatedly(Return(kInitialCongestionControlType));
     EXPECT_CALL(*send_algorithm_, HasReliableBandwidthEstimate())
         .Times(AnyNumber());
     EXPECT_CALL(*send_algorithm_, BandwidthEstimate())