From nobody Mon Apr 29 00:42:50 2024 Delivered-To: wpasupplicant.patchew@gmail.com Received: by 2002:a02:cbb9:0:0:0:0:0 with SMTP id v25csp9619219jap; Wed, 1 Dec 2021 16:52:27 -0800 (PST) X-Google-Smtp-Source: ABdhPJwYpvkbkNvA+YCwCikkdyC0Qafb2jm01CuWz0aC0IesreyFMq4zyzhDY5ocbIi7OmTFjxH7 X-Received: by 2002:a05:6a00:14c8:b0:49f:af00:d5cd with SMTP id w8-20020a056a0014c800b0049faf00d5cdmr9403792pfu.59.1638406347265; Wed, 01 Dec 2021 16:52:27 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1638406347; cv=none; d=google.com; s=arc-20160816; b=KIL8QLc1mitj5WCFSxestXJmFguII9zASwOLvUTiSsf4txYhlEQZ3xu3w8VHnVTaRf tr1Ma/YvlMiWVXVyRTMq91aMOUTpLkaNtMnHTzDm/tlpqRfSvPLLOKRndgQu6xR9cuZ8 qrCo7660lX/wUTkLPPyp3Dp3vOpV3IsUsYf19VVGynILnloXDt7gZgTrZBlQGhfHR40b SRHLIJ1Ew1JffV9aclzIbkFkqZZHQ08QX+N24B+R/CjXd41plrGFEfFImOi8FjU6ByhL Xp/dBi8TrDx+jvmGnwxUaxWO6M/T6iZBtDB7W84e+VIQJ6SyzMVcLFRrNMaayIurKobw rkOQ== 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=/MLEaSaWAEER5GQKy5lYreQJXnUuNxQIhXlwoTaFDrA=; b=kh/5jkqSt1cFqPmB9DBJig3sSO+3fLB0sfFYvuUNPAO78N5JT3uSNfSuNcKzw2jCuG JYLZNjZLDo54/bIXOjdzXzPicoGCxsLHaNJSrCOr3+aHjdsC+ikRq0gvnOV18u+LLRsG OtpOUkAA4hErg39ZPlUi1FbecaMTVGqMcTBp4ZcyVwZNJGicfVAoeWzMUSWAM0pfruZi ehRsPi7HqFooErqWfVgipvL6A9tmMuLNijtzN1Eew7edPrgamNu1wIdmh3D6neBEH3C1 +TtC2Wd8F59fAReZ2drKe9HntXLZYdah+sT5FqHujTSyAgYRV+T3+ESqOHUyaor0T0ul lwRg== ARC-Authentication-Results: i=1; mx.google.com; spf=pass (google.com: domain of mptcp+bounces-2588-wpasupplicant.patchew=gmail.com@lists.linux.dev designates 147.75.69.165 as permitted sender) smtp.mailfrom="mptcp+bounces-2588-wpasupplicant.patchew=gmail.com@lists.linux.dev"; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=intel.com Return-Path: Received: from sjc.edge.kernel.org (sjc.edge.kernel.org. [147.75.69.165]) by mx.google.com with ESMTPS id x70si1569916pgd.442.2021.12.01.16.52.27 for (version=TLS1_2 cipher=ECDHE-ECDSA-AES128-GCM-SHA256 bits=128/128); Wed, 01 Dec 2021 16:52:27 -0800 (PST) Received-SPF: pass (google.com: domain of mptcp+bounces-2588-wpasupplicant.patchew=gmail.com@lists.linux.dev designates 147.75.69.165 as permitted sender) client-ip=147.75.69.165; Authentication-Results: mx.google.com; spf=pass (google.com: domain of mptcp+bounces-2588-wpasupplicant.patchew=gmail.com@lists.linux.dev designates 147.75.69.165 as permitted sender) smtp.mailfrom="mptcp+bounces-2588-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 sjc.edge.kernel.org (Postfix) with ESMTPS id 1793F3E0EA1 for ; Thu, 2 Dec 2021 00:52:27 +0000 (UTC) Received: from localhost.localdomain (localhost.localdomain [127.0.0.1]) by smtp.subspace.kernel.org (Postfix) with ESMTP id 9013F2CA4; Thu, 2 Dec 2021 00:52:26 +0000 (UTC) X-Original-To: mptcp@lists.linux.dev Received: from mga05.intel.com (mga05.intel.com [192.55.52.43]) (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 19B3168 for ; Thu, 2 Dec 2021 00:52:25 +0000 (UTC) X-IronPort-AV: E=McAfee;i="6200,9189,10185"; a="322841463" X-IronPort-AV: E=Sophos;i="5.87,280,1631602800"; d="scan'208";a="322841463" Received: from orsmga005.jf.intel.com ([10.7.209.41]) by fmsmga105.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 01 Dec 2021 16:52:22 -0800 X-IronPort-AV: E=Sophos;i="5.87,280,1631602800"; d="scan'208";a="677471783" Received: from mjmartin-desk2.amr.corp.intel.com (HELO mjmartin-desk2.intel.com) ([10.209.83.143]) by orsmga005-auth.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 01 Dec 2021 16:52:21 -0800 From: Mat Martineau To: mptcp@lists.linux.dev Cc: Mat Martineau Subject: [PATCH mptcp-next v2 1/6] mptcp: Remove redundant assignments in path manager init Date: Wed, 1 Dec 2021 16:52:11 -0800 Message-Id: <20211202005216.154787-2-mathew.j.martineau@linux.intel.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20211202005216.154787-1-mathew.j.martineau@linux.intel.com> References: <20211202005216.154787-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_reset(), and then immediately changed in mptcp_pm_nl_data_init(). Instead, flatten all the assignments in to mptcp_pm_data_reset(). v2: Resolve conflicts due to rename of mptcp_pm_data_reset() Signed-off-by: Mat Martineau --- net/mptcp/pm.c | 32 ++++++++++++++++++-------------- net/mptcp/pm_netlink.c | 12 ------------ net/mptcp/protocol.h | 1 - 3 files changed, 18 insertions(+), 27 deletions(-) diff --git a/net/mptcp/pm.c b/net/mptcp/pm.c index 761995a34124..4b79b73aee3c 100644 --- a/net/mptcp/pm.c +++ b/net/mptcp/pm.c @@ -364,20 +364,24 @@ void mptcp_pm_subflow_chk_stale(const struct mptcp_so= ck *msk, struct sock *ssk) =20 void mptcp_pm_data_reset(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; - - 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; } =20 void mptcp_pm_data_init(struct mptcp_sock *msk) diff --git a/net/mptcp/pm_netlink.c b/net/mptcp/pm_netlink.c index 3186d33b5208..a74eb0444cd2 100644 --- a/net/mptcp/pm_netlink.c +++ b/net/mptcp/pm_netlink.c @@ -957,18 +957,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 47d24478763c..50175e4cbcb8 100644 --- a/net/mptcp/protocol.h +++ b/net/mptcp/protocol.h @@ -821,7 +821,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.1 From nobody Mon Apr 29 00:42:50 2024 Delivered-To: wpasupplicant.patchew@gmail.com Received: by 2002:a02:cbb9:0:0:0:0:0 with SMTP id v25csp9619265jap; Wed, 1 Dec 2021 16:52:30 -0800 (PST) X-Google-Smtp-Source: ABdhPJynItn7CGBloZ9mWGJIZOvHUWV8t73w3kz6SGNC+6KgtcuigfwesCTRZA5zYcN/5bUxsix9 X-Received: by 2002:a05:6214:4112:: with SMTP id kc18mr10315461qvb.76.1638406349941; Wed, 01 Dec 2021 16:52:29 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1638406349; cv=none; d=google.com; s=arc-20160816; b=HhAmrt3DDMbTPlZGXKQ6Knd55FXtNelMWtXbRUTkJiS0xB+ONvRS20ZyX2716/Mwix 2ZGa1V1L/8iBh5ocQtrcdAgKTcJkl5i3uavIJBHuR74fujpR4E3ZOoV4HDNWOWyP3/Xz Cc9uVexkg7E6uo2h7Xs7JcrPOJflw+/im3pjxgl6/X+cwRrPq3JpfNo/MI3eJ0BHyVrh lHtszZ0luJY2N8dpO1ngJ7IFgUjD2e6cM4gYpYSMvPBEoIehbxXkzroE/XPwh7RbM4jF eRhWmvlqGJVqBxBwSuTXs7fErOUwzXTJTsS6lc+31txeq4Mhr0p/rNYopf87NECk/4K0 0gvA== 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=nYkQG/5Pr93PiweAu79ur0Bpehw+A06bC7iFg/FsODw=; b=wuuhwVIrRYLgg8RMLFB4QmUWmjd06YkUAjxD8qGrvX7fvjPFvwflbj6mvbm8LNxVGK sgorkW8O2Tfx9oD/WuTzX56ZcaSSjSQC9hy1K31oOfhm2hgYPDQQQT9UWAk3HGoUQZEG T9HmaOnHYpyittBgj/PYT9xZR50IoDj6MWGzedvo0UKjymKnaGJRb6nQW8btrCd/uV5b oA/wKt7T8bo3v+hzgUfrNSgjzwGfOTKYzvNHFNvlgDebV+cvJQseFAZpLu6surpxInPD VqzPWWDaKbVdnlexDLM30yHEOCSYH6RlnAfFeWO2MKWPfhbKfdl7OpBMdGdZxn32ZK9q HnGA== ARC-Authentication-Results: i=1; mx.google.com; spf=pass (google.com: domain of mptcp+bounces-2590-wpasupplicant.patchew=gmail.com@lists.linux.dev designates 2604:1380:1:3600::1 as permitted sender) smtp.mailfrom="mptcp+bounces-2590-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. [2604:1380:1:3600::1]) by mx.google.com with ESMTPS id o9si1659857qvh.122.2021.12.01.16.52.29 for (version=TLS1_2 cipher=ECDHE-ECDSA-AES128-GCM-SHA256 bits=128/128); Wed, 01 Dec 2021 16:52:29 -0800 (PST) Received-SPF: pass (google.com: domain of mptcp+bounces-2590-wpasupplicant.patchew=gmail.com@lists.linux.dev designates 2604:1380:1:3600::1 as permitted sender) client-ip=2604:1380:1:3600::1; Authentication-Results: mx.google.com; spf=pass (google.com: domain of mptcp+bounces-2590-wpasupplicant.patchew=gmail.com@lists.linux.dev designates 2604:1380:1:3600::1 as permitted sender) smtp.mailfrom="mptcp+bounces-2590-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 C20BE1C0B5C for ; Thu, 2 Dec 2021 00:52:29 +0000 (UTC) Received: from localhost.localdomain (localhost.localdomain [127.0.0.1]) by smtp.subspace.kernel.org (Postfix) with ESMTP id E062268; Thu, 2 Dec 2021 00:52:27 +0000 (UTC) X-Original-To: mptcp@lists.linux.dev Received: from mga05.intel.com (mga05.intel.com [192.55.52.43]) (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 5D4FB2CA2 for ; Thu, 2 Dec 2021 00:52:25 +0000 (UTC) X-IronPort-AV: E=McAfee;i="6200,9189,10185"; a="322841465" X-IronPort-AV: E=Sophos;i="5.87,280,1631602800"; d="scan'208";a="322841465" Received: from orsmga005.jf.intel.com ([10.7.209.41]) by fmsmga105.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 01 Dec 2021 16:52:22 -0800 X-IronPort-AV: E=Sophos;i="5.87,280,1631602800"; d="scan'208";a="677471784" Received: from mjmartin-desk2.amr.corp.intel.com (HELO mjmartin-desk2.intel.com) ([10.209.83.143]) by orsmga005-auth.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 01 Dec 2021 16:52:21 -0800 From: Mat Martineau To: mptcp@lists.linux.dev Cc: Mat Martineau Subject: [PATCH mptcp-next v2 2/6] mptcp: Add a member to mptcp_pm_data to track kernel vs userspace mode Date: Wed, 1 Dec 2021 16:52:12 -0800 Message-Id: <20211202005216.154787-3-mathew.j.martineau@linux.intel.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20211202005216.154787-1-mathew.j.martineau@linux.intel.com> References: <20211202005216.154787-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 4b79b73aee3c..053afb058440 100644 --- a/net/mptcp/pm.c +++ b/net/mptcp/pm.c @@ -373,6 +373,10 @@ void mptcp_pm_data_reset(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 50175e4cbcb8..478abe18b9e9 100644 --- a/net/mptcp/protocol.h +++ b/net/mptcp/protocol.h @@ -177,6 +177,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, @@ -199,6 +207,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.1 From nobody Mon Apr 29 00:42:50 2024 Delivered-To: wpasupplicant.patchew@gmail.com Received: by 2002:a02:cbb9:0:0:0:0:0 with SMTP id v25csp9619251jap; Wed, 1 Dec 2021 16:52:29 -0800 (PST) X-Google-Smtp-Source: ABdhPJy2LYx9KpgUlCZBN2+TewlfTxX6A9uSOYyE/1bbds9r5T0I/zmr93Haw7/k8x9/SsTjeHyI X-Received: by 2002:a37:9bd3:: with SMTP id d202mr9932142qke.727.1638406348907; Wed, 01 Dec 2021 16:52:28 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1638406348; cv=none; d=google.com; s=arc-20160816; b=OTYDMUv5U+J0k7ah+3JBVVqDBsvsxoQd8AJ6SiKKfqigKakoW86AZC0sOCqj92JWe6 oDc3kognx9KSz3VFuR6epD16ZYeMIUTJCrmQImZW2+f1lJw33sYV+rW9CxSnaso8pVoH k/Ohc8Yxm8ZOAjNUzyDkWZDeW/YOg3ALz5eymlBb+3y9bzwyGpjPIwvnUXWd+jGXItbL ejmtacPlGS81hgZOn/gvmeQGfdyubZdbd1qV3Sj7ZRVG2WU6/+0yblj/6nKDmgnB5Wg8 rdc9vxT54d/7wZf8He6VDxk8vrCMe+lX901SfWk+EyNzVlOKD+b2p1d2Rq89ebP3uKpf Ou0Q== 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=KKjXNYUENewIBSMZ0llg6LL/sa4fkre+OHnAtHs4C30=; b=wKYJDx3bvAQCBe8g4AZ0ST/gAKpbPROB26Ngbn8iSBJusrZ++k+Q4l7Vl8BXMWjJCX B7XNSE7eK1fx8KMMTA5O21rKm/WyTi9HbQpo3wdNipu9i6awSWnO4yaYjjQTaIxqqrgc iZAF8lpr29DsGMt0MjKyjomK/ofZMP4G2QzXKvd5w2ZkdKz9QmUI4ZChGrHAH9FVKMzq j33mAKmaEaKg9iQMf/x2XLlH7Q/7givjSAm48SYVxA3dyRnA2t74AWqDDJBTfyE30vGU 0LYqWIvP9SXmJwKBWGlRDAYdsmPlOVM8KKGrvn4dF257SEoWFKqMHDzctLdXsHLQeAmO 09NA== ARC-Authentication-Results: i=1; mx.google.com; spf=pass (google.com: domain of mptcp+bounces-2589-wpasupplicant.patchew=gmail.com@lists.linux.dev designates 2604:1380:1:3600::1 as permitted sender) smtp.mailfrom="mptcp+bounces-2589-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. [2604:1380:1:3600::1]) by mx.google.com with ESMTPS id o9si1659857qvh.122.2021.12.01.16.52.28 for (version=TLS1_2 cipher=ECDHE-ECDSA-AES128-GCM-SHA256 bits=128/128); Wed, 01 Dec 2021 16:52:28 -0800 (PST) Received-SPF: pass (google.com: domain of mptcp+bounces-2589-wpasupplicant.patchew=gmail.com@lists.linux.dev designates 2604:1380:1:3600::1 as permitted sender) client-ip=2604:1380:1:3600::1; Authentication-Results: mx.google.com; spf=pass (google.com: domain of mptcp+bounces-2589-wpasupplicant.patchew=gmail.com@lists.linux.dev designates 2604:1380:1:3600::1 as permitted sender) smtp.mailfrom="mptcp+bounces-2589-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 A6C2D1C0B62 for ; Thu, 2 Dec 2021 00:52:28 +0000 (UTC) Received: from localhost.localdomain (localhost.localdomain [127.0.0.1]) by smtp.subspace.kernel.org (Postfix) with ESMTP id 64FF22C9D; Thu, 2 Dec 2021 00:52:27 +0000 (UTC) X-Original-To: mptcp@lists.linux.dev Received: from mga05.intel.com (mga05.intel.com [192.55.52.43]) (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 9A3A568 for ; Thu, 2 Dec 2021 00:52:26 +0000 (UTC) X-IronPort-AV: E=McAfee;i="6200,9189,10185"; a="322841466" X-IronPort-AV: E=Sophos;i="5.87,280,1631602800"; d="scan'208";a="322841466" Received: from orsmga005.jf.intel.com ([10.7.209.41]) by fmsmga105.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 01 Dec 2021 16:52:22 -0800 X-IronPort-AV: E=Sophos;i="5.87,280,1631602800"; d="scan'208";a="677471785" Received: from mjmartin-desk2.amr.corp.intel.com (HELO mjmartin-desk2.intel.com) ([10.209.83.143]) by orsmga005-auth.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 01 Dec 2021 16:52:21 -0800 From: Mat Martineau To: mptcp@lists.linux.dev Cc: Mat Martineau Subject: [PATCH mptcp-next v2 3/6] mptcp: Bypass kernel PM when userspace PM is enabled Date: Wed, 1 Dec 2021 16:52:13 -0800 Message-Id: <20211202005216.154787-4-mathew.j.martineau@linux.intel.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20211202005216.154787-1-mathew.j.martineau@linux.intel.com> References: <20211202005216.154787-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. v2: Remove unneeded check in mptcp_pm_add_addr_received() (Kishen Maloor) Signed-off-by: Mat Martineau --- 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 053afb058440..451948b11030 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)) { --=20 2.34.1 From nobody Mon Apr 29 00:42:50 2024 Delivered-To: wpasupplicant.patchew@gmail.com Received: by 2002:a02:cbb9:0:0:0:0:0 with SMTP id v25csp9619368jap; Wed, 1 Dec 2021 16:52:36 -0800 (PST) X-Google-Smtp-Source: ABdhPJyY+GjVbXQh3rdYrHRON/1grkQe9mW6bfrSTwoFbsA6IBFWn86nDRYtJrLjBtor2K4hMhZb X-Received: by 2002:a17:902:f283:b0:141:f719:c434 with SMTP id k3-20020a170902f28300b00141f719c434mr11496566plc.79.1638406356381; Wed, 01 Dec 2021 16:52:36 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1638406356; cv=none; d=google.com; s=arc-20160816; b=DhNwd0xyYaWjKNEhJeDskQEGSf+Ewatoi/epO5BtE6ANAAmIofLKJyKCz/7iN+rvpA gF0vxU7WYHv93l6wrKcVq18eSbDoQSfsTVgSuzRjIWViZRGbHmO7UVYJ8b+ZN1oHSl2x NTufZJdvvkUAkf9rbWpOJsX1iKhNR+sOlfQGXHcY6i72R/ZygB0FZ8lTPzn7/HMYpIz3 sLVJCYCFjZQm0L6QOkrIUEzw12LppGGedE00hrsyThCqGfyRP9NFyXhLAe/YeSFJVg4h B1KZQCAtkW1iGJooeMScH4+vrZ+sd8OkzcOcV1IcS7nPgwGX76pMc9RuRRwMkWYP+6wp Cvjw== 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=YoWhWAKKEBh3+p9scSSQjBaRp8s+P9Jm1WJYpK9Daq4=; b=u37j68GTiwd5mcQFrE6qj0QdhWk3L/HdiGmi8ADhQkuYk30GvTVkonqROAqsbS602l NQvCr7e0gZNnlZnpdlX7v1kK7uz/SbTvpmlBwg7VdqdN5HiLdmBxK5mlicyKm1jYbLck GF3V6kRQ0m4YRtlspcYulbMB/EA3dCyyVeWU5G3UNLYLD93j/Eb9xb1GPF8EFC8HJgnr q4gg63kHJqWb8p3eEy0Or14apErN7md4I74/LdQgRL6qatA1W2CCrnquwU/b5ci4sJ7X 5gTCBxqhPq5IgXK7AxybLGvXB9Ai2wxMU5LuHgUsriUm/EM38twRNeTYc9JkVshJA+0P UoNw== ARC-Authentication-Results: i=1; mx.google.com; spf=pass (google.com: domain of mptcp+bounces-2592-wpasupplicant.patchew=gmail.com@lists.linux.dev designates 2604:1380:1000:8100::1 as permitted sender) smtp.mailfrom="mptcp+bounces-2592-wpasupplicant.patchew=gmail.com@lists.linux.dev"; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=intel.com Return-Path: Received: from sjc.edge.kernel.org (sjc.edge.kernel.org. [2604:1380:1000:8100::1]) by mx.google.com with ESMTPS id w21si1699747ply.386.2021.12.01.16.52.36 for (version=TLS1_2 cipher=ECDHE-ECDSA-AES128-GCM-SHA256 bits=128/128); Wed, 01 Dec 2021 16:52:36 -0800 (PST) Received-SPF: pass (google.com: domain of mptcp+bounces-2592-wpasupplicant.patchew=gmail.com@lists.linux.dev designates 2604:1380:1000:8100::1 as permitted sender) client-ip=2604:1380:1000:8100::1; Authentication-Results: mx.google.com; spf=pass (google.com: domain of mptcp+bounces-2592-wpasupplicant.patchew=gmail.com@lists.linux.dev designates 2604:1380:1000:8100::1 as permitted sender) smtp.mailfrom="mptcp+bounces-2592-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 sjc.edge.kernel.org (Postfix) with ESMTPS id 14F563E0231 for ; Thu, 2 Dec 2021 00:52:36 +0000 (UTC) Received: from localhost.localdomain (localhost.localdomain [127.0.0.1]) by smtp.subspace.kernel.org (Postfix) with ESMTP id EE19A2CA4; Thu, 2 Dec 2021 00:52:34 +0000 (UTC) X-Original-To: mptcp@lists.linux.dev Received: from mga01.intel.com (mga01.intel.com [192.55.52.88]) (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 BDF9E2CA2 for ; Thu, 2 Dec 2021 00:52:33 +0000 (UTC) X-IronPort-AV: E=McAfee;i="6200,9189,10185"; a="260583322" X-IronPort-AV: E=Sophos;i="5.87,280,1631602800"; d="scan'208";a="260583322" Received: from orsmga005.jf.intel.com ([10.7.209.41]) by fmsmga101.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 01 Dec 2021 16:52:22 -0800 X-IronPort-AV: E=Sophos;i="5.87,280,1631602800"; d="scan'208";a="677471787" Received: from mjmartin-desk2.amr.corp.intel.com (HELO mjmartin-desk2.intel.com) ([10.209.83.143]) by orsmga005-auth.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 01 Dec 2021 16:52:21 -0800 From: Mat Martineau To: mptcp@lists.linux.dev Cc: Mat Martineau Subject: [PATCH mptcp-next v2 4/6] mptcp: Make kernel path manager check for userspace-managed sockets Date: Wed, 1 Dec 2021 16:52:14 -0800 Message-Id: <20211202005216.154787-5-mathew.j.martineau@linux.intel.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20211202005216.154787-1-mathew.j.martineau@linux.intel.com> References: <20211202005216.154787-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 a74eb0444cd2..2cd491229d23 100644 --- a/net/mptcp/pm_netlink.c +++ b/net/mptcp/pm_netlink.c @@ -1122,7 +1122,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); @@ -1260,6 +1261,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; @@ -1301,7 +1305,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); @@ -1410,9 +1415,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(); @@ -1674,7 +1681,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.1 From nobody Mon Apr 29 00:42:50 2024 Delivered-To: wpasupplicant.patchew@gmail.com Received: by 2002:a02:cbb9:0:0:0:0:0 with SMTP id v25csp9619353jap; Wed, 1 Dec 2021 16:52:35 -0800 (PST) X-Google-Smtp-Source: ABdhPJz7TMuRbXL8/JO7yE99ZD5uJYN/LxNa7ptzUZoStlKDJodVbLWdhn/xgWFtCL4FcJvot+AI X-Received: by 2002:a17:90a:4b47:: with SMTP id o7mr2175335pjl.92.1638406355270; Wed, 01 Dec 2021 16:52:35 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1638406355; cv=none; d=google.com; s=arc-20160816; b=jy215Iwh/iz3CWZOlovosuGX9d/khkr22zc2bqtuMtY5KNLmOpLl3ISXhAVVwuuakO Xncd0iv5X1bblAREaDgGotzupFz2m+m+sPprr1MZK147UrGu9EfTpIuPV8z/byG0wxcW sy8bRssKdB6yvA9PIyk7ukHMYyAT261ZHf/D7RRVJJJc98RxewUpuvLJxzgtCv0ATrzE S6a8xaNe3dTZMyoqRGBrMzMlMHLfGl5+aRH8KDNuscXsRtAwE9IItKOCqhJeFaqVookM r26e70kPl4PazDTPrpw4lPNMmrLv0zdHlYq7G1YKFRdohBj7Kf2ogrjgFG4lapq0/uIQ rUEw== 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=DW+fX8wtfFQmGjeB34V8v+w0t7EyuWtSbFthduc6pao=; b=aCU5YcFJ8j+YRHSqcyp361tu2fGbj4seEJjb1dlIO7Uj2ifuuyySeJlo+kIFPAlbD2 GyNfWoysaxthHPDEX+yVCQXEdZqFOqZcFRctMt3acluSx8RXD97QV+7Yw1ihjRbl5heU 4Sf5sqCr0j/uXu+Mkz/RWeh/leoT+rcwyFyImNwZxP183drfrDo92c08/KzskN9MQzQ+ M+ji56QRqao1jraYcB+32DV5NmR8Q0CI+YkOXPlJxOUEFTqEuhHNbrsMqvZXlk2N6JtF m6SSyRB5GQGQJVQbvlXHdDneVomcGb0T21doNM3rZYTcB5X1m2GdMKPpbyQmEETYZwAa ycOw== ARC-Authentication-Results: i=1; mx.google.com; spf=pass (google.com: domain of mptcp+bounces-2591-wpasupplicant.patchew=gmail.com@lists.linux.dev designates 147.75.69.165 as permitted sender) smtp.mailfrom="mptcp+bounces-2591-wpasupplicant.patchew=gmail.com@lists.linux.dev"; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=intel.com Return-Path: Received: from sjc.edge.kernel.org (sjc.edge.kernel.org. [147.75.69.165]) by mx.google.com with ESMTPS id b23si1677657pgs.758.2021.12.01.16.52.35 for (version=TLS1_2 cipher=ECDHE-ECDSA-AES128-GCM-SHA256 bits=128/128); Wed, 01 Dec 2021 16:52:35 -0800 (PST) Received-SPF: pass (google.com: domain of mptcp+bounces-2591-wpasupplicant.patchew=gmail.com@lists.linux.dev designates 147.75.69.165 as permitted sender) client-ip=147.75.69.165; Authentication-Results: mx.google.com; spf=pass (google.com: domain of mptcp+bounces-2591-wpasupplicant.patchew=gmail.com@lists.linux.dev designates 147.75.69.165 as permitted sender) smtp.mailfrom="mptcp+bounces-2591-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 sjc.edge.kernel.org (Postfix) with ESMTPS id DB8773E0E6C for ; Thu, 2 Dec 2021 00:52:34 +0000 (UTC) Received: from localhost.localdomain (localhost.localdomain [127.0.0.1]) by smtp.subspace.kernel.org (Postfix) with ESMTP id B65A82C9D; Thu, 2 Dec 2021 00:52:33 +0000 (UTC) X-Original-To: mptcp@lists.linux.dev Received: from mga01.intel.com (mga01.intel.com [192.55.52.88]) (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 77E5A68 for ; Thu, 2 Dec 2021 00:52:32 +0000 (UTC) X-IronPort-AV: E=McAfee;i="6200,9189,10185"; a="260583323" X-IronPort-AV: E=Sophos;i="5.87,280,1631602800"; d="scan'208";a="260583323" Received: from orsmga005.jf.intel.com ([10.7.209.41]) by fmsmga101.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 01 Dec 2021 16:52:22 -0800 X-IronPort-AV: E=Sophos;i="5.87,280,1631602800"; d="scan'208";a="677471788" Received: from mjmartin-desk2.amr.corp.intel.com (HELO mjmartin-desk2.intel.com) ([10.209.83.143]) by orsmga005-auth.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 01 Dec 2021 16:52:21 -0800 From: Mat Martineau To: mptcp@lists.linux.dev Cc: Mat Martineau Subject: [PATCH mptcp-next v2 5/6] mptcp: Add a per-namespace sysctl to set the default path manager type Date: Wed, 1 Dec 2021 16:52:15 -0800 Message-Id: <20211202005216.154787-6-mathew.j.martineau@linux.intel.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20211202005216.154787-1-mathew.j.martineau@linux.intel.com> References: <20211202005216.154787-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. v2: Handle builds without CONFIG_SYSCTL Signed-off-by: Mat Martineau --- Documentation/networking/mptcp-sysctl.rst | 18 ++++++++++++++++++ net/mptcp/ctrl.c | 21 +++++++++++++++++++++ net/mptcp/pm.c | 13 +++++++++---- net/mptcp/protocol.h | 1 + 4 files changed, 49 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..ae20b7d92e28 100644 --- a/net/mptcp/ctrl.c +++ b/net/mptcp/ctrl.c @@ -16,6 +16,11 @@ #define MPTCP_SYSCTL_PATH "net/mptcp" =20 static int mptcp_pernet_id; + +#ifdef CONFIG_SYSCTL +static int mptcp_pm_type_max =3D __MPTCP_PM_TYPE_MAX; +#endif + struct mptcp_pernet { #ifdef CONFIG_SYSCTL struct ctl_table_header *ctl_table_hdr; @@ -26,6 +31,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 +64,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 +76,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 +120,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 +148,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 451948b11030..f1fc08d89c20 100644 --- a/net/mptcp/pm.c +++ b/net/mptcp/pm.c @@ -365,8 +365,12 @@ void mptcp_pm_subflow_chk_stale(const struct mptcp_soc= k *msk, struct sock *ssk) =20 void mptcp_pm_data_reset(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; @@ -374,13 +378,14 @@ void mptcp_pm_data_reset(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 478abe18b9e9..e4c2b39b029c 100644 --- a/net/mptcp/protocol.h +++ b/net/mptcp/protocol.h @@ -579,6 +579,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.1 From nobody Mon Apr 29 00:42:50 2024 Delivered-To: wpasupplicant.patchew@gmail.com Received: by 2002:a02:cbb9:0:0:0:0:0 with SMTP id v25csp9619393jap; Wed, 1 Dec 2021 16:52:37 -0800 (PST) X-Google-Smtp-Source: ABdhPJy4wJiIi7rPCbpqRj1AN4cj/B40VH5uGMe1kqdE9rrPVwul5MDl8+mu/SXVU/eCbt4DAoh3 X-Received: by 2002:a62:7a54:0:b0:494:6e78:994b with SMTP id v81-20020a627a54000000b004946e78994bmr9532792pfc.5.1638406357611; Wed, 01 Dec 2021 16:52:37 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1638406357; cv=none; d=google.com; s=arc-20160816; b=shEtznm1NHDOu8+EPqmJ4JaUhUnGRDHQ3hVVJLWGs8K0QaN0LGTKvd48s4d/FAvzJb +AoK3v11hrATQoz5dU+Dg2nQelznQAkiswsJdO2b8A+s1yHarDPNL4sYlJVpCRkxJUXj m7WNcwbEjMb3GNbQErJZ5IFfg7yzqamrNUBtAw5u7wDBgSnpBvZoYnvtGwrDcyglVlhM HPVLCVLcYUG9pAz8El8IxcVKsl4/9ftQiZsWoSxAquUnCOXVqRc7ksNJV5VBgS9nKUcO ZukLLBPyw+GbqaHbHCmmNj6OtrBZOiRk6NflxS154sj4THDzHdNLGgL88MjItJc8pkad d4KA== 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=aiCLP4eQkZF6qGg0GtUkuzu+PKh5ye89ZmIozjv8KjE=; b=FuWGlwIjR6dR1u0cMZx8y1G6JNeNcg9E/gORuP83ZvNX1t25Mu8VVmcubeuen2d2+/ Be7JdlDxSITjdBnYZU9QwadZXw1rpeTRhIggKGgiWrE3yoSd0BtpuSOMqQ+Hjbb14adB GEBGCjHJIVPHQRJly+p+POq5Bp69n2UEXGSZ0kyAxA29W13ejOR2QCk5kIn2nhT0gKJ3 euzOzH0NFnuxG+IIHEeKr1yoEmH1LhxcHiSGAUy3n0nhy8PIgNnoLD+k8ZxSPDG13aEx LeHEGy2tZl0M/c3MEd7jfkyFp0i4r1oKn/S8Uflq2sRgyfqg5yEK9X7EODCbWNlPgHck 8Tsg== ARC-Authentication-Results: i=1; mx.google.com; spf=pass (google.com: domain of mptcp+bounces-2593-wpasupplicant.patchew=gmail.com@lists.linux.dev designates 2604:1380:1000:8100::1 as permitted sender) smtp.mailfrom="mptcp+bounces-2593-wpasupplicant.patchew=gmail.com@lists.linux.dev"; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=intel.com Return-Path: Received: from sjc.edge.kernel.org (sjc.edge.kernel.org. [2604:1380:1000:8100::1]) by mx.google.com with ESMTPS id f12si1706660pgu.829.2021.12.01.16.52.37 for (version=TLS1_2 cipher=ECDHE-ECDSA-AES128-GCM-SHA256 bits=128/128); Wed, 01 Dec 2021 16:52:37 -0800 (PST) Received-SPF: pass (google.com: domain of mptcp+bounces-2593-wpasupplicant.patchew=gmail.com@lists.linux.dev designates 2604:1380:1000:8100::1 as permitted sender) client-ip=2604:1380:1000:8100::1; Authentication-Results: mx.google.com; spf=pass (google.com: domain of mptcp+bounces-2593-wpasupplicant.patchew=gmail.com@lists.linux.dev designates 2604:1380:1000:8100::1 as permitted sender) smtp.mailfrom="mptcp+bounces-2593-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 sjc.edge.kernel.org (Postfix) with ESMTPS id 1B5673E0231 for ; Thu, 2 Dec 2021 00:52:37 +0000 (UTC) Received: from localhost.localdomain (localhost.localdomain [127.0.0.1]) by smtp.subspace.kernel.org (Postfix) with ESMTP id 519E02CA2; Thu, 2 Dec 2021 00:52:35 +0000 (UTC) X-Original-To: mptcp@lists.linux.dev Received: from mga01.intel.com (mga01.intel.com [192.55.52.88]) (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 4352868 for ; Thu, 2 Dec 2021 00:52:34 +0000 (UTC) X-IronPort-AV: E=McAfee;i="6200,9189,10185"; a="260583324" X-IronPort-AV: E=Sophos;i="5.87,280,1631602800"; d="scan'208";a="260583324" Received: from orsmga005.jf.intel.com ([10.7.209.41]) by fmsmga101.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 01 Dec 2021 16:52:23 -0800 X-IronPort-AV: E=Sophos;i="5.87,280,1631602800"; d="scan'208";a="677471789" Received: from mjmartin-desk2.amr.corp.intel.com (HELO mjmartin-desk2.intel.com) ([10.209.83.143]) by orsmga005-auth.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 01 Dec 2021 16:52:21 -0800 From: Mat Martineau To: mptcp@lists.linux.dev Cc: Mat Martineau Subject: [PATCH mptcp-next v2 6/6] selftests: mptcp: Add tests for userspace PM type Date: Wed, 1 Dec 2021 16:52:16 -0800 Message-Id: <20211202005216.154787-7-mathew.j.martineau@linux.intel.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20211202005216.154787-1-mathew.j.martineau@linux.intel.com> References: <20211202005216.154787-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 Tested-by: Geliang Tang --- .../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.1