From patchwork Sat Jun 21 19:37:36 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: "Chia-Yu Chang \(Nokia\)" X-Patchwork-Id: 898913 Received: from OSPPR02CU001.outbound.protection.outlook.com (mail-norwayeastazon11013051.outbound.protection.outlook.com [40.107.159.51]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 95E321F8753; Sat, 21 Jun 2025 19:38:15 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=40.107.159.51 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1750534698; cv=fail; b=QpQV6zdHVkutRbaah966A1wdojlAkVLDCjRx07nhQ9q/sDTcl8ny9RYDsfKYE3neGAdyVdx7BqAfnbqpXQ2CzwtCq2r7mCVmjWcXAWoMNCWZcVzb5qqeeq3wR6roVVkOV3d9WIllW/0/cl8lECVy9P+5niVsH34Cxg2HUhWo4GM= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1750534698; c=relaxed/simple; bh=V8jj6wEXdCVIFSasiziwiE/h7QW+uCjw67cDVA/Ah78=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: MIME-Version:Content-Type; b=in0x6xy/YbR+r9iViFvgNhS5XAP40e4OOONJ2FBg4dywn4OjC5HQ2qpD4mTfyyRjEx4V5+XHGFoCIZuLUanOdA5LjiU/NBXNwxmdU1ch/0P/T6k50pTzJvH5TUNeeJcr4IlbQkP04zv4D/UmQLvlMJTd391GReUIm/6ZtxuiRG0= ARC-Authentication-Results: i=2; smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=nokia-bell-labs.com; spf=fail smtp.mailfrom=nokia-bell-labs.com; dkim=pass (2048-bit key) header.d=nokia-bell-labs.com header.i=@nokia-bell-labs.com header.b=R3aJA9jm; arc=fail smtp.client-ip=40.107.159.51 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=nokia-bell-labs.com Authentication-Results: smtp.subspace.kernel.org; spf=fail smtp.mailfrom=nokia-bell-labs.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=nokia-bell-labs.com header.i=@nokia-bell-labs.com header.b="R3aJA9jm" ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=vPl4Z6Y7zCfAcpj1+yPVZQM18MznMr1fPYF7NLPGp0Lkal8XUGWbt3We6d1BKee++Qi/iUKpNaNQ8xkUGXvcF3g1eK7WG8vBHo/kgcLb2g4ACpMVHtXMBwvFoiQD21vwFHXVNPLicSOO5jEYxX+7d6JoP71o3CMedE5ACYh5FIYFVWUwW/OY6WpD4eV8BhR8P6a/9OXoaiBhLe8QPzu7x+8Ny0i/i46Sjij06UmbX9SETrP2lNnkaeHNleIIRlFcQGZeCq+mtx3fKc/ciRpyUVZKKc8tG/c6eCyNZMHYLDh2obreQXCvm2S0f5+paqjRkBgagahiGemZ2DrlpJQ5wQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector10001; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=lp7Yj183TjyJfN88VdSEfBdlvIKA6DyK+node/MPShY=; b=jml0xqcopPLjaaXjMltmKk/odeliA4eYu9YqDmQoahCDKDzkqq0d8xYImLBYzSAfIg/Nu3pwNqwS1WWIBPwE1x0e9tOrnBV28oYZZcKK3K/Djn87CH5GvnPx4+eBD5TC+YOmRTxbWGloVaD1Xf4RoopbXm7PDhkSZbwAIVoQBuQBDeiakG7JSimOgru7WPYyCF4FbiTm3LPeXOgSaWIuW09rXkDYgHSb8/ZL8ffvpP8JwGdG3sS1xMu+7bf6mnaBS8G5bB97+fEnlCFlDRrpASfzVutY23ximIWusHaLf7uOn0udXu/H7bqlRBFEfJvWy2Z1DIzsVTSVQsYqaKBRFA== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=temperror (sender ip is 131.228.6.101) smtp.rcpttodomain=amazon.com smtp.mailfrom=nokia-bell-labs.com; dmarc=temperror action=none header.from=nokia-bell-labs.com; dkim=none (message not signed); arc=none (0) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=nokia-bell-labs.com; s=selector2; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=lp7Yj183TjyJfN88VdSEfBdlvIKA6DyK+node/MPShY=; b=R3aJA9jmKCpbBRYEYp2sMU0sXvy5ppDnudmnRF7xOesprtcWaLhcPh/uaNtgF/g2TqDkRbXd/A/ZTtUv0KJU3++b8rNEt5XaUaRnZ6g3HyIa28B1ZhyTpE1xJ5wClkfL9ynJw9gbCL7dQYmPC8rCGlHBlJlKg3QIg8LYFggB0xlYO8DuUAnm9ab4VKiLwF9jSi9VSfggwGZSEbZGEWwawBd6NN66Y/PwriWrlRIlciQ4qfv/m2B7aJtEqu7cjUBsGT1lOlmGCgn3T/EMNADEVPTg+VB3Zy68EIH+Fww4z5exCIPMuRemXRw9X7V3sDMZGlocIeqmH4z6vpybAFNuKg== Received: from BE1P281CA0384.DEUP281.PROD.OUTLOOK.COM (2603:10a6:b10:80::11) by VI1PR07MB6239.eurprd07.prod.outlook.com (2603:10a6:800:13e::23) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.8857.26; Sat, 21 Jun 2025 19:38:12 +0000 Received: from AMS0EPF000001A8.eurprd05.prod.outlook.com (2603:10a6:b10:80:cafe::14) by BE1P281CA0384.outlook.office365.com (2603:10a6:b10:80::11) with Microsoft SMTP Server (version=TLS1_3, cipher=TLS_AES_256_GCM_SHA384) id 15.20.8880.14 via Frontend Transport; Sat, 21 Jun 2025 19:38:11 +0000 X-MS-Exchange-Authentication-Results: spf=temperror (sender IP is 131.228.6.101) smtp.mailfrom=nokia-bell-labs.com; dkim=none (message not signed) header.d=none;dmarc=temperror action=none header.from=nokia-bell-labs.com; Received-SPF: TempError (protection.outlook.com: error in processing during lookup of nokia-bell-labs.com: DNS Timeout) Received: from fr712usmtp1.zeu.alcatel-lucent.com (131.228.6.101) by AMS0EPF000001A8.mail.protection.outlook.com (10.167.16.148) with Microsoft SMTP Server (version=TLS1_3, cipher=TLS_AES_256_GCM_SHA384) id 15.20.8857.21 via Frontend Transport; Sat, 21 Jun 2025 19:38:09 +0000 Received: from sarah.nbl.nsn-rdnet.net (sarah.nbl.nsn-rdnet.net [10.0.73.150]) by fr712usmtp1.zeu.alcatel-lucent.com (Postfix) with ESMTP id 10B961C002B; Sat, 21 Jun 2025 22:38:08 +0300 (EEST) From: chia-yu.chang@nokia-bell-labs.com To: pabeni@redhat.com, edumazet@google.com, linux-doc@vger.kernel.org, corbet@lwn.net, horms@kernel.org, dsahern@kernel.org, kuniyu@amazon.com, bpf@vger.kernel.org, netdev@vger.kernel.org, dave.taht@gmail.com, jhs@mojatatu.com, kuba@kernel.org, stephen@networkplumber.org, xiyou.wangcong@gmail.com, jiri@resnulli.us, davem@davemloft.net, andrew+netdev@lunn.ch, donald.hunter@gmail.com, ast@fiberby.net, liuhangbin@gmail.com, shuah@kernel.org, linux-kselftest@vger.kernel.org, ij@kernel.org, ncardwell@google.com, koen.de_schepper@nokia-bell-labs.com, g.white@cablelabs.com, ingemar.s.johansson@ericsson.com, mirja.kuehlewind@ericsson.com, cheshire@apple.com, rs.ietf@gmx.at, Jason_Livingood@comcast.com, vidhi_goel@apple.com Cc: Chia-Yu Chang Subject: [PATCH v9 net-next 14/15] tcp: accecn: try to fit AccECN option with SACK Date: Sat, 21 Jun 2025 21:37:36 +0200 Message-Id: <20250621193737.16593-15-chia-yu.chang@nokia-bell-labs.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20250621193737.16593-1-chia-yu.chang@nokia-bell-labs.com> References: <20250621193737.16593-1-chia-yu.chang@nokia-bell-labs.com> Precedence: bulk X-Mailing-List: linux-kselftest@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 X-EOPAttributedMessage: 0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: AMS0EPF000001A8:EE_|VI1PR07MB6239:EE_ X-MS-Office365-Filtering-Correlation-Id: 459c7ae2-0231-4afe-3ab3-08ddb0fb2741 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; ARA:13230040|36860700013|376014|82310400026|7416014|1800799024|921020; X-Microsoft-Antispam-Message-Info: =?utf-8?q?pGfrYOZdkuLApz8Mr4uLzMYZV9PKHOp?= =?utf-8?q?nw6aW1l3LYHelBB3RK6tyOqh+DefbYJ7HUVOURTOodp4+ssyjXaBlZE/j/ml9+ths?= =?utf-8?q?qlUkDg0vhQDJH5iixzaHJpr6xWzV/JBOPX6qhYJP1Ww7ukXDs1JCWN4R7PW7Z2QId?= =?utf-8?q?yH7R8cEHWgIW1dDV7xzxn7v1rVabkfYhqtmPJ8uH2wZUUeEatySVMYEgzlZ/hOPhv?= =?utf-8?q?IGUHTv2JvRxPHHg/v4AaNAfzGbxc7KESia7nqoRiIS9Hvc20GTyYa1/yRBoeWXLT9?= =?utf-8?q?iW136enTJNZn2dysegfDztoedi2tiorqD1PZTsUyn+hpf3HCaU5pT4LJBziCQhY0I?= =?utf-8?q?zdLKI271OCsH44rlrNOdWWPj3Un1MJz93UYqPbP9PhjHXkZT3Nio3EGdU8Qkjfv/z?= =?utf-8?q?31qQ6YMc8k23x4qlQTyXBajbRY4uGnv0DApRN4fpkGYRllUe4LDmFmaNyHbkPwstr?= =?utf-8?q?sMsb7P/xpQhTNDJhPc31sJ6Aua/5e9y11c+keXQgOhMblm4ReOE+u/o6hlpfqXqMM?= =?utf-8?q?0GjaOkrPXK2h2pWZCUQIA90v7X8xAIiZ76kwnudCNfpsi8T1bl4caEvNOzxpaE1hV?= =?utf-8?q?IggNpHTaP2xgWVTO2n5uarPzlrE9WvwpQJm/Cc4UMoJuBXoHf04SwkG9zHFOhQ4fi?= =?utf-8?q?3nqHi+4eQq33FpCz8r9i7AKKiGBeyvZguNRnR/wlApvM8kjTe5Xh+lm7SCXMTedcP?= =?utf-8?q?aEgfmWNSqjk49mINm1nAiZVwmpvXg0vOMIYxNPbuMZe+EiebheM55RAyPlCkJDvnA?= =?utf-8?q?QcXNCHTiw1FMFKiSVwkSFlMM/ClhLeQJX8JUyKYs7bXUkimhp7o0+K31iK/fV5wek?= =?utf-8?q?IwUxsU59awrrvt5DeZBY5wNUyfrL/U35rU+S0IxV32ecK5BVlIEyFWEBcC+246WbN?= =?utf-8?q?+72XpSfesAQjIpKXj+s/YE04X5PEPdDumprGqwJP4YdK6kwi/hPG+/6TsWr84k35Y?= =?utf-8?q?JFqvuCm9oSaoS2W148fjse9Z2pIwLADIJJnl66d7vBjFIirwvohCSEiCHn5JHTsFN?= =?utf-8?q?Xy/L3A9Dv0kHBlgt2CAVNr/Jv5iCCzWmXuytuebPp2Qra0QGtHTVQ3Zj5BR5++oep?= =?utf-8?q?0ZxpPmAPR4oVlQsRrFBZVSRZNj4jlZO0n2DrEMsx+WYa5tMynUqBwAYU/LB5yUoFu?= =?utf-8?q?mcbOq3o/Pct3s/HlbxAUXGeBKf6BB27s9Cv3bhpMRyM/Vj3fvLubj4IVGm5PlMtkH?= =?utf-8?q?CjlgRDOhQVbc4NJgZFOWpoYCSW8l03xLQ2001pesUvNiRcmwmUREFKvvhJE5EppRq?= =?utf-8?q?JzIBo5Gywcz+81XQ4+6Z+khCWIKIJ+2COUDbtQAXcg62Fo1a3ZsutcdjfAbom3F0d?= =?utf-8?q?sItN7Ho4qmwSbEOf/hHLKbyo675UdUkPbq2daV4C765K9f3nQycIbzwH6mwDgDaeR?= =?utf-8?q?h2srIA55Bm//n/Y6uupt8sGoI3bApeQE3uYFri+3xIE7EWoQusgk3K9aFqFptcjCo?= =?utf-8?q?4ZnhxaL/kMYtvGGOhXHDXe2WLwPCoAgw=3D=3D?= X-Forefront-Antispam-Report: CIP:131.228.6.101; CTRY:FI; LANG:en; SCL:1; SRV:; IPV:CAL; SFV:NSPM; H:fr712usmtp1.zeu.alcatel-lucent.com; PTR:InfoDomainNonexistent; CAT:NONE; SFS:(13230040)(36860700013)(376014)(82310400026)(7416014)(1800799024)(921020); DIR:OUT; SFP:1101; X-OriginatorOrg: nokia-bell-labs.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 21 Jun 2025 19:38:09.6313 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: 459c7ae2-0231-4afe-3ab3-08ddb0fb2741 X-MS-Exchange-CrossTenant-Id: 5d471751-9675-428d-917b-70f44f9630b0 X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=5d471751-9675-428d-917b-70f44f9630b0; Ip=[131.228.6.101]; Helo=[fr712usmtp1.zeu.alcatel-lucent.com] X-MS-Exchange-CrossTenant-AuthSource: AMS0EPF000001A8.eurprd05.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: VI1PR07MB6239 From: Chia-Yu Chang As SACK blocks tend to eat all option space when there are many holes, it is useful to compromise on sending many SACK blocks in every ACK and attempt to fit the AccECN option there by reducing the number of SACK blocks. However, it will never go below two SACK blocks because of the AccECN option. As the AccECN option is often not put to every ACK, the space hijack is usually only temporary. Depending on the length of AccECN option (can be either 11, 8, 5, or 2 bytes, cf. Table 5 in AccECN spec) and the NOPs used for alignment of other TCP options, up to two SACK blocks will be reduced. Co-developed-by: Ilpo Järvinen Signed-off-by: Ilpo Järvinen Signed-off-by: Chia-Yu Chang --- v8: - Update tcp_options_fit_accecn() to avoid using recursion --- net/ipv4/tcp_output.c | 22 ++++++++++++++++++++-- 1 file changed, 20 insertions(+), 2 deletions(-) diff --git a/net/ipv4/tcp_output.c b/net/ipv4/tcp_output.c index 4a87380037cb..001c883c2940 100644 --- a/net/ipv4/tcp_output.c +++ b/net/ipv4/tcp_output.c @@ -984,23 +984,41 @@ static int tcp_options_fit_accecn(struct tcp_out_options *opts, int required, int remaining, int max_combine_saving) { int size = TCP_ACCECN_MAXSIZE; + int sack_blocks_reduce = 0; + int rem = remaining; opts->num_accecn_fields = TCP_ACCECN_NUMFIELDS; - while (opts->num_accecn_fields >= required) { int leftover_size = size & 0x3; /* Pad to dword if cannot combine */ if (leftover_size > max_combine_saving) leftover_size = -((4 - leftover_size) & 0x3); - if (remaining >= size - leftover_size) { + if (rem >= size - leftover_size) { size -= leftover_size; break; + } else if (opts->num_accecn_fields == required && + opts->num_sack_blocks > 2 && + required > 0) { + /* Try to fit the option by removing one SACK block */ + opts->num_sack_blocks--; + sack_blocks_reduce++; + rem = rem + TCPOLEN_SACK_PERBLOCK; + + opts->num_accecn_fields = TCP_ACCECN_NUMFIELDS; + size = TCP_ACCECN_MAXSIZE; + continue; } opts->num_accecn_fields--; size -= TCPOLEN_ACCECN_PERFIELD; } + if (sack_blocks_reduce > 0) { + if (opts->num_accecn_fields >= required) + size -= sack_blocks_reduce * TCPOLEN_SACK_PERBLOCK; + else + opts->num_sack_blocks += sack_blocks_reduce; + } if (opts->num_accecn_fields < required) return 0;