From nobody Fri Apr 26 11:08:00 2024 Delivered-To: wpasupplicant.patchew@gmail.com Received: by 2002:a02:cbb9:0:0:0:0:0 with SMTP id v25csp398588jap; Wed, 15 Dec 2021 16:33:48 -0800 (PST) X-Google-Smtp-Source: ABdhPJy9EA6EUa6nG2aF7iP0/WLsBah6kKLWA8Nzag+hXA6aPFe6ssGxYBob+IQIgw6u6CNkDU2b X-Received: by 2002:a05:622a:346:: with SMTP id r6mr14954478qtw.78.1639614827856; Wed, 15 Dec 2021 16:33:47 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1639614827; cv=none; d=google.com; s=arc-20160816; b=d3ykD7y+JeeqIg/SRg8WfZFyieBohbSP6FzpRtTilTMdjwDvVh2rJNu735D/CafVuw K/8+yXdbYeFK++5jtmyM4sUZ0VVHaCkdREyGBllhZFq01PApF7oARxhMkSXJPoAuOOoc asXEUu4CSadnlKgHKcpQj1s+D+bhouAV0SWxJjhQ4Rn/ffT+znEFo08B8gDQQE+LcXSo ucnUFooGeFABDta9Mzqjja4UVyZzgwnWS0DAmwujjwtlGq1bnZBMgJtaiT563FEnkBuK oZiXSbQCUlIOfqRla/HGCEEeBT9a4FDdVuCw1H73PSp5vE8+puoNkFBts6J2ywUlKo2E 2teQ== 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=3KvcntiNg4cS+iRjpS+lCgaIGoNFuH34gkUJqXROt7o=; b=rFgXHN852C2z3iAf6Av8+IdtsYnqYaHDm1eVnvrz9IiQviOVXJJd5aI8Ui4BFK4lsv T3eHDOwxYm7/CPG+2CD6h4yPf+pO7cSZTDPuk/0CJLCWqY+n92kwYdYOqqtLlCCb4hzb MP9EVbbud3zleVWWhbdM9hYDVLptHBrO2o5OyyuRK+xAxB+E3Ouz3qh0lWR9dGFj+NyE /bDjM0f/OP27sau6NFdxePzlAygb8ou4KZBhzOmGCgS2IO5ox24iWH/SvuJgmAu4Zaoj UYBxVVhJyoQCLI1LLTma63r8sszJBkVBYkZvqCugaGq38YlAm4xs2wb5jD/bgZYWkyTv m3Zw== ARC-Authentication-Results: i=1; mx.google.com; spf=pass (google.com: domain of mptcp+bounces-2780-wpasupplicant.patchew=gmail.com@lists.linux.dev designates 147.75.197.195 as permitted sender) smtp.mailfrom="mptcp+bounces-2780-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 d12si2021762qte.30.2021.12.15.16.33.47 for (version=TLS1_2 cipher=ECDHE-ECDSA-AES128-GCM-SHA256 bits=128/128); Wed, 15 Dec 2021 16:33:47 -0800 (PST) Received-SPF: pass (google.com: domain of mptcp+bounces-2780-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-2780-wpasupplicant.patchew=gmail.com@lists.linux.dev designates 147.75.197.195 as permitted sender) smtp.mailfrom="mptcp+bounces-2780-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 576CC1C09BB for ; Thu, 16 Dec 2021 00:33:47 +0000 (UTC) Received: from localhost.localdomain (localhost.localdomain [127.0.0.1]) by smtp.subspace.kernel.org (Postfix) with ESMTP id 90CA72FB3; Thu, 16 Dec 2021 00:33:46 +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 3B7772CA9 for ; Thu, 16 Dec 2021 00:33:45 +0000 (UTC) X-IronPort-AV: E=McAfee;i="6200,9189,10199"; a="236907559" X-IronPort-AV: E=Sophos;i="5.88,209,1635231600"; d="scan'208";a="236907559" Received: from orsmga006.jf.intel.com ([10.7.209.51]) by fmsmga102.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 15 Dec 2021 16:33:29 -0800 X-IronPort-AV: E=Sophos;i="5.88,209,1635231600"; d="scan'208";a="465835389" Received: from mjmartin-desk2.amr.corp.intel.com (HELO mjmartin-desk2.intel.com) ([10.209.72.63]) by orsmga006-auth.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 15 Dec 2021 16:33:28 -0800 From: Mat Martineau To: mptcp@lists.linux.dev Cc: Mat Martineau Subject: [PATCH mptcp-next v4 1/6] mptcp: Remove redundant assignments in path manager init Date: Wed, 15 Dec 2021 16:33:19 -0800 Message-Id: <20211216003324.403195-2-mathew.j.martineau@linux.intel.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20211216003324.403195-1-mathew.j.martineau@linux.intel.com> References: <20211216003324.403195-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() v4: Resolve conflict in mptcp_pm_data_reset() Signed-off-by: Mat Martineau Acked-by: Paolo Abeni --- 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 ec20be3b43bd..49402556b4ec 100644 --- a/net/mptcp/pm.c +++ b/net/mptcp/pm.c @@ -383,21 +383,25 @@ 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; - bitmap_fill(msk->pm.id_avail_bitmap, MPTCP_PM_MAX_ADDR_ID + 1); + bool subflows_allowed =3D !!mptcp_pm_get_subflows_max(msk); + struct mptcp_pm_data *pm =3D &msk->pm; =20 - mptcp_pm_nl_data_init(msk); + 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; + bitmap_fill(msk->pm.id_avail_bitmap, MPTCP_PM_MAX_ADDR_ID + 1); } =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 75af1f701e1d..c8977b0c6cb0 100644 --- a/net/mptcp/pm_netlink.c +++ b/net/mptcp/pm_netlink.c @@ -1008,18 +1008,6 @@ int mptcp_pm_nl_get_local_id(struct mptcp_sock *msk,= struct 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 e1cf4f70ae9c..b22370878c86 100644 --- a/net/mptcp/protocol.h +++ b/net/mptcp/protocol.h @@ -822,7 +822,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 Fri Apr 26 11:08:00 2024 Delivered-To: wpasupplicant.patchew@gmail.com Received: by 2002:a02:cbb9:0:0:0:0:0 with SMTP id v25csp398597jap; Wed, 15 Dec 2021 16:33:49 -0800 (PST) X-Google-Smtp-Source: ABdhPJzfB+uYzP5McmPt18Usc3AAduw8d/iVnnt1UN0awdKWQtHwSbPMpjjKt1DY4Bnc6Ejnrbbi X-Received: by 2002:ac8:5a90:: with SMTP id c16mr14903483qtc.199.1639614829095; Wed, 15 Dec 2021 16:33:49 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1639614829; cv=none; d=google.com; s=arc-20160816; b=NO1Ec28nBno/ImsKKccTie0o+U+54ZBWvIkzMnoBPXiG5mDw6sGAoBB1yQSfDJNiJv h3N5YdS4vS/Op5pSgKgUfcrXSrxg2i1y34xtRKb3q7QKcdDI8ORb/vvRlOZz9/b1SlYj aAKLDYl/lVf64jwaaV7qUglQu3Jz+X0bmHi23+Nc+YEnSwCrYtHh7S+4vuFZ7VCVZsti gQQ5ROrykFq+POt/ufN0qhCGPUJTYFr+lpbY/yQryEmczbTt45mvH3zM1VBuzCd1SEyT YZCZA0SNmCmqsX+B0xcK0XbR4xRI5cYMwlnF/XYZlFenHU/959nadKxz58iVKpm0vDzr 4HnA== 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=d/sm+7EajueLJhT3hn6yOZZG8j7xsRBlqrijYkRzodE=; b=OxGBFg120HD0JNEGSdpnxyLE9OryJLwWOAJl7tIqVDBYlETLJzI6sUFh0mzi2AfOnF 2+kev3rmAXezi6QfFhDrqMRVvauOtFmObhWA15FS8Vcc6Wsj1IFskJl0hU0XOoCS4NxE JC/qhoASRtCzbemxFelKh0+O3+7lA1+M3N9gXSmuTshHL5u9v1k6zKVHaKBncR0XX5xM XblWr5a2vL6oCI2tEN9JiRLMl06Z0+1qZPhwdleDxG0RvMFFIwwuqt28EFIPck6a6Qv/ JWO4eDoONbk+yTkRclvb1XYA9lK2QUziSBY6iPUBTza7Rhe0ruUkGqr10To0hMaXSiw9 IPwQ== ARC-Authentication-Results: i=1; mx.google.com; spf=pass (google.com: domain of mptcp+bounces-2781-wpasupplicant.patchew=gmail.com@lists.linux.dev designates 2604:1380:1:3600::1 as permitted sender) smtp.mailfrom="mptcp+bounces-2781-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 e17si1971038qty.436.2021.12.15.16.33.49 for (version=TLS1_2 cipher=ECDHE-ECDSA-AES128-GCM-SHA256 bits=128/128); Wed, 15 Dec 2021 16:33:49 -0800 (PST) Received-SPF: pass (google.com: domain of mptcp+bounces-2781-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-2781-wpasupplicant.patchew=gmail.com@lists.linux.dev designates 2604:1380:1:3600::1 as permitted sender) smtp.mailfrom="mptcp+bounces-2781-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 A951A1C0BF9 for ; Thu, 16 Dec 2021 00:33:48 +0000 (UTC) Received: from localhost.localdomain (localhost.localdomain [127.0.0.1]) by smtp.subspace.kernel.org (Postfix) with ESMTP id 527713FDB; Thu, 16 Dec 2021 00:33:47 +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 960F92C9E for ; Thu, 16 Dec 2021 00:33:45 +0000 (UTC) X-IronPort-AV: E=McAfee;i="6200,9189,10199"; a="236907563" X-IronPort-AV: E=Sophos;i="5.88,209,1635231600"; d="scan'208";a="236907563" Received: from orsmga006.jf.intel.com ([10.7.209.51]) by fmsmga102.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 15 Dec 2021 16:33:30 -0800 X-IronPort-AV: E=Sophos;i="5.88,209,1635231600"; d="scan'208";a="465835390" Received: from mjmartin-desk2.amr.corp.intel.com (HELO mjmartin-desk2.intel.com) ([10.209.72.63]) by orsmga006-auth.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 15 Dec 2021 16:33:28 -0800 From: Mat Martineau To: mptcp@lists.linux.dev Cc: Mat Martineau Subject: [PATCH mptcp-next v4 2/6] mptcp: Add a member to mptcp_pm_data to track kernel vs userspace mode Date: Wed, 15 Dec 2021 16:33:20 -0800 Message-Id: <20211216003324.403195-3-mathew.j.martineau@linux.intel.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20211216003324.403195-1-mathew.j.martineau@linux.intel.com> References: <20211216003324.403195-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 Acked-by: Paolo Abeni --- 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 49402556b4ec..e72e6010e323 100644 --- a/net/mptcp/pm.c +++ b/net/mptcp/pm.c @@ -392,6 +392,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 b22370878c86..2fe59769b037 100644 --- a/net/mptcp/protocol.h +++ b/net/mptcp/protocol.h @@ -180,6 +180,14 @@ enum mptcp_pm_status { */ }; =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, +}; + /* Status bits below MPTCP_PM_ALREADY_ESTABLISHED need pm worker actions */ #define MPTCP_PM_WORK_MASK ((1 << MPTCP_PM_ALREADY_ESTABLISHED) - 1) =20 @@ -208,6 +216,7 @@ struct mptcp_pm_data { u8 add_addr_signaled; u8 add_addr_accepted; u8 local_addr_used; + u8 pm_type; u8 subflows; u8 status; DECLARE_BITMAP(id_avail_bitmap, MPTCP_PM_MAX_ADDR_ID + 1); --=20 2.34.1 From nobody Fri Apr 26 11:08:00 2024 Delivered-To: wpasupplicant.patchew@gmail.com Received: by 2002:a02:cbb9:0:0:0:0:0 with SMTP id v25csp398537jap; Wed, 15 Dec 2021 16:33:44 -0800 (PST) X-Google-Smtp-Source: ABdhPJz3g1Pdgh2wA1Kn9qzngFeHo/VPyW3MkJbvy5w1Y61REJQmdOTGWUgtk7mCOtAIQph0oOrW X-Received: by 2002:a63:82c8:: with SMTP id w191mr8122185pgd.92.1639614824676; Wed, 15 Dec 2021 16:33:44 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1639614824; cv=none; d=google.com; s=arc-20160816; b=q8qXY5X8BAyseUlrxdlRPMiJnQ6IhFyDumXCii+jF8sVtW3Ob5/F6SlRmR1aX8fWBk fDirzfXNv4X1GiC3xNGQxcSg6PNPHePKXyvVL6Qrn5X+ukvstXoZ6dGGuZmlcPATDPk9 BK+W2PX44brdZoKASlcQ9wYYm6Vir0RqRcj3j1RkAg7nL8kTvVdtmQZ/PfcyGpQw/ZHn J/efSxEYVmrCtcNWRz34diBtzXcPzwoRrqbUE3LGr+HSjy1AnX2OYwqqL03ekGxuBmBG O7LEilWOo89GzTkcb3jFO0L+7LLfnukLbs0KEYsbzcnDp47v0rZyRplgZLb/nAXQYMrm UVhw== 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=6Axqo2BuxD+UNEmy8AuRQE80univObFT5QAUQ1C5sDY=; b=WZU6ijvZOeExL3deqmKqkRvOnETezr5hawSClOf2gcHu3zKn1Md29XTpTmpTtgJA05 wKE8nwbtyrnawS4W0DAAIpPeH/NoVHqY4G1kTBl0/7on3h+uCMGQd4lB5UM3ffrpcIrB /beuHvCiUKfeFHfoq19jvm29aBjhw5Oe46ta8rYt1aiJ9wa1U06YHhCH69Grl2ldK72Q c+bfnpncq6ghttumhYF2kRPYqtuFBwp2jIoNWYTMXs1YQWYWcXam1MAJGcaMTruw87xl Zcr5VOe7LhLcgmyXf76Lwu/1ZILql+EhhV5pA6JFQHqyyjFkEI5tTeF0trPPZH70Mvcb Orgg== ARC-Authentication-Results: i=1; mx.google.com; spf=pass (google.com: domain of mptcp+bounces-2777-wpasupplicant.patchew=gmail.com@lists.linux.dev designates 2604:1380:1000:8100::1 as permitted sender) smtp.mailfrom="mptcp+bounces-2777-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 mj7si7295535pjb.71.2021.12.15.16.33.44 for (version=TLS1_2 cipher=ECDHE-ECDSA-AES128-GCM-SHA256 bits=128/128); Wed, 15 Dec 2021 16:33:44 -0800 (PST) Received-SPF: pass (google.com: domain of mptcp+bounces-2777-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-2777-wpasupplicant.patchew=gmail.com@lists.linux.dev designates 2604:1380:1000:8100::1 as permitted sender) smtp.mailfrom="mptcp+bounces-2777-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 D1BFD3E0585 for ; Thu, 16 Dec 2021 00:33:43 +0000 (UTC) Received: from localhost.localdomain (localhost.localdomain [127.0.0.1]) by smtp.subspace.kernel.org (Postfix) with ESMTP id EC2D12CA9; Thu, 16 Dec 2021 00:33:42 +0000 (UTC) X-Original-To: mptcp@lists.linux.dev Received: from mga07.intel.com (mga07.intel.com [134.134.136.100]) (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 69B592C9E for ; Thu, 16 Dec 2021 00:33:41 +0000 (UTC) X-IronPort-AV: E=McAfee;i="6200,9189,10199"; a="302742055" X-IronPort-AV: E=Sophos;i="5.88,209,1635231600"; d="scan'208";a="302742055" Received: from orsmga006.jf.intel.com ([10.7.209.51]) by orsmga105.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 15 Dec 2021 16:33:30 -0800 X-IronPort-AV: E=Sophos;i="5.88,209,1635231600"; d="scan'208";a="465835391" Received: from mjmartin-desk2.amr.corp.intel.com (HELO mjmartin-desk2.intel.com) ([10.209.72.63]) by orsmga006-auth.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 15 Dec 2021 16:33:28 -0800 From: Mat Martineau To: mptcp@lists.linux.dev Cc: Mat Martineau Subject: [PATCH mptcp-next v4 3/6] mptcp: Bypass kernel PM when userspace PM is enabled Date: Wed, 15 Dec 2021 16:33:21 -0800 Message-Id: <20211216003324.403195-4-mathew.j.martineau@linux.intel.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20211216003324.403195-1-mathew.j.martineau@linux.intel.com> References: <20211216003324.403195-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 Acked-by: Paolo Abeni --- 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 e72e6010e323..47ac9651e12c 100644 --- a/net/mptcp/pm.c +++ b/net/mptcp/pm.c @@ -208,7 +208,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 2fe59769b037..0c680a5177eb 100644 --- a/net/mptcp/protocol.h +++ b/net/mptcp/protocol.h @@ -799,6 +799,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 Fri Apr 26 11:08:00 2024 Delivered-To: wpasupplicant.patchew@gmail.com Received: by 2002:a02:cbb9:0:0:0:0:0 with SMTP id v25csp398567jap; Wed, 15 Dec 2021 16:33:46 -0800 (PST) X-Google-Smtp-Source: ABdhPJwOTNrOyhiZtAkeSwpMDRAPAjWIjD9YtGF8V78qLhhBMedhahJdeMEnp1gXDqs5HTIo56li X-Received: by 2002:a05:622a:f:: with SMTP id x15mr14735448qtw.481.1639614825907; Wed, 15 Dec 2021 16:33:45 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1639614825; cv=none; d=google.com; s=arc-20160816; b=a0QUTpNa0HiAq4ym5JqIZdAkk6mks4xXniGlHcOLket59fsLOPaIc1LO/1hLISDrtu crHeP2OPYXc6sUcqv9oPjjFiRZpvNehOnp/T57tkiHK+jsEmz06xJkG5IVUfMgwGNXSO M1TpalcPwSd9U/1fRBLrVO2X37f0Dzdvz9eQiH4xhkqKkqVCAyiqgnacL8tLOIrIj4wk /TcsOTv6j7M1Q6iydbMAfHJ9TwP8wlh7GWmccREx2Oa8dhQIxHBuXg6sjK8CBH3q9Ey6 Tv4u2ZwK11eenffqdGAdTqo/aRiuSXICS79GvnKKKWyIA2lXeOoiFG+qgXo1M2pjDGTF FcUQ== 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=qQGizCjTONWqeMwu2UV0HseknJOcB/V+M13K4JxdEWw=; b=o8uni+Xs2dSPIJCX0O2S2bdZ+kPC2XU/tDlReN89+YF8LVR3zhI3CDTngeIvFLuOLC 077oe5zusFRfEJWtPGVxqYnSBdjfb35oFvOGmtG5rEUlsFVNyZX1qmCBcVv/nyt5RhWd mYZVcNqhrioO0MN7vPZvKBAG0mHf6pu4CYPphBvg4PiPHNcL/eo1syVv0SdNPmd7/6YX PxrHbihsyW657L8HFJUjkYf6V0JUW2fu9kXPQLJK5D3WnEnpVAc6wP60fHNLCNOFwVlO eFkIpKdqavM39PjH3jZzkZVM+NOcBgrTXCnU5hf3bSyJZPH5yNWHTWo5rrkk8zqCb4Mg sVkg== ARC-Authentication-Results: i=1; mx.google.com; spf=pass (google.com: domain of mptcp+bounces-2778-wpasupplicant.patchew=gmail.com@lists.linux.dev designates 2604:1380:1:3600::1 as permitted sender) smtp.mailfrom="mptcp+bounces-2778-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 g20si1846939qtk.490.2021.12.15.16.33.45 for (version=TLS1_2 cipher=ECDHE-ECDSA-AES128-GCM-SHA256 bits=128/128); Wed, 15 Dec 2021 16:33:45 -0800 (PST) Received-SPF: pass (google.com: domain of mptcp+bounces-2778-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-2778-wpasupplicant.patchew=gmail.com@lists.linux.dev designates 2604:1380:1:3600::1 as permitted sender) smtp.mailfrom="mptcp+bounces-2778-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 61BB51C0B3D for ; Thu, 16 Dec 2021 00:33:45 +0000 (UTC) Received: from localhost.localdomain (localhost.localdomain [127.0.0.1]) by smtp.subspace.kernel.org (Postfix) with ESMTP id 1793F2CAF; Thu, 16 Dec 2021 00:33:44 +0000 (UTC) X-Original-To: mptcp@lists.linux.dev Received: from mga07.intel.com (mga07.intel.com [134.134.136.100]) (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 25F632C9E for ; Thu, 16 Dec 2021 00:33:43 +0000 (UTC) X-IronPort-AV: E=McAfee;i="6200,9189,10199"; a="302742057" X-IronPort-AV: E=Sophos;i="5.88,209,1635231600"; d="scan'208";a="302742057" Received: from orsmga006.jf.intel.com ([10.7.209.51]) by orsmga105.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 15 Dec 2021 16:33:30 -0800 X-IronPort-AV: E=Sophos;i="5.88,209,1635231600"; d="scan'208";a="465835392" Received: from mjmartin-desk2.amr.corp.intel.com (HELO mjmartin-desk2.intel.com) ([10.209.72.63]) by orsmga006-auth.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 15 Dec 2021 16:33:29 -0800 From: Mat Martineau To: mptcp@lists.linux.dev Cc: Mat Martineau Subject: [PATCH mptcp-next v4 4/6] mptcp: Make kernel path manager check for userspace-managed sockets Date: Wed, 15 Dec 2021 16:33:22 -0800 Message-Id: <20211216003324.403195-5-mathew.j.martineau@linux.intel.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20211216003324.403195-1-mathew.j.martineau@linux.intel.com> References: <20211216003324.403195-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 Acked-by: Paolo Abeni --- 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 c8977b0c6cb0..f12effa71942 100644 --- a/net/mptcp/pm_netlink.c +++ b/net/mptcp/pm_netlink.c @@ -1173,7 +1173,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); @@ -1299,6 +1300,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; @@ -1340,7 +1344,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); @@ -1449,9 +1453,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(); @@ -1713,7 +1719,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 Fri Apr 26 11:08:00 2024 Delivered-To: wpasupplicant.patchew@gmail.com Received: by 2002:a02:cbb9:0:0:0:0:0 with SMTP id v25csp398611jap; Wed, 15 Dec 2021 16:33:50 -0800 (PST) X-Google-Smtp-Source: ABdhPJyDi/4urlaHwvtUIio2FrIAST+gy55G4n9vZ6dPyfdyNlFK+F0Yzfl98ELkALaa2BbR74r1 X-Received: by 2002:a05:6214:29e8:: with SMTP id jv8mr13695955qvb.96.1639614830080; Wed, 15 Dec 2021 16:33:50 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1639614830; cv=none; d=google.com; s=arc-20160816; b=n/tqWzJbOZ9uziGU0fvRSI6EG6ldhasCflynYjlK1y5padcSpCBKV/sc/1IQAS9be3 TO95mB0i/lNAFZXNaVV57dLut8E7ayI4ihQJLAXqgFMijCgAS+C5fxwNGaAGcIORPDj2 6gd/Ukj4JsR6NRBqWQCTR36Hru6cCT/9iztzGyj22F9Zfiu2q1/3OxlaPvMx9qmPrzDp m/cn/6xS2mdoRZGTT9aYe+e64AbGW6FHkqpwN+a44PtpUz8Rj08MZGFE1vIJN78YWE+J VXUH95eQke65Bhs6iWJxCCaCghTjHjrM9WG8bKLT4moWrBCXqCiLc4yRg6nj8gzvXDxQ lzbg== 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=lmoWQ+qzrTsgaGrBsPliVIQyZZAdo3NBeE1yoUz3t3w=; b=sv9PfJuQ+WQUr8XELBTQGT79+/eSIZbX312C8abXy1ZduIs6N47IZa6krVIHX23PDo qASpxUeyDeNZsCHPEOVcT1yeZY4Gb8deb9RzShpBeL6NrCzdc2NFw4E8xZFrLnE1gT4h yAq/BHWZjcCEqdcm23nxsFfSVb717fISlWzzJvu3bj9BQp06gOpDSrfpteGgGxVGOCEJ 9Ws002WQFEtG+G/FrF9mba5Zxg5PB33cx+xOdmblhjcS0GHY3Jk2i5+1gBPw+hL9TW1z GqwEeKNVpRv8oDktaucNgh64wf5zMLFzMVVBX2RQPblRfST2pZc46bYqWLnTnokufkZQ 0/iw== ARC-Authentication-Results: i=1; mx.google.com; spf=pass (google.com: domain of mptcp+bounces-2782-wpasupplicant.patchew=gmail.com@lists.linux.dev designates 2604:1380:1:3600::1 as permitted sender) smtp.mailfrom="mptcp+bounces-2782-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 t14si2054139qtw.31.2021.12.15.16.33.49 for (version=TLS1_2 cipher=ECDHE-ECDSA-AES128-GCM-SHA256 bits=128/128); Wed, 15 Dec 2021 16:33:50 -0800 (PST) Received-SPF: pass (google.com: domain of mptcp+bounces-2782-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-2782-wpasupplicant.patchew=gmail.com@lists.linux.dev designates 2604:1380:1:3600::1 as permitted sender) smtp.mailfrom="mptcp+bounces-2782-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 C86511C0BCE for ; Thu, 16 Dec 2021 00:33:49 +0000 (UTC) Received: from localhost.localdomain (localhost.localdomain [127.0.0.1]) by smtp.subspace.kernel.org (Postfix) with ESMTP id A659A3FDC; Thu, 16 Dec 2021 00:33:47 +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 721BE2CAF for ; Thu, 16 Dec 2021 00:33:46 +0000 (UTC) X-IronPort-AV: E=McAfee;i="6200,9189,10199"; a="236907569" X-IronPort-AV: E=Sophos;i="5.88,209,1635231600"; d="scan'208";a="236907569" Received: from orsmga006.jf.intel.com ([10.7.209.51]) by fmsmga102.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 15 Dec 2021 16:33:30 -0800 X-IronPort-AV: E=Sophos;i="5.88,209,1635231600"; d="scan'208";a="465835393" Received: from mjmartin-desk2.amr.corp.intel.com (HELO mjmartin-desk2.intel.com) ([10.209.72.63]) by orsmga006-auth.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 15 Dec 2021 16:33:29 -0800 From: Mat Martineau To: mptcp@lists.linux.dev Cc: Mat Martineau Subject: [PATCH mptcp-next v4 5/6] mptcp: Add a per-namespace sysctl to set the default path manager type Date: Wed, 15 Dec 2021 16:33:23 -0800 Message-Id: <20211216003324.403195-6-mathew.j.martineau@linux.intel.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20211216003324.403195-1-mathew.j.martineau@linux.intel.com> References: <20211216003324.403195-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 Acked-by: Paolo Abeni --- 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 47ac9651e12c..1f8878cc29e3 100644 --- a/net/mptcp/pm.c +++ b/net/mptcp/pm.c @@ -383,7 +383,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; @@ -392,17 +392,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; bitmap_fill(msk->pm.id_avail_bitmap, MPTCP_PM_MAX_ADDR_ID + 1); diff --git a/net/mptcp/protocol.h b/net/mptcp/protocol.h index 0c680a5177eb..517f087f2b3a 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 Fri Apr 26 11:08:00 2024 Delivered-To: wpasupplicant.patchew@gmail.com Received: by 2002:a02:cbb9:0:0:0:0:0 with SMTP id v25csp398625jap; Wed, 15 Dec 2021 16:33:51 -0800 (PST) X-Google-Smtp-Source: ABdhPJzXWo7FKJDpEgE3+2keotgZ4wYRPDLBBcRQUYZYwQ5HScCDlTb7qXD36XvdKVgfzFd4zH+g X-Received: by 2002:a0c:edca:: with SMTP id i10mr13971505qvr.62.1639614831286; Wed, 15 Dec 2021 16:33:51 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1639614831; cv=none; d=google.com; s=arc-20160816; b=DPCxHjNYk7PCo2ZU1RQJ63Q4rQwoByyAt/gZZs/81C++kgdxKXDY14l3BlvcAekXqY LD4voR0/aFSivB358uTksS9wbwxD2HbgYe9xBX0DeqtasLvTxY1DG/3QEaFf/+Q/u2Gl Y0frPrUsQs1AJOPgG6CgAOgIF0csR3QyPDKsgeyskoAcnmXPhcaO/LlqNlGAQqGKKnGf tr0UF8QfJaJ3vb8bcFcaW0mOFcN1/Leo42YgfDnILYJ7btkShWxbB2J07rCiYGdHKy3f GGRKaeRy2c5WRPN5ScNVCsYExW5QCyjV16i/sp6BdAOYpNz+k/rrkEimb6OgNFKj22IZ FVtQ== 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=kHUcDsI44STX7nGDUVF9D881XTkAVw2tMoPdAuoYOQM=; b=vm2A6As6WeCF8pwvlH223IpBf7Y1clgTu8hf/CyQS77KdoqOd7DViHWh4cxxwOkC0O EsL/JogO3JfGp2jas7yDLglAbD/BJltuDHZQOpxnEfoo7+CO8rhwxyk5HbpulZYGgADY WhpxJwchmLkWwiZIXQxFQHIZ9u/NDPUVnBEmwlzEz4ES1HYIzfHyaXuH8dh967csl+oW klmmvQdLfG4/pAzwtQlh8Ll3w1mzP+wWW0mHu07TuPqrbJRQBrx6xSpAwtrSkZyZwt+H W43tEAfYV6AOWJzcaezl2W56BNLWKJnsRjaQWlEXjtogTkzujokvIgMMBTOrFDGFJxFm 6LPQ== ARC-Authentication-Results: i=1; mx.google.com; spf=pass (google.com: domain of mptcp+bounces-2783-wpasupplicant.patchew=gmail.com@lists.linux.dev designates 2604:1380:1:3600::1 as permitted sender) smtp.mailfrom="mptcp+bounces-2783-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 t14si2054139qtw.31.2021.12.15.16.33.51 for (version=TLS1_2 cipher=ECDHE-ECDSA-AES128-GCM-SHA256 bits=128/128); Wed, 15 Dec 2021 16:33:51 -0800 (PST) Received-SPF: pass (google.com: domain of mptcp+bounces-2783-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-2783-wpasupplicant.patchew=gmail.com@lists.linux.dev designates 2604:1380:1:3600::1 as permitted sender) smtp.mailfrom="mptcp+bounces-2783-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 D9D001C0C50 for ; Thu, 16 Dec 2021 00:33:50 +0000 (UTC) Received: from localhost.localdomain (localhost.localdomain [127.0.0.1]) by smtp.subspace.kernel.org (Postfix) with ESMTP id 4671A3FDD; Thu, 16 Dec 2021 00:33:48 +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 E60D02FB6 for ; Thu, 16 Dec 2021 00:33:46 +0000 (UTC) X-IronPort-AV: E=McAfee;i="6200,9189,10199"; a="236907571" X-IronPort-AV: E=Sophos;i="5.88,209,1635231600"; d="scan'208";a="236907571" Received: from orsmga006.jf.intel.com ([10.7.209.51]) by fmsmga102.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 15 Dec 2021 16:33:30 -0800 X-IronPort-AV: E=Sophos;i="5.88,209,1635231600"; d="scan'208";a="465835394" Received: from mjmartin-desk2.amr.corp.intel.com (HELO mjmartin-desk2.intel.com) ([10.209.72.63]) by orsmga006-auth.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 15 Dec 2021 16:33:29 -0800 From: Mat Martineau To: mptcp@lists.linux.dev Cc: Mat Martineau , Geliang Tang Subject: [PATCH mptcp-next v4 6/6] selftests: mptcp: Add tests for userspace PM type Date: Wed, 15 Dec 2021 16:33:24 -0800 Message-Id: <20211216003324.403195-7-mathew.j.martineau@linux.intel.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20211216003324.403195-1-mathew.j.martineau@linux.intel.com> References: <20211216003324.403195-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 Acked-by: Paolo Abeni --- .../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 8cbff7ce35d6..dfff017a08f6 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 @@ -1911,6 +1912,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 @@ -1928,6 +1991,7 @@ all_tests() checksum_tests deny_join_id0_tests fullmesh_tests + userspace_tests } =20 usage() @@ -1948,6 +2012,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" @@ -1983,7 +2048,7 @@ if [ $do_all_tests -eq 1 ]; then exit $ret fi =20 -while getopts 'fesltra64bpkdmchCS' opt; do +while getopts 'fesltra64bpkdmuchCS' opt; do case $opt in f) subflows_tests @@ -2030,6 +2095,9 @@ while getopts 'fesltra64bpkdmchCS' opt; do m) fullmesh_tests ;; + u) + userspace_tests + ;; c) ;; C) --=20 2.34.1