From nobody Sat Apr 11 11:23:26 2026 Received: from smtp.kernel.org (aws-us-west-2-korg-mail-1.web.codeaurora.org [10.30.226.201]) (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 54D8F320CD3 for ; Thu, 9 Apr 2026 20:52:13 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=10.30.226.201 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1775767933; cv=none; b=ax6ComVHiuGEYC8CYyOtyr+bIwUmBzM6NmL4GWun6XSyxxtuDh1EXi+p2On6ymRwk+mTPxpw2xv+elq1nW845LkdXU6RAbDpiO6bXpiFHlLbfH9XbYPpiMagy8kLOHXRGcxFos9GVhafriOcyBugsYlwiCCfIHLOYiHXDgKOEBU= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1775767933; c=relaxed/simple; bh=YyAzqPO4L4bAGDJnsHPD5sHlxlUcpaXTzz3DnuDzZWM=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=nAaQMYIC9uUagKnrlDmNnK25J0KNOl2/hXmX2dR9zZe3h0kVas4lCUeopR2xYzdOm3dek+rW5Uc3cBmh6zfKY3vWDBdXBOw2AK/DbrSrzXKMIqLFOFdGbK20q96SYOkqyXa0MZnEgDsgVVunXAotQP4Z3P36G7+Wavd2zFA7hYI= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=WbcR+8XP; arc=none smtp.client-ip=10.30.226.201 Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b="WbcR+8XP" Received: by smtp.kernel.org (Postfix) with ESMTPSA id C5621C2BCAF; Thu, 9 Apr 2026 20:52:12 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1775767933; bh=YyAzqPO4L4bAGDJnsHPD5sHlxlUcpaXTzz3DnuDzZWM=; h=From:Date:Subject:References:In-Reply-To:To:Cc:From; b=WbcR+8XPx0TbfhKeCrQxmseS5zphfV1H32uaCTGhJbn8a7C6j+V8Z+X5S4HuJSy7i iqq89hDrj5GeSho2Ag0Yw/eQuIU6Rt+gN6pKRqtDVRXXzAUYaqk6piPJhLPJ9tOYOr mGTkNSMlNu8GWsuZqbFXyKMFxWPtrr/YkwRc61tRGowaBTupblFNu5qZ7T5cqZFVEh DKK2l9DyJlK1NCGpUn1Qo7j1/3/ceItYtvy4UyeCz8XBKnn7VxmEZG8WjUDfQP+6Hn E5MrHHJtHjv1d8G0pdPHl4PEPnszB+UgxNjOOXiRiTe/ihuj8PhKacihfkgDWuZyqU GDRa2DXUEGzVw== From: "Matthieu Baerts (NGI0)" Date: Thu, 09 Apr 2026 22:51:41 +0200 Subject: [PATCH mptcp-next 01/16] mptcp: pm: resched blocked ADD_ADDR quicker Precedence: bulk X-Mailing-List: mptcp@lists.linux.dev List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20260409-mptcp-inc-limits-v1-1-0e45fa30d914@kernel.org> References: <20260409-mptcp-inc-limits-v1-0-0e45fa30d914@kernel.org> In-Reply-To: <20260409-mptcp-inc-limits-v1-0-0e45fa30d914@kernel.org> To: MPTCP Upstream Cc: "Matthieu Baerts (NGI0)" X-Mailer: b4 0.15.1 X-Developer-Signature: v=1; a=openpgp-sha256; l=1716; i=matttbe@kernel.org; h=from:subject:message-id; bh=YyAzqPO4L4bAGDJnsHPD5sHlxlUcpaXTzz3DnuDzZWM=; b=owGbwMvMwCVWo/Th0Gd3rumMp9WSGDJvCOaX1FUyFbin/L0zIyNPxnzfpxXrVGZuSA6d9odzq h7Pc2f9jlIWBjEuBlkxRRbptsj8mc+reEu8/Cxg5rAygQxh4OIUgIl0uDEyPLnEvq+zyt7yutBZ hq93//58b/fl2oOtonn31bpW/jnhuZfhf/zCz4rc13R/NF///r3yrveELouLGVtS5TLl5jDYF27 4ygQA X-Developer-Key: i=matttbe@kernel.org; a=openpgp; fpr=E8CB85F76877057A6E27F77AF6B7824F4269A073 When an ADD_ADDR needs to be retransmitted and another one has already been prepared -- e.g. multiple ADD_ADDRs have been sent in a row and need to be retransmitted later -- this additional retransmission will need to wait. In this case, the timer was reset to TCP_RTO_MAX / 8, which is ~15 seconds. This delay is unnecessary long: it should just be rescheduled at the next opportunity, e.g. after the retransmission timeout. Without this modification, some issues can be seen from time to time in the selftests when multiple ADD_ADDRs are sent, and the host takes time to process them, e.g. the "signal addresses, ADD_ADDR timeout" MPTCP Join selftest, especially with a debug kernel config. Note that on older kernels, 'timeout' is not available. It should be enough to replace it by one second (HZ). Fixes: 00cfd77b9063 ("mptcp: retransmit ADD_ADDR when timeout") Signed-off-by: Matthieu Baerts (NGI0) --- net/mptcp/pm.c | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/net/mptcp/pm.c b/net/mptcp/pm.c index fdadd0e8f77c..7d439d49c3af 100644 --- a/net/mptcp/pm.c +++ b/net/mptcp/pm.c @@ -340,15 +340,15 @@ static void mptcp_pm_add_timer(struct timer_list *tim= er) if (!entry->addr.id) return; =20 - if (mptcp_pm_should_add_signal_addr(msk)) { - sk_reset_timer(sk, timer, jiffies + TCP_RTO_MAX / 8); - goto out; - } - timeout =3D mptcp_adjust_add_addr_timeout(msk); if (!timeout) goto out; =20 + if (mptcp_pm_should_add_signal_addr(msk)) { + sk_reset_timer(sk, timer, jiffies + timeout); + goto out; + } + spin_lock_bh(&msk->pm.lock); =20 if (!mptcp_pm_should_add_signal_addr(msk)) { --=20 2.53.0 From nobody Sat Apr 11 11:23:26 2026 Received: from smtp.kernel.org (aws-us-west-2-korg-mail-1.web.codeaurora.org [10.30.226.201]) (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 37E8433F591 for ; Thu, 9 Apr 2026 20:52:14 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=10.30.226.201 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1775767934; cv=none; b=bJRwiSR5RbRqShpHqpx+qdYwfmScPluVlj/y/00+qT3cWOTLl6UhKH9rgwvsE2OYCj54FYzHWtjux/x0I0RX0+Y9voJRnPbvduIU2jmrggQymQyFFSrngyWdc3tMC8P+rD6rWfgEnuNXPk2ZNfBsdsh6CSdqv/m1LrmlmX1Z3sY= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1775767934; c=relaxed/simple; bh=zcRKkBlw5AfB0X/461T8LUKk8JknfHT5u0FKTdrpPas=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=I9BZd46qdbGYJA0HEToyCUzdfdmjLZr0XV5yOt7RQEae55tv5nEnCT7wa3800AL02tMRNaMDEFJTr1EwUFP5xkB7UyC4OW42mcsG4OuOFbaCh9BQO/j1W57CMd3Cxk/Mzm//yOHSMGnzPZkz8j+xcPjvE+DGWkgbpbaCKj5Dwhc= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=FOlAK/ZI; arc=none smtp.client-ip=10.30.226.201 Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b="FOlAK/ZI" Received: by smtp.kernel.org (Postfix) with ESMTPSA id 8D1F4C2BC87; Thu, 9 Apr 2026 20:52:13 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1775767934; bh=zcRKkBlw5AfB0X/461T8LUKk8JknfHT5u0FKTdrpPas=; h=From:Date:Subject:References:In-Reply-To:To:Cc:From; b=FOlAK/ZIn4ECr+Y32dlPRhP7IkhDdXb0RHhBJ8FGUWQo9oIDx0HUqG1rQ+0S+zsJ4 nM3ZIj5T9wExzx2wPtcV++S5RKnaj/aRBM2u/ZVzay0QZndFPoriwzYbK+WZ4G+Wrc K5oJJXCzXzHD4tBrFjz9dZC8bSIE7PWaHnn0Ef7q4hToR22rcdcEcQVkZh2N4aEZyM pbmSnnjGERrnCpEKXeJlTBVCLNHj7iVf438E4U8y9i5jJiDfNq6N+74hBLT3eq8BfL ldQ8f9IIv9WR/Wc29vk8cYc8uYQLTDcnec6qKwhlrXEq+pnbzY0kB1CTuN2Ikbcr18 xufxm/YLvDlng== From: "Matthieu Baerts (NGI0)" Date: Thu, 09 Apr 2026 22:51:42 +0200 Subject: [PATCH mptcp-next 02/16] mptcp: pm: allow retransmitting ADD_ADDR with ID 0 Precedence: bulk X-Mailing-List: mptcp@lists.linux.dev List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20260409-mptcp-inc-limits-v1-2-0e45fa30d914@kernel.org> References: <20260409-mptcp-inc-limits-v1-0-0e45fa30d914@kernel.org> In-Reply-To: <20260409-mptcp-inc-limits-v1-0-0e45fa30d914@kernel.org> To: MPTCP Upstream Cc: "Matthieu Baerts (NGI0)" X-Mailer: b4 0.15.1 X-Developer-Signature: v=1; a=openpgp-sha256; l=874; i=matttbe@kernel.org; h=from:subject:message-id; bh=zcRKkBlw5AfB0X/461T8LUKk8JknfHT5u0FKTdrpPas=; b=owGbwMvMwCVWo/Th0Gd3rumMp9WSGDJvCBbkOOjFF3EVbeX7J9qQqvbu9cbL//xnHjb7/PNG0 Czpp1MCOkpZGMS4GGTFFFmk2yLzZz6v4i3x8rOAmcPKBDKEgYtTAC7CyPC/Trd11YGT8lcV6ix1 grawpCV7b3jV8bfkqXPoJQ6ZXTffMzLM3XjQ9mOaWMbdNoWPT/1ePOxvfiS98nLlaQ3di0Z5kpz 8AA== X-Developer-Key: i=matttbe@kernel.org; a=openpgp; fpr=E8CB85F76877057A6E27F77AF6B7824F4269A073 ADD_ADDR can be sent for the ID 0, which corresponds to the local address and port linked to the initial subflow. Indeed, this address could be removed, and re-added later on, e.g. what is done in the "delete re-add signal" MPTCP Join selftests. So no reason to ignore it. Fixes: 00cfd77b9063 ("mptcp: retransmit ADD_ADDR when timeout") Signed-off-by: Matthieu Baerts (NGI0) --- net/mptcp/pm.c | 3 --- 1 file changed, 3 deletions(-) diff --git a/net/mptcp/pm.c b/net/mptcp/pm.c index 7d439d49c3af..f7c9a1f94d50 100644 --- a/net/mptcp/pm.c +++ b/net/mptcp/pm.c @@ -337,9 +337,6 @@ static void mptcp_pm_add_timer(struct timer_list *timer) if (inet_sk_state_load(sk) =3D=3D TCP_CLOSE) return; =20 - if (!entry->addr.id) - return; - timeout =3D mptcp_adjust_add_addr_timeout(msk); if (!timeout) goto out; --=20 2.53.0 From nobody Sat Apr 11 11:23:26 2026 Received: from smtp.kernel.org (aws-us-west-2-korg-mail-1.web.codeaurora.org [10.30.226.201]) (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 D131F33F591 for ; Thu, 9 Apr 2026 20:52:14 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=10.30.226.201 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1775767934; cv=none; b=Rq/qSdtkUWQuw6iQ2ld66Qsfz9UiFnT65f6cH5uzwiftwlpNZZxXc5OuDRSWoJmPuKUQMBjPVkUcyYquyFewLlSSiscRRv+tjXbuLjnlZyYmCLupOgj7CvfIgjw77NgoRT529XjUC1+F/qwo5aQKIupLuaDxRaw1R+ZWh3MmbVU= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1775767934; c=relaxed/simple; bh=4rGOfBmIYTwKhUSRTaf0053myUCNtNMlnIYborgxb/8=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=lSQ9BfCU6LqwpffuxZOgOOTNihKbQ3VzF52xHTPTG0lXqjFeFYqycfYvD+qOFqeX2JXTo6wXMCXZSGQMhkGdacvKnJ2YJA404V+DSvCn0Kbt74BAPJiRX9MWy64CYYPm9yDMZsCrJ6blpPl6cS584KDNgdmH9cSNp4+/OzSLJEQ= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=ny84R1fn; arc=none smtp.client-ip=10.30.226.201 Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b="ny84R1fn" Received: by smtp.kernel.org (Postfix) with ESMTPSA id 54329C2BCAF; Thu, 9 Apr 2026 20:52:14 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1775767934; bh=4rGOfBmIYTwKhUSRTaf0053myUCNtNMlnIYborgxb/8=; h=From:Date:Subject:References:In-Reply-To:To:Cc:From; b=ny84R1fnfvnDinGTXTWw4WyWn3H1ts8nqecqhiqv3xwSqUuKHZ2nafnUfwcVaDXtS QAwiCSxqYOf3pw7YhiBkYObiPaI21zrD3LMkNkHuaksETzJFkFXRqzgBE3Iidtub11 u4w6eTcdqgXj0+T55jwP4r2eUTq9AFopX57mpZEpuXjhWK7TRV19kOXULaRvWkEfjy ndA06ktThQl2e20KDDCuDWj1roJ58l6IIUF+S3YcgsLEbmPfUeGqI/n6bxG/yRh053 tcLCpulxvPDmnuErqIuJiRHqRgVWWnPBFTkztvCDDkb9+grB4DFfYN+Nn6rIRu4ozg oujQsPbRIqJuA== From: "Matthieu Baerts (NGI0)" Date: Thu, 09 Apr 2026 22:51:43 +0200 Subject: [PATCH mptcp-next 03/16] mptcp: pm: retrans ADD_ADDR: free sk if last Precedence: bulk X-Mailing-List: mptcp@lists.linux.dev List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20260409-mptcp-inc-limits-v1-3-0e45fa30d914@kernel.org> References: <20260409-mptcp-inc-limits-v1-0-0e45fa30d914@kernel.org> In-Reply-To: <20260409-mptcp-inc-limits-v1-0-0e45fa30d914@kernel.org> To: MPTCP Upstream Cc: "Matthieu Baerts (NGI0)" X-Mailer: b4 0.15.1 X-Developer-Signature: v=1; a=openpgp-sha256; l=796; i=matttbe@kernel.org; h=from:subject:message-id; bh=4rGOfBmIYTwKhUSRTaf0053myUCNtNMlnIYborgxb/8=; b=owGbwMvMwCVWo/Th0Gd3rumMp9WSGDJvCBZEe38NNLn1f95Uhps3VgsZKOxrPvvR4/jBnaaHu f9lax6+2FHKwiDGxSArpsgi3RaZP/N5FW+Jl58FzBxWJpAhDFycAjARpdeMDG3Kmemb7CZOc5gv r6Msc91xn0fwDs9b578fXzw76NpNnfOMDHMti3R1FqombuH1FZmzLqahmJf/VW/hk7nB/lGX49I k2QA= X-Developer-Key: i=matttbe@kernel.org; a=openpgp; fpr=E8CB85F76877057A6E27F77AF6B7824F4269A073 When an ADD_ADDR is retransmitted, the sk is held in sk_reset_timer(), and released at the end. If at that moment, it was the last reference being held, the sk would not be freed. sock_put() should then be called instead of __sock_put(). Fixes: 00cfd77b9063 ("mptcp: retransmit ADD_ADDR when timeout") Signed-off-by: Matthieu Baerts (NGI0) --- net/mptcp/pm.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/net/mptcp/pm.c b/net/mptcp/pm.c index f7c9a1f94d50..2cefc9b6c1b8 100644 --- a/net/mptcp/pm.c +++ b/net/mptcp/pm.c @@ -365,7 +365,7 @@ static void mptcp_pm_add_timer(struct timer_list *timer) mptcp_pm_subflow_established(msk); =20 out: - __sock_put(sk); + sock_put(sk); } =20 struct mptcp_pm_add_entry * --=20 2.53.0 From nobody Sat Apr 11 11:23:26 2026 Received: from smtp.kernel.org (aws-us-west-2-korg-mail-1.web.codeaurora.org [10.30.226.201]) (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 B061933D6DD for ; Thu, 9 Apr 2026 20:52:15 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=10.30.226.201 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1775767935; cv=none; b=pUPhKnRRc20h0Jx5UAOoo8Sk+WR6WsimyZVrSz7VXDfxMeua5s2HLSFSia8OZHBZnYjy/06Xu7xw98JFVGRmi4+Y10KBxquxczjprTYwhcvpqaA4wHUbam+3VcMb5LKb66RJ1COpPfGPr7WaU/CUn7X4OYuB87g3z4ir+bb8MQs= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1775767935; c=relaxed/simple; bh=1zMUF3jK59gjLBrb4ucKA1VdIV3Kwl+kiDZANk3uCjE=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=bWvD7wRdZPX5qT59K9dN9X4bQTivAaJMmwaJgzOIs/JCeFl0t/jid5WiGxh4g8w4zHNdjr3/rv4wtR65Udiu3DNO8jOuGg5+OYJfasypXFYuwIFve4IPuOpA8TuzSkRJVJQzDMuiygmxfYFGcHqJ20G8/lt5pUBXsAt/Zu/5ZzI= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=ppWRY2Eu; arc=none smtp.client-ip=10.30.226.201 Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b="ppWRY2Eu" Received: by smtp.kernel.org (Postfix) with ESMTPSA id 1BAFCC4AF09; Thu, 9 Apr 2026 20:52:14 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1775767935; bh=1zMUF3jK59gjLBrb4ucKA1VdIV3Kwl+kiDZANk3uCjE=; h=From:Date:Subject:References:In-Reply-To:To:Cc:From; b=ppWRY2EuH5uwc3CnAYJw2N1b/+PqLdjmzTWIPqtgn2bTJG020XCAfBfDegZzqL4eF HR6O4pcrUguI7Gaqal6On+gbjuTafN+D+3yXk6DIW/KP8UjqaNlHFB7XZcDe+xkm0g GM8CS+3s1o5NH3w2NzBMK6rI550WcGmMWOBMVs08vsOOg4/+tSZ22suwi/6nVb4krK peVAJ34Mx3KbTggYtIRW6uiyXaJcsxbBz6csW3TdQfD7/W1X9/PmhsE5pbXXSnPxab 3pyrJpoqSIb25LXD9HsPgEdFrGKnJSg5WrZGWUMzcJ+baX9qSifnDmY3sLNxWX1KnE IIgZVJw5Rqrqw== From: "Matthieu Baerts (NGI0)" Date: Thu, 09 Apr 2026 22:51:44 +0200 Subject: [PATCH mptcp-next 04/16] mptcp: pm: retrans ADD_ADDR: always decrease sk refcount Precedence: bulk X-Mailing-List: mptcp@lists.linux.dev List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20260409-mptcp-inc-limits-v1-4-0e45fa30d914@kernel.org> References: <20260409-mptcp-inc-limits-v1-0-0e45fa30d914@kernel.org> In-Reply-To: <20260409-mptcp-inc-limits-v1-0-0e45fa30d914@kernel.org> To: MPTCP Upstream Cc: "Matthieu Baerts (NGI0)" X-Mailer: b4 0.15.1 X-Developer-Signature: v=1; a=openpgp-sha256; l=1069; i=matttbe@kernel.org; h=from:subject:message-id; bh=1zMUF3jK59gjLBrb4ucKA1VdIV3Kwl+kiDZANk3uCjE=; b=owGbwMvMwCVWo/Th0Gd3rumMp9WSGDJvCBYK3TLhDYz8spDLcXW1RrSHfswGjikem863Mv9d+ Drt2+zsjlIWBjEuBlkxRRbptsj8mc+reEu8/Cxg5rAygQxh4OIUgIn0T2X4K5ieH3js6tpW/iiR 2cf+rMrLK3gknHnxlLSxgeWUmXKyxYwMu73/T/5SwXCC327blxkN54pm83dumH/zvXDsqxafd9v ruAE= X-Developer-Key: i=matttbe@kernel.org; a=openpgp; fpr=E8CB85F76877057A6E27F77AF6B7824F4269A073 When an ADD_ADDR is retransmitted, the sk is held in sk_reset_timer(). It should then be released in all cases at the end. Some (unlikely) checks were returning directly instead of calling sock_put() to decrease the refcount. Jump to the 'out' label to fix this potential leak. While at it, regroup the conditions, and explicitly mark them as "unlikely". Fixes: 00cfd77b9063 ("mptcp: retransmit ADD_ADDR when timeout") Signed-off-by: Matthieu Baerts (NGI0) --- net/mptcp/pm.c | 7 ++----- 1 file changed, 2 insertions(+), 5 deletions(-) diff --git a/net/mptcp/pm.c b/net/mptcp/pm.c index 2cefc9b6c1b8..78a2ad71700b 100644 --- a/net/mptcp/pm.c +++ b/net/mptcp/pm.c @@ -331,11 +331,8 @@ static void mptcp_pm_add_timer(struct timer_list *time= r) =20 pr_debug("msk=3D%p\n", msk); =20 - if (!msk) - return; - - if (inet_sk_state_load(sk) =3D=3D TCP_CLOSE) - return; + if (unlikely(!msk || inet_sk_state_load(sk) =3D=3D TCP_CLOSE)) + goto out; =20 timeout =3D mptcp_adjust_add_addr_timeout(msk); if (!timeout) --=20 2.53.0 From nobody Sat Apr 11 11:23:26 2026 Received: from smtp.kernel.org (aws-us-west-2-korg-mail-1.web.codeaurora.org [10.30.226.201]) (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 826A033D6DD for ; Thu, 9 Apr 2026 20:52:16 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=10.30.226.201 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1775767936; cv=none; b=lZsogPkICjOBIjUS9aVCSYDLnvJGYwBOrvIBF23w0gBkeLT4vBc+YzZzGxp8nvYpB+rPWi1TExh5PW07nsd/q4Ddq1DvOpaNAHIXWkubLaO9bBubmO2B/hvOBxd4h8Cs0Ok/zUreuey2FO5Hug7OtZEqyzclzxfyOx1LP9+HNaI= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1775767936; c=relaxed/simple; bh=cINc5UYgsEJ/hJ7zwgFjc3aPTT3u8hV8n0aQdsQMYXw=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=Ot3KeK82Fgsnklj35fJJi/EufUEZeko6qbz3Xd22LApEJ0YXkNLh6h4fl1O08QadFa2Hvq7jFiag6kuPzz/kJvprdHe73ncoBc0nxSJKgMlT5ogVJO/KqscBkyZwdslF0Z/WGwOtYXIypD5ZH5lnv9GakFuV8ngaMn3/oeQHEFM= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=nNyvPlnQ; arc=none smtp.client-ip=10.30.226.201 Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b="nNyvPlnQ" Received: by smtp.kernel.org (Postfix) with ESMTPSA id D6849C19424; Thu, 9 Apr 2026 20:52:15 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1775767936; bh=cINc5UYgsEJ/hJ7zwgFjc3aPTT3u8hV8n0aQdsQMYXw=; h=From:Date:Subject:References:In-Reply-To:To:Cc:From; b=nNyvPlnQEaomHxBsorUmskzPTRMtUj8/Lp65yQhWFH5/+ujeLEpqoGd83frPFb7s2 BkY41h8gWxnfelISWZcrX28zH5kJ1uHF0x4LyJwU3Vd1mXs0rw0Yp91PSahaPNqdIY Y8XGyBzhQQLTfSRSdhl1qPRE7UrSN7R7kFW0T++yDJfLYP0HEwIVIcw8Bno+9XwEsC xQimkWGduV8gTditdh3ADGVBOQfcDszKBZRNRZKOEriM9n1dkHqKH7hE3U8oVZsmgO 6ilVjP2RbcHBdDNrcfbdxNzYORNZAI9W8Uw06tlRpsAjfjUJrlpphpErMpdcHffPAC RC6ItnPsRSf5g== From: "Matthieu Baerts (NGI0)" Date: Thu, 09 Apr 2026 22:51:45 +0200 Subject: [PATCH mptcp-next 05/16] mptcp: pm: retrans ADD_ADDR: skip inactive subflows Precedence: bulk X-Mailing-List: mptcp@lists.linux.dev List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20260409-mptcp-inc-limits-v1-5-0e45fa30d914@kernel.org> References: <20260409-mptcp-inc-limits-v1-0-0e45fa30d914@kernel.org> In-Reply-To: <20260409-mptcp-inc-limits-v1-0-0e45fa30d914@kernel.org> To: MPTCP Upstream Cc: "Matthieu Baerts (NGI0)" X-Mailer: b4 0.15.1 X-Developer-Signature: v=1; a=openpgp-sha256; l=1765; i=matttbe@kernel.org; h=from:subject:message-id; bh=cINc5UYgsEJ/hJ7zwgFjc3aPTT3u8hV8n0aQdsQMYXw=; b=owGbwMvMwCVWo/Th0Gd3rumMp9WSGDJvCBY1LawNnWDxj7O2jydygtrLz3dMJe5IsUcap/odN FsuLn+ro5SFQYyLQVZMkUW6LTJ/5vMq3hIvPwuYOaxMIEMYuDgFYCL33Rn+p+m/vnT29L5PMk9P mC5d8bLxguJbhyfv3r/lSe051pphu4zhf1hY08XGbfw7X2q6HjmzWW3q37L3rKIKxRcF5+y3Wpm 9nQsA X-Developer-Key: i=matttbe@kernel.org; a=openpgp; fpr=E8CB85F76877057A6E27F77AF6B7824F4269A073 When looking at the maximum RTO amongst the subflows, inactive subflows were taken into account: that includes stale ones, and the initial one if it has been already been closed. Unusable subflows are now simply skipped. Stale ones are used as an alternative: if there are only stale ones, to take their maximum RTO and avoid to eventually fallback to net.mptcp.add_addr_timeout, which is set to 2 minutes by default. Fixes: 30549eebc4d8 ("mptcp: make ADD_ADDR retransmission timeout adaptive") Signed-off-by: Matthieu Baerts (NGI0) --- net/mptcp/pm.c | 17 ++++++++++++----- 1 file changed, 12 insertions(+), 5 deletions(-) diff --git a/net/mptcp/pm.c b/net/mptcp/pm.c index 78a2ad71700b..e954dc46e6bc 100644 --- a/net/mptcp/pm.c +++ b/net/mptcp/pm.c @@ -305,20 +305,27 @@ static unsigned int mptcp_adjust_add_addr_timeout(str= uct mptcp_sock *msk) const struct net *net =3D sock_net((struct sock *)msk); unsigned int rto =3D mptcp_get_add_addr_timeout(net); struct mptcp_subflow_context *subflow; - unsigned int max =3D 0; + unsigned int max =3D 0, max_stale =3D 0; =20 mptcp_for_each_subflow(msk, subflow) { struct sock *ssk =3D mptcp_subflow_tcp_sock(subflow); struct inet_connection_sock *icsk =3D inet_csk(ssk); =20 - if (icsk->icsk_rto > max) + if (!__mptcp_subflow_active(subflow)) + continue; + + if (unlikely(subflow->stale)) { + if (icsk->icsk_rto > max_stale) + max_stale =3D icsk->icsk_rto; + } else { max =3D icsk->icsk_rto; + } } =20 - if (max && max < rto) - rto =3D max; + if (max) + return max < rto ? max : rto; =20 - return rto; + return max_stale && max_stale < rto ? max_stale : rto; } =20 static void mptcp_pm_add_timer(struct timer_list *timer) --=20 2.53.0 From nobody Sat Apr 11 11:23:26 2026 Received: from smtp.kernel.org (aws-us-west-2-korg-mail-1.web.codeaurora.org [10.30.226.201]) (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 5442F86329 for ; Thu, 9 Apr 2026 20:52:17 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=10.30.226.201 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1775767937; cv=none; b=XNv24csoB6Ytzo2kKy90JhVmg+qvXqy8tfKvz3/VqENrwBQ+EaRCzXh5O3FedzqV1L7VO2Cmas0i1SFP9fI8muCkMkkNmQkQC+SGbDPQL8giOMuSfRbQv/yBYUczKbOgwod9izayqdyVFcWGLkjZebfzrdbse8ZR3J2TtN7Y9Bo= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1775767937; c=relaxed/simple; bh=0wHmk6A4DRGr56r/kPjXDjlut04j2hg65yYWe+lbaFw=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=ebZnH14Azv6zCcEypZpkjLg7RX/4StB9jANztPDXEKyglm6Y4G7YFfXHys2xCE295kFxHXAbAI7yCIhOu4g34GJMnhcImPOqHlgmUfAEiII6qWK+QBRNgy9Z62QrvNWHsZfKV0DEEBWX7hBEndjmABibY6WrmrM7erEtHAQf/d0= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=loJKg2nv; arc=none smtp.client-ip=10.30.226.201 Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b="loJKg2nv" Received: by smtp.kernel.org (Postfix) with ESMTPSA id 9D538C2BC87; Thu, 9 Apr 2026 20:52:16 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1775767937; bh=0wHmk6A4DRGr56r/kPjXDjlut04j2hg65yYWe+lbaFw=; h=From:Date:Subject:References:In-Reply-To:To:Cc:From; b=loJKg2nvy+x/PFXvZxr3MoXYEjquX31kvrGAocNyRFHEWGfNJxRTpdeOh2S6eu6K4 BpVek3/KcVxkvPsgB/j8F7TlUnr+Ka6D58BPVo33lbPk+NpmGTcJ2Jg2ELKyUCZDVz jcNX9/9VXQfrBCMMou54NKuX2K9sPH4Z+niQ8c7rVhsb+M6WtFN/Gtz8hlCcJd2M3I gkTjoZVs8pMTXoXAz6iC91a8FhEDz4OCbI77iZ6zKz3dU29BVHDnwEQH5TZX2+e9Hb iDsA0z5xMyxwwQamCmY0itDiXXELRLyokFhXrl4LQB6fB2m7AeyBRV/CtlxZUQx7gR NboDUvgEgfJMw== From: "Matthieu Baerts (NGI0)" Date: Thu, 09 Apr 2026 22:51:46 +0200 Subject: [PATCH mptcp-next 06/16] mptcp: pm: retrans ADD_ADDR: return early if no retrans Precedence: bulk X-Mailing-List: mptcp@lists.linux.dev List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20260409-mptcp-inc-limits-v1-6-0e45fa30d914@kernel.org> References: <20260409-mptcp-inc-limits-v1-0-0e45fa30d914@kernel.org> In-Reply-To: <20260409-mptcp-inc-limits-v1-0-0e45fa30d914@kernel.org> To: MPTCP Upstream Cc: "Matthieu Baerts (NGI0)" X-Mailer: b4 0.15.1 X-Developer-Signature: v=1; a=openpgp-sha256; l=747; i=matttbe@kernel.org; h=from:subject:message-id; bh=0wHmk6A4DRGr56r/kPjXDjlut04j2hg65yYWe+lbaFw=; b=owGbwMvMwCVWo/Th0Gd3rumMp9WSGDJvCBZ/dlpb2PiUIWPFl5WbXHe5T9vZK5i+edYF2wkq8 /dzKR6P7ihlYRDjYpAVU2SRbovMn/m8irfEy88CZg4rE8gQBi5OAZiIfg4jwwWTR45S8UkWl6Nb noqxCH38oZx1pyFL6O/LH/fnrjt4/CsjQ/OyvZ5citx/9TNuGZsl73ngWPlwd7g1k2KQcNKeRIe 1bAA= X-Developer-Key: i=matttbe@kernel.org; a=openpgp; fpr=E8CB85F76877057A6E27F77AF6B7824F4269A073 No need to iterate over all subflows if there is no retransmission needed. Exit early in this case then. Signed-off-by: Matthieu Baerts (NGI0) --- net/mptcp/pm.c | 3 +++ 1 file changed, 3 insertions(+) diff --git a/net/mptcp/pm.c b/net/mptcp/pm.c index e954dc46e6bc..beb06213585a 100644 --- a/net/mptcp/pm.c +++ b/net/mptcp/pm.c @@ -307,6 +307,9 @@ static unsigned int mptcp_adjust_add_addr_timeout(struc= t mptcp_sock *msk) struct mptcp_subflow_context *subflow; unsigned int max =3D 0, max_stale =3D 0; =20 + if (!rto) + return 0; + mptcp_for_each_subflow(msk, subflow) { struct sock *ssk =3D mptcp_subflow_tcp_sock(subflow); struct inet_connection_sock *icsk =3D inet_csk(ssk); --=20 2.53.0 From nobody Sat Apr 11 11:23:26 2026 Received: from smtp.kernel.org (aws-us-west-2-korg-mail-1.web.codeaurora.org [10.30.226.201]) (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 EC6BD2E4257 for ; Thu, 9 Apr 2026 20:52:17 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=10.30.226.201 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1775767938; cv=none; b=jRdKYB0IbX9P+H8p6H//iVZjYMd0PaX2v/dcXA2rzcJYUbrvHxoTbmduy9Hzxbtax7kjJjCPydziZ6DXEIJJ71rduQPj8TDiyCrSqOQYHbEEwltwRXprL6oVc4fycukZd9bnKKAZ64GQdkS255rw3eaJHz064oJegLSwgX+MryQ= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1775767938; c=relaxed/simple; bh=TVCvyopYES9xmr99hgxNq+W0C9O0oVBp81sFTYfc0NA=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=fFTovpUmwTOn2JWIa6rE5t5SIC6Snv8CpBdRFWUDtXNzS0O0ps5OJO/SrrP9y9TmymAxLxIfZa5QqMh03xBBQhvlxkwD9YUceZS6aXKYXtN2QLue9KEcxmPsPFYbGfNexY26uR/J/MUoDo0vlnM1tnjqGDW22Sn2bv9pP0DNkOc= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=qp9a7U/r; arc=none smtp.client-ip=10.30.226.201 Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b="qp9a7U/r" Received: by smtp.kernel.org (Postfix) with ESMTPSA id 63FA1C2BCAF; Thu, 9 Apr 2026 20:52:17 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1775767937; bh=TVCvyopYES9xmr99hgxNq+W0C9O0oVBp81sFTYfc0NA=; h=From:Date:Subject:References:In-Reply-To:To:Cc:From; b=qp9a7U/rUO8K4iu6r56QkHDFG/FrZj1uPkF1m9tjjY/AAL4B0JcoMMiT6QekOs31M niKejAF2C5FR5fdIpxEJCHUv1LgL6HDeZEtBSOQOQPCuOAkuw1B3l5gYASGaGAiPi3 hAFwt5aXIdKMS6nEys1Ny7Ey1gXgAiQmc4/qKi9w0GxOSonP2r+PNWIsVgsjQQjttd hg3F4nIz25bchoRO0F6q5srkv6rpeqKQEsnu/k7Y2huSNz9vJOrDN2gOafzwQWaJW9 kcDEn0TwJNswRoPnMk1s6YagEfdiIW1u9cdhal4eElktrvIPb8tST05u6vEGvrj+Ug FvL9jQ4BSI7Yw== From: "Matthieu Baerts (NGI0)" Date: Thu, 09 Apr 2026 22:51:47 +0200 Subject: [PATCH mptcp-next 07/16] mptcp: pm: prio: skip closed subflows Precedence: bulk X-Mailing-List: mptcp@lists.linux.dev List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20260409-mptcp-inc-limits-v1-7-0e45fa30d914@kernel.org> References: <20260409-mptcp-inc-limits-v1-0-0e45fa30d914@kernel.org> In-Reply-To: <20260409-mptcp-inc-limits-v1-0-0e45fa30d914@kernel.org> To: MPTCP Upstream Cc: "Matthieu Baerts (NGI0)" X-Mailer: b4 0.15.1 X-Developer-Signature: v=1; a=openpgp-sha256; l=967; i=matttbe@kernel.org; h=from:subject:message-id; bh=TVCvyopYES9xmr99hgxNq+W0C9O0oVBp81sFTYfc0NA=; b=owGbwMvMwCVWo/Th0Gd3rumMp9WSGDJvCJbIGx64c3mlO+OctXdEpH/9uJkuJ9Z3xs52IaPlh ee7Zt+/01HKwiDGxSArpsgi3RaZP/N5FW+Jl58FzBxWJpAhDFycAjCRM8sYGW5o5+rOsZgtpduz oGb1Lyvzyc5G96d7GFtk7Dq99p76zlxGhpU72C16Jseu/rBY8sL0bzzv16zmETYL7S5Kf6SvLLz mGTcA X-Developer-Key: i=matttbe@kernel.org; a=openpgp; fpr=E8CB85F76877057A6E27F77AF6B7824F4269A073 When sending an MP_PRIO, closed subflows needs to be skipped. This fixes the case where the initial subflow got closed, re-opened later, then an MP_PRIO is needed for the same local address. Fixes: 067065422fcd ("mptcp: add the outgoing MP_PRIO support") Fixes: b29fcfb54cd7 ("mptcp: full disconnect implementation") Signed-off-by: Matthieu Baerts (NGI0) --- net/mptcp/pm.c | 3 +++ 1 file changed, 3 insertions(+) diff --git a/net/mptcp/pm.c b/net/mptcp/pm.c index beb06213585a..e1dbc64134bf 100644 --- a/net/mptcp/pm.c +++ b/net/mptcp/pm.c @@ -283,6 +283,9 @@ int mptcp_pm_mp_prio_send_ack(struct mptcp_sock *msk, struct sock *ssk =3D mptcp_subflow_tcp_sock(subflow); struct mptcp_addr_info local, remote; =20 + if (!__mptcp_subflow_active(subflow)) + continue; + mptcp_local_address((struct sock_common *)ssk, &local); if (!mptcp_addresses_equal(&local, addr, addr->port)) continue; --=20 2.53.0 From nobody Sat Apr 11 11:23:26 2026 Received: from smtp.kernel.org (aws-us-west-2-korg-mail-1.web.codeaurora.org [10.30.226.201]) (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 A4BF233B94A for ; Thu, 9 Apr 2026 20:52:18 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=10.30.226.201 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1775767938; cv=none; b=oxudVZNJovHDWjjY04BPLBEcnXRlM4VM5YoZUppfOUs9sD8rO3lTB3H2WpdHC1cbuOxh7BQD6B7PMwalEfWv2kjeUgDDCJHMq2mkSIYS5MGPe9E8IDx84+eMN1wUureboyfDFMoZMktKkAA0RAxUJhIvyTzJCNT6IQxH5gWQwjo= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1775767938; c=relaxed/simple; bh=J/4TSLYnn4WswjEmdMv9hBM7YG3BsYv6rruqE5u/zDQ=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=suvPYvWqlcMr1Q8gcuZNSyUAa+iPslEAYV9KnzE4YxxG9ZQ2u8sQ6QmVIwZSp7VIBPvlZ7bqK5qcXY+zzUhbh569ustCMaK6F+TRJ6jCfxVwUoENVJnjNDLMafqcZ5v9rb3Rpy50uRvxbFaSiOVjst5s4mzC1G9EyzTEWbcEbfc= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=ic65mMPn; arc=none smtp.client-ip=10.30.226.201 Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b="ic65mMPn" Received: by smtp.kernel.org (Postfix) with ESMTPSA id 2AB44C19424; Thu, 9 Apr 2026 20:52:18 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1775767938; bh=J/4TSLYnn4WswjEmdMv9hBM7YG3BsYv6rruqE5u/zDQ=; h=From:Date:Subject:References:In-Reply-To:To:Cc:From; b=ic65mMPn/64wjcn3UZ+E5SWEV9LuhF5qCJGoa/gId0eoUKDZ0FIC7E/RsflCu1ZmW nUVflpmT4FvJnXjOuzKEsFXt0gFMF6Pg5TfQojF5BtLmjtar7K/Y1jUk95jTN9fKoC bkFjgcw0iiGez/0TpEeUa6g5tRYhdztEmkE3ty79q+YnDEE+FEKfbH+Byh28/Rii/+ 6oAiMvr0VSvSAod/aUsmmjMmkRUt+QFHMN0tuEv/h1uBAgzK9x5dgQEgZLiCeFYJ/C ZS6IeTRiE6eWdqIdP9gqx32hAspTmTuieOAjKP15kK3g8AIFtnbluOHCuF2JLHzSFi 6C9gl/Le/6oNw== From: "Matthieu Baerts (NGI0)" Date: Thu, 09 Apr 2026 22:51:48 +0200 Subject: [PATCH mptcp-next 08/16] selftests: mptcp: pm: restrict 'unknown' check to pm_nl_ctl Precedence: bulk X-Mailing-List: mptcp@lists.linux.dev List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20260409-mptcp-inc-limits-v1-8-0e45fa30d914@kernel.org> References: <20260409-mptcp-inc-limits-v1-0-0e45fa30d914@kernel.org> In-Reply-To: <20260409-mptcp-inc-limits-v1-0-0e45fa30d914@kernel.org> To: MPTCP Upstream Cc: "Matthieu Baerts (NGI0)" X-Mailer: b4 0.15.1 X-Developer-Signature: v=1; a=openpgp-sha256; l=1497; i=matttbe@kernel.org; h=from:subject:message-id; bh=J/4TSLYnn4WswjEmdMv9hBM7YG3BsYv6rruqE5u/zDQ=; b=owGbwMvMwCVWo/Th0Gd3rumMp9WSGDJvCJY+PDHbf8Vk3pnsXMEP9v+Zc8PV31U19z/XZD2xe 9P4yzdP6ihlYRDjYpAVU2SRbovMn/m8irfEy88CZg4rE8gQBi5OAZiIljkjw5/9T63kEtV23nD+ 92rt76MZCx2MOLfHvNq6+iRTm6PsvnRGhofBa6efKr3y/Ognhb+y+6f8K5l72PyQx6R1XGIn1ha sfMoHAA== X-Developer-Key: i=matttbe@kernel.org; a=openpgp; fpr=E8CB85F76877057A6E27F77AF6B7824F4269A073 When pm_netlink.sh is executed with '-i', 'ip mptcp' is used instead of 'pm_nl_ctl'. IPRoute2 doesn't support the 'unknown' flag, which has only been added to 'pm_nl_ctl' for this specific check: to ensure that the kernel ignores such unsupported flag. No reason to add this flag to 'ip mptcp'. Then, this check should be skipped when 'ip mptcp' is used. Fixes: 29f4801e9c8d ("selftests: mptcp: pm: ensure unknown flags are ignore= d") Signed-off-by: Matthieu Baerts (NGI0) --- tools/testing/selftests/net/mptcp/pm_netlink.sh | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/tools/testing/selftests/net/mptcp/pm_netlink.sh b/tools/testin= g/selftests/net/mptcp/pm_netlink.sh index 123d9d7a0278..d844ee687a29 100755 --- a/tools/testing/selftests/net/mptcp/pm_netlink.sh +++ b/tools/testing/selftests/net/mptcp/pm_netlink.sh @@ -192,9 +192,13 @@ check "show_endpoints" \ flush_endpoint check "show_endpoints" "" "flush addrs" =20 -add_endpoint 10.0.1.1 flags unknown -check "show_endpoints" "$(format_endpoints "1,10.0.1.1")" "ignore unknown = flags" -flush_endpoint +# "unknown" flag is only supported by pm_nl_ctl +if ! mptcp_lib_is_ip_mptcp; then + add_endpoint 10.0.1.1 flags unknown + check "show_endpoints" "$(format_endpoints "1,10.0.1.1")" \ + "ignore unknown flags" + flush_endpoint +fi =20 set_limits 9 1 2>/dev/null check "get_limits" "${default_limits}" "rcv addrs above hard limit" --=20 2.53.0 From nobody Sat Apr 11 11:23:26 2026 Received: from smtp.kernel.org (aws-us-west-2-korg-mail-1.web.codeaurora.org [10.30.226.201]) (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 A968433B6D3 for ; Thu, 9 Apr 2026 20:52:19 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=10.30.226.201 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1775767939; cv=none; b=k6geVWiVrbty52+kU6WOE6fO+iJtVk/0BDZTB9I4KRMV1m9mFF7x5Hrb+qVcF3hFt7NQuqT0NTQQOYluaWARzQPAOtDw9y1R10LMSG4ScT8oBvQDeu49t4oLJ93QggjeIEoqfj0DyEq9iFMJUibT0clMo9YOQCarlji2GxbW984= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1775767939; c=relaxed/simple; bh=vRZJsZHOeLWoLa4dfnoRNMnj99bImcL0DAQbf/wmRVk=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=ugI8xFv5pg/gmzvBdb1KjqzO8R2w3bmRknvQQKXxmsqLrLWIrOTLIUgXqtXCO8eJnTzA4+lkiDVksFVU6Am5yRiVWXVIrxazSrgOm/RHghgjVQHMXxWJJemQR+DjShNjOJGuD7/vPHVtP9s43aSnVdjZItHRXT5c/LUMiItlQbc= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=TdIb2BK4; arc=none smtp.client-ip=10.30.226.201 Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b="TdIb2BK4" Received: by smtp.kernel.org (Postfix) with ESMTPSA id E5BE6C4AF0B; Thu, 9 Apr 2026 20:52:18 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1775767939; bh=vRZJsZHOeLWoLa4dfnoRNMnj99bImcL0DAQbf/wmRVk=; h=From:Date:Subject:References:In-Reply-To:To:Cc:From; b=TdIb2BK4iFvEJAr5zItbzIeIbWswyrUcnjeUOASqk/jSj9HS0UgImoBM/5gBZRcIT L2eW20GRVroeTgJz7r5zr7GGcLBEZA2Wm04oWOS/+Gs64Y/UcIfgPbuZzk/cFtJCAi 3z7XqxyWiycWgIacFiR8SXxofkRHIwIoc+MbOwo4HhXBBxuPmuAW6AzYA82fd5fpVq 4WfD18lMNxN+VTizEkXBHBULz1PKe4tCEXEDYzQ3stLkzVezBm5Nq4EHUbhMyAnSwQ qysvOrLRAcHxHhbnUe9fcGX4jI4y1aFtLrhKn0Z0rbIBJvGl3eD+kYmcqtbMu1gg1H SKkt+LA0H0ukw== From: "Matthieu Baerts (NGI0)" Date: Thu, 09 Apr 2026 22:51:49 +0200 Subject: [PATCH mptcp-next 09/16] mptcp: pm: in-kernel: explicitly limit batches to array size Precedence: bulk X-Mailing-List: mptcp@lists.linux.dev List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20260409-mptcp-inc-limits-v1-9-0e45fa30d914@kernel.org> References: <20260409-mptcp-inc-limits-v1-0-0e45fa30d914@kernel.org> In-Reply-To: <20260409-mptcp-inc-limits-v1-0-0e45fa30d914@kernel.org> To: MPTCP Upstream Cc: "Matthieu Baerts (NGI0)" X-Mailer: b4 0.15.1 X-Developer-Signature: v=1; a=openpgp-sha256; l=5699; i=matttbe@kernel.org; h=from:subject:message-id; bh=vRZJsZHOeLWoLa4dfnoRNMnj99bImcL0DAQbf/wmRVk=; b=owGbwMvMwCVWo/Th0Gd3rumMp9WSGDJvCJY+Ms0/0VuQ++nCywtmjzZVRB5J4PpX9NXBeH/tX x5JzysnOkpZGMS4GGTFFFmk2yLzZz6v4i3x8rOAmcPKBDKEgYtTACZi3cjwP31veceDKU9Xxur1 2z6+0WOrXPWiKdTSpKbGQ0JstsSZJwz/dOck2p4qjn9XF+5h7brY6NHjssJoX77Y6NNyqUsiNtu yAQA= X-Developer-Key: i=matttbe@kernel.org; a=openpgp; fpr=E8CB85F76877057A6E27F77AF6B7824F4269A073 The in-kernel PM can create subflows in reply to ADD_ADDR by batch of maximum 8 subflows for the moment. Same when adding new "subflow" endpoints with the fullmesh flag. This limit is linked to the arrays used during these steps. There was no explicit limit to the arrays size (8), because the limit of extra subflows is the same (8). It seems safer to use an explicit limit, but also these two sizes are going to be different in the next commit. Signed-off-by: Matthieu Baerts (NGI0) --- net/mptcp/pm_kernel.c | 32 +++++++++++++++++++++----------- 1 file changed, 21 insertions(+), 11 deletions(-) diff --git a/net/mptcp/pm_kernel.c b/net/mptcp/pm_kernel.c index 7895fb5f982e..e9102c0f92f4 100644 --- a/net/mptcp/pm_kernel.c +++ b/net/mptcp/pm_kernel.c @@ -201,7 +201,8 @@ fill_remote_addr(struct mptcp_sock *msk, struct mptcp_a= ddr_info *local, static unsigned int fill_remote_addresses_fullmesh(struct mptcp_sock *msk, struct mptcp_addr_info *local, - struct mptcp_addr_info *addrs) + struct mptcp_addr_info *addrs, + int addrs_size) { u8 limit_extra_subflows =3D mptcp_pm_get_limit_extra_subflows(msk); bool deny_id0 =3D READ_ONCE(msk->pm.remote_deny_join_id0); @@ -236,7 +237,8 @@ fill_remote_addresses_fullmesh(struct mptcp_sock *msk, msk->pm.extra_subflows++; i++; =20 - if (msk->pm.extra_subflows >=3D limit_extra_subflows) + if (msk->pm.extra_subflows >=3D limit_extra_subflows || + i =3D=3D addrs_size) break; } =20 @@ -248,7 +250,8 @@ fill_remote_addresses_fullmesh(struct mptcp_sock *msk, */ static unsigned int fill_remote_addresses_vec(struct mptcp_sock *msk, struct mptcp_addr_info *= local, - bool fullmesh, struct mptcp_addr_info *addrs) + bool fullmesh, struct mptcp_addr_info *addrs, + int addrs_size) { /* Non-fullmesh: fill in the single entry corresponding to the primary * MPC subflow remote address, and return 1, corresponding to 1 entry. @@ -257,7 +260,7 @@ fill_remote_addresses_vec(struct mptcp_sock *msk, struc= t mptcp_addr_info *local, return fill_remote_addr(msk, local, addrs); =20 /* Fullmesh endpoint: fill all possible remote addresses */ - return fill_remote_addresses_fullmesh(msk, local, addrs); + return fill_remote_addresses_fullmesh(msk, local, addrs, addrs_size); } =20 static struct mptcp_pm_addr_entry * @@ -407,7 +410,8 @@ static void mptcp_pm_create_subflow_or_signal_addr(stru= ct mptcp_sock *msk) else /* local_addr_used is not decr for ID 0 */ msk->pm.local_addr_used++; =20 - nr =3D fill_remote_addresses_vec(msk, &local.addr, fullmesh, addrs); + nr =3D fill_remote_addresses_vec(msk, &local.addr, fullmesh, + addrs, ARRAY_SIZE(addrs)); if (nr =3D=3D 0) continue; =20 @@ -444,6 +448,7 @@ static unsigned int fill_local_addresses_vec_fullmesh(struct mptcp_sock *msk, struct mptcp_addr_info *remote, struct mptcp_pm_local *locals, + int locals_size, bool c_flag_case) { u8 limit_extra_subflows =3D mptcp_pm_get_limit_extra_subflows(msk); @@ -485,7 +490,8 @@ fill_local_addresses_vec_fullmesh(struct mptcp_sock *ms= k, msk->pm.extra_subflows++; i++; =20 - if (msk->pm.extra_subflows >=3D limit_extra_subflows) + if (msk->pm.extra_subflows >=3D limit_extra_subflows || + i =3D=3D locals_size) break; } rcu_read_unlock(); @@ -556,7 +562,8 @@ fill_local_laminar_endp(struct mptcp_sock *msk, struct = mptcp_addr_info *remote, static unsigned int fill_local_addresses_vec_c_flag(struct mptcp_sock *msk, struct mptcp_addr_info *remote, - struct mptcp_pm_local *locals) + struct mptcp_pm_local *locals, + int locals_size) { u8 limit_extra_subflows =3D mptcp_pm_get_limit_extra_subflows(msk); struct pm_nl_pernet *pernet =3D pm_nl_get_pernet_from_msk(msk); @@ -583,7 +590,8 @@ fill_local_addresses_vec_c_flag(struct mptcp_sock *msk, msk->pm.extra_subflows++; i++; =20 - if (msk->pm.extra_subflows >=3D limit_extra_subflows) + if (msk->pm.extra_subflows >=3D limit_extra_subflows || + i =3D=3D locals_size) break; } =20 @@ -617,13 +625,14 @@ fill_local_address_any(struct mptcp_sock *msk, struct= mptcp_addr_info *remote, */ static unsigned int fill_local_addresses_vec(struct mptcp_sock *msk, struct mptcp_addr_info *r= emote, - struct mptcp_pm_local *locals) + struct mptcp_pm_local *locals, int locals_size) { bool c_flag_case =3D remote->id && mptcp_pm_add_addr_c_flag_case(msk); =20 /* If there is at least one MPTCP endpoint with a fullmesh flag */ if (mptcp_pm_get_endp_fullmesh_max(msk)) return fill_local_addresses_vec_fullmesh(msk, remote, locals, + locals_size, c_flag_case); =20 /* If there is at least one MPTCP endpoint with a laminar flag */ @@ -634,7 +643,8 @@ fill_local_addresses_vec(struct mptcp_sock *msk, struct= mptcp_addr_info *remote, * limits are used -- accepting no ADD_ADDR -- and use subflow endpoints */ if (c_flag_case) - return fill_local_addresses_vec_c_flag(msk, remote, locals); + return fill_local_addresses_vec_c_flag(msk, remote, locals, + locals_size); =20 /* No special case: fill in the single 'IPADDRANY' local address */ return fill_local_address_any(msk, remote, &locals[0]); @@ -669,7 +679,7 @@ static void mptcp_pm_nl_add_addr_received(struct mptcp_= sock *msk) /* connect to the specified remote address, using whatever * local address the routing configuration will pick. */ - nr =3D fill_local_addresses_vec(msk, &remote, locals); + nr =3D fill_local_addresses_vec(msk, &remote, locals, ARRAY_SIZE(locals)); if (nr =3D=3D 0) return; =20 --=20 2.53.0 From nobody Sat Apr 11 11:23:26 2026 Received: from smtp.kernel.org (aws-us-west-2-korg-mail-1.web.codeaurora.org [10.30.226.201]) (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 4E66A33FE06 for ; Thu, 9 Apr 2026 20:52:20 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=10.30.226.201 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1775767940; cv=none; b=bbE1daY6207UOSI/VhRwi1AQhm0w9as3f7wh+f/Mh6f5D9fjS3DgYkQUnJYrzLvFkNEQQwM8HQGOpSJTwcSZamlmbWLerRW/gwe4vV61GUNmfjoorTFsGK/pEPR8Ap++KcSQUA43TDZ9k3SSceQcxMkJOeocZGJjVQksvzwuMJw= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1775767940; c=relaxed/simple; bh=yCVlhkZB2Vnmh/ppIw20AhzLny2aWqDy/QYYGuPF5mQ=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=qQWnjxOdUnH5zVcbBGZ+RuJ3HlDNPqKlhEx8v99vumB1mHonLyZvg3Ctom6GP6u7yPKgzO6uSckdIvDBNzE+EiNSwQUwk1VWEp6OJvgsCdvam+t3fAjrb+sa8P0jbHRgOcNDA5ddwbTfaqw5u4kPEQUAbZu7DYAkN0uXgknTkM4= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=vIABYap+; arc=none smtp.client-ip=10.30.226.201 Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b="vIABYap+" Received: by smtp.kernel.org (Postfix) with ESMTPSA id AD7C1C19424; Thu, 9 Apr 2026 20:52:19 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1775767940; bh=yCVlhkZB2Vnmh/ppIw20AhzLny2aWqDy/QYYGuPF5mQ=; h=From:Date:Subject:References:In-Reply-To:To:Cc:From; b=vIABYap+HeCAnt4TosBpLHsrUtceqOLYrdH9PaYzEmMCSpT+8p8jjo/ky8VSlAY6B 90Rt2H2sNNCbf6ZXVw7UIpfjg/Fw5XocnOtScXCa7oWWBBcaEdVvRxNFk2nmUMpf1d KrHlaxMD2sBkg6ziCCTsxCgu2uQ1T1Uu5lPyA+WSHdMoDOs2qUb1jGmGLO9A+PYjPq jVvJkaGKRD3pdLVBblqEx+6+hItnWKf+uzGJ1bWQ/BdacLl63Ye0lDHyL0d0nVihVY pK2Au3o5K8JQj1SBf/63z9VlQMtIHgw+6ee5ZOSNnG4BRD+Pa9xY70NHUrW7kyc6dx N3r76AWjRJyEw== From: "Matthieu Baerts (NGI0)" Date: Thu, 09 Apr 2026 22:51:50 +0200 Subject: [PATCH mptcp-next 10/16] mptcp: pm: in-kernel: increase all limits to 64 Precedence: bulk X-Mailing-List: mptcp@lists.linux.dev List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20260409-mptcp-inc-limits-v1-10-0e45fa30d914@kernel.org> References: <20260409-mptcp-inc-limits-v1-0-0e45fa30d914@kernel.org> In-Reply-To: <20260409-mptcp-inc-limits-v1-0-0e45fa30d914@kernel.org> To: MPTCP Upstream Cc: "Matthieu Baerts (NGI0)" X-Mailer: b4 0.15.1 X-Developer-Signature: v=1; a=openpgp-sha256; l=1981; i=matttbe@kernel.org; h=from:subject:message-id; bh=yCVlhkZB2Vnmh/ppIw20AhzLny2aWqDy/QYYGuPF5mQ=; b=owGbwMvMwCVWo/Th0Gd3rumMp9WSGDJvCJa1brm2vkNrlVm1C3/T7omJGWoVvHv3bV1r/IPxt DjjqzWfO0pZGMS4GGTFFFmk2yLzZz6v4i3x8rOAmcPKBDKEgYtTACbyyISRYevCg08iz/Z4btrN 79LC9e47q05tyemN3I8tJ8y23CZaMJnhf+Hppsk7DjxY4KJduOWVWOmRyUWln7Ivr7T4dvaLQ5a SCy8A X-Developer-Key: i=matttbe@kernel.org; a=openpgp; fpr=E8CB85F76877057A6E27F77AF6B7824F4269A073 This means switching the maximum from 8 to 64 for the number of subflows and accepted ADD_ADDR. The previous limit of 8 subflows makes sense in most cases. Using more subflows will very likely *not* improve the situation, and could even decrease the performances. But there are no technical limitations nor performance impact to raise this limit, so let's do it: this will allow people with very specific use-cases, and researchers to easily create more subflows, and measure the performance impact by themselves. The theoretical limit is 255 -- the ID is written in a u8 on the wire -- but 64 is more than enough. With so many subflows, it will be costly to iterate over all of them when operations are done in bottom half. Note that the in-kernel PM will continue to create subflows in reply to ADD_ADDR by batch of maximum 8 subflows. Same when adding new "subflow" endpoints with the fullmesh flag. Increasing those batch limits would have a memory impact. Closes: https://github.com/multipath-tcp/mptcp_net-next/issues/434 Signed-off-by: Matthieu Baerts (NGI0) --- net/mptcp/pm_kernel.c | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/net/mptcp/pm_kernel.c b/net/mptcp/pm_kernel.c index e9102c0f92f4..685bf2b9f9c2 100644 --- a/net/mptcp/pm_kernel.c +++ b/net/mptcp/pm_kernel.c @@ -30,6 +30,7 @@ struct pm_nl_pernet { }; =20 #define MPTCP_PM_ADDR_MAX 8 +#define MPTCP_PM_SUBFLOWS_MAX 64 =20 static struct pm_nl_pernet *pm_nl_get_pernet(const struct net *net) { @@ -1378,10 +1379,10 @@ static int parse_limit(struct genl_info *info, int = id, unsigned int *limit) return 0; =20 *limit =3D nla_get_u32(attr); - if (*limit > MPTCP_PM_ADDR_MAX) { + if (*limit > MPTCP_PM_SUBFLOWS_MAX) { NL_SET_ERR_MSG_ATTR_FMT(info->extack, attr, "limit greater than maximum (%u)", - MPTCP_PM_ADDR_MAX); + MPTCP_PM_SUBFLOWS_MAX); return -EINVAL; } return 0; --=20 2.53.0 From nobody Sat Apr 11 11:23:26 2026 Received: from smtp.kernel.org (aws-us-west-2-korg-mail-1.web.codeaurora.org [10.30.226.201]) (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 EFA9D34104E for ; Thu, 9 Apr 2026 20:52:20 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=10.30.226.201 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1775767941; cv=none; b=RTLkF2rLUqpdRWt9HnX9ffrC3vJZ06Lb409heVhdNNI5+fpYdrNU7dPY1hzg/+fbOl4VniXW38o5fUk3Nmfu9u4Rac8dP8upJ/tkbPo2wOtz3KS2iv+dp+ymHTmuRS9etjk2HyY8aexNlGd4QLZjF6MTvkX8kZRDqtUW23STq/8= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1775767941; c=relaxed/simple; bh=rg2sXC1Art2i0kFN50i563//GrJ1M15JsZXb3hbhYjU=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=BoazlRDA7EKxGaHHe8upr3gveiKPzBcZFi3B3MpWjn3zGKx/vlbTCLTdJwrdWjIbxRRzlldm8+tFexjVnooE3kVKmfLNZzBnGTFZeFYLgegOEuxFyHk5O3V/erRDDD7pAgO/3xl/GaqKkTjPVDdS/zmQoEtkxz16w+ZkDDGsd0E= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=UFywFGaR; arc=none smtp.client-ip=10.30.226.201 Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b="UFywFGaR" Received: by smtp.kernel.org (Postfix) with ESMTPSA id 74196C19424; Thu, 9 Apr 2026 20:52:20 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1775767940; bh=rg2sXC1Art2i0kFN50i563//GrJ1M15JsZXb3hbhYjU=; h=From:Date:Subject:References:In-Reply-To:To:Cc:From; b=UFywFGaR5gYYPeZEJHqUDxtj2Iour9FjMD2C6/PIJ2hNHn4S/aSV6siRYXrgCkH6R t5K5wUuJAszEMXksER9y/6cXp45bSZLjuEeuIHFe3KiGtifpQjkaNnr2ZO00lpXJ+2 XAgwVfOILfH38yYf36Ewivd2JTNCBZv/0sv1Rw1PlMGmW6e6n4lcZLxxtDGzRgq9Qo c5JG7Nl1i0Q43UJvmtvcKQ3P4gDvv7MsVvCkEYQ8WVjpyMme73cT933LJ1/aQPNNQ3 XQOmVy2XowGnRNouH3b0IJNCF04SO15gmI5nfnJqnuE75Y98EllfRjnuItMxgV3IaH 63rhYEq/bHkqQ== From: "Matthieu Baerts (NGI0)" Date: Thu, 09 Apr 2026 22:51:51 +0200 Subject: [PATCH mptcp-next 11/16] mptcp: pm: in-kernel: increase endpoints limit Precedence: bulk X-Mailing-List: mptcp@lists.linux.dev List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20260409-mptcp-inc-limits-v1-11-0e45fa30d914@kernel.org> References: <20260409-mptcp-inc-limits-v1-0-0e45fa30d914@kernel.org> In-Reply-To: <20260409-mptcp-inc-limits-v1-0-0e45fa30d914@kernel.org> To: MPTCP Upstream Cc: "Matthieu Baerts (NGI0)" X-Mailer: b4 0.15.1 X-Developer-Signature: v=1; a=openpgp-sha256; l=1182; i=matttbe@kernel.org; h=from:subject:message-id; bh=rg2sXC1Art2i0kFN50i563//GrJ1M15JsZXb3hbhYjU=; b=owGbwMvMwCVWo/Th0Gd3rumMp9WSGDJvCJaLrJ+f7P3KJMj6oY30it0rVXma0ypbLwUFxcuVT 5yw9eaqjlIWBjEuBlkxRRbptsj8mc+reEu8/Cxg5rAygQxh4OIUgImolTMyXFy+ta2j/xTrvzql 1unbSupFbEVUolL0knZJ/Tv0LGIODyPDbV52/ie1h1b48fHv2PKy/c9OvQqW63c/F+oWn/rgfm4 BCwA= X-Developer-Key: i=matttbe@kernel.org; a=openpgp; fpr=E8CB85F76877057A6E27F77AF6B7824F4269A073 The endpoints are managed in a list which was limited to 8 entries. This limit can be too small in some cases: by having the same limit as the number of subflows, it might not allow creating all expected subflows when having a mix of v4 and v6 addresses that can all use MPTCP on v4/v6 only networks. While increasing the limit above the new subflows one, why not using the technical limit: 254. Indeed, the endpoint will each have an ID that will be used on the wire, limited to u8, and the ID 0 is reserved to the initial subflow. Signed-off-by: Matthieu Baerts (NGI0) --- net/mptcp/pm_kernel.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/net/mptcp/pm_kernel.c b/net/mptcp/pm_kernel.c index 685bf2b9f9c2..ee92a9a127c3 100644 --- a/net/mptcp/pm_kernel.c +++ b/net/mptcp/pm_kernel.c @@ -743,7 +743,7 @@ static int mptcp_pm_nl_append_new_local_addr(struct pm_= nl_pernet *pernet, */ if (pernet->next_id =3D=3D MPTCP_PM_MAX_ADDR_ID) pernet->next_id =3D 1; - if (pernet->endpoints >=3D MPTCP_PM_ADDR_MAX) { + if (pernet->endpoints =3D=3D MPTCP_PM_MAX_ADDR_ID) { ret =3D -ERANGE; goto out; } --=20 2.53.0 From nobody Sat Apr 11 11:23:26 2026 Received: from smtp.kernel.org (aws-us-west-2-korg-mail-1.web.codeaurora.org [10.30.226.201]) (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 BD50633F8BC for ; Thu, 9 Apr 2026 20:52:21 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=10.30.226.201 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1775767941; cv=none; b=riHpTZ0Omxwio+0hD7jfyT7x/BC2cxppoBLx1fKkvXFOLqFjiyatBldAxLKPBOtfxj5N4bUMf7JsK3FrczLHw84JBu1jR683nj3L+e81Lbl6wzcAK5d5mP+AJGMXGYMgd13wrGldBbUWuV3Hi6L6eMVFCWm2tli62BiEkuvclZY= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1775767941; c=relaxed/simple; bh=k+RpxqRdGerfGFAGy1z4N+ND2xXyRKGbPOpBhMvR2Mc=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=i2q33c4nn7KGhLrFsGRk2lr63oWmpmJXbtEaN1CbSW/y9L28IcEtKi84d6emMJ4V6SotHTnAJ2sPJdsNixwjqMlqA6Zzbq1FcMrX2lFp0uG2XBhyEh8x+U8d+vgZiY5MU+LyBQkQfGUtQrGeT6L5/0dN/Dayc02bz307HUwstc8= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=ZwoZRtPy; arc=none smtp.client-ip=10.30.226.201 Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b="ZwoZRtPy" Received: by smtp.kernel.org (Postfix) with ESMTPSA id 3BFC7C4CEF7; Thu, 9 Apr 2026 20:52:21 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1775767941; bh=k+RpxqRdGerfGFAGy1z4N+ND2xXyRKGbPOpBhMvR2Mc=; h=From:Date:Subject:References:In-Reply-To:To:Cc:From; b=ZwoZRtPyTy7anpQQVRKXNGGvnxD+9nukRQoktv8GhKT3KZTKHZ37pEbEqJkKrAaLW v7DI4c1oJLQTkKfMhKNtFAU1y/p+/lSNBcZBI319ic27FwkaZZS2XtzjBytwv8NRXc 1UQaTc9da5ze5LbBrK7Ncie/DzrH+kTSYDvpMCeMUugCjG6iKj9KqWUES43ApzqhmP 3O8x3Z9Vzrq9cSWwo4uDJwnFF28LFac4vnFUu9Kq0QvvvqW9bza/VMaWT6Ku1Vpkog klB0nM7ESLlPO+DJr2VKYVumzPDJmeiuBjcbsj2ejSuP01a7dkY2rSL7JZ0sMRJZzs uBnR0cUXmUpgA== From: "Matthieu Baerts (NGI0)" Date: Thu, 09 Apr 2026 22:51:52 +0200 Subject: [PATCH mptcp-next 12/16] selftests: mptcp: join: allow changing ifaces nr per test Precedence: bulk X-Mailing-List: mptcp@lists.linux.dev List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20260409-mptcp-inc-limits-v1-12-0e45fa30d914@kernel.org> References: <20260409-mptcp-inc-limits-v1-0-0e45fa30d914@kernel.org> In-Reply-To: <20260409-mptcp-inc-limits-v1-0-0e45fa30d914@kernel.org> To: MPTCP Upstream Cc: "Matthieu Baerts (NGI0)" X-Mailer: b4 0.15.1 X-Developer-Signature: v=1; a=openpgp-sha256; l=1877; i=matttbe@kernel.org; h=from:subject:message-id; bh=k+RpxqRdGerfGFAGy1z4N+ND2xXyRKGbPOpBhMvR2Mc=; b=kA0DAAoWfCLwwvNHCpcByyZiAGnYEXigLv6pWkrAsA8qCOvxOEaNUsA2SQdD1e5Q45hQDpwAo Ih1BAAWCgAdFiEEG4ZZb5nneg10Sk44fCLwwvNHCpcFAmnYEXgACgkQfCLwwvNHCpd6IAEA08DV SH3DHP1wbJCBvNP3Qyjba1r6iLEHbeGQOz0rnOwA/jlVFQmqU4Yl3ZGlGYtRB1B7RmnbCyOQTZQ ka/tVbcMD X-Developer-Key: i=matttbe@kernel.org; a=openpgp; fpr=E8CB85F76877057A6E27F77AF6B7824F4269A073 By default, 4 network interfaces are created per subtest in a dedicated net namespace. Each netns has a dedicated pair of v4 and v6 addresses. Future tests will need more. Simply always creating more network interfaces per test will increase the execution time for all other tests, for no other benefits. So now it is possible to change this number only when needed, by setting ifaces_nr when calling 'reset', e.g. ifaces_nr=3D8 reset "Subtest title" Note that it might also be interesting to decrease the default value to 2 to reduce the setup time, especially when a debug kernel config is being used. Signed-off-by: Matthieu Baerts (NGI0) --- tools/testing/selftests/net/mptcp/mptcp_join.sh | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/tools/testing/selftests/net/mptcp/mptcp_join.sh b/tools/testin= g/selftests/net/mptcp/mptcp_join.sh index beec41f6662a..28da9df797ae 100755 --- a/tools/testing/selftests/net/mptcp/mptcp_join.sh +++ b/tools/testing/selftests/net/mptcp/mptcp_join.sh @@ -63,6 +63,7 @@ unset fastclose unset fullmesh unset speed unset bind_addr +unset ifaces_nr unset join_syn_rej unset join_csum_ns1 unset join_csum_ns2 @@ -146,7 +147,7 @@ init_partial() # ns1eth4 ns2eth4 =20 local i - for i in $(seq 1 4); do + for i in $(seq 1 "${ifaces_nr:-4}"); do ip link add ns1eth$i netns "$ns1" type veth peer name ns2eth$i netns "$n= s2" ip -net "$ns1" addr add 10.0.$i.1/24 dev ns1eth$i ip -net "$ns1" addr add dead:beef:$i::1/64 dev ns1eth$i nodad @@ -165,7 +166,7 @@ init_partial() init_shapers() { local i - for i in $(seq 1 4); do + for i in $(seq 1 "${ifaces_nr:-4}"); do tc -n $ns1 qdisc add dev ns1eth$i root netem rate 20mbit delay 1ms tc -n $ns2 qdisc add dev ns2eth$i root netem rate 20mbit delay 1ms done --=20 2.53.0 From nobody Sat Apr 11 11:23:26 2026 Received: from smtp.kernel.org (aws-us-west-2-korg-mail-1.web.codeaurora.org [10.30.226.201]) (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 7FB96342C8B for ; Thu, 9 Apr 2026 20:52:22 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=10.30.226.201 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1775767942; cv=none; b=hv5w6yd+MqgEZCkE2TuhYvUhZ8LxidV3r8cT67sMD8IPGQ5JVemnJWH71BSz+HGMyu4vZ9PJ1/I93MiWzyI4C01fUX73dAeW+PPbsOllyzbTwS7+zshi+Rhd9nPuBR2uYmAMr/riV9eJWxyiCUYNPKKuvDsJSrvGMG7CIxpA49g= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1775767942; c=relaxed/simple; bh=uY7l/8VcbTjpIuAX6tBgPiQtu2FmTTYndMyn6LRBHHg=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=W0M8K4cgzWcrmPrmS3nQ4es/lCTT8twx0Qsn+HOAjdxy/xq7cmHZ/4N3Mh/iskGMwLPc8mTy58g7tjtjXWvrpOrunyeKPvwSzhIfi5NqAbQAanmVhvIOu23NUHilOKGrD4iGXlZpDCDp98KLZgQuNsyOyXakPj3D/nZymsYIDr0= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=hBMo2IdQ; arc=none smtp.client-ip=10.30.226.201 Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b="hBMo2IdQ" Received: by smtp.kernel.org (Postfix) with ESMTPSA id 0312CC4CEF7; Thu, 9 Apr 2026 20:52:21 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1775767942; bh=uY7l/8VcbTjpIuAX6tBgPiQtu2FmTTYndMyn6LRBHHg=; h=From:Date:Subject:References:In-Reply-To:To:Cc:From; b=hBMo2IdQdsUC1L4gzB0+LY+fxsi6RuUJKMXKyw17aUaB0oE6p3RC5dFb/w8t4Surx TqLRfiOVOSgkVhDASWrB5zDy+jXAWlw3/FwNWNRTg0fzPuEurGv3uzNA2wWBIrXtkk S9hT3iaecehJYy4N14O3Jpno8NEMZ7dAdhiZShurBoUk03d1w3holozZrLL6vhacqB dejCJ60tavnMsp6h+GSR1xkiMeo0fzaxAYJpqR4JPEicGoADkSCKQefMWKMPTEPKd2 A6WYjezVvgb19SyNpd4QvFmNW1D5nvo3PJELEw9NYrQY1lPVE+yMHALgplK29Fxk3Q wJKZhTZysG8dg== From: "Matthieu Baerts (NGI0)" Date: Thu, 09 Apr 2026 22:51:53 +0200 Subject: [PATCH mptcp-next 13/16] selftests: mptcp: join: validate 8x8 subflows Precedence: bulk X-Mailing-List: mptcp@lists.linux.dev List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20260409-mptcp-inc-limits-v1-13-0e45fa30d914@kernel.org> References: <20260409-mptcp-inc-limits-v1-0-0e45fa30d914@kernel.org> In-Reply-To: <20260409-mptcp-inc-limits-v1-0-0e45fa30d914@kernel.org> To: MPTCP Upstream Cc: "Matthieu Baerts (NGI0)" X-Mailer: b4 0.15.1 X-Developer-Signature: v=1; a=openpgp-sha256; l=2161; i=matttbe@kernel.org; h=from:subject:message-id; bh=uY7l/8VcbTjpIuAX6tBgPiQtu2FmTTYndMyn6LRBHHg=; b=owGbwMvMwCVWo/Th0Gd3rumMp9WSGDJvCFb+/VGu13Cl5q+yAs9JgTff2VMvix97M8OpTXvh7 3fzGFWMOkpZGMS4GGTFFFmk2yLzZz6v4i3x8rOAmcPKBDKEgYtTACZSm8nIsO/+zCt+O6Y/fi5X +17lnO6SIy+5ur3/865LbpZ+kuf0cRMjw8mstF/7MydNf3fF9OAVG5eNCXPb3F3Lyw44ihu6Hzd 5ywcA X-Developer-Key: i=matttbe@kernel.org; a=openpgp; fpr=E8CB85F76877057A6E27F77AF6B7824F4269A073 The limits have been recently increased, it is required to validate that having 64 subflows is allowed. Here, both the client and the server have 8 network interfaces. The server has 8 endpoints marked as 'signal' to announce all its v4 addresses. The client also has 8 endpoints, but marked as 'subflow' and 'fullmesh' in order to create 8 subflows to each address announced by the server. This means 63 additional subflows will be created after the initial one. If it is not possible to increase the limits to 64, it means an older kernel version is being used, and the test is skipped. Signed-off-by: Matthieu Baerts (NGI0) --- tools/testing/selftests/net/mptcp/mptcp_join.sh | 28 +++++++++++++++++++++= ++++ 1 file changed, 28 insertions(+) diff --git a/tools/testing/selftests/net/mptcp/mptcp_join.sh b/tools/testin= g/selftests/net/mptcp/mptcp_join.sh index 28da9df797ae..8d6a9c031e0e 100755 --- a/tools/testing/selftests/net/mptcp/mptcp_join.sh +++ b/tools/testing/selftests/net/mptcp/mptcp_join.sh @@ -513,6 +513,19 @@ reset_with_tcp_filter() fi } =20 +# For kernel supporting limits above 8 +# $1: title ; $2,4: addrs limit ns1,2 ; $3,5: subflows limit ns1,2 +reset_with_high_limits() +{ + reset "${1}" || return 1 + + if ! pm_nl_set_limits "${ns1}" "${2}" "${3}" 2>/dev/null || + ! pm_nl_set_limits "${ns2}" "${4}" "${5}" 2>/dev/null; then + mark_as_skipped "unable to set the limits to ${*:2}" + return 1 + fi +} + # $1: err msg fail_test() { @@ -3670,6 +3683,21 @@ fullmesh_tests() chk_prio_nr 0 1 1 0 chk_rm_nr 0 1 fi + + # fullmesh in 8x8 to create 63 additional subflows + if ifaces_nr=3D8 reset_with_high_limits "fullmesh 8x8" 64 64 64 64; then + # higher chance to loose ADD_ADDR: allow retransmissions + ip netns exec $ns1 sysctl -q net.mptcp.add_addr_timeout=3D1 + local i + for i in $(seq 1 8); do + pm_nl_add_endpoint $ns2 10.0.$i.2 flags subflow,fullmesh + pm_nl_add_endpoint $ns1 10.0.$i.1 flags signal + done + speed=3Dslow \ + run_tests $ns1 $ns2 10.0.1.1 + chk_join_nr 63 63 63 + fi + } =20 fastclose_tests() --=20 2.53.0 From nobody Sat Apr 11 11:23:26 2026 Received: from smtp.kernel.org (aws-us-west-2-korg-mail-1.web.codeaurora.org [10.30.226.201]) (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 45C312E4257 for ; Thu, 9 Apr 2026 20:52:23 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=10.30.226.201 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1775767943; cv=none; b=spDIfGVbAASj/PJi+JaHNQ0/MBdokfgmRzx49X9hFkj/rwphpn1q/8VzvcIqPYE/SvkmaPT7gtGSfIDUrhaOQFXi2Anavi4LeJVi9nne8rqIS135kfqBdv42avCa0RBdimpq+xQgPE+7Mq80rORPiRb64h75SqPLrO2JRvIJ790= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1775767943; c=relaxed/simple; bh=8PZLLeOwVPMc3bpT7xW7wYZklUFV3vxacK3H8M3nvfg=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=t1LcKJlMua5Hx3qPgFYm4S+bDqQsNOG02nbinJrq7hBAQ0gd9KHZKMaW5H5JISVRtdlPq+AbkxTAbBhn9R0jjKqOoEjoK4pZzbbrlKjOR2j+Pa7IeVBoUhdhM9HfQTaxea1B1/L2Q5VdvMfsrGidXK9qFnbCWVxy2X/8t3FbT3Q= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=ltdx6pJx; arc=none smtp.client-ip=10.30.226.201 Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b="ltdx6pJx" Received: by smtp.kernel.org (Postfix) with ESMTPSA id BED64C4CEF7; Thu, 9 Apr 2026 20:52:22 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1775767943; bh=8PZLLeOwVPMc3bpT7xW7wYZklUFV3vxacK3H8M3nvfg=; h=From:Date:Subject:References:In-Reply-To:To:Cc:From; b=ltdx6pJxjbuJ2eDq36ZV9wZSAFFjOykp9q1CJnyPe1vVjb0qF+lo18BKN8exP9h1Z T8BOzrmTJ44ghGd/LQTAHdbMEl/GJHvidvvw+aVJcLmLCHDkCdsM6vm+kwP3Fh9MsM luNHdcgYeFULL4ICuWzO+HtWglgzWpqLk/+E+QG0Mz0QKQwf4JFShdEY+YCxE8DNgs ce/870v5OGGVHNyvDH8RSAb683DuxqqJi2lM3/6IGgDSV0+F1WBauZR8vSzLquHEX3 1Rh7+XCRMAwc+Pn6zBcDaRP1+DjvRSlZJf3Nxa9ELXAWi/Pr75BmVNl+tFZjUKhI91 VG6yvtID+KhCQ== From: "Matthieu Baerts (NGI0)" Date: Thu, 09 Apr 2026 22:51:54 +0200 Subject: [PATCH mptcp-next 14/16] selftests: mptcp: pm: validate new limits Precedence: bulk X-Mailing-List: mptcp@lists.linux.dev List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20260409-mptcp-inc-limits-v1-14-0e45fa30d914@kernel.org> References: <20260409-mptcp-inc-limits-v1-0-0e45fa30d914@kernel.org> In-Reply-To: <20260409-mptcp-inc-limits-v1-0-0e45fa30d914@kernel.org> To: MPTCP Upstream Cc: "Matthieu Baerts (NGI0)" X-Mailer: b4 0.15.1 X-Developer-Signature: v=1; a=openpgp-sha256; l=3660; i=matttbe@kernel.org; h=from:subject:message-id; bh=8PZLLeOwVPMc3bpT7xW7wYZklUFV3vxacK3H8M3nvfg=; b=owGbwMvMwCVWo/Th0Gd3rumMp9WSGDJvCFYqXTE8ZmNZ8pH3/3PT4OdSqWsip1Yz3Q4O+tf/5 J6MU8jkjlIWBjEuBlkxRRbptsj8mc+reEu8/Cxg5rAygQxh4OIUgImcucnwz8jFglHXYd2X7Ds+ EucMhK6qRec617AaLm/gNk7wzX76heG/X7hL6sltb3Vm1Pd7H/hxXpNT8+adatGymfqTzkeYH0r nAAA= X-Developer-Key: i=matttbe@kernel.org; a=openpgp; fpr=E8CB85F76877057A6E27F77AF6B7824F4269A073 These limits have been recently updated, from 8 to: - 64 for the subflows and accepted add_addr - 255 for the MPTCP endpoints These modifications validate the new limits, but are also compatible with the previous ones, to be able to continue to validate stable kernel using the last version of the selftests. That's why new variables are now used instead of hard-coded values. Signed-off-by: Matthieu Baerts (NGI0) --- tools/testing/selftests/net/mptcp/pm_netlink.sh | 52 +++++++++++++++------= ---- 1 file changed, 31 insertions(+), 21 deletions(-) diff --git a/tools/testing/selftests/net/mptcp/pm_netlink.sh b/tools/testin= g/selftests/net/mptcp/pm_netlink.sh index d844ee687a29..1ce5903c89c0 100755 --- a/tools/testing/selftests/net/mptcp/pm_netlink.sh +++ b/tools/testing/selftests/net/mptcp/pm_netlink.sh @@ -66,6 +66,15 @@ get_limits() { fi } =20 +get_limits_nb() { + if mptcp_lib_is_ip_mptcp; then + ip -n "${ns1}" mptcp limits | awk '{ print $2" "$4 }' + else + ip netns exec "${ns1}" ./pm_nl_ctl limits | \ + awk '{ printf "%s ", $2 }' + fi +} + format_endpoints() { mptcp_lib_pm_nl_format_endpoints "${@}" } @@ -162,6 +171,7 @@ check "get_endpoint 2" "" "simple del addr" check "show_endpoints" \ "$(format_endpoints "1,10.0.1.1" \ "3,10.0.1.3,signal backup")" "dump addrs after del" +add_endpoint 10.0.1.2 id 2 =20 add_endpoint 10.0.1.3 2>/dev/null check "get_endpoint 4" "" "duplicate addr" @@ -169,25 +179,25 @@ check "get_endpoint 4" "" "duplicate addr" add_endpoint 10.0.1.4 flags signal check "get_endpoint 4" "$(format_endpoints "4,10.0.1.4,signal")" "id addr = increment" =20 -for i in $(seq 5 9); do - add_endpoint "10.0.1.${i}" flags signal >/dev/null 2>&1 -done -check "get_endpoint 9" "$(format_endpoints "9,10.0.1.9,signal")" "hard add= r limit" -check "get_endpoint 10" "" "above hard addr limit" +read -r -a default_limits_nb <<< "$(get_limits_nb)" +# limits have been increased: from 8 to 64 for subflows/add_addr & 255 for= endp +if mptcp_lib_expect_all_features || set_limits 9 9 2>/dev/null; then + max_endp=3D255 + max_limits=3D64 +else + max_endp=3D8 + max_limits=3D8 +fi +set_limits "${default_limits_nb[@]}" =20 -del_endpoint 9 -for i in $(seq 10 255); do - add_endpoint 10.0.0.9 id "${i}" - del_endpoint "${i}" +for i in $(seq 5 ${max_endp}); do + add_endpoint "10.0.0.${i}" id "${i}" done -check "show_endpoints" \ - "$(format_endpoints "1,10.0.1.1" \ - "3,10.0.1.3,signal backup" \ - "4,10.0.1.4,signal" \ - "5,10.0.1.5,signal" \ - "6,10.0.1.6,signal" \ - "7,10.0.1.7,signal" \ - "8,10.0.1.8,signal")" "id limit" +check "get_endpoint ${max_endp}" \ + "$(format_endpoints "${max_endp},10.0.0.${max_endp}")" "id limit" + +check "add_endpoint '10.0.1.1' &>/dev/null && echo 'no error'" "" \ + "above hard addr limit" =20 flush_endpoint check "show_endpoints" "" "flush addrs" @@ -200,15 +210,15 @@ if ! mptcp_lib_is_ip_mptcp; then flush_endpoint fi =20 -set_limits 9 1 2>/dev/null +set_limits $((max_limits + 1)) 1 2>/dev/null check "get_limits" "${default_limits}" "rcv addrs above hard limit" =20 -set_limits 1 9 2>/dev/null +set_limits 1 $((max_limits + 1)) 2>/dev/null check "get_limits" "${default_limits}" "subflows above hard limit" =20 -set_limits 8 8 +set_limits ${max_limits} ${max_limits} flush_endpoint ## to make sure it doesn't affect the limits -check "get_limits" "$(format_limits 8 8)" "set limits" +check "get_limits" "$(format_limits ${max_limits} ${max_limits})" "set lim= its" =20 flush_endpoint add_endpoint 10.0.1.1 --=20 2.53.0 From nobody Sat Apr 11 11:23:26 2026 Received: from smtp.kernel.org (aws-us-west-2-korg-mail-1.web.codeaurora.org [10.30.226.201]) (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 4686633B6D3 for ; Thu, 9 Apr 2026 20:52:24 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=10.30.226.201 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1775767944; cv=none; b=KosS5SjAQdspHhOHmnEffYgAhxmU9boOxTCyJwiKBBC70T7MtzoQ/GjokkRoZXvDf/LjXqRluV9ctOgQ6d4BH0VmOC4djWu758HhjK3aebJZUYZgwxzgsYHXZwfNPag+nWV/28vLAWf6o5s0rRtZl3laPB+nMHrpWetyJcNxUz0= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1775767944; c=relaxed/simple; bh=rZgdK6x7VRpDG0CW+9Lf+hi62t5lY+M3VrlMGSAOWxY=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=huxi6nWnYdVkvRH5/6QAJqrPCFpW+oFNfaldPVmyE2CaNlhtAFULJ+Ofvfg1GT2mpTfZ1A6MbX0VeQ0YKIXgscNhMDOmLSEqxxvG/M4ipdhNEwmS2QYJ96L6oH5KOgCC+nq0yn68sOkpljts/GNd0jP5tp/YCf/0gZMtE1WQAyE= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=H/57ub6S; arc=none smtp.client-ip=10.30.226.201 Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b="H/57ub6S" Received: by smtp.kernel.org (Postfix) with ESMTPSA id 85FF2C2BCB2; Thu, 9 Apr 2026 20:52:23 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1775767943; bh=rZgdK6x7VRpDG0CW+9Lf+hi62t5lY+M3VrlMGSAOWxY=; h=From:Date:Subject:References:In-Reply-To:To:Cc:From; b=H/57ub6SxmIZ2FVjkG3wwK5YSMoLVL3jqEP9Iilx2Iw2QkVNRN6hcSfmlnSmD01lh OjBRgJRIQK9Dl3FOtL98fIDsRUYOoDGlJ4+mK7/JvXkn1dD77yF4z2IG8pCyzokSko 21T++7dISSl0CvxUVzTeZJ4ATS82XN/eTUzLhj3+RdYno+xjbnIU9BM78aK8+MpJsG jR8hCZFYRJyyafddLuB+7zroTWcTOUlHgxHc2zUilG0UKNn4YLxIQsWW+fT9ft4qW0 nGQl7VmPgJ/7qMYk+mLwtfO0DUiQ4xiRjnl55tj0sopSVH2KO0iUONF+AmAV1uK+yG 9HsO3iDwCbZCQ== From: "Matthieu Baerts (NGI0)" Date: Thu, 09 Apr 2026 22:51:55 +0200 Subject: [PATCH mptcp-next 15/16] selftests: mptcp: pm: use simpler send/recv forms Precedence: bulk X-Mailing-List: mptcp@lists.linux.dev List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20260409-mptcp-inc-limits-v1-15-0e45fa30d914@kernel.org> References: <20260409-mptcp-inc-limits-v1-0-0e45fa30d914@kernel.org> In-Reply-To: <20260409-mptcp-inc-limits-v1-0-0e45fa30d914@kernel.org> To: MPTCP Upstream Cc: "Matthieu Baerts (NGI0)" X-Mailer: b4 0.15.1 X-Developer-Signature: v=1; a=openpgp-sha256; l=1455; i=matttbe@kernel.org; h=from:subject:message-id; bh=rZgdK6x7VRpDG0CW+9Lf+hi62t5lY+M3VrlMGSAOWxY=; b=owGbwMvMwCVWo/Th0Gd3rumMp9WSGDJvCFYxuug/4m7Y+9PGyGtybuQaq129uWxtpxSeuFumM 3AWNbzrKGVhEONikBVTZJFui8yf+byKt8TLzwJmDisTyBAGLk4BmMiJKQz/k6KZlMp9T967fnSu 1qqg3sAZ+7r/nvquNeN+btf81Te23GZk6FJOCfYzrVJg3KL4XSesh7Ph5ObeZUJrj/ZHlNQbT69 gAAA= X-Developer-Key: i=matttbe@kernel.org; a=openpgp; fpr=E8CB85F76877057A6E27F77AF6B7824F4269A073 Instead of sendto() and recvfrom() which the NL address that was already provided before. Just simpler and easier to read. Signed-off-by: Matthieu Baerts (NGI0) --- tools/testing/selftests/net/mptcp/pm_nl_ctl.c | 7 ++----- 1 file changed, 2 insertions(+), 5 deletions(-) diff --git a/tools/testing/selftests/net/mptcp/pm_nl_ctl.c b/tools/testing/= selftests/net/mptcp/pm_nl_ctl.c index 99eecccbf0c8..439b22f88c93 100644 --- a/tools/testing/selftests/net/mptcp/pm_nl_ctl.c +++ b/tools/testing/selftests/net/mptcp/pm_nl_ctl.c @@ -217,8 +217,6 @@ static int capture_events(int fd, int event_group) /* do a netlink command and, if max > 0, fetch the reply ; nh's size >1024= B */ static int do_nl_req(int fd, struct nlmsghdr *nh, int len, int max) { - struct sockaddr_nl nladdr =3D { .nl_family =3D AF_NETLINK }; - socklen_t addr_len; void *data =3D nh; int rem, ret; int err =3D 0; @@ -230,12 +228,11 @@ static int do_nl_req(int fd, struct nlmsghdr *nh, int= len, int max) } =20 nh->nlmsg_len =3D len; - ret =3D sendto(fd, data, len, 0, (void *)&nladdr, sizeof(nladdr)); + ret =3D send(fd, data, len, 0); if (ret !=3D len) error(1, errno, "send netlink: %uB !=3D %uB\n", ret, len); =20 - addr_len =3D sizeof(nladdr); - rem =3D ret =3D recvfrom(fd, data, max, 0, (void *)&nladdr, &addr_len); + rem =3D ret =3D recv(fd, data, max, 0); if (ret < 0) error(1, errno, "recv netlink: %uB\n", ret); =20 --=20 2.53.0 From nobody Sat Apr 11 11:23:26 2026 Received: from smtp.kernel.org (aws-us-west-2-korg-mail-1.web.codeaurora.org [10.30.226.201]) (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 008EA339719 for ; Thu, 9 Apr 2026 20:52:24 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=10.30.226.201 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1775767945; cv=none; b=OiILovT9g2zSUSPVPNeoRTWXUyLYQToMnIGRLQeQTLZzdHzr+S1h4+yFVawkcdTaqn5hS3OQgV5bi3BcZysOs1aHPS9pu8+tRqDxnXR6iGWSk84/FaJnXk9yDRHaFiuRbuauR744x5XiI4uQeL1oLl6UhPjY6xJUv7rNjl+Unj0= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1775767945; c=relaxed/simple; bh=ViqX55Uz68XOYu6aE67wJQcjE7cCKwCUYRVJPumWrYE=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=l1Rt8L98aZG5kPyY2wMnBI1bgSdAKgFTIvxQz41e1ZOnZxl8/Vosh/5AXGIWxZpb8YNsdyZefltJ+sctrdINkDprU15DGmIDQJSgkVNRqHfA2OLIoStxvDdGAWXh57lPkTHMCtRsAJncDe1YcWrvH/Ne+12bil0wnP3QoTnb+fU= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=MDohJINC; arc=none smtp.client-ip=10.30.226.201 Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b="MDohJINC" Received: by smtp.kernel.org (Postfix) with ESMTPSA id 4CE73C4CEF7; Thu, 9 Apr 2026 20:52:24 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1775767944; bh=ViqX55Uz68XOYu6aE67wJQcjE7cCKwCUYRVJPumWrYE=; h=From:Date:Subject:References:In-Reply-To:To:Cc:From; b=MDohJINCiDKXRxsanfvoacF1i7bO3x/+YdhSj7NPJG1pTnh82t2q38CI+GkSc3CFW pkOX759d1pqhYhd4zGjUs6d8fUyAi2g1Wwbj8+eCeCD4ae/xB7nqK31uCLmz6wmNrz hhgzwKjFOOAtfPboicIdVCi+yPPwr8iXTlD5NaObWbiqE16Sa3rTXKgWWJU56k9Jbt 84gwqPiP+wYJkkZNLHDerqmL8/+iVxtauImAn1EgKhu+o/CiXVTR0t6G0wvnTcz6cd BXlneeHj7AG158NNMEMEbTE1c+nprgwRJLwYj67aYUWIwsXsClnxj+d7r7nJ5VTJH9 6bjKWzzchcPUw== From: "Matthieu Baerts (NGI0)" Date: Thu, 09 Apr 2026 22:51:56 +0200 Subject: [PATCH mptcp-next 16/16] mptcp: pm: clearer ADD_ADDR related helpers names Precedence: bulk X-Mailing-List: mptcp@lists.linux.dev List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20260409-mptcp-inc-limits-v1-16-0e45fa30d914@kernel.org> References: <20260409-mptcp-inc-limits-v1-0-0e45fa30d914@kernel.org> In-Reply-To: <20260409-mptcp-inc-limits-v1-0-0e45fa30d914@kernel.org> To: MPTCP Upstream Cc: "Matthieu Baerts (NGI0)" X-Mailer: b4 0.15.1 X-Developer-Signature: v=1; a=openpgp-sha256; l=15439; i=matttbe@kernel.org; h=from:subject:message-id; bh=ViqX55Uz68XOYu6aE67wJQcjE7cCKwCUYRVJPumWrYE=; b=owGbwMvMwCVWo/Th0Gd3rumMp9WSGDJvCFZvn1lxQ5u74tYVA8NPByc/edOzMiZdwSH1QXKlv tOmEqEJHaUsDGJcDLJiiizSbZH5M59X8ZZ4+VnAzGFlAhnCwMUpABORP87I8Kx3wZbLt7c+e87+ OvpjpsU7V7nzj7hXHu7dc3rZ9fZKWROG/+lynRmlbnw5LPyfvA5t1RCdYp/pmrL26L9+m9svvpq 84AIA X-Developer-Key: i=matttbe@kernel.org; a=openpgp; fpr=E8CB85F76877057A6E27F77AF6B7824F4269A073 Here is a suggestion, and if it is OK, I will split this in multiple commits: it is not the first time the 'add' and 'anno' names to describe ADD_ADDR related functions are confusing. Eric already pointed that in [1]. I started by renaming only the internal helper names, then while at it, I tried to uniform that. WDYT? Link: https://lore.kernel.org/20251117100745.1913963-1-edumazet@google.com = [1] Signed-off-by: Matthieu Baerts (NGI0) --- net/mptcp/options.c | 2 +- net/mptcp/pm.c | 122 ++++++++++++++++++++++++-------------------= ---- net/mptcp/pm_kernel.c | 16 +++---- net/mptcp/pm_userspace.c | 4 +- net/mptcp/protocol.h | 17 +++---- net/mptcp/subflow.c | 4 +- 6 files changed, 84 insertions(+), 81 deletions(-) diff --git a/net/mptcp/options.c b/net/mptcp/options.c index 4cc583fdc7a9..d353c6082d40 100644 --- a/net/mptcp/options.c +++ b/net/mptcp/options.c @@ -1211,7 +1211,7 @@ bool mptcp_incoming_options(struct sock *sk, struct s= k_buff *skb) MPTCP_INC_STATS(sock_net(sk), MPTCP_MIB_ADDADDR); } else { mptcp_pm_add_addr_echoed(msk, &mp_opt.addr); - mptcp_pm_del_add_timer(msk, &mp_opt.addr, true); + mptcp_pm_del_add_addr_timer(msk, &mp_opt.addr, true); MPTCP_INC_STATS(sock_net(sk), MPTCP_MIB_ECHOADD); } =20 diff --git a/net/mptcp/pm.c b/net/mptcp/pm.c index e1dbc64134bf..a37b67dbe5cf 100644 --- a/net/mptcp/pm.c +++ b/net/mptcp/pm.c @@ -12,11 +12,11 @@ =20 #define ADD_ADDR_RETRANS_MAX 3 =20 -struct mptcp_pm_add_entry { +struct mptcp_pm_add_addr { struct list_head list; struct mptcp_addr_info addr; u8 retrans_times; - struct timer_list add_timer; + struct timer_list timer; struct mptcp_sock *sock; struct rcu_head rcu; }; @@ -132,46 +132,47 @@ bool mptcp_lookup_subflow_by_saddr(const struct list_= head *list, return false; } =20 -static struct mptcp_pm_add_entry * -mptcp_lookup_anno_list_by_saddr(const struct mptcp_sock *msk, - const struct mptcp_addr_info *addr) +static struct mptcp_pm_add_addr * +mptcp_lookup_add_addr_by_saddr(const struct mptcp_sock *msk, + const struct mptcp_addr_info *addr) { - struct mptcp_pm_add_entry *entry; + struct mptcp_pm_add_addr *add_addr; =20 lockdep_assert_held(&msk->pm.lock); =20 - list_for_each_entry(entry, &msk->pm.anno_list, list) { - if (mptcp_addresses_equal(&entry->addr, addr, true)) - return entry; + list_for_each_entry(add_addr, &msk->pm.anno_list, list) { + if (mptcp_addresses_equal(&add_addr->addr, addr, true)) + return add_addr; } =20 return NULL; } =20 -bool mptcp_remove_anno_list_by_saddr(struct mptcp_sock *msk, - const struct mptcp_addr_info *addr) +bool mptcp_remove_add_addr_by_saddr(struct mptcp_sock *msk, + const struct mptcp_addr_info *addr) { - struct mptcp_pm_add_entry *entry; + struct mptcp_pm_add_addr *add_addr; bool ret; =20 - entry =3D mptcp_pm_del_add_timer(msk, addr, false); - ret =3D entry; - kfree_rcu(entry, rcu); + add_addr =3D mptcp_pm_del_add_addr_timer(msk, addr, false); + ret =3D add_addr; + kfree_rcu(add_addr, rcu); =20 return ret; } =20 -bool mptcp_pm_sport_in_anno_list(struct mptcp_sock *msk, const struct sock= *sk) +bool mptcp_pm_sport_in_add_addr_list(struct mptcp_sock *msk, + const struct sock *sk) { - struct mptcp_pm_add_entry *entry; + struct mptcp_pm_add_addr *add_addr; struct mptcp_addr_info saddr; bool ret =3D false; =20 mptcp_local_address((struct sock_common *)sk, &saddr); =20 spin_lock_bh(&msk->pm.lock); - list_for_each_entry(entry, &msk->pm.anno_list, list) { - if (mptcp_addresses_equal(&entry->addr, &saddr, true)) { + list_for_each_entry(add_addr, &msk->pm.anno_list, list) { + if (mptcp_addresses_equal(&add_addr->addr, &saddr, true)) { ret =3D true; goto out; } @@ -334,11 +335,11 @@ static unsigned int mptcp_adjust_add_addr_timeout(str= uct mptcp_sock *msk) return max_stale && max_stale < rto ? max_stale : rto; } =20 -static void mptcp_pm_add_timer(struct timer_list *timer) +static void mptcp_pm_add_addr_timer(struct timer_list *timer) { - struct mptcp_pm_add_entry *entry =3D timer_container_of(entry, timer, - add_timer); - struct mptcp_sock *msk =3D entry->sock; + struct mptcp_pm_add_addr *add_addr =3D timer_container_of(add_addr, timer, + timer); + struct mptcp_sock *msk =3D add_addr->sock; struct sock *sk =3D (struct sock *)msk; unsigned int timeout; =20 @@ -359,95 +360,96 @@ static void mptcp_pm_add_timer(struct timer_list *tim= er) spin_lock_bh(&msk->pm.lock); =20 if (!mptcp_pm_should_add_signal_addr(msk)) { - pr_debug("retransmit ADD_ADDR id=3D%d\n", entry->addr.id); - mptcp_pm_announce_addr(msk, &entry->addr, false); + pr_debug("retransmit ADD_ADDR id=3D%d\n", add_addr->addr.id); + mptcp_pm_announce_addr(msk, &add_addr->addr, false); mptcp_pm_add_addr_send_ack(msk); - entry->retrans_times++; + add_addr->retrans_times++; } =20 - if (entry->retrans_times < ADD_ADDR_RETRANS_MAX) + if (add_addr->retrans_times < ADD_ADDR_RETRANS_MAX) sk_reset_timer(sk, timer, - jiffies + (timeout << entry->retrans_times)); + jiffies + (timeout << add_addr->retrans_times)); =20 spin_unlock_bh(&msk->pm.lock); =20 - if (entry->retrans_times =3D=3D ADD_ADDR_RETRANS_MAX) + if (add_addr->retrans_times =3D=3D ADD_ADDR_RETRANS_MAX) mptcp_pm_subflow_established(msk); =20 out: sock_put(sk); } =20 -struct mptcp_pm_add_entry * -mptcp_pm_del_add_timer(struct mptcp_sock *msk, - const struct mptcp_addr_info *addr, bool check_id) +struct mptcp_pm_add_addr * +mptcp_pm_del_add_addr_timer(struct mptcp_sock *msk, + const struct mptcp_addr_info *addr, bool check_id) { - struct mptcp_pm_add_entry *entry; + struct mptcp_pm_add_addr *add_addr; struct sock *sk =3D (struct sock *)msk; bool stop_timer =3D false; =20 rcu_read_lock(); =20 spin_lock_bh(&msk->pm.lock); - entry =3D mptcp_lookup_anno_list_by_saddr(msk, addr); - if (entry && (!check_id || entry->addr.id =3D=3D addr->id)) { - entry->retrans_times =3D ADD_ADDR_RETRANS_MAX; + add_addr =3D mptcp_lookup_add_addr_by_saddr(msk, addr); + if (add_addr && (!check_id || add_addr->addr.id =3D=3D addr->id)) { + add_addr->retrans_times =3D ADD_ADDR_RETRANS_MAX; stop_timer =3D true; } - if (!check_id && entry) - list_del(&entry->list); + if (!check_id && add_addr) + list_del(&add_addr->list); spin_unlock_bh(&msk->pm.lock); =20 /* Note: entry might have been removed by another thread. * We hold rcu_read_lock() to ensure it is not freed under us. */ if (stop_timer) - sk_stop_timer_sync(sk, &entry->add_timer); + sk_stop_timer_sync(sk, &add_addr->timer); =20 rcu_read_unlock(); - return entry; + return add_addr; } =20 -bool mptcp_pm_alloc_anno_list(struct mptcp_sock *msk, - const struct mptcp_addr_info *addr) +bool mptcp_pm_alloc_add_addr_list(struct mptcp_sock *msk, + const struct mptcp_addr_info *addr) { - struct mptcp_pm_add_entry *add_entry =3D NULL; + struct mptcp_pm_add_addr *add_addr =3D NULL; struct sock *sk =3D (struct sock *)msk; unsigned int timeout; =20 lockdep_assert_held(&msk->pm.lock); =20 - add_entry =3D mptcp_lookup_anno_list_by_saddr(msk, addr); + add_addr =3D mptcp_lookup_add_addr_by_saddr(msk, addr); =20 - if (add_entry) { + if (add_addr) { if (WARN_ON_ONCE(mptcp_pm_is_kernel(msk))) return false; =20 goto reset_timer; } =20 - add_entry =3D kmalloc_obj(*add_entry, GFP_ATOMIC); - if (!add_entry) + add_addr =3D kmalloc_obj(*add_addr, GFP_ATOMIC); + if (!add_addr) return false; =20 - list_add(&add_entry->list, &msk->pm.anno_list); + list_add(&add_addr->list, &msk->pm.anno_list); =20 - add_entry->addr =3D *addr; - add_entry->sock =3D msk; - add_entry->retrans_times =3D 0; + add_addr->addr =3D *addr; + add_addr->sock =3D msk; + add_addr->retrans_times =3D 0; =20 - timer_setup(&add_entry->add_timer, mptcp_pm_add_timer, 0); + timer_setup(&add_addr->timer, mptcp_pm_add_addr_timer, 0); reset_timer: timeout =3D mptcp_adjust_add_addr_timeout(msk); if (timeout) - sk_reset_timer(sk, &add_entry->add_timer, jiffies + timeout); + sk_reset_timer(sk, &add_addr->timer, + jiffies + timeout); =20 return true; } =20 -static void mptcp_pm_free_anno_list(struct mptcp_sock *msk) +static void mptcp_pm_free_add_addr_list(struct mptcp_sock *msk) { - struct mptcp_pm_add_entry *entry, *tmp; + struct mptcp_pm_add_addr *add_addr, *tmp; struct sock *sk =3D (struct sock *)msk; LIST_HEAD(free_list); =20 @@ -457,9 +459,9 @@ static void mptcp_pm_free_anno_list(struct mptcp_sock *= msk) list_splice_init(&msk->pm.anno_list, &free_list); spin_unlock_bh(&msk->pm.lock); =20 - list_for_each_entry_safe(entry, tmp, &free_list, list) { - sk_stop_timer_sync(sk, &entry->add_timer); - kfree_rcu(entry, rcu); + list_for_each_entry_safe(add_addr, tmp, &free_list, list) { + sk_stop_timer_sync(sk, &add_addr->timer); + kfree_rcu(add_addr, rcu); } } =20 @@ -713,7 +715,7 @@ void mptcp_pm_add_addr_echoed(struct mptcp_sock *msk, =20 spin_lock_bh(&pm->lock); =20 - if (mptcp_lookup_anno_list_by_saddr(msk, addr) && READ_ONCE(pm->work_pend= ing)) + if (mptcp_lookup_add_addr_by_saddr(msk, addr) && READ_ONCE(pm->work_pendi= ng)) mptcp_pm_schedule_work(msk, MPTCP_PM_SUBFLOW_ESTABLISHED); =20 spin_unlock_bh(&pm->lock); @@ -1082,7 +1084,7 @@ static void mptcp_pm_ops_release(struct mptcp_sock *m= sk) =20 void mptcp_pm_destroy(struct mptcp_sock *msk) { - mptcp_pm_free_anno_list(msk); + mptcp_pm_free_add_addr_list(msk); mptcp_pm_ops_release(msk); } =20 diff --git a/net/mptcp/pm_kernel.c b/net/mptcp/pm_kernel.c index ee92a9a127c3..6acdaa3efbe7 100644 --- a/net/mptcp/pm_kernel.c +++ b/net/mptcp/pm_kernel.c @@ -367,7 +367,7 @@ static void mptcp_pm_create_subflow_or_signal_addr(stru= ct mptcp_sock *msk) /* If the alloc fails, we are on memory pressure, not worth * continuing, and trying to create subflows. */ - if (!mptcp_pm_alloc_anno_list(msk, &local.addr)) + if (!mptcp_pm_alloc_add_addr_list(msk, &local.addr)) return; =20 __clear_bit(local.addr.id, msk->pm.id_avail_bitmap); @@ -1051,16 +1051,16 @@ int mptcp_pm_nl_add_addr_doit(struct sk_buff *skb, = struct genl_info *info) return ret; } =20 -static void mptcp_pm_remove_anno_addr(struct mptcp_sock *msk, - const struct mptcp_addr_info *addr, - bool force) +static void mptcp_pm_remove_add_addr(struct mptcp_sock *msk, + const struct mptcp_addr_info *addr, + bool force) { struct mptcp_rm_list list =3D { .nr =3D 0 }; bool announced; =20 list.ids[list.nr++] =3D mptcp_endp_get_local_id(msk, addr); =20 - announced =3D mptcp_remove_anno_list_by_saddr(msk, addr); + announced =3D mptcp_remove_add_addr_by_saddr(msk, addr); if (announced || force) { spin_lock_bh(&msk->pm.lock); if (announced) @@ -1097,8 +1097,8 @@ static int mptcp_nl_remove_subflow_and_signal_addr(st= ruct net *net, =20 lock_sock(sk); remove_subflow =3D mptcp_lookup_subflow_by_saddr(&msk->conn_list, addr); - mptcp_pm_remove_anno_addr(msk, addr, remove_subflow && - !(entry->flags & MPTCP_PM_ADDR_FLAG_IMPLICIT)); + mptcp_pm_remove_add_addr(msk, addr, remove_subflow && + !(entry->flags & MPTCP_PM_ADDR_FLAG_IMPLICIT)); =20 list.ids[0] =3D mptcp_endp_get_local_id(msk, addr); =20 @@ -1232,7 +1232,7 @@ static void mptcp_pm_flush_addrs_and_subflows(struct = mptcp_sock *msk, slist.ids[slist.nr++] =3D mptcp_endp_get_local_id(msk, &entry->addr); =20 if (alist.nr < MPTCP_RM_IDS_MAX && - mptcp_remove_anno_list_by_saddr(msk, &entry->addr)) + mptcp_remove_add_addr_by_saddr(msk, &entry->addr)) alist.ids[alist.nr++] =3D mptcp_endp_get_local_id(msk, &entry->addr); } =20 diff --git a/net/mptcp/pm_userspace.c b/net/mptcp/pm_userspace.c index d838e8ea65fd..29e892a94ce2 100644 --- a/net/mptcp/pm_userspace.c +++ b/net/mptcp/pm_userspace.c @@ -228,7 +228,7 @@ int mptcp_pm_nl_announce_doit(struct sk_buff *skb, stru= ct genl_info *info) lock_sock(sk); spin_lock_bh(&msk->pm.lock); =20 - if (mptcp_pm_alloc_anno_list(msk, &addr_val.addr)) { + if (mptcp_pm_alloc_add_addr_list(msk, &addr_val.addr)) { msk->pm.add_addr_signaled++; mptcp_pm_announce_addr(msk, &addr_val.addr, false); mptcp_pm_addr_send_ack(msk); @@ -281,7 +281,7 @@ void mptcp_pm_remove_addr_entry(struct mptcp_sock *msk, int anno_nr =3D 0; =20 /* only delete if either announced or matching a subflow */ - if (mptcp_remove_anno_list_by_saddr(msk, &entry->addr)) + if (mptcp_remove_add_addr_by_saddr(msk, &entry->addr)) anno_nr++; else if (!mptcp_lookup_subflow_by_saddr(&msk->conn_list, &entry->addr)) return; diff --git a/net/mptcp/protocol.h b/net/mptcp/protocol.h index 661600f8b573..f7a1d039f144 100644 --- a/net/mptcp/protocol.h +++ b/net/mptcp/protocol.h @@ -1132,16 +1132,17 @@ int mptcp_pm_mp_prio_send_ack(struct mptcp_sock *ms= k, struct mptcp_addr_info *addr, struct mptcp_addr_info *rem, u8 bkup); -bool mptcp_pm_alloc_anno_list(struct mptcp_sock *msk, - const struct mptcp_addr_info *addr); -bool mptcp_pm_sport_in_anno_list(struct mptcp_sock *msk, const struct sock= *sk); -struct mptcp_pm_add_entry * -mptcp_pm_del_add_timer(struct mptcp_sock *msk, - const struct mptcp_addr_info *addr, bool check_id); +bool mptcp_pm_alloc_add_addr_list(struct mptcp_sock *msk, + const struct mptcp_addr_info *addr); +bool mptcp_pm_sport_in_add_addr_list(struct mptcp_sock *msk, + const struct sock *sk); +struct mptcp_pm_add_addr * +mptcp_pm_del_add_addr_timer(struct mptcp_sock *msk, + const struct mptcp_addr_info *addr, bool check_id); bool mptcp_lookup_subflow_by_saddr(const struct list_head *list, const struct mptcp_addr_info *saddr); -bool mptcp_remove_anno_list_by_saddr(struct mptcp_sock *msk, - const struct mptcp_addr_info *addr); +bool mptcp_remove_add_addr_by_saddr(struct mptcp_sock *msk, + const struct mptcp_addr_info *addr); int mptcp_pm_nl_set_flags(struct mptcp_pm_addr_entry *local, struct genl_info *info); int mptcp_userspace_pm_set_flags(struct mptcp_pm_addr_entry *local, diff --git a/net/mptcp/subflow.c b/net/mptcp/subflow.c index c57ed27a5fb0..d0844e568119 100644 --- a/net/mptcp/subflow.c +++ b/net/mptcp/subflow.c @@ -235,7 +235,7 @@ static int subflow_check_req(struct request_sock *req, pr_debug("syn inet_sport=3D%d %d\n", ntohs(inet_sk(sk_listener)->inet_sport), ntohs(inet_sk((struct sock *)subflow_req->msk)->inet_sport)); - if (!mptcp_pm_sport_in_anno_list(subflow_req->msk, sk_listener)) { + if (!mptcp_pm_sport_in_add_addr_list(subflow_req->msk, sk_listener)) { SUBFLOW_REQ_INC_STATS(req, MPTCP_MIB_MISMATCHPORTSYNRX); subflow_add_reset_reason(skb, MPTCP_RST_EPROHIBIT); return -EPERM; @@ -926,7 +926,7 @@ static struct sock *subflow_syn_recv_sock(const struct = sock *sk, pr_debug("ack inet_sport=3D%d %d\n", ntohs(inet_sk(sk)->inet_sport), ntohs(inet_sk((struct sock *)owner)->inet_sport)); - if (!mptcp_pm_sport_in_anno_list(owner, sk)) { + if (!mptcp_pm_sport_in_add_addr_list(owner, sk)) { SUBFLOW_REQ_INC_STATS(req, MPTCP_MIB_MISMATCHPORTACKRX); subflow_add_reset_reason(skb, MPTCP_RST_EPROHIBIT); goto dispose_child; --=20 2.53.0