From nobody Thu Sep 18 06:46:34 2025 Delivered-To: wpasupplicant.patchew@gmail.com Received: by 2002:a05:6a06:869:b0:4b8:7781:bd2f with SMTP id d41csp1319152pis; Wed, 27 Apr 2022 15:50:17 -0700 (PDT) X-Google-Smtp-Source: ABdhPJxjfEngmgTuAcd/xZKrKoOesAoNHFHZs9vm8Mdo/+jR8wam2B7tKJINRumSTyFlWelWDMrc X-Received: by 2002:a05:6808:1c9:b0:322:3901:9ce1 with SMTP id x9-20020a05680801c900b0032239019ce1mr18466527oic.160.1651099816844; Wed, 27 Apr 2022 15:50:16 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1651099816; cv=none; d=google.com; s=arc-20160816; b=extcwnTSYqMzkdyDcYyVuE7Ker6LHTM7V62UFDvHrw8S4jjjFyqtUHik+vib40vny8 5wkRd7q0yD+3zJokZB0yq4vruY5ifhorys8nockr+2NnsZf8jqq+pTy+TI7gAoC4nhYp SnVsmZo0fdvd4b3Ja8z9sao27SIuXSs0tmWJRWVUWsnr+rMuei7RaWFoWpuSWDGJ8TsE r7hVOYjPs6Y75Kkhi5sVUNtnPNNGJZEIj8jhSzqo+VoeFII8FthelISV/GVYco9kLnWg UYwz17dQqOFgDZMfVHGYRlQkvBfXh+r6LcVxVHGU3Xpc/qyUTbYN4coTIKBWP5kG576L E3dg== 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:dkim-signature; bh=vgNe65xI6iYoQLmYR7nHM5Tu/W8fFzfiOmNJ/iUNn40=; b=DYG6m+JCNpTB+6zNJFV8BOPEQeGtt6kUXOW4ypNc5fkzRWrIoD9f7MwdfKkAdAHMNM uNwwjfsiaEGeWazkYMFXNscqLPS5n/lX10mPc7vlorFJqmB/7NXl69UrGtS6uCoRQ8QF HmgXlV5kXn6NRF4A8x0/F7ytzJdO7A0p+ZrcB/eezPRC5YGNkFx/Dwtywv6CTyGK69HS PMAxkcxr+ZCHwzWII6x3mMhK69ciWJ4wWacU37MjL8ZRYkQyBo+PlfCyfz5b5kNlrXYn ueu3oiNCVbmNK5dTS8Vouq4Zx1Rs9M3yvvUVto3B3VRIZfgNqCwvbYufCTT98h2fjMex AvQg== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@intel.com header.s=Intel header.b=ObvsByK0; spf=pass (google.com: domain of mptcp+bounces-4935-wpasupplicant.patchew=gmail.com@lists.linux.dev designates 2604:1380:4040:4f00::1 as permitted sender) smtp.mailfrom="mptcp+bounces-4935-wpasupplicant.patchew=gmail.com@lists.linux.dev"; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=intel.com Return-Path: Received: from da.mirrors.kernel.org (da.mirrors.kernel.org. [2604:1380:4040:4f00::1]) by mx.google.com with ESMTPS id k14-20020a056870350e00b000e672e8b23fsi1827800oah.39.2022.04.27.15.50.16 for (version=TLS1_2 cipher=ECDHE-ECDSA-AES128-GCM-SHA256 bits=128/128); Wed, 27 Apr 2022 15:50:16 -0700 (PDT) Received-SPF: pass (google.com: domain of mptcp+bounces-4935-wpasupplicant.patchew=gmail.com@lists.linux.dev designates 2604:1380:4040:4f00::1 as permitted sender) client-ip=2604:1380:4040:4f00::1; Authentication-Results: mx.google.com; dkim=pass header.i=@intel.com header.s=Intel header.b=ObvsByK0; spf=pass (google.com: domain of mptcp+bounces-4935-wpasupplicant.patchew=gmail.com@lists.linux.dev designates 2604:1380:4040:4f00::1 as permitted sender) smtp.mailfrom="mptcp+bounces-4935-wpasupplicant.patchew=gmail.com@lists.linux.dev"; dmarc=pass (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 da.mirrors.kernel.org (Postfix) with ESMTPS id 8A4492E09F0 for ; Wed, 27 Apr 2022 22:50:16 +0000 (UTC) Received: from localhost.localdomain (localhost.localdomain [127.0.0.1]) by smtp.subspace.kernel.org (Postfix) with ESMTP id A2D62801; Wed, 27 Apr 2022 22:50:14 +0000 (UTC) X-Original-To: mptcp@lists.linux.dev Received: from mga01.intel.com (mga01.intel.com [192.55.52.88]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 53CD37B for ; Wed, 27 Apr 2022 22:50:13 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1651099813; x=1682635813; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=ritax1ucyi7/s2oghgHR+QF0LFx3Zqi4UHvJPq/tudU=; b=ObvsByK0ExZHGl/qfwtMfHugLyQ0fbkcgYrCICag9PO51ivRv3+d3MtG GP/UAbCAEZZMeQ7iRrVUSl7FdZzlZCHUSHUnwcqokJQ9R8pddMZTSP7FD Dj88hJeO3jcFVXS1EYPtpZ6dw5BEN0Svf/cpoSdeWxf2eGlE1GCZV8Ae3 gKEXpuOXNXIWajhlESbx56XAHNKNK5FV5e3b4GWSFNbDm8aTOLGNiofBl A3834c869Lycc9NJnBPhWnUnXP7nM0UKP0HQPWfla27JEvqzbVaJnts2D KFNpvbAhdjv3xDvXI9see9BgIJ62QjqH1wjywIotu689vzFrwRJhUKNTD Q==; X-IronPort-AV: E=McAfee;i="6400,9594,10330"; a="291252889" X-IronPort-AV: E=Sophos;i="5.90,294,1643702400"; d="scan'208";a="291252889" Received: from orsmga005.jf.intel.com ([10.7.209.41]) by fmsmga101.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 27 Apr 2022 15:50:10 -0700 X-IronPort-AV: E=Sophos;i="5.90,294,1643702400"; d="scan'208";a="731049115" Received: from mjmartin-desk2.amr.corp.intel.com (HELO mjmartin-desk2.intel.com) ([10.212.233.139]) by orsmga005-auth.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 27 Apr 2022 15:50:10 -0700 From: Mat Martineau To: netdev@vger.kernel.org Cc: Mat Martineau , davem@davemloft.net, kuba@kernel.org, pabeni@redhat.com, matthieu.baerts@tessares.net, mptcp@lists.linux.dev Subject: [PATCH net-next 1/6] mptcp: Remove redundant assignments in path manager init Date: Wed, 27 Apr 2022 15:49:57 -0700 Message-Id: <20220427225002.231996-2-mathew.j.martineau@linux.intel.com> X-Mailer: git-send-email 2.36.0 In-Reply-To: <20220427225002.231996-1-mathew.j.martineau@linux.intel.com> References: <20220427225002.231996-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() Acked-by: Paolo Abeni 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 14f448d82bb2..4de90e618be3 100644 --- a/net/mptcp/pm.c +++ b/net/mptcp/pm.c @@ -415,21 +415,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 c20261b612e9..bbbbfb421eec 100644 --- a/net/mptcp/pm_netlink.c +++ b/net/mptcp/pm_netlink.c @@ -1061,18 +1061,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 3a8740fef918..0316605de559 100644 --- a/net/mptcp/protocol.h +++ b/net/mptcp/protocol.h @@ -828,7 +828,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.36.0 From nobody Thu Sep 18 06:46:34 2025 Delivered-To: wpasupplicant.patchew@gmail.com Received: by 2002:a05:6a06:869:b0:4b8:7781:bd2f with SMTP id d41csp1319156pis; Wed, 27 Apr 2022 15:50:18 -0700 (PDT) X-Google-Smtp-Source: ABdhPJy29nKDNTIuOSlXj0SJywwVlTT2BOsvqjwcw7SPGZ4kA1MkA2oOfiLyOUtmr8jlM4ntt8AY X-Received: by 2002:a17:902:a585:b0:14d:58ef:65 with SMTP id az5-20020a170902a58500b0014d58ef0065mr30754611plb.139.1651099818049; Wed, 27 Apr 2022 15:50:18 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1651099818; cv=none; d=google.com; s=arc-20160816; b=LEhPHkl9H+KBhYx/aTRHAXSNlZGEj5uT29hQVvYJEM9tD5iM8J7Odifex5R4xQbaOe NZ+jJPBtbdh0b6AKYEY8LnkfSl7CdUDprHNkJ9D0kncWJFdnKfsGNoSqmJeP3OVMiu7X T4+gyGq9ISCtWipVGHTDUti/PWyTC54Qguk2O117aEiLGUe8EpYebuaeZTLcx8OU2pWw kw1UB1Nih2YIcmXhHJGej60rpC/cG5AxVizb/0tX40NJD6Wch3FUtLfX+WkIJFEg+kcz SZ4E0OYoROVQzQC2FopjRZwP+hN1IU6RVfR6Q7cN6zOVjowuNeWOcYI21yiqtY3HoKp1 78UA== 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:dkim-signature; bh=Uxb6eHLAfjci07lQry75fOeCO3q4QsFulKbjHrUy8a8=; b=d4itbSNxqPK6razE/z5WwKixlLwfn5xScnqsVI19rdxpyK11P+DrNomHnuVIvpGh1+ pDjyzcZMGl/rydnVAtS8E85ki3qecV8IO9hJqrtzXiokHXd9twaHJwB8gKYHnBRdMNFM lT4lvwJUOHFpClc77u7ce3FM8GTITjzCsvCGcKLy9iYq0gVgAooLjJzZrQPb9jEIcGmP OMBAAoHEvlLHV72MNVbFhMFCYsjk4T0pjBzXbfBi9h741iFqaCevMY5ezyxrGeKzWDT0 SI6gD/DKHTQRd+4HkJJRszKcGdQjFju1OSsz9CjCPXCFK7yPSI0R9iE4/NNgNbqxuVS7 T91Q== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@intel.com header.s=Intel header.b=gNkrCdna; spf=pass (google.com: domain of mptcp+bounces-4936-wpasupplicant.patchew=gmail.com@lists.linux.dev designates 139.178.88.99 as permitted sender) smtp.mailfrom="mptcp+bounces-4936-wpasupplicant.patchew=gmail.com@lists.linux.dev"; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=intel.com Return-Path: Received: from sv.mirrors.kernel.org (sv.mirrors.kernel.org. [139.178.88.99]) by mx.google.com with ESMTPS id d20-20020a170902b71400b00153b2d16424si2587350pls.44.2022.04.27.15.50.17 for (version=TLS1_2 cipher=ECDHE-ECDSA-AES128-GCM-SHA256 bits=128/128); Wed, 27 Apr 2022 15:50:18 -0700 (PDT) Received-SPF: pass (google.com: domain of mptcp+bounces-4936-wpasupplicant.patchew=gmail.com@lists.linux.dev designates 139.178.88.99 as permitted sender) client-ip=139.178.88.99; Authentication-Results: mx.google.com; dkim=pass header.i=@intel.com header.s=Intel header.b=gNkrCdna; spf=pass (google.com: domain of mptcp+bounces-4936-wpasupplicant.patchew=gmail.com@lists.linux.dev designates 139.178.88.99 as permitted sender) smtp.mailfrom="mptcp+bounces-4936-wpasupplicant.patchew=gmail.com@lists.linux.dev"; dmarc=pass (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 sv.mirrors.kernel.org (Postfix) with ESMTPS id 6D3EF280C19 for ; Wed, 27 Apr 2022 22:50:17 +0000 (UTC) Received: from localhost.localdomain (localhost.localdomain [127.0.0.1]) by smtp.subspace.kernel.org (Postfix) with ESMTP id E24B4803; Wed, 27 Apr 2022 22:50:14 +0000 (UTC) X-Original-To: mptcp@lists.linux.dev Received: from mga01.intel.com (mga01.intel.com [192.55.52.88]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id B33DC7FA for ; Wed, 27 Apr 2022 22:50:13 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1651099813; x=1682635813; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=CNRuKBjmjxVENqUvRRSu2j5me55152i5hjFEZKIzhrg=; b=gNkrCdnayeOhdTD3p17Uft3oE5tVbrNHXODqi3pu0tgKIGyQej7Uhc8I S856IZ1QbcplLLTBctJ34Zd3ZK5X2281FV6+O+AlGVEhbUuBxGHjC5Lmp VV/KiOgWebjFpY9Z7Cim5gy+/WtWbmBBUHlEEsNCmD+hnqyYfrHL2fUwT ni/URbZVga6bd1xiQsG9U9sI2f3kpDYJM6VeXxgLupbFl1mkGRp0johq5 xu5fLWvcZJAJbJ0KwMnKNKBSOSc2AZ6xW4OnkmHOZErFWbfgONqvv+Iqt D53j1EpXoTJZ7NVMHGsxOsQBX9lnoZWWsZS5N/NuDmIS3TLC1ElxKDwQT Q==; X-IronPort-AV: E=McAfee;i="6400,9594,10330"; a="291252890" X-IronPort-AV: E=Sophos;i="5.90,294,1643702400"; d="scan'208";a="291252890" Received: from orsmga005.jf.intel.com ([10.7.209.41]) by fmsmga101.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 27 Apr 2022 15:50:10 -0700 X-IronPort-AV: E=Sophos;i="5.90,294,1643702400"; d="scan'208";a="731049116" Received: from mjmartin-desk2.amr.corp.intel.com (HELO mjmartin-desk2.intel.com) ([10.212.233.139]) by orsmga005-auth.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 27 Apr 2022 15:50:10 -0700 From: Mat Martineau To: netdev@vger.kernel.org Cc: Mat Martineau , davem@davemloft.net, kuba@kernel.org, pabeni@redhat.com, matthieu.baerts@tessares.net, mptcp@lists.linux.dev Subject: [PATCH net-next 2/6] mptcp: Add a member to mptcp_pm_data to track kernel vs userspace mode Date: Wed, 27 Apr 2022 15:49:58 -0700 Message-Id: <20220427225002.231996-3-mathew.j.martineau@linux.intel.com> X-Mailer: git-send-email 2.36.0 In-Reply-To: <20220427225002.231996-1-mathew.j.martineau@linux.intel.com> References: <20220427225002.231996-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. Acked-by: Paolo Abeni 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 4de90e618be3..f9f1bf4be95e 100644 --- a/net/mptcp/pm.c +++ b/net/mptcp/pm.c @@ -424,6 +424,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 0316605de559..f65395f04f81 100644 --- a/net/mptcp/protocol.h +++ b/net/mptcp/protocol.h @@ -184,6 +184,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 @@ -212,6 +220,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.36.0 From nobody Thu Sep 18 06:46:34 2025 Delivered-To: wpasupplicant.patchew@gmail.com Received: by 2002:a05:6a06:869:b0:4b8:7781:bd2f with SMTP id d41csp1319165pis; Wed, 27 Apr 2022 15:50:19 -0700 (PDT) X-Google-Smtp-Source: ABdhPJx8HZMASyn5ML0Se/OVk1C1WS+1pQ1u+R5PtB353XWwJntz+efQS7Ln0obkIXuWxz4CwuFs X-Received: by 2002:a63:82c1:0:b0:3ab:1add:62ea with SMTP id w184-20020a6382c1000000b003ab1add62eamr17675935pgd.535.1651099819309; Wed, 27 Apr 2022 15:50:19 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1651099819; cv=none; d=google.com; s=arc-20160816; b=x53AD19qvW1GQYGnkLxhQVCm3Ty/CxXbQZd6g2/fQ15leOxbDnsBxQceBk481bqe8/ NG3uPf4y8VSksFp44Znx9P0YoKXHQDG0VfjpXHYa0fP0FBbDOTFr6aheq6/M2Cnn9zSL XxQbLafcD/V6ZQrHQIvInIJyP6XEonEaAyrPJkTVpb9PigikRZGU+nuASdrhZuckvpb3 xqNXcDWtw8xS2/W7diksYTFR9tLwNEj2XYMPaTD1ufwaZRSv7T63T50e7PWovnEuvd0Z cUl4KganYKezseIzSVzvH5Alk+KtCjjEtYWq7xS/+yLACL8zAaSP2wYkq0YBgm9OWNvr Vy1w== 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:dkim-signature; bh=ftpitx1ip8T0w3ugrhL5O4jqftuPE4glxm6N58Sfpdk=; b=qv6kkfw90t9R7YtGlDs8K/MAzJXNR1JdVMMjAvB7jyPqdbdH6qxG0BpiriZ5A416Lc UM1mesruwqeYwxX5yAHL0xJnwTkGnzVNdvw+6X+BseHLwLnanIZoy4pEJisBjKVjYQaj 70dZzmjhN/6NDjM07oRT5AflrNp7PwVXBZHg37iysYhxLdgjzMebW3GMy+Bq4wIj0111 q/GqyH6yCBGQZMUzaNkjSLvX33Bs5WZ99kWtTDD3IVrdVXldrDSN1sIZniTXRNbi/vnD zJQ/T8iC95loIbUJ0HpYRD99TJTzX9t+Vi/VhPikJaV8SthglyuAFu4bto0pi3fNl3St BrNg== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@intel.com header.s=Intel header.b=P4HINOhh; spf=pass (google.com: domain of mptcp+bounces-4937-wpasupplicant.patchew=gmail.com@lists.linux.dev designates 139.178.88.99 as permitted sender) smtp.mailfrom="mptcp+bounces-4937-wpasupplicant.patchew=gmail.com@lists.linux.dev"; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=intel.com Return-Path: Received: from sv.mirrors.kernel.org (sv.mirrors.kernel.org. [139.178.88.99]) by mx.google.com with ESMTPS id h187-20020a6253c4000000b004fa3a8e002csi2630582pfb.227.2022.04.27.15.50.19 for (version=TLS1_2 cipher=ECDHE-ECDSA-AES128-GCM-SHA256 bits=128/128); Wed, 27 Apr 2022 15:50:19 -0700 (PDT) Received-SPF: pass (google.com: domain of mptcp+bounces-4937-wpasupplicant.patchew=gmail.com@lists.linux.dev designates 139.178.88.99 as permitted sender) client-ip=139.178.88.99; Authentication-Results: mx.google.com; dkim=pass header.i=@intel.com header.s=Intel header.b=P4HINOhh; spf=pass (google.com: domain of mptcp+bounces-4937-wpasupplicant.patchew=gmail.com@lists.linux.dev designates 139.178.88.99 as permitted sender) smtp.mailfrom="mptcp+bounces-4937-wpasupplicant.patchew=gmail.com@lists.linux.dev"; dmarc=pass (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 sv.mirrors.kernel.org (Postfix) with ESMTPS id AE9FD280C32 for ; Wed, 27 Apr 2022 22:50:18 +0000 (UTC) Received: from localhost.localdomain (localhost.localdomain [127.0.0.1]) by smtp.subspace.kernel.org (Postfix) with ESMTP id C536E806; Wed, 27 Apr 2022 22:50:15 +0000 (UTC) X-Original-To: mptcp@lists.linux.dev Received: from mga01.intel.com (mga01.intel.com [192.55.52.88]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id AFD6A7B for ; Wed, 27 Apr 2022 22:50:14 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1651099814; x=1682635814; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=nRkoJiY3YoNRchvFeRLPL3hyHfjEiXF7CewzQ6vUoUo=; b=P4HINOhhbkSdd/GS8Wvo1yxO8S4KVFcxN2845YTtLvanr/t7rfN1HBit zmIRGHwa400z+eAuSiclN21iFXe1YQaSqOtG9603XKxbJfRimr/d61vSQ 2n3freX0fIbOWuO9FidNDZMH5Ih1nsU6TuWuzADsLEFxqwcLosZDg2Ak+ 7moQiqNhq9ZRxxrZK9Gop63jljAhG37/y3rHQfEoD7nv3KDY/Bc581CsQ 2md2U9d7nEYQF2rP9o2HqP3uNE029wefONVcqcLqSBbTYE3xD5ReCX6RI gDs4w+dx0zculnnuH21PIumd+z6AP0hCk/mhwh1A/Ildays9yn30PaxLt w==; X-IronPort-AV: E=McAfee;i="6400,9594,10330"; a="291252892" X-IronPort-AV: E=Sophos;i="5.90,294,1643702400"; d="scan'208";a="291252892" Received: from orsmga005.jf.intel.com ([10.7.209.41]) by fmsmga101.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 27 Apr 2022 15:50:10 -0700 X-IronPort-AV: E=Sophos;i="5.90,294,1643702400"; d="scan'208";a="731049119" Received: from mjmartin-desk2.amr.corp.intel.com (HELO mjmartin-desk2.intel.com) ([10.212.233.139]) by orsmga005-auth.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 27 Apr 2022 15:50:10 -0700 From: Mat Martineau To: netdev@vger.kernel.org Cc: Mat Martineau , davem@davemloft.net, kuba@kernel.org, pabeni@redhat.com, matthieu.baerts@tessares.net, mptcp@lists.linux.dev, Kishen Maloor Subject: [PATCH net-next 3/6] mptcp: Bypass kernel PM when userspace PM is enabled Date: Wed, 27 Apr 2022 15:49:59 -0700 Message-Id: <20220427225002.231996-4-mathew.j.martineau@linux.intel.com> X-Mailer: git-send-email 2.36.0 In-Reply-To: <20220427225002.231996-1-mathew.j.martineau@linux.intel.com> References: <20220427225002.231996-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) Acked-by: Paolo Abeni Co-developed-by: Kishen Maloor Signed-off-by: Kishen Maloor 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 f9f1bf4be95e..5320270b3926 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 f65395f04f81..79606e9d3f2a 100644 --- a/net/mptcp/protocol.h +++ b/net/mptcp/protocol.h @@ -805,6 +805,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(const struct mptcp_sock *msk) +{ + return READ_ONCE(msk->pm.pm_type) =3D=3D MPTCP_PM_TYPE_USERSPACE; +} + static inline unsigned int mptcp_add_addr_len(int family, bool echo, bool = port) { u8 len =3D TCPOLEN_MPTCP_ADD_ADDR_BASE; --=20 2.36.0 From nobody Thu Sep 18 06:46:34 2025 Delivered-To: wpasupplicant.patchew@gmail.com Received: by 2002:a05:6a06:869:b0:4b8:7781:bd2f with SMTP id d41csp1319176pis; Wed, 27 Apr 2022 15:50:20 -0700 (PDT) X-Google-Smtp-Source: ABdhPJwbxWx2by6FmGBUK/3/D7KeSOuTyeGKKWB5aGDM5uvLrFOuqDzr8uNaAcfZiX0vZVuVlyLg X-Received: by 2002:a17:90b:4d0c:b0:1d9:aee3:fac1 with SMTP id mw12-20020a17090b4d0c00b001d9aee3fac1mr12413056pjb.15.1651099820790; Wed, 27 Apr 2022 15:50:20 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1651099820; cv=none; d=google.com; s=arc-20160816; b=YGOIzYg2a1ZWHMBr+Poa9SM1jETFWYy1S+VG675ZKMbF7/oQH/XWDllqnBSu3+QW4O a06D9tiw2jPXlrLJrowED04EABIc9FgxRuCQo3uk/uM5tIM+GTiNXgGgq83B3Hfspyqc AsYb+0zeY8Gq2gGCilcXtiComDPK61HPtp5vnHKQUiMHp3rUFH+aPQyWTpKF/qrmPCvf kPH/PozaiOmvhmf7JhkgJrIxbpQQlaYNojxT6quNKw83NXYEBgCmgeCXmaPZdV6VcU06 y7g6ftvGjDsKfFXeg3tJHM0g6QX4YMVrtX+RcuarkrO4c+KLOWmJjDKTZ7kywgHtB00F 8zkg== 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:dkim-signature; bh=xfq54P0MqBPdU5rUTdYO152YCdQlF7x1owIVsHVRf2Y=; b=CsVZ/dPwutYQfO/rFTHwZ5rjRyu08T1rHpaDGoQmTKwFc8Pm+Tl2i9h+Vn/BqlUXxB rJDxs1CPe9QLprd+rU73p/vxH4Bq7KZo8h8jRVg9LxxruRgt3PnG8Vqbjh3uTvbVyNd3 Cwk1aa9TMRL1WGxZgar8aROBpfgvvbgjj7MGwng2qAf5Kdxxt5gAUZzjEMsMH2tvJ6WW e/KqFtZT+JVGloyLAyW3r54G4eAucPB1vz3RM+F5mY9t8P11r7mV0ogpPFZUFfkk1hq5 uuR68JVXCutHSfy3N8uCgBA3JTRF5c5W+GNB8riZXjmX6tFu/RFBSAES/diG24HO2vqO /34g== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@intel.com header.s=Intel header.b=nzU6YTpg; spf=pass (google.com: domain of mptcp+bounces-4938-wpasupplicant.patchew=gmail.com@lists.linux.dev designates 2604:1380:45e3:2400::1 as permitted sender) smtp.mailfrom="mptcp+bounces-4938-wpasupplicant.patchew=gmail.com@lists.linux.dev"; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=intel.com Return-Path: Received: from sv.mirrors.kernel.org (sv.mirrors.kernel.org. [2604:1380:45e3:2400::1]) by mx.google.com with ESMTPS id x1-20020a17090a0bc100b001bd14e01fb4si6207333pjd.162.2022.04.27.15.50.20 for (version=TLS1_2 cipher=ECDHE-ECDSA-AES128-GCM-SHA256 bits=128/128); Wed, 27 Apr 2022 15:50:20 -0700 (PDT) Received-SPF: pass (google.com: domain of mptcp+bounces-4938-wpasupplicant.patchew=gmail.com@lists.linux.dev designates 2604:1380:45e3:2400::1 as permitted sender) client-ip=2604:1380:45e3:2400::1; Authentication-Results: mx.google.com; dkim=pass header.i=@intel.com header.s=Intel header.b=nzU6YTpg; spf=pass (google.com: domain of mptcp+bounces-4938-wpasupplicant.patchew=gmail.com@lists.linux.dev designates 2604:1380:45e3:2400::1 as permitted sender) smtp.mailfrom="mptcp+bounces-4938-wpasupplicant.patchew=gmail.com@lists.linux.dev"; dmarc=pass (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 sv.mirrors.kernel.org (Postfix) with ESMTPS id 34912280C3D for ; Wed, 27 Apr 2022 22:50:20 +0000 (UTC) Received: from localhost.localdomain (localhost.localdomain [127.0.0.1]) by smtp.subspace.kernel.org (Postfix) with ESMTP id 246997F8; Wed, 27 Apr 2022 22:50:16 +0000 (UTC) X-Original-To: mptcp@lists.linux.dev Received: from mga01.intel.com (mga01.intel.com [192.55.52.88]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id EA86A7FA for ; Wed, 27 Apr 2022 22:50:14 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1651099814; x=1682635814; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=og/Cz3rjL7z/H2kolHeUQ9uzXf19AIIeepdKPwATYKk=; b=nzU6YTpgxAZcsInzB5YOADuEj1vVSfICsvobB7mDGsicko9SazdsaCUk 7icBytc1n2XpwZRQ3MNitlQEAY4rqrZOtlbGz2J6aD9daY3WWh/g9XHpg mUOCmwDiEn4S1T6lZuonmEyNfMp29MeWKZCZEe66MZC6gNX1x4bfvG0ml 1SaLlZ51vTeceN++lQp5PZKH2WlvAfg8SWn9fouYyIO/UA4qjjPNn+AfE O7TQu7FuMHFskC+tQKs8PyOniFC0NJzJEpf8KgQNWn5oUZYV8nwCXLw9t 76X/AibrdzQJflhBzsQ6gHgBiu8WugsjfGqVXUDB5TIu7urqcsOWPfgnj g==; X-IronPort-AV: E=McAfee;i="6400,9594,10330"; a="291252893" X-IronPort-AV: E=Sophos;i="5.90,294,1643702400"; d="scan'208";a="291252893" Received: from orsmga005.jf.intel.com ([10.7.209.41]) by fmsmga101.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 27 Apr 2022 15:50:11 -0700 X-IronPort-AV: E=Sophos;i="5.90,294,1643702400"; d="scan'208";a="731049120" Received: from mjmartin-desk2.amr.corp.intel.com (HELO mjmartin-desk2.intel.com) ([10.212.233.139]) by orsmga005-auth.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 27 Apr 2022 15:50:10 -0700 From: Mat Martineau To: netdev@vger.kernel.org Cc: Mat Martineau , davem@davemloft.net, kuba@kernel.org, pabeni@redhat.com, matthieu.baerts@tessares.net, mptcp@lists.linux.dev Subject: [PATCH net-next 4/6] mptcp: Make kernel path manager check for userspace-managed sockets Date: Wed, 27 Apr 2022 15:50:00 -0700 Message-Id: <20220427225002.231996-5-mathew.j.martineau@linux.intel.com> X-Mailer: git-send-email 2.36.0 In-Reply-To: <20220427225002.231996-1-mathew.j.martineau@linux.intel.com> References: <20220427225002.231996-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) Acked-by: 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 bbbbfb421eec..473e5aa7baf4 100644 --- a/net/mptcp/pm_netlink.c +++ b/net/mptcp/pm_netlink.c @@ -1220,7 +1220,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); @@ -1363,6 +1364,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; @@ -1397,7 +1401,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); @@ -1504,9 +1508,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(); @@ -1779,7 +1785,7 @@ static int mptcp_nl_set_flags(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.36.0 From nobody Thu Sep 18 06:46:34 2025 Delivered-To: wpasupplicant.patchew@gmail.com Received: by 2002:a05:6a06:869:b0:4b8:7781:bd2f with SMTP id d41csp1319188pis; Wed, 27 Apr 2022 15:50:22 -0700 (PDT) X-Google-Smtp-Source: ABdhPJxDFGf0ABEqOlxsK8nd/4B2pEnsPzHzWvSP3DK1Go3FgSjYZZgvaDOcRPoPTCUOBdL7ETbs X-Received: by 2002:a05:6830:3488:b0:605:ca52:45f6 with SMTP id c8-20020a056830348800b00605ca5245f6mr3944688otu.338.1651099822354; Wed, 27 Apr 2022 15:50:22 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1651099822; cv=none; d=google.com; s=arc-20160816; b=bJrUHQllTtbEyZU47Tjg4hkplUifHoGUfe1D2OZWluzyo5BnV4ipF+kU8MKVm8+uIe wNNPBNW589uLQ2UYL4HSe9RxVVoAlaVAy247/ctFekmJRh5DJ9MjxNLKBL7JXj7odPvJ FblcbIyGLvG4n+0Q5kZOZe8NnZAmYrSTBvbj7oPTQUwAy2Mx99E3kEd7scMJfnUOHXYz 6aSI6YpeOd6oh/5G1fTfRMX0Nzs6duSSey0s0qlKDn0nZzuEvY8nU6oNuneitdlR7u/G yMxNhWog7v7DLPigdQw/PuozALx0zkr3m03LlvVFKS2OB3J5aDuFVObqKwDuD03b7Q5T HjHw== 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:dkim-signature; bh=lxmfNB5WWH8moE/le1VNBd+Mz3SKJWstWMdhAahqAtE=; b=dMu4fLIpisDOWhVVSsUCZDnt7av6wk9lwIweuaPwl2nws8O39VZAYyX5d5MTZJCImS 6fw/Sx9dY1lF6ghSqW4Mq3J7gb3K0CKgMmQQ1cbVHuhbWlMgQ7yw2zgtyU9g284mr1JJ Kbu0SKnMoXJNpYahO0gBlisz5/rGnC5hPfujoyUKf2WERHuNL8f/9SgN21LoPQlJEyzu wCK0a3nvDqLkGUY36NzRorJOenEr6ZHEjBqcoC+Y9eP5WhJdBE/l/UqfOTlPWGNwoSWv Z52lCIO2RhgnoevmmM13GtWegPgc5H6gix0IA4x5ga2+z9Ku1QZxgxoVMwzqifS+odQa 1GXA== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@intel.com header.s=Intel header.b="k3T/GlT5"; spf=pass (google.com: domain of mptcp+bounces-4939-wpasupplicant.patchew=gmail.com@lists.linux.dev designates 2604:1380:4040:4f00::1 as permitted sender) smtp.mailfrom="mptcp+bounces-4939-wpasupplicant.patchew=gmail.com@lists.linux.dev"; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=intel.com Return-Path: Received: from da.mirrors.kernel.org (da.mirrors.kernel.org. [2604:1380:4040:4f00::1]) by mx.google.com with ESMTPS id lx16-20020a0568704b9000b000e2095c518asi1655677oab.261.2022.04.27.15.50.22 for (version=TLS1_2 cipher=ECDHE-ECDSA-AES128-GCM-SHA256 bits=128/128); Wed, 27 Apr 2022 15:50:22 -0700 (PDT) Received-SPF: pass (google.com: domain of mptcp+bounces-4939-wpasupplicant.patchew=gmail.com@lists.linux.dev designates 2604:1380:4040:4f00::1 as permitted sender) client-ip=2604:1380:4040:4f00::1; Authentication-Results: mx.google.com; dkim=pass header.i=@intel.com header.s=Intel header.b="k3T/GlT5"; spf=pass (google.com: domain of mptcp+bounces-4939-wpasupplicant.patchew=gmail.com@lists.linux.dev designates 2604:1380:4040:4f00::1 as permitted sender) smtp.mailfrom="mptcp+bounces-4939-wpasupplicant.patchew=gmail.com@lists.linux.dev"; dmarc=pass (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 da.mirrors.kernel.org (Postfix) with ESMTPS id 0D2572E09D1 for ; Wed, 27 Apr 2022 22:50:22 +0000 (UTC) Received: from localhost.localdomain (localhost.localdomain [127.0.0.1]) by smtp.subspace.kernel.org (Postfix) with ESMTP id 002707FA; Wed, 27 Apr 2022 22:50:17 +0000 (UTC) X-Original-To: mptcp@lists.linux.dev Received: from mga01.intel.com (mga01.intel.com [192.55.52.88]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 03F63804 for ; Wed, 27 Apr 2022 22:50:14 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1651099815; x=1682635815; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=1dxqKj8jB6PC1cX01WR8FZdqdf7hC/30ayF8nyz7FU4=; b=k3T/GlT51EAGVabV+7pd5hHlkLw7rFvrNI2XcCAMQJXXIUnNS9q4CAvP HY4PHkr1c3bBw/kIXfpE3dbfJ5yCwjeofp2oqDZGcaCPn8cu1V6Ix2rqL 31NplBXmuqIlAU9rpcNjX+26wYgNSpmRA5p2YedojR1QrkTL/A79s3z5r YcUeOOCi2If3DrLuMf1N1yrrTwZpeznt3R4OeMWm+kPwS/EVw0moKrdyw hEBt9M699Aoy7NKnstjeNdFd2+u21N8u09ZPbfyRWJNB5mij4JJC45HNE jSyYTQle3KAcM96pPttfuEnrKt0rKEFSyjzu4vCvaI4VWcsjVpC0cpN+2 w==; X-IronPort-AV: E=McAfee;i="6400,9594,10330"; a="291252895" X-IronPort-AV: E=Sophos;i="5.90,294,1643702400"; d="scan'208";a="291252895" Received: from orsmga005.jf.intel.com ([10.7.209.41]) by fmsmga101.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 27 Apr 2022 15:50:11 -0700 X-IronPort-AV: E=Sophos;i="5.90,294,1643702400"; d="scan'208";a="731049122" Received: from mjmartin-desk2.amr.corp.intel.com (HELO mjmartin-desk2.intel.com) ([10.212.233.139]) by orsmga005-auth.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 27 Apr 2022 15:50:10 -0700 From: Mat Martineau To: netdev@vger.kernel.org Cc: Mat Martineau , davem@davemloft.net, kuba@kernel.org, pabeni@redhat.com, matthieu.baerts@tessares.net, mptcp@lists.linux.dev Subject: [PATCH net-next 5/6] mptcp: Add a per-namespace sysctl to set the default path manager type Date: Wed, 27 Apr 2022 15:50:01 -0700 Message-Id: <20220427225002.231996-6-mathew.j.martineau@linux.intel.com> X-Mailer: git-send-email 2.36.0 In-Reply-To: <20220427225002.231996-1-mathew.j.martineau@linux.intel.com> References: <20220427225002.231996-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) Acked-by: 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 5320270b3926..57f67578a47f 100644 --- a/net/mptcp/pm.c +++ b/net/mptcp/pm.c @@ -415,7 +415,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; @@ -424,17 +424,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 79606e9d3f2a..54d2b3b2d100 100644 --- a/net/mptcp/protocol.h +++ b/net/mptcp/protocol.h @@ -585,6 +585,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.36.0 From nobody Thu Sep 18 06:46:34 2025 Delivered-To: wpasupplicant.patchew@gmail.com Received: by 2002:a05:6a06:869:b0:4b8:7781:bd2f with SMTP id d41csp1319191pis; Wed, 27 Apr 2022 15:50:23 -0700 (PDT) X-Google-Smtp-Source: ABdhPJx54DBbD3bMrfajG7wtWXrs03K1msYrSKlPXVFwKhkpU8Pz0t7wOMoR4qg+8qgfcpCXni93 X-Received: by 2002:a05:6a00:22c7:b0:50d:605d:2d28 with SMTP id f7-20020a056a0022c700b0050d605d2d28mr10007311pfj.80.1651099823419; Wed, 27 Apr 2022 15:50:23 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1651099823; cv=none; d=google.com; s=arc-20160816; b=oYQ0zw7hUIpTlk94H/bS8XzPLTZS+JLKsRUmq5sY2w1PHFuMEtYnef8Wp1WogE3+ek mrLYhyA8wHaNgsGtQ1nS5ikK10SWlLX4qTCt57gyqagMAk7/zqLj8sg5SDvFCeQUNw+n a6qwWi0qJwGT/23gVGGHkJAThAhQPYj0dIS8/VNH/Gu959e2BX8KK7e+xkIVxlMJ6fTa aok/kXZifFmLZMpr0ySISgYIFZiuiJr4UuuagpbXuesPTQZrnxTVv2p+n4nGEaiE4X5W veNuuciyyAWO6VeItVlu3JdjSQheJwZNBYY2EJmaqjVNVODtjT+iOV59uW3p/FvfQl3U 7jQQ== 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:dkim-signature; bh=fId6CBye7IheV0HxVbygaglEMV6xOVyBXLoA2+jqMJU=; b=s+nCYzs3JcVVJ70p0wYIU3mTLSTNRDtFnQjRKPCpHYwuY0lAoycCR+eShyQCsFs5LR M0WezBtKJcB7q1UcH1o/SsI3paLi2WgFMy9JnUEUPSrZDNxLJGfWj9hFDN93iBwp9yBf iCyP41xMklKIj9VwfWE9M2pQ996gBVXZzSmQuqRbGALWaGnTdncPYJexjan2RjKeXu7n 4opK0ByTEpI8wcGjGEGx9744jpEIpOWL2zBaGI8Pl5lROvg2l79ULyCZHJ/cei/UQe0V wvwpF+oCAaZiN+0r94FX9fxJhKPU4hDyORSXf23k9mEl1Z2uPnSjYAvPPMsMQAxEEPwU XPYg== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@intel.com header.s=Intel header.b=YP9EIMWZ; spf=pass (google.com: domain of mptcp+bounces-4940-wpasupplicant.patchew=gmail.com@lists.linux.dev designates 2604:1380:45e3:2400::1 as permitted sender) smtp.mailfrom="mptcp+bounces-4940-wpasupplicant.patchew=gmail.com@lists.linux.dev"; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=intel.com Return-Path: Received: from sv.mirrors.kernel.org (sv.mirrors.kernel.org. [2604:1380:45e3:2400::1]) by mx.google.com with ESMTPS id a15-20020a631a4f000000b003816043ef6asi2692906pgm.351.2022.04.27.15.50.23 for (version=TLS1_2 cipher=ECDHE-ECDSA-AES128-GCM-SHA256 bits=128/128); Wed, 27 Apr 2022 15:50:23 -0700 (PDT) Received-SPF: pass (google.com: domain of mptcp+bounces-4940-wpasupplicant.patchew=gmail.com@lists.linux.dev designates 2604:1380:45e3:2400::1 as permitted sender) client-ip=2604:1380:45e3:2400::1; Authentication-Results: mx.google.com; dkim=pass header.i=@intel.com header.s=Intel header.b=YP9EIMWZ; spf=pass (google.com: domain of mptcp+bounces-4940-wpasupplicant.patchew=gmail.com@lists.linux.dev designates 2604:1380:45e3:2400::1 as permitted sender) smtp.mailfrom="mptcp+bounces-4940-wpasupplicant.patchew=gmail.com@lists.linux.dev"; dmarc=pass (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 sv.mirrors.kernel.org (Postfix) with ESMTPS id 1231F280BE5 for ; Wed, 27 Apr 2022 22:50:23 +0000 (UTC) Received: from localhost.localdomain (localhost.localdomain [127.0.0.1]) by smtp.subspace.kernel.org (Postfix) with ESMTP id 24BF4804; Wed, 27 Apr 2022 22:50:17 +0000 (UTC) X-Original-To: mptcp@lists.linux.dev Received: from mga01.intel.com (mga01.intel.com [192.55.52.88]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id D3A5B7B for ; Wed, 27 Apr 2022 22:50:15 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1651099815; x=1682635815; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=wmrL8d5kVZoi9GKjFaD/PhxeoocjNdjMMVWgnhRg444=; b=YP9EIMWZjNF6x4GKFqTt39fR26U+w6IO7fY8feazpgbL1ddORqeWrOhD 2ssv8tsV/tNDdWNy6I1VrB6n4/i+mgeSlVVPCbkPVoEQHSWpqWA+x3nR9 cxiQrrMqjMp1HRi0RrvOO1d7grMW1hQUptMuWQelhpV6vVTI0TTIJWDPT 0N6lQgY/bzIKxfx5UMYq7l22u2m3vrv85G9dee+hjqHyHApALpXShk3Y+ xs4Y3FA7MqnqkA4Mwxe2v5GmcQ48QBGijUM1EsoTe5zato+ZwUsx2u2yR Pf4fZyywQZ5wi7fzvMQTfuUxf7LxtQFTwe6rttpYUqQloiSkryPlGLSQz g==; X-IronPort-AV: E=McAfee;i="6400,9594,10330"; a="291252896" X-IronPort-AV: E=Sophos;i="5.90,294,1643702400"; d="scan'208";a="291252896" Received: from orsmga005.jf.intel.com ([10.7.209.41]) by fmsmga101.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 27 Apr 2022 15:50:11 -0700 X-IronPort-AV: E=Sophos;i="5.90,294,1643702400"; d="scan'208";a="731049123" Received: from mjmartin-desk2.amr.corp.intel.com (HELO mjmartin-desk2.intel.com) ([10.212.233.139]) by orsmga005-auth.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 27 Apr 2022 15:50:10 -0700 From: Mat Martineau To: netdev@vger.kernel.org Cc: Mat Martineau , davem@davemloft.net, kuba@kernel.org, pabeni@redhat.com, matthieu.baerts@tessares.net, mptcp@lists.linux.dev, Geliang Tang Subject: [PATCH net-next 6/6] selftests: mptcp: Add tests for userspace PM type Date: Wed, 27 Apr 2022 15:50:02 -0700 Message-Id: <20220427225002.231996-7-mathew.j.martineau@linux.intel.com> X-Mailer: git-send-email 2.36.0 In-Reply-To: <20220427225002.231996-1-mathew.j.martineau@linux.intel.com> References: <20220427225002.231996-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 Acked-by: Paolo Abeni Co-developed-by: Matthieu Baerts Signed-off-by: Matthieu Baerts Signed-off-by: Mat Martineau --- .../testing/selftests/net/mptcp/mptcp_join.sh | 66 +++++++++++++++++++ 1 file changed, 66 insertions(+) diff --git a/tools/testing/selftests/net/mptcp/mptcp_join.sh b/tools/testin= g/selftests/net/mptcp/mptcp_join.sh index e5c8fc2816fb..b27854f976f7 100755 --- a/tools/testing/selftests/net/mptcp/mptcp_join.sh +++ b/tools/testing/selftests/net/mptcp/mptcp_join.sh @@ -70,6 +70,7 @@ init_partial() 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 @@ -1611,6 +1612,13 @@ wait_attempt_fail() return 1 } =20 +set_userspace_pm() +{ + local ns=3D$1 + + ip netns exec $ns sysctl -q net.mptcp.pm_type=3D1 +} + subflows_tests() { if reset "no JOIN"; then @@ -2698,6 +2706,63 @@ fail_tests() fi } =20 +userspace_tests() +{ + # userspace pm type prevents add_addr + if reset "userspace pm type prevents add_addr"; then + set_userspace_pm $ns1 + pm_nl_set_limits $ns1 0 2 + pm_nl_set_limits $ns2 0 2 + pm_nl_add_endpoint $ns1 10.0.2.1 flags signal + run_tests $ns1 $ns2 10.0.1.1 + chk_join_nr 0 0 0 + chk_add_nr 0 0 + fi + + # userspace pm type rejects join + if reset "userspace pm type rejects join"; then + set_userspace_pm $ns1 + pm_nl_set_limits $ns1 1 1 + pm_nl_set_limits $ns2 1 1 + pm_nl_add_endpoint $ns2 10.0.3.2 flags subflow + run_tests $ns1 $ns2 10.0.1.1 + chk_join_nr 1 1 0 + fi + + # userspace pm type does not send join + if reset "userspace pm type does not send join"; then + set_userspace_pm $ns2 + pm_nl_set_limits $ns1 1 1 + pm_nl_set_limits $ns2 1 1 + pm_nl_add_endpoint $ns2 10.0.3.2 flags subflow + run_tests $ns1 $ns2 10.0.1.1 + chk_join_nr 0 0 0 + fi + + # userspace pm type prevents mp_prio + if reset "userspace pm type prevents mp_prio"; then + set_userspace_pm $ns1 + pm_nl_set_limits $ns1 1 1 + pm_nl_set_limits $ns2 1 1 + pm_nl_add_endpoint $ns2 10.0.3.2 flags subflow + run_tests $ns1 $ns2 10.0.1.1 0 0 0 slow backup + chk_join_nr 1 1 0 + chk_prio_nr 0 0 + fi + + # userspace pm type prevents rm_addr + if reset "userspace pm type prevents rm_addr"; then + set_userspace_pm $ns1 + set_userspace_pm $ns2 + pm_nl_set_limits $ns1 0 1 + pm_nl_set_limits $ns2 0 1 + pm_nl_add_endpoint $ns2 10.0.3.2 flags subflow + run_tests $ns1 $ns2 10.0.1.1 0 0 -1 slow + chk_join_nr 0 0 0 + chk_rm_nr 0 0 + fi +} + implicit_tests() { # userspace pm type prevents add_addr @@ -2767,6 +2832,7 @@ all_tests_sorted=3D( m@fullmesh_tests z@fastclose_tests F@fail_tests + u@userspace_tests I@implicit_tests ) =20 --=20 2.36.0