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