netdev.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* [PATCH net 1/5] tcp_bbr: cut pacing rate only if filled pipe
@ 2017-07-14 21:49 Neal Cardwell
  2017-07-14 21:49 ` [PATCH net 2/5] tcp_bbr: introduce bbr_bw_to_pacing_rate() helper Neal Cardwell
                   ` (5 more replies)
  0 siblings, 6 replies; 11+ messages in thread
From: Neal Cardwell @ 2017-07-14 21:49 UTC (permalink / raw)
  To: David Miller; +Cc: netdev, Neal Cardwell, Yuchung Cheng, Soheil Hassas Yeganeh

In bbr_set_pacing_rate(), which decides whether to cut the pacing
rate, there was some code that considered exiting STARTUP to be
equivalent to the notion of filling the pipe (i.e.,
bbr_full_bw_reached()). Specifically, as the code was structured,
exiting STARTUP and going into PROBE_RTT could cause us to cut the
pacing rate down to something silly and low, based on whatever
bandwidth samples we've had so far, when it's possible that all of
them have been small app-limited bandwidth samples that are not
representative of the bandwidth available in the path. (The code was
correct at the time it was written, but the state machine changed
without this spot being adjusted correspondingly.)

Fixes: 0f8782ea1497 ("tcp_bbr: add BBR congestion control")
Signed-off-by: Neal Cardwell <ncardwell@google.com>
Signed-off-by: Yuchung Cheng <ycheng@google.com>
Signed-off-by: Soheil Hassas Yeganeh <soheil@google.com>
---
 net/ipv4/tcp_bbr.c | 3 +--
 1 file changed, 1 insertion(+), 2 deletions(-)

diff --git a/net/ipv4/tcp_bbr.c b/net/ipv4/tcp_bbr.c
index dbcc9352a48f..743e97511dc8 100644
--- a/net/ipv4/tcp_bbr.c
+++ b/net/ipv4/tcp_bbr.c
@@ -220,12 +220,11 @@ static u64 bbr_rate_bytes_per_sec(struct sock *sk, u64 rate, int gain)
  */
 static void bbr_set_pacing_rate(struct sock *sk, u32 bw, int gain)
 {
-	struct bbr *bbr = inet_csk_ca(sk);
 	u64 rate = bw;
 
 	rate = bbr_rate_bytes_per_sec(sk, rate, gain);
 	rate = min_t(u64, rate, sk->sk_max_pacing_rate);
-	if (bbr->mode != BBR_STARTUP || rate > sk->sk_pacing_rate)
+	if (bbr_full_bw_reached(sk) || rate > sk->sk_pacing_rate)
 		sk->sk_pacing_rate = rate;
 }
 
-- 
2.13.2.932.g7449e964c-goog

^ permalink raw reply related	[flat|nested] 11+ messages in thread

end of thread, other threads:[~2017-07-16  5:18 UTC | newest]

Thread overview: 11+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2017-07-14 21:49 [PATCH net 1/5] tcp_bbr: cut pacing rate only if filled pipe Neal Cardwell
2017-07-14 21:49 ` [PATCH net 2/5] tcp_bbr: introduce bbr_bw_to_pacing_rate() helper Neal Cardwell
2017-07-14 21:49 ` [PATCH net 3/5] tcp_bbr: introduce bbr_init_pacing_rate_from_rtt() helper Neal Cardwell
2017-07-14 21:49 ` [PATCH net 4/5] tcp_bbr: remove sk_pacing_rate=0 transient during init Neal Cardwell
2017-07-14 21:49 ` [PATCH net 5/5] tcp_bbr: init pacing rate on first RTT sample Neal Cardwell
2017-07-14 22:36 ` [PATCH net 1/5] tcp_bbr: cut pacing rate only if filled pipe Stephen Hemminger
2017-07-14 22:54   ` Neal Cardwell
2017-07-14 23:15     ` Stephen Hemminger
2017-07-15  0:29       ` Neal Cardwell
2017-07-15 21:44 ` David Miller
2017-07-16  5:18   ` Neal Cardwell

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).