Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(302)

Side by Side Diff: net/quic/congestion_control/cubic.cc

Issue 935333002: Update from https://crrev.com/316786 (Closed) Base URL: git@github.com:domokit/mojo.git@master
Patch Set: Created 5 years, 10 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "net/quic/congestion_control/cubic.h" 5 #include "net/quic/congestion_control/cubic.h"
6 6
7 #include <algorithm> 7 #include <algorithm>
8 #include <cmath> 8 #include <cmath>
9 9
10 #include "base/basictypes.h" 10 #include "base/basictypes.h"
11 #include "base/logging.h" 11 #include "base/logging.h"
12 #include "base/time/time.h" 12 #include "base/time/time.h"
13 #include "net/quic/congestion_control/cube_root.h"
14 #include "net/quic/quic_flags.h" 13 #include "net/quic/quic_flags.h"
15 #include "net/quic/quic_protocol.h" 14 #include "net/quic/quic_protocol.h"
16 15
17 using std::max; 16 using std::max;
18 17
19 namespace net { 18 namespace net {
20 19
21 namespace { 20 namespace {
22 21
23 // Constants based on TCP defaults. 22 // Constants based on TCP defaults.
(...skipping 105 matching lines...) Expand 10 before | Expand all | Expand 10 after
129 // First ACK after a loss event. 128 // First ACK after a loss event.
130 DVLOG(1) << "Start of epoch"; 129 DVLOG(1) << "Start of epoch";
131 epoch_ = current_time; // Start of epoch. 130 epoch_ = current_time; // Start of epoch.
132 acked_packets_count_ = 1; // Reset count. 131 acked_packets_count_ = 1; // Reset count.
133 // Reset estimated_tcp_congestion_window_ to be in sync with cubic. 132 // Reset estimated_tcp_congestion_window_ to be in sync with cubic.
134 estimated_tcp_congestion_window_ = current_congestion_window; 133 estimated_tcp_congestion_window_ = current_congestion_window;
135 if (last_max_congestion_window_ <= current_congestion_window) { 134 if (last_max_congestion_window_ <= current_congestion_window) {
136 time_to_origin_point_ = 0; 135 time_to_origin_point_ = 0;
137 origin_point_congestion_window_ = current_congestion_window; 136 origin_point_congestion_window_ = current_congestion_window;
138 } else { 137 } else {
139 if (FLAGS_quic_use_std_cbrt) { 138 time_to_origin_point_ =
140 time_to_origin_point_ = static_cast<uint32>( 139 static_cast<uint32>(cbrt(kCubeFactor * (last_max_congestion_window_ -
141 cbrt(kCubeFactor * 140 current_congestion_window)));
142 (last_max_congestion_window_ - current_congestion_window)));
143 } else {
144 // TODO(rjshade): Remove CubeRoot source when removing
145 // FLAGS_quic_use_std_cbrt.
146 time_to_origin_point_ =
147 CubeRoot::Root(kCubeFactor * (last_max_congestion_window_ -
148 current_congestion_window));
149 }
150 origin_point_congestion_window_ = 141 origin_point_congestion_window_ =
151 last_max_congestion_window_; 142 last_max_congestion_window_;
152 } 143 }
153 } 144 }
154 // Change the time unit from microseconds to 2^10 fractions per second. Take 145 // Change the time unit from microseconds to 2^10 fractions per second. Take
155 // the round trip time in account. This is done to allow us to use shift as a 146 // the round trip time in account. This is done to allow us to use shift as a
156 // divide operator. 147 // divide operator.
157 int64 elapsed_time = 148 int64 elapsed_time =
158 (current_time.Add(delay_min).Subtract(epoch_).ToMicroseconds() << 10) / 149 (current_time.Add(delay_min).Subtract(epoch_).ToMicroseconds() << 10) /
159 base::Time::kMicrosecondsPerSecond; 150 base::Time::kMicrosecondsPerSecond;
(...skipping 31 matching lines...) Expand 10 before | Expand all | Expand 10 after
191 // congestion_window, use highest (fastest). 182 // congestion_window, use highest (fastest).
192 if (target_congestion_window < estimated_tcp_congestion_window_) { 183 if (target_congestion_window < estimated_tcp_congestion_window_) {
193 target_congestion_window = estimated_tcp_congestion_window_; 184 target_congestion_window = estimated_tcp_congestion_window_;
194 } 185 }
195 186
196 DVLOG(1) << "Target congestion_window: " << target_congestion_window; 187 DVLOG(1) << "Target congestion_window: " << target_congestion_window;
197 return target_congestion_window; 188 return target_congestion_window;
198 } 189 }
199 190
200 } // namespace net 191 } // namespace net
OLDNEW
« no previous file with comments | « net/quic/congestion_control/cube_root_test.cc ('k') | net/quic/congestion_control/receive_algorithm_interface.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698