Index: net/quic/core/congestion_control/cubic_bytes.cc |
diff --git a/net/quic/core/congestion_control/cubic_bytes.cc b/net/quic/core/congestion_control/cubic_bytes.cc |
index 6d40d634e01656b8c2a2cae559fbe6c4466200fe..91924b06e9f6aca1d9dc359a3c45155e2c964960 100644 |
--- a/net/quic/core/congestion_control/cubic_bytes.cc |
+++ b/net/quic/core/congestion_control/cubic_bytes.cc |
@@ -9,9 +9,11 @@ |
#include <cmath> |
#include "base/logging.h" |
+#include "net/quic/core/quic_flags.h" |
#include "net/quic/core/quic_protocol.h" |
using std::max; |
+using std::min; |
namespace net { |
@@ -150,6 +152,12 @@ QuicByteCount CubicBytes::CongestionWindowAfterAck( |
QuicByteCount target_congestion_window = |
origin_point_congestion_window_ - delta_congestion_window; |
+ if (FLAGS_quic_limit_cubic_cwnd_increase) { |
+ // Limit the CWND increase to half the acked bytes. |
+ target_congestion_window = |
+ min(target_congestion_window, |
+ current_congestion_window + acked_bytes_count_ / 2); |
+ } |
DCHECK_LT(0u, estimated_tcp_congestion_window_); |
// Increase the window by Alpha * 1 MSS of bytes every time we ack an |