Patch "tcp_bbr: cut pacing rate only if filled pipe" has been added to the 4.12-stable tree
Subsystems (3)
This is a note to let you know that I've just added the patch titled
tcp_bbr: cut pacing rate only if filled pipe
to the 4.12-stable tree which can be found at:
http://www.kernel.org/git/?p=linux/kernel/git/stable/stable-queue.git;a=summary
The filename of the patch is:
tcp_bbr-cut-pacing-rate-only-if-filled-pipe.patch
and it can be found in the queue-4.12 subdirectory.
If you, or anyone else, feels it should not be added to the stable tree, please let <[email protected]> know about it.
Quoted 1 line
From foo@baz Tue Aug 8 16:27:29 PDT 2017
From: Neal Cardwell <[email protected]>
Date: Fri, 14 Jul 2017 17:49:21 -0400
Subject: tcp_bbr: cut pacing rate only if filled pipe
From: Neal Cardwell <[email protected]>
[ Upstream commit 4aea287e90dd61a48268ff2994b56f9799441b62 ]
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.)
--- net/ipv4/tcp_bbr.c | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-)
net/ipv4/tcp_bbr.c +1 -2
@@ -221,12 +221,11 @@ static u64 bbr_rate_bytes_per_sec(struct*/ 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; }
Patches currently in stable-queue which might be from [email protected] are
queue-4.12/tcp_bbr-remove-sk_pacing_rate-0-transient-during-init.patch queue-4.12/tcp_bbr-introduce-bbr_bw_to_pacing_rate-helper.patch queue-4.12/tcp_bbr-introduce-bbr_init_pacing_rate_from_rtt-helper.patch queue-4.12/tcp_bbr-init-pacing-rate-on-first-rtt-sample.patch queue-4.12/tcp_bbr-cut-pacing-rate-only-if-filled-pipe.patch