From patchwork Wed Aug 22 21:43:15 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: "Kevin(Yudong) Yang" X-Patchwork-Id: 961080 X-Patchwork-Delegate: davem@davemloft.net Return-Path: X-Original-To: patchwork-incoming-netdev@ozlabs.org Delivered-To: patchwork-incoming-netdev@ozlabs.org Authentication-Results: ozlabs.org; spf=none (mailfrom) smtp.mailfrom=vger.kernel.org (client-ip=209.132.180.67; helo=vger.kernel.org; envelope-from=netdev-owner@vger.kernel.org; receiver=) Authentication-Results: ozlabs.org; dmarc=pass (p=reject dis=none) header.from=google.com Authentication-Results: ozlabs.org; dkim=pass (2048-bit key; unprotected) header.d=google.com header.i=@google.com header.b="pcOoiwBl"; dkim-atps=neutral Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by ozlabs.org (Postfix) with ESMTP id 41wgyq2X2kz9s47 for ; Thu, 23 Aug 2018 07:43:31 +1000 (AEST) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1728062AbeHWBKE (ORCPT ); Wed, 22 Aug 2018 21:10:04 -0400 Received: from mail-qt0-f202.google.com ([209.85.216.202]:35036 "EHLO mail-qt0-f202.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1727842AbeHWBKE (ORCPT ); Wed, 22 Aug 2018 21:10:04 -0400 Received: by mail-qt0-f202.google.com with SMTP id l7-v6so2868138qte.2 for ; Wed, 22 Aug 2018 14:43:28 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20161025; h=date:in-reply-to:message-id:mime-version:references:subject:from:to :cc; bh=aiVNeuZGbMZAgsbzErHsoh2ZO+j6fLdzP0B7x0RMdis=; b=pcOoiwBl8i0ac/1eqBBVC803G4uJ94SafHVWJP2xB+XCf2pFtThzIJil9T22atOuuR xwiEUW/xMcPdI/EGalQHH7eudQbUK6F996toypiTyY5g4OKmzzJ1J1FcgP9G6BBCd/ff kfDC3QqOKUAvLZdo6G1qBbLSKD2ABREreKqCW+aMHNh6EU96N6s6Bdgusv/kORYBDX+A MjobtWKjks2QwM/TVnyXsqsBLVQj7tcYMwiLUec7xLNwprvOZfbiAYzC7JeQk4GpmA77 6VCp4nylICfMw36FN16XNtAW/jLtAHlkvFm3bwgrKcdj6ETqE+lIuI0cd9Z3mv9FZq8v dJ+g== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:date:in-reply-to:message-id:mime-version :references:subject:from:to:cc; bh=aiVNeuZGbMZAgsbzErHsoh2ZO+j6fLdzP0B7x0RMdis=; b=axmKpQtc0sbnWtqVcUiVKjTGzB/VXh+EHRolbdUpTgjJW+hmPohIvn4Sa0btqtoG7z /r04nWvFrSIag9gzDjRPX5PWXcTFvLObcqjRc/bjwsT9YRNHuttF1EAyti9FTLot3Hyj qyoGcxxtfZlH8k2mdBlO/AT7BJ2GRO9e28d+9dD5UI19SxJ36RK5RaA2OMs+8S2KzG3K c1+NGY4Xm80V3ql7PLbT5qSZaFCbNZY735Kn+Mhw+Wct43z7/GjvfXOY7YLU9J722o5u aQ9GKHjcA2rK6Rntudkxy2XOUUQTkr73mBwGErFpbhBpeqmJsSgnBA+LDLdgWdLE2jY1 kGhA== X-Gm-Message-State: AOUpUlFHjk04cD384fnMtkaF8nuiHk9ZxZTmbO+qKnn0ssKKqz+bDpdw dmQTEGLDm4ftF+wEmNa8qH2GEA4= X-Google-Smtp-Source: AA+uWPwIGI6LuLtehqRw2s3MbSDc7utO1XKZh9hxdpej9lF2NK91c6Xuyis2lPgm3a3nUox0iYLDfas= X-Received: by 2002:a0c:f848:: with SMTP id g8-v6mr30478837qvo.11.1534974207487; Wed, 22 Aug 2018 14:43:27 -0700 (PDT) Date: Wed, 22 Aug 2018 17:43:15 -0400 In-Reply-To: <20180822214316.174161-1-yyd@google.com> Message-Id: <20180822214316.174161-3-yyd@google.com> Mime-Version: 1.0 References: <20180822214316.174161-1-yyd@google.com> X-Mailer: git-send-email 2.18.0.1017.ga543ac7ca45-goog Subject: [PATCH net 2/3] tcp_bbr: in restart from idle, see if we should exit PROBE_RTT From: Kevin Yang To: David Miller Cc: netdev@vger.kernel.org, Kevin Yang , Neal Cardwell Sender: netdev-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: netdev@vger.kernel.org This patch fix the case where BBR does not exit PROBE_RTT mode when it restarts from idle. When BBR restarts from idle and if BBR is in PROBE_RTT mode, BBR should check if it's time to exit PROBE_RTT. If yes, then BBR should exit PROBE_RTT mode and restore the cwnd to its full value. Fixes: 0f8782ea1497 ("tcp_bbr: add BBR congestion control") Signed-off-by: Kevin Yang Signed-off-by: Neal Cardwell Reviewed-by: Yuchung Cheng Reviewed-by: Soheil Hassas Yeganeh --- net/ipv4/tcp_bbr.c | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/net/ipv4/tcp_bbr.c b/net/ipv4/tcp_bbr.c index fd7bccf36a263..1d4bdd3b5e4d0 100644 --- a/net/ipv4/tcp_bbr.c +++ b/net/ipv4/tcp_bbr.c @@ -174,6 +174,8 @@ static const u32 bbr_lt_bw_diff = 4000 / 8; /* If we estimate we're policed, use lt_bw for this many round trips: */ static const u32 bbr_lt_bw_max_rtts = 48; +static void bbr_check_probe_rtt_done(struct sock *sk); + /* Do we estimate that STARTUP filled the pipe? */ static bool bbr_full_bw_reached(const struct sock *sk) { @@ -308,6 +310,8 @@ static void bbr_cwnd_event(struct sock *sk, enum tcp_ca_event event) */ if (bbr->mode == BBR_PROBE_BW) bbr_set_pacing_rate(sk, bbr_bw(sk), BBR_UNIT); + else if (bbr->mode == BBR_PROBE_RTT) + bbr_check_probe_rtt_done(sk); } }