ACK: [SRU][Zesty][PATCH 1/5] tcp_bbr: cut pacing rate only if filled pipe
Colin Ian King
colin.king at canonical.com
Wed Oct 4 10:27:14 UTC 2017
On 13/09/17 00:12, Vinson Lee wrote:
> From: Neal Cardwell <ncardwell at google.com>
>
> BugLink: https://bugs.launchpad.net/bugs/1708604
>
> 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 at google.com>
> Signed-off-by: Yuchung Cheng <ycheng at google.com>
> Signed-off-by: Soheil Hassas Yeganeh <soheil at google.com>
> Signed-off-by: David S. Miller <davem at davemloft.net>
> (cherry picked from commit 4aea287e90dd61a48268ff2994b56f9799441b62)
> Signed-off-by: Vinson Lee <vlee at freedesktop.org>
> ---
> 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 b89bce4c721e..b152e1d3b754 100644
> --- a/net/ipv4/tcp_bbr.c
> +++ b/net/ipv4/tcp_bbr.c
> @@ -221,12 +221,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;
> }
>
>
Clean cherry picks.
Acked-by: Colin Ian King <colin.king at canonical.com>
More information about the kernel-team
mailing list