From nobody Tue May 5 11:27:57 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 95D2A299929 for ; Wed, 22 Apr 2026 16:40:42 +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=1776876042; cv=none; b=jnP8K+oNUQbU+9oPQh7fIHA0hweMnHVLkPpB9Y4WHu6BtgCoRQjocFXEWmuX6aIXu3RpJhg/yxMvzccR6BbESSMO3uhGvdj6bf0i8VZ201h1/vfWInhDCAUz2kPPNzZYmX0Je1/wGZDw1/1E+6zhXDj+LNQt2UFYZPf4ipVUBDo= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1776876042; c=relaxed/simple; bh=qU2gO4U+rLHR/oV2lgldodaiCkxfghI5r1NFCTslTiA=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=oF58EMUXkSLT3N1AWcaxWaaA3n7FXh1rbsTLSlKQ0NCng6XjCWpgN6jWdzXLgYb8PwPjE8uvaXDN+9KlR4a3Mzu0hFFHix4TDP/gy8vUYJg/Lm7OXbEyUbSx3qBvIawWaf5o+mvK/gBm7VVqdAte7d9dOHtnzO4qZnIFAAkito0= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=snmP7txB; 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="snmP7txB" Received: by smtp.kernel.org (Postfix) with ESMTPSA id 0F5D9C2BCAF; Wed, 22 Apr 2026 16:40:41 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1776876042; bh=qU2gO4U+rLHR/oV2lgldodaiCkxfghI5r1NFCTslTiA=; h=From:Date:Subject:References:In-Reply-To:To:Cc:From; b=snmP7txBXguRf+sx0TEyHYX8/P1ChU7JU4JbvadKU8r3Gm1YE8kUHQwsPTq0U+hYq qTpOOW0FokJ+S2yl3qb2dAchVvk+/IbT76i32m6EYXWQtWqD1ycXOIRW6kb17+HuEc LMw/jxJNZ0dzNtD7M2SS9AVaoLOXEVkZpBoYOtgWpoRn2OxbSwUyMTmmDdgBCrowAZ sUDYg1oGa9OeYU3DA0SEwaEfl9c8qEq2hEMcxT5nsoDx8QWA0BcMEbLuqV7sdwgrcv MEF6BkVFiLTm6rey3ZcRbR3vYaOBnB2a+/Pg34DBhuk5hKGlZnpYklC2qT/DruAI4p NF5KfemwIFw+Q== From: "Matthieu Baerts (NGI0)" Date: Wed, 22 Apr 2026 18:40:15 +0200 Subject: [PATCH mptcp-net v6 01/19] 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: <20260422-mptcp-inc-limits-v6-1-903181771530@kernel.org> References: <20260422-mptcp-inc-limits-v6-0-903181771530@kernel.org> In-Reply-To: <20260422-mptcp-inc-limits-v6-0-903181771530@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/Th0Gd3rumMp9WSGDJf/PwVH1d5Tn5l3gnRQ9PPXG2p2c/z4U+/ZeKNlsvho hsPOXxa2lHKwiDGxSArpsgi3RaZP/N5FW+Jl58FzBxWJpAhDFycAjARzgxGhnmpEafX35RWb89g F86VuVAUueHHpPV2WYZfbX6szHKT12f4Z3W37d8qz45lJb0qCg+jnqlc+8tQbBfAmLZJcM3TILv tTAA= 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) Reviewed-by: Mat Martineau --- 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 Tue May 5 11:27:57 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 5266E299929 for ; Wed, 22 Apr 2026 16:40:43 +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=1776876043; cv=none; b=IBZBe+fVpM6XVMvZUBdBnkPRDjlqF/N0c+6ido2jqlTndVsBe0grcm+s/4rjhCG1iAPl2jAlb1R4wrkM9ZtguhCT2EcXm2dZJJhZUcT5MwoD2xoViJs1x0pvXYK2TjRxGLVXS46mlQJwBkrM52W4qCugVd4RoU4+3OH7EtWXwiI= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1776876043; c=relaxed/simple; bh=xqQ0XziJocJK+T47pPjFZrFCFv0UNP98JJxxWrafiv4=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=u4lIjbm+FAtMuQGIExrGrcZSVGCiJFiFF094DZg2+DCgvDKdmp2tp0AsWQgEwUeFr+vJ8hMC3GGxL65EHoACX+hJRhPCE91jEP5IRmD/yQPe94a0Mbl4s65G96Tw91jgj77Jtpb4CbKKTG2cEZOc027f60llDbfAslI/LzSeWFY= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=DLFZK+Z0; 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="DLFZK+Z0" Received: by smtp.kernel.org (Postfix) with ESMTPSA id CBD10C2BCB4; Wed, 22 Apr 2026 16:40:42 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1776876043; bh=xqQ0XziJocJK+T47pPjFZrFCFv0UNP98JJxxWrafiv4=; h=From:Date:Subject:References:In-Reply-To:To:Cc:From; b=DLFZK+Z0bsvnbkz7VtTyuo7ckttBNCEKcsq56gNVwecl7jVDnLcTMQbPywojiT/af UGtEu4Bc5DcvFLJYH3CqCiURZXwWjoxK56yGUSV+H3XOdQi+3sdiuBIhc2DDa4crP5 QLqfUIDdupN+yY8gt2aFz4C1Whj0FSgEprl2gTY7lNBm3OkoQHxCsqFFrB2Y8bC4wR CzsaSM2rpMrwGrNSuPW8vW1w/QCcjegdZWOp9DIMgM143hrXpd7TTY4WNdOh/9cZo6 ek7rA6BXZQyN1pSRF1TMyY2TQhuimuGMnDxW2tbmdgHbWq3/HF2yVCrSL36iGcTRZY h2K4tAyLLkS1w== From: "Matthieu Baerts (NGI0)" Date: Wed, 22 Apr 2026 18:40:16 +0200 Subject: [PATCH mptcp-net v6 02/19] 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: <20260422-mptcp-inc-limits-v6-2-903181771530@kernel.org> References: <20260422-mptcp-inc-limits-v6-0-903181771530@kernel.org> In-Reply-To: <20260422-mptcp-inc-limits-v6-0-903181771530@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/Th0Gd3rumMp9WSGDJf/Pz9qoyzZ5/c8hMxZ4R+Trlt9j2lLe/Za/V00Zo9g VO3SR542VHKwiDGxSArpsgi3RaZP/N5FW+Jl58FzBxWJpAhDFycAjCRlcYM/0yEmowOMm6KY77S G/lVwZizQNaGsUVPr3/trZa5s2afUmb4HxGaIezXfe9pruzMRZbnbA4f4qqLe7ZFquRvK+tUVr9 qbgA= 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) Reviewed-by: Mat Martineau --- 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 Tue May 5 11:27:57 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 5AC6B365A0F for ; Wed, 22 Apr 2026 16:40:44 +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=1776876044; cv=none; b=Fgpcyp2itll7KPa9JF+BYAY3kblP6RNaCqAUXBeybeO3wyDthmw5hxJEQ4YY01zYGcsD1+t3VZPGeswuRjkWsnr9W2wuSwJtj/575nijkN6QitWLhAIPiJP1aN8DRy2aQW9c4L6Z9GLCMwOyyOpfktekiFuzdGlvWGBpyQ2cMg8= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1776876044; c=relaxed/simple; bh=RjhEZ4Y9dGN7dl5bP4at23CWIzyuoWHqJdbVn30LIas=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=p7LKKyb/raLAsJWr87u7K4aq0+jKMK5vE8YlCZ8qPT49FQtjL2sMjmoCKSMYfwmXC6TC1jxfgFASjwWStJlW6RBIb3pL9YmgAcC5EkwTyd4HJJEq3QxuDKQ7coJUDmYCeVFyCImEVkfRTwieulwxM7gP+EvOWvyezrptLFho3l0= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=F7lYvQUq; 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="F7lYvQUq" Received: by smtp.kernel.org (Postfix) with ESMTPSA id 9390DC2BCB4; Wed, 22 Apr 2026 16:40:43 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1776876044; bh=RjhEZ4Y9dGN7dl5bP4at23CWIzyuoWHqJdbVn30LIas=; h=From:Date:Subject:References:In-Reply-To:To:Cc:From; b=F7lYvQUqBpdaL1ZCYn3mPO99mDDjtO60DFLvvzFfUENyhrLGlT1yB1qxOd8gWri3I ysSrnutRLDR1/1ElBdIEn5OCNPdYDoboJuCLrxmJib++23r1y+inos7+xE6FNX9IhW 8UB2xeV3oEBTkhjL6oKtdAuebK4lKJwmbkKPOp0DSKbppv9EWtj9ygHpigZjhwkTSH OyGCXDwGlGfLDNvGroSM8BgndRFUMQPyvLxPpIlyeLRO7aduQhZWCwc5NIFfQym0XB nEUx0qg9nxtfTpWf/P7jfpEGZtsbWWiKsqvsiUDzsA/IMlzcAVZsjVtI5/kfC/aDGN ZHbAIw9anZ4PQ== From: "Matthieu Baerts (NGI0)" Date: Wed, 22 Apr 2026 18:40:17 +0200 Subject: [PATCH mptcp-net v6 03/19] 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: <20260422-mptcp-inc-limits-v6-3-903181771530@kernel.org> References: <20260422-mptcp-inc-limits-v6-0-903181771530@kernel.org> In-Reply-To: <20260422-mptcp-inc-limits-v6-0-903181771530@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/Th0Gd3rumMp9WSGDJf/PzTmbzM4fmFxSu2/dsfUfKuu69uX/SKd2naFvVzD r/jOLj3TkcpC4MYF4OsmCKLdFtk/sznVbwlXn4WMHNYmUCGMHBxCsBEJEMZ/il7LWhq0onfVsjP phBy4UDu0pUJk/8ytLcGHjj9JzNRaz7D/2yvjnttcf0cN8499J3aYrZ/SqWLnqE/59ytEh3Tr/o mMgEA 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) Reviewed-by: Mat Martineau --- 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 Tue May 5 11:27:57 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 D5926365A0F for ; Wed, 22 Apr 2026 16:40:44 +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=1776876044; cv=none; b=gaIBXQkcM2towRqU1YqjNMhBXkDy/cEq3CIRWVPDyxS8T7CtFgtMReAW3N+og8Jqz6Uf5V2cp4wFt6mjbRPIYGrvrVSk83H9Ib0LhR/CBdykSYRcNQai5a8bxB5W+xWK3v56e0UZmytsEhfZjKrPRujcOYAxr2bFsYKzXkC833k= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1776876044; c=relaxed/simple; bh=YaUoNwWc4T0lMld1JWK+eGKwdSoPd1hIyBf1vdS9WYM=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=DFhyNSoYhjMq7BAnAC1TYj18zPeY1jaeQMasvc1BdwW72FQpUJ1ZsKSIWR+gSZqEyuA2B0QolNKwqSwOypChmOgAXw52VFJtbjrjRtnuHhzpqzUMbsMr1IkW5VsDqtrH9LyaNfCB6bYwtrq75I4QKEcQTXKYG762OvxcEtY23rg= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=aihwJI8m; 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="aihwJI8m" Received: by smtp.kernel.org (Postfix) with ESMTPSA id 5B47AC2BCAF; Wed, 22 Apr 2026 16:40:44 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1776876044; bh=YaUoNwWc4T0lMld1JWK+eGKwdSoPd1hIyBf1vdS9WYM=; h=From:Date:Subject:References:In-Reply-To:To:Cc:From; b=aihwJI8mx3iZzqGB9bnNzWUOKbv4TNmMcz2DI8w/1z4m02btq29uitqPEpGh8U3S2 xUJUWN8V1BSNQbUcXDERTLcrrbo9Sy2vnuI/ik0FYEPOiqOxw2chwtUxU30HXz70N3 jMabG1uHr5R9OSFXUAmlBt8WK5cM6yIVhYC14IS4DKoLBT4Wo09RuJKylUBddlrgbM 2SIcgIgiYOZONNZzyoYzJJUZhH2JBZS4kKW+jRPCjJCizs1upWnJ5PfGJ38KsQTDCZ BJe1o2S0lzENqtmAkufpQt43H9G1xB6bz0W2o6xNbGBMk4vpJsR3J83A3DVsAVtsAM EYQH/2mVpMGfA== From: "Matthieu Baerts (NGI0)" Date: Wed, 22 Apr 2026 18:40:18 +0200 Subject: [PATCH mptcp-net v6 04/19] 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: <20260422-mptcp-inc-limits-v6-4-903181771530@kernel.org> References: <20260422-mptcp-inc-limits-v6-0-903181771530@kernel.org> In-Reply-To: <20260422-mptcp-inc-limits-v6-0-903181771530@kernel.org> To: MPTCP Upstream Cc: "Matthieu Baerts (NGI0)" X-Mailer: b4 0.15.2 X-Developer-Signature: v=1; a=openpgp-sha256; l=1376; i=matttbe@kernel.org; h=from:subject:message-id; bh=YaUoNwWc4T0lMld1JWK+eGKwdSoPd1hIyBf1vdS9WYM=; b=owGbwMvMwCVWo/Th0Gd3rumMp9WSGDJf/Pxzv+C96eFN/AuXG/2sZLLay65lqPJ2A5vPpo8JE //cPfzsY0cpC4MYF4OsmCKLdFtk/sznVbwlXn4WMHNYmUCGMHBxCsBEWtYwMtw923flm+mOiS4v voiJn1+Ydjkg/XrwhG3nM4+UrJNSXc7G8D88YGHq7wObT3obGXW23Si+dvlgxYpjbs7JXauZmWU TTbgB 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 a new 'exit' label to call __sock_put() (which will become sock_put() in the next commit) 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) Reviewed-by: Mat Martineau --- 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 Tue May 5 11:27:57 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 B31912E5B2A for ; Wed, 22 Apr 2026 16:40:45 +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=1776876045; cv=none; b=Qtl9uTahQgsBayMCka3u2A6gVDCrhlEx8fQMhcKXWDh2WXXftKa/EJdIKvx8KVBdI5WGs+xz8R19DtRODM+9KXyDZxOdxkdEHqMy74eI1tnYBSmsPJsH21Htu7fpJesVU/zhEeWg80flZcD2H+/fzQDc+13pnq0u2UA8UDauN4Y= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1776876045; c=relaxed/simple; bh=ow8OvRYg7xBe9n7Ww6xKj+DPj4K1OPsCTGuhPmFSH8s=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=W9WGx/g//SABDrf/xcKZNJhPNRk91TZEMkhUU33ArjV8a9JWldU0GDYBqicVPGrIMfm6kCT9O9OwPm88VMHdMu4F157q4bKm8YghbFMzxRuGGcqDgBZi9hBwh13JCDXDGfIZaxGgOQPaHmbaIoW18aU6naMc37N7Wfgn9fVOiHI= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=Shea0MdC; 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="Shea0MdC" Received: by smtp.kernel.org (Postfix) with ESMTPSA id 2314CC2BCAF; Wed, 22 Apr 2026 16:40:44 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1776876045; bh=ow8OvRYg7xBe9n7Ww6xKj+DPj4K1OPsCTGuhPmFSH8s=; h=From:Date:Subject:References:In-Reply-To:To:Cc:From; b=Shea0MdCHMuP4Y3f7LXlBnWFAx96sXAFW2YLGn3eq6ERFKgQGVViw/i+m2NKflHIe lAIqw5g2kq4+DM43zwq7og1y+/cjH8OobUHIPvwA/2B41j5x+SqGJBHagK8LxJGm7G uG1N8YAuPATaQTkaabww2MrZb96ow3eo6Cx88L0LKXRv7PTwlwQAi2oieF9/mbB57p xLIOmo0CpeOOM4lrho7eysqU5O+Yi4R82aF+IkDcyY5nGf2NgYacpLzkpy58lTyyZT DrGWvAc/uRsvOJQzj+IuzpoLVFM32ADAuKE5fEi39sNroEyTk54IqcJ9YQ+IA7f8CR HP7msoT9KDO/w== From: "Matthieu Baerts (NGI0)" Date: Wed, 22 Apr 2026 18:40:19 +0200 Subject: [PATCH mptcp-net v6 05/19] 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: <20260422-mptcp-inc-limits-v6-5-903181771530@kernel.org> References: <20260422-mptcp-inc-limits-v6-0-903181771530@kernel.org> In-Reply-To: <20260422-mptcp-inc-limits-v6-0-903181771530@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/Th0Gd3rumMp9WSGDJf/Pwn+WHWFle1k3oK4iq99xQYc3Rvb0+x7rdvWWLx1 fdE1AK/jlIWBjEuBlkxRRbptsj8mc+reEu8/Cxg5rAygQxh4OIUgInYH2D4ZxmRY3c0YuOnJYw5 M9fVLGARWsd/m/GRxoe0VY9ntZ7Y5c/w30Vt9qqbnz40xnc1PdD+XtxTZmXYaDL/mp54f7E282I 5NgA= 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) Reviewed-by: Mat Martineau --- 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 Tue May 5 11:27:57 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 92B0F365A0F for ; Wed, 22 Apr 2026 16:40:46 +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=1776876046; cv=none; b=b16r9W9K73mpkTHB6e363E3SeQf2grTN4Q5i8gYayxn/p5x0SiDROyLR+J7KJSCsEqVfuHmOfuW9L+SNEAh6+ZYueWB3WGOrfoiZZW+ac7bD/Ai9fApRfGYiNk2ToI79aa2biYCpNdh+R+LlPMU+tUszVpWB005uRrmlIw/3aGg= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1776876046; c=relaxed/simple; bh=lHgkh0RL7ozwznfonwI1qORd+8z2EfSEMnbedFbtXd8=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=XTykUOY7EILX60JWIqtRFXRKNQynQL+SZCyukaq6Vc6z2L+aff1JdeQtn4s+ftH4lgUNF0oXIp8panGGHiRxIVMcwS9oEbsJerCP+jFqJXFROw1TOaj4GoKaIX+oktUgXPW+nc0VuB4KRAipXTybRFP5ryfFUKfuMnDBKnMBCLo= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=rVaQMk9t; 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="rVaQMk9t" Received: by smtp.kernel.org (Postfix) with ESMTPSA id DF0D9C2BCB2; Wed, 22 Apr 2026 16:40:45 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1776876046; bh=lHgkh0RL7ozwznfonwI1qORd+8z2EfSEMnbedFbtXd8=; h=From:Date:Subject:References:In-Reply-To:To:Cc:From; b=rVaQMk9tHZN42egnQOq+2EXHPnE8+GL0TJpbWeZf5DBSjMv9YInvGkfHnSidEyoKo aDpJxzT4COo/WQMy6ALLPwb2qhe5g5C1ciZ8KYuNzQOfZeLmVSwrcS3Uhw5GoXua27 43zrHtFHuOkqIU9GBKNkWppjX7SJPAPduFXJrntzsvU9WDoVjbXoeuX8d0qr8O1o+x Cub5afAf4sEim6ruh4ArPltZOj7xVJH+x1S41vKQwpwKahhNanLlTNdLrJXNrCLIb4 55f+Aq3QOHvLItlPUX1850vgO3GnoQJngT9TH1VB/WXnwPua+Ww5gV/LYsJVrf8g8E g/cObhq8CiszQ== From: "Matthieu Baerts (NGI0)" Date: Wed, 22 Apr 2026 18:40:20 +0200 Subject: [PATCH mptcp-net v6 06/19] 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: <20260422-mptcp-inc-limits-v6-6-903181771530@kernel.org> References: <20260422-mptcp-inc-limits-v6-0-903181771530@kernel.org> In-Reply-To: <20260422-mptcp-inc-limits-v6-0-903181771530@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/Th0Gd3rumMp9WSGDJf/Py3dm37T3637q//5L1ltnakywQ4lLNPNb/JXRyx0 zvMMSmpo5SFQYyLQVZMkUW6LTJ/5vMq3hIvPwuYOaxMIEMYuDgFYCL7FjH8ZuWRfHI+7PVyE1/h pCoh0VRVB8nPnw3+JF3ZrTp9DlPQHEaGDXUOU3yllyVrPfKJ230qw0G3bRfTRtujq5RKGkN3Ljz FAwA= 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) Reviewed-by: Mat Martineau --- 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 Tue May 5 11:27:57 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 810D333F8A4 for ; Wed, 22 Apr 2026 16:40:47 +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=1776876047; cv=none; b=Fl+zVgTJ9AG5VZ3Spd+ryrHgCVsuB/0ueVT75NnFWUhFfPQANyn+hZ7bryOfK74CnnlRZAgnKOijeFN7CYcWDFbb872oqGssLAzqWFpggZPDjf/jjxDsImrtcNvVeWQx/rMR/q89917sqosnnYkji1QocXnWB9Vy0eXqvjY1pkM= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1776876047; c=relaxed/simple; bh=yS+WHxqbP/ZUNVAFxnK75Z9fZRdTlzuHRSWo9CdKbsI=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=V8gEWwYaZRsqSkqhZRItnEXJyzGv6EEsFqi9kYf+zPbWTWfm1hQnzBTR92GMXfaoDwg+pof25qJrQF/4RNQx+o2dRRvzatma3hzkdEME30IIrAc/0CJPLzMOAymMuH0vn2zGsaxE9iRu3E3X9+EGKkxAgdho7/KEaAkyZdfIWgw= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=Mn3QTPBz; 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="Mn3QTPBz" Received: by smtp.kernel.org (Postfix) with ESMTPSA id A6D2EC19425; Wed, 22 Apr 2026 16:40:46 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1776876047; bh=yS+WHxqbP/ZUNVAFxnK75Z9fZRdTlzuHRSWo9CdKbsI=; h=From:Date:Subject:References:In-Reply-To:To:Cc:From; b=Mn3QTPBz1Nul5ukfzBMKivb8IBd++eYZ8UaAnyB8u7RZs5pZwkUdpTV6Rv3KTQvy7 AAe9ZkEqUTjfywSmVM70HLM/MIcbZDl7aPcpilNiJ/6+br+Y4DQRgjrrJ585IKFEBo +8N2VUSHGQ0nOFGSNAhspFzb55KAuozIbXNHZBMNe6rMqAOAG9cxox0A36P+79wzTg +mMmzJGlXMlzfjPxwvlI0tp1f0i/pkO3n1/l6RHla/y5khvkhOV6/U/r+tqo5WHVyP vCrLjoXDRoHZn9w0sW+HEyFmK+7rPXI90OfFOn+y7c7UFd5IPt4BqlQEcRVUikuZ2E 8JaLwoYM05eTA== From: "Matthieu Baerts (NGI0)" Date: Wed, 22 Apr 2026 18:40:21 +0200 Subject: [PATCH mptcp-net v6 07/19] 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: <20260422-mptcp-inc-limits-v6-7-903181771530@kernel.org> References: <20260422-mptcp-inc-limits-v6-0-903181771530@kernel.org> In-Reply-To: <20260422-mptcp-inc-limits-v6-0-903181771530@kernel.org> To: MPTCP Upstream Cc: "Matthieu Baerts (NGI0)" X-Mailer: b4 0.15.2 X-Developer-Signature: v=1; a=openpgp-sha256; l=1804; i=matttbe@kernel.org; h=from:subject:message-id; bh=yS+WHxqbP/ZUNVAFxnK75Z9fZRdTlzuHRSWo9CdKbsI=; b=owGbwMvMwCVWo/Th0Gd3rumMp9WSGDJf/PzP+H2n4arHT15+KH2SeG/GeuXDG6dt8dz0/+Gps jilF4l+gh2lLAxiXAyyYoos0m2R+TOfV/GWePlZwMxhZQIZwsDFKQATaUlk+MP/dlEUa3DYgzyD ol+r+6w1T2+IeXz/8cHriu/U9GeyWF9jZFj9MrvO5vCKN90Rv6SemVzv6o5YOa/WVd5xn9vXWp2 zVlwA 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) Reviewed-by: Mat Martineau --- v2: restore accidentally deleted icsk->icsk_rto > max check v6: use min() (Mat) --- net/mptcp/pm.c | 18 ++++++++++++++---- 1 file changed, 14 insertions(+), 4 deletions(-) diff --git a/net/mptcp/pm.c b/net/mptcp/pm.c index bc5168831085..94a8207e51e9 100644 --- a/net/mptcp/pm.c +++ b/net/mptcp/pm.c @@ -306,18 +306,28 @@ 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 min(max, rto); + + if (max_stale) + return min(max_stale, rto); =20 return rto; } --=20 2.53.0 From nobody Tue May 5 11:27:57 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 0105D33F8A4 for ; Wed, 22 Apr 2026 16:40:47 +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=1776876048; cv=none; b=Xxylvv8bTKM+wik/mfC2/bKFS5ZZM30xXaPJ+oJ8GzZF+RSC2418I1zAhuLd3IS8F6y9FLBXAT0I/Hme2u46qI6J35VQomUPG0BGM9a2cuV7NoiFOwhA99wkyD6rX41h/loNPB/+B3uf76wOCPaXAE3X5Rd73FL3d7j9kV653RU= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1776876048; c=relaxed/simple; bh=raxpXv46g7sbLlroVfKf6RTRy4aOVTAkmVXViKNSRJM=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=cc+5Wyhe+g1GpQAyWb0vT+adetRZyOFLU/AkXroQK1svA1co81pjXmZ5BPmTWK69+C81Z11qPeqJEhOgirbb/M8AjvXuJVM36Ajy/c60TpfKy/s1F5ji1aHY9FvFhGBCxzoFUYUhLPYoc0OOrZrX9/YocAgf1/s3XeQSJUEWevI= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=jQlZ66bn; 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="jQlZ66bn" Received: by smtp.kernel.org (Postfix) with ESMTPSA id 6E49AC2BCB7; Wed, 22 Apr 2026 16:40:47 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1776876047; bh=raxpXv46g7sbLlroVfKf6RTRy4aOVTAkmVXViKNSRJM=; h=From:Date:Subject:References:In-Reply-To:To:Cc:From; b=jQlZ66bnvQTiNyipueB6BBQZVyzqRLcD0A2EtIFK6pYY+kBvKe+ovSM5SJ5hMFrhH dmsJguVWHZ1Tk0JV07TDkt0h4ZzrEmR11ZMErSyL5LvLyMqSZZdI6ee5smBWfW0WGR HJ4i2UyreGlX6TsuPlzF0XvL9oXtq7lUVwv8+0kW28419d6GR8d0FoZf1+j2uQlclU oWnTBiOWp/MMQO0V83dbKRYvPtjA0xk4aS0Dlq0hmacrum+DG6ZXwEuKYqFaom+r6g 4AeQ7chuRI4pY3c1APzQeY1tBQihjPSKy1pyIoBFLQoufQ06Sn+X0Vikr2SDzQG8Wh YzRgwB2g3XRgA== From: "Matthieu Baerts (NGI0)" Date: Wed, 22 Apr 2026 18:40:22 +0200 Subject: [PATCH mptcp-net v6 08/19] 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: <20260422-mptcp-inc-limits-v6-8-903181771530@kernel.org> References: <20260422-mptcp-inc-limits-v6-0-903181771530@kernel.org> In-Reply-To: <20260422-mptcp-inc-limits-v6-0-903181771530@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=raxpXv46g7sbLlroVfKf6RTRy4aOVTAkmVXViKNSRJM=; b=owGbwMvMwCVWo/Th0Gd3rumMp9WSGDJf/GLY1G4Y4yF5oUo4sMV7AcP5IxacLfNq9O7KHU6do 7vCSj2+o5SFQYyLQVZMkUW6LTJ/5vMq3hIvPwuYOaxMIEMYuDgFYCKS7xj+yr+e/Zp57j7bp9Uf 0vod8iIPHLBfZVN98Jt3E/On+QaqXxn+17yblfLWsJp9cbXcFovupX3xFXa+PCFl5w64ftohJnq ZAwA= 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) Reviewed-by: Mat Martineau --- net/mptcp/pm.c | 3 +++ 1 file changed, 3 insertions(+) diff --git a/net/mptcp/pm.c b/net/mptcp/pm.c index 94a8207e51e9..a75889f3dac7 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 Tue May 5 11:27:57 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 B1B7533F8A4 for ; Wed, 22 Apr 2026 16:40:48 +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=1776876048; cv=none; b=ZeN4E1UfmdqK9svfAnNHgyunXRpWTz8aWQ3qfUas/Jens1Sv3cLf/wtb8gxj9mx5GAGZTE2sDxP51UDHOMpfl1aDsGXNT8iOtTfZtAYxzaEohdv1QJuKfHrulhuelmfpPwPrqD3RBGbAkklb5sWh4hpfROrbKTzfhbR9x4+AOHw= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1776876048; c=relaxed/simple; bh=iJoP4vKVO48G2P6KgonaMravUGh31g+oVT+0EV2qXV8=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=jjWKwgSiyjfLtrlNwg5bYw50GtIItDUgGhV2Z0Jp1loOLYkMhGPiqGBO2JHmJkE11o3TVUFm31NZOP6KdTXa9VMCpyMMQ7GoZJfNvWNqIEsbQfzZDW7/yLYWozAq86+VBLruJ2qPNcNzjTaM+s69xVId4Pv1nFimBTE87N+PVEw= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=hmSAZod7; 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="hmSAZod7" Received: by smtp.kernel.org (Postfix) with ESMTPSA id 35FC5C2BCB2; Wed, 22 Apr 2026 16:40:48 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1776876048; bh=iJoP4vKVO48G2P6KgonaMravUGh31g+oVT+0EV2qXV8=; h=From:Date:Subject:References:In-Reply-To:To:Cc:From; b=hmSAZod7WR2I5bAx8SInfEbY7rIRLch4nHIEg8LnDVbpFpmkcLGeIrawh15DT8GDp qUc6xL0fB9a7e1JVAuH//mz6huAD2G3ZiCz8aNdNBplYa13r0Qdryskv3jtaVyRDpe o8xBre4YCmRZ3lrUl348m3niGWJjtOr9Xymhk1tJFxsREo5iG5giOkJ7FebTjF5iqK SF/USUa/MgextySXQXMBu3PwgYp+NN/GwHOT45rlo3AyPPrzAvb/NevKjFRzjLv+wi 5M5Cqmxa2fxYcb6XRCg4VAxif/1ff/py6yuJYNtPIKnMG94cuz/xiiYVUauz7nrM/r ud1In3R53W2yw== From: "Matthieu Baerts (NGI0)" Date: Wed, 22 Apr 2026 18:40:23 +0200 Subject: [PATCH mptcp-net v6 09/19] 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: <20260422-mptcp-inc-limits-v6-9-903181771530@kernel.org> References: <20260422-mptcp-inc-limits-v6-0-903181771530@kernel.org> In-Reply-To: <20260422-mptcp-inc-limits-v6-0-903181771530@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=iJoP4vKVO48G2P6KgonaMravUGh31g+oVT+0EV2qXV8=; b=owGbwMvMwCVWo/Th0Gd3rumMp9WSGDJf/GLkPuJzu3rBvZyvIkEv3m0xDq8tcq+d7aW16qfl5 jVp7ifVOkpZGMS4GGTFFFmk2yLzZz6v4i3x8rOAmcPKBDKEgYtTACbiIsLwP23FLf28ouBzC+N5 +zKPMsczLehIeHL+2/qzhqlr2IsebGJk6G5yWHag/nW32L0jUz9s/3Hj+wuVR651a3P//D9ckZX 3lgEA 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) Reviewed-by: Mat Martineau --- net/mptcp/pm.c | 3 +++ 1 file changed, 3 insertions(+) diff --git a/net/mptcp/pm.c b/net/mptcp/pm.c index a75889f3dac7..10df7c0aef38 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 Tue May 5 11:27:57 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 AB7EA2E5B2A for ; Wed, 22 Apr 2026 16:40:49 +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=1776876049; cv=none; b=Z1H8u/xW/mMXSZgnL/1oK5Q737RiVvlEfHSWDJnJ1JhkhFo+48RpQhEab9KSn4hjjjP26kvclludslksqBDZe56g6s4Swd5XY/35P6VNWosaX9vkz8hoDKecyB+bWzeNxHJ4IwyGhV63172goZ02GcQlRG2gUSDaYRqbUCUKUcA= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1776876049; c=relaxed/simple; bh=4iemWZyS23XFlX1CT3kuENuF5DWJNQBzNrxo6eWgvYg=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=qaeaqgmUVYc7pSM7KrN6XOj9gKlkvka1yqULkrnZAQ57L7p6fFgswX2nONedQyMTja5PU+kqs2ArbuhKb4W3ve05mk/FhzrVHIE2/xnDKCFe89S2vNFSTBb/B9O2yQe2WDKVTdsVwtkP/h2xeKfqjE538wiPI3iYOk2oOEx3/E0= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=NeD+OR6x; 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="NeD+OR6x" Received: by smtp.kernel.org (Postfix) with ESMTPSA id F1CC9C2BCAF; Wed, 22 Apr 2026 16:40:48 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1776876049; bh=4iemWZyS23XFlX1CT3kuENuF5DWJNQBzNrxo6eWgvYg=; h=From:Date:Subject:References:In-Reply-To:To:Cc:From; b=NeD+OR6xm+pOytO3XYZ1mjQg84LYnMkFF8MnWWNedYzyhMC5zckKNl2B2+4wTkgcX ijgZ1hQJVJUmjJGrRAXWB02z1iscflBGz3NvWGyWFiDWXUdnKRCznKIY/zobJ5hlkm lVbq1K2AThDe9vNuSbSjtXqdRTiWXaKq8Q0cezNAIOLqbyzgiVeYN8iaay2hL4Zvih 1i9LTyQ2MjVNnmM1Tb8y+xvZG+ZMTFf+cp7g4Diuqf8iEYI5HpnCBgJ4EsYo89F6rc m0NUHZ3QcKJ6xN9GcvFTOzyYB5hi5mdrIIcjVDhKW0yWs+Td16SSIsm66Zb578udSC 5DojbV+YdLj1A== From: "Matthieu Baerts (NGI0)" Date: Wed, 22 Apr 2026 18:40:24 +0200 Subject: [PATCH mptcp-net v6 10/19] 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: <20260422-mptcp-inc-limits-v6-10-903181771530@kernel.org> References: <20260422-mptcp-inc-limits-v6-0-903181771530@kernel.org> In-Reply-To: <20260422-mptcp-inc-limits-v6-0-903181771530@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/Th0Gd3rumMp9WSGDJf/GLs/rsvcFfJia7vvqK+xfOLihtPFu9mu9D3VNGvq VHCaUNURykLgxgXg6yYIot0W2T+zOdVvCVefhYwc1iZQIYwcHEKwERSpRj+iqgfOhT5PWBfqUhG hrjHlbmTtl83lDx3nW3eHpY/H37UPmFkuMn9wn167caCDe99slymsGv9fWawxvy2pX2/3sFdR+c q8QIA 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) Reviewed-by: Mat Martineau --- 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 Tue May 5 11:27:57 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 6A02237DEAA for ; Wed, 22 Apr 2026 16:40:50 +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=1776876050; cv=none; b=fBUS46RT3YcOnccLl09BW0bVRWnr5CPkpXqwtZJN2aYovH46L1lYlq+AqSQgUe7nU0qLLjl+iLwRbKflR9mZyLHTy9lk7xD27g/SCilmrBGuVQAQhaSGIaf8yY6guJn4ztcphb8DCXWxGFJ9kNGncdbW0MFo4RaQcKFMKeSxWHs= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1776876050; c=relaxed/simple; bh=+ZtDau8ZaxURdpqy1rQ9ybBeaerSVZO1gNen80NZM8E=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=ECTBc5ueP0a/AOk6pCCaJL0F7rXYDJoFYyHoH/nJxWLXaKbkLjnIH4U4NMVFcwS3//ZMjp0WPnfwq5dB8weGZltJoKR8TP2Hi+Lz6hCFkNqqwLWCe3crwSzE5zSNn5R04xW4Ivoh/xAN1uCIm9oECF4cH6oUxXLrvs9nV/R4bDg= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=J8fW2zaj; 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="J8fW2zaj" Received: by smtp.kernel.org (Postfix) with ESMTPSA id B9B32C19425; Wed, 22 Apr 2026 16:40:49 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1776876050; bh=+ZtDau8ZaxURdpqy1rQ9ybBeaerSVZO1gNen80NZM8E=; h=From:Date:Subject:References:In-Reply-To:To:Cc:From; b=J8fW2zaj9pFo54RNmgEL0ERcRrj8pxqImRIH26mw5JapUO4M/iyhY695/q41zNJo+ 1zAWXrYZ8i3arvgl4P8yqqpStl+BXMv4HiolSNUDYNUPfXxoeZFV18E2xzzfzan1Cs Ti2LgaEkdb2ZU3b4oiOm4z0U0u6coCvNHlQHvDtwclegNPck16Rq3abSzycfyEwAyk zWtDPbEP10FlGUgHiT2o7nWjEdTcxp8eLlOACjoeONH5Cf5Zn2lADrFNSopvfOVB9g VgL1Hm0BJpVa8Gz2Fn5uvTOp2fu10tLKnHmSNmO0vuZ4IRHsXpo1s0TDTbIPriJcWZ WLRnXg/CQxwPw== From: "Matthieu Baerts (NGI0)" Date: Wed, 22 Apr 2026 18:40:25 +0200 Subject: [PATCH mptcp-net v6 11/19] 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: <20260422-mptcp-inc-limits-v6-11-903181771530@kernel.org> References: <20260422-mptcp-inc-limits-v6-0-903181771530@kernel.org> In-Reply-To: <20260422-mptcp-inc-limits-v6-0-903181771530@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/Th0Gd3rumMp9WSGDJf/GKacO7EsVuH5ubNfh7xM+pjcsbbqAurww2mBotG7 D5s+sVqZ0cpC4MYF4OsmCKLdFtk/sznVbwlXn4WMHNYmUCGMHBxCsBEBG8wMrRrlu6fOK/4cNzM WQfvP/ixrVw6SKNC1ndt0eQcz/kbH5Yx/E/bssWwb8PTDgWHG40HUr6HFp33j3uw4eL/9yIf1Pb F/uMFAA== 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) Reviewed-by: Mat Martineau --- 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 Tue May 5 11:27:57 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 28F2B37DEAA for ; Wed, 22 Apr 2026 16:40:51 +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=1776876051; cv=none; b=Wb+FImxAMpn2rgNGnzwe6XvViiW9n+gba+nfDDfi/L3gi6JmqdmRC0o1p5uX0BwH6At7digbt6I2YS8VEyzlC82S+lcP2Ju2kaHmuG18Rkv6qRVMeiYQU9VJK0sGSvq3A5g8vNvIqVtFIE4evD+ruvG7+ADjCAvV7mxxovOSEq8= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1776876051; 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=bd4pR2e/TWocesqFOce+0FY5UH1TEaJk+TF2vFx1fafhL4WweDbjlzUItezJ1tFrkK7WHExOOfv8PXPF2WFLj1R760N8Ojs5A3FO1Nu/Ul0JoFzXN5eZsQQxVpKDMotTVjA0a+Ew9TtGtBS479j83tsmmjoewU4NvT1n5UFUnn8= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=RTy/TF1k; 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="RTy/TF1k" Received: by smtp.kernel.org (Postfix) with ESMTPSA id 8187DC2BCB2; Wed, 22 Apr 2026 16:40:50 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1776876050; bh=JfovlaL/U2Cz15YP5/ltVy2OQ6r/tYSTUof7MUBhiNc=; h=From:Date:Subject:References:In-Reply-To:To:Cc:From; b=RTy/TF1khsOurjIOYwwhNCjTBmhs3lW8SXYlHtsdbps5/tYqQAOhcs5NnEqjQbRSe 9YoEHawzuGyzXL2PybR0E+pLT9X7KvYR4C68jV7h5+2atKJiLQ8aDbWs46r6ysiiwP Vy2LfZArkKjU14rJnjSuvnKSBCmQCf5/9LtwexsQi9uckqfrisir+gkHO68lBuw1oL 8V+mh05OsjClI7VjyG/mgXyqmKoE1GZ9GHxGKJQNVUNbb1tu0KzA5QEbyiarsV85N7 ii3MAfvH6Lq2lN1lQmMQqz1i7fksQibSQykEN58WbSAl6UrIWgAC4nicxpIoN8xtdq bAk/iuNbM+4bg== From: "Matthieu Baerts (NGI0)" Date: Wed, 22 Apr 2026 18:40:26 +0200 Subject: [PATCH mptcp-net v6 12/19] 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: <20260422-mptcp-inc-limits-v6-12-903181771530@kernel.org> References: <20260422-mptcp-inc-limits-v6-0-903181771530@kernel.org> In-Reply-To: <20260422-mptcp-inc-limits-v6-0-903181771530@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/Th0Gd3rumMp9WSGDJf/GK+Md/hpmjIP8aUIy9ubT2VHbug9urnpPd1abIpj EpZq2b5d5SyMIhxMciKKbJIt0Xmz3xexVvi5WcBM4eVCWQIAxenAEwkp4Lhr3xpppvhStf8u288 LHi7suzro8XT705dmcprUHx+B3OZKsM/HT2Pf7uqslQ9g70kpuV+TjT68+/Bhpo651X5YZ883z5 lAwA= 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) Reviewed-by: Mat Martineau --- 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 Tue May 5 11:27:57 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 C45272FD665 for ; Wed, 22 Apr 2026 16:40:51 +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=1776876051; cv=none; b=thRtCemvnEp6JkU4gWYwC6HrVsKnczGuab/V2aiqjFLlbqkmCxKTvpYW/eAOLOGFzqCXkG5h05iwZd2sjdPqQXUNmW0y34yGF2qBwjg5W6LRDNEOXoCwBWhJ/e6ox0ohld/gHksUFeVV+sljaSy2Id99hY6ifCyNvPSSk1uhKtA= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1776876051; c=relaxed/simple; bh=geg3i+AZ83UdjmswHRjfvGyLJA3VdBH2mrx+q6p2fj4=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=tVUmA9ec2xOGudMiWO3yLzXBg3qQQenEQyY1IHeMOWI4uWLMoZ6KbN67yPyvpubB653VELhwHPkCt1Sdr07wqlWI4GWqWJ+xlqulplEVvd6EZHRYvas9qwb7RlwImE4ki7jDy1UAylEbBDTmZWOOdW86IfCURpOpfa2rBo0QM+M= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=uTOokbKs; 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="uTOokbKs" Received: by smtp.kernel.org (Postfix) with ESMTPSA id 4991AC2BCAF; Wed, 22 Apr 2026 16:40:51 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1776876051; bh=geg3i+AZ83UdjmswHRjfvGyLJA3VdBH2mrx+q6p2fj4=; h=From:Date:Subject:References:In-Reply-To:To:Cc:From; b=uTOokbKsuXf2jpBT4EKBPTHNn33ciuprXjo2vMoYlc8lvoaa789tjrUslyf3HjrXf UsLBLEobOmxGbYdUWIQXNbvorRBKqZ8rC9SsFBl+yJfdHpc81vDgMIW+P2v2gTw4F3 EtoUFVNKKk/907m2+1sldEbmzwLzC+Gaod2TN7EaBBRkZn9dRZm3v3k10OarljUwMp 4+byPD/UEqCZVWAEKAIsAAaRdGVgQec9qKiTwrfyy11c3ltIf++O5zicCrnf6Dz6Is lI+3Oz7LqHaAPlPS3Qd2IsyqSMFCTLrp5Tk2fKjRjHur5N+UF9XO2GZ6LA+8b0UNim s8MAMuebvk6JA== From: "Matthieu Baerts (NGI0)" Date: Wed, 22 Apr 2026 18:40:27 +0200 Subject: [PATCH mptcp-net v6 13/19] 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: <20260422-mptcp-inc-limits-v6-13-903181771530@kernel.org> References: <20260422-mptcp-inc-limits-v6-0-903181771530@kernel.org> In-Reply-To: <20260422-mptcp-inc-limits-v6-0-903181771530@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/Th0Gd3rumMp9WSGDJf/GJpuDVtuXtUw5OYn3+Debf7+OxXNHyreFts1rrv5 xtFNqW2dZSyMIhxMciKKbJIt0Xmz3xexVvi5WcBM4eVCWQIAxenAFzkESPDo92TdBZfifkaXmm8 bMEbBlnG9PWqH6T2qUWrnnz3tmvRRoZ/quce/Yie9zj8q8i6fcvOLKnrm+T/XfuG470JB37aXmq ewQ8A 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) Reviewed-by: Mat Martineau --- 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 Tue May 5 11:27:57 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 AFD0933F8A4 for ; Wed, 22 Apr 2026 16:40:52 +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=1776876052; cv=none; b=k19ZPJBW90RrAHJdO9vvnrbISN6AupVnurRZoutmfq1Y5BQcgif4enko3/H+ZzPD0zgxHRa0j9Vy41UU7I6qd9jmNXe0hyRglHNjf84gl+RxXuk/VsMn50rMwQ/Wf8incB9fUQYVGfByJgo87t0cepYSoYfEYhGtGemDzpFR9eU= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1776876052; 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=k+3I/qOWim6njQtLf11t2EenH6v7p3/Up8Q3tpp01bxSbq0WoM1ygZfZm4rPctKpakryySxwzEAyRDHdlisp4fwGRHnm4pOtKa//vEz40vCFf3ms6NFna3w30MpcEY1kZZigLSFmmoiES6JNXo4wroh8utCEbAhgSSwokVb7Xuc= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=ayziDSqh; 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="ayziDSqh" Received: by smtp.kernel.org (Postfix) with ESMTPSA id 11790C2BCAF; Wed, 22 Apr 2026 16:40:51 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1776876052; bh=V+qTh1H+zvXazMYLs/1iysESXTfvfHvnFRBnUfIXOtY=; h=From:Date:Subject:References:In-Reply-To:To:Cc:From; b=ayziDSqhpET9p+92zuoTUsoKAgMByNmuh342phStqcYHERdGSn+UkVLxExpkghUZ3 XJSql1jInu7Xn+QaUQgIgeMVedJ1jwNNVXGYoWXCvQ0TOILEvWRBO4EezyjA3eCvfY 7Pby61xB5Q2MG4KmQ1Ca5Off7J8BtMmeGZyyVehX4HPAW2eIpNM+4bEC1yNukp67JC iaxF+nMctIIHJyTN9hgE35yr4FuweauQN27x4PUmURXyu0jjFxTixCsQD+3J69BLOg 83t9owu8z24VxiZvqGVJSTsYNGlhF7fuuPRQtF6JA+CWQ9d51up0/IF9/bYDT6ynDE r1vv5hLEfcKtg== From: "Matthieu Baerts (NGI0)" Date: Wed, 22 Apr 2026 18:40:28 +0200 Subject: [PATCH mptcp-net v6 14/19] 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: <20260422-mptcp-inc-limits-v6-14-903181771530@kernel.org> References: <20260422-mptcp-inc-limits-v6-0-903181771530@kernel.org> In-Reply-To: <20260422-mptcp-inc-limits-v6-0-903181771530@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/Th0Gd3rumMp9WSGDJf/GLZXfnk7r7m/ccn6r8UfDTj29zrK21ebzhgpjx1x h1n9n17dTpKWRjEuBhkxRRZpNsi82c+r+It8fKzgJnDygQyhIGLUwAm0mHGyLDVX21B3XUP0bh9 oRv0lglPLXIvW9ax9d/+e8wi50MvfpvKyPD5RH//zQ/3vXXF++Mjig4+dhRJ7znoW+Pu+brX+vr lSjYA 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) Reviewed-by: Mat Martineau --- 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 Tue May 5 11:27:57 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 5577D33F8A4 for ; Wed, 22 Apr 2026 16:40:53 +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=1776876053; cv=none; b=S/wch+cdm0J4SzorofUwYiYRRfxlE9hyStrqJuewwb4xTZl9GWd5iffz0FHgIKnU3RNJQLXoi4WB2siNlvVIhvLPGi/IPfpVKzzTvNj/owiEO1DhSCI1jenvqh0xiFMxYNGMPmSzTjovimpqcaCx5TLCVbl9sYAiSItHRiHDO/s= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1776876053; c=relaxed/simple; bh=wu+DrPmFVj8SMzi8BY9NKQEjf6TMjlO4jJY7sS/18DU=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=rr5siq+DDd5tSF8Sq2XsSCRgu8G82tpqGyYtvbCI5bE2rLNsDXq8dZICfIaCVUyFiidAdFDurzXJAiAh/M+oCki6m6faXeUl6KCeNKsnZwzXtd79+bOt500X1YTF2JoDA9rkxllQEpWv0FwS9ME5qdzSzpFMf3OHyncYLQ/Gz5U= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=FsZ9GgSh; 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="FsZ9GgSh" Received: by smtp.kernel.org (Postfix) with ESMTPSA id CDEE0C2BCB4; Wed, 22 Apr 2026 16:40:52 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1776876053; bh=wu+DrPmFVj8SMzi8BY9NKQEjf6TMjlO4jJY7sS/18DU=; h=From:Date:Subject:References:In-Reply-To:To:Cc:From; b=FsZ9GgSh1IN2yBEGosCwyHwPsW1aoJtL5PefqzNuuKC4zaXDVF62nAndUSY1cJrTg nXBAEAHC/QDQ6sMs3TxW1565muJ0XLQ2AN/A1TAnc+2n/qBKnL4D/A4fd6X2DNVwCr 1RvcTiUJQOWEWb/MIbpPzqBVOXQopvBRpGBbMbfZLLvwpEC1gq5jC9DLFQ7TNTsnpI NDR7d37pIMsn6SVeSEMJa9gMksC4bzaatB2VyXGd+POmD+na1t75ZdiJVpxOXzLjW1 g2TIty83MaHjfG6q02KVOGhmu2tlblkDGblye50vgyRy6dCzLlUgWkjkGlNiAPcXde 2U4jSrCyw+DDw== From: "Matthieu Baerts (NGI0)" Date: Wed, 22 Apr 2026 18:40:29 +0200 Subject: [PATCH mptcp-net v6 15/19] 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: <20260422-mptcp-inc-limits-v6-15-903181771530@kernel.org> References: <20260422-mptcp-inc-limits-v6-0-903181771530@kernel.org> In-Reply-To: <20260422-mptcp-inc-limits-v6-0-903181771530@kernel.org> To: MPTCP Upstream Cc: "Matthieu Baerts (NGI0)" X-Mailer: b4 0.15.2 X-Developer-Signature: v=1; a=openpgp-sha256; l=1233; i=matttbe@kernel.org; h=from:subject:message-id; bh=wu+DrPmFVj8SMzi8BY9NKQEjf6TMjlO4jJY7sS/18DU=; b=owGbwMvMwCVWo/Th0Gd3rumMp9WSGDJf/GK1W/HWTeXGTVWp/u8bzJU0L9xcmvWX/Z7chmbDl 0VyL83mdpSyMIhxMciKKbJIt0Xmz3xexVvi5WcBM4eVCWQIAxenAEzk/zdGhomrK91e9Zm9bTxT FhDxMeCU2gf/xx/+5t96ueG/YtTHWTsZGQ64B86tvNP98oPsxMsP/xn8M1x9LP34IRNlNp6vLDu mfuMBAA== 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: 255. 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) Reviewed-by: Mat Martineau --- v6: commit message: limit is at 255, not 254 --- 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 Tue May 5 11:27:57 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 6917F382288 for ; Wed, 22 Apr 2026 16:40:54 +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=1776876054; cv=none; b=m3AxJ641H9y9Q3t1HDCyZinwmYZxTemczLN/CwahY8bKvQSclhho5GkV4BWm/yt2OUIOFYMFUsr5V3AILmx3sA00qMa9dY/y3Ztcof5/xQxF/zkNys3Mx9mOXnXVyIncAv0b2EbQYCu8YRyfIAiOjz/qnY29h6tHSgaShKNZ2gw= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1776876054; c=relaxed/simple; bh=WPXlOnsY4b8ca/bPVxQbeZN3bFUC8KRS1pNiKQk+mGY=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=VVHeRI70e5GknWG2geinNndPjW+2UeLWdEqc3/6dHQgX3H4muzbpdtEs1PUJXdX4Xv7TJlKUAC4BxyWeauk8fs8kJiUuM9dEcWlQypn2feRmAzpUgGfXtNcbHMPXlRhAFYw7DixqDnL/eh9PeitcDsrtOe/3KgeIQIAoiPN2XvQ= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=YryN/uk2; 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="YryN/uk2" Received: by smtp.kernel.org (Postfix) with ESMTPSA id 95D30C2BCB4; Wed, 22 Apr 2026 16:40:53 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1776876054; bh=WPXlOnsY4b8ca/bPVxQbeZN3bFUC8KRS1pNiKQk+mGY=; h=From:Date:Subject:References:In-Reply-To:To:Cc:From; b=YryN/uk28gZdDB0HQwLh5NzAL0XbfU5cbMLKtVjZlGG0Tal8FoV1tzGdC4fSzI4Wf k+W/ytAjsHU7IVeaTL3lufkkDHnmoswSaziXY0OY1E/5oNCP+KdgpzgaVUdQjcAy1b L3HNGQtIWsYCZDxv9daJW3C351oNuoDG13UwmLi/OKMA1JsAsT4tqS0bq0BIAEpezJ VLTJileIrw+kwdqc5rl4vy8FugvzeUTC23rzhuHBfT/QO1/odVIvEHzJxNQFxl++8w mQGtmefWORFFQfShmXXOyeGlYDEKGLrGXvHaRpqlma2U9vUCpOTZKVOg9TYr/S2ixD EBgbjUf7OExcw== From: "Matthieu Baerts (NGI0)" Date: Wed, 22 Apr 2026 18:40:30 +0200 Subject: [PATCH mptcp-net v6 16/19] 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: <20260422-mptcp-inc-limits-v6-16-903181771530@kernel.org> References: <20260422-mptcp-inc-limits-v6-0-903181771530@kernel.org> In-Reply-To: <20260422-mptcp-inc-limits-v6-0-903181771530@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/Th0Gd3rumMp9WSGDJf/GKTcL71kU1t/eO0nEUKhd2bN7zt+HfRVLX4PmP9E 8e3vpPYO0pZGMS4GGTFFFmk2yLzZz6v4i3x8rOAmcPKBDKEgYtTACYy04jhf0pWUS//3ub+6Dbd 1n3ZImd6534vevRoweXYA2uvmKapTGH4n36Q4csCp81+6vNikjdeMXDRTFg+LSI1zzDiclrl3WX beQE= 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) Reviewed-by: Mat Martineau --- 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 Tue May 5 11:27:57 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 E70CC37FF7A for ; Wed, 22 Apr 2026 16:40:54 +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=1776876055; cv=none; b=Ys+16vvevJU8/BO56syeJ6SjD3kp/Fgmophqf1LCH9lJD1YVpXiB0TF2gkeQ06rBpgCaB/hkexBc/fJjToDZ56Fon3jdBQGz36Fygef0ZaWVkydQ7ZBF9+I6CCGADMx17RBFHOboMnq72guwY0vtrV7G+ytEw/OIrpe6cetk8SA= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1776876055; c=relaxed/simple; bh=+qaBdb9rEAmToN4IiTNcZrtY6yqx3a4Lvoh95OjNc1Y=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=CpNZ6xDr/oKpjpcZz1k2azKKfAEc+V2uu8LXc70VGPBirFUtDBtTzN6RMt8DtF48eizCM7/zBvQK+hYBjMg5OFYjhqPgQwVcDXS+NX39j+hwa36awaJTWdY6lg1RpgZpYa87I3IsknzmMu1h0hNQcvpV+akrzBR8/aanUhRscQU= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=okEk9lvA; 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="okEk9lvA" Received: by smtp.kernel.org (Postfix) with ESMTPSA id 5DEAEC2BCAF; Wed, 22 Apr 2026 16:40:54 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1776876054; bh=+qaBdb9rEAmToN4IiTNcZrtY6yqx3a4Lvoh95OjNc1Y=; h=From:Date:Subject:References:In-Reply-To:To:Cc:From; b=okEk9lvAvdm5ya3P2aXggkhlyVa0giePddxOjBb1wYceizVcpX/uEfBkd7zwAmEzC S87MTuE5JqGy0VvHKxz5VQKAYojwvA1+pW77Hl+c9qwizaTkB1IZMGdU/o8C+yNCcl UXLEuHUYs1BqmCYuGzIRTxAE2dWEIzH8fLecCG6Ok1JjnbGtPHc/PlzMsnAU1o7JW1 AG9NWFjZ7Rk6v6mctWRhepxjhPhMN5obqy2KGJhNsmLaeGV9jdNZ8pfLr8HE674LxJ 1KGxCsUiMJgW3EjDbF2h5rJXoCrZmuAeooAyOYtniEK+ZmN4AhNP1el+Q0Y+rWqXvm RWMgMr9C8UePg== From: "Matthieu Baerts (NGI0)" Date: Wed, 22 Apr 2026 18:40:31 +0200 Subject: [PATCH mptcp-net v6 17/19] 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: <20260422-mptcp-inc-limits-v6-17-903181771530@kernel.org> References: <20260422-mptcp-inc-limits-v6-0-903181771530@kernel.org> In-Reply-To: <20260422-mptcp-inc-limits-v6-0-903181771530@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/Th0Gd3rumMp9WSGDJf/GI/YFaTfYzh4+GzrbXr81R03hXvmm1Uohf09ZKC1 7aK5HcBHaUsDGJcDLJiiizSbZH5M59X8ZZ4+VnAzGFlAhnCwMUpABNZyMLIsGiBu+k9tV9yU9oX dbne2sd112V57fG1G0+G7DMXPxf9N5Xhn/U3Ub1qfhvtZfK/dp2TODkxuFbotYZa+oXTz7Q5Nm1 +xAgA 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) Reviewed-by: Mat Martineau --- 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 Tue May 5 11:27:57 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 B445737C0F2 for ; Wed, 22 Apr 2026 16:40:55 +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=1776876055; cv=none; b=pjHvuWcbuEKP2Kg4k+nF5BDNukrbGvAAuRYLpIOzo9WMwpAKtrvaoo0NuOd5SOi6GQdS/2rbjp6duV9Np6Gfz0Xjjg5CtV/YHe7b7+Z1lfz1fM1qK0qX8d0bTLgqKTIjH37FRE8gmpRT/s27d/Knm99XSDp5GIVWYrkI/CG+I7M= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1776876055; c=relaxed/simple; bh=mtYmu9sEERHRNO5FZypyYhLnpdu99tZBV46KyJVl00o=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=XotoMap0zcR4I2V2qvtH1eUiqUTHo2iiV/vGrHY1H80V3vILvdJs4S3j7gjZUapgL1gkjzdq0lFhnTo1Xz/zVtcaNLKFFpFgl25/opVpNwRTgwhbnqiq7G73b+U+Q7Pn0xTSM9+b273WzFaUAiJOxJ+hvPDN63hYNk1zzRxRuac= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=VyJ4K6z7; 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="VyJ4K6z7" Received: by smtp.kernel.org (Postfix) with ESMTPSA id 26500C2BCAF; Wed, 22 Apr 2026 16:40:55 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1776876055; bh=mtYmu9sEERHRNO5FZypyYhLnpdu99tZBV46KyJVl00o=; h=From:Date:Subject:References:In-Reply-To:To:Cc:From; b=VyJ4K6z7Z5Vf1y3oXu4hP/VnUPMYVOkl7iPvkJW/j8uLJcQ5PuqznTbq7vT/vyyhJ e+Iz3isn3X0Lrm2PQPl3Bk+9smP1v9w1XLyB5imYA8N54SYmgS/AnAZa0RtL1M8cR2 nPaEgY5kRhZmGT0gy7J9Lju7y9TEEBRRQ6bLRY7FhjMsn+rH9YiYji44NHT5s489bO Dd6XPGWqVYGtdcOEuQfJ4y3cdMZdDEmrmspbDSmtsAXbU54muUctTIza6xt4gqbBPq j1Dxg+TzSNt6pnO4IkHHGxGq6BX4tfyrD/QQXHvNyS6931Su6d1G7i4xXHTXoPEMQo 4CVN7Ton303Ug== From: "Matthieu Baerts (NGI0)" Date: Wed, 22 Apr 2026 18:40:32 +0200 Subject: [PATCH mptcp-net v6 18/19] 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: <20260422-mptcp-inc-limits-v6-18-903181771530@kernel.org> References: <20260422-mptcp-inc-limits-v6-0-903181771530@kernel.org> In-Reply-To: <20260422-mptcp-inc-limits-v6-0-903181771530@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/Th0Gd3rumMp9WSGDJf/OKoW5I6d/PDUwu3pk9atSmlWkco6URI0vOgORPzj t1jY/7k3lHKwiDGxSArpsgi3RaZP/N5FW+Jl58FzBxWJpAhDFycAjCRH3MZ/qcv3CgilJsXJyxh /a96r+23axeUj2VtuTZDXsxdPD5PrJbhf8mbzwmeq2Zl+YtP2/Og6BuH2v5iJQ3prPen2x7udnB /zQ4A 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) Reviewed-by: Mat Martineau --- 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 Tue May 5 11:27:57 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 AA7F433F8A4 for ; Wed, 22 Apr 2026 16:40:56 +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=1776876056; cv=none; b=r+UsaHG2dtp7nGcf5tRu5thbk/8RiFb+TJ9D/ty5FHJkEX+7s6bUtqzheDTh+SW5O9SLBZdBxvJ3fxOQhH8VkN/XDWwK/F1YzM5swOCG2vcWzEzUympVS6B9VWoOB/rIm7Pa1dh10ctKrVzFxwFr5MHXBa6NmlcgVg9rlms1YQ4= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1776876056; c=relaxed/simple; bh=N19jazivXTMDBQM5jY7wG5Ec0mUGbrDn/0Y2kORbl90=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=LLehWlDfmzlDlWh/5s0yVVrpVfrS8H7VBFJr5PGLCHS4RXB7NDgMOGxmXrpFacgOVGkuQ3JtZovx1LqqPw7PduYBZQ2VRyjoGWyTUIfNTp417LpRXEr+3LXLPsMjJuEcV6/qaWC+3aEVYxk1ZZWNjnuV81BofXtUK4pSMQA0Y3Y= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=PkbibBq1; 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="PkbibBq1" Received: by smtp.kernel.org (Postfix) with ESMTPSA id E261FC2BCB2; Wed, 22 Apr 2026 16:40:55 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1776876056; bh=N19jazivXTMDBQM5jY7wG5Ec0mUGbrDn/0Y2kORbl90=; h=From:Date:Subject:References:In-Reply-To:To:Cc:From; b=PkbibBq18Iio49sLtNZPice7p+9CnbJSc+dCX/DMQ/0SDdJn3QeJhqNdmyrqGBVWO WXWyBOUZx1eJiyG3IqkNn0pM07hvfCR6dIgvwwNlFLiIf/oSGgztMLHJ3iIOnzq6B8 4yJ/aLzNtU1yQ6mSTvTxjQuuBp6bWdytEnkC9d6WHcwG/EM2WfuuSwYmPt0M7psSOY +sYcwSLEmG6ZMRNLGm8x897tpIkQ6xUHkdrDpAbOuUmvQVwGG724zNivuyOkl6CF7w 2tyc0n+EaErEejhAliScLEfwxfe29kwMYqCCHvkjr/KrGZ1n0+t7/C3h2B0fPBt+oe hRc1feZyGuXQA== From: "Matthieu Baerts (NGI0)" Date: Wed, 22 Apr 2026 18:40:33 +0200 Subject: [PATCH mptcp-net v6 19/19] 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: <20260422-mptcp-inc-limits-v6-19-903181771530@kernel.org> References: <20260422-mptcp-inc-limits-v6-0-903181771530@kernel.org> In-Reply-To: <20260422-mptcp-inc-limits-v6-0-903181771530@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/Th0Gd3rumMp9WSGDJf/OJoD/937OrRD2Jqd7+4aAeXS559Eb3Gnvf9Naf9+ U1aV2XzO0pZGMS4GGTFFFmk2yLzZz6v4i3x8rOAmcPKBDKEgYtTACbSfYaRYemLv/LH7d/5s/QU vDse0f49mWWCqmDtMbmcyFn5108ZtDL8FbIwTn12hJ/JUmzi7qxlK8z+X61/6mD+rc7nUc02Hck oJgA= 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) Reviewed-by: Mat Martineau --- 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