From patchwork Tue Aug 13 23:25:40 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Vinicius Peixoto X-Patchwork-Id: 1972145 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@legolas.ozlabs.org Authentication-Results: legolas.ozlabs.org; spf=pass (sender SPF authorized) smtp.mailfrom=lists.ubuntu.com (client-ip=185.125.189.65; helo=lists.ubuntu.com; envelope-from=kernel-team-bounces@lists.ubuntu.com; receiver=patchwork.ozlabs.org) Received: from lists.ubuntu.com (lists.ubuntu.com [185.125.189.65]) (using TLSv1.2 with cipher ECDHE-ECDSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by legolas.ozlabs.org (Postfix) with ESMTPS id 4Wk6vy2ghKz1yXl for ; Wed, 14 Aug 2024 09:26:22 +1000 (AEST) Received: from localhost ([127.0.0.1] helo=lists.ubuntu.com) by lists.ubuntu.com with esmtp (Exim 4.86_2) (envelope-from ) id 1se0u8-0001G8-OG; Tue, 13 Aug 2024 23:26:16 +0000 Received: from smtp-relay-internal-1.internal ([10.131.114.114] helo=smtp-relay-internal-1.canonical.com) by lists.ubuntu.com with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.86_2) (envelope-from ) id 1se0u6-0001EW-RM for kernel-team@lists.ubuntu.com; Tue, 13 Aug 2024 23:26:14 +0000 Received: from mail-pf1-f200.google.com (mail-pf1-f200.google.com [209.85.210.200]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (2048 bits) server-digest SHA256) (No client certificate requested) by smtp-relay-internal-1.canonical.com (Postfix) with ESMTPS id 9CE643F322 for ; Tue, 13 Aug 2024 23:26:14 +0000 (UTC) Received: by mail-pf1-f200.google.com with SMTP id d2e1a72fcca58-70d14fc3317so5128929b3a.1 for ; Tue, 13 Aug 2024 16:26:14 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1723591572; x=1724196372; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=yfzrtvI/jGtKYoy02cVcggIHR8l8OxEH0ybHW+DtdGw=; b=POCPZoO+CHvdOyfv16vDQ+T+D4M4OuKh4ziAJdG4E4c3IemrwCvXGw6orUkCVv9kf8 ztNlwG1MHGEpEsG/ARQh+Vm+iaMzRGiX6wb9LMKZ/2vPZnjSc7Sv7+GiJD/KLt1Hy51q ejE8lR3IAJMogmu4ekTp2/J3iNtbAVTtidhNymZxZPJZNDR3taAehGVNNXnbwzwAvNuN qHakavXYgUKmJbpnoyC8jJmsvo+Bt7zZKB3fctJnpgZ9lxxEl0oCLfOoj0svT7xAc0cR 3i8CgXSn6uQ89NEC71SrwELLqiXpjzosMnV1DmbaQ0PpsOzITS5epmmRqJHLykWdSGfj AHkg== X-Gm-Message-State: AOJu0Yzj8+vnXCCZAJD0P+4xdDvk39mqdWxC5WmAf7y+wTH8Dea0ckXF HEioO1nh0lgvqkgKyV+7ZX0eFo2FkG/YAoODeS2rCB0122sOo4hQUKXRhxoUfUwc59uLJRWd+M0 a8isMpCfDZPFvUUttIqFb9WPFcFIXfiwfGXNO8zxyfOsHq3vsRm1XYFpUMWRH2vouSnhap0raNJ hGjDJi9uoe3A== X-Received: by 2002:a05:6a00:a0f:b0:70d:39d9:4523 with SMTP id d2e1a72fcca58-71267103f6emr1542787b3a.7.1723591571772; Tue, 13 Aug 2024 16:26:11 -0700 (PDT) X-Google-Smtp-Source: AGHT+IEMg7pOkqX3pfb9RktSE/p9yMXgCxEU07Re3Cg7pIumhFcEvY5Xv3rVtgKoY8HcZt8BLWecgA== X-Received: by 2002:a05:6a00:a0f:b0:70d:39d9:4523 with SMTP id d2e1a72fcca58-71267103f6emr1542773b3a.7.1723591571236; Tue, 13 Aug 2024 16:26:11 -0700 (PDT) Received: from canonical.com ([2804:1b3:a700:3d2c:2581:40a7:e5dc:ac36]) by smtp.gmail.com with ESMTPSA id 41be03b00d2f7-7c6979d3fecsm2039164a12.3.2024.08.13.16.26.10 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 13 Aug 2024 16:26:10 -0700 (PDT) From: Vinicius Peixoto To: kernel-team@lists.ubuntu.com Subject: [SRU][noble:linux-gcp][PATCH 2/2] tcp: add sysctl_tcp_rto_min_us Date: Tue, 13 Aug 2024 20:25:40 -0300 Message-ID: <20240813232540.408387-3-vinicius.peixoto@canonical.com> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20240813232540.408387-1-vinicius.peixoto@canonical.com> References: <20240813232540.408387-1-vinicius.peixoto@canonical.com> MIME-Version: 1.0 X-BeenThere: kernel-team@lists.ubuntu.com X-Mailman-Version: 2.1.20 Precedence: list List-Id: Kernel team discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: kernel-team-bounces@lists.ubuntu.com Sender: "kernel-team" From: Kevin Yang Adding a sysctl knob to allow user to specify a default rto_min at socket init time, other than using the hard coded 200ms default rto_min. Note that the rto_min route option has the highest precedence for configuring this setting, followed by the TCP_BPF_RTO_MIN socket option, followed by the tcp_rto_min_us sysctl. Signed-off-by: Kevin Yang Reviewed-by: Neal Cardwell Reviewed-by: Yuchung Cheng Reviewed-by: Eric Dumazet Reviewed-by: Tony Lu Reviewed-by: Jakub Kicinski Signed-off-by: David S. Miller (backported from commit 5258da376f3c51332f917087361caf4c76e9e84f) [vpeixoto: fixed context conflict due to missing 1c106eb01cee ("net: ipv{6,4}: Remove the now superfluous sentinel elements from ctl_table array")] Signed-off-by: Vinicius Peixoto --- Documentation/networking/ip-sysctl.rst | 13 +++++++++++++ include/net/netns/ipv4.h | 1 + net/ipv4/sysctl_net_ipv4.c | 8 ++++++++ net/ipv4/tcp.c | 4 +++- net/ipv4/tcp_ipv4.c | 1 + 5 files changed, 26 insertions(+), 1 deletion(-) diff --git a/Documentation/networking/ip-sysctl.rst b/Documentation/networking/ip-sysctl.rst index 7afff42612e9..ce47b37bd35f 100644 --- a/Documentation/networking/ip-sysctl.rst +++ b/Documentation/networking/ip-sysctl.rst @@ -1196,6 +1196,19 @@ tcp_pingpong_thresh - INTEGER Default: 1 +tcp_rto_min_us - INTEGER + Minimal TCP retransmission timeout (in microseconds). Note that the + rto_min route option has the highest precedence for configuring this + setting, followed by the TCP_BPF_RTO_MIN socket option, followed by + this tcp_rto_min_us sysctl. + + The recommended practice is to use a value less or equal to 200000 + microseconds. + + Possible Values: 1 - INT_MAX + + Default: 200000 + UDP variables ============= diff --git a/include/net/netns/ipv4.h b/include/net/netns/ipv4.h index c356c458b340..a91bb971f901 100644 --- a/include/net/netns/ipv4.h +++ b/include/net/netns/ipv4.h @@ -170,6 +170,7 @@ struct netns_ipv4 { u8 sysctl_tcp_sack; u8 sysctl_tcp_window_scaling; u8 sysctl_tcp_timestamps; + int sysctl_tcp_rto_min_us; u8 sysctl_tcp_recovery; u8 sysctl_tcp_thin_linear_timeouts; u8 sysctl_tcp_slow_start_after_idle; diff --git a/net/ipv4/sysctl_net_ipv4.c b/net/ipv4/sysctl_net_ipv4.c index 7e4f16a7dcc1..5d22d4f2d7de 100644 --- a/net/ipv4/sysctl_net_ipv4.c +++ b/net/ipv4/sysctl_net_ipv4.c @@ -1502,6 +1502,14 @@ static struct ctl_table ipv4_net_table[] = { .proc_handler = proc_dou8vec_minmax, .extra1 = SYSCTL_ONE, }, + { + .procname = "tcp_rto_min_us", + .data = &init_net.ipv4.sysctl_tcp_rto_min_us, + .maxlen = sizeof(int), + .mode = 0644, + .proc_handler = proc_dointvec_minmax, + .extra1 = SYSCTL_ONE, + }, { } }; diff --git a/net/ipv4/tcp.c b/net/ipv4/tcp.c index 94b129301d38..3418ca15af03 100644 --- a/net/ipv4/tcp.c +++ b/net/ipv4/tcp.c @@ -413,6 +413,7 @@ void tcp_init_sock(struct sock *sk) { struct inet_connection_sock *icsk = inet_csk(sk); struct tcp_sock *tp = tcp_sk(sk); + int rto_min_us; tp->out_of_order_queue = RB_ROOT; sk->tcp_rtx_queue = RB_ROOT; @@ -421,7 +422,8 @@ void tcp_init_sock(struct sock *sk) INIT_LIST_HEAD(&tp->tsorted_sent_queue); icsk->icsk_rto = TCP_TIMEOUT_INIT; - icsk->icsk_rto_min = TCP_RTO_MIN; + rto_min_us = READ_ONCE(sock_net(sk)->ipv4.sysctl_tcp_rto_min_us); + icsk->icsk_rto_min = usecs_to_jiffies(rto_min_us); icsk->icsk_delack_max = TCP_DELACK_MAX; tp->mdev_us = jiffies_to_usecs(TCP_TIMEOUT_INIT); minmax_reset(&tp->rtt_min, tcp_jiffies32, ~0U); diff --git a/net/ipv4/tcp_ipv4.c b/net/ipv4/tcp_ipv4.c index abd47159d7e4..fc0339fffff6 100644 --- a/net/ipv4/tcp_ipv4.c +++ b/net/ipv4/tcp_ipv4.c @@ -3505,6 +3505,7 @@ static int __net_init tcp_sk_init(struct net *net) net->ipv4.sysctl_tcp_shrink_window = 0; net->ipv4.sysctl_tcp_pingpong_thresh = 1; + net->ipv4.sysctl_tcp_rto_min_us = jiffies_to_usecs(TCP_RTO_MIN); return 0; }