From nobody Wed May 8 17:41:09 2024 Delivered-To: wpasupplicant.patchew@gmail.com Received: by 2002:a02:cbb9:0:0:0:0:0 with SMTP id v25csp6436826jap; Mon, 13 Dec 2021 17:47:22 -0800 (PST) X-Google-Smtp-Source: ABdhPJwP5wadDiYzPk3QU5rSRxtOi6UTLebIn/xbbMQC4OvnBRcA6JoA3wEOluYw9PuckTEYRZIu X-Received: by 2002:ab0:2617:: with SMTP id c23mr3102487uao.38.1639446442305; Mon, 13 Dec 2021 17:47:22 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1639446442; cv=none; d=google.com; s=arc-20160816; b=Pltxd+y9pH73hdnL85nzyBhE49f+yrnEDJ9Nj5VxIvyFGZGaRsswYklKZqQlwAvfWh ZFSy3Etz/HriZR5CN5W5gHTAMccQR7vMNnknhm3EAjU9w8rGeV5BomCeq1aKLR2/Qp/R Gx5zfYPnv0FkTCukoIVcQRFgQBTiLD/7O8bJSxNmytaKtRazhbQSLA0l+mXhPgKyynZP ZrYgDnnIbewArYiCJc/p8w6Ph4CQypW+bEw28G9XFXn+/aOrKVfsml+UP5I7MtUvaUj2 7thIZOEerhFnsWaTt4nsJV/5LMj2T9oBOItyUgkph2KozgjsrnRNmR2wmgX6D1xG8BsH vaSw== 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=a8gftkTEPmsMH0PuDrx56HfvrCn0pIHKwTCNC2ebmmSSpGIqtAptcDPC15a2z5Srzj nX0O+RT6uMIL+eJofN3mEXpKPiIfpnfu7KZgb/8pIqONxpYTY8IUORZmZ6+P/iGelsPB uuHb58iEMlh6SBc/qF3AP22ocM2/z88SkmUpLur4Mu9qxnJRFyL8iYiexV58K4wvpQxh pa5AyFkRhmFUZSlzbytTWwMdnOYyOPbwoDfskHkf327Y6a8SDTdsm0dv60xWRx/vBlj6 VkpPNSIg894RexQOo8qYfcOsxSxyGvuMvLOZ3qenMrI0NLMVA4HmooBUpJCvld8HLIje /quQ== ARC-Authentication-Results: i=1; mx.google.com; spf=pass (google.com: domain of mptcp+bounces-2734-wpasupplicant.patchew=gmail.com@lists.linux.dev designates 147.75.69.165 as permitted sender) smtp.mailfrom="mptcp+bounces-2734-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 g29si2482651vkd.27.2021.12.13.17.47.22 for (version=TLS1_2 cipher=ECDHE-ECDSA-AES128-GCM-SHA256 bits=128/128); Mon, 13 Dec 2021 17:47:22 -0800 (PST) Received-SPF: pass (google.com: domain of mptcp+bounces-2734-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-2734-wpasupplicant.patchew=gmail.com@lists.linux.dev designates 147.75.69.165 as permitted sender) smtp.mailfrom="mptcp+bounces-2734-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 B10AC3E0F21 for ; Tue, 14 Dec 2021 01:47:21 +0000 (UTC) Received: from localhost.localdomain (localhost.localdomain [127.0.0.1]) by smtp.subspace.kernel.org (Postfix) with ESMTP id 753132CBD; Tue, 14 Dec 2021 01:47:20 +0000 (UTC) X-Original-To: mptcp@lists.linux.dev Received: from mga04.intel.com (mga04.intel.com [192.55.52.120]) (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 475B768 for ; Tue, 14 Dec 2021 01:47:19 +0000 (UTC) X-IronPort-AV: E=McAfee;i="6200,9189,10197"; a="237609788" X-IronPort-AV: E=Sophos;i="5.88,204,1635231600"; d="scan'208";a="237609788" Received: from orsmga003.jf.intel.com ([10.7.209.27]) by fmsmga104.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 13 Dec 2021 17:47:16 -0800 X-IronPort-AV: E=Sophos;i="5.88,204,1635231600"; d="scan'208";a="463602362" Received: from mjmartin-desk2.amr.corp.intel.com (HELO mjmartin-desk2.intel.com) ([10.251.17.231]) by orsmga003-auth.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 13 Dec 2021 17:47:16 -0800 From: Mat Martineau To: mptcp@lists.linux.dev Cc: Mat Martineau Subject: [PATCH mptcp-next v3 1/6] mptcp: Remove redundant assignments in path manager init Date: Mon, 13 Dec 2021 17:46:42 -0800 Message-Id: <20211214014647.136505-2-mathew.j.martineau@linux.intel.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20211214014647.136505-1-mathew.j.martineau@linux.intel.com> References: <20211214014647.136505-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 Wed May 8 17:41:09 2024 Delivered-To: wpasupplicant.patchew@gmail.com Received: by 2002:a02:cbb9:0:0:0:0:0 with SMTP id v25csp6436844jap; Mon, 13 Dec 2021 17:47:23 -0800 (PST) X-Google-Smtp-Source: ABdhPJxHiJAcRF++8cTCDZFrOQE4HI5pSZ9KmdpsYigCkMM046u1725KAA8ivchWEmdm8DBAyAvM X-Received: by 2002:a05:620a:2494:: with SMTP id i20mr1674151qkn.653.1639446443476; Mon, 13 Dec 2021 17:47:23 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1639446443; cv=none; d=google.com; s=arc-20160816; b=muv4uLm9aH9WMhCWvWTwP8q00y+Uo+mtK+M6LMT8WtRtDEb/eKCxe6ADOheFNy+OX8 xfq+6RWH0BMUVvN1nQxQqS57gGdTGzq5lJP5DyolOhczEX/YluY/pBHv5PiiKyCIfIhG opfmZ3CZdsD4BJYd/qNjGwq5h5T/mfMK9+8lx9VevXTVMG3CM2PAGzRAeznTp7gtcYf0 mHimGF10tf3e/bX9j83bgojpcFEpqBe2eTY7HrBcgfC9/2KqvFXxTZllydg5ih7FR0Qb 4qiI9yrl5r9VOphOLpqNFpZSKcCYdrQQHXPry3ueyFRLq2nrF69IdgQz2O6oJlQ/5t3+ le+g== 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=06sempI7n7n99nh3OXSP8eAoCDXh47hbCW5CuHg5uNoYjBwafpCW3nVY7a4He9kweM OdkcjgOwOQiJI7R1sMoaCbb4P0c0XzZDL7HflQ0bZIfjBFlvBeW8OsB2VfxeKJv0xFGO ZRZe+1pHmtdFi+iQx3FZX3iEbwfZfPkOmUzWAVzdFJKXrs7SdOHsTczP/raMLpDTNZpp XlyK+5sx2NY6pHbOHnXHSPLZQz/eTMhg3u80s4FNUr7WT/hl0KTgRYIFimhPfOM7ta8s VWT24lb8kZ2befYLdFX+4Y93RE1SZfWryM3uL1bbdWfpZ1LGdwu6iDswwvQWOUUsS+FH zyvw== ARC-Authentication-Results: i=1; mx.google.com; spf=pass (google.com: domain of mptcp+bounces-2735-wpasupplicant.patchew=gmail.com@lists.linux.dev designates 2604:1380:1:3600::1 as permitted sender) smtp.mailfrom="mptcp+bounces-2735-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 br33si14282599qkb.5.2021.12.13.17.47.23 for (version=TLS1_2 cipher=ECDHE-ECDSA-AES128-GCM-SHA256 bits=128/128); Mon, 13 Dec 2021 17:47:23 -0800 (PST) Received-SPF: pass (google.com: domain of mptcp+bounces-2735-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-2735-wpasupplicant.patchew=gmail.com@lists.linux.dev designates 2604:1380:1:3600::1 as permitted sender) smtp.mailfrom="mptcp+bounces-2735-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 2691F1C0EBA for ; Tue, 14 Dec 2021 01:47:23 +0000 (UTC) Received: from localhost.localdomain (localhost.localdomain [127.0.0.1]) by smtp.subspace.kernel.org (Postfix) with ESMTP id C735A2FAF; Tue, 14 Dec 2021 01:47:20 +0000 (UTC) X-Original-To: mptcp@lists.linux.dev Received: from mga04.intel.com (mga04.intel.com [192.55.52.120]) (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 8A1CC2CA5 for ; Tue, 14 Dec 2021 01:47:19 +0000 (UTC) X-IronPort-AV: E=McAfee;i="6200,9189,10197"; a="237609789" X-IronPort-AV: E=Sophos;i="5.88,204,1635231600"; d="scan'208";a="237609789" Received: from orsmga003.jf.intel.com ([10.7.209.27]) by fmsmga104.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 13 Dec 2021 17:47:17 -0800 X-IronPort-AV: E=Sophos;i="5.88,204,1635231600"; d="scan'208";a="463602363" Received: from mjmartin-desk2.amr.corp.intel.com (HELO mjmartin-desk2.intel.com) ([10.251.17.231]) by orsmga003-auth.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 13 Dec 2021 17:47:16 -0800 From: Mat Martineau To: mptcp@lists.linux.dev Cc: Mat Martineau Subject: [PATCH mptcp-next v3 2/6] mptcp: Add a member to mptcp_pm_data to track kernel vs userspace mode Date: Mon, 13 Dec 2021 17:46:43 -0800 Message-Id: <20211214014647.136505-3-mathew.j.martineau@linux.intel.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20211214014647.136505-1-mathew.j.martineau@linux.intel.com> References: <20211214014647.136505-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 Wed May 8 17:41:09 2024 Delivered-To: wpasupplicant.patchew@gmail.com Received: by 2002:a02:cbb9:0:0:0:0:0 with SMTP id v25csp6436871jap; Mon, 13 Dec 2021 17:47:24 -0800 (PST) X-Google-Smtp-Source: ABdhPJyoOW93OCbe1i5MWbbaxwAR6g/vMdTdm5UIal14oCYgELDO9H0WHkCM1uIhsOxlB2+NB7z4 X-Received: by 2002:a05:622a:202:: with SMTP id b2mr2698501qtx.34.1639446444656; Mon, 13 Dec 2021 17:47:24 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1639446444; cv=none; d=google.com; s=arc-20160816; b=w54dGHCIiZrGGKJqCe8mjylu2Kdu49NrmssmXaYtJ4aPBeUYXElKNzXQBtsImmOB5c +olRZIRJYJCn3hbQe1kpXC//jg97M9SjU8Wl4cqNKFMbJT5aciOEvtXBbmT/aupXi37n JQZm33eEdQ3q4K+hXCaaF6Amh+51rOrX9JXKefYuhSyIf249evcVenWFCPy2pgMngrQs nz6MHRBae7XSdqo2Rkhxgo5AuxUKdDK/yXDlBnCSqaRQqcjxtsd2x4eXLVQo4kHSpm36 XEDt7MRruIMQ6tsDElDhivCotUYO40d4Fsava+It/adCYDUvpeZg9YhBg+6qbGXlocio REsA== 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=iRFD4mN8XgZbO6ousZ/VcTxGFziu3T4tt+KgVuKrW7k=; b=y/cte7vG+8wJ9ej+1ipkPOz1gda4VGlh9Bj+4Rl8dLXoooVoWab7NyuvyB4dPzIQZ6 lSpbtcfmnzitw6kemtZzUXVw8axnCoukjAelcM74XMGnu2BgaCfQcK22i7N45+FcwAEw bc/oYFSveEnHvIznyaYoXOkcXEnnB5VgJxzj2EtB0mo/Hcw8fFX3cr7GAEVtsYlcwcuc Fqvmg7M9Jt140UTdnJTgQbrSPTIGzcZOjO8bJcdM0o9vVejorYQyGdx6QU5vCMlsk4O7 BtDuLmZ9jG3ltgv6PmrQJb9dewfPIFdROiciYf6LhUIAxmuokrWjRxc8h+WdNym75Jkt 5qOg== ARC-Authentication-Results: i=1; mx.google.com; spf=pass (google.com: domain of mptcp+bounces-2736-wpasupplicant.patchew=gmail.com@lists.linux.dev designates 2604:1380:1:3600::1 as permitted sender) smtp.mailfrom="mptcp+bounces-2736-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 c20si13434886qtd.203.2021.12.13.17.47.24 for (version=TLS1_2 cipher=ECDHE-ECDSA-AES128-GCM-SHA256 bits=128/128); Mon, 13 Dec 2021 17:47:24 -0800 (PST) Received-SPF: pass (google.com: domain of mptcp+bounces-2736-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-2736-wpasupplicant.patchew=gmail.com@lists.linux.dev designates 2604:1380:1:3600::1 as permitted sender) smtp.mailfrom="mptcp+bounces-2736-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 67F711C0BED for ; Tue, 14 Dec 2021 01:47:24 +0000 (UTC) Received: from localhost.localdomain (localhost.localdomain [127.0.0.1]) by smtp.subspace.kernel.org (Postfix) with ESMTP id 6603F3FD3; Tue, 14 Dec 2021 01:47:21 +0000 (UTC) X-Original-To: mptcp@lists.linux.dev Received: from mga04.intel.com (mga04.intel.com [192.55.52.120]) (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 7EC2168 for ; Tue, 14 Dec 2021 01:47:20 +0000 (UTC) X-IronPort-AV: E=McAfee;i="6200,9189,10197"; a="237609790" X-IronPort-AV: E=Sophos;i="5.88,204,1635231600"; d="scan'208";a="237609790" Received: from orsmga003.jf.intel.com ([10.7.209.27]) by fmsmga104.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 13 Dec 2021 17:47:17 -0800 X-IronPort-AV: E=Sophos;i="5.88,204,1635231600"; d="scan'208";a="463602364" Received: from mjmartin-desk2.amr.corp.intel.com (HELO mjmartin-desk2.intel.com) ([10.251.17.231]) by orsmga003-auth.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 13 Dec 2021 17:47:16 -0800 From: Mat Martineau To: mptcp@lists.linux.dev Cc: Mat Martineau Subject: [PATCH mptcp-next v3 3/6] mptcp: Bypass kernel PM when userspace PM is enabled Date: Mon, 13 Dec 2021 17:46:44 -0800 Message-Id: <20211214014647.136505-4-mathew.j.martineau@linux.intel.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20211214014647.136505-1-mathew.j.martineau@linux.intel.com> References: <20211214014647.136505-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_rm_addr_received() (Kishen Maloor) v3: Add and use helper function for PM mode (Paolo Abeni) Signed-off-by: Mat Martineau --- net/mptcp/pm.c | 2 +- net/mptcp/protocol.h | 5 +++++ 2 files changed, 6 insertions(+), 1 deletion(-) diff --git a/net/mptcp/pm.c b/net/mptcp/pm.c index 053afb058440..cff0d9585ab4 100644 --- a/net/mptcp/pm.c +++ b/net/mptcp/pm.c @@ -189,7 +189,7 @@ 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) || mptcp_pm_is_userspace(msk)) { 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)) { diff --git a/net/mptcp/protocol.h b/net/mptcp/protocol.h index 478abe18b9e9..9e84a46f3d87 100644 --- a/net/mptcp/protocol.h +++ b/net/mptcp/protocol.h @@ -798,6 +798,11 @@ static inline bool mptcp_pm_should_rm_signal(struct mp= tcp_sock *msk) return READ_ONCE(msk->pm.addr_signal) & BIT(MPTCP_RM_ADDR_SIGNAL); } =20 +static inline bool mptcp_pm_is_userspace(struct mptcp_sock *msk) +{ + return READ_ONCE(msk->pm.pm_type) !=3D MPTCP_PM_TYPE_KERNEL; +} + static inline unsigned int mptcp_add_addr_len(int family, bool echo, bool = port) { u8 len =3D TCPOLEN_MPTCP_ADD_ADDR_BASE; --=20 2.34.1 From nobody Wed May 8 17:41:09 2024 Delivered-To: wpasupplicant.patchew@gmail.com Received: by 2002:a02:cbb9:0:0:0:0:0 with SMTP id v25csp6436892jap; Mon, 13 Dec 2021 17:47:25 -0800 (PST) X-Google-Smtp-Source: ABdhPJyrrbBubC1K8dHjiSZ7Qc94Txv9TTV3kZrRBVTgoty7icCGSHNNbRfjLkGLm8VPfpEa4WKb X-Received: by 2002:a05:622a:1191:: with SMTP id m17mr2553356qtk.595.1639446445669; Mon, 13 Dec 2021 17:47:25 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1639446445; cv=none; d=google.com; s=arc-20160816; b=A4hyUcz0dci0zLnsNA8h1s1WXtfNUHjUmXz2mXDVo3RrZEn/3l5zpQ6K7iwSFSkDUY BAu+PIC5b7qaQRV66x0oZqrL49Z4uUig3C/TSpbfXg43uZ+wfGT9QpYJn+ctkamgOc2+ V7De8z9wKc2phQ7P4UNGtjjyXOKWB5LHUWojBzW8+hL+Aw3e9H4XoJMnCDwIeaI+2N1T i4me3RhaMrWaW2lyqM/bjRijzZ8k4KXax+VWyqlFPVjb4QVOXBSriniYl1FupwYdWYc1 C4nnW8czw8TC8qYORBim/K0u4ps9X+/tnr0Pk0MVlmeIztZDQl0ktV0gfgCfSlj1CJxB MKKg== 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=NKc4PDm0q1wHlk6FRsnL+HKH6/ZEZb+qm5DRC4EP/3c=; b=T/JzC91qfHG9RTEsUaeJQi1wdmsVPPKSQPggNvVclmp8ZclHej3RGW8vBfqdllcxWs PqwXZAKToiGB6L9DLsd7zaNU64VhEsBQDmrNcMF8HIOWqD9gjzbc2Iqixa0QiJ3U8Rze 9H9CygcnEHs1udSB53yfDAoJqz5nUVnK69Ez6eAFB3Hl86MvFAuB3KuQYPHJczqinh1O jI5ACUXiFBceUBFzWWuHjNI6Kjgkeah3zhYH1/7aUQX5oVu7Oveqe1wEn+dU6cD5mEAj CdRLPKdCoQX7ddJNs/GEH4w8m8P2GRA4wDcUAOS6PLkrNrVsS9muj8kjcz/TX/2q5geF HVgA== ARC-Authentication-Results: i=1; mx.google.com; spf=pass (google.com: domain of mptcp+bounces-2737-wpasupplicant.patchew=gmail.com@lists.linux.dev designates 147.75.197.195 as permitted sender) smtp.mailfrom="mptcp+bounces-2737-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 t2si13129930qvc.518.2021.12.13.17.47.25 for (version=TLS1_2 cipher=ECDHE-ECDSA-AES128-GCM-SHA256 bits=128/128); Mon, 13 Dec 2021 17:47:25 -0800 (PST) Received-SPF: pass (google.com: domain of mptcp+bounces-2737-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-2737-wpasupplicant.patchew=gmail.com@lists.linux.dev designates 147.75.197.195 as permitted sender) smtp.mailfrom="mptcp+bounces-2737-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 647071C0E6C for ; Tue, 14 Dec 2021 01:47:25 +0000 (UTC) Received: from localhost.localdomain (localhost.localdomain [127.0.0.1]) by smtp.subspace.kernel.org (Postfix) with ESMTP id 9E9B73FD5; Tue, 14 Dec 2021 01:47:21 +0000 (UTC) X-Original-To: mptcp@lists.linux.dev Received: from mga04.intel.com (mga04.intel.com [192.55.52.120]) (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 B0F392CBF for ; Tue, 14 Dec 2021 01:47:20 +0000 (UTC) X-IronPort-AV: E=McAfee;i="6200,9189,10197"; a="237609791" X-IronPort-AV: E=Sophos;i="5.88,204,1635231600"; d="scan'208";a="237609791" Received: from orsmga003.jf.intel.com ([10.7.209.27]) by fmsmga104.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 13 Dec 2021 17:47:17 -0800 X-IronPort-AV: E=Sophos;i="5.88,204,1635231600"; d="scan'208";a="463602365" Received: from mjmartin-desk2.amr.corp.intel.com (HELO mjmartin-desk2.intel.com) ([10.251.17.231]) by orsmga003-auth.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 13 Dec 2021 17:47:16 -0800 From: Mat Martineau To: mptcp@lists.linux.dev Cc: Mat Martineau Subject: [PATCH mptcp-next v3 4/6] mptcp: Make kernel path manager check for userspace-managed sockets Date: Mon, 13 Dec 2021 17:46:45 -0800 Message-Id: <20211214014647.136505-5-mathew.j.martineau@linux.intel.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20211214014647.136505-1-mathew.j.martineau@linux.intel.com> References: <20211214014647.136505-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. v3: Use helper function for PM mode (Paolo Abeni) Signed-off-by: Mat Martineau --- net/mptcp/pm_netlink.c | 18 ++++++++++++------ 1 file changed, 12 insertions(+), 6 deletions(-) diff --git a/net/mptcp/pm_netlink.c b/net/mptcp/pm_netlink.c index a74eb0444cd2..6df683459478 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) || + mptcp_pm_is_userspace(msk)) 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 (mptcp_pm_is_userspace(msk)) + goto next; + if (list_empty(&msk->conn_list)) { mptcp_pm_remove_anno_addr(msk, addr, false); goto next; @@ -1301,7 +1305,7 @@ 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) || mptcp_pm_is_userspace(msk)) goto next; =20 local_address((struct sock_common *)msk, &msk_local); @@ -1410,9 +1414,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 (!mptcp_pm_is_userspace(msk)) { + lock_sock(sk); + mptcp_pm_remove_addrs_and_subflows(msk, rm_list); + release_sock(sk); + } =20 sock_put(sk); cond_resched(); @@ -1674,7 +1680,7 @@ 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) || mptcp_pm_is_userspace(msk)) goto next; =20 lock_sock(sk); --=20 2.34.1 From nobody Wed May 8 17:41:09 2024 Delivered-To: wpasupplicant.patchew@gmail.com Received: by 2002:a02:cbb9:0:0:0:0:0 with SMTP id v25csp6436944jap; Mon, 13 Dec 2021 17:47:28 -0800 (PST) X-Google-Smtp-Source: ABdhPJxDq23Nz6ZKtUEBndXpHk1sLTbMMGyOMCb5CtBALlMURxJLCjxnnPGgooToVMDunzaO08c/ X-Received: by 2002:a05:620a:4092:: with SMTP id f18mr1649049qko.629.1639446448279; Mon, 13 Dec 2021 17:47:28 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1639446448; cv=none; d=google.com; s=arc-20160816; b=ObQGYgy0ZHZVX3kbXOTKbjTyMNSj6uaBLfFwDYXuhZzgV++SH2pmygMAaFXHsBcv3F A6Sl5y0Mb5Ja2APhnE9cPDmweFlt3ymiXvC2Vat6mBQ4hByDGT2h7XIN7HYX3oyY05Mw SfR0bhYb6waj/RAPiiM3dGl9hxwSm+gleREj6hpkz6jZI92gDMq9+B8FDqI/8u1TF8V4 kQd+e3ZMQVHxL8BYVACQwA1qaC0PyZ1WpEl0iFPIYF+DIJybD/fvPqIXyXoL/Jasoqhp Q2Yvwh+jjgP/rqjvDMQ0x5cmACppUlOg3baD9vEWxCq+PkTYPe8TIJGDr1rpp5HQp4yF OQgA== 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=rqIaN3W/3y3n08bp4tBh7yPkZx8wDYRQxGNepGZDdXk=; b=B1CHyFaeZYSDoBgls4IvsZipzzoiN1Xfrz9dfbut/wgXima3IR07QqoAk+qMkorAzA 78MFwufccaeZXMq6Bm4zfBwISntfbEFYFFDmOEcb4OTsplMrs2895bE5ATYLW+JLnYIU pUWljPF9fm/nAM8/sN7IDoMkNIqaI2Av7SUNoqajfnlnvoEh3M+lMRwpnPfIfJh80U73 VAOUx+Rkd3mSu1L0511uMu9oeF67pgA8K3qKcZq6uq6OLJNG38jjNDwzoERCFCSfW5+z W6ExPFNX7LbOs/VxpnhWVTkkO5A1RpbfzdET4/ZpHnVU6tzBR8YCkh7JmmvagxKMKbuJ rA3w== ARC-Authentication-Results: i=1; mx.google.com; spf=pass (google.com: domain of mptcp+bounces-2739-wpasupplicant.patchew=gmail.com@lists.linux.dev designates 147.75.197.195 as permitted sender) smtp.mailfrom="mptcp+bounces-2739-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 i17si15542849qkn.419.2021.12.13.17.47.28 for (version=TLS1_2 cipher=ECDHE-ECDSA-AES128-GCM-SHA256 bits=128/128); Mon, 13 Dec 2021 17:47:28 -0800 (PST) Received-SPF: pass (google.com: domain of mptcp+bounces-2739-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-2739-wpasupplicant.patchew=gmail.com@lists.linux.dev designates 147.75.197.195 as permitted sender) smtp.mailfrom="mptcp+bounces-2739-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 0126F1C0C4E for ; Tue, 14 Dec 2021 01:47:28 +0000 (UTC) Received: from localhost.localdomain (localhost.localdomain [127.0.0.1]) by smtp.subspace.kernel.org (Postfix) with ESMTP id D21C368; Tue, 14 Dec 2021 01:47:22 +0000 (UTC) X-Original-To: mptcp@lists.linux.dev Received: from mga04.intel.com (mga04.intel.com [192.55.52.120]) (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 CB7443FCF for ; Tue, 14 Dec 2021 01:47:20 +0000 (UTC) X-IronPort-AV: E=McAfee;i="6200,9189,10197"; a="237609794" X-IronPort-AV: E=Sophos;i="5.88,204,1635231600"; d="scan'208";a="237609794" Received: from orsmga003.jf.intel.com ([10.7.209.27]) by fmsmga104.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 13 Dec 2021 17:47:17 -0800 X-IronPort-AV: E=Sophos;i="5.88,204,1635231600"; d="scan'208";a="463602366" Received: from mjmartin-desk2.amr.corp.intel.com (HELO mjmartin-desk2.intel.com) ([10.251.17.231]) by orsmga003-auth.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 13 Dec 2021 17:47:16 -0800 From: Mat Martineau To: mptcp@lists.linux.dev Cc: Mat Martineau Subject: [PATCH mptcp-next v3 5/6] mptcp: Add a per-namespace sysctl to set the default path manager type Date: Mon, 13 Dec 2021 17:46:46 -0800 Message-Id: <20211214014647.136505-6-mathew.j.martineau@linux.intel.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20211214014647.136505-1-mathew.j.martineau@linux.intel.com> References: <20211214014647.136505-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 v3: Clarify logic for type-specific PM init (Geliang Tang and Paolo Abeni) Signed-off-by: Mat Martineau --- Documentation/networking/mptcp-sysctl.rst | 18 ++++++++++++ net/mptcp/ctrl.c | 21 ++++++++++++++ net/mptcp/pm.c | 34 +++++++++++++++-------- net/mptcp/protocol.h | 1 + 4 files changed, 63 insertions(+), 11 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 cff0d9585ab4..71b843c0ac42 100644 --- a/net/mptcp/pm.c +++ b/net/mptcp/pm.c @@ -364,7 +364,7 @@ void mptcp_pm_subflow_chk_stale(const struct mptcp_sock= *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; =20 pm->add_addr_signaled =3D 0; @@ -373,17 +373,29 @@ 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)); + WRITE_ONCE(pm->pm_type, pm_type); + + if (pm_type =3D=3D MPTCP_PM_TYPE_KERNEL) { + bool subflows_allowed =3D !!mptcp_pm_get_subflows_max(msk); + + /* 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)); + WRITE_ONCE(pm->accept_addr, + !!mptcp_pm_get_add_addr_accept_max(msk) && + subflows_allowed); + WRITE_ONCE(pm->accept_subflow, subflows_allowed); + } 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->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; } diff --git a/net/mptcp/protocol.h b/net/mptcp/protocol.h index 9e84a46f3d87..9c6996254d86 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 Wed May 8 17:41:09 2024 Delivered-To: wpasupplicant.patchew@gmail.com Received: by 2002:a02:cbb9:0:0:0:0:0 with SMTP id v25csp6436919jap; Mon, 13 Dec 2021 17:47:27 -0800 (PST) X-Google-Smtp-Source: ABdhPJxK+xVEpTckMynTqkQxGH5Tm6O/KC54Q14DtENT1Xiacdf5JU0un6v8BsvKl5oO5qYyeuVV X-Received: by 2002:a1f:ee07:: with SMTP id m7mr3366226vkh.27.1639446446980; Mon, 13 Dec 2021 17:47:26 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1639446446; cv=none; d=google.com; s=arc-20160816; b=HF66jwx5I0DyTIwpA61lEPIcrHsUqVwyR2reMJa+NqrGiPTnPyNuuqDPegCDRWHnqf 3DLQCJlrn5363bQ+9kI1yePz0fSvefaR0PpoyDWdurp0z/6v4QcCbsqhUwgc2ca82b1p sUUccownXj/cAPwfS32iB3ihi6prBVyT+wol2HPNckrKLfsmr+iTeHYtUMe2BUz4CFgY j6vdg00HfDUA3l5QvWlWwYYFClkH9taUchB9h6f6UN9k5x9iJeWw1YBRZ3QxDiuhHD5H +WkMElNbTSs5GIndGacJgVUgeuq2wJNHnz4CJaMPM3SZtNRVcZFXk5x8FYQxZU2UBBWo VLiQ== 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=4er9o7SbPac/vhdnf1zN/YPcwo8fpIcYSOAxXCLWCqA=; b=K7lSn6vvRQM/WMRqKOuV8V8HnxAMDH8fvfTfVvRuyR+2lByaD/2KdeDbCVMLMUFCjS rbtRmI16OcVQSwTcpbAFRe7462/Xtd9WdLBP1Bhg1HKzvByvu1qdn2I3Z2RYpVwERigF uZhhMKWCz20iH2hmmtuFZ+YB9Ac0ldpj4fBS+Yax8fIaU2YF01ma8HGkclBCOf/+i3Ix 77EQaMDufsn7jle7fxH3hWD2Hrib37EzZxJy0w6J1+CmiGFREqrplHt5eJhJz3mMUy5V XWPOEwlVje0V0eatcVgalHKWdyXLH5TN4YMeZDsPklZRcp3wwIrmmFImTRq6yw/gJ1E2 pJSQ== ARC-Authentication-Results: i=1; mx.google.com; spf=pass (google.com: domain of mptcp+bounces-2738-wpasupplicant.patchew=gmail.com@lists.linux.dev designates 2604:1380:1000:8100::1 as permitted sender) smtp.mailfrom="mptcp+bounces-2738-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 n13si11558585vse.651.2021.12.13.17.47.26 for (version=TLS1_2 cipher=ECDHE-ECDSA-AES128-GCM-SHA256 bits=128/128); Mon, 13 Dec 2021 17:47:26 -0800 (PST) Received-SPF: pass (google.com: domain of mptcp+bounces-2738-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-2738-wpasupplicant.patchew=gmail.com@lists.linux.dev designates 2604:1380:1000:8100::1 as permitted sender) smtp.mailfrom="mptcp+bounces-2738-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 6D2343E0F32 for ; Tue, 14 Dec 2021 01:47:26 +0000 (UTC) Received: from localhost.localdomain (localhost.localdomain [127.0.0.1]) by smtp.subspace.kernel.org (Postfix) with ESMTP id 76D2E3FD6; Tue, 14 Dec 2021 01:47:22 +0000 (UTC) X-Original-To: mptcp@lists.linux.dev Received: from mga04.intel.com (mga04.intel.com [192.55.52.120]) (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 6D28268 for ; Tue, 14 Dec 2021 01:47:21 +0000 (UTC) X-IronPort-AV: E=McAfee;i="6200,9189,10197"; a="237609795" X-IronPort-AV: E=Sophos;i="5.88,204,1635231600"; d="scan'208";a="237609795" Received: from orsmga003.jf.intel.com ([10.7.209.27]) by fmsmga104.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 13 Dec 2021 17:47:17 -0800 X-IronPort-AV: E=Sophos;i="5.88,204,1635231600"; d="scan'208";a="463602367" Received: from mjmartin-desk2.amr.corp.intel.com (HELO mjmartin-desk2.intel.com) ([10.251.17.231]) by orsmga003-auth.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 13 Dec 2021 17:47:16 -0800 From: Mat Martineau To: mptcp@lists.linux.dev Cc: Mat Martineau , Geliang Tang Subject: [PATCH mptcp-next v3 6/6] selftests: mptcp: Add tests for userspace PM type Date: Mon, 13 Dec 2021 17:46:47 -0800 Message-Id: <20211214014647.136505-7-mathew.j.martineau@linux.intel.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20211214014647.136505-1-mathew.j.martineau@linux.intel.com> References: <20211214014647.136505-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. Tested-by: Geliang Tang 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.1