From nobody Thu May 7 08:35:47 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 A27112EA171 for ; Wed, 15 Apr 2026 09:58:11 +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=1776247091; cv=none; b=bNzl1TbX7XWhm4zUEkswVsE+xKJUvoqZI1WRVrIcM4VgJ5Kw09qn6z1qUKzyHq7dG+vseXwPM7Voo+0o3LjuKO5Eo/kTPl8PewBLlZuUxh0Dj7ckwINrBY/JxtE/FMQ9tJGkxePXA4wDjBSrnkqMEWdHXjpnYExBMvd+V8ah7Es= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1776247091; c=relaxed/simple; bh=qU2gO4U+rLHR/oV2lgldodaiCkxfghI5r1NFCTslTiA=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=sOvkcqI1xVoAeoub8daCXAWwJcfTFLIQd+nVEpAwTHXNQJyfJctCx8sMKL3MKxu1CgD1qpHlkOV1dDUMYpJ1MeBTSiMctsqSeQ2JHvmo+CHoqaN3e+rjdR9dzYaKI3dIwhctkJ8eu2FP3WdHsrjqiekjRITeofS8vc3gyRwS7Wk= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=Thqf0L4w; 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="Thqf0L4w" Received: by smtp.kernel.org (Postfix) with ESMTPSA id 0B7A2C2BCB5; Wed, 15 Apr 2026 09:58:10 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1776247091; bh=qU2gO4U+rLHR/oV2lgldodaiCkxfghI5r1NFCTslTiA=; h=From:Date:Subject:References:In-Reply-To:To:Cc:From; b=Thqf0L4wpYNFC23Wag0O0tD9uo/tNqXUVuw8v/lwGQIu3JN9lHDHXflX4BWNCLDp8 pFf1uqq99x+nSz/4CpBVdeCYJEX0z3MX2KwLmo9ARNdrTJS2ZDevAoBgLc4ucIVXVH lkiJVcDQKw2Etij7dOmlqr2zljlxh1xWWKuc3t9Z3d+ZNngfHgz9TPRRhEXkWIKt8N koGTYs6Xmj1qTqi/8AtTB3Jd5KGGQo4FP84EUeH2fTXBxe7Wjqd8MvXrPSGyho5xv2 TGHWgFQ7xtgrf/ikF/jDjP4RCVHBLP7UjR9cFFDH9NlARkNuneoDQfZGGCBGau/6oj SJnMFx34SyLvw== From: "Matthieu Baerts (NGI0)" Date: Wed, 15 Apr 2026 11:56:49 +0200 Subject: [PATCH mptcp-net v5 01/20] mptcp: pm: kernel: correctly retransmit ADD_ADDR 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: <20260415-mptcp-inc-limits-v5-1-e54c3bf80e4e@kernel.org> References: <20260415-mptcp-inc-limits-v5-0-e54c3bf80e4e@kernel.org> In-Reply-To: <20260415-mptcp-inc-limits-v5-0-e54c3bf80e4e@kernel.org> To: MPTCP Upstream Cc: "Matthieu Baerts (NGI0)" X-Mailer: b4 0.15.2 X-Developer-Signature: v=1; a=openpgp-sha256; l=2074; i=matttbe@kernel.org; h=from:subject:message-id; bh=qU2gO4U+rLHR/oV2lgldodaiCkxfghI5r1NFCTslTiA=; b=owGbwMvMwCVWo/Th0Gd3rumMp9WSGDLvJyofvV/iE7NbyaNBf3X73e2t4WUqa+dm7nVVezzzz zSZ92d3dZSyMIhxMciKKbJIt0Xmz3xexVvi5WcBM4eVCWQIAxenAEwkN4vhr1BgeHDeg/RPczjz FEuTt23Wi5xtWS+Qnjq/R+38W32DDkaGtZIX7yw42Jq87eOBusDuJOOHR5/mvJ9i01mot6bj6Os QFgA= X-Developer-Key: i=matttbe@kernel.org; a=openpgp; fpr=E8CB85F76877057A6E27F77AF6B7824F4269A073 When adding the ADD_ADDR to the list, the address including the IP, port and ID are copied. On the other hand, when the endpoint corresponds to the one from the initial subflow, the ID is set to 0, as specified by the MPTCP protocol. The issue is that the ID was reset after having copied the ID in the ADD_ADDR entry. So the retransmission was done, but using a different ID than the initial one. Fixes: 8b8ed1b429f8 ("mptcp: pm: reuse ID 0 after delete and re-add") Signed-off-by: Matthieu Baerts (NGI0) --- net/mptcp/pm_kernel.c | 13 ++++++++----- 1 file changed, 8 insertions(+), 5 deletions(-) diff --git a/net/mptcp/pm_kernel.c b/net/mptcp/pm_kernel.c index 7895fb5f982e..906a1d5ab9ed 100644 --- a/net/mptcp/pm_kernel.c +++ b/net/mptcp/pm_kernel.c @@ -347,6 +347,8 @@ static void mptcp_pm_create_subflow_or_signal_addr(stru= ct mptcp_sock *msk) =20 /* check first for announce */ if (msk->pm.add_addr_signaled < endp_signal_max) { + u8 endp_id; + /* due to racing events on both ends we can reach here while * previous add address is still running: if we invoke now * mptcp_pm_announce_addr(), that will fail and the @@ -360,19 +362,20 @@ static void mptcp_pm_create_subflow_or_signal_addr(st= ruct mptcp_sock *msk) if (!select_signal_address(pernet, msk, &local)) goto subflow; =20 + /* Special case for ID0: set the correct ID */ + endp_id =3D local.addr.id; + if (endp_id =3D=3D msk->mpc_endpoint_id) + local.addr.id =3D 0; + /* 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)) return; =20 - __clear_bit(local.addr.id, msk->pm.id_avail_bitmap); + __clear_bit(endp_id, msk->pm.id_avail_bitmap); msk->pm.add_addr_signaled++; =20 - /* Special case for ID0: set the correct ID */ - if (local.addr.id =3D=3D msk->mpc_endpoint_id) - local.addr.id =3D 0; - mptcp_pm_announce_addr(msk, &local.addr, false); mptcp_pm_addr_send_ack(msk); =20 --=20 2.53.0 From nobody Thu May 7 08:35:47 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 61AF833E34C for ; Wed, 15 Apr 2026 09:58:12 +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=1776247092; cv=none; b=S6UoZrVp/LrAtiWULRIqrvynVfJ/fwI7XQ7H8lyPInE3do1ya9HxFVIQlcVeLVKJJqzOCP6MUJ0UhWG34jxpd4lk4iq09we8pPkoWv8I4FqLIhy7ZLgLEHYtAAIJDdTM6zNGIvG/MfX7IDZ8dwrVKcQGsdVLVnyXhfgRtasNz7E= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1776247092; c=relaxed/simple; bh=xqQ0XziJocJK+T47pPjFZrFCFv0UNP98JJxxWrafiv4=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=TbpaYCHqz931UdhAlYc+JYL6oJXax+CzIWjCtfPtUn1r3JsVZbLPJDEqMF5pcuCyzx4FV0PfvwO2ztdqV/jEO5gu2xsUcT4Nz5LC7Z8pA8pV9oBI0qr7GGeDdJmER18MJ0gJXtlnIi8ELlDEYztxqUmeb7IkIC/cLiXLtyTh3D8= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=iZbB2LFD; 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="iZbB2LFD" Received: by smtp.kernel.org (Postfix) with ESMTPSA id C6873C19424; Wed, 15 Apr 2026 09:58:11 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1776247092; bh=xqQ0XziJocJK+T47pPjFZrFCFv0UNP98JJxxWrafiv4=; h=From:Date:Subject:References:In-Reply-To:To:Cc:From; b=iZbB2LFDwenNnnxtLIDEphLz61SzEB96tV7nvw4B544Vm7TAzUyMJ8HJzMQEXg2rX gEm8DkgMQ5iYxVmw8oSv85z35+bI0ZDmW7AWMwRoY6haACNGOrHgHckExNx+vcZMav z2tUvUO7KK3tWen6mTGAvLAoU7+5GDXi7gmg5jCMDvRzCMQnAtWrlbsyVKye7/9bKe UmzYSdU7cKKpPD5lBzDcUE6scvpMM3BgfLFfydBpC7J5iP+BkX6djCdOsV0zfvth5A Z3GkCpavBuryHStDDbdQ2KSycu3/ZFgVv05c+4vfZt91BfSl6Oi8R7OE5kWfR6wEJI fd/rhbRvw5pmA== From: "Matthieu Baerts (NGI0)" Date: Wed, 15 Apr 2026 11:56:50 +0200 Subject: [PATCH mptcp-net v5 02/20] mptcp: pm: ADD_ADDR rtx: fix potential data-race 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: <20260415-mptcp-inc-limits-v5-2-e54c3bf80e4e@kernel.org> References: <20260415-mptcp-inc-limits-v5-0-e54c3bf80e4e@kernel.org> In-Reply-To: <20260415-mptcp-inc-limits-v5-0-e54c3bf80e4e@kernel.org> To: MPTCP Upstream Cc: "Matthieu Baerts (NGI0)" X-Mailer: b4 0.15.2 X-Developer-Signature: v=1; a=openpgp-sha256; l=1180; i=matttbe@kernel.org; h=from:subject:message-id; bh=xqQ0XziJocJK+T47pPjFZrFCFv0UNP98JJxxWrafiv4=; b=owGbwMvMwCVWo/Th0Gd3rumMp9WSGDLvJ6q8q7zKN/NBKPv9S9PVPnw/Wv9rzueblWpuc8Wa7 +6dyrwyv6OUhUGMi0FWTJFFui0yf+bzKt4SLz8LmDmsTCBDGLg4BWAiN34y/GaPtjY7nHx966wn TwPYwh+oChY/CF8ns2TCd121svdcez4xMjzdnLO8t97evFPhu0NzpFfmo/kCaqWy8YsMOi68Ujv IwQUA X-Developer-Key: i=matttbe@kernel.org; a=openpgp; fpr=E8CB85F76877057A6E27F77AF6B7824F4269A073 This mptcp_pm_add_timer() helper is executed as a timer callback in softirq context. To avoid any data races, the socket lock needs to be held with bh_lock_sock(). If the socket is in use, retry again soon after, similar to what is done with the keepalive timer. Fixes: 00cfd77b9063 ("mptcp: retransmit ADD_ADDR when timeout") Signed-off-by: Matthieu Baerts (NGI0) --- net/mptcp/pm.c | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/net/mptcp/pm.c b/net/mptcp/pm.c index fdadd0e8f77c..43a11b65235f 100644 --- a/net/mptcp/pm.c +++ b/net/mptcp/pm.c @@ -340,6 +340,13 @@ static void mptcp_pm_add_timer(struct timer_list *time= r) if (!entry->addr.id) return; =20 + bh_lock_sock(sk); + if (sock_owned_by_user(sk)) { + /* Try again later. */ + sk_reset_timer(sk, timer, jiffies + HZ / 20); + goto out; + } + if (mptcp_pm_should_add_signal_addr(msk)) { sk_reset_timer(sk, timer, jiffies + TCP_RTO_MAX / 8); goto out; @@ -368,6 +375,7 @@ static void mptcp_pm_add_timer(struct timer_list *timer) mptcp_pm_subflow_established(msk); =20 out: + bh_unlock_sock(sk); __sock_put(sk); } =20 --=20 2.53.0 From nobody Thu May 7 08:35:47 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 498BA322B8B for ; Wed, 15 Apr 2026 09:58: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=1776247093; cv=none; b=T06qIHLZCjvo9bHn9SD5eSvWg0QFz+SLGjtMEAznmGdc3XAfEW/ZsbRb6ErOEIdoJPC/FYb+fqzZZZ/enlhiaXHICJnCQXzTYHc8dt91OI19ZfL+kmGn1KkuEqgpmSAxAAX4xaNvdI5U5LnKuFqC6dpVwPm19X2WWv0Y/R/y6iY= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1776247093; c=relaxed/simple; bh=RjhEZ4Y9dGN7dl5bP4at23CWIzyuoWHqJdbVn30LIas=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=UEPYA7CdaAtJHku/gm3Lv2mH6wl/lT9c7PEnCJiaeq/f+I9U4oq/M7s1h1nEFndcnfwTet8FwXiIVkjdyJ9kDS5gAKRjWtXQPVZ/D8VuEwIG1MGtgd5ZCFNDmMujzhtrARYNRgEk6zXP2RLAFZXANoQ6jGrVsZa+ElJbOZjuyo4= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=k+Ucgx1C; 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="k+Ucgx1C" Received: by smtp.kernel.org (Postfix) with ESMTPSA id 8D641C19424; Wed, 15 Apr 2026 09:58:12 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1776247093; bh=RjhEZ4Y9dGN7dl5bP4at23CWIzyuoWHqJdbVn30LIas=; h=From:Date:Subject:References:In-Reply-To:To:Cc:From; b=k+Ucgx1CZTPYum9PbxAXirIU9J1t0Ql1BPfmMZzRuwT7F5oTjUKOgmnDkCwsvtlsU h7gRzcw2TVzdBREk7kKa8OYmOVjtIfQCbQ6mP3FCJXjSuWd/x/Accx3WbC6lAzamke lo61cK44oZuuU3wET+RgwxIBUVpmIGozRnzfZpw5luOg9A+3WG5JVUTTwGPi/9JN1R 17SrnQYwgHXy3Ke6sH5n6lnzHI5B/6EP/VM6DJ1nNDaAz+uK7ausf70VQ99W9vb84l b2+x73LSfQx8JzmYXt/t1S+mA069RWG8VB04nSizzJyH1Oiuj+WcL+9O6f0gIcVzpx P4tmy9/Oqt7Zg== From: "Matthieu Baerts (NGI0)" Date: Wed, 15 Apr 2026 11:56:51 +0200 Subject: [PATCH mptcp-net v5 03/20] mptcp: pm: ADD_ADDR rtx: allow 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: <20260415-mptcp-inc-limits-v5-3-e54c3bf80e4e@kernel.org> References: <20260415-mptcp-inc-limits-v5-0-e54c3bf80e4e@kernel.org> In-Reply-To: <20260415-mptcp-inc-limits-v5-0-e54c3bf80e4e@kernel.org> To: MPTCP Upstream Cc: "Matthieu Baerts (NGI0)" X-Mailer: b4 0.15.2 X-Developer-Signature: v=1; a=openpgp-sha256; l=875; i=matttbe@kernel.org; h=from:subject:message-id; bh=RjhEZ4Y9dGN7dl5bP4at23CWIzyuoWHqJdbVn30LIas=; b=owGbwMvMwCVWo/Th0Gd3rumMp9WSGDLvJ6p0elx86LjvysIDHNLvv3D/W/lId3nvlSUK5gwMf gbPvVv2dpSyMIhxMciKKbJIt0Xmz3xexVvi5WcBM4eVCWQIAxenAEykVJDhf8zRZ9nBXH17dx1Z t6AsydJmycctW019W83n5Wx99PfYh0cMfwUvTs6zn1smPemuXelZx+RJvB2v3SYe3Pf0pr1zvNa xmQwA 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 43a11b65235f..6a75470dcf5e 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; - bh_lock_sock(sk); if (sock_owned_by_user(sk)) { /* Try again later. */ --=20 2.53.0 From nobody Thu May 7 08:35:47 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 E1965217704 for ; Wed, 15 Apr 2026 09:58: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=1776247094; cv=none; b=SPOJxschspfA4R8NKuUbssVVxsJZzJjQf/AL8v/NQb5nnZ4y2bmShym9/d4Ox1k5kwBQCr8aPUE4GdT7r/MML7IVCXFvWGle9sY9iAIJxh/C4XYX3GFtjVkSvro9Lo3BuJI8sqg9LAHyyhePYV6lGfPsU3zyK0llLcfR8n/Ernw= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1776247094; c=relaxed/simple; bh=S5iyu6EcSvC9FvRM6ZNlySYLGPjU4l8BWtgnvahmpec=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=BkaLrUE0cXU2WXyuL9vsv2TwieKSsC+m1888pUIBE8N8QIgG9MDjpc9UVf1aFF53XuA1b6RBMy/9lWkNDLjEHtm7YlE+aHTGZw2djln+75duCJl8iZUrbbddK8BNBjbFeTWcPbv7peaCLTnzXp4cbW+j6872xorGEZPLza80MNQ= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=Stk/TkDk; 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="Stk/TkDk" Received: by smtp.kernel.org (Postfix) with ESMTPSA id 5455AC2BCB4; Wed, 15 Apr 2026 09:58:13 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1776247093; bh=S5iyu6EcSvC9FvRM6ZNlySYLGPjU4l8BWtgnvahmpec=; h=From:Date:Subject:References:In-Reply-To:To:Cc:From; b=Stk/TkDkOFNooUNq3FLaP5e+COqOODzHr/3a5AE5l0+jZN4AWhUKabHZjXNIKx+hp 7v8w/KljTIfCK/VxV7ALyer9omjeDvaYSYCN5/ZpsI4457K2OFJxKt6rsYOkC+oTsE WzpbN1oHtQWVmrDCxU2qkpZXLKylHmNYyNYuv9TKetvgvTF/Tv1K81UBzUyAXiT+Or NpOm509Mzkn7ocoLuv9polV8hEAL4FZqBx4hAN9W3nxnXvzDsWX4Tgcu4gmDDeM1bu 3jJiMDmt42JsgwEH++edV8xutqb5MtmVdM5CYZGN+6kkGz2MGT2DKEHlwfZ/vpiteX 0fnjA2L9Exn3A== From: "Matthieu Baerts (NGI0)" Date: Wed, 15 Apr 2026 11:56:52 +0200 Subject: [PATCH mptcp-net v5 04/20] mptcp: pm: ADD_ADDR rtx: 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: <20260415-mptcp-inc-limits-v5-4-e54c3bf80e4e@kernel.org> References: <20260415-mptcp-inc-limits-v5-0-e54c3bf80e4e@kernel.org> In-Reply-To: <20260415-mptcp-inc-limits-v5-0-e54c3bf80e4e@kernel.org> To: MPTCP Upstream Cc: "Matthieu Baerts (NGI0)" X-Mailer: b4 0.15.2 X-Developer-Signature: v=1; a=openpgp-sha256; l=1301; i=matttbe@kernel.org; h=from:subject:message-id; bh=S5iyu6EcSvC9FvRM6ZNlySYLGPjU4l8BWtgnvahmpec=; b=owGbwMvMwCVWo/Th0Gd3rumMp9WSGDLvJ6pO2+PpvbxKw3jm0cc2eyP2zblk6P7DqqUv7XPnv nU9fCqcHaUsDGJcDLJiiizSbZH5M59X8ZZ4+VnAzGFlAhnCwMUpABOxM2JkmMim+l+l9MudCe+/ R6x7XTk/n8k4KyagbbZgYohVtEbILEaGl9Zfnf6e95f6fuHAxB/3VWRXKl568/WeY1bV9zuKd/d P4wAA 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, drop the '!msk' check which cannot happen because it is never reset, and explicitly mark the remaining one as "unlikely". Fixes: 00cfd77b9063 ("mptcp: retransmit ADD_ADDR when timeout") Signed-off-by: Matthieu Baerts (NGI0) --- v3: remove '!msk' check: cannot be true. --- net/mptcp/pm.c | 8 +++----- 1 file changed, 3 insertions(+), 5 deletions(-) diff --git a/net/mptcp/pm.c b/net/mptcp/pm.c index 6a75470dcf5e..d3fcf441b208 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(inet_sk_state_load(sk) =3D=3D TCP_CLOSE)) + goto exit; =20 bh_lock_sock(sk); if (sock_owned_by_user(sk)) { @@ -373,6 +370,7 @@ static void mptcp_pm_add_timer(struct timer_list *timer) =20 out: bh_unlock_sock(sk); +exit: __sock_put(sk); } =20 --=20 2.53.0 From nobody Thu May 7 08:35:47 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 969202EA171 for ; Wed, 15 Apr 2026 09:58: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=1776247094; cv=none; b=MHN8Fmsm1IQzCM6SYnJhAYNexVkwtg4SSEXH18W1k3xaUMh5CXtKoHJmVZpnW1wafHemzZDVkhHLhRd3LyL0Rhjt3NIUZma7cYMIZGVKbszIZ6Lcy1oOKaFUyP4ZSkrogx5R8UmHqnmGHmhkdclNVFwvgx5n3bk57KNAPywCAdA= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1776247094; c=relaxed/simple; bh=ow8OvRYg7xBe9n7Ww6xKj+DPj4K1OPsCTGuhPmFSH8s=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=IMHYKHOKoi9jjraQm13t2mhrq8ANOVAY3pAPxwND+txLwb1Imcuv4VdNaCFDZlqAYg2bPiOnN5mBmMp9QL7noduyc1QbC6PQN96D4M86SEERpbYs/eB59K/bdDV97mVrzIfF7zTfe92nJNicPeS1+ba+r3c9h9IU6QeETOXcBqo= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=iOuN+hEj; 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="iOuN+hEj" Received: by smtp.kernel.org (Postfix) with ESMTPSA id 1B4F8C2BCB5; Wed, 15 Apr 2026 09:58:13 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1776247094; bh=ow8OvRYg7xBe9n7Ww6xKj+DPj4K1OPsCTGuhPmFSH8s=; h=From:Date:Subject:References:In-Reply-To:To:Cc:From; b=iOuN+hEjXt9GrWbBH9mGXnVuVDCeAsFaL+38EeTXAJh6ERIWj2e6APAl45j5hi2I8 1bNFA0VQhOZ4MD0JK7n1g4WggdN5Ryd4XXiPHUYFw8jvVUN8luj/re+JucbCNYw5zZ Uiymps0caWKGlj8vs/fCBgn81j4YB9LHry3QgGdTdasFh+vX9q/TftQjO7zaQO9BPs ceCQ6yF3tV5I2XyXlzkiwQRb6IFKPG7PpkusXd1HV1epoitHlvYeBGK0tJVpD8rLJF 8gGX6Q4hxXCefwAv7OJG8mnL9o1ea9+9VV35xN9m2PeQ/c6s0LeYmZV1dCjozXavBc 3btSc40MLJzhg== From: "Matthieu Baerts (NGI0)" Date: Wed, 15 Apr 2026 11:56:53 +0200 Subject: [PATCH mptcp-net v5 05/20] mptcp: pm: ADD_ADDR rtx: 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: <20260415-mptcp-inc-limits-v5-5-e54c3bf80e4e@kernel.org> References: <20260415-mptcp-inc-limits-v5-0-e54c3bf80e4e@kernel.org> In-Reply-To: <20260415-mptcp-inc-limits-v5-0-e54c3bf80e4e@kernel.org> To: MPTCP Upstream Cc: "Matthieu Baerts (NGI0)" X-Mailer: b4 0.15.2 X-Developer-Signature: v=1; a=openpgp-sha256; l=3692; i=matttbe@kernel.org; h=from:subject:message-id; bh=ow8OvRYg7xBe9n7Ww6xKj+DPj4K1OPsCTGuhPmFSH8s=; b=owGbwMvMwCVWo/Th0Gd3rumMp9WSGDLvJ6p9b9z/fZ6S9LUJt+SuLRDcO6l3WoV+1ZTnf31v8 Vx5q3QkvKOUhUGMi0FWTJFFui0yf+bzKt4SLz8LmDmsTCBDGLg4BWAi7AsZGRp9bWK//37xRGLS UgvFd703O4XP25Y+erS6++BNFoXL+2sZGVZd/x9wlNGQddeGd0E9mfei7Te1v/jjXizL5SapF7L +CjMA 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(). But that's not enough: if it is the last reference, sock_put() will call sk_free(), which will end up calling sk_stop_timer_sync() on the same timer, and waiting indefinitely to finish. So it is needed to mark that the timer is done at the end of the timer handler when it has not been rescheduled, not to call sk_stop_timer_sync() on "itself". Fixes: 00cfd77b9063 ("mptcp: retransmit ADD_ADDR when timeout") Signed-off-by: Matthieu Baerts (NGI0) --- v3: support calling sk_free() from the timer handler. Note: I'm not very happy with this patch, it looks too big. Did I miss a simpler way? v4: init timer_done after 'reset_timer' label to handle cases where the sysctl is changed in between. v5: only set timer_done to true in the timer handler, safer and easier. --- net/mptcp/pm.c | 30 +++++++++++++++++++----------- 1 file changed, 19 insertions(+), 11 deletions(-) diff --git a/net/mptcp/pm.c b/net/mptcp/pm.c index d3fcf441b208..0ff35f49d451 100644 --- a/net/mptcp/pm.c +++ b/net/mptcp/pm.c @@ -16,6 +16,7 @@ struct mptcp_pm_add_entry { struct list_head list; struct mptcp_addr_info addr; u8 retrans_times; + bool timer_done; struct timer_list add_timer; struct mptcp_sock *sock; struct rcu_head rcu; @@ -327,22 +328,22 @@ static void mptcp_pm_add_timer(struct timer_list *tim= er) add_timer); struct mptcp_sock *msk =3D entry->sock; struct sock *sk =3D (struct sock *)msk; - unsigned int timeout; + unsigned int timeout =3D 0; =20 pr_debug("msk=3D%p\n", msk); =20 - if (unlikely(inet_sk_state_load(sk) =3D=3D TCP_CLOSE)) - goto exit; - bh_lock_sock(sk); + if (unlikely(inet_sk_state_load(sk) =3D=3D TCP_CLOSE)) + goto out; + if (sock_owned_by_user(sk)) { /* Try again later. */ - sk_reset_timer(sk, timer, jiffies + HZ / 20); + timeout =3D HZ / 20; goto out; } =20 if (mptcp_pm_should_add_signal_addr(msk)) { - sk_reset_timer(sk, timer, jiffies + TCP_RTO_MAX / 8); + timeout =3D TCP_RTO_MAX / 8; goto out; } =20 @@ -360,8 +361,9 @@ static void mptcp_pm_add_timer(struct timer_list *timer) } =20 if (entry->retrans_times < ADD_ADDR_RETRANS_MAX) - sk_reset_timer(sk, timer, - jiffies + (timeout << entry->retrans_times)); + timeout <<=3D entry->retrans_times; + else + timeout =3D 0; =20 spin_unlock_bh(&msk->pm.lock); =20 @@ -369,9 +371,13 @@ static void mptcp_pm_add_timer(struct timer_list *time= r) mptcp_pm_subflow_established(msk); =20 out: + if (timeout) + sk_reset_timer(sk, timer, jiffies + timeout); + else + /* if sock_put calls sk_free: avoid waiting for this timer */ + entry->timer_done =3D true; bh_unlock_sock(sk); -exit: - __sock_put(sk); + sock_put(sk); } =20 struct mptcp_pm_add_entry * @@ -434,6 +440,7 @@ bool mptcp_pm_alloc_anno_list(struct mptcp_sock *msk, =20 timer_setup(&add_entry->add_timer, mptcp_pm_add_timer, 0); reset_timer: + add_entry->timer_done =3D false; timeout =3D mptcp_adjust_add_addr_timeout(msk); if (timeout) sk_reset_timer(sk, &add_entry->add_timer, jiffies + timeout); @@ -454,7 +461,8 @@ static void mptcp_pm_free_anno_list(struct mptcp_sock *= msk) 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); + if (!entry->timer_done) + sk_stop_timer_sync(sk, &entry->add_timer); kfree_rcu(entry, rcu); } } --=20 2.53.0 From nobody Thu May 7 08:35:47 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 8FF00322B8B for ; Wed, 15 Apr 2026 09:58: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=1776247095; cv=none; b=CEnpdl1TWvQnPzQaSq/5I50gQJvi3kQh7sLRY2bCQCGSTueQuoA8loCWNj6TSGHBFcPhXhbA7lObofNlZm+rRAam0NwBjo8EQd/XptYnzkT3uIp4eBVlCIsNERacnCuXXuehrmuRK06SoGUAw9Dk/FCsI+vKo/YvPjfoq3njQ18= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1776247095; c=relaxed/simple; bh=lHgkh0RL7ozwznfonwI1qORd+8z2EfSEMnbedFbtXd8=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=K9Ln4RaUQfJKg9T+kmJoUflOL0tX+0LcRMK61cpeuaEUEXOYcx4Ndsij+e8cSUE/WdGVDVfevMNSxTZm4NwNttYMkIElkxIKkgzVChNEJnXT7TKVUrFcs/YdNWJGXIyltRJESJqaZsgSu8IhFYETfhknjBu80cU/vc21TCdej8Y= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=eAQU6Lhb; 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="eAQU6Lhb" Received: by smtp.kernel.org (Postfix) with ESMTPSA id D64DCC19424; Wed, 15 Apr 2026 09:58:14 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1776247095; bh=lHgkh0RL7ozwznfonwI1qORd+8z2EfSEMnbedFbtXd8=; h=From:Date:Subject:References:In-Reply-To:To:Cc:From; b=eAQU6LhbyrxBtXmIIr3TdKA902yMgbqyjYhffBdOjKE88qPPJvBGwK+pf2JsaLMKU S8zcc9IH6Db1yTQq7SUyknqBczMhsAPOalnq3ex2wE4ZdGJ0Fx0O/iojnFneVK5jg+ wf05icqFFfT5CPmh7Yq5fjQujqdj50YKIx0IRaQTNxxuGddQByGYugyNLDS6Rwj5DC pwMLeaKI2knu6SoAOA3hODfkRHH1I3LHvad61Hiiu8d2uidKhpBdGKWucTWc4gmKWU HfkJT1RsT0BVlpmvzAVWQoL13Yr4hTYIvroI9Se2bRk3f90W26MODeUJKHvSHgmn8n /QJ7qo4B2X1OA== From: "Matthieu Baerts (NGI0)" Date: Wed, 15 Apr 2026 11:56:54 +0200 Subject: [PATCH mptcp-net v5 06/20] mptcp: pm: ADD_ADDR rtx: 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: <20260415-mptcp-inc-limits-v5-6-e54c3bf80e4e@kernel.org> References: <20260415-mptcp-inc-limits-v5-0-e54c3bf80e4e@kernel.org> In-Reply-To: <20260415-mptcp-inc-limits-v5-0-e54c3bf80e4e@kernel.org> To: MPTCP Upstream Cc: "Matthieu Baerts (NGI0)" X-Mailer: b4 0.15.2 X-Developer-Signature: v=1; a=openpgp-sha256; l=1553; i=matttbe@kernel.org; h=from:subject:message-id; bh=lHgkh0RL7ozwznfonwI1qORd+8z2EfSEMnbedFbtXd8=; b=owGbwMvMwCVWo/Th0Gd3rumMp9WSGDLvJ6q/3r1Z9o++5Qq5B3sNkl5zl/yJvyBXuPH1p6lxq vUVGmbVHaUsDGJcDLJiiizSbZH5M59X8ZZ4+VnAzGFlAhnCwMUpABO5s5fhn/7+k8FJNa7PC8Mf dgkHWMwV2JjgYJMnfapgRSDT8kOBHxkZrjG0XvBimPeg5867D2e+Rmglbpgx7d/aJ8dee73c3V3 xmgEA 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 | 7 +------ 1 file changed, 1 insertion(+), 6 deletions(-) diff --git a/net/mptcp/pm.c b/net/mptcp/pm.c index 0ff35f49d451..bc5168831085 100644 --- a/net/mptcp/pm.c +++ b/net/mptcp/pm.c @@ -342,13 +342,8 @@ static void mptcp_pm_add_timer(struct timer_list *time= r) goto out; } =20 - if (mptcp_pm_should_add_signal_addr(msk)) { - timeout =3D TCP_RTO_MAX / 8; - goto out; - } - timeout =3D mptcp_adjust_add_addr_timeout(msk); - if (!timeout) + if (!timeout || mptcp_pm_should_add_signal_addr(msk)) goto out; =20 spin_lock_bh(&msk->pm.lock); --=20 2.53.0 From nobody Thu May 7 08:35:47 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 49C2833C536 for ; Wed, 15 Apr 2026 09:58: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=1776247096; cv=none; b=RF365jmrXeZTz8DQe/fFPVIyCsHp7T+9phDvu/Y36MprbYtD/tpu0uXeuf9bBu6/QATbt5ArCiI1vphwh+PqMc7EJCstp0i8Fp3Pa/WrQ+mY+06dCKzXko+bKhfWQPYCRzJmeh8lwftRVJm5T+rq1+/1b+ZuXyc2jqvg5drgEJE= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1776247096; c=relaxed/simple; bh=Jzmk3liXGy9iPs++/Ns7j86iSPD8fR2e3vNAPGblgfM=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=Cy6KbYJYS/MTeq/Au7PgIEetqLo8Ur1dmdEG+k4sci29zUnOTIosUdempwIh5w/saA/udSjyMjW+m17huEm63ZvtkAcYHNT/qiuMf25HCz9NRSv4I2EbQ2CNB7Kzpwa4nYzqe16VK9Y5K4sFfU3o3HAtANrnzLoMyf3SB+0KkT8= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=hN7vQ+fo; 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="hN7vQ+fo" Received: by smtp.kernel.org (Postfix) with ESMTPSA id 9D1C7C2BCB6; Wed, 15 Apr 2026 09:58:15 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1776247096; bh=Jzmk3liXGy9iPs++/Ns7j86iSPD8fR2e3vNAPGblgfM=; h=From:Date:Subject:References:In-Reply-To:To:Cc:From; b=hN7vQ+foNxuChjC0U/bR1qxjDCriFJTmZBof4FQ6VmDmMYWVfa2yCExyKd/lUIhKG egq9ahsRWw3yGCSswrlehBQQkN5+k4mZpLwbFemBpb8/WdHuqPYgKM8gbsNP1iit7o cWc32oRO7fkQahZLr/JosWQurAnCbeqJ7QY+cShZeWoUulRhWP0nt2x19SBEFXxd3M n6xMB+6FQJ8O9TcLfjq0+LYScsodxhfCcG9b86u+/byz963NA7MlDDt18vIGFiKZvT KCDwWL5GHSxVIsSkMMPKGhNseRgkOQLUMUvNHOrHQ/RXIcUFNE/3EDWtt3gZsw76ho LMuefeT8wePag== From: "Matthieu Baerts (NGI0)" Date: Wed, 15 Apr 2026 11:56:55 +0200 Subject: [PATCH mptcp-net v5 07/20] mptcp: pm: ADD_ADDR rtx: 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: <20260415-mptcp-inc-limits-v5-7-e54c3bf80e4e@kernel.org> References: <20260415-mptcp-inc-limits-v5-0-e54c3bf80e4e@kernel.org> In-Reply-To: <20260415-mptcp-inc-limits-v5-0-e54c3bf80e4e@kernel.org> To: MPTCP Upstream Cc: "Matthieu Baerts (NGI0)" X-Mailer: b4 0.15.2 X-Developer-Signature: v=1; a=openpgp-sha256; l=1857; i=matttbe@kernel.org; h=from:subject:message-id; bh=Jzmk3liXGy9iPs++/Ns7j86iSPD8fR2e3vNAPGblgfM=; b=owGbwMvMwCVWo/Th0Gd3rumMp9WSGDLvJ2oUbQp/Mi+nQ2wZW8w2gZfvmZomrM7hFZ7j6fvkw s9P1TuYO0pZGMS4GGTFFFmk2yLzZz6v4i3x8rOAmcPKBDKEgYtTACYy5yzDP9WNJ1sb/gfcN4nO KDmzo8NpZZF95fqpy7QtmT42L/V9KcXIMLFg+fnIX9vvPa746V2sOHnrqlNpt994/jtpWM6hZxp XxQEA 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) --- v2: restore accidentally deleted icsk->icsk_rto > max check --- 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 bc5168831085..22ba75fa876c 100644 --- a/net/mptcp/pm.c +++ b/net/mptcp/pm.c @@ -306,20 +306,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 if (icsk->icsk_rto > max) { 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 Thu May 7 08:35:47 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 EB9792EA171 for ; Wed, 15 Apr 2026 09:58: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=1776247097; cv=none; b=a14aS0gsrruVMjtFaXLmVeSnEtl9fOK8S5CHlD+z1ueM1IpcbD+EoA4eIfhpDMMNW1t92jriK+RpBoCjqdiTXZMMZqmnTa2lSYPBiJeLHXyIOi0SHeNt+J+21B2pHxhwQ094rAZ0g8tWVkm9cyqAmD8Oak+WJ4eJCO1NK7kNJcA= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1776247097; c=relaxed/simple; bh=Kktud8wCpveHjCbjDWmaJblCLdYijhqyRCfLH5Kou00=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=mKgB5sLoIzST/MD243NEQOrw8zUJCnTAhNBYPLe+8WNmItw3gXEi7CBZE+V3TsSv7zaf6oZADSv7Jri79PNuVEtAu1HeiUZKDC/zK4R9sDg/d6Ve08v3wQqVvGH2kaLUiWCNIraH9zNC7RZnHjugU1xuuQUJo8Y5HZvCYoL2nYw= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=UVcGW7QZ; 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="UVcGW7QZ" Received: by smtp.kernel.org (Postfix) with ESMTPSA id 63FCCC19424; Wed, 15 Apr 2026 09:58:16 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1776247096; bh=Kktud8wCpveHjCbjDWmaJblCLdYijhqyRCfLH5Kou00=; h=From:Date:Subject:References:In-Reply-To:To:Cc:From; b=UVcGW7QZ4kT65PgMqZaModFCrPSsZuAi3KmMJhegORU1uftdGEa4DffGJfyw/Lj4B 3nLWSkLfdCrRr/k2Lc7E91cYHrD3QHGLmaJ85eT6cZ0AEquzYv9su3ae0BtNFk4CmQ nVbq/cuzJuj17ah7LztzhFXKGopNzQUX4nukJn8TCEXrvmqeqrQQxUrSvWmDnAMBCs G5tG/zBFzyBAJFEfPf/kTn/i1mc0nt8yd7jd3dvDVYnxk+VdwtW1oip081aMZpx/xX H5IjRzQ2N8Ulmw3gku0+EeohHeNnTfmajZDVr1sSj/iajwVgQcoD6O3sdpbiG09iPO dWWydci993tcg== From: "Matthieu Baerts (NGI0)" Date: Wed, 15 Apr 2026 11:56:56 +0200 Subject: [PATCH mptcp-net v5 08/20] 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: <20260415-mptcp-inc-limits-v5-8-e54c3bf80e4e@kernel.org> References: <20260415-mptcp-inc-limits-v5-0-e54c3bf80e4e@kernel.org> In-Reply-To: <20260415-mptcp-inc-limits-v5-0-e54c3bf80e4e@kernel.org> To: MPTCP Upstream Cc: "Matthieu Baerts (NGI0)" X-Mailer: b4 0.15.2 X-Developer-Signature: v=1; a=openpgp-sha256; l=747; i=matttbe@kernel.org; h=from:subject:message-id; bh=Kktud8wCpveHjCbjDWmaJblCLdYijhqyRCfLH5Kou00=; b=owGbwMvMwCVWo/Th0Gd3rumMp9WSGDLvJ2rMZlL1VnPVvOf1W/r/NfEtDg0zG8NO/+LNjFsb+ m/ttCK1jlIWBjEuBlkxRRbptsj8mc+reEu8/Cxg5rAygQxh4OIUgImslWH4K/2PQzg7dPvSYzX7 L03imuH40i80YDGDx/fLMomWwSyqyxj+1xru/lWcwpD1tJ2f59hbjTUea6c9TvQTvPzz1pobLx8 G8gIA 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 22ba75fa876c..25cfc5b7cb98 100644 --- a/net/mptcp/pm.c +++ b/net/mptcp/pm.c @@ -308,6 +308,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 Thu May 7 08:35:47 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 CE6252EA171 for ; Wed, 15 Apr 2026 09:58: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=1776247097; cv=none; b=KnJV7hAc7/O2ECdWJ1Ztq5MCaTsBGrzMDXiDO6UdcNuQZr6A7lzRhJmfnsyrM7ZOBiyuTc2OPJMF3xsOTgLDTttfgd72vj8ilaRVSdc0vFURW6RfTqNasoUtd5kKxajhdeHZ7pZrhTO8ct6uwY8HJTSyt6+g2jGythVnurBvnLI= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1776247097; c=relaxed/simple; bh=awkPvRqvIliDOSYlLhGGuN/RUqHCdebo60QpsHNoDSU=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=NVQq6bzOOVkiLwb6VpJ+9flEjt4s0iunTAIbbekdbfdpu+yHpw6tTI/qkkrWbDigAeeOVLJz8Faw7fiY1NM+b+nMPbM+NHD1WeplQqJbfYflgtCjkCeBOLmOSdf2NF9Q0szW3DtxtdgME3GO2iJQDZnorIKWDAEd73lS7A9TFTc= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=KRv8rEba; 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="KRv8rEba" Received: by smtp.kernel.org (Postfix) with ESMTPSA id 2B0FFC19424; Wed, 15 Apr 2026 09:58:17 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1776247097; bh=awkPvRqvIliDOSYlLhGGuN/RUqHCdebo60QpsHNoDSU=; h=From:Date:Subject:References:In-Reply-To:To:Cc:From; b=KRv8rEbaIcWNTAqN0Klq67MfcbQp7LJbsq664UOP2SHG34vqB9445P4WxuH8RPM9y VMlhNiDJUO8YC3rPgCHRDev1YKiddmv7P0Hj/R3UL6IL67YstCAeV+z+h7pyWxetFl qg5A28HiSDveUENOubTpr1PP0WACbAPAahwQ7z5lQDhvKDTj9Sb9rtooWWmu1mhsl3 F9xEiJogQTjtEwpu8JaHACP2MpMm1PUtwyoNn3WIcqiTLYHbEHXNjKEvwuvz+EuNC6 xd0LcbxRDQ9QeGPaFR8UMXshNu+fyJrppJk4WIfdziSJvL9cBzDcDyVyUze1QPNHtC cJHg9b5fb0vjw== From: "Matthieu Baerts (NGI0)" Date: Wed, 15 Apr 2026 11:56:57 +0200 Subject: [PATCH mptcp-net v5 09/20] 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: <20260415-mptcp-inc-limits-v5-9-e54c3bf80e4e@kernel.org> References: <20260415-mptcp-inc-limits-v5-0-e54c3bf80e4e@kernel.org> In-Reply-To: <20260415-mptcp-inc-limits-v5-0-e54c3bf80e4e@kernel.org> To: MPTCP Upstream Cc: "Matthieu Baerts (NGI0)" X-Mailer: b4 0.15.2 X-Developer-Signature: v=1; a=openpgp-sha256; l=1076; i=matttbe@kernel.org; h=from:subject:message-id; bh=awkPvRqvIliDOSYlLhGGuN/RUqHCdebo60QpsHNoDSU=; b=owGbwMvMwCVWo/Th0Gd3rumMp9WSGDLvJ2qarev0dqu6W/lAqGr3tshTJZ+MIqPv837azPTJ6 JjWhg0HOkpZGMS4GGTFFFmk2yLzZz6v4i3x8rOAmcPKBDKEgYtTACZyeC8jQ/PtZzy95v4qLfN/ v/ohlbth2qHJCZNl5v7Qzehqf8SblMbwP6Eg+bTk3GlX3+75v3LPHAdGt4ViR1dVGx/2E9//2Ge vOTcA X-Developer-Key: i=matttbe@kernel.org; a=openpgp; fpr=E8CB85F76877057A6E27F77AF6B7824F4269A073 When sending an MP_PRIO, closed subflows need 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. Note that explicit MP_PRIO cannot be sent during the 3WHS, so it is fine to use __mptcp_subflow_active(). 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 25cfc5b7cb98..0bbb6054f0b1 100644 --- a/net/mptcp/pm.c +++ b/net/mptcp/pm.c @@ -284,6 +284,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 Thu May 7 08:35:47 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 6C88533EAF9 for ; Wed, 15 Apr 2026 09:58: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=1776247098; cv=none; b=m54e0cNAQCfg0O/VIZ6YanWMoL1DrfEGgVxBemmQ+tZWhHrkrpQuAwXab9o1emsDOl9T+zIqjofRjw2jICWWw/jAvv8wKpEh9e+NFI1arkfX8jUj32wzyTVqVYNC0+9AIW6nxAHg71fuVlKDgBEc1S+W2cATfkKcaL+XmsakoBU= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1776247098; c=relaxed/simple; bh=4iemWZyS23XFlX1CT3kuENuF5DWJNQBzNrxo6eWgvYg=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=pj9N2cHncmu+NSFS0H9LVtrNco2eNbMgPkYFvKyl4dUbaoiqej8VZtldWx2Rra1ZslpF5W/wJCN4X9tWkjbzy9I5o0F27btwTjQmcQBjQWrc4gBVt7/RqwPOHW+xuIr7W88n6ZqY4TLDCY6OmjPAHfvH4AH9nTVbyqA+GYP/JTA= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=uqB7b6bS; 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="uqB7b6bS" Received: by smtp.kernel.org (Postfix) with ESMTPSA id E5DC6C2BCB5; Wed, 15 Apr 2026 09:58:17 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1776247098; bh=4iemWZyS23XFlX1CT3kuENuF5DWJNQBzNrxo6eWgvYg=; h=From:Date:Subject:References:In-Reply-To:To:Cc:From; b=uqB7b6bSw9BHHdV6nuaBrePIzpB+vNR7uKEvbG97q9LQ2vf765WLtH3ZsY5jh2vuE SvxU+mhttRwcBEHWivO08ewYfCM6QPnH9VIVPhQa8VRFIZzRCCgl9hrKyoAli4qOmE FYMehL0QWIjdvD/qV597ZM/3MjqlnmLATT3DZhlxdzp3W5owzCCXoftVrkpEdLvzqr K7DAO8CBWUX+BI78rjcpy1uPPHOEA2JbCSCcrfCyZSJEeXO0TkcZi3UGwpveSEWH23 tT+2FTXBBMm6f5iJB3KE07AYuUG/dgbya+5FVlOUjlUBOg5CbfI3o735XywE7l3dKd uBC1O9AuQTNEg== From: "Matthieu Baerts (NGI0)" Date: Wed, 15 Apr 2026 11:56:58 +0200 Subject: [PATCH mptcp-net v5 10/20] selftests: mptcp: check output: catch cmd errors 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: <20260415-mptcp-inc-limits-v5-10-e54c3bf80e4e@kernel.org> References: <20260415-mptcp-inc-limits-v5-0-e54c3bf80e4e@kernel.org> In-Reply-To: <20260415-mptcp-inc-limits-v5-0-e54c3bf80e4e@kernel.org> To: MPTCP Upstream Cc: "Matthieu Baerts (NGI0)" X-Mailer: b4 0.15.2 X-Developer-Signature: v=1; a=openpgp-sha256; l=3981; i=matttbe@kernel.org; h=from:subject:message-id; bh=4iemWZyS23XFlX1CT3kuENuF5DWJNQBzNrxo6eWgvYg=; b=owGbwMvMwCVWo/Th0Gd3rumMp9WSGDLvJ2rxX7b+lRD2pHv9DtnsnLLHNc75MdeXL2ytiV74a uk0t++KHaUsDGJcDLJiiizSbZH5M59X8ZZ4+VnAzGFlAhnCwMUpABMJmMrIsJRNmz2uLDbnWHoV b8h85frrWz9+27rk0mmOkDVZV3a/X8jI8D1k2u9lqk5BRxn7wpnefL4QVLnp6PHCnC5xUc8P8zz qGAE= X-Developer-Key: i=matttbe@kernel.org; a=openpgp; fpr=E8CB85F76877057A6E27F77AF6B7824F4269A073 Using '${?}' inside the if-statement to check the returned value from the command that was evaluated as part of the if-statement is not correct: here, '${?}' will be linked to the previous instruction, not the one that is expected here (${cmd}). Instead, simply mark the error, except if an error is expected. If that's the case, 1 can be passed as the 4th argument of this helper. Three checks from pm_netlink.sh expect an error. While at it, improve the error message when the command unexpectedly fails or succeeds. Note that we could expect a specific returned value, but the checks currently expecting an error can be used with 'ip mptcp' or 'pm_nl_ctl', and these two tools don't return the same error code. Fixes: 2d0c1d27ea4e ("selftests: mptcp: add mptcp_lib_check_output helper") Signed-off-by: Matthieu Baerts (NGI0) --- v5: - improve err msg in mptcp_lib.sh, supporting unexpected success - s/no_err/exp_error/ in pm_netlink.sh - a 3rd check expects an error in pm_netlink.sh (removed later on) --- tools/testing/selftests/net/mptcp/mptcp_lib.sh | 16 ++++++++++------ tools/testing/selftests/net/mptcp/pm_netlink.sh | 10 ++++++---- 2 files changed, 16 insertions(+), 10 deletions(-) diff --git a/tools/testing/selftests/net/mptcp/mptcp_lib.sh b/tools/testing= /selftests/net/mptcp/mptcp_lib.sh index 5fea7e7df628..989a5975dcea 100644 --- a/tools/testing/selftests/net/mptcp/mptcp_lib.sh +++ b/tools/testing/selftests/net/mptcp/mptcp_lib.sh @@ -474,20 +474,24 @@ mptcp_lib_wait_local_port_listen() { wait_local_port_listen "${@}" "tcp" } =20 +# $1: error file, $2: cmd, $3: expected msg, [$4: expected error] mptcp_lib_check_output() { local err=3D"${1}" local cmd=3D"${2}" local expected=3D"${3}" + local exp_error=3D"${4:-0}" local cmd_ret=3D0 local out =20 - if ! out=3D$(${cmd} 2>"${err}"); then - cmd_ret=3D${?} - fi + out=3D$(${cmd} 2>"${err}") || cmd_ret=3D1 =20 - if [ ${cmd_ret} -ne 0 ]; then - mptcp_lib_pr_fail "command execution '${cmd}' stderr" - cat "${err}" + if [ "${cmd_ret}" !=3D "${exp_error}" ]; then + mptcp_lib_pr_fail "unexpected returned code for '${cmd}', info:" + if [ "${exp_error}" =3D 0 ]; then + cat "${err}" + else + echo "${out}" + fi return 2 elif [ "${out}" =3D "${expected}" ]; then return 0 diff --git a/tools/testing/selftests/net/mptcp/pm_netlink.sh b/tools/testin= g/selftests/net/mptcp/pm_netlink.sh index 123d9d7a0278..b69f30fcb91e 100755 --- a/tools/testing/selftests/net/mptcp/pm_netlink.sh +++ b/tools/testing/selftests/net/mptcp/pm_netlink.sh @@ -122,10 +122,12 @@ check() local cmd=3D"$1" local expected=3D"$2" local msg=3D"$3" + local exp_error=3D"$4" local rc=3D0 =20 mptcp_lib_print_title "$msg" - mptcp_lib_check_output "${err}" "${cmd}" "${expected}" || rc=3D${?} + mptcp_lib_check_output "${err}" "${cmd}" "${expected}" "${exp_error}" || + rc=3D${?} if [ ${rc} -eq 2 ]; then mptcp_lib_result_fail "${msg} # error ${rc}" ret=3D${KSFT_FAIL} @@ -158,13 +160,13 @@ check "show_endpoints" \ "3,10.0.1.3,signal backup")" "dump addrs" =20 del_endpoint 2 -check "get_endpoint 2" "" "simple del addr" +check "get_endpoint 2" "" "simple del addr" 1 check "show_endpoints" \ "$(format_endpoints "1,10.0.1.1" \ "3,10.0.1.3,signal backup")" "dump addrs after del" =20 add_endpoint 10.0.1.3 2>/dev/null -check "get_endpoint 4" "" "duplicate addr" +check "get_endpoint 4" "" "duplicate addr" 1 =20 add_endpoint 10.0.1.4 flags signal check "get_endpoint 4" "$(format_endpoints "4,10.0.1.4,signal")" "id addr = increment" @@ -173,7 +175,7 @@ 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" +check "get_endpoint 10" "" "above hard addr limit" 1 =20 del_endpoint 9 for i in $(seq 10 255); do --=20 2.53.0 From nobody Thu May 7 08:35:47 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 35CC5217704 for ; Wed, 15 Apr 2026 09:58: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=1776247099; cv=none; b=m6SzTytrQuKc8su6SPpsBlI+kU2JspPJIl11RY9Npu+vGimS4jsIl3FrS+Ucf7froaBztALdz8y+9zRxl3ha9Hn/IbZqxkinHlRJKrt5E5dNvxUrlQHZ3viPrubQQBcV0cktTWC4jQYr6d/vH9CXcJ1Aum+Tl8NCM43oX2+rW5w= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1776247099; c=relaxed/simple; bh=+ZtDau8ZaxURdpqy1rQ9ybBeaerSVZO1gNen80NZM8E=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=VElUyVP5rJ3z9vt4i4ydOyZCjVwunLsYJ2dOep9h6WzNYmyqyRKaJ0eyLHL/sWVtoxN7PfV0Pgp31TSzDpQ455tCNP6T70iZtjG2t8FtNOiyIWiwQoeOhhSmqJ4afOhE7ICvQGkKykQKxrzi4XWJDqbPzBu8FNuwpres3V/r80s= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=a1gBQKzP; 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="a1gBQKzP" Received: by smtp.kernel.org (Postfix) with ESMTPSA id AC973C2BCB8; Wed, 15 Apr 2026 09:58:18 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1776247099; bh=+ZtDau8ZaxURdpqy1rQ9ybBeaerSVZO1gNen80NZM8E=; h=From:Date:Subject:References:In-Reply-To:To:Cc:From; b=a1gBQKzPsaanHOvMwWdI9vfOoNeLZuPSlGuuA1Ie8wVpHQI0sW8Qage4oluJVXoTF DNz0t9pivach51WOOMJxib81KmQPw+nzPNabo8QAz6MX99whYHYzxNdkzSmm+eRrRH BmdV+an/B0wTbHyXZ2pNObt6rQ1A6T7djXvrBf8QJdevrLIxd7twGpChqHGaDxcZf3 FGf+IwjHYjZ/wrv9x0pB0jLRf29mYLTlsZzblS5dfmrufR+CM/H2YPkaI6v/4zQXKY RgGqjda0pBQmGPR6oKCiTz8PSRA/G4POVMddTfEtPAN+IavBN+hbQNUUojf8fvWn+/ yrAIgKymP3skQ== From: "Matthieu Baerts (NGI0)" Date: Wed, 15 Apr 2026 11:56:59 +0200 Subject: [PATCH mptcp-net v5 11/20] 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: <20260415-mptcp-inc-limits-v5-11-e54c3bf80e4e@kernel.org> References: <20260415-mptcp-inc-limits-v5-0-e54c3bf80e4e@kernel.org> In-Reply-To: <20260415-mptcp-inc-limits-v5-0-e54c3bf80e4e@kernel.org> To: MPTCP Upstream Cc: "Matthieu Baerts (NGI0)" X-Mailer: b4 0.15.2 X-Developer-Signature: v=1; a=openpgp-sha256; l=1497; i=matttbe@kernel.org; h=from:subject:message-id; bh=+ZtDau8ZaxURdpqy1rQ9ybBeaerSVZO1gNen80NZM8E=; b=owGbwMvMwCVWo/Th0Gd3rumMp9WSGDLvJ2ptXl7Etv68989vzve8g7NtGg5Pn77+6vPptv23O X1V2x2udZSyMIhxMciKKbJIt0Xmz3xexVvi5WcBM4eVCWQIAxenAEzEU4/hf+mxzjXndz5nPeUj tH5mRe/HqyzVT5dI9anzLVlnG204SYvhv+Pa18e559x33i5ycJFP4hqjrJnK2a7/Zz5O1NHVirC 8xAUA 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 b69f30fcb91e..04594dfc22b1 100755 --- a/tools/testing/selftests/net/mptcp/pm_netlink.sh +++ b/tools/testing/selftests/net/mptcp/pm_netlink.sh @@ -194,9 +194,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 Thu May 7 08:35:47 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 EC5162EA171 for ; Wed, 15 Apr 2026 09:58: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=1776247100; cv=none; b=gqeQjuvxDK51sNirIiFmUethZrgl+gyzKLlk84wvlIX3CspNB+Rkd2Gp+XAW1YdNl5V1YWxokVqO44eRQgbC5XQ6iTfW5ABm0jFIFCEBx/bViuAGJyFjE6kg7lZpbtDYCPu6ZXDq/KzOI3kFx8PFPZFbKNaC5hb4oi820566mzA= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1776247100; c=relaxed/simple; bh=JfovlaL/U2Cz15YP5/ltVy2OQ6r/tYSTUof7MUBhiNc=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=A+SstAafctDm8BBD294wNS+NM3S+PmOrm4FSvrLlQbbJ+KtL0nXm5nXinnE3gI+FT8Oa3v2BjO/a3ORxsF79BpQiLLmc/eP6ycCa4OQd4FsgLitcqzn8yarNSgSs6DaICo0kskpUcP+W4srKAoTyAz6yDTtJa2EKKEvac9BUl3A= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=UluLigYy; 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="UluLigYy" Received: by smtp.kernel.org (Postfix) with ESMTPSA id 738E5C2BCB7; Wed, 15 Apr 2026 09:58:19 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1776247099; bh=JfovlaL/U2Cz15YP5/ltVy2OQ6r/tYSTUof7MUBhiNc=; h=From:Date:Subject:References:In-Reply-To:To:Cc:From; b=UluLigYyOc7mwjzDmy+S/3gbS89HRhJU+NKMUu/lHucje7oXEyyu8wSJpYyoqLmX6 YEMbeLLjzsVRxohGam4al7fmTrGA8In1NFCZ1yylGNmikhT+id6KlmqKN0CVFZpfxr VJQXa/qYYuVeyudfK+OYFVEJM5d9AOD3v2tLvHECcQpe0EkaHv2n7Md6fmylbivt11 pWWrCce9n3ovK0Ft+JNzo0tm5troZ4rejThzkLRQSmSVPsQG5Syl+A7mbPCSyL49Tm eEEVQv95kYi4Rk2b12/YN4NuNRJvys0ZWHQBy0dfd9gkRV0xDu92ryEHnBL+iIZmM4 fRUf321NSI4Wg== From: "Matthieu Baerts (NGI0)" Date: Wed, 15 Apr 2026 11:57:00 +0200 Subject: [PATCH mptcp-net v5 12/20] 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: <20260415-mptcp-inc-limits-v5-12-e54c3bf80e4e@kernel.org> References: <20260415-mptcp-inc-limits-v5-0-e54c3bf80e4e@kernel.org> In-Reply-To: <20260415-mptcp-inc-limits-v5-0-e54c3bf80e4e@kernel.org> To: MPTCP Upstream Cc: "Matthieu Baerts (NGI0)" X-Mailer: b4 0.15.2 X-Developer-Signature: v=1; a=openpgp-sha256; l=5699; i=matttbe@kernel.org; h=from:subject:message-id; bh=JfovlaL/U2Cz15YP5/ltVy2OQ6r/tYSTUof7MUBhiNc=; b=owGbwMvMwCVWo/Th0Gd3rumMp9WSGDLvJ2pn1/HKtV2OWL3Ofd21w18b1OxeMv+c//jyx9VBT Kp/Fp3Q7ShlYRDjYpAVU2SRbovMn/m8irfEy88CZg4rE8gQBi5OAZiIcxIjw6PKTxW3fj6pevAz N/fJ6/qzogrb7WXnXJFZoHPjqKe18DlGhuXu+iu6syb/+pLU9Ocg81+ZQxzbL378dP/Y3x1X8ro 1zjADAA== 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 906a1d5ab9ed..a678b1c33f56 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 * @@ -410,7 +413,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 @@ -447,6 +451,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); @@ -488,7 +493,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(); @@ -559,7 +565,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); @@ -586,7 +593,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 @@ -620,13 +628,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 */ @@ -637,7 +646,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]); @@ -672,7 +682,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 Thu May 7 08:35:47 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 E315533E34C for ; Wed, 15 Apr 2026 09:58: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=1776247101; cv=none; b=Nwq7Pe7ql0hravtKfLoOiXeLa85fpusrsV6kVzwBXpOCb070PUuFRjihym+48EwyvuXHuZ5BV7cOPGh5WJeyzrlbQHS1YE7PHuft9tzohK2IKOTwO0GayNqT1jDieYJFhSa6dmuDKeydn2PvwQB9uf+p5yD8ZsIE5nXqmQokQaQ= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1776247101; c=relaxed/simple; bh=geg3i+AZ83UdjmswHRjfvGyLJA3VdBH2mrx+q6p2fj4=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=dTjN5R/wVsHZoTsg553pUx8acAMOxywL+kaZBdNKPgToSfUVdVTP0qB27gD3erf0JrjM3hKlGFpxnuFlcng97YBFIEAKb/ZYAvH1gu03cv7dKaNRlHRDMAJ1b+/4fSp6yn+vhCbUEXx2vZC/s2o3mEF8C2tMmw0z1p6+eix3xEw= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=tYQVlKYH; 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="tYQVlKYH" Received: by smtp.kernel.org (Postfix) with ESMTPSA id 3A502C2BCB4; Wed, 15 Apr 2026 09:58:20 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1776247100; bh=geg3i+AZ83UdjmswHRjfvGyLJA3VdBH2mrx+q6p2fj4=; h=From:Date:Subject:References:In-Reply-To:To:Cc:From; b=tYQVlKYHSydHO6ROEcMUGDb9foPjDfnFBuWn1P9Jx/DZDBHmtusP+Ppa0hMwoJ9BM UHpA2LwfwUyohSUOvGDq87XLWfWi1ZWlG9EScB5g30t0yScsFWBCmaAAvD7oYzLrFq o0TamkEMqqOyv2W7ZkMSJIDWPAnn5plDg4ZYH4k6bVeSHrhQLfYc4pF9xlEfaBmqAz plxk+rUZxakiEwD6mZ7ZYzQ9CarRfh7KO2qmbX0lj6iXw6Y4FjQI4zBUe0VERalifr IOLIKqyURac4h4RuqLJWhvZvlsKCK0g/+cz+NIrZltBXwNy9PvQ7LVbjontUXkCBLv gkFMkYBgN6KvA== From: "Matthieu Baerts (NGI0)" Date: Wed, 15 Apr 2026 11:57:01 +0200 Subject: [PATCH mptcp-net v5 13/20] 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: <20260415-mptcp-inc-limits-v5-13-e54c3bf80e4e@kernel.org> References: <20260415-mptcp-inc-limits-v5-0-e54c3bf80e4e@kernel.org> In-Reply-To: <20260415-mptcp-inc-limits-v5-0-e54c3bf80e4e@kernel.org> To: MPTCP Upstream Cc: "Matthieu Baerts (NGI0)" X-Mailer: b4 0.15.2 X-Developer-Signature: v=1; a=openpgp-sha256; l=2212; i=matttbe@kernel.org; h=from:subject:message-id; bh=geg3i+AZ83UdjmswHRjfvGyLJA3VdBH2mrx+q6p2fj4=; b=owGbwMvMwCVWo/Th0Gd3rumMp9WSGDLvJ+pUSLqFS1slOByzdgycKmkaX/1Z+NX/yx82iBR0t W9s/1DVUcrCIMbFICumyCLdFpk/83kVb4mXnwXMHFYmkCEMXJwCMJH8Job/SZKmrMdyV51det+q 3yJmsb5HtnnfjSzhLWFu3h1+c4sUGP6H9831UPy6+6+5/oW1yY2fqhczz1ss7ebFFP947j1mVWZ WAA== 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 with a single batch of maximum 8 subflows. Same when adding new "subflow" endpoints with the fullmesh flag. Increasing those batch limits would have a memory impact, and it looks fine not to cover these cases with larger batches for the moment. If more is needed later, the position of the last subflow from the list could be remembered, and the list iteration could continue later. 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 a678b1c33f56..f163d40e7375 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) { @@ -1381,10 +1382,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 Thu May 7 08:35:47 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 A7919322B8B for ; Wed, 15 Apr 2026 09:58: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=1776247101; cv=none; b=Tw5yxEdFd0GBpihciPr5SWEdKC9e8AMqvVC/6DuTA+TDnZFqCeaU/UhqCxu5TrPudKaAw3ObpoAcf4r8vHGzZMUpyw1TNyuyymewfAq+s5B5BP7MZudS7avBasmmhm9RYUtzGhn/atWbElY8fcbfX/IbBxQi1VpS6jz1iTrZeD0= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1776247101; c=relaxed/simple; bh=V+qTh1H+zvXazMYLs/1iysESXTfvfHvnFRBnUfIXOtY=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=Ns74AD7VZYPXCEBe32BeS/PJX124WdxhTJuoySmpVYGqoak0UxJpgmmxWsLv8CEuMoC+1PPNfcpCcNYLuIVDlyVPGre81Aw0Wxeli89rVR5VhnGtTaHsstqp7IT32Jjx5cH30JODV0yDCrgoss3g5LmEoQVbahIxWCAb4EptzlM= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=NpJLHb8B; 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="NpJLHb8B" Received: by smtp.kernel.org (Postfix) with ESMTPSA id 015BAC2BCB6; Wed, 15 Apr 2026 09:58:20 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1776247101; bh=V+qTh1H+zvXazMYLs/1iysESXTfvfHvnFRBnUfIXOtY=; h=From:Date:Subject:References:In-Reply-To:To:Cc:From; b=NpJLHb8BbiGt0jsXx7VzX9AV85K1X+plGbfwSrnZR5Z/3pTuwdE4n/RyivQhJRxzU /lYN907TBJQt0fbKi/Vf5VHrMqix3zAgZovVs0BV5ycUCfqtR1XjUJCdRv83DI32Dt U+oECiDRdWEHfP7VFI9RMGPZhK2C3VyFMezDs5ZkModb4mBkMSFbmPP7RUtyfYC/3u DznprCifSBnkISwcs/XqpKQXNGN9dSI2EnvuS3UOkz8e2nL4gacGp0DmG/kdBReJZ3 RllMc4LV4emA7fyxXHzko842G8jRmjV/NoG+4jCYZDdmiYHFy4b8Qk40MMPeUjYlLH wr5kNYLbEutEg== From: "Matthieu Baerts (NGI0)" Date: Wed, 15 Apr 2026 11:57:02 +0200 Subject: [PATCH mptcp-net v5 14/20] mptcp: pm: kernel: allow flushing more than 8 endpoints 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: <20260415-mptcp-inc-limits-v5-14-e54c3bf80e4e@kernel.org> References: <20260415-mptcp-inc-limits-v5-0-e54c3bf80e4e@kernel.org> In-Reply-To: <20260415-mptcp-inc-limits-v5-0-e54c3bf80e4e@kernel.org> To: MPTCP Upstream Cc: "Matthieu Baerts (NGI0)" X-Mailer: b4 0.15.2 X-Developer-Signature: v=1; a=openpgp-sha256; l=3202; i=matttbe@kernel.org; h=from:subject:message-id; bh=V+qTh1H+zvXazMYLs/1iysESXTfvfHvnFRBnUfIXOtY=; b=owGbwMvMwCVWo/Th0Gd3rumMp9WSGDLvJ+ou0Vw7oeuamgzXKSXexMKUKZqF/Ac4StnWd4RPO 8ouW6XZUcrCIMbFICumyCLdFpk/83kVb4mXnwXMHFYmkCEMXJwCMJFZkxn+e9YeOXdr8ZlnlWdu HzLZUtfewvokwmnnosXK394fCNv+Vovhn2Jzha9m1dmK7bk9a/uNveZZSvQ2zWhfsjHEbeWVsMv x3AA= X-Developer-Key: i=matttbe@kernel.org; a=openpgp; fpr=E8CB85F76877057A6E27F77AF6B7824F4269A073 The mptcp_rm_list structure contains an array of IDs of 8 entries: to be able to send a RM_ADDR with 8 IDs. This limitation was OK so far because there could maximum 8 endpoints. But this is going to change in the next commit. To cope with that, if one of the arrays is full, the iteration stops, the lists are processed, then the iteration continues where it previously stopped. Note that if there are many endpoints to remove, and multiple RM_ADDR to send, it might be more likely that some of these RM_ADDRs are dropped or lost. This is a known limitation: RM_ADDR are not retransmitted in MPTCPv1. Signed-off-by: Matthieu Baerts (NGI0) --- net/mptcp/pm_kernel.c | 38 +++++++++++++++++++++++++++----------- 1 file changed, 27 insertions(+), 11 deletions(-) diff --git a/net/mptcp/pm_kernel.c b/net/mptcp/pm_kernel.c index f163d40e7375..1480bb7473b4 100644 --- a/net/mptcp/pm_kernel.c +++ b/net/mptcp/pm_kernel.c @@ -1224,19 +1224,30 @@ int mptcp_pm_nl_del_addr_doit(struct sk_buff *skb, = struct genl_info *info) } =20 static void mptcp_pm_flush_addrs_and_subflows(struct mptcp_sock *msk, - struct list_head *rm_list) + struct list_head *rm_list, + struct mptcp_pm_addr_entry *entry) { - struct mptcp_rm_list alist =3D { .nr =3D 0 }, slist =3D { .nr =3D 0 }; - struct mptcp_pm_addr_entry *entry; + struct mptcp_rm_list alist, slist; + bool more; =20 - list_for_each_entry(entry, rm_list, list) { - if (slist.nr < MPTCP_RM_IDS_MAX && - mptcp_lookup_subflow_by_saddr(&msk->conn_list, &entry->addr)) +again: + alist.nr =3D 0; + slist.nr =3D 0; + more =3D false; + + entry =3D list_prepare_entry(entry, rm_list, list); + list_for_each_entry_continue(entry, rm_list, list) { + if (mptcp_lookup_subflow_by_saddr(&msk->conn_list, &entry->addr)) 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)) + if (mptcp_remove_anno_list_by_saddr(msk, &entry->addr)) alist.ids[alist.nr++] =3D mptcp_endp_get_local_id(msk, &entry->addr); + + if (slist.nr =3D=3D MPTCP_RM_IDS_MAX || + alist.nr =3D=3D MPTCP_RM_IDS_MAX) { + more =3D !list_is_last(&entry->list, rm_list); + break; + } } =20 spin_lock_bh(&msk->pm.lock); @@ -1247,9 +1258,14 @@ static void mptcp_pm_flush_addrs_and_subflows(struct= mptcp_sock *msk, if (slist.nr) mptcp_pm_rm_subflow(msk, &slist); /* Reset counters: maybe some subflows have been removed before */ - bitmap_fill(msk->pm.id_avail_bitmap, MPTCP_PM_MAX_ADDR_ID + 1); - msk->pm.local_addr_used =3D 0; + if (!more) { + bitmap_fill(msk->pm.id_avail_bitmap, MPTCP_PM_MAX_ADDR_ID + 1); + msk->pm.local_addr_used =3D 0; + } spin_unlock_bh(&msk->pm.lock); + + if (more) + goto again; } =20 static void mptcp_nl_flush_addrs_list(struct net *net, @@ -1266,7 +1282,7 @@ static void mptcp_nl_flush_addrs_list(struct net *net, =20 if (!mptcp_pm_is_userspace(msk)) { lock_sock(sk); - mptcp_pm_flush_addrs_and_subflows(msk, rm_list); + mptcp_pm_flush_addrs_and_subflows(msk, rm_list, NULL); release_sock(sk); } =20 --=20 2.53.0 From nobody Thu May 7 08:35:47 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 67F7D33C536 for ; Wed, 15 Apr 2026 09:58: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=1776247102; cv=none; b=F2pYbnhRBLhPaKLTFdD4n0F0VS9w5TUJSrs1EtigPr11jUEUIwIjM1Fao1ea4aW2Ur/sxGo70da8cvnArQsqwFo5wImvamT+JbKCFxwhHltwEiMNi8KRiPzIKK9lc6JvMLMDV1aaoUoBywi+9PrpQORYdccoReNcG35RGGrgHjk= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1776247102; c=relaxed/simple; bh=FzoQpH+/1rJAZNWER5wf3XVojQhw8DWII+Nl045Pjg4=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=su7u5mSOQmxUAqdC+OcpWvcmx8oRs2/f/52E20SFUHiWIKQDHCLK+4a8Bp94lbZFDi4xHVZywV9ZWpJcbcwMuKqhKoFtvzkMi6oVgfudi+GUUL4PElDy8bmeyY95xvGHS0QKdURdxG/MpPofnop2eYQRTDvh27EYcUXjqgX7nCE= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=hAoWGLtL; 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="hAoWGLtL" Received: by smtp.kernel.org (Postfix) with ESMTPSA id BCD84C2BCB4; Wed, 15 Apr 2026 09:58:21 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1776247102; bh=FzoQpH+/1rJAZNWER5wf3XVojQhw8DWII+Nl045Pjg4=; h=From:Date:Subject:References:In-Reply-To:To:Cc:From; b=hAoWGLtLg+J1EgxBGqoygnYVZWByzFrlyL6P3zP62j9/VoZgaFm6Mb7q9qRIpMUXm W04pcuxmkKjEtKZ3sviPnO+EeXNBrdFj3ETh14JJLCgKa6FuBMDEXLa6d8Ca2Hc0qN gNscNN998hAX+l4OpDS2Wu+pSHeGzR8g4cqbFZfLcyMksI0ux3Epl6Y9pbjl+ajNcl hORVdaa2vV+Hd6mgQMAR4Lj1YfguhNHWtBqNoQFMTGzWeU5bEfp7F0x93I1RF2Zs7L tNHMMQo+S2ISRON9YBewZfe/3NAO4jXeDNg3Y8yW0V2dGb6stNqJMDikeRjpz+UVdZ 8Z7Opgt8pLqpA== From: "Matthieu Baerts (NGI0)" Date: Wed, 15 Apr 2026 11:57:03 +0200 Subject: [PATCH mptcp-net v5 15/20] 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: <20260415-mptcp-inc-limits-v5-15-e54c3bf80e4e@kernel.org> References: <20260415-mptcp-inc-limits-v5-0-e54c3bf80e4e@kernel.org> In-Reply-To: <20260415-mptcp-inc-limits-v5-0-e54c3bf80e4e@kernel.org> To: MPTCP Upstream Cc: "Matthieu Baerts (NGI0)" X-Mailer: b4 0.15.2 X-Developer-Signature: v=1; a=openpgp-sha256; l=1182; i=matttbe@kernel.org; h=from:subject:message-id; bh=FzoQpH+/1rJAZNWER5wf3XVojQhw8DWII+Nl045Pjg4=; b=owGbwMvMwCVWo/Th0Gd3rumMp9WSGDLvJ+qZf2363XfnInttfvXxxHUH10zo1r72lFWl5aory 58AD6nXHaUsDGJcDLJiiizSbZH5M59X8ZZ4+VnAzGFlAhnCwMUpABPZsInhr6A63+oL9hs1c33P 330g1L+FO3hDm17yptDAizlnpKU8HjIyPFjaqH0q9qL2Paa5baeSn56I/CfqtGa+LMOU1l7rT/0 h7AA= 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 1480bb7473b4..c75a2c29bcf2 100644 --- a/net/mptcp/pm_kernel.c +++ b/net/mptcp/pm_kernel.c @@ -746,7 +746,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 Thu May 7 08:35:47 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 0AD40217704 for ; Wed, 15 Apr 2026 09:58: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=1776247103; cv=none; b=B8/Zy5/S+wwdzMiFhcJ+tP+CGk039e49T+SA32cpSGMMKOLPeS+5UJML/ei4zHzoyKB0sa+d+POGpFUre57gKIc7RsEJ2G4MnaRZAfrRtBLA3nxSF4UJndZBvixe09OnsT5QHInGLjv3U8K94MnYZ5+qL59njkyvFlt35R2+RIc= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1776247103; c=relaxed/simple; bh=WPXlOnsY4b8ca/bPVxQbeZN3bFUC8KRS1pNiKQk+mGY=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=N1flsBaNTLxPnFpSldkpp6LqgL6OCxhPrS3Zq0oDf0YrdirdAzzmAM6FIXhMmB/kdIWVJstbTMfjd4n2igZy30rrh2hAi95WRCOKu6zLm766cDcz+U2cMm8mzgv00FmEkJ+RwLn32TY9lFLDbkH4Pgbk8NIhBczQnraGX1C03N4= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=tDz88Rbx; 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="tDz88Rbx" Received: by smtp.kernel.org (Postfix) with ESMTPSA id 83B3CC2BCB5; Wed, 15 Apr 2026 09:58:22 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1776247102; bh=WPXlOnsY4b8ca/bPVxQbeZN3bFUC8KRS1pNiKQk+mGY=; h=From:Date:Subject:References:In-Reply-To:To:Cc:From; b=tDz88Rbx3phUBTAQBAwMjSxSyXs58XTmid2+VXROWYYKrBDLL3P3r6J/v6JNqqZ8N 2kvyZaQa6DR02yOseuTDdirk4kkrEFBXer2ESD30aHwH1TS+1LMxs0xhduzLF7GA5y KiZKNYAZTaoQsE/YyXwCMyYEB4Kf/CFPvgcfF38OsaSTgq+oJHN7VuZU0ziLAsYUs2 SZu1b6jGKQyZILW7C0nj6fPDp1Fl1kSe+XxdEftBKVQOhB+fcEaPpGx4Y2m8mNjQf7 o+Zbbft04TAuGj8AK87TYEz+/pm0K5X279eG37hPUZ7Ak0+5BUrFQSF0QJ3T4RsiIv rr9BQ3NPtIBVg== From: "Matthieu Baerts (NGI0)" Date: Wed, 15 Apr 2026 11:57:04 +0200 Subject: [PATCH mptcp-net v5 16/20] 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: <20260415-mptcp-inc-limits-v5-16-e54c3bf80e4e@kernel.org> References: <20260415-mptcp-inc-limits-v5-0-e54c3bf80e4e@kernel.org> In-Reply-To: <20260415-mptcp-inc-limits-v5-0-e54c3bf80e4e@kernel.org> To: MPTCP Upstream Cc: "Matthieu Baerts (NGI0)" X-Mailer: b4 0.15.2 X-Developer-Signature: v=1; a=openpgp-sha256; l=1924; i=matttbe@kernel.org; h=from:subject:message-id; bh=WPXlOnsY4b8ca/bPVxQbeZN3bFUC8KRS1pNiKQk+mGY=; b=owGbwMvMwCVWo/Th0Gd3rumMp9WSGDLvJ+oxey8sOpp/K11e7ZY/s4hBtoO5Vu8dU5uzerN2C V2//+9VRykLgxgXg6yYIot0W2T+zOdVvCVefhYwc1iZQIYwcHEKwETUUhj+x53+uixbZKv7idzb GkfeBbfLdmn1Ciqs0tsQPPmUddacFEaGhxvOrz9jvqvsUOLbTmnbovUTjz3/PO/zmp6eN7E7Npt J8wIA 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' and 'init_shapers', e.g. ifaces_nr=3D8 reset "Subtest title" ifaces_nr=3D8 init_shapers 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 Thu May 7 08:35:47 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 D77E933F8C3 for ; Wed, 15 Apr 2026 09:58: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=1776247103; cv=none; b=ZUbYLZd3x/p2g07AEiaXrdh4JuKXJAj8MKAG5fbnPLWDbs7xAxYi4Jb+72HwH/54H1vY1rCMPbn6jmFvgj1UiUHK21nIaXKSJg0OpzWhHEAakK/9T7XEICO0FNJF5FRTtRf8DIPRb4WOH679dfgNVrL3Hvl3NdNDI9CqtaazwFw= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1776247103; c=relaxed/simple; bh=+qaBdb9rEAmToN4IiTNcZrtY6yqx3a4Lvoh95OjNc1Y=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=MZduz/PTrtw1/YMBK0hTpkvwnZO0SsxHT+20z/pKgos0hlwAvmhaTGl6v8KY+b1fpZwZHt6THX06uTWoqIUseBBjnAVZ1wis4NvCjd2cE3IxL20OR3n/nq+sl/DDJNBmiDIqgN8OOtq4u1vzUKufwrzJ4fhn/6vUmk2pUvU+ypQ= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=ba36bNnV; 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="ba36bNnV" Received: by smtp.kernel.org (Postfix) with ESMTPSA id 4A8A0C19424; Wed, 15 Apr 2026 09:58:23 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1776247103; bh=+qaBdb9rEAmToN4IiTNcZrtY6yqx3a4Lvoh95OjNc1Y=; h=From:Date:Subject:References:In-Reply-To:To:Cc:From; b=ba36bNnV1t5wTp691n+TdrRNkk3/OULbhB6ec5eocsNuBntQlGzeJlevhnKP3Dwg3 0OftnWa3czmJJvT3HoaEDpGW9skw2wpFxMLNdTOaUgP/3XyAMclH21M4KgzmL5C8f9 fAtJO5IPvkPhS6iv+ehJM/cl3/Lb+RDd7W2XgITGpiIKiFuo/ONiFap7qRXAC1QFAF FRsX3e8UvClgC/TSp/IVelruL+AuEAg7p1q2Bt9NZj6jVE43CsrKkvbA1Tny7CfuA1 VE3pfDAUUmvn+53xmRAGqqBfDm7cqhg66gfPM2jZjWzXH210STdiHLPEm7pYF5QAUR xez5TrApPJh8A== From: "Matthieu Baerts (NGI0)" Date: Wed, 15 Apr 2026 11:57:05 +0200 Subject: [PATCH mptcp-net v5 17/20] 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: <20260415-mptcp-inc-limits-v5-17-e54c3bf80e4e@kernel.org> References: <20260415-mptcp-inc-limits-v5-0-e54c3bf80e4e@kernel.org> In-Reply-To: <20260415-mptcp-inc-limits-v5-0-e54c3bf80e4e@kernel.org> To: MPTCP Upstream Cc: "Matthieu Baerts (NGI0)" X-Mailer: b4 0.15.2 X-Developer-Signature: v=1; a=openpgp-sha256; l=2160; i=matttbe@kernel.org; h=from:subject:message-id; bh=+qaBdb9rEAmToN4IiTNcZrtY6yqx3a4Lvoh95OjNc1Y=; b=owGbwMvMwCVWo/Th0Gd3rumMp9WSGDLvJ+rL/GmSvuneUx37puHrB0ZX1oNe+sd3PXYLjN3z1 2TBvy8TO0pZGMS4GGTFFFmk2yLzZz6v4i3x8rOAmcPKBDKEgYtTACbyx4rhr1zHv5JfDs3X56Rc +ns9X+nvzBtboqq3tuXcK63WefIrtZaR4QS/QQPz87S5wZvCT+bt3f5CsNindRHvtYBDs9YliCp G8gMA 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..c6bb345d056b 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 lose 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 Thu May 7 08:35:47 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 8DB4033C536 for ; Wed, 15 Apr 2026 09:58: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=1776247104; cv=none; b=rhVGz/68TyRnT2QC1aeR/aVRYZdxSt/Ykp7k0M+Ihenn/p7HU98OXuc7gtOVpPO3IXHPN28X6TgiI7jlsvQ7TO3Z6IqUWvZshHgt7OjbXcSQh8p8Jm8H9xn0MmBIrMZN/K23W/Spfh6Wu8ukx3m8sy3QIoe8LMSQWMI6FTSx5H8= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1776247104; c=relaxed/simple; bh=mtYmu9sEERHRNO5FZypyYhLnpdu99tZBV46KyJVl00o=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=EAnvE6yi4N1/zwL26dTiZEgvriPffNI0CnxjA7aZZ3Qvdyppl3lFVVg/upSG1FFqp5JWagO8g2YG2tIy/3tCqJn/EtGXeBoDBWknfDh2DkQU/FnI3wmhLDO7xywlIHPjXHf39hIS3DUBkKZ7tLa/uIHBI9JuOiXXUFAJmRPJ9+c= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=XoNy34Cx; 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="XoNy34Cx" Received: by smtp.kernel.org (Postfix) with ESMTPSA id 11FD1C19424; Wed, 15 Apr 2026 09:58:23 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1776247104; bh=mtYmu9sEERHRNO5FZypyYhLnpdu99tZBV46KyJVl00o=; h=From:Date:Subject:References:In-Reply-To:To:Cc:From; b=XoNy34Cx5ffSfOGFQRByjHqlPfcQWiDS9P6Xjn50b0MtmcDgHuf8K1sP7ZrkL9JiG gkXocVVPR25rUtUbkRXVWJeQymEC4D/hV9UF6kZe7bkk8ohRFjhsN7CgaGVInUFXjV o+uAScIPXmKiwN5srGscAna6sBpCp/N3bpsUP3tXzzG0p1StrqbTG0VjLfJiZekynB 4CdSVgKVA1j1tLjW76jOEhrmXZsb5/D2/CIhRqye1ys+YNo2/2BEbuieFWTmdViu/c 92O2ZWQ+PXFuL2UorT+4B5wBN8gBk4CVx3V6kbeuFSdaeob8r2vKwqCo59NiWvJ2f/ MWGNz1rhdvjKA== From: "Matthieu Baerts (NGI0)" Date: Wed, 15 Apr 2026 11:57:06 +0200 Subject: [PATCH mptcp-net v5 18/20] 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: <20260415-mptcp-inc-limits-v5-18-e54c3bf80e4e@kernel.org> References: <20260415-mptcp-inc-limits-v5-0-e54c3bf80e4e@kernel.org> In-Reply-To: <20260415-mptcp-inc-limits-v5-0-e54c3bf80e4e@kernel.org> To: MPTCP Upstream Cc: "Matthieu Baerts (NGI0)" X-Mailer: b4 0.15.2 X-Developer-Signature: v=1; a=openpgp-sha256; l=3803; i=matttbe@kernel.org; h=from:subject:message-id; bh=mtYmu9sEERHRNO5FZypyYhLnpdu99tZBV46KyJVl00o=; b=owGbwMvMwCVWo/Th0Gd3rumMp9WSGDLvJxp4GtYu9OXcaPiYpej03a+cjXpuIss7Uvrco7c/n Ht1wX6ZjlIWBjEuBlkxRRbptsj8mc+reEu8/Cxg5rAygQxh4OIUgIkIf2f47/NUo+a09aJm/6X7 7k0R9Y4qCS88l/nsR+CM1sboafILbzP801AKvdMRKJ2nmWp76r3gFiGurvXT1eTXhbEt11y+fvU mLgA= 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) --- v4: avoid using "&&" with check(), use a clearer way instead. --- tools/testing/selftests/net/mptcp/pm_netlink.sh | 56 +++++++++++++++------= ---- 1 file changed, 35 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 04594dfc22b1..21bfe1311f11 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 "${@}" } @@ -164,6 +173,7 @@ check "get_endpoint 2" "" "simple del addr" 1 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" 1 @@ -171,25 +181,29 @@ check "get_endpoint 4" "" "duplicate addr" 1 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" 1 +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" + +if add_endpoint '10.0.0.1' &>/dev/null; then + hardlimit=3D"no error" +else + hardlimit=3D"error" +fi +check "echo ${hardlimit}" "error" "above hard addr limit" =20 flush_endpoint check "show_endpoints" "" "flush addrs" @@ -202,15 +216,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 Thu May 7 08:35:47 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 8856333F5A5 for ; Wed, 15 Apr 2026 09:58:25 +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=1776247105; cv=none; b=GnFS2wdW5KDgIM50Nx9/JRhyOMmJLhYCYxoQK4NF8eoLY2RYnig0b3VRwcYfJy/dDOoQzGBMSJyAZlQYrcWf9Kwz/Pyuvcf2uMUIuJ2jqEzlJ5jhcM0z0bkyr7Bgq59HUN/X/yvYeqmlVNiOhEyfkoPPJ5jLTwyHbmfjavATOEI= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1776247105; c=relaxed/simple; bh=N19jazivXTMDBQM5jY7wG5Ec0mUGbrDn/0Y2kORbl90=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=NR/jCAIBZLIQw5YeoERUotgheF+4SaFHNOCLX2+WRsI4Zaua21RpLZ1beZdyknqFfJ/bFPXbLD3QbtRpn415GlofIvXw+QeRpJDPV+296SQU6yxR9D/3+/qmQOR4xjjmJ5g6Z55MJxIVi55RiOxKMR70O9gZMG3yatAtFkgDml0= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=IplQ1dtZ; 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="IplQ1dtZ" Received: by smtp.kernel.org (Postfix) with ESMTPSA id CCFF5C19424; Wed, 15 Apr 2026 09:58:24 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1776247105; bh=N19jazivXTMDBQM5jY7wG5Ec0mUGbrDn/0Y2kORbl90=; h=From:Date:Subject:References:In-Reply-To:To:Cc:From; b=IplQ1dtZwbWMurc4mSMgg5T2cgO3qxmlvGi1frIIARCn5Uw6serL+gpDuMPqeTX/Y A11W9tL7Q0UpSRpHmfX8oHh8cf7eTL4Ky5r0DPbA4cHONEYPeI3fYocm8D54zRjgVd P/WdhA1QS1cgHLNjy8o0oCNrLA0WvyhRjpUoEjb4smWLxh0moUZ53mnfNP3kg6fJGT C+vovU9zFCDED2bEiaog8FgQopFsPkSO4KEQ7XsfKRBudERVaPig7s6sUQ4yMIhTwS x+7nU9nGf5Am/4frR5YdoQaFcDCxVlvYF3AtQGecuJCVXbMI5OeUOSsWF1PU9ajbZg hYI/P+ssPHlnw== From: "Matthieu Baerts (NGI0)" Date: Wed, 15 Apr 2026 11:57:07 +0200 Subject: [PATCH mptcp-net v5 19/20] 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: <20260415-mptcp-inc-limits-v5-19-e54c3bf80e4e@kernel.org> References: <20260415-mptcp-inc-limits-v5-0-e54c3bf80e4e@kernel.org> In-Reply-To: <20260415-mptcp-inc-limits-v5-0-e54c3bf80e4e@kernel.org> To: MPTCP Upstream Cc: "Matthieu Baerts (NGI0)" X-Mailer: b4 0.15.2 X-Developer-Signature: v=1; a=openpgp-sha256; l=1778; i=matttbe@kernel.org; h=from:subject:message-id; bh=N19jazivXTMDBQM5jY7wG5Ec0mUGbrDn/0Y2kORbl90=; b=owGbwMvMwCVWo/Th0Gd3rumMp9WSGDLvJxqGfv8mu/FAReIqjm8mq8+4PZGt0Fkb8b1HUIZxu 1lhZc2KjlIWBjEuBlkxRRbptsj8mc+reEu8/Cxg5rAygQxh4OIUgInsNmFkeMwaaREst4Zx54vt QpeaW4SWeLCt9K/0VI+Z2n3dnD0+kuF/faH45/BkL/eNd83+LAi/v/jo9JBFWzr+vSm6qDIjXK2 ZGwA= 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 without the to/from variants. While at it, fix a checkpatch warning by removing multiple assignments. Signed-off-by: Matthieu Baerts (NGI0) --- v2: fix already present checkpatch warning. --- tools/testing/selftests/net/mptcp/pm_nl_ctl.c | 8 +++----- 1 file changed, 3 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..78180da1efcc 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,15 +228,15 @@ 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); + ret =3D recv(fd, data, max, 0); if (ret < 0) error(1, errno, "recv netlink: %uB\n", ret); =20 + rem =3D ret; /* Beware: the NLMSG_NEXT macro updates the 'rem' argument */ for (; NLMSG_OK(nh, rem); nh =3D NLMSG_NEXT(nh, rem)) { if (nh->nlmsg_type =3D=3D NLMSG_DONE) --=20 2.53.0 From nobody Thu May 7 08:35:47 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 3DF742EA171 for ; Wed, 15 Apr 2026 09:58:26 +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=1776247106; cv=none; b=oIiBTXDWAX8FOTLw4P9BM8Xj4wUe/xZYVh2HqHPvyab9EjUo53SQcnAOBrAvu0pANZYCZ7ecoqRyFjoJwPTsaaJWZeU0YCOfCLlnniF1k1fb6EUZe7WIlHO24OBppMwbqDa2+z3Anz9M+t30G7hjsEPHtIkQqmNvBK0ub0qaiuE= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1776247106; c=relaxed/simple; bh=xciEod+z3wdD2YGCnrf8B75xzkRLnesJLO+lq+J7Tk8=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=TW777pOBPEKHfn8Ezb6WJ0Lt/A2ihBlAgJfwF/1PN4I7b3hGC9xV3+1T1AyWqyjiQuJSpLvPwkGzPq3qfgnJEia64LtaQuxQhG+bR5kPvQ/qpFFStnM00f9bkH+hobsJjhrULCfMVbZCN7DzhIyMG6uxWKBCXVK9bJWlBBPHp8I= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=Dmr2S5qC; 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="Dmr2S5qC" Received: by smtp.kernel.org (Postfix) with ESMTPSA id 94841C2BCB4; Wed, 15 Apr 2026 09:58:25 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1776247106; bh=xciEod+z3wdD2YGCnrf8B75xzkRLnesJLO+lq+J7Tk8=; h=From:Date:Subject:References:In-Reply-To:To:Cc:From; b=Dmr2S5qCpItzoYZtcTSfzmwLgnsvq2rd3xTEWUSZS5n/RYy47XIWGijvpT0aFdZ4N eR7fKnFhSWuIgOA9GXocZDRAYe7QHc2mIeLyEC0htyca+8zn/MmF6jl/fX8XCIVcCd rRRfTT/D6qoDe4JyJUoNr6lcnuEgcUHomI1XORFOy1K9mqkjzxtC/b4vG0mQhdX6AS TWviKEIl6OKApmFIVghVRm45dvYtsn8MkhtXK3Aoh19qQGpYG7bqvwCtavoCl2Z5YY 6wfquOPpk4GWw832PHCo9bYFNWKZ4XGadokpxq/s/EXXDtzzj6QXhiALVjTQbdITMH bRecP4nGoIdgg== From: "Matthieu Baerts (NGI0)" Date: Wed, 15 Apr 2026 11:57:08 +0200 Subject: [PATCH mptcp-net v5 20/20] 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: <20260415-mptcp-inc-limits-v5-20-e54c3bf80e4e@kernel.org> References: <20260415-mptcp-inc-limits-v5-0-e54c3bf80e4e@kernel.org> In-Reply-To: <20260415-mptcp-inc-limits-v5-0-e54c3bf80e4e@kernel.org> To: MPTCP Upstream Cc: "Matthieu Baerts (NGI0)" X-Mailer: b4 0.15.2 X-Developer-Signature: v=1; a=openpgp-sha256; l=16621; i=matttbe@kernel.org; h=from:subject:message-id; bh=xciEod+z3wdD2YGCnrf8B75xzkRLnesJLO+lq+J7Tk8=; b=owGbwMvMwCVWo/Th0Gd3rumMp9WSGDLvJxqafmx8L2Ox4om09evCxFjXdwzbOHfUsi7/sObkr 2Cfd3mXO0pZGMS4GGTFFFmk2yLzZz6v4i3x8rOAmcPKBDKEgYtTACZSHcDI0NEsfUDQTFvaYd7H 57xCmnOtNpR+cTPjOJpp6DVP9HqsMsM/440XTx+Wuv6+f8dl79kv/B4uuVrTy8ZR3lGUZ/n5wX1 dRgA= 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 everything linked to ADD_ADDR. 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 | 131 ++++++++++++++++++++++++-------------------= ---- net/mptcp/pm_kernel.c | 20 ++++---- net/mptcp/pm_userspace.c | 6 +-- net/mptcp/protocol.h | 19 +++---- net/mptcp/subflow.c | 4 +- 6 files changed, 92 insertions(+), 90 deletions(-) diff --git a/net/mptcp/options.c b/net/mptcp/options.c index 4cc583fdc7a9..8282e666167d 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_add_addr_del_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 0bbb6054f0b1..3d6389c5fd5e 100644 --- a/net/mptcp/pm.c +++ b/net/mptcp/pm.c @@ -12,12 +12,12 @@ =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; bool timer_done; - struct timer_list add_timer; + struct timer_list timer; struct mptcp_sock *sock; struct rcu_head rcu; }; @@ -115,14 +115,14 @@ static bool mptcp_pm_is_init_remote_addr(struct mptcp= _sock *msk, return mptcp_addresses_equal(&mpc_remote, remote, remote->port); } =20 -bool mptcp_lookup_subflow_by_saddr(const struct list_head *list, - const struct mptcp_addr_info *saddr) +bool mptcp_pm_subflow_lookup_by_saddr(struct mptcp_sock *msk, + const struct mptcp_addr_info *saddr) { struct mptcp_subflow_context *subflow; struct mptcp_addr_info cur; struct sock_common *skc; =20 - list_for_each_entry(subflow, list, node) { + mptcp_for_each_subflow(msk, subflow) { skc =3D (struct sock_common *)mptcp_subflow_tcp_sock(subflow); =20 mptcp_local_address(skc, &cur); @@ -133,38 +133,39 @@ 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_pm_add_addr_lookup_by_addr(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_pm_add_addr_remove(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_add_addr_del_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_add_addr_lookup_by_sk(struct mptcp_sock *msk, + const struct sock *sk) { - struct mptcp_pm_add_entry *entry; + struct mptcp_pm_add_addr *entry; struct mptcp_addr_info saddr; bool ret =3D false; =20 @@ -335,11 +336,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 =3D 0; =20 @@ -362,20 +363,20 @@ 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) - timeout <<=3D entry->retrans_times; + if (add_addr->retrans_times < ADD_ADDR_RETRANS_MAX) + timeout <<=3D add_addr->retrans_times; else timeout =3D 0; =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: @@ -383,82 +384,81 @@ static void mptcp_pm_add_timer(struct timer_list *tim= er) sk_reset_timer(sk, timer, jiffies + timeout); else /* if sock_put calls sk_free: avoid waiting for this timer */ - entry->timer_done =3D true; + add_addr->timer_done =3D true; bh_unlock_sock(sk); 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_add_addr_del_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_pm_add_addr_lookup_by_addr(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_add_addr_alloc(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); - - if (add_entry) { + add_addr =3D mptcp_pm_add_addr_lookup_by_addr(msk, addr); + 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: - add_entry->timer_done =3D false; + add_addr->timer_done =3D false; 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 @@ -468,10 +468,10 @@ 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) { - if (!entry->timer_done) - sk_stop_timer_sync(sk, &entry->add_timer); - kfree_rcu(entry, rcu); + list_for_each_entry_safe(add_addr, tmp, &free_list, list) { + if (!add_addr->timer_done) + sk_stop_timer_sync(sk, &add_addr->timer); + kfree_rcu(add_addr, rcu); } } =20 @@ -725,7 +725,8 @@ 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_pm_add_addr_lookup_by_addr(msk, addr) && + READ_ONCE(pm->work_pending)) mptcp_pm_schedule_work(msk, MPTCP_PM_SUBFLOW_ESTABLISHED); =20 spin_unlock_bh(&pm->lock); @@ -1094,7 +1095,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 c75a2c29bcf2..174a760e7a23 100644 --- a/net/mptcp/pm_kernel.c +++ b/net/mptcp/pm_kernel.c @@ -374,7 +374,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_add_addr_alloc(msk, &local.addr)) return; =20 __clear_bit(endp_id, msk->pm.id_avail_bitmap); @@ -1054,16 +1054,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_pm_add_addr_remove(msk, addr); if (announced || force) { spin_lock_bh(&msk->pm.lock); if (announced) @@ -1099,9 +1099,9 @@ static int mptcp_nl_remove_subflow_and_signal_addr(st= ruct net *net, goto next; =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)); + remove_subflow =3D mptcp_pm_subflow_lookup_by_saddr(msk, addr); + 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 @@ -1237,10 +1237,10 @@ static void mptcp_pm_flush_addrs_and_subflows(struc= t mptcp_sock *msk, =20 entry =3D list_prepare_entry(entry, rm_list, list); list_for_each_entry_continue(entry, rm_list, list) { - if (mptcp_lookup_subflow_by_saddr(&msk->conn_list, &entry->addr)) + if (mptcp_pm_subflow_lookup_by_saddr(msk, &entry->addr)) slist.ids[slist.nr++] =3D mptcp_endp_get_local_id(msk, &entry->addr); =20 - if (mptcp_remove_anno_list_by_saddr(msk, &entry->addr)) + if (mptcp_pm_add_addr_remove(msk, &entry->addr)) alist.ids[alist.nr++] =3D mptcp_endp_get_local_id(msk, &entry->addr); =20 if (slist.nr =3D=3D MPTCP_RM_IDS_MAX || diff --git a/net/mptcp/pm_userspace.c b/net/mptcp/pm_userspace.c index d838e8ea65fd..704154de85ca 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_add_addr_alloc(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,9 +281,9 @@ 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_pm_add_addr_remove(msk, &entry->addr)) anno_nr++; - else if (!mptcp_lookup_subflow_by_saddr(&msk->conn_list, &entry->addr)) + else if (!mptcp_pm_subflow_lookup_by_saddr(msk, &entry->addr)) return; =20 alist.ids[alist.nr++] =3D entry->addr.id; diff --git a/net/mptcp/protocol.h b/net/mptcp/protocol.h index 661600f8b573..8ad60edf3419 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, +bool mptcp_pm_add_addr_alloc(struct mptcp_sock *msk, + const struct mptcp_addr_info *addr); +struct mptcp_pm_add_addr * +mptcp_pm_add_addr_del_timer(struct mptcp_sock *msk, + const struct mptcp_addr_info *addr, bool check_id); +bool mptcp_pm_add_addr_remove(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_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_pm_add_addr_lookup_by_sk(struct mptcp_sock *msk, + const struct sock *sk); +bool mptcp_pm_subflow_lookup_by_saddr(struct mptcp_sock *msk, + const struct mptcp_addr_info *saddr); 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 e2cb9d23e4a0..836dcdc3a620 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_add_addr_lookup_by_sk(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_add_addr_lookup_by_sk(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