From nobody Fri Mar 29 08:50:35 2024 Delivered-To: wpasupplicant.patchew@gmail.com Received: by 2002:a02:cbb9:0:0:0:0:0 with SMTP id v25csp1060438jap; Wed, 17 Nov 2021 17:30:19 -0800 (PST) X-Google-Smtp-Source: ABdhPJyub5f4F+lomJC44BkulvRBk75UhgB35c5PlIgX7zt4nAh0sgR8NxXuumF+Xf9ZrhgsOgG7 X-Received: by 2002:a05:6122:920:: with SMTP id j32mr96375874vka.20.1637199019670; Wed, 17 Nov 2021 17:30:19 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1637199019; cv=none; d=google.com; s=arc-20160816; b=Id7BjPolPC6bl+DGbu/WTDOZR8MA3V3rsYIdIMPY8cLsUXMXfJeaaZ26VV63zY+rDh u36O8PWneh0Z0Q1bAZ80KTJ2Ky0RbJzM+UsQke45lZhRk37k0W1IP+VVwryaxswmMd5H STNFSiC13AJfkPayXpvxBErhjzwgKazP6jlzqUh/U0Gtd+Xmq4h8FGp+OWM7A8R2xaJ/ Rz3VULJy9Gz0U+QB4s41pyRkD2//OG+6txiHrltZDSI4f/Reij6vTxJzl1A1a34Xd63Z 1u5+knGfEcHq4JxHPudrUeuDgBEr0wM4LW5/SE8FebowyFYj+InAUvLZSyyqPD6sK1dn BQkg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=content-transfer-encoding:mime-version:list-unsubscribe :list-subscribe:list-id:precedence:references:in-reply-to:message-id :date:subject:cc:to:from; bh=fw9mhjQV60AmP7IhT56VSUaNeKbt11yItLAuMESh/78=; b=exzjlE671YP5aM4Vb2asAbkNMUU2OqqQIK2PeWSdBcTMTBND1Ts03dpzujWvLcHNnI 3SoEoCdUCWKp902MslRVqYVECTXeZcLrwRE9t3vFvgyY+cgkYn4DFivJg8fAOLBs7EVj N5lciyRzwepzoA2RHjmF/ta2jxFEkWZcJATzWWcQwocbrU+vbSwYpBv7QmWZQ3fiWEGS pq8bmkHj7bGHM1anJDLqiQvlmqY7DSXoMEdL3wa3gEjJwOAwCZfnCwPRYgrlvmZ4ZOC+ +1gSRymF1FDtYlAmxIu9cTOmNmvWsS++HG00ZTF/IPjtU2xvqImb5JL2CDCpD571i9Ba LVdw== ARC-Authentication-Results: i=1; mx.google.com; spf=pass (google.com: domain of mptcp+bounces-2459-wpasupplicant.patchew=gmail.com@lists.linux.dev designates 147.75.197.195 as permitted sender) smtp.mailfrom="mptcp+bounces-2459-wpasupplicant.patchew=gmail.com@lists.linux.dev"; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=intel.com Return-Path: Received: from ewr.edge.kernel.org (ewr.edge.kernel.org. [147.75.197.195]) by mx.google.com with ESMTPS id u22si3336199vsi.427.2021.11.17.17.30.19 for (version=TLS1_2 cipher=ECDHE-ECDSA-AES128-GCM-SHA256 bits=128/128); Wed, 17 Nov 2021 17:30:19 -0800 (PST) Received-SPF: pass (google.com: domain of mptcp+bounces-2459-wpasupplicant.patchew=gmail.com@lists.linux.dev designates 147.75.197.195 as permitted sender) client-ip=147.75.197.195; Authentication-Results: mx.google.com; spf=pass (google.com: domain of mptcp+bounces-2459-wpasupplicant.patchew=gmail.com@lists.linux.dev designates 147.75.197.195 as permitted sender) smtp.mailfrom="mptcp+bounces-2459-wpasupplicant.patchew=gmail.com@lists.linux.dev"; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=intel.com Received: from smtp.subspace.kernel.org (wormhole.subspace.kernel.org [52.25.139.140]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by ewr.edge.kernel.org (Postfix) with ESMTPS id 0EAC61C0D2D for ; Thu, 18 Nov 2021 01:30:19 +0000 (UTC) Received: from localhost.localdomain (localhost.localdomain [127.0.0.1]) by smtp.subspace.kernel.org (Postfix) with ESMTP id C1FCC2C97; Thu, 18 Nov 2021 01:30:16 +0000 (UTC) X-Original-To: mptcp@lists.linux.dev Received: from mga11.intel.com (mga11.intel.com [192.55.52.93]) (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 86B5B2C89 for ; Thu, 18 Nov 2021 01:30:15 +0000 (UTC) X-IronPort-AV: E=McAfee;i="6200,9189,10171"; a="231577911" X-IronPort-AV: E=Sophos;i="5.87,243,1631602800"; d="scan'208";a="231577911" Received: from fmsmga004.fm.intel.com ([10.253.24.48]) by fmsmga102.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 17 Nov 2021 17:30:14 -0800 X-IronPort-AV: E=Sophos;i="5.87,243,1631602800"; d="scan'208";a="568294740" Received: from mjmartin-desk2.amr.corp.intel.com (HELO mjmartin-desk2.intel.com) ([10.251.27.251]) by fmsmga004-auth.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 17 Nov 2021 17:30:14 -0800 From: Mat Martineau To: mptcp@lists.linux.dev Cc: Mat Martineau Subject: [PATCH mptcp-next 1/6] mptcp: Remove redundant assignments in path manager init Date: Wed, 17 Nov 2021 17:30:00 -0800 Message-Id: <20211118013005.263660-2-mathew.j.martineau@linux.intel.com> X-Mailer: git-send-email 2.34.0 In-Reply-To: <20211118013005.263660-1-mathew.j.martineau@linux.intel.com> References: <20211118013005.263660-1-mathew.j.martineau@linux.intel.com> Precedence: bulk X-Mailing-List: mptcp@lists.linux.dev List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" A few members of the mptcp_pm_data struct were assigned to hard-coded values in mptcp_pm_data_init(), and then immediately changed in mptcp_pm_nl_data_init(). Instead, flatten all the initialization in to mptcp_pm_data_init(). Signed-off-by: Mat Martineau --- net/mptcp/pm.c | 38 +++++++++++++++++++++----------------- net/mptcp/pm_netlink.c | 12 ------------ net/mptcp/protocol.h | 1 - 3 files changed, 21 insertions(+), 30 deletions(-) diff --git a/net/mptcp/pm.c b/net/mptcp/pm.c index 86b38a830b4c..467fbb2a4eba 100644 --- a/net/mptcp/pm.c +++ b/net/mptcp/pm.c @@ -364,23 +364,27 @@ void mptcp_pm_subflow_chk_stale(const struct mptcp_so= ck *msk, struct sock *ssk) =20 void mptcp_pm_data_init(struct mptcp_sock *msk) { - msk->pm.add_addr_signaled =3D 0; - msk->pm.add_addr_accepted =3D 0; - msk->pm.local_addr_used =3D 0; - msk->pm.subflows =3D 0; - msk->pm.rm_list_tx.nr =3D 0; - msk->pm.rm_list_rx.nr =3D 0; - WRITE_ONCE(msk->pm.work_pending, false); - WRITE_ONCE(msk->pm.addr_signal, 0); - WRITE_ONCE(msk->pm.accept_addr, false); - WRITE_ONCE(msk->pm.accept_subflow, false); - WRITE_ONCE(msk->pm.remote_deny_join_id0, false); - msk->pm.status =3D 0; - - spin_lock_init(&msk->pm.lock); - INIT_LIST_HEAD(&msk->pm.anno_list); - - mptcp_pm_nl_data_init(msk); + bool subflows_allowed =3D !!mptcp_pm_get_subflows_max(msk); + struct mptcp_pm_data *pm =3D &msk->pm; + + pm->add_addr_signaled =3D 0; + pm->add_addr_accepted =3D 0; + pm->local_addr_used =3D 0; + pm->subflows =3D 0; + pm->rm_list_tx.nr =3D 0; + pm->rm_list_rx.nr =3D 0; + WRITE_ONCE(pm->work_pending, + (!!mptcp_pm_get_local_addr_max(msk) && subflows_allowed) || + !!mptcp_pm_get_add_addr_signal_max(msk)); + WRITE_ONCE(pm->addr_signal, 0); + WRITE_ONCE(pm->accept_addr, + !!mptcp_pm_get_add_addr_accept_max(msk) && subflows_allowed); + WRITE_ONCE(pm->accept_subflow, subflows_allowed); + WRITE_ONCE(pm->remote_deny_join_id0, false); + pm->status =3D 0; + + spin_lock_init(&pm->lock); + INIT_LIST_HEAD(&pm->anno_list); } =20 void __init mptcp_pm_init(void) diff --git a/net/mptcp/pm_netlink.c b/net/mptcp/pm_netlink.c index 7b96be1e9f14..bab78e2f5299 100644 --- a/net/mptcp/pm_netlink.c +++ b/net/mptcp/pm_netlink.c @@ -954,18 +954,6 @@ int mptcp_pm_nl_get_local_id(struct mptcp_sock *msk, s= truct sock_common *skc) return ret; } =20 -void mptcp_pm_nl_data_init(struct mptcp_sock *msk) -{ - struct mptcp_pm_data *pm =3D &msk->pm; - bool subflows; - - subflows =3D !!mptcp_pm_get_subflows_max(msk); - WRITE_ONCE(pm->work_pending, (!!mptcp_pm_get_local_addr_max(msk) && subfl= ows) || - !!mptcp_pm_get_add_addr_signal_max(msk)); - WRITE_ONCE(pm->accept_addr, !!mptcp_pm_get_add_addr_accept_max(msk) && su= bflows); - WRITE_ONCE(pm->accept_subflow, subflows); -} - #define MPTCP_PM_CMD_GRP_OFFSET 0 #define MPTCP_PM_EV_GRP_OFFSET 1 =20 diff --git a/net/mptcp/protocol.h b/net/mptcp/protocol.h index 906509c6cde5..092cb77a64d8 100644 --- a/net/mptcp/protocol.h +++ b/net/mptcp/protocol.h @@ -803,7 +803,6 @@ bool mptcp_pm_rm_addr_signal(struct mptcp_sock *msk, un= signed int remaining, int mptcp_pm_get_local_id(struct mptcp_sock *msk, struct sock_common *skc); =20 void __init mptcp_pm_nl_init(void); -void mptcp_pm_nl_data_init(struct mptcp_sock *msk); void mptcp_pm_nl_work(struct mptcp_sock *msk); void mptcp_pm_nl_rm_subflow_received(struct mptcp_sock *msk, const struct mptcp_rm_list *rm_list); --=20 2.34.0 From nobody Fri Mar 29 08:50:35 2024 Delivered-To: wpasupplicant.patchew@gmail.com Received: by 2002:a02:cbb9:0:0:0:0:0 with SMTP id v25csp1060543jap; Wed, 17 Nov 2021 17:30:24 -0800 (PST) X-Google-Smtp-Source: ABdhPJzZGLIxBH+oS+ZXO3Cqu0kwBICexQAymswhsZS75nUxKPKtlHeOrpMuZrkxwAPmxUJR5mKR X-Received: by 2002:ab0:35d2:: with SMTP id x18mr30312884uat.32.1637199024328; Wed, 17 Nov 2021 17:30:24 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1637199024; cv=none; d=google.com; s=arc-20160816; b=lweWQGwyuxLec/t2pN+JqXjz7yoj3gVyGVJdfK8TnXYH5gvLCt42lD4OEYCHl7exu0 qBsjrILY8GyRpEZvDT4GzlFxRzDRTRiWjigV1ZVuxLpPsOGZ0Ihw8YrvTTlXGzCrwMWZ JPvOVRtT+bApHrRWCgMIE87ixI1t1d6lXUmEwUG0ab6A+iCkSqsp6/gmRAoDkWs0uYR8 Cl+foJXi7KI1yl4poVitwFo/Pc1u8MWY/4dnXC6J4EasnOok0C383IGlZ/9EEH2Gol1L kB5S4EcNVLnl+Y8u/0eLJ4AQuZYJZCp1Binb8ZItF6SaN4IogRwHskxbXsFKuR859ASz mecw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=content-transfer-encoding:mime-version:list-unsubscribe :list-subscribe:list-id:precedence:references:in-reply-to:message-id :date:subject:cc:to:from; bh=XsjB9ZJEfKCjqPGPEzpQGVtLo2EirTe/seK2RncbrYE=; b=uSK3UYxELh+4xcEqMA+TNXcPb0TTlrzPJnErIDj8CzdSkHZZ3BrYOyJeiyWSeTmTpL qXh8o8te1K7HZ3+dfK/7Aywq9O1izy+ngA/TMdN7zAWjJjlnGA0wFLRG9gpf7lsSdGSI 6tEhRJl/bNGeGfPRfYzV/XTu3zEuSa90qCusPoj+/+OGMfpOIRIqGSVWPwl62tPDXOjH fzukMOpjHJm3eOUavjFQW/Q2SND11rtVgIpovQgJ45kzH9mbcODTMvP7582/c1oaq/fB iXUUsQPtg/7mPzamtHIHkDhMSqyD8UBz3lj+031ItXiu9mJLPyRAEO2Qc9KJANaN12X4 EP7g== ARC-Authentication-Results: i=1; mx.google.com; spf=pass (google.com: domain of mptcp+bounces-2463-wpasupplicant.patchew=gmail.com@lists.linux.dev designates 147.75.197.195 as permitted sender) smtp.mailfrom="mptcp+bounces-2463-wpasupplicant.patchew=gmail.com@lists.linux.dev"; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=intel.com Return-Path: Received: from ewr.edge.kernel.org (ewr.edge.kernel.org. [147.75.197.195]) by mx.google.com with ESMTPS id b10si3747386vst.140.2021.11.17.17.30.24 for (version=TLS1_2 cipher=ECDHE-ECDSA-AES128-GCM-SHA256 bits=128/128); Wed, 17 Nov 2021 17:30:24 -0800 (PST) Received-SPF: pass (google.com: domain of mptcp+bounces-2463-wpasupplicant.patchew=gmail.com@lists.linux.dev designates 147.75.197.195 as permitted sender) client-ip=147.75.197.195; Authentication-Results: mx.google.com; spf=pass (google.com: domain of mptcp+bounces-2463-wpasupplicant.patchew=gmail.com@lists.linux.dev designates 147.75.197.195 as permitted sender) smtp.mailfrom="mptcp+bounces-2463-wpasupplicant.patchew=gmail.com@lists.linux.dev"; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=intel.com Received: from smtp.subspace.kernel.org (wormhole.subspace.kernel.org [52.25.139.140]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by ewr.edge.kernel.org (Postfix) with ESMTPS id CC10E1C0F1A for ; Thu, 18 Nov 2021 01:30:23 +0000 (UTC) Received: from localhost.localdomain (localhost.localdomain [127.0.0.1]) by smtp.subspace.kernel.org (Postfix) with ESMTP id B41452C93; Thu, 18 Nov 2021 01:30:18 +0000 (UTC) X-Original-To: mptcp@lists.linux.dev Received: from mga11.intel.com (mga11.intel.com [192.55.52.93]) (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 7AE4A2C83 for ; Thu, 18 Nov 2021 01:30:16 +0000 (UTC) X-IronPort-AV: E=McAfee;i="6200,9189,10171"; a="231577912" X-IronPort-AV: E=Sophos;i="5.87,243,1631602800"; d="scan'208";a="231577912" Received: from fmsmga004.fm.intel.com ([10.253.24.48]) by fmsmga102.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 17 Nov 2021 17:30:14 -0800 X-IronPort-AV: E=Sophos;i="5.87,243,1631602800"; d="scan'208";a="568294743" Received: from mjmartin-desk2.amr.corp.intel.com (HELO mjmartin-desk2.intel.com) ([10.251.27.251]) by fmsmga004-auth.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 17 Nov 2021 17:30:14 -0800 From: Mat Martineau To: mptcp@lists.linux.dev Cc: Mat Martineau Subject: [PATCH mptcp-next 2/6] mptcp: Add a member to mptcp_pm_data to track kernel vs userspace mode Date: Wed, 17 Nov 2021 17:30:01 -0800 Message-Id: <20211118013005.263660-3-mathew.j.martineau@linux.intel.com> X-Mailer: git-send-email 2.34.0 In-Reply-To: <20211118013005.263660-1-mathew.j.martineau@linux.intel.com> References: <20211118013005.263660-1-mathew.j.martineau@linux.intel.com> Precedence: bulk X-Mailing-List: mptcp@lists.linux.dev List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" When adding support for netlink path management commands, the kernel needs to know whether paths are being controlled by the in-kernel path manager or a userspace PM. Signed-off-by: Mat Martineau --- net/mptcp/pm.c | 4 ++++ net/mptcp/protocol.h | 9 +++++++++ 2 files changed, 13 insertions(+) diff --git a/net/mptcp/pm.c b/net/mptcp/pm.c index 467fbb2a4eba..3a3800771aca 100644 --- a/net/mptcp/pm.c +++ b/net/mptcp/pm.c @@ -373,6 +373,10 @@ void mptcp_pm_data_init(struct mptcp_sock *msk) pm->subflows =3D 0; pm->rm_list_tx.nr =3D 0; pm->rm_list_rx.nr =3D 0; + WRITE_ONCE(pm->pm_type, MPTCP_PM_TYPE_KERNEL); + /* pm->work_pending must be only be set to 'true' when + * pm->pm_type is set to MPTCP_PM_TYPE_KERNEL + */ WRITE_ONCE(pm->work_pending, (!!mptcp_pm_get_local_addr_max(msk) && subflows_allowed) || !!mptcp_pm_get_add_addr_signal_max(msk)); diff --git a/net/mptcp/protocol.h b/net/mptcp/protocol.h index 092cb77a64d8..edaf0cc75474 100644 --- a/net/mptcp/protocol.h +++ b/net/mptcp/protocol.h @@ -178,6 +178,14 @@ enum mptcp_pm_status { MPTCP_PM_SUBFLOW_ESTABLISHED, }; =20 +enum mptcp_pm_type { + MPTCP_PM_TYPE_KERNEL =3D 0, + MPTCP_PM_TYPE_USERSPACE, + + __MPTCP_PM_TYPE_NR, + __MPTCP_PM_TYPE_MAX =3D __MPTCP_PM_TYPE_NR - 1, +}; + enum mptcp_addr_signal_status { MPTCP_ADD_ADDR_SIGNAL, MPTCP_ADD_ADDR_ECHO, @@ -200,6 +208,7 @@ struct mptcp_pm_data { u8 add_addr_signaled; u8 add_addr_accepted; u8 local_addr_used; + u8 pm_type; u8 subflows; u8 status; struct mptcp_rm_list rm_list_tx; --=20 2.34.0 From nobody Fri Mar 29 08:50:35 2024 Delivered-To: wpasupplicant.patchew@gmail.com Received: by 2002:a02:cbb9:0:0:0:0:0 with SMTP id v25csp1060465jap; Wed, 17 Nov 2021 17:30:21 -0800 (PST) X-Google-Smtp-Source: ABdhPJxnrBnfEQSZifueffaYP7w2ntXjHdHN5AJOvL4B7vTKzlt7fV1u02qOxIQPao16Oi4dsYx5 X-Received: by 2002:a05:6102:c8a:: with SMTP id f10mr20054122vst.22.1637199021029; Wed, 17 Nov 2021 17:30:21 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1637199021; cv=none; d=google.com; s=arc-20160816; b=gJTRRqvnH6OLLP0HB1TUufiLo1g5Qj2hBXrWsJzyVQ1cw4Clw6Gu7BKyke36OwbM/2 GIi7Kgcx5oBhg8E4RehX83w3WxaOdpveAH/aTJJdgDUiSPR/UhQfF3khpp2Exmp+xFfW D/xMHAV0NGrpWq+/FhCKA2BdFz7UWgLX7n6oi4r/EK977S8YWAUHF6DWbnntSyjXaKyy OSm8Dxu4lcARSlEImbdZ7I3WE7bu113OFCY4X3baD2TwvIc4qtznqNmbpL33rtg9y2Qq 9GMs+ZzpEptZpVI7WwilTO5/wHShXs8WnngkFhPrioQkuhW64xvI3slOCbgHd/MIzYvy tIcg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=content-transfer-encoding:mime-version:list-unsubscribe :list-subscribe:list-id:precedence:references:in-reply-to:message-id :date:subject:cc:to:from; bh=ALbGEzOLPayNMqqQtmuVAMjhWzV4vcC+LXALDbOOfIs=; b=mAVVwd1mLEgOt96pnEXR6mjDDZ/cyIw1EU4SRnF3jT+gExwcJBmxuB62co0Pu5bO+r iTn9lGwGpuf5kTbpIb3vg0O5IMJnSOH2OrFyUyEJIZ00GTvgGGeE+GTJJ+9TUk1W2tCV NSgFzG8OVHQeqYVlYNhzRH5dboLyaJom2RO3isf/AW9oC7VuVx3HeSFTrRpDKDd/sAU3 ieHH35UMddTWgUX05x2ff8ipkxfTl1y20mitrlJ0mR41IVMDHfTQ8W6hhvFV7LT9oi2m 1sc+CSfM5VOff+8wvi9M8ggEwAK7JEQuNqA4oQuPTR18kVUHvT8a7KudyPF48AeDXqmu 9D/w== ARC-Authentication-Results: i=1; mx.google.com; spf=pass (google.com: domain of mptcp+bounces-2460-wpasupplicant.patchew=gmail.com@lists.linux.dev designates 147.75.197.195 as permitted sender) smtp.mailfrom="mptcp+bounces-2460-wpasupplicant.patchew=gmail.com@lists.linux.dev"; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=intel.com Return-Path: Received: from ewr.edge.kernel.org (ewr.edge.kernel.org. [147.75.197.195]) by mx.google.com with ESMTPS id b10si3747386vst.140.2021.11.17.17.30.20 for (version=TLS1_2 cipher=ECDHE-ECDSA-AES128-GCM-SHA256 bits=128/128); Wed, 17 Nov 2021 17:30:21 -0800 (PST) Received-SPF: pass (google.com: domain of mptcp+bounces-2460-wpasupplicant.patchew=gmail.com@lists.linux.dev designates 147.75.197.195 as permitted sender) client-ip=147.75.197.195; Authentication-Results: mx.google.com; spf=pass (google.com: domain of mptcp+bounces-2460-wpasupplicant.patchew=gmail.com@lists.linux.dev designates 147.75.197.195 as permitted sender) smtp.mailfrom="mptcp+bounces-2460-wpasupplicant.patchew=gmail.com@lists.linux.dev"; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=intel.com Received: from smtp.subspace.kernel.org (wormhole.subspace.kernel.org [52.25.139.140]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by ewr.edge.kernel.org (Postfix) with ESMTPS id 435451C0F14 for ; Thu, 18 Nov 2021 01:30:20 +0000 (UTC) Received: from localhost.localdomain (localhost.localdomain [127.0.0.1]) by smtp.subspace.kernel.org (Postfix) with ESMTP id 874422C89; Thu, 18 Nov 2021 01:30:17 +0000 (UTC) X-Original-To: mptcp@lists.linux.dev Received: from mga11.intel.com (mga11.intel.com [192.55.52.93]) (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 AB5692C95 for ; Thu, 18 Nov 2021 01:30:16 +0000 (UTC) X-IronPort-AV: E=McAfee;i="6200,9189,10171"; a="231577913" X-IronPort-AV: E=Sophos;i="5.87,243,1631602800"; d="scan'208";a="231577913" Received: from fmsmga004.fm.intel.com ([10.253.24.48]) by fmsmga102.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 17 Nov 2021 17:30:14 -0800 X-IronPort-AV: E=Sophos;i="5.87,243,1631602800"; d="scan'208";a="568294746" Received: from mjmartin-desk2.amr.corp.intel.com (HELO mjmartin-desk2.intel.com) ([10.251.27.251]) by fmsmga004-auth.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 17 Nov 2021 17:30:14 -0800 From: Mat Martineau To: mptcp@lists.linux.dev Cc: Mat Martineau Subject: [PATCH mptcp-next 3/6] mptcp: Bypass kernel PM when userspace PM is enabled Date: Wed, 17 Nov 2021 17:30:02 -0800 Message-Id: <20211118013005.263660-4-mathew.j.martineau@linux.intel.com> X-Mailer: git-send-email 2.34.0 In-Reply-To: <20211118013005.263660-1-mathew.j.martineau@linux.intel.com> References: <20211118013005.263660-1-mathew.j.martineau@linux.intel.com> Precedence: bulk X-Mailing-List: mptcp@lists.linux.dev List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" When a MPTCP connection is managed by a userspace PM, bypass the kernel PM for incoming advertisements and subflow events. Netlink events are still sent to userspace. Signed-off-by: Mat Martineau --- net/mptcp/pm.c | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/net/mptcp/pm.c b/net/mptcp/pm.c index 3a3800771aca..7f96a888e2d5 100644 --- a/net/mptcp/pm.c +++ b/net/mptcp/pm.c @@ -189,7 +189,8 @@ void mptcp_pm_add_addr_received(struct mptcp_sock *msk, =20 spin_lock_bh(&pm->lock); =20 - if (!READ_ONCE(pm->accept_addr)) { + if (!READ_ONCE(pm->accept_addr) || + READ_ONCE(pm->pm_type) !=3D MPTCP_PM_TYPE_KERNEL) { mptcp_pm_announce_addr(msk, addr, true); mptcp_pm_add_addr_send_ack(msk); } else if (mptcp_pm_schedule_work(msk, MPTCP_PM_ADD_ADDR_RECEIVED)) { @@ -233,6 +234,9 @@ void mptcp_pm_rm_addr_received(struct mptcp_sock *msk, for (i =3D 0; i < rm_list->nr; i++) mptcp_event_addr_removed(msk, rm_list->ids[i]); =20 + if (READ_ONCE(pm->pm_type) !=3D MPTCP_PM_TYPE_KERNEL) + return; + spin_lock_bh(&pm->lock); mptcp_pm_schedule_work(msk, MPTCP_PM_RM_ADDR_RECEIVED); pm->rm_list_rx =3D *rm_list; --=20 2.34.0 From nobody Fri Mar 29 08:50:35 2024 Delivered-To: wpasupplicant.patchew@gmail.com Received: by 2002:a02:cbb9:0:0:0:0:0 with SMTP id v25csp1060498jap; Wed, 17 Nov 2021 17:30:22 -0800 (PST) X-Google-Smtp-Source: ABdhPJwvCgXhQ/R8EGlrxr/ccI6OmblpZcEplsitXhKUXdj4PYftMVCRj0LFZ72ukIEnUHYNbQ4r X-Received: by 2002:ab0:719a:: with SMTP id l26mr30403257uao.88.1637199022170; Wed, 17 Nov 2021 17:30:22 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1637199022; cv=none; d=google.com; s=arc-20160816; b=yeG3EFDAT/Bq5eMivDDkTY/BI0PfHhW7fRdBWhkCbpM0CK9wPOhmPUoG1sZAHPO/dw jz2m7IWSNpAGMM5IpHSyWgv9TPZt1JNASkKVJki/FbIQvOF9ZDT06B6FenqITJgitFMT i16aO1tPqQTttcbQr3OEczi1KNDQ6TlWsCUTZSDm17hjcqBMWida2BJjRG5GcgV1tjni ZpWAXHJaKMsFh4KtJItSaBfxb74Db0+HDz/0SARqrz7i3eB5UPve5F1RZ3JlRCNJIDHU 0FKDMPGEpLEhOwZdxJpYyjnTLUWsRrI7qeGQeU6H7WN/RqIU1nfVM9YrwInvjio9r0Uy 0CTw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=content-transfer-encoding:mime-version:list-unsubscribe :list-subscribe:list-id:precedence:references:in-reply-to:message-id :date:subject:cc:to:from; bh=HxjHTe95MGZfb9Asz24J40R7olwXxy79botr5ldP1D4=; b=NJXwfLcqgWLhvVVWM4kvDiT42/b8O8CFMQBjVRIuaAAWb65/1n2SHiC8eXJYG5OX45 8sXFfR6RS4KhW8cVqsVWWvstVcyPnQpK+wLLZfnN4DuI0TnICLeevfzon/izfz6OvfIE ADzCZ8RNRs39xbeVVlwvvTPB6J57hzKTxKQ6UJkjGJBzdPSjb4hK77BRD8KafYj0os9W 7oIQE6fU8eIwkofT3oJScAxoNO0mbZBQ3BiB3JKvi5YVuEhKLBu20yPUq+0D2Q8AhYRY Lbbfxo1tDHHvRxh7Jgtj6tcl81lNmHbiyfvw9NmnMRd4upPpXGKqKgskt0ipQz5o4S7S CVdw== ARC-Authentication-Results: i=1; mx.google.com; spf=pass (google.com: domain of mptcp+bounces-2461-wpasupplicant.patchew=gmail.com@lists.linux.dev designates 147.75.197.195 as permitted sender) smtp.mailfrom="mptcp+bounces-2461-wpasupplicant.patchew=gmail.com@lists.linux.dev"; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=intel.com Return-Path: Received: from ewr.edge.kernel.org (ewr.edge.kernel.org. [147.75.197.195]) by mx.google.com with ESMTPS id i7si3630544uab.17.2021.11.17.17.30.22 for (version=TLS1_2 cipher=ECDHE-ECDSA-AES128-GCM-SHA256 bits=128/128); Wed, 17 Nov 2021 17:30:22 -0800 (PST) Received-SPF: pass (google.com: domain of mptcp+bounces-2461-wpasupplicant.patchew=gmail.com@lists.linux.dev designates 147.75.197.195 as permitted sender) client-ip=147.75.197.195; Authentication-Results: mx.google.com; spf=pass (google.com: domain of mptcp+bounces-2461-wpasupplicant.patchew=gmail.com@lists.linux.dev designates 147.75.197.195 as permitted sender) smtp.mailfrom="mptcp+bounces-2461-wpasupplicant.patchew=gmail.com@lists.linux.dev"; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=intel.com Received: from smtp.subspace.kernel.org (wormhole.subspace.kernel.org [52.25.139.140]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by ewr.edge.kernel.org (Postfix) with ESMTPS id 88C531C0F1A for ; Thu, 18 Nov 2021 01:30:21 +0000 (UTC) Received: from localhost.localdomain (localhost.localdomain [127.0.0.1]) by smtp.subspace.kernel.org (Postfix) with ESMTP id BD8292C9A; Thu, 18 Nov 2021 01:30:17 +0000 (UTC) X-Original-To: mptcp@lists.linux.dev Received: from mga11.intel.com (mga11.intel.com [192.55.52.93]) (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 CA0BD2C99 for ; Thu, 18 Nov 2021 01:30:16 +0000 (UTC) X-IronPort-AV: E=McAfee;i="6200,9189,10171"; a="231577914" X-IronPort-AV: E=Sophos;i="5.87,243,1631602800"; d="scan'208";a="231577914" Received: from fmsmga004.fm.intel.com ([10.253.24.48]) by fmsmga102.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 17 Nov 2021 17:30:14 -0800 X-IronPort-AV: E=Sophos;i="5.87,243,1631602800"; d="scan'208";a="568294749" Received: from mjmartin-desk2.amr.corp.intel.com (HELO mjmartin-desk2.intel.com) ([10.251.27.251]) by fmsmga004-auth.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 17 Nov 2021 17:30:14 -0800 From: Mat Martineau To: mptcp@lists.linux.dev Cc: Mat Martineau Subject: [PATCH mptcp-next 4/6] mptcp: Make kernel path manager check for userspace-managed sockets Date: Wed, 17 Nov 2021 17:30:03 -0800 Message-Id: <20211118013005.263660-5-mathew.j.martineau@linux.intel.com> X-Mailer: git-send-email 2.34.0 In-Reply-To: <20211118013005.263660-1-mathew.j.martineau@linux.intel.com> References: <20211118013005.263660-1-mathew.j.martineau@linux.intel.com> Precedence: bulk X-Mailing-List: mptcp@lists.linux.dev List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" Userspace-managed sockets should not have their subflows or advertisements changed by the kernel path manager. Signed-off-by: Mat Martineau --- net/mptcp/pm_netlink.c | 20 ++++++++++++++------ 1 file changed, 14 insertions(+), 6 deletions(-) diff --git a/net/mptcp/pm_netlink.c b/net/mptcp/pm_netlink.c index bab78e2f5299..95880cff9764 100644 --- a/net/mptcp/pm_netlink.c +++ b/net/mptcp/pm_netlink.c @@ -1119,7 +1119,8 @@ static int mptcp_nl_add_subflow_or_signal_addr(struct= net *net) while ((msk =3D mptcp_token_iter_next(net, &s_slot, &s_num)) !=3D NULL) { struct sock *sk =3D (struct sock *)msk; =20 - if (!READ_ONCE(msk->fully_established)) + if (!READ_ONCE(msk->fully_established) || + (READ_ONCE(msk->pm.pm_type) !=3D MPTCP_PM_TYPE_KERNEL)) goto next; =20 lock_sock(sk); @@ -1257,6 +1258,9 @@ static int mptcp_nl_remove_subflow_and_signal_addr(st= ruct net *net, struct sock *sk =3D (struct sock *)msk; bool remove_subflow; =20 + if (READ_ONCE(msk->pm.pm_type) !=3D MPTCP_PM_TYPE_KERNEL) + goto next; + if (list_empty(&msk->conn_list)) { mptcp_pm_remove_anno_addr(msk, addr, false); goto next; @@ -1298,7 +1302,8 @@ static int mptcp_nl_remove_id_zero_address(struct net= *net, struct sock *sk =3D (struct sock *)msk; struct mptcp_addr_info msk_local; =20 - if (list_empty(&msk->conn_list)) + if (list_empty(&msk->conn_list) || + (READ_ONCE(msk->pm.pm_type) !=3D MPTCP_PM_TYPE_KERNEL)) goto next; =20 local_address((struct sock_common *)msk, &msk_local); @@ -1407,9 +1412,11 @@ static void mptcp_nl_remove_addrs_list(struct net *n= et, while ((msk =3D mptcp_token_iter_next(net, &s_slot, &s_num)) !=3D NULL) { struct sock *sk =3D (struct sock *)msk; =20 - lock_sock(sk); - mptcp_pm_remove_addrs_and_subflows(msk, rm_list); - release_sock(sk); + if (READ_ONCE(msk->pm.pm_type) =3D=3D MPTCP_PM_TYPE_KERNEL) { + lock_sock(sk); + mptcp_pm_remove_addrs_and_subflows(msk, rm_list); + release_sock(sk); + } =20 sock_put(sk); cond_resched(); @@ -1671,7 +1678,8 @@ static int mptcp_nl_addr_backup(struct net *net, while ((msk =3D mptcp_token_iter_next(net, &s_slot, &s_num)) !=3D NULL) { struct sock *sk =3D (struct sock *)msk; =20 - if (list_empty(&msk->conn_list)) + if (list_empty(&msk->conn_list) || + (READ_ONCE(msk->pm.pm_type) !=3D MPTCP_PM_TYPE_KERNEL)) goto next; =20 lock_sock(sk); --=20 2.34.0 From nobody Fri Mar 29 08:50:35 2024 Delivered-To: wpasupplicant.patchew@gmail.com Received: by 2002:a02:cbb9:0:0:0:0:0 with SMTP id v25csp1060524jap; Wed, 17 Nov 2021 17:30:23 -0800 (PST) X-Google-Smtp-Source: ABdhPJz9GPfkgZZMTGsmJroFsa8ynzoAii4q1SoFm0N8PYpJ6x/0AHxD4QGjLH41em2nc+zEjoCU X-Received: by 2002:a05:6102:a4c:: with SMTP id i12mr76885873vss.41.1637199023387; Wed, 17 Nov 2021 17:30:23 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1637199023; cv=none; d=google.com; s=arc-20160816; b=D+ObGXEV4CowtOjGu26ZmQdCZh7UYBQXbN8j5gIqTexi/tRYUBfLPMqv8R+0H5+LzI VQCNyUSDY/XqEPzWf7SnAyZ9YiQClXDDO8Aa+1V7bhGEzekEEu95w+bhQdSmaMuEmnr3 3PW1VWWwf6E+Gl47/qSpi2jU7I1u81PtuU7wYiAoJe8p7CfLfRpm/rb17+2AnfWXIXVw 0vOAHE2SeAM4t4FG0dASc2tNdcI1dbG+b4qzPnn2YCv1bAK5Tu2UXfoSCy5n6elBRKU9 sXSJBxX0r5qbsKKhE1iwrdcGfU2zEUj2bXgBDWXTjDX3TliyAyYkbWOIa4dBR4TnoxRc 7s7w== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=content-transfer-encoding:mime-version:list-unsubscribe :list-subscribe:list-id:precedence:references:in-reply-to:message-id :date:subject:cc:to:from; bh=0RhzAMMRxxTCv1rts7DxlvGrUExw6lUnSH+crUfaRw4=; b=Pl4RkywzBNZ6iv8cJHcoWnWJ1j8IAIpEXZy8VTZP1hEu/PTVSIUwPQtazvD4qcduCI UFK9oufsZjhsch+KxMbKY8LTpS4mCg9ia5U687OfLGx+3+8wJiBXpMakzKsl+KFCE/02 5W7z8AKAyDDOxsGp5ymrfN9i7p6tFy4777266ZCXN2mTSVIv2A+1K37h5ufoIyrT0Dwf vz8Hp6CF6ufpKaBgJ91AFKx5TUPq/z866yPuuanJ/Ml8HCk29AxT8IXLozSDhNYSjqCu XLYhSM1dEvSd5jGOzgTGU3g/9703QDf+ju9I8T/gHy+vrm0rGRGBkmZY8czER6CG80RN gqKg== ARC-Authentication-Results: i=1; mx.google.com; spf=pass (google.com: domain of mptcp+bounces-2462-wpasupplicant.patchew=gmail.com@lists.linux.dev designates 147.75.197.195 as permitted sender) smtp.mailfrom="mptcp+bounces-2462-wpasupplicant.patchew=gmail.com@lists.linux.dev"; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=intel.com Return-Path: Received: from ewr.edge.kernel.org (ewr.edge.kernel.org. [147.75.197.195]) by mx.google.com with ESMTPS id b9si4552554vsu.235.2021.11.17.17.30.23 for (version=TLS1_2 cipher=ECDHE-ECDSA-AES128-GCM-SHA256 bits=128/128); Wed, 17 Nov 2021 17:30:23 -0800 (PST) Received-SPF: pass (google.com: domain of mptcp+bounces-2462-wpasupplicant.patchew=gmail.com@lists.linux.dev designates 147.75.197.195 as permitted sender) client-ip=147.75.197.195; Authentication-Results: mx.google.com; spf=pass (google.com: domain of mptcp+bounces-2462-wpasupplicant.patchew=gmail.com@lists.linux.dev designates 147.75.197.195 as permitted sender) smtp.mailfrom="mptcp+bounces-2462-wpasupplicant.patchew=gmail.com@lists.linux.dev"; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=intel.com Received: from smtp.subspace.kernel.org (wormhole.subspace.kernel.org [52.25.139.140]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by ewr.edge.kernel.org (Postfix) with ESMTPS id 97C601C0F22 for ; Thu, 18 Nov 2021 01:30:22 +0000 (UTC) Received: from localhost.localdomain (localhost.localdomain [127.0.0.1]) by smtp.subspace.kernel.org (Postfix) with ESMTP id 946662C9B; Thu, 18 Nov 2021 01:30:18 +0000 (UTC) X-Original-To: mptcp@lists.linux.dev Received: from mga11.intel.com (mga11.intel.com [192.55.52.93]) (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 9048C2C95 for ; Thu, 18 Nov 2021 01:30:17 +0000 (UTC) X-IronPort-AV: E=McAfee;i="6200,9189,10171"; a="231577916" X-IronPort-AV: E=Sophos;i="5.87,243,1631602800"; d="scan'208";a="231577916" Received: from fmsmga004.fm.intel.com ([10.253.24.48]) by fmsmga102.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 17 Nov 2021 17:30:15 -0800 X-IronPort-AV: E=Sophos;i="5.87,243,1631602800"; d="scan'208";a="568294751" Received: from mjmartin-desk2.amr.corp.intel.com (HELO mjmartin-desk2.intel.com) ([10.251.27.251]) by fmsmga004-auth.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 17 Nov 2021 17:30:14 -0800 From: Mat Martineau To: mptcp@lists.linux.dev Cc: Mat Martineau Subject: [PATCH mptcp-next 5/6] mptcp: Add a per-namespace sysctl to set the default path manager type Date: Wed, 17 Nov 2021 17:30:04 -0800 Message-Id: <20211118013005.263660-6-mathew.j.martineau@linux.intel.com> X-Mailer: git-send-email 2.34.0 In-Reply-To: <20211118013005.263660-1-mathew.j.martineau@linux.intel.com> References: <20211118013005.263660-1-mathew.j.martineau@linux.intel.com> Precedence: bulk X-Mailing-List: mptcp@lists.linux.dev List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" The new net.mptcp.pm_type sysctl determines which path manager will be used by each newly-created MPTCP socket. Signed-off-by: Mat Martineau --- Documentation/networking/mptcp-sysctl.rst | 18 ++++++++++++++++++ net/mptcp/ctrl.c | 18 ++++++++++++++++++ net/mptcp/pm.c | 13 +++++++++---- net/mptcp/protocol.h | 1 + 4 files changed, 46 insertions(+), 4 deletions(-) diff --git a/Documentation/networking/mptcp-sysctl.rst b/Documentation/netw= orking/mptcp-sysctl.rst index b0d4da71e68e..e263dfcc4b40 100644 --- a/Documentation/networking/mptcp-sysctl.rst +++ b/Documentation/networking/mptcp-sysctl.rst @@ -46,6 +46,24 @@ allow_join_initial_addr_port - BOOLEAN =20 Default: 1 =20 +pm_type - INTEGER + + Set the default path manager type 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. + + * 0 - In-kernel path manager + * 1 - Userspace path manager + + Default: 0 + stale_loss_cnt - INTEGER The number of MPTCP-level retransmission intervals with no traffic and pending outstanding data on a given subflow required to declare it stale. diff --git a/net/mptcp/ctrl.c b/net/mptcp/ctrl.c index 8b235468c88f..64f1366aec5e 100644 --- a/net/mptcp/ctrl.c +++ b/net/mptcp/ctrl.c @@ -16,6 +16,8 @@ #define MPTCP_SYSCTL_PATH "net/mptcp" =20 static int mptcp_pernet_id; +static int mptcp_pm_type_max =3D __MPTCP_PM_TYPE_MAX; + struct mptcp_pernet { #ifdef CONFIG_SYSCTL struct ctl_table_header *ctl_table_hdr; @@ -26,6 +28,7 @@ struct mptcp_pernet { u8 mptcp_enabled; u8 checksum_enabled; u8 allow_join_initial_addr_port; + u8 pm_type; }; =20 static struct mptcp_pernet *mptcp_get_pernet(const struct net *net) @@ -58,6 +61,11 @@ unsigned int mptcp_stale_loss_cnt(const struct net *net) return mptcp_get_pernet(net)->stale_loss_cnt; } =20 +int mptcp_get_pm_type(const struct net *net) +{ + return mptcp_get_pernet(net)->pm_type; +} + static void mptcp_pernet_set_defaults(struct mptcp_pernet *pernet) { pernet->mptcp_enabled =3D 1; @@ -65,6 +73,7 @@ static void mptcp_pernet_set_defaults(struct mptcp_pernet= *pernet) pernet->checksum_enabled =3D 0; pernet->allow_join_initial_addr_port =3D 1; pernet->stale_loss_cnt =3D 4; + pernet->pm_type =3D MPTCP_PM_TYPE_KERNEL; } =20 #ifdef CONFIG_SYSCTL @@ -108,6 +117,14 @@ static struct ctl_table mptcp_sysctl_table[] =3D { .mode =3D 0644, .proc_handler =3D proc_douintvec_minmax, }, + { + .procname =3D "pm_type", + .maxlen =3D sizeof(u8), + .mode =3D 0644, + .proc_handler =3D proc_dou8vec_minmax, + .extra1 =3D SYSCTL_ZERO, + .extra2 =3D &mptcp_pm_type_max + }, {} }; =20 @@ -128,6 +145,7 @@ static int mptcp_pernet_new_table(struct net *net, stru= ct mptcp_pernet *pernet) table[2].data =3D &pernet->checksum_enabled; table[3].data =3D &pernet->allow_join_initial_addr_port; table[4].data =3D &pernet->stale_loss_cnt; + table[5].data =3D &pernet->pm_type; =20 hdr =3D register_net_sysctl(net, MPTCP_SYSCTL_PATH, table); if (!hdr) diff --git a/net/mptcp/pm.c b/net/mptcp/pm.c index 7f96a888e2d5..7ef27d41ad56 100644 --- a/net/mptcp/pm.c +++ b/net/mptcp/pm.c @@ -368,8 +368,12 @@ void mptcp_pm_subflow_chk_stale(const struct mptcp_soc= k *msk, struct sock *ssk) =20 void mptcp_pm_data_init(struct mptcp_sock *msk) { - bool subflows_allowed =3D !!mptcp_pm_get_subflows_max(msk); + u8 pm_type =3D mptcp_get_pm_type(sock_net((struct sock *)msk)); struct mptcp_pm_data *pm =3D &msk->pm; + bool subflows_allowed; + + subflows_allowed =3D !!mptcp_pm_get_subflows_max(msk) && + pm_type =3D=3D MPTCP_PM_TYPE_KERNEL; =20 pm->add_addr_signaled =3D 0; pm->add_addr_accepted =3D 0; @@ -377,13 +381,14 @@ void mptcp_pm_data_init(struct mptcp_sock *msk) pm->subflows =3D 0; pm->rm_list_tx.nr =3D 0; pm->rm_list_rx.nr =3D 0; - WRITE_ONCE(pm->pm_type, MPTCP_PM_TYPE_KERNEL); + WRITE_ONCE(pm->pm_type, pm_type); /* pm->work_pending must be only be set to 'true' when * pm->pm_type is set to MPTCP_PM_TYPE_KERNEL */ WRITE_ONCE(pm->work_pending, - (!!mptcp_pm_get_local_addr_max(msk) && subflows_allowed) || - !!mptcp_pm_get_add_addr_signal_max(msk)); + pm_type =3D=3D MPTCP_PM_TYPE_KERNEL && + ((!!mptcp_pm_get_local_addr_max(msk) && subflows_allowed) || + !!mptcp_pm_get_add_addr_signal_max(msk))); WRITE_ONCE(pm->addr_signal, 0); WRITE_ONCE(pm->accept_addr, !!mptcp_pm_get_add_addr_accept_max(msk) && subflows_allowed); diff --git a/net/mptcp/protocol.h b/net/mptcp/protocol.h index edaf0cc75474..b56ad45703dd 100644 --- a/net/mptcp/protocol.h +++ b/net/mptcp/protocol.h @@ -563,6 +563,7 @@ unsigned int mptcp_get_add_addr_timeout(const struct ne= t *net); int mptcp_is_checksum_enabled(const struct net *net); int mptcp_allow_join_id0(const struct net *net); unsigned int mptcp_stale_loss_cnt(const struct net *net); +int mptcp_get_pm_type(const struct net *net); void mptcp_subflow_fully_established(struct mptcp_subflow_context *subflow, struct mptcp_options_received *mp_opt); bool __mptcp_retransmit_pending_data(struct sock *sk); --=20 2.34.0 From nobody Fri Mar 29 08:50:35 2024 Delivered-To: wpasupplicant.patchew@gmail.com Received: by 2002:a02:cbb9:0:0:0:0:0 with SMTP id v25csp1060567jap; Wed, 17 Nov 2021 17:30:25 -0800 (PST) X-Google-Smtp-Source: ABdhPJzJ/ZNKCi87G2rdGO7AzQplb93sq4ZZ/kSLxGCBgAMbxr3mNzNzeRYie6hjihxBmLl8MbGM X-Received: by 2002:a9f:3587:: with SMTP id t7mr30723266uad.49.1637199025427; Wed, 17 Nov 2021 17:30:25 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1637199025; cv=none; d=google.com; s=arc-20160816; b=WU/vftHOhjCv3WkNjlgdimkgQCS6PgfL/OgxXYyDXFELFc1xjcj75fN1RZajKzbFI5 eqzYj8Od4TrPp7/b11m1P8e8gGkO6YQw0ZSIMOfD1//xNu0zICcmF8yCO+Qj7TgDyv6S b33FEZ1trPfolm9f5QPGCZKd5ZLAicRVn+xs9B+PAARk3AjT2TWn8n0uGKbwnVnGOMR1 EzJksG2JEcoLkgJyP56B51/LV3d7oy+5i16sSipv5eJxHBKrldnPL3y4WDd1KEUWWRa8 ZZNChyDqJ+K70M9B1DEYMhZm00c8632XZUrRBbQoQvlHuf37cOwc1iH/EW+/+znvjOfE dzrg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=content-transfer-encoding:mime-version:list-unsubscribe :list-subscribe:list-id:precedence:references:in-reply-to:message-id :date:subject:cc:to:from; bh=df0Uy60JOmM20CO8r9uRo9PJVOFA33t7d1AHk/rBDwM=; b=ud+v8nQsntgDLBzkOsXLB/AWYwWem6WmIDxF6aQ/Yman56E/P7EKXQOl6vxjElUE3M lsN5Ivw1Z8z7P3ukPOfuWJmJpYvVHMYUh4/L8FG02tODGGq4VBsq6yPmYvV1aSawdhq2 162CWQKb52wKqzaWa4adDtvdteY91M1/wJXm5gSVsVpwiN98jP2m7NaJ+/eXxJfG02du WnYKZK8w1ut6Hpf/xGE0EDystdmOfp5+cYXmMsFBWVVqrCeddvjbQ5WdGJ0aT3SN0tsi 7yCQdkmRuwMOYdCVUQEKKKS1kHE5kv5/4fco5L2oidNiPqYluna95alW/+4T2IbB4d2x Oflw== ARC-Authentication-Results: i=1; mx.google.com; spf=pass (google.com: domain of mptcp+bounces-2464-wpasupplicant.patchew=gmail.com@lists.linux.dev designates 147.75.197.195 as permitted sender) smtp.mailfrom="mptcp+bounces-2464-wpasupplicant.patchew=gmail.com@lists.linux.dev"; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=intel.com Return-Path: Received: from ewr.edge.kernel.org (ewr.edge.kernel.org. [147.75.197.195]) by mx.google.com with ESMTPS id b9si4552554vsu.235.2021.11.17.17.30.25 for (version=TLS1_2 cipher=ECDHE-ECDSA-AES128-GCM-SHA256 bits=128/128); Wed, 17 Nov 2021 17:30:25 -0800 (PST) Received-SPF: pass (google.com: domain of mptcp+bounces-2464-wpasupplicant.patchew=gmail.com@lists.linux.dev designates 147.75.197.195 as permitted sender) client-ip=147.75.197.195; Authentication-Results: mx.google.com; spf=pass (google.com: domain of mptcp+bounces-2464-wpasupplicant.patchew=gmail.com@lists.linux.dev designates 147.75.197.195 as permitted sender) smtp.mailfrom="mptcp+bounces-2464-wpasupplicant.patchew=gmail.com@lists.linux.dev"; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=intel.com Received: from smtp.subspace.kernel.org (wormhole.subspace.kernel.org [52.25.139.140]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by ewr.edge.kernel.org (Postfix) with ESMTPS id 0EE8A1C09FE for ; Thu, 18 Nov 2021 01:30:25 +0000 (UTC) Received: from localhost.localdomain (localhost.localdomain [127.0.0.1]) by smtp.subspace.kernel.org (Postfix) with ESMTP id D5A482C83; Thu, 18 Nov 2021 01:30:18 +0000 (UTC) X-Original-To: mptcp@lists.linux.dev Received: from mga11.intel.com (mga11.intel.com [192.55.52.93]) (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 D02862C99 for ; Thu, 18 Nov 2021 01:30:17 +0000 (UTC) X-IronPort-AV: E=McAfee;i="6200,9189,10171"; a="231577918" X-IronPort-AV: E=Sophos;i="5.87,243,1631602800"; d="scan'208";a="231577918" Received: from fmsmga004.fm.intel.com ([10.253.24.48]) by fmsmga102.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 17 Nov 2021 17:30:15 -0800 X-IronPort-AV: E=Sophos;i="5.87,243,1631602800"; d="scan'208";a="568294753" Received: from mjmartin-desk2.amr.corp.intel.com (HELO mjmartin-desk2.intel.com) ([10.251.27.251]) by fmsmga004-auth.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 17 Nov 2021 17:30:15 -0800 From: Mat Martineau To: mptcp@lists.linux.dev Cc: Mat Martineau Subject: [PATCH mptcp-next 6/6] selftests: mptcp: Add tests for userspace PM type Date: Wed, 17 Nov 2021 17:30:05 -0800 Message-Id: <20211118013005.263660-7-mathew.j.martineau@linux.intel.com> X-Mailer: git-send-email 2.34.0 In-Reply-To: <20211118013005.263660-1-mathew.j.martineau@linux.intel.com> References: <20211118013005.263660-1-mathew.j.martineau@linux.intel.com> Precedence: bulk X-Mailing-List: mptcp@lists.linux.dev List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" These tests ensure that the in-kernel path manager is bypassed when the userspace path manager is configured. Kernel code is still responsible for ADD_ADDR echo, so also make sure that's working. Signed-off-by: Mat Martineau --- .../testing/selftests/net/mptcp/mptcp_join.sh | 70 ++++++++++++++++++- 1 file changed, 69 insertions(+), 1 deletion(-) diff --git a/tools/testing/selftests/net/mptcp/mptcp_join.sh b/tools/testin= g/selftests/net/mptcp/mptcp_join.sh index 2684ef9c0d42..7df9ddb307a8 100755 --- a/tools/testing/selftests/net/mptcp/mptcp_join.sh +++ b/tools/testing/selftests/net/mptcp/mptcp_join.sh @@ -50,6 +50,7 @@ init() ip netns add $netns || exit $ksft_skip ip -net $netns link set lo up ip netns exec $netns sysctl -q net.mptcp.enabled=3D1 + ip netns exec $netns sysctl -q net.mptcp.pm_type=3D0 ip netns exec $netns sysctl -q net.ipv4.conf.all.rp_filter=3D0 ip netns exec $netns sysctl -q net.ipv4.conf.default.rp_filter=3D0 if [ $checksum -eq 1 ]; then @@ -1837,6 +1838,68 @@ fullmesh_tests() chk_add_nr 1 1 } =20 +userspace_tests() +{ + # userspace pm type prevents add_addr + reset + ip netns exec $ns1 sysctl -q net.mptcp.pm_type=3D1 + ip netns exec $ns1 ./pm_nl_ctl limits 0 2 + ip netns exec $ns2 ./pm_nl_ctl limits 0 2 + ip netns exec $ns1 ./pm_nl_ctl add 10.0.2.1 flags signal + run_tests $ns1 $ns2 10.0.1.1 + chk_join_nr "userspace pm type prevents add_addr" 0 0 0 + chk_add_nr 0 0 + + # userspace pm type echoes add_addr + reset + ip netns exec $ns2 sysctl -q net.mptcp.pm_type=3D1 + ip netns exec $ns1 ./pm_nl_ctl limits 0 2 + ip netns exec $ns2 ./pm_nl_ctl limits 0 2 + ip netns exec $ns1 ./pm_nl_ctl add 10.0.2.1 flags signal + run_tests $ns1 $ns2 10.0.1.1 + chk_join_nr "userspace pm type echoes add_addr" 0 0 0 + chk_add_nr 1 1 + + # userspace pm type rejects join + reset + ip netns exec $ns1 sysctl -q net.mptcp.pm_type=3D1 + ip netns exec $ns1 ./pm_nl_ctl limits 1 1 + ip netns exec $ns2 ./pm_nl_ctl limits 1 1 + ip netns exec $ns2 ./pm_nl_ctl add 10.0.3.2 flags subflow + run_tests $ns1 $ns2 10.0.1.1 + chk_join_nr "userspace pm type rejects join" 1 1 0 + + # userspace pm type does not send join + reset + ip netns exec $ns2 sysctl -q net.mptcp.pm_type=3D1 + ip netns exec $ns1 ./pm_nl_ctl limits 1 1 + ip netns exec $ns2 ./pm_nl_ctl limits 1 1 + ip netns exec $ns2 ./pm_nl_ctl add 10.0.3.2 flags subflow + run_tests $ns1 $ns2 10.0.1.1 + chk_join_nr "userspace pm type does not send join" 0 0 0 + + # userspace pm type prevents mp_prio + reset + ip netns exec $ns1 sysctl -q net.mptcp.pm_type=3D1 + ip netns exec $ns1 ./pm_nl_ctl limits 1 1 + ip netns exec $ns2 ./pm_nl_ctl limits 1 1 + ip netns exec $ns2 ./pm_nl_ctl add 10.0.3.2 flags subflow + run_tests $ns1 $ns2 10.0.1.1 0 0 0 slow backup + chk_join_nr "userspace pm type prevents mp_prio" 1 1 0 + chk_prio_nr 0 0 + + # userspace pm type prevents rm_addr + reset + ip netns exec $ns1 sysctl -q net.mptcp.pm_type=3D1 + ip netns exec $ns2 sysctl -q net.mptcp.pm_type=3D1 + ip netns exec $ns1 ./pm_nl_ctl limits 0 1 + ip netns exec $ns2 ./pm_nl_ctl limits 0 1 + ip netns exec $ns2 ./pm_nl_ctl add 10.0.3.2 flags subflow + run_tests $ns1 $ns2 10.0.1.1 0 0 -1 slow + chk_join_nr "userspace pm type prevents rm_addr" 0 0 0 + chk_rm_nr 0 0 +} + all_tests() { subflows_tests @@ -1853,6 +1916,7 @@ all_tests() checksum_tests deny_join_id0_tests fullmesh_tests + userspace_tests } =20 usage() @@ -1872,6 +1936,7 @@ usage() echo " -S checksum_tests" echo " -d deny_join_id0_tests" echo " -m fullmesh_tests" + echo " -u userspace_tests" echo " -c capture pcap files" echo " -C enable data checksum" echo " -h help" @@ -1907,7 +1972,7 @@ if [ $do_all_tests -eq 1 ]; then exit $ret fi =20 -while getopts 'fsltra64bpkdmchCS' opt; do +while getopts 'fsltra64bpkdmuchCS' opt; do case $opt in f) subflows_tests @@ -1951,6 +2016,9 @@ while getopts 'fsltra64bpkdmchCS' opt; do m) fullmesh_tests ;; + u) + userspace_tests + ;; c) ;; C) --=20 2.34.0