From nobody Sat Oct 11 06:20:05 2025 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 0B13E16F288 for ; Wed, 8 Oct 2025 14:00:16 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=10.30.226.201 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1759932017; cv=none; b=qKu5wpQC/glrUIPbDPkfqZW7pQqz5LSu1MoZSiI8gf07wzyfSmgKv71LCv5TBl9vUVeRkITCRZWrUWUB8Kn1bUOGcb5S5Pk9pWpi2irE63GTrjkRGMEcmF06eEkgfttl2KOIVmBvoVQtDg719KaYNLOQh9twWOP49zcdmLfps6U= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1759932017; c=relaxed/simple; bh=fq9OolGGmsel86BAhF5n0MmVu/U4DAXphDJwxa8Ih4E=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=YLgnHf9bkw9eIVRJVYAWl4cNRkDykji0QhLzLJcfps/ROEAxV5C3kmFDdI51Cgkp459nd+Jq3f95tQJxgfWq2eDkVqMbxdxn6miSCqxexUe8IWTAKE7FBtbD1xUnTj/a1qhWeSkxloKYHIJMTLI/BMA4ukX8pAwU5oKC+LRju+Y= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=qj0lrf2L; 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="qj0lrf2L" Received: by smtp.kernel.org (Postfix) with ESMTPSA id 21F8AC4CEF4; Wed, 8 Oct 2025 14:00:15 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1759932016; bh=fq9OolGGmsel86BAhF5n0MmVu/U4DAXphDJwxa8Ih4E=; h=From:Date:Subject:References:In-Reply-To:To:Cc:From; b=qj0lrf2LeWMhGlKpnWwyfQJKeHtpldnYCcO1aKIujLtLgpTwJtWz/ODrxYb21XV0n nN357GVUvbe4nDt4/kvouTuPbAOFitFSXzqa8D7DM77z+wOKKrRtSqOFyvJoyXfm0d 9GnzrrIssWgePjIwm40zzgYQETaUYGznT/jentiURWYa/BLDimgzo1zdFS5M4m4WjK Qh6wGStox3xz8kWrZOXwIAoVIZ0V5lcFVD4wWaDyKdaLxY1ZiAfqUBE+mwTxqPHwWy nqCkZYGZdRPD+DcJj7AzlV1tER2hU0al4IP+7iJRglvyUGsXj0ShuurCNQoc3T2HXX F5J7wsmRDrVBg== From: "Matthieu Baerts (NGI0)" Date: Wed, 08 Oct 2025 15:59:55 +0200 Subject: [PATCH mptcp-net 1/7] mptcp: pm: in-kernel: C-flag: handle late ADD_ADDR 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: <20251008-c-flag-add-addr-delay-v1-1-c624eb3bf10d@kernel.org> References: <20251008-c-flag-add-addr-delay-v1-0-c624eb3bf10d@kernel.org> In-Reply-To: <20251008-c-flag-add-addr-delay-v1-0-c624eb3bf10d@kernel.org> To: MPTCP Upstream Cc: "Matthieu Baerts (NGI0)" X-Mailer: b4 0.14.3 X-Developer-Signature: v=1; a=openpgp-sha256; l=2612; i=matttbe@kernel.org; h=from:subject:message-id; bh=fq9OolGGmsel86BAhF5n0MmVu/U4DAXphDJwxa8Ih4E=; b=owGbwMvMwCVWo/Th0Gd3rumMp9WSGDKe5aXb7Zv/5fL6oCSXva9jnn1ji7fJ55VMmx5+7Mrzh Tw9D+f/7ihlYRDjYpAVU2SRbovMn/m8irfEy88CZg4rE8gQBi5OAZjIB2tGhjVz2jkutH5NjDrT wBVn1/BRofSQ7NqGZ2lm9Re3tj5TjWJkeKegfv/d/LU2L5iq7nDFzckPUG7dz9yZqrUmVKWToWA WEwA= X-Developer-Key: i=matttbe@kernel.org; a=openpgp; fpr=E8CB85F76877057A6E27F77AF6B7824F4269A073 The special C-flag case expects the ADD_ADDR to be received when switching to 'fully-established'. But for various reasons, the ADD_ADDR could be sent after the "4th ACK", and the special case doesn't work. On NIPA, the new test validating this special case for the C-flag failed a few times, e.g. 102 default limits, server deny join id 0 syn rx [FAIL] got 0 JOIN[s] syn rx expected 2 Server ns stats (...) MPTcpExtAddAddrTx 1 MPTcpExtEchoAdd 1 Client ns stats (...) MPTcpExtAddAddr 1 MPTcpExtEchoAddTx 1 synack rx [FAIL] got 0 JOIN[s] synack rx expected 2 ack rx [FAIL] got 0 JOIN[s] ack rx expected 2 join Rx [FAIL] see above syn tx [FAIL] got 0 JOIN[s] syn tx expected 2 join Tx [FAIL] see above I had a suspicion about what the issue could be: the ADD_ADDR might have been received after the switch to the 'fully-established' state. The issue was not easy to reproduce. The packet capture shown that the ADD_ADDR can indeed be sent with a delay, and the client would not try to establish subflows to it as expected. A simple fix is not to mark the endpoints as 'used' in the C-flag case, when looking at creating subflows to the remote initial IP address and port. In this case, there is no need to try. Note: newly added fullmesh endpoints will still continue to be used as expected, thanks to the conditions behind mptcp_pm_add_addr_c_flag_case. Fixes: 4b1ff850e0c1 ("mptcp: pm: in-kernel: usable client side with C-flag") Signed-off-by: Matthieu Baerts (NGI0) --- net/mptcp/pm_kernel.c | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/net/mptcp/pm_kernel.c b/net/mptcp/pm_kernel.c index da431da16ae0..df2bc36593d0 100644 --- a/net/mptcp/pm_kernel.c +++ b/net/mptcp/pm_kernel.c @@ -370,6 +370,10 @@ static void mptcp_pm_create_subflow_or_signal_addr(str= uct mptcp_sock *msk) } =20 subflow: + /* No need to try establishing subflows to remote id0 if not allowed */ + if (mptcp_pm_add_addr_c_flag_case(msk)) + goto exit; + /* check if should create a new subflow */ while (msk->pm.local_addr_used < endp_subflow_max && msk->pm.extra_subflows < limit_extra_subflows) { @@ -401,6 +405,8 @@ static void mptcp_pm_create_subflow_or_signal_addr(stru= ct mptcp_sock *msk) __mptcp_subflow_connect(sk, &local, &addrs[i]); spin_lock_bh(&msk->pm.lock); } + +exit: mptcp_pm_nl_check_work_pending(msk); } =20 --=20 2.51.0 From nobody Sat Oct 11 06:20:05 2025 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 8E1AC16F288 for ; Wed, 8 Oct 2025 14:00:17 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=10.30.226.201 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1759932017; cv=none; b=HiWA5J2ASJM5nLRag8d3deVgjs+JCMnx7JifMDOyq5mP2Try86w7/1/G/P9Jv1XhqO49WvOvuwHcHKLHGidhs6GJAFbzh+vj3so4sV+2BPtwaovfgOY+l2Pkn231htf+0iiZES06nf5tH7Ztz0+8YM0AC0RHoMQadfac30WT5JA= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1759932017; c=relaxed/simple; bh=PoXiph/9okTL461HsQS/9IJY26i6/midgKe0IzkHP/8=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=CygkLsuPLgS4LHleAQBgNn8wfcp8p/6GwNEprEgQ2fUgQi81Io9mxWd/Z44QwJ/+oPo3yKnahkD0Zg/ZB03jHFj3+woX3uLEwdZ+/Ld6NSUzM8GwodTyyVnOJfkosvssvv5yVQM96lBlHzPOLzciQ3SBIm0Y0kfdT7lteVgbD68= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=ZCYrnQbC; 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="ZCYrnQbC" Received: by smtp.kernel.org (Postfix) with ESMTPSA id EE7D7C4CEF5; Wed, 8 Oct 2025 14:00:16 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1759932017; bh=PoXiph/9okTL461HsQS/9IJY26i6/midgKe0IzkHP/8=; h=From:Date:Subject:References:In-Reply-To:To:Cc:From; b=ZCYrnQbC+mxecasUEm2Dx4bW4SHCUuW+lteBxTOm2qzaNCAEJ84C2XUJFH7m8yte0 ZH6KYq4C1c7GvdC8e14RtI8TLuwBsOkTbpK17zzbEVP11CKa2GRifkwZ6JPiuufBTq eCajBNagEO8uNfUtIDRunMCmK/2a3x8Kz6RhFmLH9Jw6jzBQ3lM0bZpLvIaX+Ssktf ztIlPnGlTd1nExVWdRUfX8u8xgQjIy8lLZtm3JqjV/sN6+bUxLuMk4hT3xRNVRM4ev YXK7KlxxRmaha+17J+sYijO03g2+rpScfQfxM207fKvPqAk+jvwhhuoST66xp7Vrtq 9ffnijzwyf7AQ== From: "Matthieu Baerts (NGI0)" Date: Wed, 08 Oct 2025 15:59:56 +0200 Subject: [PATCH mptcp-net 2/7] selftests: mptcp: join: mark 'flush re-add' as skipped if not supported 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: <20251008-c-flag-add-addr-delay-v1-2-c624eb3bf10d@kernel.org> References: <20251008-c-flag-add-addr-delay-v1-0-c624eb3bf10d@kernel.org> In-Reply-To: <20251008-c-flag-add-addr-delay-v1-0-c624eb3bf10d@kernel.org> To: MPTCP Upstream Cc: "Matthieu Baerts (NGI0)" X-Mailer: b4 0.14.3 X-Developer-Signature: v=1; a=openpgp-sha256; l=1130; i=matttbe@kernel.org; h=from:subject:message-id; bh=PoXiph/9okTL461HsQS/9IJY26i6/midgKe0IzkHP/8=; b=owGbwMvMwCVWo/Th0Gd3rumMp9WSGDKe5WWErb00/410rqTrK7EpzE2c6wUOtqrlzNr+xHEqo yhrhffFjlIWBjEuBlkxRRbptsj8mc+reEu8/Cxg5rAygQxh4OIUgIlwzWdkuCJm/FbntZPgjC3h 55SvXtsyXfdB/xSvkkvrbWUz1hWdcmf4n+n8KmfF+SzTzKrjbTsVTAp2bOTMirnxO7Lk5eFLj0+ 94QQA X-Developer-Key: i=matttbe@kernel.org; a=openpgp; fpr=E8CB85F76877057A6E27F77AF6B7824F4269A073 The call to 'continue_if' was missing: it properly marks a subtest as 'skipped' if the attached condition is not valid. Without that, the test is wrongly marked as passed on older kernels. Fixes: e06959e9eebd ("selftests: mptcp: join: test for flush/re-add endpoin= ts") Signed-off-by: Matthieu Baerts (NGI0) Reviewed-by: Geliang Tang --- tools/testing/selftests/net/mptcp/mptcp_join.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tools/testing/selftests/net/mptcp/mptcp_join.sh b/tools/testin= g/selftests/net/mptcp/mptcp_join.sh index c90d8e8b95cb..deba21ca5a97 100755 --- a/tools/testing/selftests/net/mptcp/mptcp_join.sh +++ b/tools/testing/selftests/net/mptcp/mptcp_join.sh @@ -4115,7 +4115,7 @@ endpoint_tests() =20 # flush and re-add if reset_with_tcp_filter "flush re-add" ns2 10.0.3.2 REJECT OUTPUT && - mptcp_lib_kallsyms_has "subflow_rebuild_header$"; then + continue_if mptcp_lib_kallsyms_has "subflow_rebuild_header$"; then pm_nl_set_limits $ns1 0 2 pm_nl_set_limits $ns2 1 2 # broadcast IP: no packet for this address will be received on ns1 --=20 2.51.0 From nobody Sat Oct 11 06:20:05 2025 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 AA934286883 for ; Wed, 8 Oct 2025 14:00:18 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=10.30.226.201 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1759932018; cv=none; b=HQVp8f0tCAVm34zgU+mnqquiN4nXD7YrUjUxx1cy/KrtXCf6YDTfFJWZrr6lSjgLLh8Xj78ExFX4wq3Ko1i6nFMrU71yn3pYqgPRztf45PNeDJLvvONyO+BPcvCFRjxhVDNkOZWXg/TAAOoW9IUJ5VcRs0tHdYNrD3Fq0Cs/E54= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1759932018; c=relaxed/simple; bh=k5gLjNAVz/tVu1kK9ZUbytd3ZDkQ6Y7Gv/CnpJw328U=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=W8t3YSXNkIBKdyBDRl7VZ+oDoUBW5kZv81m+LZMRP0BhpraUKwOkl39ehsmejgid1g1G/9wmRnCTnrilRWNQw46jpfZK1tQE1GXb0PlRw2fqX0Cm4nG9gXAG51WXEaCv25wi7LaydK0JgvPmP38KYOaBeQMWLlkxOxOgTChtafI= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=tXJxjRqB; 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="tXJxjRqB" Received: by smtp.kernel.org (Postfix) with ESMTPSA id C687BC4CEF4; Wed, 8 Oct 2025 14:00:17 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1759932018; bh=k5gLjNAVz/tVu1kK9ZUbytd3ZDkQ6Y7Gv/CnpJw328U=; h=From:Date:Subject:References:In-Reply-To:To:Cc:From; b=tXJxjRqB5Dz8yUeO5xaYNEm+1fFIO68KPCvcZMXZfzbpffOlTzYo/HjmgOc4JkW37 /iqjdXDRpHWcBYvxe8AyC0Z/P8pGbvnmm6CBQEqoJLqqy7Fpo2FIGdFBBSpJTAExHk 5Oe/n8JaWt6WpXUEpv1e/JaxtUCo1Y7o+ZHSD6kPu7b2wCbK91lVQQvsDt+JFJxLE8 LT8kxxDNx8o3Z4rmv/R0M1gu1Hn2cEgibdygNkkKa0QRvahNSKaUX3ABZs47gKHLk/ qCt2h7U++X7YqiV0ug+YVLgApxJXfzWmtwoCTWIXIeEqxd7J1YyIowQl5D6YM2v/gZ PTxTwuVdiEorg== From: "Matthieu Baerts (NGI0)" Date: Wed, 08 Oct 2025 15:59:57 +0200 Subject: [PATCH mptcp-net 3/7] selftests: mptcp: join: mark 'delete re-add signal' as skipped if not supported 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: <20251008-c-flag-add-addr-delay-v1-3-c624eb3bf10d@kernel.org> References: <20251008-c-flag-add-addr-delay-v1-0-c624eb3bf10d@kernel.org> In-Reply-To: <20251008-c-flag-add-addr-delay-v1-0-c624eb3bf10d@kernel.org> To: MPTCP Upstream Cc: "Matthieu Baerts (NGI0)" X-Mailer: b4 0.14.3 X-Developer-Signature: v=1; a=openpgp-sha256; l=1101; i=matttbe@kernel.org; h=from:subject:message-id; bh=k5gLjNAVz/tVu1kK9ZUbytd3ZDkQ6Y7Gv/CnpJw328U=; b=kA0DAAoWfCLwwvNHCpcByyZiAGjmbmnIxqY/aGLU0OsimRkGjxOAwHuzKa4XjvzMQkuV2lPG8 Ih1BAAWCgAdFiEEG4ZZb5nneg10Sk44fCLwwvNHCpcFAmjmbmkACgkQfCLwwvNHCpfZuwD+NGh7 V3O0w6CzSuVgLY9yqM3JlYgnsZ4yPwQ5Op0NpGsA/29P+U/rfJsFJ1hTfafM46yAuABiZhup1/O PczFvJy8M X-Developer-Key: i=matttbe@kernel.org; a=openpgp; fpr=E8CB85F76877057A6E27F77AF6B7824F4269A073 The call to 'continue_if' was missing: it properly marks a subtest as 'skipped' if the attached condition is not valid. Without that, the test is wrongly marked as passed on older kernels. Fixes: b5e2fb832f48 ("selftests: mptcp: add explicit test case for remove/r= eadd") Signed-off-by: Matthieu Baerts (NGI0) Reviewed-by: Geliang Tang --- tools/testing/selftests/net/mptcp/mptcp_join.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tools/testing/selftests/net/mptcp/mptcp_join.sh b/tools/testin= g/selftests/net/mptcp/mptcp_join.sh index deba21ca5a97..59983aed2591 100755 --- a/tools/testing/selftests/net/mptcp/mptcp_join.sh +++ b/tools/testing/selftests/net/mptcp/mptcp_join.sh @@ -4040,7 +4040,7 @@ endpoint_tests() =20 # remove and re-add if reset_with_events "delete re-add signal" && - mptcp_lib_kallsyms_has "subflow_rebuild_header$"; then + continue_if mptcp_lib_kallsyms_has "subflow_rebuild_header$"; then ip netns exec $ns1 sysctl -q net.mptcp.add_addr_timeout=3D0 pm_nl_set_limits $ns1 0 3 pm_nl_set_limits $ns2 3 3 --=20 2.51.0 From nobody Sat Oct 11 06:20:05 2025 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 7F1C428A1F1 for ; Wed, 8 Oct 2025 14:00:19 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=10.30.226.201 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1759932019; cv=none; b=fwEQKWAvCcrkp7Gdt/5yubLMrIWa00k1P9t4Y4cfVK2aEFPKuuYXmQU3NqfCibPB3nQksNxqQvwbafP2lRejrYyrazoE9zCFZrf7EuFozAqPMFWivl+aXZ+tXpnfvxanuGQCJHJ5ZPPhdzTJUK+kYmHaL9wCvMPSXkvpytQ/OKg= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1759932019; c=relaxed/simple; bh=y4WjxnScvHlWoZP1vF6ucAz1MRe5ZvhlTCcDQHvnOmQ=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=fiF9+Q3u+hluxxko0hw+T4QaGAlrjclabGfJR7rHgav4ZHdtnn+G/ucbTWVV6cqOrT/5NSnRzTQCld9WSFoaHFlw93UUPDuQ3BMZnpF5EZfcLSXfH6pk078kXyEwTqoHVaal3SbK6P5PJ9jPtyDXoq57YyBsJt0Ht8+iKyW7NCA= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=maQnxvMZ; 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="maQnxvMZ" Received: by smtp.kernel.org (Postfix) with ESMTPSA id 9EFFBC4CEE7; Wed, 8 Oct 2025 14:00:18 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1759932019; bh=y4WjxnScvHlWoZP1vF6ucAz1MRe5ZvhlTCcDQHvnOmQ=; h=From:Date:Subject:References:In-Reply-To:To:Cc:From; b=maQnxvMZomoeQbznnRixluH/yjMTuhZ/aYNUWNMcoFI5FGA5hKDVbnvbFzbL8eW1G wk3ikNclC9kUGMpCczhLtDUNKvBPJpvVmZIeTkLa9bqBaUCkC3hPza0ZGiMnF9TmU+ vC0McVdik7n43azRgh6uVNBn1wWyh4K7H41DuxSxFkP4AR0UqdZlhRk92vDNrgiH3G BQt+sLSizdh6ZvaV0sT17GHFj/YfkgX+3Khn8ACotAjCT6jmePQoNoovIyOBT8gAVH XliLNahszy3RrCPdLbNaie2xeuRPqlmQZFOddDmPAaNthBjwpE4mT4oRJEb7Dc9UkG rKpmdau+c6lsA== From: "Matthieu Baerts (NGI0)" Date: Wed, 08 Oct 2025 15:59:58 +0200 Subject: [PATCH mptcp-net 4/7] selftests: mptcp: join: mark implicit tests as skipped if not supported 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: <20251008-c-flag-add-addr-delay-v1-4-c624eb3bf10d@kernel.org> References: <20251008-c-flag-add-addr-delay-v1-0-c624eb3bf10d@kernel.org> In-Reply-To: <20251008-c-flag-add-addr-delay-v1-0-c624eb3bf10d@kernel.org> To: MPTCP Upstream Cc: "Matthieu Baerts (NGI0)" X-Mailer: b4 0.14.3 X-Developer-Signature: v=1; a=openpgp-sha256; l=1495; i=matttbe@kernel.org; h=from:subject:message-id; bh=y4WjxnScvHlWoZP1vF6ucAz1MRe5ZvhlTCcDQHvnOmQ=; b=owGbwMvMwCVWo/Th0Gd3rumMp9WSGDKe5WU9zZDyk86IsngkYXLfssjm5+20K3ISrL4ZExTCt vDH6pV1lLIwiHExyIopski3RebPfF7FW+LlZwEzh5UJZAgDF6cATOQSN8NfQYPGw5/fP2ozXrLU dPnlwhwzFo2oORcjyrmLmZqrH5vXMTL8i1218WhvjIRQwtL5u6VFBEuYEje0KU+Z/7ht2rY77/e yAwA= X-Developer-Key: i=matttbe@kernel.org; a=openpgp; fpr=E8CB85F76877057A6E27F77AF6B7824F4269A073 The call to 'continue_if' was missing: it properly marks a subtest as 'skipped' if the attached condition is not valid. Without that, the test is wrongly marked as passed on older kernels. Fixes: 36c4127ae8dd ("selftests: mptcp: join: skip implicit tests if not su= pported") Signed-off-by: Matthieu Baerts (NGI0) Reviewed-by: Geliang Tang --- tools/testing/selftests/net/mptcp/mptcp_join.sh | 4 ++-- 1 file changed, 2 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 59983aed2591..b2a8c51a3969 100755 --- a/tools/testing/selftests/net/mptcp/mptcp_join.sh +++ b/tools/testing/selftests/net/mptcp/mptcp_join.sh @@ -3939,7 +3939,7 @@ endpoint_tests() # subflow_rebuild_header is needed to support the implicit flag # userspace pm type prevents add_addr if reset "implicit EP" && - mptcp_lib_kallsyms_has "subflow_rebuild_header$"; then + continue_if mptcp_lib_kallsyms_has "subflow_rebuild_header$"; then pm_nl_set_limits $ns1 2 2 pm_nl_set_limits $ns2 2 2 pm_nl_add_endpoint $ns1 10.0.2.1 flags signal @@ -3964,7 +3964,7 @@ endpoint_tests() fi =20 if reset_with_tcp_filter "delete and re-add" ns2 10.0.3.2 REJECT OUTPUT && - mptcp_lib_kallsyms_has "subflow_rebuild_header$"; then + continue_if mptcp_lib_kallsyms_has "subflow_rebuild_header$"; then start_events pm_nl_set_limits $ns1 0 3 pm_nl_set_limits $ns2 0 3 --=20 2.51.0 From nobody Sat Oct 11 06:20:05 2025 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 619FA289802 for ; Wed, 8 Oct 2025 14:00:20 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=10.30.226.201 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1759932020; cv=none; b=PRKWqr1zy8PbwbXeScQOh59aPicu0l6ZqBBaOMQ6WsWYxDivM/24fDwwfrr9UFnITkPTJJfEbogMu3StVqwUy/h3T/mEVnTvnhhY9Jd479pKG/giz8CTZgprLf4tY6nTOEyBgekkH1qyTlVo72iiKPN0nzxq0j5L4vSKOQdQQVw= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1759932020; c=relaxed/simple; bh=i0niSexjfKRpHp1EY2h6QILI+WGKpGybqaGEebr5uc4=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=TIYYdnUW3/lKc0V/ygr5aEX2IHbmQQ00QW/bimXLImjRmqnvtHFD8t5DhAWkAEaH5nrHtQcqUKfgFqLYqkB43j+XWrzHjAohprP4/nDFDAZd23175hNpCZxC5zL0hdn2waYsdE6+DcyzXRzYoS3W1r525gaxbAK7yocdrQ+a9mc= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=bCI2+R6U; 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="bCI2+R6U" Received: by smtp.kernel.org (Postfix) with ESMTPSA id 78052C4CEF5; Wed, 8 Oct 2025 14:00:19 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1759932019; bh=i0niSexjfKRpHp1EY2h6QILI+WGKpGybqaGEebr5uc4=; h=From:Date:Subject:References:In-Reply-To:To:Cc:From; b=bCI2+R6UIkDxsyCGfKVaaE8o6CVXb1zgTFdXkU/oQDV/1oS7LdRnkX+BxrW3Vmuzm 9CmfgruuB5/wUphPpFF/BccugmqlS1iM5Lie7oq5PAZJoZ8eGIQxWrv5bCJBV93RTV htFmZzCyZPnCww1648UcrTrQpw2rWp3N8qL0E0OhVOFSZQaNoUufl2/LG25S0J3gc9 EtFDc6hf01EIFlwE+O3Yb0K3OMjJvPGueRita6l9oONsnOiEvcCrpSg4idrFc7Y6vD 7DBbbi18CnHFqNneEYcNrrjlIA0a7SQRBNLMgt2bpYMjgzof79E2HQId+Shxytbw0y qNsRwgt6WM3Tw== From: "Matthieu Baerts (NGI0)" Date: Wed, 08 Oct 2025 15:59:59 +0200 Subject: [PATCH mptcp-net 5/7] selftests: mptcp: join: mark laminar tests as skipped if not supported 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: <20251008-c-flag-add-addr-delay-v1-5-c624eb3bf10d@kernel.org> References: <20251008-c-flag-add-addr-delay-v1-0-c624eb3bf10d@kernel.org> In-Reply-To: <20251008-c-flag-add-addr-delay-v1-0-c624eb3bf10d@kernel.org> To: MPTCP Upstream Cc: "Matthieu Baerts (NGI0)" X-Mailer: b4 0.14.3 X-Developer-Signature: v=1; a=openpgp-sha256; l=2902; i=matttbe@kernel.org; h=from:subject:message-id; bh=i0niSexjfKRpHp1EY2h6QILI+WGKpGybqaGEebr5uc4=; b=owGbwMvMwCVWo/Th0Gd3rumMp9WSGDKe5eU8SnDcm9d3OnGPVK324VDjvZIrCkUc71puz5D0L LGO+n+qo5SFQYyLQVZMkUW6LTJ/5vMq3hIvPwuYOaxMIEMYuDgFYCLztBgZGllnfnu4ndtsxRKJ pr5Nk0Tdolbf18peGz2/IF0vIVKFmeF/2c2csOjDarrK00u2VnZ8XXhhVeaVuOhvKU+XJzJqGZW yAwA= X-Developer-Key: i=matttbe@kernel.org; a=openpgp; fpr=E8CB85F76877057A6E27F77AF6B7824F4269A073 The call to 'continue_if' was missing: it properly marks a subtest as 'skipped' if the attached condition is not valid. Without that, the test is wrongly marked as passed on older kernels. Fixes: c912f935a5c7 ("selftests: mptcp: join: validate new laminar endp") Signed-off-by: Matthieu Baerts (NGI0) Reviewed-by: Geliang Tang --- tools/testing/selftests/net/mptcp/mptcp_join.sh | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/tools/testing/selftests/net/mptcp/mptcp_join.sh b/tools/testin= g/selftests/net/mptcp/mptcp_join.sh index b2a8c51a3969..78a1aa4ecff2 100755 --- a/tools/testing/selftests/net/mptcp/mptcp_join.sh +++ b/tools/testing/selftests/net/mptcp/mptcp_join.sh @@ -2324,7 +2324,7 @@ laminar_endp_tests() { # no laminar endpoints: routing rules are used if reset_with_tcp_filter "without a laminar endpoint" ns1 10.0.2.2 REJECT= && - mptcp_lib_kallsyms_has "mptcp_pm_get_endp_laminar_max$"; then + continue_if mptcp_lib_kallsyms_has "mptcp_pm_get_endp_laminar_max$"; t= hen pm_nl_set_limits $ns1 0 2 pm_nl_set_limits $ns2 2 2 pm_nl_add_endpoint $ns1 10.0.2.1 flags signal @@ -2336,7 +2336,7 @@ laminar_endp_tests() =20 # laminar endpoints: this endpoint is used if reset_with_tcp_filter "with a laminar endpoint" ns1 10.0.2.2 REJECT && - mptcp_lib_kallsyms_has "mptcp_pm_get_endp_laminar_max$"; then + continue_if mptcp_lib_kallsyms_has "mptcp_pm_get_endp_laminar_max$"; t= hen pm_nl_set_limits $ns1 0 2 pm_nl_set_limits $ns2 2 2 pm_nl_add_endpoint $ns1 10.0.2.1 flags signal @@ -2348,7 +2348,7 @@ laminar_endp_tests() =20 # laminar endpoints: these endpoints are used if reset_with_tcp_filter "with multiple laminar endpoints" ns1 10.0.2.2 R= EJECT && - mptcp_lib_kallsyms_has "mptcp_pm_get_endp_laminar_max$"; then + continue_if mptcp_lib_kallsyms_has "mptcp_pm_get_endp_laminar_max$"; t= hen pm_nl_set_limits $ns1 0 2 pm_nl_set_limits $ns2 2 2 pm_nl_add_endpoint $ns1 10.0.2.1 flags signal @@ -2363,7 +2363,7 @@ laminar_endp_tests() =20 # laminar endpoints: only one endpoint is used if reset_with_tcp_filter "single laminar endpoint" ns1 10.0.2.2 REJECT && - mptcp_lib_kallsyms_has "mptcp_pm_get_endp_laminar_max$"; then + continue_if mptcp_lib_kallsyms_has "mptcp_pm_get_endp_laminar_max$"; t= hen pm_nl_set_limits $ns1 0 2 pm_nl_set_limits $ns2 2 2 pm_nl_add_endpoint $ns1 10.0.2.1 flags signal @@ -2376,7 +2376,7 @@ laminar_endp_tests() =20 # laminar endpoints: subflow and laminar flags if reset_with_tcp_filter "sublow + laminar endpoints" ns1 10.0.2.2 REJECT= && - mptcp_lib_kallsyms_has "mptcp_pm_get_endp_laminar_max$"; then + continue_if mptcp_lib_kallsyms_has "mptcp_pm_get_endp_laminar_max$"; t= hen pm_nl_set_limits $ns1 0 4 pm_nl_set_limits $ns2 2 4 pm_nl_add_endpoint $ns1 10.0.2.1 flags signal --=20 2.51.0 From nobody Sat Oct 11 06:20:05 2025 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 410A3288C0E for ; Wed, 8 Oct 2025 14:00:20 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=10.30.226.201 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1759932021; cv=none; b=dxlkTfD3qpemqHPRfERzZ3emTxKqiRMp+l/n2HvnURwlj2B3PD632yQsnL1wrfTZy/2d8Kx1UL/BlIl5PvmpZ6GOKZGq20de5qfMMlw3k5Kq8Pcty8wab2v65fRMJDwI9gYnHOZOfQvlNqAakISxNJ8ldmkMJZpjAR3NdBH71eI= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1759932021; c=relaxed/simple; bh=qDNiunwNw0uMf4xSBrGK7rg9QiuNn0qVryzoqfxYbYQ=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=W/gb6F/8WOAErk5L4BaaW4z3TQtd/Rhxo0yGsdWL45wXs92VB69wAY6rDoYFpedRrMwM6TMLPl+X2fwxXQ70hQvdKpkSq3g8EP2R+mvl7tgQYgclZiEuwETCbwUaQ6st/mLAlbg6gFq+pMORhjwR8az2DtmaWUO46x8tIgJk/N0= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=dnx3/Jgu; 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="dnx3/Jgu" Received: by smtp.kernel.org (Postfix) with ESMTPSA id 51BECC4CEF4; Wed, 8 Oct 2025 14:00:20 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1759932020; bh=qDNiunwNw0uMf4xSBrGK7rg9QiuNn0qVryzoqfxYbYQ=; h=From:Date:Subject:References:In-Reply-To:To:Cc:From; b=dnx3/JgugVmTZTTdI298Bk4tGSy6xKYceHigmxxg9FdTAhErErYu8/nFJgheKR0pF KqonJNH+aORAjH5GP3AYAcu+/3Yoju/6VPztorg+Fzp02PQVvyPU/BPPfWkIOEbPZE hLEsKoCjB+IWXrzf/3EjoTWlAc8ZQb8AC7MWsQHQLkFceoApMcwciyZ0aRzUpi2UZW 2EMf/QjM1Md+wdKcv9HYjcb3XoH4vnAHoiRznMuyVoHmtJ7yG/L+TRyWiK+b2cDCBs WwSDFSbmuSR07PNJzLZ89h7053F0RuDjMrwpTdHNdyi03nOHvkbfRU6FkUytKsN9z+ yrhAd4Q0Txxuw== From: "Matthieu Baerts (NGI0)" Date: Wed, 08 Oct 2025 16:00:00 +0200 Subject: [PATCH mptcp-net 6/7] mptcp: pm: in-kernel: record fullmesh endp nb 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: <20251008-c-flag-add-addr-delay-v1-6-c624eb3bf10d@kernel.org> References: <20251008-c-flag-add-addr-delay-v1-0-c624eb3bf10d@kernel.org> In-Reply-To: <20251008-c-flag-add-addr-delay-v1-0-c624eb3bf10d@kernel.org> To: MPTCP Upstream Cc: "Matthieu Baerts (NGI0)" X-Mailer: b4 0.14.3 X-Developer-Signature: v=1; a=openpgp-sha256; l=5255; i=matttbe@kernel.org; h=from:subject:message-id; bh=qDNiunwNw0uMf4xSBrGK7rg9QiuNn0qVryzoqfxYbYQ=; b=owGbwMvMwCVWo/Th0Gd3rumMp9WSGDKe5eVKTHlV3bnWLoiDbUbxx6kPJnPe7Xwqttrw+9XFH U8f+PO96yhlYRDjYpAVU2SRbovMn/m8irfEy88CZg4rE8gQBi5OAZiI5l+G3yxXW+8bf8uICv5z dL19wfxHNavOX5/Reu7oMduLe09kNk5nZNj47OlhpiVKR06+f3fE+dvhty+nh8Xs6Ji7d7qyefL XQ4+4AQ== X-Developer-Key: i=matttbe@kernel.org; a=openpgp; fpr=E8CB85F76877057A6E27F77AF6B7824F4269A073 Instead of iterating over all endpoints, under RCU read lock, just to check if one of them as the fullmesh flag, we can keep a counter of fullmesh endpoint, similar to what is done with the other flags. This counter is now checked, before iterating over all endpoints. Similar to the other counters, this new one is also exposed. A userspace app can then know when it is being used in a fullmesh mode, with potentially (too) many subflows. Signed-off-by: Matthieu Baerts (NGI0) --- include/uapi/linux/mptcp.h | 3 ++- net/mptcp/pm_kernel.c | 38 +++++++++++++++++++++++++++++++++++--- net/mptcp/protocol.h | 1 + net/mptcp/sockopt.c | 2 ++ 4 files changed, 40 insertions(+), 4 deletions(-) diff --git a/include/uapi/linux/mptcp.h b/include/uapi/linux/mptcp.h index 87cfab874e24..04eea6d1d0a9 100644 --- a/include/uapi/linux/mptcp.h +++ b/include/uapi/linux/mptcp.h @@ -70,7 +70,8 @@ struct mptcp_info { __u64 mptcpi_bytes_acked; __u8 mptcpi_subflows_total; __u8 mptcpi_endp_laminar_max; - __u8 reserved[2]; + __u8 mptcpi_endp_fullmesh_max; + __u8 reserved; __u32 mptcpi_last_data_sent; __u32 mptcpi_last_data_recv; __u32 mptcpi_last_ack_recv; diff --git a/net/mptcp/pm_kernel.c b/net/mptcp/pm_kernel.c index df2bc36593d0..054d85045381 100644 --- a/net/mptcp/pm_kernel.c +++ b/net/mptcp/pm_kernel.c @@ -22,6 +22,7 @@ struct pm_nl_pernet { u8 endp_signal_max; u8 endp_subflow_max; u8 endp_laminar_max; + u8 endp_fullmesh_max; u8 limit_add_addr_accepted; u8 limit_extra_subflows; u8 next_id; @@ -70,6 +71,14 @@ u8 mptcp_pm_get_endp_laminar_max(const struct mptcp_sock= *msk) } EXPORT_SYMBOL_GPL(mptcp_pm_get_endp_laminar_max); =20 +u8 mptcp_pm_get_endp_fullmesh_max(const struct mptcp_sock *msk) +{ + struct pm_nl_pernet *pernet =3D pm_nl_get_pernet_from_msk(msk); + + return READ_ONCE(pernet->endp_fullmesh_max); +} +EXPORT_SYMBOL_GPL(mptcp_pm_get_endp_fullmesh_max); + u8 mptcp_pm_get_limit_add_addr_accepted(const struct mptcp_sock *msk) { struct pm_nl_pernet *pernet =3D pm_nl_get_pernet_from_msk(msk); @@ -603,9 +612,12 @@ fill_local_addresses_vec(struct mptcp_sock *msk, struc= t mptcp_addr_info *remote, int i; =20 /* If there is at least one MPTCP endpoint with a fullmesh flag */ - i =3D fill_local_addresses_vec_fullmesh(msk, remote, locals, c_flag_case); - if (i) - return i; + if (mptcp_pm_get_endp_fullmesh_max(msk)) { + i =3D fill_local_addresses_vec_fullmesh(msk, remote, locals, + c_flag_case); + if (i) + return i; + } =20 /* If there is at least one MPTCP endpoint with a laminar flag */ if (mptcp_pm_get_endp_laminar_max(msk)) @@ -790,6 +802,10 @@ static int mptcp_pm_nl_append_new_local_addr(struct pm= _nl_pernet *pernet, addr_max =3D pernet->endp_laminar_max; WRITE_ONCE(pernet->endp_laminar_max, addr_max + 1); } + if (entry->flags & MPTCP_PM_ADDR_FLAG_FULLMESH) { + addr_max =3D pernet->endp_fullmesh_max; + WRITE_ONCE(pernet->endp_fullmesh_max, addr_max + 1); + } =20 pernet->endpoints++; if (!entry->addr.port) @@ -1188,6 +1204,10 @@ int mptcp_pm_nl_del_addr_doit(struct sk_buff *skb, s= truct genl_info *info) addr_max =3D pernet->endp_laminar_max; WRITE_ONCE(pernet->endp_laminar_max, addr_max - 1); } + if (entry->flags & MPTCP_PM_ADDR_FLAG_FULLMESH) { + addr_max =3D pernet->endp_fullmesh_max; + WRITE_ONCE(pernet->endp_fullmesh_max, addr_max - 1); + } =20 pernet->endpoints--; list_del_rcu(&entry->list); @@ -1503,6 +1523,18 @@ int mptcp_pm_nl_set_flags(struct mptcp_pm_addr_entry= *local, changed =3D (local->flags ^ entry->flags) & mask; entry->flags =3D (entry->flags & ~mask) | (local->flags & mask); *local =3D *entry; + + if (changed & MPTCP_PM_ADDR_FLAG_FULLMESH) { + u8 addr_max =3D pernet->endp_fullmesh_max; + + if (entry->flags & MPTCP_PM_ADDR_FLAG_FULLMESH) + addr_max++; + else + addr_max--; + + WRITE_ONCE(pernet->endp_fullmesh_max, addr_max); + } + spin_unlock_bh(&pernet->lock); =20 mptcp_pm_nl_set_flags_all(net, local, changed); diff --git a/net/mptcp/protocol.h b/net/mptcp/protocol.h index 0545eab23125..1e8f40bb7870 100644 --- a/net/mptcp/protocol.h +++ b/net/mptcp/protocol.h @@ -1180,6 +1180,7 @@ void __mptcp_pm_kernel_worker(struct mptcp_sock *msk); u8 mptcp_pm_get_endp_signal_max(const struct mptcp_sock *msk); u8 mptcp_pm_get_endp_subflow_max(const struct mptcp_sock *msk); u8 mptcp_pm_get_endp_laminar_max(const struct mptcp_sock *msk); +u8 mptcp_pm_get_endp_fullmesh_max(const struct mptcp_sock *msk); u8 mptcp_pm_get_limit_add_addr_accepted(const struct mptcp_sock *msk); u8 mptcp_pm_get_limit_extra_subflows(const struct mptcp_sock *msk); =20 diff --git a/net/mptcp/sockopt.c b/net/mptcp/sockopt.c index a28a48385885..de90a2897d2d 100644 --- a/net/mptcp/sockopt.c +++ b/net/mptcp/sockopt.c @@ -982,6 +982,8 @@ void mptcp_diag_fill_info(struct mptcp_sock *msk, struc= t mptcp_info *info) mptcp_pm_get_endp_subflow_max(msk); info->mptcpi_endp_laminar_max =3D mptcp_pm_get_endp_laminar_max(msk); + info->mptcpi_endp_fullmesh_max =3D + mptcp_pm_get_endp_fullmesh_max(msk); } =20 if (__mptcp_check_fallback(msk)) --=20 2.51.0 From nobody Sat Oct 11 06:20:05 2025 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 0FC231F95C for ; Wed, 8 Oct 2025 14:00:21 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=10.30.226.201 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1759932022; cv=none; b=fqXnVxWC9QanDLvbOTgov72ZYOJxdEi7KFQhGsIVQm/Yw+akFk9RFZ1xmPTlp92tMgAMyVOMp1SD81cxESqMowZEfYKkxt0qWx3j2SK8morlA/LFyZ5Yc9tJJcnoHQftPGj9/zRdE5OWnhKB4hDeK5AB/CHkmkyXRaTfy20YD3c= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1759932022; c=relaxed/simple; bh=MsQqJmsslGVp4+rpfxpVwFmErV+KJIOlUCNxL3CWAJQ=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=H5Qxu1zTrVOk1PvQFPwDZKMqOKMy0eB0LZ6HNmsccChjencYSAdtA6SQAnCnysdEnEGEfYfwCtTVBwKXBcirByjbbfDj1FHuNQ2w2qx4qTgY1geNdRqPt3LuPv7IMShpZBZWZRBUt7U3CvhlEikoACy6rh/vdhcIEVCwzAbKV0M= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=F72+snhY; 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="F72+snhY" Received: by smtp.kernel.org (Postfix) with ESMTPSA id 29EC6C4CEE7; Wed, 8 Oct 2025 14:00:21 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1759932021; bh=MsQqJmsslGVp4+rpfxpVwFmErV+KJIOlUCNxL3CWAJQ=; h=From:Date:Subject:References:In-Reply-To:To:Cc:From; b=F72+snhYIylNljV2O8iw7Ma6Rxgf3dQ9uQQnsUr+M1yQ0xvf/SLf0LKZZU5blPqj5 Gi94RZDEXGRo6e0B+d78o/ImVv8co8vgT+e80rVysyozw4toDWSSlO0m5H/aq9mCsG RgB1b9hlv4MD3tKhSkQhVY4X6BW2PymLUidah8miyJeKfInKa26ySb052rKBQt+Og/ qV++RGj/A+sEkEFksnrNYIPdxwTHPkuoDBRbBjF2SCCrv/ZlRavcsu7udDinhAepqZ 0UaPDhaHiVUY3OJsOKR80oTHVRytJHqJbagi+b5dRi5DNMSY/XYQCebBdY2/UZbhvu OAk1gvRt4VKNw== From: "Matthieu Baerts (NGI0)" Date: Wed, 08 Oct 2025 16:00:01 +0200 Subject: [PATCH mptcp-net 7/7] mptcp: pm: in kernel: only use fullmesh endp if any 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: <20251008-c-flag-add-addr-delay-v1-7-c624eb3bf10d@kernel.org> References: <20251008-c-flag-add-addr-delay-v1-0-c624eb3bf10d@kernel.org> In-Reply-To: <20251008-c-flag-add-addr-delay-v1-0-c624eb3bf10d@kernel.org> To: MPTCP Upstream Cc: "Matthieu Baerts (NGI0)" X-Mailer: b4 0.14.3 X-Developer-Signature: v=1; a=openpgp-sha256; l=2497; i=matttbe@kernel.org; h=from:subject:message-id; bh=MsQqJmsslGVp4+rpfxpVwFmErV+KJIOlUCNxL3CWAJQ=; b=owGbwMvMwCVWo/Th0Gd3rumMp9WSGDKe5eX95SmUr8hNDDS6rsDwfftxK7b1Z01kZqjPmPOcc 4fM9C8GHaUsDGJcDLJiiizSbZH5M59X8ZZ4+VnAzGFlAhnCwMUpABNhC2L4K+g0TVLLb1aKg5d0 0a9S83nxRgV6kv6NHGtu+/c8Plh2npFhs1wYY13kv7divaaW+xsfXM5wmpn313t3G9s3oR/6XYY sAA== X-Developer-Key: i=matttbe@kernel.org; a=openpgp; fpr=E8CB85F76877057A6E27F77AF6B7824F4269A073 Our documentation is saying that the in-kernel PM is only using fullmesh endpoints to establish subflows to announced addresses when at least one endpoint has a fullmesh flag. But this was not totally correct: only fullmesh endpoints were used if at least one endpoint *from the same address family as the received ADD_ADDR* has the fullmesh flag. This is confusing, and it seems clearer not to have differences depending on the address family. So, now, when at least one MPTCP endpoint has a fullmesh flag, the local addresses are picked from all fullmesh endpoints, which might be 0 if there are no endpoints for the correct address family. One selftest needs to be adapted for this behaviour change. Signed-off-by: Matthieu Baerts (NGI0) --- net/mptcp/pm_kernel.c | 10 +++------- tools/testing/selftests/net/mptcp/mptcp_join.sh | 6 +++++- 2 files changed, 8 insertions(+), 8 deletions(-) diff --git a/net/mptcp/pm_kernel.c b/net/mptcp/pm_kernel.c index 054d85045381..40a0572b3149 100644 --- a/net/mptcp/pm_kernel.c +++ b/net/mptcp/pm_kernel.c @@ -609,15 +609,11 @@ fill_local_addresses_vec(struct mptcp_sock *msk, stru= ct mptcp_addr_info *remote, struct mptcp_pm_local *locals) { bool c_flag_case =3D remote->id && mptcp_pm_add_addr_c_flag_case(msk); - int i; =20 /* If there is at least one MPTCP endpoint with a fullmesh flag */ - if (mptcp_pm_get_endp_fullmesh_max(msk)) { - i =3D fill_local_addresses_vec_fullmesh(msk, remote, locals, - c_flag_case); - if (i) - return i; - } + if (mptcp_pm_get_endp_fullmesh_max(msk)) + return fill_local_addresses_vec_fullmesh(msk, remote, locals, + c_flag_case); =20 /* If there is at least one MPTCP endpoint with a laminar flag */ if (mptcp_pm_get_endp_laminar_max(msk)) diff --git a/tools/testing/selftests/net/mptcp/mptcp_join.sh b/tools/testin= g/selftests/net/mptcp/mptcp_join.sh index 78a1aa4ecff2..e7a498dd5a46 100755 --- a/tools/testing/selftests/net/mptcp/mptcp_join.sh +++ b/tools/testing/selftests/net/mptcp/mptcp_join.sh @@ -2952,7 +2952,11 @@ mixed_tests() pm_nl_add_endpoint $ns1 10.0.1.1 flags signal speed=3Dslow \ run_tests $ns1 $ns2 dead:beef:2::1 - chk_join_nr 1 1 1 + if mptcp_lib_kallsyms_has "mptcp_pm_get_endp_fullmesh_max$"; then + chk_join_nr 0 0 0 + else + chk_join_nr 1 1 1 + fi fi =20 # fullmesh still tries to create all the possibly subflows with --=20 2.51.0