From patchwork Thu Mar 13 10:20:50 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Matthieu Baerts X-Patchwork-Id: 14014668 X-Patchwork-Delegate: kuba@kernel.org 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 2798F1FBCAF; Thu, 13 Mar 2025 10:21:38 +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=1741861299; cv=none; b=km/fly8IBOeveywzYuNwc3spPEzuUCs+ztoyzZsy1Db50sjjAgX1IJqWdIBu1VhGkhM+6azdxs7GFQT6T1QkHAo7tmZrObGuzqy+HN71dtdzAkWY2CHbq5+S9rVkax6vKqChSsLadOv7dlcNrgG6HE/bddPjip0ww0CEAFavc60= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1741861299; c=relaxed/simple; bh=XJYoviCyRiisxNYLzayrswDE7DdaaQCIqUHpY/vk9ss=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=TKUfBmShGJsrjqwwFaHRY16Y5lFuR3SDa22uxhqjNo/1YpFZAlN8qHhV/xUaAj0I2z9uhFFG+23c3bOO5ghzYouUQI9uZeeXOf07107WrWmWNKfSuInNVZ9IIJiqzAiG2NGSUsdxzv35ehWEKJRxS6z/roaxIze9e/Q1qq2eNv8= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=f+xhbSkF; 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="f+xhbSkF" Received: by smtp.kernel.org (Postfix) with ESMTPSA id 4344AC4CEF3; Thu, 13 Mar 2025 10:21:27 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1741861298; bh=XJYoviCyRiisxNYLzayrswDE7DdaaQCIqUHpY/vk9ss=; h=From:Date:Subject:References:In-Reply-To:To:Cc:From; b=f+xhbSkF6F3rdD1ocQ+43DH10X9hcU+7giKRNyn44bFctcsEjWa/pgK48ueE0nTHj 4IZ7f/PAY0x2ACE7dGSUdDDfMdIhhbC+nSAwjbgDUfXQtiQuQIxw2WFItrbPz9z882 ps2YLZPuEe4sVlGMOf/72G6sygm/xl5aadSjxRr523RxsTkub1XICvENocvujhhBC0 zrEoYAptnMmj/bKDT3EyGUE40ehghsyREXxZTE118SS2QoG1N7MD3OiP3lWD8eMZ6C xKPi2df9LJ8d/jWOaIaGcPTezli3DTEatd+PEQB02DWkdlfnyuf15+Y2oDcJ1r53yt cn/OpsfChR7Ng== From: "Matthieu Baerts (NGI0)" Date: Thu, 13 Mar 2025 11:20:50 +0100 Subject: [PATCH net-next 01/12] mptcp: pm: split netlink and in-kernel init Precedence: bulk X-Mailing-List: netdev@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Message-Id: <20250313-net-next-mptcp-pm-ops-intro-v1-1-f4e4a88efc50@kernel.org> References: <20250313-net-next-mptcp-pm-ops-intro-v1-0-f4e4a88efc50@kernel.org> In-Reply-To: <20250313-net-next-mptcp-pm-ops-intro-v1-0-f4e4a88efc50@kernel.org> To: mptcp@lists.linux.dev, Mat Martineau , Geliang Tang , "David S. Miller" , Eric Dumazet , Jakub Kicinski , Paolo Abeni , Simon Horman , Jonathan Corbet , Shuah Khan Cc: netdev@vger.kernel.org, linux-kernel@vger.kernel.org, linux-doc@vger.kernel.org, linux-kselftest@vger.kernel.org, "Matthieu Baerts (NGI0)" X-Mailer: b4 0.14.2 X-Developer-Signature: v=1; a=openpgp-sha256; l=2683; i=matttbe@kernel.org; h=from:subject:message-id; bh=XJYoviCyRiisxNYLzayrswDE7DdaaQCIqUHpY/vk9ss=; b=owEBbQKS/ZANAwAIAfa3gk9CaaBzAcsmYgBn0rGaMSh4OMDNqyVG+QuN2O0c9A/ZGBmefdFVS Su/Ct4Lm7uJAjMEAAEIAB0WIQToy4X3aHcFem4n93r2t4JPQmmgcwUCZ9KxmgAKCRD2t4JPQmmg c5A1EACgj4ocDuDkl22qAgqp04unOYJsYjtu60TFhTcJfsmL1i4icF8YodueGrkZhvsG3au+c6w gckQ4h05Wuo7m5O9D6JaW4MX7n4JnZ03S3R39djyfC+0wu/lv5gI7Jf7+krnIN4RuYE58/CMIvg pGxSx0/4ZTfAgCgWJ+sIiMJFQgajajyoSSLwhFwmr1qb3aEQO7bsDH8h0gphIqWDl5iHVHp03/W ACPUCEBrgmrhRik9VT2x0HKxjzeaozLylrSy9t6WN9bl0g7oiWHFS+IQARibWGxb6iOvjuDNGXt OKrwASKkGDtw0yMMpZrvphKolhDowbVjL5H8EMs1JU9yUazk9GwCnePBDdWjMg1IDF9kuwyPaKY SQ+LLLbXU69sNu2zIqoTrFoUEPY53atm+81gQxxfBzI9TJWRUa+zX35tsm3e0Rl4Yw1wWj1jPLk 0ncX3cedNu6YsYRQp+4dX4FTfdtFRQZKDWfDPP+iA+Fwvwyq2HJwG1iYAM6XHuJvkQxfX2fUWjJ ZJPNdUrRE16Iq7mYh3fnefTR9iHX25PDas029wIkhdD4tWbczG8bgsQh/uUTuLKPqpL7IYKffat Gr/qSu2x2ukjgIwc9RQZoAd2Fn0tRB4IOb8vv5u9G+67RDRvmTpVwnk8MhCSEZMMl2unljdA2lq JYk1IioW37zUeJw== X-Developer-Key: i=matttbe@kernel.org; a=openpgp; fpr=E8CB85F76877057A6E27F77AF6B7824F4269A073 X-Patchwork-Delegate: kuba@kernel.org The registration of mptcp_genl_family is useful for both the in-kernel and the userspace PM. It should then be done in pm_netlink.c. On the other hand, the registration of the in-kernel pernet subsystem is specific to the in-kernel PM, and should stay there in pm_kernel.c. Reviewed-by: Mat Martineau Signed-off-by: Matthieu Baerts (NGI0) --- net/mptcp/pm.c | 1 + net/mptcp/pm_kernel.c | 5 +---- net/mptcp/pm_netlink.c | 6 ++++++ net/mptcp/protocol.h | 1 + 4 files changed, 9 insertions(+), 4 deletions(-) diff --git a/net/mptcp/pm.c b/net/mptcp/pm.c index 833839d7286e717599579356af3117f70e39de0a..8e6a325a389803196c35175cd5ea7637624d0ee2 100644 --- a/net/mptcp/pm.c +++ b/net/mptcp/pm.c @@ -1022,5 +1022,6 @@ void mptcp_pm_data_init(struct mptcp_sock *msk) void __init mptcp_pm_init(void) { + mptcp_pm_kernel_register(); mptcp_pm_nl_init(); } diff --git a/net/mptcp/pm_kernel.c b/net/mptcp/pm_kernel.c index daf8f98a316439a67c12f63f2388ef497dae08dd..62ae68abb2cb0066a30a3fab88ae5f082c523413 100644 --- a/net/mptcp/pm_kernel.c +++ b/net/mptcp/pm_kernel.c @@ -1400,11 +1400,8 @@ static struct pernet_operations mptcp_pm_pernet_ops = { .size = sizeof(struct pm_nl_pernet), }; -void __init mptcp_pm_nl_init(void) +void __init mptcp_pm_kernel_register(void) { if (register_pernet_subsys(&mptcp_pm_pernet_ops) < 0) panic("Failed to register MPTCP PM pernet subsystem.\n"); - - if (genl_register_family(&mptcp_genl_family)) - panic("Failed to register MPTCP PM netlink family\n"); } diff --git a/net/mptcp/pm_netlink.c b/net/mptcp/pm_netlink.c index b2e5bbdcd5df920887ffbd9b6d652f422b32d49e..50aaf259959aeaf36e7ab954c6f7957eaf2bc390 100644 --- a/net/mptcp/pm_netlink.c +++ b/net/mptcp/pm_netlink.c @@ -625,3 +625,9 @@ struct genl_family mptcp_genl_family __ro_after_init = { .mcgrps = mptcp_pm_mcgrps, .n_mcgrps = ARRAY_SIZE(mptcp_pm_mcgrps), }; + +void __init mptcp_pm_nl_init(void) +{ + if (genl_register_family(&mptcp_genl_family)) + panic("Failed to register MPTCP PM netlink family\n"); +} diff --git a/net/mptcp/protocol.h b/net/mptcp/protocol.h index c51b6a22d5e099c4486cc76fc4abc9a91c574c4a..ffb70fe08181815c23629354f78e3bdbe599e703 100644 --- a/net/mptcp/protocol.h +++ b/net/mptcp/protocol.h @@ -1147,6 +1147,7 @@ static inline u8 subflow_get_local_id(const struct mptcp_subflow_context *subflo return local_id; } +void __init mptcp_pm_kernel_register(void); void __init mptcp_pm_nl_init(void); void mptcp_pm_worker(struct mptcp_sock *msk); void __mptcp_pm_kernel_worker(struct mptcp_sock *msk); From patchwork Thu Mar 13 10:20:51 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Matthieu Baerts X-Patchwork-Id: 14014669 X-Patchwork-Delegate: kuba@kernel.org 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 7E19D264A74; Thu, 13 Mar 2025 10:21: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=1741861306; cv=none; b=P52hYqTh3nYyDLJK2odbT9O31w1LKK+hVXdAowaD+KClG4ezHZzlYcb6ofL0QHtKAwiZiA9QyhRK8WNGSnsVql9IOr/t3SOVm9ihKdKLb71nyIgpxjaoY1Q8ljwkfYWQV3gT868ye2YlXu3RZC1KsIhgJh4hORYZ9fynzGQXJ5o= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1741861306; c=relaxed/simple; bh=32UPKDewotgZNZKsRYb6CV7jInCkNa88x0jv073sCDQ=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=uhHQsR+EhfX/3nCFAzVVTXUTFByGLXHmvAcsxi6x/5OIOwqGJuuT8RKjxzMkwyIUQNANF1FQUgQ7A73CJD+sBJckW8qhBMIAItK8e0o5q7E3g6SbofIkPy0K2Z1QczE6Spkr+cfgR8IriqPT2KomSFFiN0ri/C6B1zIL/DCD5as= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=cePu+dHc; 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="cePu+dHc" Received: by smtp.kernel.org (Postfix) with ESMTPSA id A3002C4AF0B; Thu, 13 Mar 2025 10:21:39 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1741861306; bh=32UPKDewotgZNZKsRYb6CV7jInCkNa88x0jv073sCDQ=; h=From:Date:Subject:References:In-Reply-To:To:Cc:From; b=cePu+dHc5f8rXvXxNK/Xb2hCyb1kKTEOtYYVjcuA96J6lVY9zZz6FswesWnTOUEEA tmUklB9ohS8kEYy0PMq/MRTf5sjnF1RWG7mjVB28qVvr0C+cDbdAy+WDwXzdtpiiyF 1v16lqgVYOVQCdXPyW45IbReOWFS2s7GXTzOgq5upqYqNwHB77CgfO5IoDYIP0cV1x hdLZ5GpqtvRJ8gyHtyXjO190dzVGJsFFwMz6dJX6n2ufAVHKFNYWvGhVmAdyUN+6go VlS3sY1wvYQnc/dqKV/CQDzhoqjktGoPPBGgyf5YiEbBB6w16AJ5tmPIKHEkj6ea8l xU8s2vZlx1K/g== From: "Matthieu Baerts (NGI0)" Date: Thu, 13 Mar 2025 11:20:51 +0100 Subject: [PATCH net-next 02/12] mptcp: pm: in-kernel: use kmemdup helper Precedence: bulk X-Mailing-List: netdev@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Message-Id: <20250313-net-next-mptcp-pm-ops-intro-v1-2-f4e4a88efc50@kernel.org> References: <20250313-net-next-mptcp-pm-ops-intro-v1-0-f4e4a88efc50@kernel.org> In-Reply-To: <20250313-net-next-mptcp-pm-ops-intro-v1-0-f4e4a88efc50@kernel.org> To: mptcp@lists.linux.dev, Mat Martineau , Geliang Tang , "David S. Miller" , Eric Dumazet , Jakub Kicinski , Paolo Abeni , Simon Horman , Jonathan Corbet , Shuah Khan Cc: netdev@vger.kernel.org, linux-kernel@vger.kernel.org, linux-doc@vger.kernel.org, linux-kselftest@vger.kernel.org, "Matthieu Baerts (NGI0)" , Geliang Tang X-Mailer: b4 0.14.2 X-Developer-Signature: v=1; a=openpgp-sha256; l=1552; i=matttbe@kernel.org; h=from:subject:message-id; bh=O65qeAx5zjZUEHdX8kg332gnhPoA2Gjq34agpMfogHE=; b=owEBbQKS/ZANAwAIAfa3gk9CaaBzAcsmYgBn0rGaTZ7KzefJTwuvsq/iGYwusaT2hH2OmdpOq vJjdaTPMbCJAjMEAAEIAB0WIQToy4X3aHcFem4n93r2t4JPQmmgcwUCZ9KxmgAKCRD2t4JPQmmg c0m/D/9zg0gP50RjEapXNSiEL44GG50/o+D9+01Q8vuMK6hpQJzUa3tc9ZhGjum5VsPl6mvcOsD Q9vo5AQ5OJPi31RXBpRgyPFEhLA54mzvwGgAukh8WEysbIN9P2jXUS7v+yLZp+EiElkS6AWdf23 NsRduY4ei8ZXhRSvpEOfolhSIipxeEPWhq1+P6SWEKEaKvwnr9iRtPhEXohTB/PBFju+GBXPU9O 8+p6aRUGTW/EE8YsTf/XdrPkB2pY5d27Mpx3r0o3DC0zpAQPSP8FBvNrmpa0Y+xZlAXM7wE/PFa weIko+lvkZVd+IDDFqpOVfUDpGG4cP+uxgiu6EsJ2sQRAErFCobm8K2ycZ7CcU8EosEpobKrHvE Kcdd2YH/LJqY0NXNe4IstV+fVA7/hfdYkfwWHGCtGp5/9F21F2P5YzY2kPCwMzE1xr8UlO1fZZE nm6xXkAoLW+t5ICHHZtn1K61hbs52qUoZtP4bjAeKo1pqIYPBa0Yh5Rbl5Rx/qIXYGxBtj7Ilzj c5rNa50dQTLZi+F6ALTIxBIB76VDy4EGrxU/8/S9DvJTWSuguP0sokqi1XE4ahWVbIGCAqBMlOp 2PlAvy2O9XKwrzHiPPol7whM43DASZAfm1GB9IIUsrDepWnMFr8XXtFv7uB5ggXAHAjydccSnHh n2kQKCAsMEt/i4g== X-Developer-Key: i=matttbe@kernel.org; a=openpgp; fpr=E8CB85F76877057A6E27F77AF6B7824F4269A073 X-Patchwork-Delegate: kuba@kernel.org From: Geliang Tang Instead of using kmalloc() or kzalloc() to allocate an entry and then immediately duplicate another entry to the newly allocated one, kmemdup() helper can be used to simplify the code. Signed-off-by: Geliang Tang Reviewed-by: Matthieu Baerts (NGI0) Signed-off-by: Matthieu Baerts (NGI0) --- net/mptcp/pm_kernel.c | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/net/mptcp/pm_kernel.c b/net/mptcp/pm_kernel.c index 62ae68abb2cb0066a30a3fab88ae5f082c523413..806a9b5b3c07a350c20ec7085183c26af9f50d44 100644 --- a/net/mptcp/pm_kernel.c +++ b/net/mptcp/pm_kernel.c @@ -710,11 +710,10 @@ int mptcp_pm_nl_get_local_id(struct mptcp_sock *msk, return ret; /* address not found, add to local list */ - entry = kmalloc(sizeof(*entry), GFP_ATOMIC); + entry = kmemdup(skc, sizeof(*skc), GFP_ATOMIC); if (!entry) return -ENOMEM; - *entry = *skc; entry->addr.port = 0; ret = mptcp_pm_nl_append_new_local_addr(pernet, entry, true, false); if (ret < 0) @@ -817,13 +816,12 @@ int mptcp_pm_nl_add_addr_doit(struct sk_buff *skb, struct genl_info *info) return -EINVAL; } - entry = kzalloc(sizeof(*entry), GFP_KERNEL_ACCOUNT); + entry = kmemdup(&addr, sizeof(addr), GFP_KERNEL_ACCOUNT); if (!entry) { GENL_SET_ERR_MSG(info, "can't allocate addr"); return -ENOMEM; } - *entry = addr; if (entry->addr.port) { ret = mptcp_pm_nl_create_listen_socket(skb->sk, entry); if (ret) { From patchwork Thu Mar 13 10:20:52 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Matthieu Baerts X-Patchwork-Id: 14014670 X-Patchwork-Delegate: kuba@kernel.org 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 53DB7265CB9; Thu, 13 Mar 2025 10:21:57 +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=1741861319; cv=none; b=tlkJZtQ2rQEyooj97PIg56xriApyp08/VVlS8knIFLkDQFPJh3Hzu7k6YTPZefpClTzrh//NTvKMzCjhpqiYYB2zXiBG8+sRyQNto7TDw9krq1m/zsfE8ZBUICd1Mn9K6GXWErgxb6TQlXYkfLUaqipdnCK0NxrXKtHKsMouNnU= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1741861319; c=relaxed/simple; bh=o0CjrfZ5Is2Xux0SAn6zModXKrNd/29zuYsF/mkkoEo=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=SigXNXow4iUeD4HsmPxUPmYc2frq39dPwJRGZyD9/vRjJwVaLNkINSvglXRIZidgkE+HBQUJz8rhSHFna3NJH16ZP9912rii3Ss2IcgiIF9jd0EXapsdl477P4SBhu1ulZHOnD5RN/+fQsdIOBneInN9+F2//rKWDpvc6aXSIr4= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=j9DgNpNB; 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="j9DgNpNB" Received: by smtp.kernel.org (Postfix) with ESMTPSA id 4D4FDC4CEEB; Thu, 13 Mar 2025 10:21:46 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1741861317; bh=o0CjrfZ5Is2Xux0SAn6zModXKrNd/29zuYsF/mkkoEo=; h=From:Date:Subject:References:In-Reply-To:To:Cc:From; b=j9DgNpNBbokOYGPvl1RgIi4wbdzj9NA9CKPQP8IuPfk2YiVm57J+HuUuYmI4XpuQA jX67foYWSeXki0emiAcbbTAOAFamGnu9I8/a2ghOcEOpSYy8IY6lbH+aJKwii3g7A8 Xr1nRSqt0gs19G9hPMRiDHGyHJ9JGRW0w6/DBAjj23RTV2cHMVE/enfOp3BoK/U84/ Ilv2Lp0wNyxrlOP6dfXRuooCpFTrzQ8MEOyLIU0AxAZ7hhsWLiAr0tlgpoH9P8AAMS X2y/nLloqSQz4DjoB3in5h+DE2XG3GFkk6Muf0S9fYuG9l8b2sSFre+l0B42wBjiBV FL/0kRhabjZKA== From: "Matthieu Baerts (NGI0)" Date: Thu, 13 Mar 2025 11:20:52 +0100 Subject: [PATCH net-next 03/12] mptcp: pm: use pm variable instead of msk->pm Precedence: bulk X-Mailing-List: netdev@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Message-Id: <20250313-net-next-mptcp-pm-ops-intro-v1-3-f4e4a88efc50@kernel.org> References: <20250313-net-next-mptcp-pm-ops-intro-v1-0-f4e4a88efc50@kernel.org> In-Reply-To: <20250313-net-next-mptcp-pm-ops-intro-v1-0-f4e4a88efc50@kernel.org> To: mptcp@lists.linux.dev, Mat Martineau , Geliang Tang , "David S. Miller" , Eric Dumazet , Jakub Kicinski , Paolo Abeni , Simon Horman , Jonathan Corbet , Shuah Khan Cc: netdev@vger.kernel.org, linux-kernel@vger.kernel.org, linux-doc@vger.kernel.org, linux-kselftest@vger.kernel.org, "Matthieu Baerts (NGI0)" , Geliang Tang X-Mailer: b4 0.14.2 X-Developer-Signature: v=1; a=openpgp-sha256; l=1664; i=matttbe@kernel.org; h=from:subject:message-id; bh=Lum1mU2EuCIAet8E5qg09InifroIj9AZFDk1mNVEyWA=; b=owEBbQKS/ZANAwAIAfa3gk9CaaBzAcsmYgBn0rGafkY0DTp4jYWOVXpJtuTkl0P1tfntlRyl0 40LQV/lJNuJAjMEAAEIAB0WIQToy4X3aHcFem4n93r2t4JPQmmgcwUCZ9KxmgAKCRD2t4JPQmmg cwhrEADdFiwZGOsbSzQYg2yHmK5+0HjJq2daQap1pmQVFyUW1Zgq+VqMPUpz3ofHoHs/SefrXde jaKN7ZBeqBQFti/K6FquzRmpCuHU/qR1A4Gar/o0i6efqmUNcMTmx0eU89lPKxUzOMK0SgvSzIb c/Q+is8NBB9nUrhSban6+MBR5apCnI8S51bNpkK625ekp4LsKGhK0Pl1HQy9OSZs0WDbhlDZCKc m6wuTJSMmBMZ17Mclx8TAU+NmgLoGlKXtcGzF0ufIoEPqnMJthFO0aCGVdtOF8Fsm4j75nvP2aL ZCH3DVay98vacgijrU9fcOme8TkMpahPa6KlQpzQ3ux1L0aAm1tXeTSApuYdX622BvFCXjwGFLv MHaON58/lFYLIphVoZJ5i2AHPniSrUQkZ67dUcPb+yDJirhX3y/A9AjZpzSI1ikbjzON7Qcu1xP eCg/NxRK6S3icORj2EVHYKdwI8J8c2KBCmMVTsw8uRq/pVckTtUeeoWRyhkMVQAM4/D22h+RyUo 2d0xWKml5HIEZ+Hn5GAFhVFnpC3U0IEUoGLKNfa9cYZ+3omGol2OE5txy4fOF8SqQrloLFgD9WC 83mX0qyaysB69KhzFi8g5hrO0uhMVxICp+w/3Olf91c0SBTwAmzSr1KCegiwn28Yz504TYqM6Ci wCoDHtxoxTvqU7g== X-Developer-Key: i=matttbe@kernel.org; a=openpgp; fpr=E8CB85F76877057A6E27F77AF6B7824F4269A073 X-Patchwork-Delegate: kuba@kernel.org From: Geliang Tang The variable "pm" has been defined in mptcp_pm_fully_established() and mptcp_pm_data_reset() as "msk->pm", so use "pm" directly instead of using "msk->pm". Signed-off-by: Geliang Tang Reviewed-by: Matthieu Baerts (NGI0) Signed-off-by: Matthieu Baerts (NGI0) --- net/mptcp/pm.c | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/net/mptcp/pm.c b/net/mptcp/pm.c index 8e6a325a389803196c35175cd5ea7637624d0ee2..04a156395aaddf50e67d10479086591a37063fa3 100644 --- a/net/mptcp/pm.c +++ b/net/mptcp/pm.c @@ -511,13 +511,13 @@ void mptcp_pm_fully_established(struct mptcp_sock *msk, const struct sock *ssk) * be sure to serve this event only once. */ if (READ_ONCE(pm->work_pending) && - !(msk->pm.status & BIT(MPTCP_PM_ALREADY_ESTABLISHED))) + !(pm->status & BIT(MPTCP_PM_ALREADY_ESTABLISHED))) mptcp_pm_schedule_work(msk, MPTCP_PM_ESTABLISHED); - if ((msk->pm.status & BIT(MPTCP_PM_ALREADY_ESTABLISHED)) == 0) + if ((pm->status & BIT(MPTCP_PM_ALREADY_ESTABLISHED)) == 0) announce = true; - msk->pm.status |= BIT(MPTCP_PM_ALREADY_ESTABLISHED); + pm->status |= BIT(MPTCP_PM_ALREADY_ESTABLISHED); spin_unlock_bh(&pm->lock); if (announce) @@ -1009,7 +1009,7 @@ void mptcp_pm_data_reset(struct mptcp_sock *msk) WRITE_ONCE(pm->addr_signal, 0); WRITE_ONCE(pm->remote_deny_join_id0, false); pm->status = 0; - bitmap_fill(msk->pm.id_avail_bitmap, MPTCP_PM_MAX_ADDR_ID + 1); + bitmap_fill(pm->id_avail_bitmap, MPTCP_PM_MAX_ADDR_ID + 1); } void mptcp_pm_data_init(struct mptcp_sock *msk) From patchwork Thu Mar 13 10:20:53 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Matthieu Baerts X-Patchwork-Id: 14014671 X-Patchwork-Delegate: kuba@kernel.org 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 A1736264F90; Thu, 13 Mar 2025 10:22:07 +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=1741861327; cv=none; b=liqH3hg/gPpu+Nmw+j4pBG9SFub/n/04xi3LuVHVROijKVUI+UHNVlA8K5r1lJeDkCX/4P2wktKax410rkZbUNoS6N3O7329Nll/nPDoY6rkdb8+gDatkojo+HxLMIhQdKiV/QS4bjoEPvNOy09KUX71dmYolLSqbPrdsUfHE/4= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1741861327; c=relaxed/simple; bh=gnvAK2DVqKk1vkd3h90UM+nAc7VvLnrzZwaOJQEjsak=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=cL+kG4aXYczJ7v4EGYQeoDxOKsBgHgrEN12FyzxbScfouDr0KGAgtvQuhJ1AoqncmJgGb57s8vVoJHUhajRZF+e/4yC0KzJDlnNwOWpIMYIoEUtGaOAzeuNNq7TjZ2FQ/8kbpKdnwPpsVygwcDFW6DYCxpp7E+Wd5peDL751cgA= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=X6R7NmsL; 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="X6R7NmsL" Received: by smtp.kernel.org (Postfix) with ESMTPSA id 94A1EC4CEDD; Thu, 13 Mar 2025 10:21:59 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1741861327; bh=gnvAK2DVqKk1vkd3h90UM+nAc7VvLnrzZwaOJQEjsak=; h=From:Date:Subject:References:In-Reply-To:To:Cc:From; b=X6R7NmsL33fxtO/HsS8hr/GPx5Xz2c8rdmJoWTei2zQ3mq8PCLAR6Vn4lQhsBb1x1 Oke1z1fIa4Qr1ZhP6IbuL4CRj/PlMs2JP7zEjq7sFeHhKJWPG1vERorYv6gQpjVt6X H6BpQO5GoOpr82joZSecaoQigfM8ST9CWUoezryQXTvtQRmXhND5HFUjK5Gy/PDhE4 jN9iAvegs7A95yu4/PSgTfhHG96gfF6BRRFalPl+AcXX+xxcl7m9dKwz3/1hye9lVg QfDp2ybzjy9mAbX8jns9JTF9hy8wTEHfeikb2JtXhKRSBNMEDAJzP1TwMJHD3BXSvs 6yNQWUlgi4s7g== From: "Matthieu Baerts (NGI0)" Date: Thu, 13 Mar 2025 11:20:53 +0100 Subject: [PATCH net-next 04/12] mptcp: pm: only fill id_avail_bitmap for in-kernel pm Precedence: bulk X-Mailing-List: netdev@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Message-Id: <20250313-net-next-mptcp-pm-ops-intro-v1-4-f4e4a88efc50@kernel.org> References: <20250313-net-next-mptcp-pm-ops-intro-v1-0-f4e4a88efc50@kernel.org> In-Reply-To: <20250313-net-next-mptcp-pm-ops-intro-v1-0-f4e4a88efc50@kernel.org> To: mptcp@lists.linux.dev, Mat Martineau , Geliang Tang , "David S. Miller" , Eric Dumazet , Jakub Kicinski , Paolo Abeni , Simon Horman , Jonathan Corbet , Shuah Khan Cc: netdev@vger.kernel.org, linux-kernel@vger.kernel.org, linux-doc@vger.kernel.org, linux-kselftest@vger.kernel.org, "Matthieu Baerts (NGI0)" , Geliang Tang X-Mailer: b4 0.14.2 X-Developer-Signature: v=1; a=openpgp-sha256; l=1355; i=matttbe@kernel.org; h=from:subject:message-id; bh=pOKZPF4QJCBz4k7O7CQx5Pu5iovYe1r/0fZytYNL+58=; b=owEBbQKS/ZANAwAIAfa3gk9CaaBzAcsmYgBn0rGaYaqtFzbgJXXm7XHO4mV3RMVL8bWv60E0S pjcg6KlfP+JAjMEAAEIAB0WIQToy4X3aHcFem4n93r2t4JPQmmgcwUCZ9KxmgAKCRD2t4JPQmmg c4MaD/9AtiDNEEeGKWrQKS+a8YSlA3NEU0+Qq6nbeSercFNBgRX1PJaQLR7UZcLw0yW2r9xakV0 rA3SBdE0NzSUzpL1J9dwgT+ny8TGH8LKt4wLSwC7vXV30enX0mkHHypluFDf6i3dkmF8bWKifug B0RYsxDVRRbyDYA6zIeJttwYN5ptBUAShxX33zjSmTxAQV/NTcWKjLnbvOUBh+T+Q+ZAdGMI1mg 79+vM0QaKUnguwW3xPcH25cPX6BV/5/eMxOod/4fj9e4cwBzbSLYsljcLr2VnyeEA9sMHq5IZNI V2GjptHUURlqHP8ej8HDnj+gEoVngL9hWqyXpjsJ6dCnc0t+dj9s6EGmqeIA0mfjfyxk1WnCYdl ZLpVN8fn+cpGXyZB5cR2ZZeWhXafFoVaIuFL1ntO23QwD0KMs3Wc+fPz1Wz9sg5SURJqbNu+vl2 ri0W1p5liSg6sYzwsusNQcL5XC3mSVOyIoicnEvOqnacoXw5SVQrfl8dZoju+G4WsxFtEdYXQpN QzrehBTI30+MZO7FaLtd+9JOTOCn+U2tW3029Tmi0jn+cSaJLbhaURkH5rZGxjw00zDLYtl0TEB WU9LobaDNtTziCygtav+UTD1FCoVjRYHmcuHdjrN4iPLldbsJa5foHPwN/h417SRgT/KcPtGJBD EjCs1KfNsSLHThA== X-Developer-Key: i=matttbe@kernel.org; a=openpgp; fpr=E8CB85F76877057A6E27F77AF6B7824F4269A073 X-Patchwork-Delegate: kuba@kernel.org From: Geliang Tang id_avail_bitmap of struct mptcp_pm_data is currently only used by the in-kernel PM, so this patch moves its initialization operation under the "if (pm_type == MPTCP_PM_TYPE_KERNEL)" condition. Suggested-by: Matthieu Baerts Signed-off-by: Geliang Tang Reviewed-by: Matthieu Baerts (NGI0) Signed-off-by: Matthieu Baerts (NGI0) --- net/mptcp/pm.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/net/mptcp/pm.c b/net/mptcp/pm.c index 04a156395aaddf50e67d10479086591a37063fa3..af009661477b1743b11221c0d59b53cd89e6e791 100644 --- a/net/mptcp/pm.c +++ b/net/mptcp/pm.c @@ -1000,6 +1000,8 @@ void mptcp_pm_data_reset(struct mptcp_sock *msk) !!mptcp_pm_get_add_addr_accept_max(msk) && subflows_allowed); WRITE_ONCE(pm->accept_subflow, subflows_allowed); + + bitmap_fill(pm->id_avail_bitmap, MPTCP_PM_MAX_ADDR_ID + 1); } else { WRITE_ONCE(pm->work_pending, 0); WRITE_ONCE(pm->accept_addr, 0); @@ -1009,7 +1011,6 @@ void mptcp_pm_data_reset(struct mptcp_sock *msk) WRITE_ONCE(pm->addr_signal, 0); WRITE_ONCE(pm->remote_deny_join_id0, false); pm->status = 0; - bitmap_fill(pm->id_avail_bitmap, MPTCP_PM_MAX_ADDR_ID + 1); } void mptcp_pm_data_init(struct mptcp_sock *msk) From patchwork Thu Mar 13 10:20:54 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Matthieu Baerts X-Patchwork-Id: 14014672 X-Patchwork-Delegate: kuba@kernel.org 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 ECEF126462C; Thu, 13 Mar 2025 10:22: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=1741861340; cv=none; b=tQ6sKywQRxts/pbkJe6Kd/vXSdGmllkQ4vhHSbO8SWjqU3f6ohrX83tAwETkKVoj+6ot8E95DVdN7ACmyjlWyyJafl3/87qwhcErpy6Lcto2LNcfrZH7w9acFqfeWSepIlUAZBS6jQ7acQePy/oSA3CZZrN5Gzci8+r+63EZubo= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1741861340; c=relaxed/simple; bh=iCXqiyNgaUufJYNxltgPY1kZh2aAyu/eXYIN8V+MMqk=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=S018VDcuC3KXfXG0cpCsVC6Z90yqvmMFSQ1CsEVqBaJXzKGwhcw5mbM4YhPeRRS2C/zmXHHOH0p09ZpAKVtOrSXjOQh7n17Ug5yVeSK3i8f6WwzqRi19w3+8iFFH3+olqdsr4jVpObEyTMfs6bzUF08gMpzyMjEBkwJoYfLHvnA= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=G5Fu3M+2; 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="G5Fu3M+2" Received: by smtp.kernel.org (Postfix) with ESMTPSA id 9FB60C4CEEA; Thu, 13 Mar 2025 10:22:07 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1741861339; bh=iCXqiyNgaUufJYNxltgPY1kZh2aAyu/eXYIN8V+MMqk=; h=From:Date:Subject:References:In-Reply-To:To:Cc:From; b=G5Fu3M+28HWi3jJfavHCxdiV1kYDvopnJj6S7CfBcA+c7saMxE5zvkoGvBeO52S25 QHG0owG46revXunV/CbSdG395tXauJ8U49BMvOxgs1AE3wklOP/uVBL7ifoNE+mMMk 77EQYEUyzl+rebvpnBhJIbhe4B2vA5Rf+SOXchv1N9agKrkq6aq6aR2dnrtVn7gr0W 9pG8yA/z3tyFsrQnZN5+37Jnwlzn1/4KmJi5zB45Rte7TjYWoNYVlBlGB7XO6KAeLh 9f/UtSnDStjvLFXAQ8viZA3EpG5NJ17CoxlOFa6hOVmmF8LpKg6ttlKGu6VR4Ztc3U 6tTIaIzgkrrig== From: "Matthieu Baerts (NGI0)" Date: Thu, 13 Mar 2025 11:20:54 +0100 Subject: [PATCH net-next 05/12] mptcp: pm: add struct_group in mptcp_pm_data Precedence: bulk X-Mailing-List: netdev@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Message-Id: <20250313-net-next-mptcp-pm-ops-intro-v1-5-f4e4a88efc50@kernel.org> References: <20250313-net-next-mptcp-pm-ops-intro-v1-0-f4e4a88efc50@kernel.org> In-Reply-To: <20250313-net-next-mptcp-pm-ops-intro-v1-0-f4e4a88efc50@kernel.org> To: mptcp@lists.linux.dev, Mat Martineau , Geliang Tang , "David S. Miller" , Eric Dumazet , Jakub Kicinski , Paolo Abeni , Simon Horman , Jonathan Corbet , Shuah Khan Cc: netdev@vger.kernel.org, linux-kernel@vger.kernel.org, linux-doc@vger.kernel.org, linux-kselftest@vger.kernel.org, "Matthieu Baerts (NGI0)" , Geliang Tang X-Mailer: b4 0.14.2 X-Developer-Signature: v=1; a=openpgp-sha256; l=2239; i=matttbe@kernel.org; h=from:subject:message-id; bh=RZVcVWy0Z+SJTFF/HiVwvvq0OGDhr5NaFWk5fqBDblE=; b=owEBbQKS/ZANAwAIAfa3gk9CaaBzAcsmYgBn0rGaxOeGXTUAfKEuYiyC3sR3tDcl/eCK4QAiy WFJ9AyljJ+JAjMEAAEIAB0WIQToy4X3aHcFem4n93r2t4JPQmmgcwUCZ9KxmgAKCRD2t4JPQmmg c4C0D/9iEZ8nbakxrYbCT2eqZMujSZDyZ+JRtQBZP69joT7rtV3gaqYNclBxrksLRJM9Sld5PFx 72ygNrlsp9irqVuEFpRs60E939Uy/6b7q7IwBl/ht1HIf7CzaQFWCjv9BnTWBeGfwmA0J0UlsAa jb1ZkA4nVo/82vYoHyAbgKtt3kwTIQS2EJH0xtcp+JFFdMb2b/c/yRvrWAUIBY4vyvR61O92KqQ C2xsuS8itHMt7/6Puftxzjcn5lyVWwDg8xvJ+ZyYWtuJVGkaWbusY+dW0KY3/RdXyNjt7ODSV/P SUwo5nq6omgbPfIU4S5moRQE7UWs9+Ohz/N1aX/LM6ZuvIx5ix/nPFBaSW0ewD41HviYJGz8VNx iTsIjRSQ807HvsucUD54bZbCOSV9tklzAS5xVLVSjJikGItEsCTmGbw5EP63zqt/SJyQrc29mb2 dOpTb6obBchoOk4wEMbQDjtn00RFo77PD93wN7DpQ6LxPg0u9/OL1W3shbKjj+1U48ykF5pQqbd iHwU5SpTj/Bn5v0t5lQmY7/0s1GlLSiG7tX7Zn1mZ/rIfde4HZlVv8oATPcyIFYzs9QjdhMAPIL A9lqxZUvYkiHkRaB+ddJ/1C0TsUfGQs0FcUhQCwESGForMVvLIbGo+l3lYGiici+nXKMLkRiJaF TLh4Imo1oLxaudg== X-Developer-Key: i=matttbe@kernel.org; a=openpgp; fpr=E8CB85F76877057A6E27F77AF6B7824F4269A073 X-Patchwork-Delegate: kuba@kernel.org From: Geliang Tang This patch adds a "struct_group(reset, ...)" in struct mptcp_pm_data to simplify the reset, and make sure we don't miss any. Suggested-by: Matthieu Baerts Signed-off-by: Geliang Tang Reviewed-by: Matthieu Baerts (NGI0) Signed-off-by: Matthieu Baerts (NGI0) --- net/mptcp/pm.c | 13 +------------ net/mptcp/protocol.h | 5 +++++ 2 files changed, 6 insertions(+), 12 deletions(-) diff --git a/net/mptcp/pm.c b/net/mptcp/pm.c index af009661477b1743b11221c0d59b53cd89e6e791..85ee999729a1c37f42bb21490d7f68d186e6734f 100644 --- a/net/mptcp/pm.c +++ b/net/mptcp/pm.c @@ -978,10 +978,7 @@ void mptcp_pm_data_reset(struct mptcp_sock *msk) u8 pm_type = mptcp_get_pm_type(sock_net((struct sock *)msk)); struct mptcp_pm_data *pm = &msk->pm; - pm->add_addr_signaled = 0; - pm->add_addr_accepted = 0; - pm->local_addr_used = 0; - pm->subflows = 0; + memset(&pm->reset, 0, sizeof(pm->reset)); pm->rm_list_tx.nr = 0; pm->rm_list_rx.nr = 0; WRITE_ONCE(pm->pm_type, pm_type); @@ -1002,15 +999,7 @@ void mptcp_pm_data_reset(struct mptcp_sock *msk) WRITE_ONCE(pm->accept_subflow, subflows_allowed); bitmap_fill(pm->id_avail_bitmap, MPTCP_PM_MAX_ADDR_ID + 1); - } else { - WRITE_ONCE(pm->work_pending, 0); - WRITE_ONCE(pm->accept_addr, 0); - WRITE_ONCE(pm->accept_subflow, 0); } - - WRITE_ONCE(pm->addr_signal, 0); - WRITE_ONCE(pm->remote_deny_join_id0, false); - pm->status = 0; } void mptcp_pm_data_init(struct mptcp_sock *msk) diff --git a/net/mptcp/protocol.h b/net/mptcp/protocol.h index ffb70fe08181815c23629354f78e3bdbe599e703..15e2a03025ecb4cae44ccb700fcbbdd06ab806d1 100644 --- a/net/mptcp/protocol.h +++ b/net/mptcp/protocol.h @@ -223,6 +223,8 @@ struct mptcp_pm_data { spinlock_t lock; /*protects the whole PM data */ + struct_group(reset, + u8 addr_signal; bool server_side; bool work_pending; @@ -235,6 +237,9 @@ struct mptcp_pm_data { u8 pm_type; u8 subflows; u8 status; + + ); + DECLARE_BITMAP(id_avail_bitmap, MPTCP_PM_MAX_ADDR_ID + 1); struct mptcp_rm_list rm_list_tx; struct mptcp_rm_list rm_list_rx; From patchwork Thu Mar 13 10:20:55 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Matthieu Baerts X-Patchwork-Id: 14014673 X-Patchwork-Delegate: kuba@kernel.org 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 282C3261583; Thu, 13 Mar 2025 10:22:33 +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=1741861354; cv=none; b=TzuWT+rFhfHKUxS2zfhjRAa+oK69KpwHVAmtXeBR91YVyE/I8wD4O6i6qa3eeReVK7w61AD13EC8Xqwp9aMt+tIeF0tbZRWng4AoXil1ORX3Uvb+RfK1TAFHNGg90aBZlqGnQCGgWFGIsspDkjn6gw3rZcE/zkk2VEuBaqZYv2I= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1741861354; c=relaxed/simple; bh=dpw9fVHupVdv7LX0zuifR7cy5kgztBnsRocr7lox/WI=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=pfhDdHRAJq5kdBA2mojJkOHvi1ac/SChQZCWfTSaGHvE7rInp1ks2pS5jGpehykthtXHkETQk5XwwyuMN5EMuhap3Q0cnp1QjxrNAyYnphVuxqgBuahVNK+CjXstRR4+1vAuLKJ7q4F0e2IzM3wuM8GXHQdR6iwjs7XbLJhx8wo= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=lumSFRBx; 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="lumSFRBx" Received: by smtp.kernel.org (Postfix) with ESMTPSA id 89817C4CEF1; Thu, 13 Mar 2025 10:22:19 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1741861353; bh=dpw9fVHupVdv7LX0zuifR7cy5kgztBnsRocr7lox/WI=; h=From:Date:Subject:References:In-Reply-To:To:Cc:From; b=lumSFRBxiOhLgpjZq9Pz7lvTatX2PelR792XbAHvJZ7W9GORd5pqkTsc7lAiQ0swD kenaoLD3DSJezH71UY8tzMYuU4ortVRFgUq9A6B/UccRr//QBvXf5XNmPti7RS7Aoy yRKnjSQlV2K8Km02TWNys7GDDOkxGUrKt4M6QdTlXbroomqsIPpWfSq8OT9J5eaMpc sQoLeGwQMcIkwYO2tqqvcHmAGuDb76Jc3An6hlbwRILHCZlWmvJt2ljHsPUWM904MO beZWXm6o4m85VDRu0V46dKewc7tgPkOBWbLb+AmdbKyTG9EW/wPd8vHlsOkuQBNX/H EoYFk0GyxwkBQ== From: "Matthieu Baerts (NGI0)" Date: Thu, 13 Mar 2025 11:20:55 +0100 Subject: [PATCH net-next 06/12] mptcp: pm: define struct mptcp_pm_ops Precedence: bulk X-Mailing-List: netdev@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Message-Id: <20250313-net-next-mptcp-pm-ops-intro-v1-6-f4e4a88efc50@kernel.org> References: <20250313-net-next-mptcp-pm-ops-intro-v1-0-f4e4a88efc50@kernel.org> In-Reply-To: <20250313-net-next-mptcp-pm-ops-intro-v1-0-f4e4a88efc50@kernel.org> To: mptcp@lists.linux.dev, Mat Martineau , Geliang Tang , "David S. Miller" , Eric Dumazet , Jakub Kicinski , Paolo Abeni , Simon Horman , Jonathan Corbet , Shuah Khan Cc: netdev@vger.kernel.org, linux-kernel@vger.kernel.org, linux-doc@vger.kernel.org, linux-kselftest@vger.kernel.org, "Matthieu Baerts (NGI0)" , Geliang Tang X-Mailer: b4 0.14.2 X-Developer-Signature: v=1; a=openpgp-sha256; l=4518; i=matttbe@kernel.org; h=from:subject:message-id; bh=FGNzRWS1hbYhpaLxqjQs0t93G2xcjg3oMS6W4kp09/k=; b=owEBbQKS/ZANAwAIAfa3gk9CaaBzAcsmYgBn0rGb2opmR2ZGBa80BlplBbjzpCYfk3ZInqCKp FdHCaA2sTuJAjMEAAEIAB0WIQToy4X3aHcFem4n93r2t4JPQmmgcwUCZ9KxmwAKCRD2t4JPQmmg c803EADH/C8cKWC1/0VICk4wqzBvM1r1HE7GScVbRqA2H+AINkhd+UR8SrJx359fBj53eEM4K+V dvvliLltIuPCTZEa+Ca4kJuFwOCJM0IoC6qSKG9TK7pGVooZF4aBlOVwsEZ5S4ViErj75SEJQwY eJc/NVARB3+hFh7qbeN7wnUzQvkWQQIJDyoUq9lh4c1xSs9waF8jTo2eubaVy0GSbQs/M10O1EH adp4tfPFQ1rnb/MQ5NqN97LW3dijX84ayfnUnjgIYnBgJ1vkxGy0zKzbYP0IZ0U4gyaDTe9Qtas v4bQ0HFKmirkhCqJD/Jn1IXFavjI4hBBWUzy35nDKDFhGq3Qn2KR8PmVPeD4Gh6m1G/UktW9nco I0Elc2jEe4s0bHTR1MT2ULOaEKGnq/UIS0B1GD+9kUAIxS2JtPDtnri4EIh3K+GRYcFJh/rvFTi RVMi4ThkVqZU4f9IbxBMoGb1nOwt2+Z/9RcsWWSzJGfLXFRkTxxEi8WEvQ9IRUmlveFXb98nPzU tIIABp3ceD/znLw98084/mWv9WIgUhypufsEnCcijiuK2FiA3L5sDAhllrCpwMI1UlwdUvVKNaB Z0NaD6u13AlTEthWp2m6EDNLxIemABQpga8NMaYR/KB87MWOeC5o6JTjq18qYJB/44o8AJC3383 /n1Berk+8VSIqLA== X-Developer-Key: i=matttbe@kernel.org; a=openpgp; fpr=E8CB85F76877057A6E27F77AF6B7824F4269A073 X-Patchwork-Delegate: kuba@kernel.org From: Geliang Tang In order to allow users to develop their own BPF-based path manager, this patch defines a struct ops "mptcp_pm_ops" for an MPTCP path manager, which contains a set of interfaces. Currently only init() and release() interfaces are included, subsequent patches will add others step by step. Add a set of functions to register, unregister, find and validate a given path manager struct ops. "list" is used to add this path manager to mptcp_pm_list list when it is registered. "name" is used to identify this path manager. mptcp_pm_find() uses "name" to find a path manager on the list. mptcp_pm_unregister is not used in this set, but will be invoked in .unreg of struct bpf_struct_ops. mptcp_pm_validate() will be invoked in .validate of struct bpf_struct_ops. That's why they are exported. Signed-off-by: Geliang Tang Reviewed-by: Matthieu Baerts (NGI0) Signed-off-by: Matthieu Baerts (NGI0) --- include/net/mptcp.h | 12 ++++++++++++ net/mptcp/pm.c | 50 ++++++++++++++++++++++++++++++++++++++++++++++++++ net/mptcp/protocol.h | 5 +++++ 3 files changed, 67 insertions(+) diff --git a/include/net/mptcp.h b/include/net/mptcp.h index 2c85ca92bb1c39989ae08a74ff4ef9b42099e60d..645d15695e3f5ec4b945bb543630f3dcc54453f2 100644 --- a/include/net/mptcp.h +++ b/include/net/mptcp.h @@ -14,6 +14,7 @@ struct mptcp_info; struct mptcp_sock; +struct mptcp_pm_addr_entry; struct seq_file; /* MPTCP sk_buff extension data */ @@ -121,6 +122,17 @@ struct mptcp_sched_ops { void (*release)(struct mptcp_sock *msk); } ____cacheline_aligned_in_smp; +#define MPTCP_PM_NAME_MAX 16 + +struct mptcp_pm_ops { + char name[MPTCP_PM_NAME_MAX]; + struct module *owner; + struct list_head list; + + void (*init)(struct mptcp_sock *msk); + void (*release)(struct mptcp_sock *msk); +} ____cacheline_aligned_in_smp; + #ifdef CONFIG_MPTCP void mptcp_init(void); diff --git a/net/mptcp/pm.c b/net/mptcp/pm.c index 85ee999729a1c37f42bb21490d7f68d186e6734f..f4948a2cf9be078043bd237f56a57c27804ef4db 100644 --- a/net/mptcp/pm.c +++ b/net/mptcp/pm.c @@ -5,6 +5,8 @@ */ #define pr_fmt(fmt) "MPTCP: " fmt +#include +#include #include "protocol.h" #include "mib.h" @@ -18,6 +20,9 @@ struct mptcp_pm_add_entry { struct mptcp_sock *sock; }; +static DEFINE_SPINLOCK(mptcp_pm_list_lock); +static LIST_HEAD(mptcp_pm_list); + /* path manager helpers */ /* if sk is ipv4 or ipv6_only allows only same-family local and remote addresses, @@ -1015,3 +1020,48 @@ void __init mptcp_pm_init(void) mptcp_pm_kernel_register(); mptcp_pm_nl_init(); } + +/* Must be called with rcu read lock held */ +struct mptcp_pm_ops *mptcp_pm_find(const char *name) +{ + struct mptcp_pm_ops *pm_ops; + + list_for_each_entry_rcu(pm_ops, &mptcp_pm_list, list) { + if (!strcmp(pm_ops->name, name)) + return pm_ops; + } + + return NULL; +} + +int mptcp_pm_validate(struct mptcp_pm_ops *pm_ops) +{ + return 0; +} + +int mptcp_pm_register(struct mptcp_pm_ops *pm_ops) +{ + int ret; + + ret = mptcp_pm_validate(pm_ops); + if (ret) + return ret; + + spin_lock(&mptcp_pm_list_lock); + if (mptcp_pm_find(pm_ops->name)) { + spin_unlock(&mptcp_pm_list_lock); + return -EEXIST; + } + list_add_tail_rcu(&pm_ops->list, &mptcp_pm_list); + spin_unlock(&mptcp_pm_list_lock); + + pr_debug("%s registered\n", pm_ops->name); + return 0; +} + +void mptcp_pm_unregister(struct mptcp_pm_ops *pm_ops) +{ + spin_lock(&mptcp_pm_list_lock); + list_del_rcu(&pm_ops->list); + spin_unlock(&mptcp_pm_list_lock); +} diff --git a/net/mptcp/protocol.h b/net/mptcp/protocol.h index 15e2a03025ecb4cae44ccb700fcbbdd06ab806d1..ac8a178426e4ef495d7c5b5b9bd4c8b8835d71e4 100644 --- a/net/mptcp/protocol.h +++ b/net/mptcp/protocol.h @@ -1050,6 +1050,11 @@ int mptcp_pm_remove_addr(struct mptcp_sock *msk, const struct mptcp_rm_list *rm_ void mptcp_pm_remove_addr_entry(struct mptcp_sock *msk, struct mptcp_pm_addr_entry *entry); +struct mptcp_pm_ops *mptcp_pm_find(const char *name); +int mptcp_pm_register(struct mptcp_pm_ops *pm_ops); +void mptcp_pm_unregister(struct mptcp_pm_ops *pm_ops); +int mptcp_pm_validate(struct mptcp_pm_ops *pm_ops); + void mptcp_userspace_pm_free_local_addr_list(struct mptcp_sock *msk); void mptcp_event(enum mptcp_event_type type, const struct mptcp_sock *msk, From patchwork Thu Mar 13 10:20:56 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Matthieu Baerts X-Patchwork-Id: 14014674 X-Patchwork-Delegate: kuba@kernel.org 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 EBBF7261583; Thu, 13 Mar 2025 10:22: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=1741861366; cv=none; b=kiHpEHaakWKR7vDd2oxKehAneLibVG+lKWWWrgNnRa8nWCkgB5iS5svLEeQAvGJ4WxhCYo3xmiHRZwAIa2Httj542jnDFF6/0m8utOCriW3YKGLhDKT0IvVdZBkzeX9cGMGXnho++OvRYFAh8vpwZ4UBA0mJe0MAcz8WUt2Ys6M= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1741861366; c=relaxed/simple; bh=WQWHLfvXh7gx4BcCE5xUkH8rIVYbU5xVMeyonwcwdxg=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=mfO5m60oyAyMaqeIo47380VZDkWMvUjT7ygC8QtjqXbgzopvpknyWu44qTDPFDRYtQ+JlB6wrLwtz6UjMPnzq/bI4H/3GvR2uoGxCZA4taNY0HlRJocgdWMfWFOw5GSdn+rX2C47+l6jT/p+RUYAFUq9xwsYMxu4jLP0241sdno= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=azqIT19j; 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="azqIT19j" Received: by smtp.kernel.org (Postfix) with ESMTPSA id C381FC4CEF2; Thu, 13 Mar 2025 10:22:34 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1741861365; bh=WQWHLfvXh7gx4BcCE5xUkH8rIVYbU5xVMeyonwcwdxg=; h=From:Date:Subject:References:In-Reply-To:To:Cc:From; b=azqIT19jHrM4CssBhbWW+149jy/9GdrMNNVx/Soq7jTrfa0fjjU0LSMrg6nLf6I3k CtN3kcwGhYTa1rPUwkm1ctpeuVkdiFdogtc2+MmWVf9EzZcsZeUajTNcow8ZDrDBwo RQ0QxHWTU3DTQA/c8JnHKCQhxLp+hOgJ437z2HIxOvs9wOgU9dUNYTiZmTS0AHz4SN YZ+SVzyi5EdAa2bi8tdpdEXQ/R2rGYUlHzFuSa475pmC8QiW86m7kUihb6LVnBCrzN E7mLebvN8rCVaLA4bHaNczboeKSUyos/wZNxI+L/6Y9OQMPEpRlxN5Qnpb0O5jQBYB dyujU1XUvIDUw== From: "Matthieu Baerts (NGI0)" Date: Thu, 13 Mar 2025 11:20:56 +0100 Subject: [PATCH net-next 07/12] mptcp: pm: register in-kernel and userspace PM Precedence: bulk X-Mailing-List: netdev@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Message-Id: <20250313-net-next-mptcp-pm-ops-intro-v1-7-f4e4a88efc50@kernel.org> References: <20250313-net-next-mptcp-pm-ops-intro-v1-0-f4e4a88efc50@kernel.org> In-Reply-To: <20250313-net-next-mptcp-pm-ops-intro-v1-0-f4e4a88efc50@kernel.org> To: mptcp@lists.linux.dev, Mat Martineau , Geliang Tang , "David S. Miller" , Eric Dumazet , Jakub Kicinski , Paolo Abeni , Simon Horman , Jonathan Corbet , Shuah Khan Cc: netdev@vger.kernel.org, linux-kernel@vger.kernel.org, linux-doc@vger.kernel.org, linux-kselftest@vger.kernel.org, "Matthieu Baerts (NGI0)" , Geliang Tang X-Mailer: b4 0.14.2 X-Developer-Signature: v=1; a=openpgp-sha256; l=3867; i=matttbe@kernel.org; h=from:subject:message-id; bh=xEmRoJfWCXA2Y1Z/hFqCFMDjEYrQsGPFg/P83eQpnl8=; b=owEBbQKS/ZANAwAIAfa3gk9CaaBzAcsmYgBn0rGb5MYnrk7INi+pFpCrTuMkWztBOk40QDEL6 RZHSvymygGJAjMEAAEIAB0WIQToy4X3aHcFem4n93r2t4JPQmmgcwUCZ9KxmwAKCRD2t4JPQmmg cxlbEACUnWXxnEmlVgCn8omlo5CnFI/gsGPLbsU+2YTEbNUQkbcBbK3kkNCUCTKmcU2hJ2ZVcj7 6mtRzOITJMtEDMpwc1ERQo6tNL97+9hoDejBDM1ET4COuh7H+qdcIaNvDhOHd36OJDo3Zf3s+FJ FcuGTEBZsYfmykD7KiTeem/6FdvDYN57TwX8waUIxXW04NpaWXJfBbmC9VFLic7dylb2LDOtdeE nBn8OGh+P96sFcV7HaUY4paZFPE52GDWo4m5A1ujJqANGfFGIpnubLy4Q6yXzFpNKwa5U/oSnVY 2dMxgdmIkt4aNDTu2xTg2MiJDp7Lilu1O9GMwpqGowdxGyeZTecb4vXNBG9Vf3JujmF2ljO92e7 BMICOVMaP8zXulkwbZvKcQqWld2QvDaNYZPwzarkra1TAOo6UMuFunx3JN3BtnGjcv+CXfPa0kU NsoYZG4dHUNQX2khdC8PACnw66o6S1IFNGgtFAPzC44CwklKt6mqaDSyAyRfTryBGtpeP4f2lYH 38FJQidCzrn1HpLpuS6kMW42g1oAP4WGhe2H4dDSeG66hILxOw4aL5kVFLxmZUhC5LnTOKlM4w3 4cY3OGfBWePDM68mLJ5AQs7PiuwK9+ED4ibteF1xk3XjS6trWuv2shL4X63+Wm59TGeZuB8qNy9 tckiX8S7NSJk47w== X-Developer-Key: i=matttbe@kernel.org; a=openpgp; fpr=E8CB85F76877057A6E27F77AF6B7824F4269A073 X-Patchwork-Delegate: kuba@kernel.org From: Geliang Tang This patch defines the original in-kernel netlink path manager as a new struct mptcp_pm_ops named "mptcp_pm_kernel", and register it in mptcp_pm_kernel_register(). And define the userspace path manager as a new struct mptcp_pm_ops named "mptcp_pm_userspace", and register it in mptcp_pm_init(). To ensure that there's always a valid path manager available, the default path manager "mptcp_pm_kernel" will be skipped in mptcp_pm_unregister(). Signed-off-by: Geliang Tang Reviewed-by: Matthieu Baerts (NGI0) Signed-off-by: Matthieu Baerts (NGI0) --- net/mptcp/pm.c | 5 +++++ net/mptcp/pm_kernel.c | 7 +++++++ net/mptcp/pm_userspace.c | 10 ++++++++++ net/mptcp/protocol.h | 4 ++++ 4 files changed, 26 insertions(+) diff --git a/net/mptcp/pm.c b/net/mptcp/pm.c index f4948a2cf9be078043bd237f56a57c27804ef4db..3896f21a46bd7f6912d2ffe22a3984ba97923021 100644 --- a/net/mptcp/pm.c +++ b/net/mptcp/pm.c @@ -1018,6 +1018,7 @@ void mptcp_pm_data_init(struct mptcp_sock *msk) void __init mptcp_pm_init(void) { mptcp_pm_kernel_register(); + mptcp_pm_userspace_register(); mptcp_pm_nl_init(); } @@ -1061,6 +1062,10 @@ int mptcp_pm_register(struct mptcp_pm_ops *pm_ops) void mptcp_pm_unregister(struct mptcp_pm_ops *pm_ops) { + /* skip unregistering the default path manager */ + if (WARN_ON_ONCE(pm_ops == &mptcp_pm_kernel)) + return; + spin_lock(&mptcp_pm_list_lock); list_del_rcu(&pm_ops->list); spin_unlock(&mptcp_pm_list_lock); diff --git a/net/mptcp/pm_kernel.c b/net/mptcp/pm_kernel.c index 806a9b5b3c07a350c20ec7085183c26af9f50d44..d39e7c1784608db290b8a2c1bc4fc24ed800cbb4 100644 --- a/net/mptcp/pm_kernel.c +++ b/net/mptcp/pm_kernel.c @@ -1398,8 +1398,15 @@ static struct pernet_operations mptcp_pm_pernet_ops = { .size = sizeof(struct pm_nl_pernet), }; +struct mptcp_pm_ops mptcp_pm_kernel = { + .name = "kernel", + .owner = THIS_MODULE, +}; + void __init mptcp_pm_kernel_register(void) { if (register_pernet_subsys(&mptcp_pm_pernet_ops) < 0) panic("Failed to register MPTCP PM pernet subsystem.\n"); + + mptcp_pm_register(&mptcp_pm_kernel); } diff --git a/net/mptcp/pm_userspace.c b/net/mptcp/pm_userspace.c index 13856df226736727783a27fc0932a0003aadd8ee..2cb62f026b1f4420c549ab8ee6f54ffe3880d453 100644 --- a/net/mptcp/pm_userspace.c +++ b/net/mptcp/pm_userspace.c @@ -682,3 +682,13 @@ int mptcp_userspace_pm_get_addr(u8 id, struct mptcp_pm_addr_entry *addr, sock_put(sk); return ret; } + +static struct mptcp_pm_ops mptcp_pm_userspace = { + .name = "userspace", + .owner = THIS_MODULE, +}; + +void __init mptcp_pm_userspace_register(void) +{ + mptcp_pm_register(&mptcp_pm_userspace); +} diff --git a/net/mptcp/protocol.h b/net/mptcp/protocol.h index ac8a178426e4ef495d7c5b5b9bd4c8b8835d71e4..c9e435a1fd7c7ab22a279c6de7c1573fe45cee98 100644 --- a/net/mptcp/protocol.h +++ b/net/mptcp/protocol.h @@ -1050,6 +1050,9 @@ int mptcp_pm_remove_addr(struct mptcp_sock *msk, const struct mptcp_rm_list *rm_ void mptcp_pm_remove_addr_entry(struct mptcp_sock *msk, struct mptcp_pm_addr_entry *entry); +/* the default path manager, used in mptcp_pm_unregister */ +extern struct mptcp_pm_ops mptcp_pm_kernel; + struct mptcp_pm_ops *mptcp_pm_find(const char *name); int mptcp_pm_register(struct mptcp_pm_ops *pm_ops); void mptcp_pm_unregister(struct mptcp_pm_ops *pm_ops); @@ -1158,6 +1161,7 @@ static inline u8 subflow_get_local_id(const struct mptcp_subflow_context *subflo } void __init mptcp_pm_kernel_register(void); +void __init mptcp_pm_userspace_register(void); void __init mptcp_pm_nl_init(void); void mptcp_pm_worker(struct mptcp_sock *msk); void __mptcp_pm_kernel_worker(struct mptcp_sock *msk); From patchwork Thu Mar 13 10:20:57 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Matthieu Baerts X-Patchwork-Id: 14014675 X-Patchwork-Delegate: kuba@kernel.org 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 CC823261583; Thu, 13 Mar 2025 10:22: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=1741861374; cv=none; b=BkAO3dngRNGzvdKOrdJoU+x7IfFAmHWfvO3kxzuyZjHj0YvWLrt5ENFtKtcGjlC82+jptuZDWwARD2c1eoJuMTidbPuC+Kz2ELS6U3TtTfppSyAB6wdfoYPo/8K3e87eTcVFl1ENSg9BsZz3sLdlelmJzGQUgRnbXOF9kd6wp1s= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1741861374; c=relaxed/simple; bh=X7qj2Fannnfwa9xeBpdSpc8P0kVb7QIc4gTw5pZTGp8=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=R5YbEEAhjUk9knXrjbeSl0xu8/1WGhR6bCvKQ4JIgxIqahyqBx9E0aKnL4ubDrYQ+PanY+j8f6s6evaipTmCbCdwgDXuGRWS2b3nvZLwkPzn0vOn7n2+7bzksmc5RwwHi3j+zi+YxWxXQwvINrfRWbJ1WG+1dS7ffAwJBJGCJvU= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=CNVAGd8T; 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="CNVAGd8T" Received: by smtp.kernel.org (Postfix) with ESMTPSA id D07EDC4CEE3; Thu, 13 Mar 2025 10:22:46 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1741861374; bh=X7qj2Fannnfwa9xeBpdSpc8P0kVb7QIc4gTw5pZTGp8=; h=From:Date:Subject:References:In-Reply-To:To:Cc:From; b=CNVAGd8TbHFoF1h3YG3NxJjO/UTo0UNIk3ZpJEJ3sq9L11kDUS6Bdf/V5TPrVk8F+ 5E8nPrMHwFH7j33mckkCgWQGdetTEvZd5eX6FNuPPlPWg/1KuAxWBMXQ268gtV2qMX dRL8Vzd1HqCttAmAmqICulA3qLgB48OsnQBoqymPD8+biO84n/BqNhhCwcCWI+8gbx 7xfkGViS9vFTeEat9rktBTsqz6ciAhg0sWdLbsCz9ykMKJxqwUtqbawkENT51ez5E+ 0VDB5ljrOYQhDC5CukZkkzYHH7fK9fhEMc+oAQyiUC3keOq7Q6lknGBCKAUJ1Kpuq+ JU0W8Wsv7LbXA== From: "Matthieu Baerts (NGI0)" Date: Thu, 13 Mar 2025 11:20:57 +0100 Subject: [PATCH net-next 08/12] mptcp: sysctl: set path manager by name Precedence: bulk X-Mailing-List: netdev@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Message-Id: <20250313-net-next-mptcp-pm-ops-intro-v1-8-f4e4a88efc50@kernel.org> References: <20250313-net-next-mptcp-pm-ops-intro-v1-0-f4e4a88efc50@kernel.org> In-Reply-To: <20250313-net-next-mptcp-pm-ops-intro-v1-0-f4e4a88efc50@kernel.org> To: mptcp@lists.linux.dev, Mat Martineau , Geliang Tang , "David S. Miller" , Eric Dumazet , Jakub Kicinski , Paolo Abeni , Simon Horman , Jonathan Corbet , Shuah Khan Cc: netdev@vger.kernel.org, linux-kernel@vger.kernel.org, linux-doc@vger.kernel.org, linux-kselftest@vger.kernel.org, "Matthieu Baerts (NGI0)" , Geliang Tang X-Mailer: b4 0.14.2 X-Developer-Signature: v=1; a=openpgp-sha256; l=5752; i=matttbe@kernel.org; h=from:subject:message-id; bh=oGH0XhqcKRHt4ikWS4HVI+e7kmGO2yr284+UtlnAV0o=; b=owEBbQKS/ZANAwAIAfa3gk9CaaBzAcsmYgBn0rGbIRd3vkGNGdw99iNkqwDBiOqKTCACPTQP4 FBbsp3Dtw6JAjMEAAEIAB0WIQToy4X3aHcFem4n93r2t4JPQmmgcwUCZ9KxmwAKCRD2t4JPQmmg cydrEACU6lZX/KkhEofh6cAgLdGkkq96satYnHULxo3ZekyEUDOFdacHrC26bgVu6dvWM2n6b7i qiLpL/whj8vQr4PiuiT5N15eaRoaTibnaIZpukry2vqwUauV20czBlzcbYE1uBlFSesnbPgFAu4 32njwncAj96dfdX81O9UmcaIMIzTk3aC+CTZhYF3J9GVLM2miFbtbHhneB0dMZGaorJOuR65deQ jBy4LfudfHSdnFS2/BgfUCbDBvxyUe9ziPiwoyDJv72l8FNMIUqYFvU08w3RUIxv7luEFyIzdSz U5L33vtP64yg4/lWcC5Fuh2d7sQy5By8i3rEvqsnkuVDlWTlPC0fixLYov8a4R8lypZjP3BXptG 6iJ5Sj1iGb20H6SYt+On9iltLF5Orv7XBC9Oop7no5+GRNQ24vjX4VhrxyyyaoFWj69H22oVwni p934mV//U3YcrjohN48wrMi8BlDYAKP0Q8ynW2BH3XFr95LAs8zm3Zoi84nA/hZQpfENRfWabGO DoiWcahIAXHtUHTcK+DsgmipyLnFnTXyB8P1duM50YTrPPr4A6hz9LjWCBIYUV6+sUhMLqzsqED 2NaQoVNYi3WGuCOQ2HYWyYxYJBTdRSBXeGuOWiIopK/nqeZ7oB93r7O0XOxEQ9gmgh0W5YuylET JqOF9Oa1MHFiRjg== X-Developer-Key: i=matttbe@kernel.org; a=openpgp; fpr=E8CB85F76877057A6E27F77AF6B7824F4269A073 X-Patchwork-Delegate: kuba@kernel.org From: Geliang Tang Similar to net.mptcp.scheduler, a new net.mptcp.path_manager sysctl knob is added to determine which path manager will be used by each newly created MPTCP socket by setting the name of it. Dealing with an explicit name is easier than with a number, especially when more PMs will be introduced. This sysctl knob makes the old one "pm_type" deprecated. Signed-off-by: Geliang Tang Reviewed-by: Matthieu Baerts (NGI0) Signed-off-by: Matthieu Baerts (NGI0) --- Documentation/networking/mptcp-sysctl.rst | 19 ++++++++++++ net/mptcp/ctrl.c | 50 +++++++++++++++++++++++++++++++ net/mptcp/protocol.h | 1 + 3 files changed, 70 insertions(+) diff --git a/Documentation/networking/mptcp-sysctl.rst b/Documentation/networking/mptcp-sysctl.rst index 03e1d3610333e29423b0f40591c9e914dc2d0366..b78a2254d4523e0c0fa09338d4b676da18f82d97 100644 --- a/Documentation/networking/mptcp-sysctl.rst +++ b/Documentation/networking/mptcp-sysctl.rst @@ -72,6 +72,23 @@ enabled - BOOLEAN Default: 1 (enabled) +path_manager - STRING + Set the default path manager name to use for each new MPTCP + socket. In-kernel path management will control subflow + connections and address advertisements according to + per-namespace values configured over the MPTCP netlink + API. Userspace path management puts per-MPTCP-connection subflow + connection decisions and address advertisements under control of + a privileged userspace program, at the cost of more netlink + traffic to propagate all of the related events and commands. + + This is a per-namespace sysctl. + + * "kernel" - In-kernel path manager + * "userspace" - Userspace path manager + + Default: "kernel" + pm_type - INTEGER Set the default path manager type to use for each new MPTCP socket. In-kernel path management will control subflow @@ -84,6 +101,8 @@ pm_type - INTEGER This is a per-namespace sysctl. + Deprecated since v6.15, use path_manager instead. + * 0 - In-kernel path manager * 1 - Userspace path manager diff --git a/net/mptcp/ctrl.c b/net/mptcp/ctrl.c index be6c0237e10bfd7520edd3c57ec43ce4377b97d5..4209dc7f97048d27deea1923742dfd5ebd710694 100644 --- a/net/mptcp/ctrl.c +++ b/net/mptcp/ctrl.c @@ -39,6 +39,7 @@ struct mptcp_pernet { u8 allow_join_initial_addr_port; u8 pm_type; char scheduler[MPTCP_SCHED_NAME_MAX]; + char path_manager[MPTCP_PM_NAME_MAX]; }; static struct mptcp_pernet *mptcp_get_pernet(const struct net *net) @@ -83,6 +84,11 @@ int mptcp_get_pm_type(const struct net *net) return mptcp_get_pernet(net)->pm_type; } +const char *mptcp_get_path_manager(const struct net *net) +{ + return mptcp_get_pernet(net)->path_manager; +} + const char *mptcp_get_scheduler(const struct net *net) { return mptcp_get_pernet(net)->scheduler; @@ -101,6 +107,7 @@ static void mptcp_pernet_set_defaults(struct mptcp_pernet *pernet) pernet->stale_loss_cnt = 4; pernet->pm_type = MPTCP_PM_TYPE_KERNEL; strscpy(pernet->scheduler, "default", sizeof(pernet->scheduler)); + strscpy(pernet->path_manager, "kernel", sizeof(pernet->path_manager)); } #ifdef CONFIG_SYSCTL @@ -174,6 +181,42 @@ static int proc_blackhole_detect_timeout(const struct ctl_table *table, return ret; } +static int mptcp_set_path_manager(char *path_manager, const char *name) +{ + struct mptcp_pm_ops *pm_ops; + int ret = 0; + + rcu_read_lock(); + pm_ops = mptcp_pm_find(name); + if (pm_ops) + strscpy(path_manager, name, MPTCP_PM_NAME_MAX); + else + ret = -ENOENT; + rcu_read_unlock(); + + return ret; +} + +static int proc_path_manager(const struct ctl_table *ctl, int write, + void *buffer, size_t *lenp, loff_t *ppos) +{ + char (*path_manager)[MPTCP_PM_NAME_MAX] = ctl->data; + char pm_name[MPTCP_PM_NAME_MAX]; + const struct ctl_table tbl = { + .data = pm_name, + .maxlen = MPTCP_PM_NAME_MAX, + }; + int ret; + + strscpy(pm_name, *path_manager, MPTCP_PM_NAME_MAX); + + ret = proc_dostring(&tbl, write, buffer, lenp, ppos); + if (write && ret == 0) + ret = mptcp_set_path_manager(*path_manager, pm_name); + + return ret; +} + static struct ctl_table mptcp_sysctl_table[] = { { .procname = "enabled", @@ -253,6 +296,12 @@ static struct ctl_table mptcp_sysctl_table[] = { .mode = 0644, .proc_handler = proc_dou8vec_minmax, }, + { + .procname = "path_manager", + .maxlen = MPTCP_PM_NAME_MAX, + .mode = 0644, + .proc_handler = proc_path_manager, + }, }; static int mptcp_pernet_new_table(struct net *net, struct mptcp_pernet *pernet) @@ -278,6 +327,7 @@ static int mptcp_pernet_new_table(struct net *net, struct mptcp_pernet *pernet) table[8].data = &pernet->close_timeout; table[9].data = &pernet->blackhole_timeout; table[10].data = &pernet->syn_retrans_before_tcp_fallback; + table[11].data = &pernet->path_manager; hdr = register_net_sysctl_sz(net, MPTCP_SYSCTL_PATH, table, ARRAY_SIZE(mptcp_sysctl_table)); diff --git a/net/mptcp/protocol.h b/net/mptcp/protocol.h index c9e435a1fd7c7ab22a279c6de7c1573fe45cee98..818c2c648677c255a00d668ab9b7406f0731fcf8 100644 --- a/net/mptcp/protocol.h +++ b/net/mptcp/protocol.h @@ -699,6 +699,7 @@ int mptcp_allow_join_id0(const struct net *net); unsigned int mptcp_stale_loss_cnt(const struct net *net); unsigned int mptcp_close_timeout(const struct sock *sk); int mptcp_get_pm_type(const struct net *net); +const char *mptcp_get_path_manager(const struct net *net); const char *mptcp_get_scheduler(const struct net *net); void mptcp_active_disable(struct sock *sk); From patchwork Thu Mar 13 10:20:58 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Matthieu Baerts X-Patchwork-Id: 14014676 X-Patchwork-Delegate: kuba@kernel.org 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 01C8A264FBB; Thu, 13 Mar 2025 10:23:07 +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=1741861388; cv=none; b=URkgdE1QU6O/9Nmp+vVAxIeUQMwV3hSI9/01Fed9n89OVaMCOoUdtednYU76I6dXVRxIYOYzuqSWeybmXtbjAOdQxtKLTpUl6LBffqIFLkX9EIyK8tsSZDN7k/ZANXDHdIsSNxGKzLtwBDapDTjYK4IG8jPvFAIl0ge54WyzQrs= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1741861388; c=relaxed/simple; bh=6Zp16z/ZwuPo+7pikO6ZPdmlCGAFpXQpgVlmCPw52Nk=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=WfNy7bVidNqOwsrjQgutamEtgow9slAfl7VQEO5erMwHz8tYH4Sb3YF0L6Z5Pf4RvGNfSdG9TE0iULAwzEz1QV0LxbcKGOnbkF/H4LunpUTDa96W+a3J3w/lK3sWcku1kdCarsdXoWxQm0IZUHvUwEVvE9FYAku2bhCB+kE5Br8= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=tapMjnJv; 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="tapMjnJv" Received: by smtp.kernel.org (Postfix) with ESMTPSA id 22F59C4CEEE; Thu, 13 Mar 2025 10:22:55 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1741861387; bh=6Zp16z/ZwuPo+7pikO6ZPdmlCGAFpXQpgVlmCPw52Nk=; h=From:Date:Subject:References:In-Reply-To:To:Cc:From; b=tapMjnJvWODZjFnwLDKVu0YIGbvhMwYGSsMLqXXpyC4pe/twr9oARc+CaoV8WmthL 7TLcWckcqVVkE93QYIpKMefdZSH/nMFXKHfZv6pOQ+s6xBNq3izLjPYMP4HZAYUUyb c1x+sx/lz91fIFEt8jlHcKwdJfNkLAQS8fn5WxDYRrgQauYES3LV59OyS93TZ+Z9lW iL5MBYbKriTrUCQkwK9FtlAQny7MsHYxKHsHIbS+uJQb+URtc+UhT9MUR7an6JXyuC BD3oAwMaDt/lrDqpbDfhzUYSvpgOn+Imo6udNx3xVLcFZLTYxp0/7okvt74NiRRpbK BqcyIibAaaU1g== From: "Matthieu Baerts (NGI0)" Date: Thu, 13 Mar 2025 11:20:58 +0100 Subject: [PATCH net-next 09/12] mptcp: sysctl: map path_manager to pm_type Precedence: bulk X-Mailing-List: netdev@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Message-Id: <20250313-net-next-mptcp-pm-ops-intro-v1-9-f4e4a88efc50@kernel.org> References: <20250313-net-next-mptcp-pm-ops-intro-v1-0-f4e4a88efc50@kernel.org> In-Reply-To: <20250313-net-next-mptcp-pm-ops-intro-v1-0-f4e4a88efc50@kernel.org> To: mptcp@lists.linux.dev, Mat Martineau , Geliang Tang , "David S. Miller" , Eric Dumazet , Jakub Kicinski , Paolo Abeni , Simon Horman , Jonathan Corbet , Shuah Khan Cc: netdev@vger.kernel.org, linux-kernel@vger.kernel.org, linux-doc@vger.kernel.org, linux-kselftest@vger.kernel.org, "Matthieu Baerts (NGI0)" , Geliang Tang X-Mailer: b4 0.14.2 X-Developer-Signature: v=1; a=openpgp-sha256; l=1935; i=matttbe@kernel.org; h=from:subject:message-id; bh=N2IFQOAThQfqK56P4258QGBDUIyIuKIiQtU284cvhaU=; b=owEBbQKS/ZANAwAIAfa3gk9CaaBzAcsmYgBn0rGb1qvk/gHu2DPAgDn+va9otI+QEv5kDubbI R//Amrijz2JAjMEAAEIAB0WIQToy4X3aHcFem4n93r2t4JPQmmgcwUCZ9KxmwAKCRD2t4JPQmmg czzkEACNho9pTZuUCE5oBMuFhM1yQYTE6ogu5Dl9RazH4ETr8ODlcJf+1/QqwZFZlaKKJnN5yGu thgYrjYBxnZZ24munheEpeG1BbjeWNEWtfvbsOigVnXKELB1L3hrZhMndNG6exJN862K6faH817 E3L6bTPQ2LIDKQhnlA8EjdoWD4ozAUWhcRgJVTGr8EHPsUVUABpxJGFUsgg3J2IqQKVhCqHW79a Y9HiVOgl5ufc8pNzwHuETqXHnPs9oqdv96yYDif7owWSghjH2BebTGaLmZGWvBD2BdMASNnxmwu i7rk2ehnX5mdc/vUygK+//YwsHeiFmuixZr0WOXm9Nuaz1EIXnVOU0KZUxRCNhiC+fJjklhEaOZ bduZLG4lMFcxSjnbX7fRcMjZ8WNNC/+KKOfcKCoTceEJpiVfJaF2R5FHjfxEeC5fWKIEE14CqFU nWGb9UnbZyxVJKh7NQdcDhFUwVLQMQIj2E8WFevDas6oAQotT2fldTIe6LzBmB/zvYhiRwfUK35 LjJnF+U23AwwrXQNv+t2dPxh26invwmaU21p69XdgSmwtQaOo/ZJK2rLl6yww1xwtt5A6hAj+// +aaMMJaB9MvZ7l5R/0zjoGazcqmt6DcsuiBmcmrkfpP46bWP5Y9xfaS65Vaqw+E9BxnJPS/bP28 ZSXya5d1J3gRqBA== X-Developer-Key: i=matttbe@kernel.org; a=openpgp; fpr=E8CB85F76877057A6E27F77AF6B7824F4269A073 X-Patchwork-Delegate: kuba@kernel.org From: Geliang Tang This patch maps the newly added path manager sysctl "path_manager" to the old one "pm_type". path_manager pm_type "kernel" -> MPTCP_PM_TYPE_KERNEL "userspace" -> MPTCP_PM_TYPE_USERSPACE others -> __MPTCP_PM_TYPE_NR It is important to add this to keep a compatibility with the now deprecated pm_type sysctl knob. Signed-off-by: Geliang Tang Reviewed-by: Matthieu Baerts (NGI0) Signed-off-by: Matthieu Baerts (NGI0) --- net/mptcp/ctrl.c | 15 ++++++++++++++- 1 file changed, 14 insertions(+), 1 deletion(-) diff --git a/net/mptcp/ctrl.c b/net/mptcp/ctrl.c index 4209dc7f97048d27deea1923742dfd5ebd710694..cb0811e636ff2f4bb981d2688eb8d07946fc1744 100644 --- a/net/mptcp/ctrl.c +++ b/net/mptcp/ctrl.c @@ -200,6 +200,9 @@ static int mptcp_set_path_manager(char *path_manager, const char *name) static int proc_path_manager(const struct ctl_table *ctl, int write, void *buffer, size_t *lenp, loff_t *ppos) { + struct mptcp_pernet *pernet = container_of(ctl->data, + struct mptcp_pernet, + path_manager); char (*path_manager)[MPTCP_PM_NAME_MAX] = ctl->data; char pm_name[MPTCP_PM_NAME_MAX]; const struct ctl_table tbl = { @@ -211,8 +214,18 @@ static int proc_path_manager(const struct ctl_table *ctl, int write, strscpy(pm_name, *path_manager, MPTCP_PM_NAME_MAX); ret = proc_dostring(&tbl, write, buffer, lenp, ppos); - if (write && ret == 0) + if (write && ret == 0) { ret = mptcp_set_path_manager(*path_manager, pm_name); + if (ret == 0) { + u8 pm_type = __MPTCP_PM_TYPE_NR; + + if (strncmp(pm_name, "kernel", MPTCP_PM_NAME_MAX) == 0) + pm_type = MPTCP_PM_TYPE_KERNEL; + else if (strncmp(pm_name, "userspace", MPTCP_PM_NAME_MAX) == 0) + pm_type = MPTCP_PM_TYPE_USERSPACE; + pernet->pm_type = pm_type; + } + } return ret; } From patchwork Thu Mar 13 10:20:59 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Matthieu Baerts X-Patchwork-Id: 14014677 X-Patchwork-Delegate: kuba@kernel.org 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 B7D36265CDE; Thu, 13 Mar 2025 10:23: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=1741861401; cv=none; b=Y3qI57w1Bf6NjjdHUnU2rIgnj6zzYXmDfnA1Uag/SLA5PHcV3syHc5tenVvugFCfCaVqiI5uJqzABsVXkW1xlTS/U07pfsPhXhQCyqyGKLu7Uq7vhE/CCytVRw2uwi8bZj4eCjByxY1cVWgZEaqWTzBm2AgVXB0dyuvTdAXKqN4= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1741861401; c=relaxed/simple; bh=XtTYwEcZZnc9UQ2sTu/aXOfhvB29s8o6zKX6nWCP6SA=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=AFluSTWEqOVnDjCDtXmfL4zHAlrRjcjj+pAMOR/jdECExe3nyu9KFrsy+q7tfkjRbL+z0QyIxsl9muzCjgpSl9vqRlRfzeQu6gA209GyvyT6FBNNr/4ZYuDsLHF0RFr1l4tbyoUFyIfW3FPYgcoGFYhmiO5c7YHn9k7WvZNsPE0= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=IXXT21G7; 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="IXXT21G7" Received: by smtp.kernel.org (Postfix) with ESMTPSA id C40F5C4CEFA; Thu, 13 Mar 2025 10:23:08 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1741861401; bh=XtTYwEcZZnc9UQ2sTu/aXOfhvB29s8o6zKX6nWCP6SA=; h=From:Date:Subject:References:In-Reply-To:To:Cc:From; b=IXXT21G7XoZlgyq2TTSIo/soI4YgyGz073ICJeF40vxudxpmD+g70UoIJtxNFyYPa /DmfzR+tulAViMz+8NMvsBS9bXSlaPYiFTRugm6Q++/dvtLYhE2vtqGTphH3EifMHi WzNpgdU7upEcIwW20/2gTN32TbpUH3yDBUIVaRZGv90yixPYOMPfvxm123YZUwKG8L vBnY/ON9LyTIO46aDUGCGWEPpZdGIcvI06SGwebsiGjX3CPT56rVLHz3DLAj1QdUt7 KzPXsqZkjKQp6qBT/k6AtAspj/XI7nLGOwtoEsTrYm0Np2rdFM1BpwmXHrE8CWTyv2 mFonuK7haD9AQ== From: "Matthieu Baerts (NGI0)" Date: Thu, 13 Mar 2025 11:20:59 +0100 Subject: [PATCH net-next 10/12] mptcp: sysctl: map pm_type to path_manager Precedence: bulk X-Mailing-List: netdev@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Message-Id: <20250313-net-next-mptcp-pm-ops-intro-v1-10-f4e4a88efc50@kernel.org> References: <20250313-net-next-mptcp-pm-ops-intro-v1-0-f4e4a88efc50@kernel.org> In-Reply-To: <20250313-net-next-mptcp-pm-ops-intro-v1-0-f4e4a88efc50@kernel.org> To: mptcp@lists.linux.dev, Mat Martineau , Geliang Tang , "David S. Miller" , Eric Dumazet , Jakub Kicinski , Paolo Abeni , Simon Horman , Jonathan Corbet , Shuah Khan Cc: netdev@vger.kernel.org, linux-kernel@vger.kernel.org, linux-doc@vger.kernel.org, linux-kselftest@vger.kernel.org, "Matthieu Baerts (NGI0)" , Geliang Tang X-Mailer: b4 0.14.2 X-Developer-Signature: v=1; a=openpgp-sha256; l=1971; i=matttbe@kernel.org; h=from:subject:message-id; bh=TPN8WFIxZ+4kfTdcjhcI3tFu52CcyhzVPD/IskqF4FE=; b=owEBbQKS/ZANAwAIAfa3gk9CaaBzAcsmYgBn0rGbWmxTMMEnzt7kizMBEolkLdSZIaawXwOGG iet71dfA1OJAjMEAAEIAB0WIQToy4X3aHcFem4n93r2t4JPQmmgcwUCZ9KxmwAKCRD2t4JPQmmg cynBEACVGc2Sksz1RogI6fTeHbxZM8vNgdF4rFCDRRL4Nued6nQOgjORKPizrvqG8gJlkQDUW9u uhBWvwJYG8/fsHbKCwsWymbDdkIUngM1pY+L1L+54UUsqrUmrYbWEzaPo6yqu+c9BZDn7jf41vn +PI2X8K8Ph+7PcoXI4ZbDWWLS50hbCbg1278rRuYoJEPGanYahrfZVGTRNo8YWFlOchqtqewnTJ Pc+L5/NmL06TNGE15EihBvh7gkksaPedgALAXnqpxUcYVnzeNTufhMHpz0M4PnjzVKZt/J4iweC rLIRuMFYfsPRul5DzBG2R7oCop9aIrOsVOy+WKel/MfywxIfJXtEQEAPy7uiVwq7+5Q7Phv927c W5HybhUbccYnwLjNu0drj/YNcivDGDi2dOG3xYcJN22uCY7yqsWGutEqjdztIhg3PwExubJtVpp 03dpjf/qdhLmAga0HusEmTuwksESGiw3BJJkENxHc32bJrqpojP39uhUPvUgYvEx7YQjS+VJDY4 5Bxg5+ANilo3QjVjKsO+VzbpAAFPDKRgeL0PdbgC3q1IIxAlCZ2n+O7GnxfFc5Lzq+zFHc+adVv r/WkcF0Z7L9qrXSaYRn16yfKqqWXgi6aEGm4raNl6Wvo7gZkiSktAylaXSPfAtJUYhiEbSv9PHr M7VkgipQLyyG9tg== X-Developer-Key: i=matttbe@kernel.org; a=openpgp; fpr=E8CB85F76877057A6E27F77AF6B7824F4269A073 X-Patchwork-Delegate: kuba@kernel.org From: Geliang Tang This patch adds a new proc_handler "proc_pm_type" for "pm_type" to map old path manager sysctl "pm_type" to the newly added "path_manager". path_manager pm_type MPTCP_PM_TYPE_KERNEL -> "kernel" MPTCP_PM_TYPE_USERSPACE -> "userspace" It is important to add this to keep a compatibility with the now deprecated pm_type sysctl knob. Signed-off-by: Geliang Tang Reviewed-by: Matthieu Baerts (NGI0) Signed-off-by: Matthieu Baerts (NGI0) --- net/mptcp/ctrl.c | 25 ++++++++++++++++++++++++- 1 file changed, 24 insertions(+), 1 deletion(-) diff --git a/net/mptcp/ctrl.c b/net/mptcp/ctrl.c index cb0811e636ff2f4bb981d2688eb8d07946fc1744..4d8b31f32eb50347d10db792f084e43c93f687c6 100644 --- a/net/mptcp/ctrl.c +++ b/net/mptcp/ctrl.c @@ -230,6 +230,29 @@ static int proc_path_manager(const struct ctl_table *ctl, int write, return ret; } +static int proc_pm_type(const struct ctl_table *ctl, int write, + void *buffer, size_t *lenp, loff_t *ppos) +{ + struct mptcp_pernet *pernet = container_of(ctl->data, + struct mptcp_pernet, + pm_type); + int ret; + + ret = proc_dou8vec_minmax(ctl, write, buffer, lenp, ppos); + if (write && ret == 0) { + u8 pm_type = READ_ONCE(*(u8 *)ctl->data); + char *pm_name = ""; + + if (pm_type == MPTCP_PM_TYPE_KERNEL) + pm_name = "kernel"; + else if (pm_type == MPTCP_PM_TYPE_USERSPACE) + pm_name = "userspace"; + mptcp_set_path_manager(pernet->path_manager, pm_name); + } + + return ret; +} + static struct ctl_table mptcp_sysctl_table[] = { { .procname = "enabled", @@ -274,7 +297,7 @@ static struct ctl_table mptcp_sysctl_table[] = { .procname = "pm_type", .maxlen = sizeof(u8), .mode = 0644, - .proc_handler = proc_dou8vec_minmax, + .proc_handler = proc_pm_type, .extra1 = SYSCTL_ZERO, .extra2 = &mptcp_pm_type_max }, From patchwork Thu Mar 13 10:21:00 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Matthieu Baerts X-Patchwork-Id: 14014678 X-Patchwork-Delegate: kuba@kernel.org 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 1163726560E; Thu, 13 Mar 2025 10:23:29 +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=1741861409; cv=none; b=OUkuuv3Q7rPnUJQ054/gHQPsSq/jc/uAh/pqrxq7nbyIhxEXS3QmjE7Fr3bwVZ9zJV92XHS+/37UAmYFvDfVvaM3ThO2fAayS0wBVbNet3C0ru/Igh1794scECRaUUJvPGRb3dcHUqJIu3bsLUPdMKUzRHxK45f6/oY4ZF7uVKA= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1741861409; c=relaxed/simple; bh=GPnAgI9t4e294JRUYRTZXCYkVhHLkTaZDQSLIZ/7h2U=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=irbRxqaWuT7PqxeQUbsgcOV/AyPQdKF5BkVFECpnjIWTXkIzy9HViQlaXPCs3jXuHZtGOCenZfepbs/bzjcaJsZcWLbzqLQgGFFhBPVNrdDQ1d9+0eXoy12GctjPSQuiPkYBp4TPxo5qcfGd4QOVck7n1F2TrkgtZKT7163X9f8= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=kZ+gaHgI; 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="kZ+gaHgI" Received: by smtp.kernel.org (Postfix) with ESMTPSA id 2A177C4CEDD; Thu, 13 Mar 2025 10:23:22 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1741861408; bh=GPnAgI9t4e294JRUYRTZXCYkVhHLkTaZDQSLIZ/7h2U=; h=From:Date:Subject:References:In-Reply-To:To:Cc:From; b=kZ+gaHgI0xN7BrDYwZpgSS9cRUIfku0k5vlJnuCTtWZYkYcqSd0PtV9Filo/yeBP1 qggPaWImKIuXlHg2m+lT26n2B30Y4dg5vKR5zyGCNDE0CgzSrx8uiFcvkFd4i7rNWi bUhQbs0RgIV7StHNTrGmwBbzKVqzvhW/vburAfZpmmXfNFjSrmy1uRv1oN1wAuOpgu LsivyMFU+b94S0RGFTEn2dalC4RcLxsFlXnlr7pE09fc6poCD/4mpPHWyWzCLtRDCf D/0hg7U7+7SFpsxQQUgswCsPwGjJ21hvSjCWsxfBktCbUd+OMtHGbcBX4+9SFjdTJC N7iKYZugZSRzg== From: "Matthieu Baerts (NGI0)" Date: Thu, 13 Mar 2025 11:21:00 +0100 Subject: [PATCH net-next 11/12] mptcp: sysctl: add available_path_managers Precedence: bulk X-Mailing-List: netdev@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Message-Id: <20250313-net-next-mptcp-pm-ops-intro-v1-11-f4e4a88efc50@kernel.org> References: <20250313-net-next-mptcp-pm-ops-intro-v1-0-f4e4a88efc50@kernel.org> In-Reply-To: <20250313-net-next-mptcp-pm-ops-intro-v1-0-f4e4a88efc50@kernel.org> To: mptcp@lists.linux.dev, Mat Martineau , Geliang Tang , "David S. Miller" , Eric Dumazet , Jakub Kicinski , Paolo Abeni , Simon Horman , Jonathan Corbet , Shuah Khan Cc: netdev@vger.kernel.org, linux-kernel@vger.kernel.org, linux-doc@vger.kernel.org, linux-kselftest@vger.kernel.org, "Matthieu Baerts (NGI0)" , Geliang Tang X-Mailer: b4 0.14.2 X-Developer-Signature: v=1; a=openpgp-sha256; l=4929; i=matttbe@kernel.org; h=from:subject:message-id; bh=oytQPOm4JRXyC5Ocyqq1dePLR/pEKe/9a1tbEdlpJ8c=; b=owEBbQKS/ZANAwAIAfa3gk9CaaBzAcsmYgBn0rGbJUKvFCM8/WG+7IqDRzRnRe4wDDTXr3ZWh Alv0K1nFSKJAjMEAAEIAB0WIQToy4X3aHcFem4n93r2t4JPQmmgcwUCZ9KxmwAKCRD2t4JPQmmg cw+YEADVd6HMwgNtqbBVrBfDLgNWsOwXQGj6d9Wq416lQA4ygn6oPLCHTjPsZqPe427DHppYH48 a6YluKg33GSN4OTK2WipWlN4WBvVAzeaQXpxPAIdPmJ11rgf9c5dP07Dm2mEfu/oSMTwtvQ3kmt 6gEBTn5vzLbKkyUW5lHlCKQpAquBJPNwXQXwzLJUqevEQN5xkM06GfGo6mKPJNxUTHj90TM6PuE 2RxZwm8lEhHNWxS30lIeIRiNXSfZEfFA/ZYa9mBLVO2bRVaqUl8PuEbaIz0DvAU9hedonZoZdLb Ez9KIfHbDIXuIpcUpbYiGESdCdWBc7eADNPCAOXeQzystz0brAjzZTgmyiuSq/rzUrWpFMKzp7a AEIAq2C/qvVI8zl8DVwnL3EuRSzEmH+5TftkR/OvS3e7JdNrE+RQ5zbeltrHTbR2R/wVNm+i29G WGZN8g2vVnaczRQp9oQKKQf5kTak0vOhOVBPFPXRJkJ3w707tlLKWEmFbu33B/DSQO+2p5LyCSJ Pn8SIA9hmyzHc3ljwFp4PAk8+sA5vN+3XbOmZVGx0LvDiMHSfoslLv5hlXdsErN8rbAF+nlC5tn Wjo306WbhiN/sIx8gDK5sS8FFPT1na9xO3V2/Rnzgyvd90vaYSrcY49b+r1GHfyUSWcLCs7LJwv v7s9nrFLFMHCfvA== X-Developer-Key: i=matttbe@kernel.org; a=openpgp; fpr=E8CB85F76877057A6E27F77AF6B7824F4269A073 X-Patchwork-Delegate: kuba@kernel.org From: Geliang Tang Similarly to net.mptcp.available_schedulers, this patch adds a new one net.mptcp.available_path_managers to list the available path managers. Signed-off-by: Geliang Tang Reviewed-by: Matthieu Baerts (NGI0) Signed-off-by: Matthieu Baerts (NGI0) --- Documentation/networking/mptcp-sysctl.rst | 4 ++++ include/net/mptcp.h | 2 ++ net/mptcp/ctrl.c | 25 +++++++++++++++++++++++++ net/mptcp/pm.c | 19 +++++++++++++++++++ net/mptcp/protocol.h | 1 + 5 files changed, 51 insertions(+) diff --git a/Documentation/networking/mptcp-sysctl.rst b/Documentation/networking/mptcp-sysctl.rst index b78a2254d4523e0c0fa09338d4b676da18f82d97..5bfab01eff5a9db89e1484787953241c16e147cf 100644 --- a/Documentation/networking/mptcp-sysctl.rst +++ b/Documentation/networking/mptcp-sysctl.rst @@ -30,6 +30,10 @@ allow_join_initial_addr_port - BOOLEAN Default: 1 +available_path_managers - STRING + Shows the available path managers choices that are registered. More + path managers may be available, but not loaded. + available_schedulers - STRING Shows the available schedulers choices that are registered. More packet schedulers may be available, but not loaded. diff --git a/include/net/mptcp.h b/include/net/mptcp.h index 645d15695e3f5ec4b945bb543630f3dcc54453f2..bfbad695951cf664af4d05390104883268b6bcd2 100644 --- a/include/net/mptcp.h +++ b/include/net/mptcp.h @@ -123,6 +123,8 @@ struct mptcp_sched_ops { } ____cacheline_aligned_in_smp; #define MPTCP_PM_NAME_MAX 16 +#define MPTCP_PM_MAX 128 +#define MPTCP_PM_BUF_MAX (MPTCP_PM_NAME_MAX * MPTCP_PM_MAX) struct mptcp_pm_ops { char name[MPTCP_PM_NAME_MAX]; diff --git a/net/mptcp/ctrl.c b/net/mptcp/ctrl.c index 4d8b31f32eb50347d10db792f084e43c93f687c6..d9290c5bb6c7956ca98319259f92b812680f74f7 100644 --- a/net/mptcp/ctrl.c +++ b/net/mptcp/ctrl.c @@ -253,6 +253,24 @@ static int proc_pm_type(const struct ctl_table *ctl, int write, return ret; } +static int proc_available_path_managers(const struct ctl_table *ctl, + int write, void *buffer, + size_t *lenp, loff_t *ppos) +{ + struct ctl_table tbl = { .maxlen = MPTCP_PM_BUF_MAX, }; + int ret; + + tbl.data = kmalloc(tbl.maxlen, GFP_USER); + if (!tbl.data) + return -ENOMEM; + + mptcp_pm_get_available(tbl.data, MPTCP_PM_BUF_MAX); + ret = proc_dostring(&tbl, write, buffer, lenp, ppos); + kfree(tbl.data); + + return ret; +} + static struct ctl_table mptcp_sysctl_table[] = { { .procname = "enabled", @@ -338,6 +356,12 @@ static struct ctl_table mptcp_sysctl_table[] = { .mode = 0644, .proc_handler = proc_path_manager, }, + { + .procname = "available_path_managers", + .maxlen = MPTCP_PM_BUF_MAX, + .mode = 0444, + .proc_handler = proc_available_path_managers, + }, }; static int mptcp_pernet_new_table(struct net *net, struct mptcp_pernet *pernet) @@ -364,6 +388,7 @@ static int mptcp_pernet_new_table(struct net *net, struct mptcp_pernet *pernet) table[9].data = &pernet->blackhole_timeout; table[10].data = &pernet->syn_retrans_before_tcp_fallback; table[11].data = &pernet->path_manager; + /* table[12] is for available_path_managers which is read-only info */ hdr = register_net_sysctl_sz(net, MPTCP_SYSCTL_PATH, table, ARRAY_SIZE(mptcp_sysctl_table)); diff --git a/net/mptcp/pm.c b/net/mptcp/pm.c index 3896f21a46bd7f6912d2ffe22a3984ba97923021..18b19dbccbba72916b2f666600a2bc8993ebd1df 100644 --- a/net/mptcp/pm.c +++ b/net/mptcp/pm.c @@ -1070,3 +1070,22 @@ void mptcp_pm_unregister(struct mptcp_pm_ops *pm_ops) list_del_rcu(&pm_ops->list); spin_unlock(&mptcp_pm_list_lock); } + +/* Build string with list of available path manager values. + * Similar to tcp_get_available_congestion_control() + */ +void mptcp_pm_get_available(char *buf, size_t maxlen) +{ + struct mptcp_pm_ops *pm_ops; + size_t offs = 0; + + rcu_read_lock(); + list_for_each_entry_rcu(pm_ops, &mptcp_pm_list, list) { + offs += snprintf(buf + offs, maxlen - offs, "%s%s", + offs == 0 ? "" : " ", pm_ops->name); + + if (WARN_ON_ONCE(offs >= maxlen)) + break; + } + rcu_read_unlock(); +} diff --git a/net/mptcp/protocol.h b/net/mptcp/protocol.h index 818c2c648677c255a00d668ab9b7406f0731fcf8..d409586b5977f93bff14fffd83b1d3020d57353b 100644 --- a/net/mptcp/protocol.h +++ b/net/mptcp/protocol.h @@ -1058,6 +1058,7 @@ struct mptcp_pm_ops *mptcp_pm_find(const char *name); int mptcp_pm_register(struct mptcp_pm_ops *pm_ops); void mptcp_pm_unregister(struct mptcp_pm_ops *pm_ops); int mptcp_pm_validate(struct mptcp_pm_ops *pm_ops); +void mptcp_pm_get_available(char *buf, size_t maxlen); void mptcp_userspace_pm_free_local_addr_list(struct mptcp_sock *msk); From patchwork Thu Mar 13 10:21:01 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Matthieu Baerts X-Patchwork-Id: 14014679 X-Patchwork-Delegate: kuba@kernel.org 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 673B4264F90; Thu, 13 Mar 2025 10:23:40 +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=1741861420; cv=none; b=fmuj7WADfgisvEa8FJQiiYJiHKaHeB0evISfjIdKxDNXON8zAo33gLiCkdY3oRA74uNN8T0NCQ127DiXfM3qBLT6BW3vZX6p+wh7bs3xHclJzA3YjYlj6bPpAeBL1HoRSl9VOaiBc0GA7CBplIvX/W6sj8q2Ug6VRoqIT7ZsgnM= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1741861420; c=relaxed/simple; bh=3F984dgkxbY6fPkXv+6fJCMjPaWNvKS7SFLAjQ5BVr4=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=Ad105awX4dWhv+fE91musVaqga7Mu2SRXc/AJPW/wFvspvE+R6WL+R1YuemNru+S0y79VgaWxZ0zb5gHl1Sgq+mWefpSd5I4E2XKg9qEpsl2gctJEmv1icYi9O8vNyM/fAt7hKB8/qHcJUah9sxs3EVd7f+YJwvCJpmjnO9oAcI= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=fnmz/Ive; 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="fnmz/Ive" Received: by smtp.kernel.org (Postfix) with ESMTPSA id E2DFCC4CEE3; Thu, 13 Mar 2025 10:23:29 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1741861419; bh=3F984dgkxbY6fPkXv+6fJCMjPaWNvKS7SFLAjQ5BVr4=; h=From:Date:Subject:References:In-Reply-To:To:Cc:From; b=fnmz/IvenKzyDaTbcaqWf4f8uu+jh6px4VUuCIEptlCm2OeaDysjT3zmIb3b0Z3wE 1yu5TRA8yMXGqQkPLEvs2P74ul2Fu83l5BJ0Ty4PnLaXPCAWpoUbJF/M6E7N2U+egd LByaippAqOHi7557T4pj1nemmRTCWQ9IU1LmAKEup2myWtHfFFv6JXMu6E5gR+eT2f w3TeteCXXOyxAZcwS4fYZuORHmVibqCeqsnjLtWJKu6QY4hAVbE3PqhLINxtI8pE/M 9MYdmR4OYJxJd8LgX0TalbgG6rTQR+qAzIKIExva5vqsi8Tt62+x2SJNbaqopUHErn 87OMlU4OsUzcg== From: "Matthieu Baerts (NGI0)" Date: Thu, 13 Mar 2025 11:21:01 +0100 Subject: [PATCH net-next 12/12] selftests: mptcp: add pm sysctl mapping tests Precedence: bulk X-Mailing-List: netdev@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Message-Id: <20250313-net-next-mptcp-pm-ops-intro-v1-12-f4e4a88efc50@kernel.org> References: <20250313-net-next-mptcp-pm-ops-intro-v1-0-f4e4a88efc50@kernel.org> In-Reply-To: <20250313-net-next-mptcp-pm-ops-intro-v1-0-f4e4a88efc50@kernel.org> To: mptcp@lists.linux.dev, Mat Martineau , Geliang Tang , "David S. Miller" , Eric Dumazet , Jakub Kicinski , Paolo Abeni , Simon Horman , Jonathan Corbet , Shuah Khan Cc: netdev@vger.kernel.org, linux-kernel@vger.kernel.org, linux-doc@vger.kernel.org, linux-kselftest@vger.kernel.org, "Matthieu Baerts (NGI0)" , Geliang Tang X-Mailer: b4 0.14.2 X-Developer-Signature: v=1; a=openpgp-sha256; l=2235; i=matttbe@kernel.org; h=from:subject:message-id; bh=Tc4PpQ+Y/jnprgu+15f2z73L06rmBn9s1LlWpDmpj4I=; b=owEBbQKS/ZANAwAIAfa3gk9CaaBzAcsmYgBn0rGbRH937aT7yKRBus6q5SgVNpqGBqg2hpW9t CbZC9NalcCJAjMEAAEIAB0WIQToy4X3aHcFem4n93r2t4JPQmmgcwUCZ9KxmwAKCRD2t4JPQmmg c5SUD/9Sy+sMpYkhdzaJ4ijw9HCSPkKvL7xPzQB1qvLOh0PkXQlZf2gBvQ8KXhqOJg2P9TtUkJm xVW37RogFdsV3ByxlQD0Bib9rUGWIFIj6C8LXi1MBglQdo5xPlYkZzhcWWyXSOMGDANfEKzw4DZ j8R4N2rlwwzmbuFNBxR87Nk+Tet4kvHHL6YMG/ts3voh1PT1QyR7se27NrMAIFaqdWVbqAXLZsX yF4SlNVYo7Oz7+bZTWywLpT9dZbGkMHV+x0YC8+C1bh/sLT0jtF/tCxUkZLXIjcVNdeg5JRuHq8 +Yz/5L+XqeocpGfhjp+df4ZGgujez+IlcnlT3YBg00s0Opi/HGY5ELlXYyYKZkJhiNjj7NdVgNW f2ARUlaFf1x/yYoLwyR7GzOIfnVhzKiGtmn3c42+iOicAgf311JfFdodVCaPbtrazNTjQTtEiSr qZREkGGiOaBcEoA3Z+Wk1TZokBdvtdGHx70LLvspqKZqjzS7QARsc+BAbLqbin/lV9+zGZafmvQ /0Ujw1PTSqbNJHWgpWXlGrpO+lFXg9xwOn4/4gpdqxVw9y7+6v5+A+ildw0nSfzpgRsfHekyoUj HNLLx9jwaEEARmKat34yC+0/B7TlcAlVsZFWK/PB8IOv6xtJrJs3K1RDJSvtFQ2WTijat9K5jzp KkS9TRXHDUJTB8w== X-Developer-Key: i=matttbe@kernel.org; a=openpgp; fpr=E8CB85F76877057A6E27F77AF6B7824F4269A073 X-Patchwork-Delegate: kuba@kernel.org From: Geliang Tang This patch checks if the newly added net.mptcp.path_manager is mapped successfully from or to the old net.mptcp.pm_type in userspace_pm.sh. Signed-off-by: Geliang Tang Reviewed-by: Matthieu Baerts (NGI0) Signed-off-by: Matthieu Baerts (NGI0) --- tools/testing/selftests/net/mptcp/userspace_pm.sh | 30 ++++++++++++++++++++++- 1 file changed, 29 insertions(+), 1 deletion(-) diff --git a/tools/testing/selftests/net/mptcp/userspace_pm.sh b/tools/testing/selftests/net/mptcp/userspace_pm.sh index 3651f73451cf8b07d4492c60da45e88aabc44b7a..333064b0b5ac03ae003417d2070f3c08f94743ed 100755 --- a/tools/testing/selftests/net/mptcp/userspace_pm.sh +++ b/tools/testing/selftests/net/mptcp/userspace_pm.sh @@ -117,7 +117,36 @@ cleanup() trap cleanup EXIT # Create and configure network namespaces for testing +print_title "Init" mptcp_lib_ns_init ns1 ns2 + +# check path_manager and pm_type sysctl mapping +if [ -f /proc/sys/net/mptcp/path_manager ]; then + ip netns exec "$ns1" sysctl -q net.mptcp.path_manager=userspace + pm_type="$(ip netns exec "$ns1" sysctl -n net.mptcp.pm_type)" + if [ "${pm_type}" != "1" ]; then + test_fail "unexpected pm_type: ${pm_type}" + mptcp_lib_result_print_all_tap + exit ${KSFT_FAIL} + fi + + ip netns exec "$ns1" sysctl -q net.mptcp.path_manager=error 2>/dev/null + pm_type="$(ip netns exec "$ns1" sysctl -n net.mptcp.pm_type)" + if [ "${pm_type}" != "1" ]; then + test_fail "unexpected pm_type after error: ${pm_type}" + mptcp_lib_result_print_all_tap + exit ${KSFT_FAIL} + fi + + ip netns exec "$ns1" sysctl -q net.mptcp.pm_type=0 + pm_name="$(ip netns exec "$ns1" sysctl -n net.mptcp.path_manager)" + if [ "${pm_name}" != "kernel" ]; then + test_fail "unexpected path-manager: ${pm_name}" + mptcp_lib_result_print_all_tap + exit ${KSFT_FAIL} + fi +fi + for i in "$ns1" "$ns2" ;do ip netns exec "$i" sysctl -q net.mptcp.pm_type=1 done @@ -152,7 +181,6 @@ mptcp_lib_events "${ns1}" "${server_evts}" server_evts_pid sleep 0.5 mptcp_lib_subtests_last_ts_reset -print_title "Init" print_test "Created network namespaces ns1, ns2" test_pass