From patchwork Fri Mar 16 17:51:07 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Yousuk Seung X-Patchwork-Id: 887065 X-Patchwork-Delegate: davem@davemloft.net Return-Path: X-Original-To: patchwork-incoming@ozlabs.org Delivered-To: patchwork-incoming@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="uVnXOP8k"; dkim-atps=neutral Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by ozlabs.org (Postfix) with ESMTP id 402tLD1vpbz9sNq for ; Sat, 17 Mar 2018 04:51:16 +1100 (AEDT) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1752031AbeCPRvN (ORCPT ); Fri, 16 Mar 2018 13:51:13 -0400 Received: from mail-pl0-f66.google.com ([209.85.160.66]:45275 "EHLO mail-pl0-f66.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1751454AbeCPRvM (ORCPT ); Fri, 16 Mar 2018 13:51:12 -0400 Received: by mail-pl0-f66.google.com with SMTP id v9-v6so6345843plp.12 for ; Fri, 16 Mar 2018 10:51:11 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20161025; h=from:to:cc:subject:date:message-id; bh=xa6e2UXiSoKdW8V7uRV+Zwnd0kz6tPxs7Fm7TbWnGq0=; b=uVnXOP8ki/rpsK216XeDHxTTaPHs05lAEhVNy7f1vZqUntLmHLW79bTZplbPuQbnv4 HyTfE6gV5kB80yB1xXKyaIb5KRIS0T7SFEvXzRP7Bg6+/7pdTuhNI4GpgPjFC1UHVQoU XzMIKW5Hf0XsJtxlXCEsE/i/iBkuBr3yhko5MjMhU9e4zKAR/Vbo1U4/3cuvH99GdeP3 2ZH4a8Ej09774D0WjyK7WbmosFLZoPuRPhl9NSi7r7ds40bQW2AweGwLf9sH38YVShck r+hJBCdTZ3LapJxgHW41jwRqtW1rjFzIRsy5Ys6zcWhFb+gnfEuZi4iAf6tFhy4htfYr Kz1Q== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id; bh=xa6e2UXiSoKdW8V7uRV+Zwnd0kz6tPxs7Fm7TbWnGq0=; b=N0nRq+6Z7mdCTRmthVBHyrzlcGPGHK59e9k3LC4LX0LWZ8xcgouja55ZP7XIYuo6eq 2U7L7QbYmjI4MYHJB2xCiMov4GCz+gsQLnaJMhvtMo696L2ud6Sk7iC6NSVT2csruCZz HU5fuG8eO0KiNAs1j/vwFVBNLxwpsTqK7C25DCNMIjNiiqERGd8n+LpoRBTq91VMUVp6 D3hG7GKLjvb2v3dFQ9cAFHvy5yQj5BG1Ex96AqI/Ddp8pCFiMOcAnHWFBYujcn6LtVQi zpPGDXRaCEdAzoXWSPHgCgZWDoSXIL3sIDD8AymVNXTfrSPpMuOLNWtqgS7NigL9DqLt RQag== X-Gm-Message-State: AElRT7FcEFaR7z4nAi8sNCrg51/dXpnbnHNsqA7lZse0GRYnv06gdzXB eS+sZry2igeaFMWtErTUJsdaTTCzZGs= X-Google-Smtp-Source: AG47ELvSV/RacmtWHRTFqbx/stylWwPcQetVvw8BcAts/lEN5GI/2WTRX5ucrSfaHULgw5c2WHRC4w== X-Received: by 2002:a17:902:8287:: with SMTP id y7-v6mr3045446pln.85.1521222671402; Fri, 16 Mar 2018 10:51:11 -0700 (PDT) Received: from ysseung.svl.corp.google.com ([2620:15c:2c4:201:47c8:2bc4:30f4:c8]) by smtp.gmail.com with ESMTPSA id g77sm17757576pfk.135.2018.03.16.10.51.10 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Fri, 16 Mar 2018 10:51:10 -0700 (PDT) From: Yousuk Seung To: David Miller Cc: netdev@vger.kernel.org, Yousuk Seung , Neal Cardwell , Priyaranjan Jha , Soheil Hassas Yeganeh , Yuchung Cheng Subject: [PATCH net-next 1/2] tcp: add snd_ssthresh stat in SCM_TIMESTAMPING_OPT_STATS Date: Fri, 16 Mar 2018 10:51:07 -0700 Message-Id: <20180316175107.224147-1-ysseung@google.com> X-Mailer: git-send-email 2.16.2.804.g6dcf76e118-goog Sender: netdev-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: netdev@vger.kernel.org This patch adds TCP_NLA_SND_SSTHRESH stat into SCM_TIMESTAMPING_OPT_STATS that reports tcp_sock.snd_ssthresh. Signed-off-by: Yousuk Seung Signed-off-by: Neal Cardwell Signed-off-by: Priyaranjan Jha Signed-off-by: Soheil Hassas Yeganeh Signed-off-by: Yuchung Cheng Reviewed-by: Eric Dumazet --- include/uapi/linux/tcp.h | 1 + net/ipv4/tcp.c | 3 ++- 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/include/uapi/linux/tcp.h b/include/uapi/linux/tcp.h index 4c0ae0faf7ca..560374c978f9 100644 --- a/include/uapi/linux/tcp.h +++ b/include/uapi/linux/tcp.h @@ -243,6 +243,7 @@ enum { TCP_NLA_DELIVERY_RATE_APP_LMT, /* delivery rate application limited ? */ TCP_NLA_SNDQ_SIZE, /* Data (bytes) pending in send queue */ TCP_NLA_CA_STATE, /* ca_state of socket */ + TCP_NLA_SND_SSTHRESH, /* Slow start size threshold */ }; diff --git a/net/ipv4/tcp.c b/net/ipv4/tcp.c index fb350f740f69..e553f84bde83 100644 --- a/net/ipv4/tcp.c +++ b/net/ipv4/tcp.c @@ -3031,7 +3031,7 @@ struct sk_buff *tcp_get_timestamping_opt_stats(const struct sock *sk) u32 rate; stats = alloc_skb(7 * nla_total_size_64bit(sizeof(u64)) + - 4 * nla_total_size(sizeof(u32)) + + 5 * nla_total_size(sizeof(u32)) + 3 * nla_total_size(sizeof(u8)), GFP_ATOMIC); if (!stats) return NULL; @@ -3061,6 +3061,7 @@ struct sk_buff *tcp_get_timestamping_opt_stats(const struct sock *sk) nla_put_u8(stats, TCP_NLA_RECUR_RETRANS, inet_csk(sk)->icsk_retransmits); nla_put_u8(stats, TCP_NLA_DELIVERY_RATE_APP_LMT, !!tp->rate_app_limited); + nla_put_u32(stats, TCP_NLA_SND_SSTHRESH, tp->snd_ssthresh); nla_put_u32(stats, TCP_NLA_SNDQ_SIZE, tp->write_seq - tp->snd_una); nla_put_u8(stats, TCP_NLA_CA_STATE, inet_csk(sk)->icsk_ca_state); From patchwork Fri Mar 16 17:51:49 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Yousuk Seung X-Patchwork-Id: 887067 X-Patchwork-Delegate: davem@davemloft.net Return-Path: X-Original-To: patchwork-incoming@ozlabs.org Delivered-To: patchwork-incoming@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="Vh1GXXdS"; dkim-atps=neutral Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by ozlabs.org (Postfix) with ESMTP id 402tLz5ffdz9sNq for ; Sat, 17 Mar 2018 04:51:55 +1100 (AEDT) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1751372AbeCPRvx (ORCPT ); Fri, 16 Mar 2018 13:51:53 -0400 Received: from mail-pf0-f193.google.com ([209.85.192.193]:39722 "EHLO mail-pf0-f193.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1750757AbeCPRvw (ORCPT ); Fri, 16 Mar 2018 13:51:52 -0400 Received: by mail-pf0-f193.google.com with SMTP id u5so4429087pfh.6 for ; Fri, 16 Mar 2018 10:51:52 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20161025; h=from:to:cc:subject:date:message-id; bh=KocyQX15I9VQ1Ed0+jSpERRQ+q/EPWPnz9BOQWqYfMI=; b=Vh1GXXdSg16dlMQrQXzCaXGosW+EgKJkPpKOHnOxNMjgqQ/o/XICdnM1uop2zvWnYK G90IXwHrAf5DRDRocgfBeU/9G1Ww3rqZl27+TS79EDB5epc9U1DOqsQegm4fYe/3+lot a9Fg6qeD+sDbsoT7ww2CmAax8gg7jNBOcuyziiq8DtvCzS5uXW8r5fS2P+SOZarBR+SA FfFIeqlUmmP49Ig0gVLFQpOlmFP+JqqL2obIRpmUD0IycTqIV1FSiMoStBxcDazgVFL1 0g+u1S1kIzEWx7YpoEQPotjbWGFhHVDhNAwwy0jsefPKlL0XWGSO5ZkpCwfOmh2ifoIQ SYTA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id; bh=KocyQX15I9VQ1Ed0+jSpERRQ+q/EPWPnz9BOQWqYfMI=; b=JSsGp5e1M65hbxccWC4iR9ON52k+CqCU9wjBGvlTc/JUdBiTnKl7kwNZuM8QjBDzoC 4EOgNDSvQR5fEOMr1REqdM0x8COf8UpSO7PuKTHrbYu51S/yK1a9rl6bnNN4e6mvxxFU TgOTs5jgkpbDW6Vubvgi9+OIJGCASSQRikv06P4zJHAOshhLxULqGGZ+fmfD7NjboWAa DhNSij/K4P2hpvPMBwFctGb2AyzK0jmQ6kZsCtuFHFtm5z4FhiHjE7QHpmahjtwZzjRb s30aTsy3byQSA00QpGVjMD/QUiZPFZk6dNFkUcXURW9MrZBdhnJtxn9fMcL4Al4alQl4 A0fg== X-Gm-Message-State: AElRT7EzQ+DPlMtj+kvdGmg49yY9PC+vfPfjMMxpHGLUhzEWg9BFW5w7 j0Ti5zeX4a5+kC0J3u7dvVLfXA== X-Google-Smtp-Source: AG47ELu9wDqhdczC2xNSiOStHnQa6dBX9PqdTXp8jghTucUBzT7Sv2NnCM4qL+QTnpC1Anfyq7dCJA== X-Received: by 10.101.97.139 with SMTP id c11mr2104949pgv.443.1521222712037; Fri, 16 Mar 2018 10:51:52 -0700 (PDT) Received: from ysseung.svl.corp.google.com ([2620:15c:2c4:201:47c8:2bc4:30f4:c8]) by smtp.gmail.com with ESMTPSA id u27sm16611018pfk.172.2018.03.16.10.51.51 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Fri, 16 Mar 2018 10:51:51 -0700 (PDT) From: Yousuk Seung To: David Miller Cc: netdev@vger.kernel.org, Yousuk Seung , Neal Cardwell , Priyaranjan Jha , Soheil Hassas Yeganeh , Yuchung Cheng Subject: [PATCH net-next 2/2] net-tcp_bbr: set tp->snd_ssthresh to BDP upon STARTUP exit Date: Fri, 16 Mar 2018 10:51:49 -0700 Message-Id: <20180316175149.224421-1-ysseung@google.com> X-Mailer: git-send-email 2.16.2.804.g6dcf76e118-goog Sender: netdev-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: netdev@vger.kernel.org Set tp->snd_ssthresh to BDP upon STARTUP exit. This allows us to check if a BBR flow exited STARTUP and the BDP at the time of STARTUP exit with SCM_TIMESTAMPING_OPT_STATS. Since BBR does not use snd_ssthresh this fix has no impact on BBR's behavior. Signed-off-by: Yousuk Seung Signed-off-by: Neal Cardwell Signed-off-by: Priyaranjan Jha Signed-off-by: Soheil Hassas Yeganeh Signed-off-by: Yuchung Cheng Reviewed-by: Eric Dumazet --- net/ipv4/tcp_bbr.c | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/net/ipv4/tcp_bbr.c b/net/ipv4/tcp_bbr.c index c92014cb1e16..158d105e76da 100644 --- a/net/ipv4/tcp_bbr.c +++ b/net/ipv4/tcp_bbr.c @@ -731,6 +731,8 @@ static void bbr_check_drain(struct sock *sk, const struct rate_sample *rs) bbr->mode = BBR_DRAIN; /* drain queue we created */ bbr->pacing_gain = bbr_drain_gain; /* pace slow to drain */ bbr->cwnd_gain = bbr_high_gain; /* maintain cwnd */ + tcp_sk(sk)->snd_ssthresh = + bbr_target_cwnd(sk, bbr_max_bw(sk), BBR_UNIT); } /* fall through to check if in-flight is already small: */ if (bbr->mode == BBR_DRAIN && tcp_packets_in_flight(tcp_sk(sk)) <= @@ -834,6 +836,7 @@ static void bbr_init(struct sock *sk) struct bbr *bbr = inet_csk_ca(sk); bbr->prior_cwnd = 0; + tp->snd_ssthresh = TCP_INFINITE_SSTHRESH; bbr->rtt_cnt = 0; bbr->next_rtt_delivered = 0; bbr->prev_ca_state = TCP_CA_Open; @@ -886,7 +889,7 @@ static u32 bbr_undo_cwnd(struct sock *sk) static u32 bbr_ssthresh(struct sock *sk) { bbr_save_cwnd(sk); - return TCP_INFINITE_SSTHRESH; /* BBR does not use ssthresh */ + return tcp_sk(sk)->snd_ssthresh; } static size_t bbr_get_info(struct sock *sk, u32 ext, int *attr,