From nobody Fri May 3 20:12:39 2024 Delivered-To: wpasupplicant.patchew@gmail.com Received: by 2002:aa7:c50d:0:0:0:0:0 with SMTP id o13csp43831edq; Thu, 17 Mar 2022 16:05:01 -0700 (PDT) X-Google-Smtp-Source: ABdhPJz6TZzyOEG5mlTKvsiXc60qkz3uMgn+0GRRmKoGtZWAI9JHJWyOQmtkuUphugXSf4RJ8gOj X-Received: by 2002:a17:90b:17ca:b0:1bf:6188:cc00 with SMTP id me10-20020a17090b17ca00b001bf6188cc00mr18944527pjb.2.1647558300766; Thu, 17 Mar 2022 16:05:00 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1647558300; cv=none; d=google.com; s=arc-20160816; b=bBcTNTMYQjbJ9/lBwANZj1z+6QibpUNfr1NM6ybkKq7KYsD2YniB6O3DiC22KHCLIP q8zRTIW3TNQ07zQChlaGVt1aOQakkdJkjFUTDPm0foCCsV8XLq0li4RwGzAdTzuqCdTd MqjSv8GaXOya7cB5+9XM77l1fzZIcHRfe4EAGULGx7tZn7NpYtsbgZdcuQqtt8BI34ol IBtriFefsp3JUfjCGO+rzoNxOAsnryWrv/fHzZCiyT94G0yD2rqSrr5fRogJCXgKRgGa W2C9Iyt7HkcE5ZdfHg0AVxNM2hgfxOJOCn6qJwGfNytBQn8GULpU+GSg6Um6cKFSVi3S GNaw== 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:to:from:dkim-signature; bh=x6VdInSaXujPcQLarfX1wYqw08n4nV3QnPas10Oe6+M=; b=JlOHlCTqNbQz4e3tow9Knes12mlJXcvJKX3bmWJ0if/JQR5bndd+t/ySp7nqBcfPho MkM8ibD0wqkRSEg63aIzkLTLGhATiefIswa7uZQTVA+qbITxe7iMMWBYyNrJq962nWov jNMnSXV8npnC9Bn8yqo4AO91SDoaygYiOGKTRvu0azMf/oQePaS+RITdCBGNvIDICXCp CrSSQ56q7B0Oazna7qWFb9qRRea23jGwqZW5ftqM2ex/7e42ZvjQHoFNFfbOepttSM8p EKYywtoP5Ey6umlQBatZfpnVv2cdiehp9qhfLBpyc9op8gRz10zbPZgFUbjX+sjOGJ89 SqwQ== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@intel.com header.s=Intel header.b=BuvHUlI9; spf=pass (google.com: domain of mptcp+bounces-4295-wpasupplicant.patchew=gmail.com@lists.linux.dev designates 2604:1380:1000:8100::1 as permitted sender) smtp.mailfrom="mptcp+bounces-4295-wpasupplicant.patchew=gmail.com@lists.linux.dev"; dmarc=pass (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 k7-20020aa78207000000b004f70ca532afsi5749715pfi.313.2022.03.17.16.05.00 for (version=TLS1_2 cipher=ECDHE-ECDSA-AES128-GCM-SHA256 bits=128/128); Thu, 17 Mar 2022 16:05:00 -0700 (PDT) Received-SPF: pass (google.com: domain of mptcp+bounces-4295-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; dkim=pass header.i=@intel.com header.s=Intel header.b=BuvHUlI9; spf=pass (google.com: domain of mptcp+bounces-4295-wpasupplicant.patchew=gmail.com@lists.linux.dev designates 2604:1380:1000:8100::1 as permitted sender) smtp.mailfrom="mptcp+bounces-4295-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 sjc.edge.kernel.org (Postfix) with ESMTPS id 720D73E0380 for ; Thu, 17 Mar 2022 23:05:00 +0000 (UTC) Received: from localhost.localdomain (localhost.localdomain [127.0.0.1]) by smtp.subspace.kernel.org (Postfix) with ESMTP id 513914C67; Thu, 17 Mar 2022 23:04:59 +0000 (UTC) X-Original-To: mptcp@lists.linux.dev Received: from mga14.intel.com (mga14.intel.com [192.55.52.115]) (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 070DC4ABB for ; Thu, 17 Mar 2022 23:04:57 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1647558298; x=1679094298; h=from:to:subject:date:message-id:in-reply-to:references: mime-version:content-transfer-encoding; bh=zoCHlFy6whInm7pnatDbZ4m89OJoHZwGhKN+62mhcPw=; b=BuvHUlI9k/H/BvV5erbqCYtzBQfSTcTvb34g/zNySSKQCZ++IB4MAWtn 3E0lkOjBupNxFJv5TngYxsrkQDeHd70LUB94CZe1Pizk/apmINSmuVOcV 09PS+MPBXieU9txuY3phGD/TIy7uacvW70rAqMdv/aixo1OECN1s/Pv9+ 6T5eMaYSUw+38GZS3TbABg3EFsz8860SP3pjji/tcYvPn0mDEfPdeLKz3 Y4x72R4IhYC43TErDoAU/EDl44xvYjLPm9mffJU1y+tt4kvyeXK3tMBrQ sPzOIS3nUrdCNSgq/nhYDcjqIZJj6P8t4jaxagDZwQVO8DG6xTvbiOJi9 A==; X-IronPort-AV: E=McAfee;i="6200,9189,10289"; a="257189949" X-IronPort-AV: E=Sophos;i="5.90,190,1643702400"; d="scan'208";a="257189949" Received: from orsmga003.jf.intel.com ([10.7.209.27]) by fmsmga103.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 17 Mar 2022 16:04:55 -0700 X-IronPort-AV: E=Sophos;i="5.90,190,1643702400"; d="scan'208";a="499015051" Received: from otc-tsn-4.jf.intel.com ([10.23.153.135]) by orsmga003-auth.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 17 Mar 2022 16:04:55 -0700 From: Kishen Maloor To: kishen.maloor@intel.com, mptcp@lists.linux.dev Subject: [PATCH mptcp-next v8 1/6] Squash-to: mptcp: Bypass kernel PM when userspace PM is enabled Date: Thu, 17 Mar 2022 19:04:44 -0400 Message-Id: <20220317230449.763778-2-kishen.maloor@intel.com> X-Mailer: git-send-email 2.31.1 In-Reply-To: <20220317230449.763778-1-kishen.maloor@intel.com> References: <20220317230449.763778-1-kishen.maloor@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" Signed-off-by: Kishen Maloor --- net/mptcp/protocol.h | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/net/mptcp/protocol.h b/net/mptcp/protocol.h index c8bada4537e2..3ef5bee66bcd 100644 --- a/net/mptcp/protocol.h +++ b/net/mptcp/protocol.h @@ -803,9 +803,9 @@ static inline bool mptcp_pm_should_rm_signal(struct mpt= cp_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) +static inline bool mptcp_pm_is_userspace(const struct mptcp_sock *msk) { - return READ_ONCE(msk->pm.pm_type) !=3D MPTCP_PM_TYPE_KERNEL; + return READ_ONCE(msk->pm.pm_type) =3D=3D MPTCP_PM_TYPE_USERSPACE; } =20 static inline unsigned int mptcp_add_addr_len(int family, bool echo, bool = port) --=20 2.31.1 From nobody Fri May 3 20:12:39 2024 Delivered-To: wpasupplicant.patchew@gmail.com Received: by 2002:aa7:c50d:0:0:0:0:0 with SMTP id o13csp43850edq; Thu, 17 Mar 2022 16:05:02 -0700 (PDT) X-Google-Smtp-Source: ABdhPJwTgcIIPckNuthvNHOIUqijvjXRgeizDlSw7xVFiMqJabIWbscVO3t66zMN2HMZUzwugL2F X-Received: by 2002:a2e:8603:0:b0:23a:6193:e2e2 with SMTP id a3-20020a2e8603000000b0023a6193e2e2mr4477316lji.333.1647558302644; Thu, 17 Mar 2022 16:05:02 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1647558302; cv=none; d=google.com; s=arc-20160816; b=I2/tuNVyx0Sqb8kiGgf1Xj2wd49swz4XBgc6GazxGCNY0yFEyRFPun/u6Kaq/oxMSm 7t3XibIzQHXRWTuiDF2VbsrqDzErbfcYXtIV7wyrl9pgcKTKikuMe/e9oj+I99lITYwe OUFqYgCjySaFHVxJBSeTI/+uZH4Jlx1R/t/uJCsmvdMVICgSn+3AoMT0kAMd0Lm5Md07 joqkH9PXl9qOGcJKhohcg6f0LOVNGrcOjji+tPRCUqSbmqvHsOOlot7q3MVxteDkWMe+ HzciqOl50af6h727p47FKhury/t4i0fgwh8/Y/Ta+lO53S2dZqWXC1MIjE8jMILE1HG+ 7YtQ== 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:to:from:dkim-signature; bh=G2caPj0o8viGRshv7vJ/K8GZ29MdnEhG4NFwAXTPVWI=; b=CX9tmfaqcsFiBsl/UPRs435P6nSUGNqaoD/Pdf+WEdv8PXLJqemBuivKhMTlO7VP70 y9rHBFGeKQe5+g1FPe09dfK65SxVy1id3jCRAoD1ZBgmWqwdPwUPW/2tlLE0oOwVMxHI ba3waRWTyLutYruOH7aWAUV2zj4wOuBxR8PZToDuedoO53uaJycL8vxJ7Q9bsLRo/TD7 35iv7ByjMcI6vZR7NEU27zEJOwLNmFOTFQl9F4vLnNv6Nmih7AmT5iisKotfSfc0DAff q6qH4UBDa+r5Q0QPf6P1QEiZLaG0AFAp0sN1eghBfPmJgCVvOJ8nZqXA9PkxIA6rdb// fN2w== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@intel.com header.s=Intel header.b="E2V9/4/N"; spf=pass (google.com: domain of mptcp+bounces-4296-wpasupplicant.patchew=gmail.com@lists.linux.dev designates 147.75.197.195 as permitted sender) smtp.mailfrom="mptcp+bounces-4296-wpasupplicant.patchew=gmail.com@lists.linux.dev"; dmarc=pass (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 cf18-20020a056512281200b0044857828d7dsi5238113lfb.165.2022.03.17.16.05.02 for (version=TLS1_2 cipher=ECDHE-ECDSA-AES128-GCM-SHA256 bits=128/128); Thu, 17 Mar 2022 16:05:02 -0700 (PDT) Received-SPF: pass (google.com: domain of mptcp+bounces-4296-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; dkim=pass header.i=@intel.com header.s=Intel header.b="E2V9/4/N"; spf=pass (google.com: domain of mptcp+bounces-4296-wpasupplicant.patchew=gmail.com@lists.linux.dev designates 147.75.197.195 as permitted sender) smtp.mailfrom="mptcp+bounces-4296-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 ewr.edge.kernel.org (Postfix) with ESMTPS id 047381C0D08 for ; Thu, 17 Mar 2022 23:05:02 +0000 (UTC) Received: from localhost.localdomain (localhost.localdomain [127.0.0.1]) by smtp.subspace.kernel.org (Postfix) with ESMTP id 33F6A4C69; Thu, 17 Mar 2022 23:05:00 +0000 (UTC) X-Original-To: mptcp@lists.linux.dev Received: from mga14.intel.com (mga14.intel.com [192.55.52.115]) (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 8108D4C64 for ; Thu, 17 Mar 2022 23:04:58 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1647558298; x=1679094298; h=from:to:subject:date:message-id:in-reply-to:references: mime-version:content-transfer-encoding; bh=/pBLACmcmwsc2zcau6Nts7S9fI0mNb4ija9uEq6QE2g=; b=E2V9/4/NBH5LPqa7ExApVsS5azSPJVG9uxocsWl6Wc5agZSuAqZ3HH1r MSBSVyqjF020oxUONPpMtCMVXkG0JyRmiRqZje6eC7oLagiRdGbddGy2i KtgDwowQ6kByzbVZjFkBtjLXfXOYjeUjdrlORFA4Z+3J21+kLoO8/V0Ay KS5lgQKl5wX28M7rOi/wC2ByZSA+Tmxkx7N/pDUtz/IrBA2H4dsOhQVL5 cFgtzv1yyaJvednrdM7qWQBGIV4xgBaLz4X0AXf1AmyG8nANwzNGOaOIo 914wT8Rc8i1QlNjyDGyj7L8sxJBE3wlQFR7gAKZ93OlHOJQTFsYzOwkrS g==; X-IronPort-AV: E=McAfee;i="6200,9189,10289"; a="257189950" X-IronPort-AV: E=Sophos;i="5.90,190,1643702400"; d="scan'208";a="257189950" Received: from orsmga003.jf.intel.com ([10.7.209.27]) by fmsmga103.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 17 Mar 2022 16:04:56 -0700 X-IronPort-AV: E=Sophos;i="5.90,190,1643702400"; d="scan'208";a="499015054" Received: from otc-tsn-4.jf.intel.com ([10.23.153.135]) by orsmga003-auth.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 17 Mar 2022 16:04:55 -0700 From: Kishen Maloor To: kishen.maloor@intel.com, mptcp@lists.linux.dev Subject: [PATCH mptcp-next v8 2/6] mptcp: bypass in-kernel PM restrictions for non-kernel PMs Date: Thu, 17 Mar 2022 19:04:45 -0400 Message-Id: <20220317230449.763778-3-kishen.maloor@intel.com> X-Mailer: git-send-email 2.31.1 In-Reply-To: <20220317230449.763778-1-kishen.maloor@intel.com> References: <20220317230449.763778-1-kishen.maloor@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" Current limits on the # of addresses/subflows must apply only to in-kernel PM managed sockets. Thus this change removes such restrictions on connections overseen by non-kernel (e.g. userspace) PMs. This change also ensures that the kernel does not record stats inside struct mptcp_pm_data updated along kernel code paths when exercised via non-kernel PMs. Additionally, address announcements are acknolwedged and subflow requests are honored only when it's deemed that a userspace path manager is active at the time. Signed-off-by: Kishen Maloor --- net/mptcp/pm.c | 15 +++++++++++++-- net/mptcp/pm_netlink.c | 10 ++++++++++ net/mptcp/protocol.h | 6 ++++++ net/mptcp/subflow.c | 4 +++- 4 files changed, 32 insertions(+), 3 deletions(-) diff --git a/net/mptcp/pm.c b/net/mptcp/pm.c index d0d31d5c198a..f9a12e6f4b4e 100644 --- a/net/mptcp/pm.c +++ b/net/mptcp/pm.c @@ -87,6 +87,9 @@ bool mptcp_pm_allow_new_subflow(struct mptcp_sock *msk) unsigned int subflows_max; int ret =3D 0; =20 + if (mptcp_pm_is_userspace(msk)) + return mptcp_userspace_pm_active(msk); + subflows_max =3D mptcp_pm_get_subflows_max(msk); =20 pr_debug("msk=3D%p subflows=3D%d max=3D%d allow=3D%d", msk, pm->subflows, @@ -179,7 +182,8 @@ void mptcp_pm_subflow_check_next(struct mptcp_sock *msk= , const struct sock *ssk, bool update_subflows; =20 update_subflows =3D (ssk->sk_state =3D=3D TCP_CLOSE) && - (subflow->request_join || subflow->mp_join); + (subflow->request_join || subflow->mp_join) && + mptcp_pm_is_kernel(msk); if (!READ_ONCE(pm->work_pending) && !update_subflows) return; =20 @@ -208,7 +212,14 @@ void mptcp_pm_add_addr_received(struct mptcp_sock *msk, =20 spin_lock_bh(&pm->lock); =20 - if (!READ_ONCE(pm->accept_addr) || mptcp_pm_is_userspace(msk)) { + if (mptcp_pm_is_userspace(msk)) { + if (mptcp_userspace_pm_active(msk)) { + mptcp_pm_announce_addr(msk, addr, true); + mptcp_pm_add_addr_send_ack(msk); + } else { + __MPTCP_INC_STATS(sock_net((struct sock *)msk), MPTCP_MIB_ADDADDRDROP); + } + } else if (!READ_ONCE(pm->accept_addr)) { 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/pm_netlink.c b/net/mptcp/pm_netlink.c index c1f4befb1e45..94d2bbb14eba 100644 --- a/net/mptcp/pm_netlink.c +++ b/net/mptcp/pm_netlink.c @@ -796,6 +796,9 @@ static void mptcp_pm_nl_rm_addr_or_subflow(struct mptcp= _sock *msk, if (!removed) continue; =20 + if (!mptcp_pm_is_kernel(msk)) + continue; + if (rm_type =3D=3D MPTCP_MIB_RMADDR) { msk->pm.add_addr_accepted--; WRITE_ONCE(msk->pm.accept_addr, true); @@ -1846,6 +1849,13 @@ static void mptcp_nl_mcast_send(struct net *net, str= uct sk_buff *nlskb, gfp_t gf nlskb, 0, MPTCP_PM_EV_GRP_OFFSET, gfp); } =20 +bool mptcp_userspace_pm_active(const struct mptcp_sock *msk) +{ + return genl_has_listeners(&mptcp_genl_family, + sock_net((const struct sock *)msk), + MPTCP_PM_EV_GRP_OFFSET); +} + static int mptcp_event_add_subflow(struct sk_buff *skb, const struct sock = *ssk) { const struct inet_sock *issk =3D inet_sk(ssk); diff --git a/net/mptcp/protocol.h b/net/mptcp/protocol.h index 3ef5bee66bcd..37ea34f9b599 100644 --- a/net/mptcp/protocol.h +++ b/net/mptcp/protocol.h @@ -781,6 +781,7 @@ void mptcp_event(enum mptcp_event_type type, const stru= ct mptcp_sock *msk, const struct sock *ssk, gfp_t gfp); void mptcp_event_addr_announced(const struct mptcp_sock *msk, const struct= mptcp_addr_info *info); void mptcp_event_addr_removed(const struct mptcp_sock *msk, u8 id); +bool mptcp_userspace_pm_active(const struct mptcp_sock *msk); =20 static inline bool mptcp_pm_should_add_signal(struct mptcp_sock *msk) { @@ -808,6 +809,11 @@ 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; } =20 +static inline bool mptcp_pm_is_kernel(const struct mptcp_sock *msk) +{ + return READ_ONCE(msk->pm.pm_type) =3D=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; diff --git a/net/mptcp/subflow.c b/net/mptcp/subflow.c index 30ffb00661bb..e10a1cc916d6 100644 --- a/net/mptcp/subflow.c +++ b/net/mptcp/subflow.c @@ -62,7 +62,9 @@ static void subflow_generate_hmac(u64 key1, u64 key2, u32= nonce1, u32 nonce2, static bool mptcp_can_accept_new_subflow(const struct mptcp_sock *msk) { return mptcp_is_fully_established((void *)msk) && - READ_ONCE(msk->pm.accept_subflow); + ((mptcp_pm_is_userspace(msk) && + mptcp_userspace_pm_active(msk)) || + READ_ONCE(msk->pm.accept_subflow)); } =20 /* validate received token and create truncated hmac and nonce for SYN-ACK= */ --=20 2.31.1 From nobody Fri May 3 20:12:39 2024 Delivered-To: wpasupplicant.patchew@gmail.com Received: by 2002:aa7:c50d:0:0:0:0:0 with SMTP id o13csp43859edq; Thu, 17 Mar 2022 16:05:04 -0700 (PDT) X-Google-Smtp-Source: ABdhPJx1vkpUkO5FG/KdmgIKtkA/m8r3Z93fSauAuF9ifMbppHGbKl1A2VnE6HW0Z0IBlXDSvZqp X-Received: by 2002:a05:6a00:17a5:b0:4f6:f3fb:b6d8 with SMTP id s37-20020a056a0017a500b004f6f3fbb6d8mr7259695pfg.75.1647558304139; Thu, 17 Mar 2022 16:05:04 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1647558304; cv=none; d=google.com; s=arc-20160816; b=zNXFHTlt61hXcmKPU5VPqNecJa2UwEzqN1O6SsT4CgOF5PYHpJCu0n8Lsxu33O6IfC xOfRzA83J/jIEhNtWWSf8mKXgnKCm4+Q1RTYWcE2Oau9sGeTbAUMAMM93hlgoquhvbej /mRvk9iTxmFnbO4D17mxsStdjGfFC28yePMUcwi13YiNMZKfk9g9o1NxpBD8p0MvEdeO qFyKA9EoJ8HZKrBwKJZJjb/eqHZN00yGbH2K8H3/VMn7Pe8haNktuQQy9Ny6QkyJf5WJ +jYMtzrIk5P6IliaW42aZ1YgRdnYPQnlB+HhdwQj5BzB9QnH5Gd07toyPP98Zpi2Zx5S VF/w== 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:to:from:dkim-signature; bh=M/Af/FmdflXAx3YYFj1hsTV2yQzdXGDhc7YhwADfC4M=; b=ARUP2hFndaq2ytlHQSUGpmB1OgMCaRfJ5U5dHFEKjHGvp2Dcvh/AmM9nfjOOdHRUrQ FhShguSDz4DDlYn+emAS+C+pCKSxyguR2C9OHtpYODVMSmbjNsaIbhPTt1750HnBDKvg JMTL/jzA6yHBTr/80JSjnQyCO07rEIK01l2muljJGiWOOmkpd2U9DuEKqDSenuJFfDyY vR6ajN6uGLUHzqSzrcNZCi1Qf1HN95McbByAwFvl6cg7OO52suMY12dFT+k3KwS3lqrs R6PorgJQgyUcGU/huXkq6RRC57w8k7eQD65SR8dpk1+6W4EHyqPWx4rOqnscaiylTQhT cP1A== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@intel.com header.s=Intel header.b=GJgzUsV1; spf=pass (google.com: domain of mptcp+bounces-4297-wpasupplicant.patchew=gmail.com@lists.linux.dev designates 147.75.69.165 as permitted sender) smtp.mailfrom="mptcp+bounces-4297-wpasupplicant.patchew=gmail.com@lists.linux.dev"; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=intel.com Return-Path: Received: from sjc.edge.kernel.org (sjc.edge.kernel.org. [147.75.69.165]) by mx.google.com with ESMTPS id c12-20020a056a00248c00b004f7282c437dsi7181930pfv.50.2022.03.17.16.05.03 for (version=TLS1_2 cipher=ECDHE-ECDSA-AES128-GCM-SHA256 bits=128/128); Thu, 17 Mar 2022 16:05:04 -0700 (PDT) Received-SPF: pass (google.com: domain of mptcp+bounces-4297-wpasupplicant.patchew=gmail.com@lists.linux.dev designates 147.75.69.165 as permitted sender) client-ip=147.75.69.165; Authentication-Results: mx.google.com; dkim=pass header.i=@intel.com header.s=Intel header.b=GJgzUsV1; spf=pass (google.com: domain of mptcp+bounces-4297-wpasupplicant.patchew=gmail.com@lists.linux.dev designates 147.75.69.165 as permitted sender) smtp.mailfrom="mptcp+bounces-4297-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 sjc.edge.kernel.org (Postfix) with ESMTPS id BC4393E1027 for ; Thu, 17 Mar 2022 23:05:02 +0000 (UTC) Received: from localhost.localdomain (localhost.localdomain [127.0.0.1]) by smtp.subspace.kernel.org (Postfix) with ESMTP id 91F544C62; Thu, 17 Mar 2022 23:05:00 +0000 (UTC) X-Original-To: mptcp@lists.linux.dev Received: from mga14.intel.com (mga14.intel.com [192.55.52.115]) (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 562154C68 for ; Thu, 17 Mar 2022 23:04:59 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1647558299; x=1679094299; h=from:to:subject:date:message-id:in-reply-to:references: mime-version:content-transfer-encoding; bh=GiJRkzBbiNXfy3KcKC95cXuHIvtFfxdO0CETTIUQJGY=; b=GJgzUsV1VgMTsiCW1TmgimlIwtIUltb56jqKbX1ADdtIrWuAABOXdUiF awnURt98ZBFXRjNBrUq3xDo92pr5Jv2hMKjGXFLd+HJEv9s46vXFmh8Qm btS/k3S0ByDX3gsPfm24PDp4GHK2ggztXkjg8CsmiVHM9XzPlFCBluxCa ayMlHOLAWM9q6VDVC13dttuUAR9KVF1WmohiDNtEGMjTbO0VYBdoIpxzb 3f3bJHn7CKXKipOEJqURk1/3LzHsr5QXwkcb3DhgitaMfq8cTePZw5pUM 2YZRXhqAoK3Buf2CRvBjtrKqUvyKqZJODADjvtxoe3JrejiT3uXQjGbXh w==; X-IronPort-AV: E=McAfee;i="6200,9189,10289"; a="257189951" X-IronPort-AV: E=Sophos;i="5.90,190,1643702400"; d="scan'208";a="257189951" Received: from orsmga003.jf.intel.com ([10.7.209.27]) by fmsmga103.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 17 Mar 2022 16:04:56 -0700 X-IronPort-AV: E=Sophos;i="5.90,190,1643702400"; d="scan'208";a="499015057" Received: from otc-tsn-4.jf.intel.com ([10.23.153.135]) by orsmga003-auth.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 17 Mar 2022 16:04:55 -0700 From: Kishen Maloor To: kishen.maloor@intel.com, mptcp@lists.linux.dev Subject: [PATCH mptcp-next v8 3/6] mptcp: store remote id from MP_JOIN SYN/ACK in local ctx Date: Thu, 17 Mar 2022 19:04:46 -0400 Message-Id: <20220317230449.763778-4-kishen.maloor@intel.com> X-Mailer: git-send-email 2.31.1 In-Reply-To: <20220317230449.763778-1-kishen.maloor@intel.com> References: <20220317230449.763778-1-kishen.maloor@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" This change reads the addr id assigned to the remote endpoint of a subflow from the MP_JOIN SYN/ACK message and stores it in the related subflow context. The remote id was not being captured prior to this change, and will now provide a consistent view of remote endpoints and their ids as seen through netlink events. Signed-off-by: Kishen Maloor --- net/mptcp/subflow.c | 1 + 1 file changed, 1 insertion(+) diff --git a/net/mptcp/subflow.c b/net/mptcp/subflow.c index e10a1cc916d6..43d6cc9be512 100644 --- a/net/mptcp/subflow.c +++ b/net/mptcp/subflow.c @@ -443,6 +443,7 @@ static void subflow_finish_connect(struct sock *sk, con= st struct sk_buff *skb) subflow->backup =3D mp_opt.backup; subflow->thmac =3D mp_opt.thmac; subflow->remote_nonce =3D mp_opt.nonce; + subflow->remote_id =3D mp_opt.join_id; pr_debug("subflow=3D%p, thmac=3D%llu, remote_nonce=3D%u backup=3D%d", subflow, subflow->thmac, subflow->remote_nonce, subflow->backup); --=20 2.31.1 From nobody Fri May 3 20:12:39 2024 Delivered-To: wpasupplicant.patchew@gmail.com Received: by 2002:aa7:c50d:0:0:0:0:0 with SMTP id o13csp43868edq; Thu, 17 Mar 2022 16:05:06 -0700 (PDT) X-Google-Smtp-Source: ABdhPJzU5so3/hGJPL4Ld7FuJmGCMoRNueg+CxqNDir23fLR31osVGA8EnZ6qw+ZfPwrg5wUHiyO X-Received: by 2002:a05:6512:4cf:b0:448:4bbd:3762 with SMTP id w15-20020a05651204cf00b004484bbd3762mr4136482lfq.441.1647558306261; Thu, 17 Mar 2022 16:05:06 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1647558306; cv=none; d=google.com; s=arc-20160816; b=UXhbTwAD6UQpm/b+wc0paBL5tXSQ/nL1075vtUYp6JeZ8VXUXkq7H4yOlXO4KZBuLP Bl8JsQ4PK9eyX08BDmZdpYO47JG2lOztNy3qdR40vYmZzws3Th3DAxuSZqHOhTL8UVaB 0sQhA8g+as0VazJIN7yAAtxJWwHkM9wW3oNl7UdHcZxzhGMjdbmxpq1AWv83je+Axwe4 WE+jVRuGyaN69y9Gdj5UT86LzUiekbaXjqLYkdGHD57LpqWeuGK/wB9IftOmUwv1QQ9k 8coNq9Gx4fO6fwnWII7ssb9hJvAJbc+biprEx2ZXjFQxGQ5sjRamtI0eGBCiagJC/vPt eHVw== 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:to:from:dkim-signature; bh=xPjEkNTheJrQhFtImydgiei3wzHKSMmMt7KzWTjN5k8=; b=G4u9jmaylS3rjVlPIFGJxsTRVyrAVbyre1D1ODi98cqqAV57trdxUaMrCphY7Czbrm 5FF9GgsEGU3ERL4+F+rJC8B7QA07aGkHqqxO669c26phvxrn/7B1MvX2n/q6tnPUbzX0 zyOjOSdCKtc+gvPy3bdId91uHk5ZdbgNHa5MA16OMjFmhc9y+ID2CX1ocUIUueDiMeQj 4/OWl5lA1BlYcfberg2oPwPQ0/lrae/tybSbdMFQeTEFcZMJezcQPILQVHZ+fVxee9Bu ZvMFDQ/zckEP12bVwbOfH+ZLCnMpg3RcfmNwTYVD4IhvqVuoprx320VJAV1JoV/175s4 Yq2A== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@intel.com header.s=Intel header.b=d5PrrkI9; spf=pass (google.com: domain of mptcp+bounces-4299-wpasupplicant.patchew=gmail.com@lists.linux.dev designates 147.75.197.195 as permitted sender) smtp.mailfrom="mptcp+bounces-4299-wpasupplicant.patchew=gmail.com@lists.linux.dev"; dmarc=pass (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 f21-20020a2e9195000000b0024952f7bb65si347142ljg.192.2022.03.17.16.05.05 for (version=TLS1_2 cipher=ECDHE-ECDSA-AES128-GCM-SHA256 bits=128/128); Thu, 17 Mar 2022 16:05:06 -0700 (PDT) Received-SPF: pass (google.com: domain of mptcp+bounces-4299-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; dkim=pass header.i=@intel.com header.s=Intel header.b=d5PrrkI9; spf=pass (google.com: domain of mptcp+bounces-4299-wpasupplicant.patchew=gmail.com@lists.linux.dev designates 147.75.197.195 as permitted sender) smtp.mailfrom="mptcp+bounces-4299-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 ewr.edge.kernel.org (Postfix) with ESMTPS id 147C91C0F06 for ; Thu, 17 Mar 2022 23:05:05 +0000 (UTC) Received: from localhost.localdomain (localhost.localdomain [127.0.0.1]) by smtp.subspace.kernel.org (Postfix) with ESMTP id 834034C64; Thu, 17 Mar 2022 23:05:01 +0000 (UTC) X-Original-To: mptcp@lists.linux.dev Received: from mga14.intel.com (mga14.intel.com [192.55.52.115]) (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 AAF644ABB for ; Thu, 17 Mar 2022 23:04:59 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1647558299; x=1679094299; h=from:to:subject:date:message-id:in-reply-to:references: mime-version:content-transfer-encoding; bh=PMSt6E4djoaO+hheCvp1rkkRSjGJx9o23nwmdBhHzYM=; b=d5PrrkI9HRRYj9Et6rztVlLbHiLCV1GpWt8BsopiMsLf9cl0YzQ5vMo4 eGtR+EexDR1T+88Bfkh8iBnBXbiI0o6bLKHYABGv3ysYHbHau8K52kLWd 9zS3nPjpFEbPq7VM9Xy4nh7xAN7hiZnolqpr63kTgyra2Es+A1CxNK0WL ooskqm+/cg+ueNo/gkrog4zaZuPJRzIWSSC0UGIBgvJVqqiLZXZn8UeqQ Bm7qZnNCQqxmFpE5ieEgLkFbNk7p6CDZMVrFZcO6ijq+IV5529Tf7cJ0h cztwK+ASn4XiEVF0ytbpKd7Tywy4rjJxueYLaP0T4vf0DHC7pomZqj702 A==; X-IronPort-AV: E=McAfee;i="6200,9189,10289"; a="257189953" X-IronPort-AV: E=Sophos;i="5.90,190,1643702400"; d="scan'208";a="257189953" Received: from orsmga003.jf.intel.com ([10.7.209.27]) by fmsmga103.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 17 Mar 2022 16:04:56 -0700 X-IronPort-AV: E=Sophos;i="5.90,190,1643702400"; d="scan'208";a="499015060" Received: from otc-tsn-4.jf.intel.com ([10.23.153.135]) by orsmga003-auth.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 17 Mar 2022 16:04:55 -0700 From: Kishen Maloor To: kishen.maloor@intel.com, mptcp@lists.linux.dev Subject: [PATCH mptcp-next v8 4/6] mptcp: reflect remote port (not 0) in ANNOUNCED events Date: Thu, 17 Mar 2022 19:04:47 -0400 Message-Id: <20220317230449.763778-5-kishen.maloor@intel.com> X-Mailer: git-send-email 2.31.1 In-Reply-To: <20220317230449.763778-1-kishen.maloor@intel.com> References: <20220317230449.763778-1-kishen.maloor@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" Per RFC 8684, if no port is specified in an ADD_ADDR message, MPTCP SHOULD attempt to connect to the specified address on the same port as the port that is already in use by the subflow on which the ADD_ADDR signal was sent. To facilitate that, this change reflects the specific remote port in use by that subflow in MPTCP_EVENT_ANNOUNCED events. Signed-off-by: Kishen Maloor --- net/mptcp/options.c | 2 +- net/mptcp/pm.c | 6 ++++-- net/mptcp/pm_netlink.c | 11 ++++++++--- net/mptcp/protocol.h | 4 ++-- 4 files changed, 15 insertions(+), 8 deletions(-) diff --git a/net/mptcp/options.c b/net/mptcp/options.c index 88f4ebbd6515..c9625fea3ef9 100644 --- a/net/mptcp/options.c +++ b/net/mptcp/options.c @@ -1133,7 +1133,7 @@ bool mptcp_incoming_options(struct sock *sk, struct s= k_buff *skb) if ((mp_opt.suboptions & OPTION_MPTCP_ADD_ADDR) && add_addr_hmac_valid(msk, &mp_opt)) { if (!mp_opt.echo) { - mptcp_pm_add_addr_received(msk, &mp_opt.addr); + mptcp_pm_add_addr_received(sk, &mp_opt.addr); MPTCP_INC_STATS(sock_net(sk), MPTCP_MIB_ADDADDR); } else { mptcp_pm_add_addr_echoed(msk, &mp_opt.addr); diff --git a/net/mptcp/pm.c b/net/mptcp/pm.c index f9a12e6f4b4e..56b3f29efdd9 100644 --- a/net/mptcp/pm.c +++ b/net/mptcp/pm.c @@ -200,15 +200,17 @@ void mptcp_pm_subflow_check_next(struct mptcp_sock *m= sk, const struct sock *ssk, spin_unlock_bh(&pm->lock); } =20 -void mptcp_pm_add_addr_received(struct mptcp_sock *msk, +void mptcp_pm_add_addr_received(const struct sock *ssk, const struct mptcp_addr_info *addr) { + struct mptcp_subflow_context *subflow =3D mptcp_subflow_ctx(ssk); + struct mptcp_sock *msk =3D mptcp_sk(subflow->conn); struct mptcp_pm_data *pm =3D &msk->pm; =20 pr_debug("msk=3D%p remote_id=3D%d accept=3D%d", msk, addr->id, READ_ONCE(pm->accept_addr)); =20 - mptcp_event_addr_announced(msk, addr); + mptcp_event_addr_announced(ssk, addr); =20 spin_lock_bh(&pm->lock); =20 diff --git a/net/mptcp/pm_netlink.c b/net/mptcp/pm_netlink.c index 94d2bbb14eba..8676aecc52a6 100644 --- a/net/mptcp/pm_netlink.c +++ b/net/mptcp/pm_netlink.c @@ -2010,10 +2010,12 @@ void mptcp_event_addr_removed(const struct mptcp_so= ck *msk, uint8_t id) kfree_skb(skb); } =20 -void mptcp_event_addr_announced(const struct mptcp_sock *msk, +void mptcp_event_addr_announced(const struct sock *ssk, const struct mptcp_addr_info *info) { - struct net *net =3D sock_net((const struct sock *)msk); + struct mptcp_subflow_context *subflow =3D mptcp_subflow_ctx(ssk); + struct mptcp_sock *msk =3D mptcp_sk(subflow->conn); + struct net *net =3D sock_net(ssk); struct nlmsghdr *nlh; struct sk_buff *skb; =20 @@ -2035,7 +2037,10 @@ void mptcp_event_addr_announced(const struct mptcp_s= ock *msk, if (nla_put_u8(skb, MPTCP_ATTR_REM_ID, info->id)) goto nla_put_failure; =20 - if (nla_put_be16(skb, MPTCP_ATTR_DPORT, info->port)) + if (nla_put_be16(skb, MPTCP_ATTR_DPORT, + info->port =3D=3D 0 ? + ((struct inet_sock *)inet_sk(ssk))->inet_dport : + info->port)) goto nla_put_failure; =20 switch (info->family) { diff --git a/net/mptcp/protocol.h b/net/mptcp/protocol.h index 37ea34f9b599..4047d081b119 100644 --- a/net/mptcp/protocol.h +++ b/net/mptcp/protocol.h @@ -750,7 +750,7 @@ void mptcp_pm_subflow_established(struct mptcp_sock *ms= k); bool mptcp_pm_nl_check_work_pending(struct mptcp_sock *msk); void mptcp_pm_subflow_check_next(struct mptcp_sock *msk, const struct sock= *ssk, const struct mptcp_subflow_context *subflow); -void mptcp_pm_add_addr_received(struct mptcp_sock *msk, +void mptcp_pm_add_addr_received(const struct sock *ssk, const struct mptcp_addr_info *addr); void mptcp_pm_add_addr_echoed(struct mptcp_sock *msk, const struct mptcp_addr_info *addr); @@ -779,7 +779,7 @@ int mptcp_pm_remove_subflow(struct mptcp_sock *msk, con= st struct mptcp_rm_list * =20 void mptcp_event(enum mptcp_event_type type, const struct mptcp_sock *msk, const struct sock *ssk, gfp_t gfp); -void mptcp_event_addr_announced(const struct mptcp_sock *msk, const struct= mptcp_addr_info *info); +void mptcp_event_addr_announced(const struct sock *ssk, const struct mptcp= _addr_info *info); void mptcp_event_addr_removed(const struct mptcp_sock *msk, u8 id); bool mptcp_userspace_pm_active(const struct mptcp_sock *msk); =20 --=20 2.31.1 From nobody Fri May 3 20:12:39 2024 Delivered-To: wpasupplicant.patchew@gmail.com Received: by 2002:aa7:c50d:0:0:0:0:0 with SMTP id o13csp43858edq; Thu, 17 Mar 2022 16:05:04 -0700 (PDT) X-Google-Smtp-Source: ABdhPJxtZ9F2LfADf6Y1kUI4w4/ZdEfFw6vM9vWfxiBZYd68sd2N4MEMNnhk2YjHL4N/ghn3YLgX X-Received: by 2002:a17:902:b941:b0:14d:af72:3f23 with SMTP id h1-20020a170902b94100b0014daf723f23mr7286536pls.6.1647558304143; Thu, 17 Mar 2022 16:05:04 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1647558304; cv=none; d=google.com; s=arc-20160816; b=OxBNzjPRqjOum6BuAUOXYAEw3Lf+9e7oZIP4Zig7XeafEjQ/NAI5P1LuTPPObgfQyw 8dmNq/wpBQ5/d7zic/P9jRideSogm+z0mDv62zRfoHzfSi/fzu0ZvBgNllJq2H/YfGy7 efZrnT9WCHRR2sIY+Wh03xnctPdgVhCS/i7Ngt8boNKbZbUHeOongaVCLN9kSlNnb23Y PN1lNNfHKEe2FoIzc/rgk9gsOqLknIsLnjpJDGTaFmsqqEtbUqyxKRzGs7JZRi35+oeg xT+5gV7q10JotaVIYU8DgJqVIY0yMY9P3t/GSoGOrbQo53dH1sdM01kRXLNKOv9UBwwg tErA== 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:to:from:dkim-signature; bh=BW3npWSNynY4BuGTXXPLYM5p/K/Z8RTuvS3XCo1whjk=; b=Bai7yLVMMo3lgBoFxOhbvGLZfIEn19gBEZg/+jHb/NS0H7OjhaKY0MnZRkdyrfaL+I b8DXWn8DpENkGMYnKKUh7uk8jRl/SF7j9Gdm43aR42RB+cx21ayaSGzyfkS4ri7olrP2 mSz8AmWy402cKy6fz8zacS9qnggro+ySkK18MlM3daRrmSsad3gnCcW063ElxFAKQfr+ y4/ddBJywh0XE6cl4eHE8d7iBfT/TB59R7iSGam0AeJZlblbNdrgEJA9A7EjxgsyI3mQ u8hpwPXrenqNxzX4a49OmxsBf+fnjq5fS5Yt2aM1rNO4BkBkf0mMRehs8Nt46xJ9X/la i6IA== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@intel.com header.s=Intel header.b=H85aLYko; spf=pass (google.com: domain of mptcp+bounces-4298-wpasupplicant.patchew=gmail.com@lists.linux.dev designates 2604:1380:1000:8100::1 as permitted sender) smtp.mailfrom="mptcp+bounces-4298-wpasupplicant.patchew=gmail.com@lists.linux.dev"; dmarc=pass (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 v4-20020a654604000000b003816043ef30si3680299pgq.293.2022.03.17.16.05.03 for (version=TLS1_2 cipher=ECDHE-ECDSA-AES128-GCM-SHA256 bits=128/128); Thu, 17 Mar 2022 16:05:04 -0700 (PDT) Received-SPF: pass (google.com: domain of mptcp+bounces-4298-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; dkim=pass header.i=@intel.com header.s=Intel header.b=H85aLYko; spf=pass (google.com: domain of mptcp+bounces-4298-wpasupplicant.patchew=gmail.com@lists.linux.dev designates 2604:1380:1000:8100::1 as permitted sender) smtp.mailfrom="mptcp+bounces-4298-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 sjc.edge.kernel.org (Postfix) with ESMTPS id A58DF3E1044 for ; Thu, 17 Mar 2022 23:05:03 +0000 (UTC) Received: from localhost.localdomain (localhost.localdomain [127.0.0.1]) by smtp.subspace.kernel.org (Postfix) with ESMTP id 7796D4C6A; Thu, 17 Mar 2022 23:05:01 +0000 (UTC) X-Original-To: mptcp@lists.linux.dev Received: from mga14.intel.com (mga14.intel.com [192.55.52.115]) (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 497224C64 for ; Thu, 17 Mar 2022 23:05:00 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1647558300; x=1679094300; h=from:to:subject:date:message-id:in-reply-to:references: mime-version:content-transfer-encoding; bh=/xPbAi1jCbfxHo9tJixyuRDjS5Ie944qB24/RGfadxA=; b=H85aLYkokgMcrKZ3IGMdIPcOLxnzfCyckwho83sIvhxJaR5exZT8QYAB sr3D+tDD8sVj1TS2jb0sH98pnAOmuuOaCJdjf5tMOzjMCi9Ti8llTHNN0 sk/b7l7sJVWZiNv3kj6HqeDbVMweiN1te4F6UAlSfeQCqivFe9EEh6Lol sVlShe5cp3UN1cct+7HbDarVpnsUXG5InsTJ8EPr3TgxoomklD7ZzeVZ1 asx8D5UHcDlguHfHBJIPStSqhjHeRwj63exK3zpawIrzz/r+5LKUvf/+Y xLiak4/XtDHVTd3iQKxT0mnwgvz2hjHeu9MjWp9SWGupwm3psQTUDNeyn w==; X-IronPort-AV: E=McAfee;i="6200,9189,10289"; a="257189955" X-IronPort-AV: E=Sophos;i="5.90,190,1643702400"; d="scan'208";a="257189955" Received: from orsmga003.jf.intel.com ([10.7.209.27]) by fmsmga103.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 17 Mar 2022 16:04:56 -0700 X-IronPort-AV: E=Sophos;i="5.90,190,1643702400"; d="scan'208";a="499015063" Received: from otc-tsn-4.jf.intel.com ([10.23.153.135]) by orsmga003-auth.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 17 Mar 2022 16:04:55 -0700 From: Kishen Maloor To: kishen.maloor@intel.com, mptcp@lists.linux.dev Subject: [PATCH mptcp-next v8 5/6] mptcp: establish subflows from either end of connection Date: Thu, 17 Mar 2022 19:04:48 -0400 Message-Id: <20220317230449.763778-6-kishen.maloor@intel.com> X-Mailer: git-send-email 2.31.1 In-Reply-To: <20220317230449.763778-1-kishen.maloor@intel.com> References: <20220317230449.763778-1-kishen.maloor@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" This change updates internal logic to permit subflows to be established from either the client or server ends of MPTCP connections. This symmetry and added flexibility may be harnessed by PM implementations running on either end in creating new subflows. The essence of this change lies in not relying on the "server_side" flag (which continues to be available if needed). Signed-off-by: Kishen Maloor --- net/mptcp/options.c | 2 +- net/mptcp/protocol.c | 5 +---- net/mptcp/protocol.h | 8 ++++++-- 3 files changed, 8 insertions(+), 7 deletions(-) diff --git a/net/mptcp/options.c b/net/mptcp/options.c index c9625fea3ef9..e05d9458a025 100644 --- a/net/mptcp/options.c +++ b/net/mptcp/options.c @@ -931,7 +931,7 @@ static bool check_fully_established(struct mptcp_sock *= msk, struct sock *ssk, if (TCP_SKB_CB(skb)->seq =3D=3D subflow->ssn_offset + 1 && TCP_SKB_CB(skb)->end_seq =3D=3D TCP_SKB_CB(skb)->seq && subflow->mp_join && (mp_opt->suboptions & OPTIONS_MPTCP_MPJ) && - READ_ONCE(msk->pm.server_side)) + !subflow->request_join) tcp_send_ack(ssk); goto fully_established; } diff --git a/net/mptcp/protocol.c b/net/mptcp/protocol.c index fbb14dfe62b3..97b0338fe96f 100644 --- a/net/mptcp/protocol.c +++ b/net/mptcp/protocol.c @@ -3263,15 +3263,12 @@ bool mptcp_finish_join(struct sock *ssk) return false; } =20 - if (!msk->pm.server_side) + if (!list_empty(&subflow->node)) goto out; =20 if (!mptcp_pm_allow_new_subflow(msk)) goto err_prohibited; =20 - if (WARN_ON_ONCE(!list_empty(&subflow->node))) - goto err_prohibited; - /* active connections are already on conn_list. * If we can't acquire msk socket lock here, let the release callback * handle it diff --git a/net/mptcp/protocol.h b/net/mptcp/protocol.h index 4047d081b119..d121dfdde616 100644 --- a/net/mptcp/protocol.h +++ b/net/mptcp/protocol.h @@ -908,13 +908,17 @@ static inline bool mptcp_check_infinite_map(struct sk= _buff *skb) return false; } =20 +static inline bool is_active_ssk(struct mptcp_subflow_context *subflow) +{ + return (subflow->request_mptcp || subflow->request_join); +} + static inline bool subflow_simultaneous_connect(struct sock *sk) { struct mptcp_subflow_context *subflow =3D mptcp_subflow_ctx(sk); - struct sock *parent =3D subflow->conn; =20 return sk->sk_state =3D=3D TCP_ESTABLISHED && - !mptcp_sk(parent)->pm.server_side && + is_active_ssk(subflow) && !subflow->conn_finished; } =20 --=20 2.31.1 From nobody Fri May 3 20:12:39 2024 Delivered-To: wpasupplicant.patchew@gmail.com Received: by 2002:aa7:c50d:0:0:0:0:0 with SMTP id o13csp43870edq; Thu, 17 Mar 2022 16:05:07 -0700 (PDT) X-Google-Smtp-Source: ABdhPJxiuc6Yi3pg0noVd+6Sn1v4x5jmQHRq+S5+pcCDb8uxAZ6R8DlCZKuXEyHPLdfs04feJexQ X-Received: by 2002:a2e:b8d1:0:b0:249:24e6:356f with SMTP id s17-20020a2eb8d1000000b0024924e6356fmr4234635ljp.511.1647558307407; Thu, 17 Mar 2022 16:05:07 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1647558307; cv=none; d=google.com; s=arc-20160816; b=WzhMcPnJ0ZBcTTQLSJtFfCjzRZLxK2CiqYDkIyXGw9/9xraQbA/LW/iJg0oRtoph8u 9RxCKMggQyjEIAB/loStfIb4dDJab64/rMbC1tgAztpw+zHUKuifQC3Xzi/s27KJti1B gE2GIsnylUSZep4Nu4nDPZmmx2Xa6oLH/zGR9uHuUM5ulsK0N9S4tm5pssM9md+BGHi/ NLgX+WOtV/JX2VDXeyaXhwvgMlcNBP43kImQ/7I0M7MD7WMx5ZPbcTnJRkJS8Ct3lzDb NqsFVnD6wojLTOzRtjhXM16V9UTJ6Uw9TV9iW+l8BCXLE9A8MiiMeE6caApjM7lW7LSS AdYg== 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:to:from:dkim-signature; bh=ER2cUSdsqPlrKipBlhiWCESXgGu0DRlV3dHGVfuk3ls=; b=vXXfMVIUc1tC11FmRl1dmADpJbWGkGNn9Kgxg4TXcdcuxnfLfsQihXYlyrhgWvPosU WV0JqcAtYK2/hX5QC/RyWHA9yerXaVqp97OhPwG38vJDP33tvovUtu220ZA7YsiO2Mwr Jg3PXIynnXbHz+SZex7z/jSJjmKiITalfbfeAXf1SbBh+j1UhoxSSEqL4NZ7bx7KKbWu 3Shftd8Hi7mvgEXzfKWBrIJ1CTUzfpGBGuu+kiDA3ucMVg6siD3DVBKWbjA551l7UgjV R37hNfHDopyxiP5q3Sm/h8pEoLBTQDjEUN7wEpSQ96xUY1H7PGjVXjKZJj6n+G4FuR0g vVoA== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@intel.com header.s=Intel header.b="TE0nEnK/"; spf=pass (google.com: domain of mptcp+bounces-4300-wpasupplicant.patchew=gmail.com@lists.linux.dev designates 147.75.197.195 as permitted sender) smtp.mailfrom="mptcp+bounces-4300-wpasupplicant.patchew=gmail.com@lists.linux.dev"; dmarc=pass (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 2-20020a05651c008200b0024952f7bc28si337873ljq.387.2022.03.17.16.05.07 for (version=TLS1_2 cipher=ECDHE-ECDSA-AES128-GCM-SHA256 bits=128/128); Thu, 17 Mar 2022 16:05:07 -0700 (PDT) Received-SPF: pass (google.com: domain of mptcp+bounces-4300-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; dkim=pass header.i=@intel.com header.s=Intel header.b="TE0nEnK/"; spf=pass (google.com: domain of mptcp+bounces-4300-wpasupplicant.patchew=gmail.com@lists.linux.dev designates 147.75.197.195 as permitted sender) smtp.mailfrom="mptcp+bounces-4300-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 ewr.edge.kernel.org (Postfix) with ESMTPS id 4E9621C0BFC for ; Thu, 17 Mar 2022 23:05:06 +0000 (UTC) Received: from localhost.localdomain (localhost.localdomain [127.0.0.1]) by smtp.subspace.kernel.org (Postfix) with ESMTP id CA3374ABB; Thu, 17 Mar 2022 23:05:01 +0000 (UTC) X-Original-To: mptcp@lists.linux.dev Received: from mga14.intel.com (mga14.intel.com [192.55.52.115]) (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 9D8F74C68 for ; Thu, 17 Mar 2022 23:05:00 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1647558300; x=1679094300; h=from:to:subject:date:message-id:in-reply-to:references: mime-version:content-transfer-encoding; bh=6Ivn5DBhc8ufoCfp/qAn+r+EZkOYATBS0JTMy3CoLU0=; b=TE0nEnK/pJzOt9G9VptnOxZgoGy6aDBSYzE6/d9JJq7EzVmsnQSlIRqP rih1IwvxX0PJJh+5x+4jaUa3+WhZEWLIvT9zgyguXhqnSgWVacw3blAS2 g2jMYsTjKogidBIdN8/30TTJsmohaxf7qG3scBc7Q0fROL4VCItsDbkQB T3NbtSvouX3eBUbZXo7EB2iFuQpm/2g+NF1ik7dRTviDCdgN2LO7dfF1/ gCxaULCBQlGuO1tvQ9+rlcmzzrXpG3RK4qBOeE4DiEh7n6prwa9qWH/MV Jlo17StvxyzNZw450yVx2FL2dw1r/JrhlJOS2YaNcCWpgsaMBkwpRVp7S A==; X-IronPort-AV: E=McAfee;i="6200,9189,10289"; a="257189957" X-IronPort-AV: E=Sophos;i="5.90,190,1643702400"; d="scan'208";a="257189957" Received: from orsmga003.jf.intel.com ([10.7.209.27]) by fmsmga103.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 17 Mar 2022 16:04:56 -0700 X-IronPort-AV: E=Sophos;i="5.90,190,1643702400"; d="scan'208";a="499015065" Received: from otc-tsn-4.jf.intel.com ([10.23.153.135]) by orsmga003-auth.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 17 Mar 2022 16:04:55 -0700 From: Kishen Maloor To: kishen.maloor@intel.com, mptcp@lists.linux.dev Subject: [PATCH mptcp-next v8 6/6] mptcp: expose server_side attribute in MPTCP netlink events Date: Thu, 17 Mar 2022 19:04:49 -0400 Message-Id: <20220317230449.763778-7-kishen.maloor@intel.com> X-Mailer: git-send-email 2.31.1 In-Reply-To: <20220317230449.763778-1-kishen.maloor@intel.com> References: <20220317230449.763778-1-kishen.maloor@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" This change records the 'server_side' attribute of MPTCP_EVENT_CREATED and MPTCP_EVENT_ESTABLISHED events to inform their recipient about the Client/Server role of the running MPTCP application. Closes: https://github.com/multipath-tcp/mptcp_net-next/issues/246 Signed-off-by: Kishen Maloor --- include/uapi/linux/mptcp.h | 1 + net/mptcp/pm_netlink.c | 3 +++ 2 files changed, 4 insertions(+) diff --git a/include/uapi/linux/mptcp.h b/include/uapi/linux/mptcp.h index 9690efedb5fa..e41ea01a94bb 100644 --- a/include/uapi/linux/mptcp.h +++ b/include/uapi/linux/mptcp.h @@ -188,6 +188,7 @@ enum mptcp_event_attr { MPTCP_ATTR_IF_IDX, /* s32 */ MPTCP_ATTR_RESET_REASON,/* u32 */ MPTCP_ATTR_RESET_FLAGS, /* u32 */ + MPTCP_ATTR_SERVER_SIDE, /* u8 */ =20 __MPTCP_ATTR_AFTER_LAST }; diff --git a/net/mptcp/pm_netlink.c b/net/mptcp/pm_netlink.c index 8676aecc52a6..c2a0588f8c85 100644 --- a/net/mptcp/pm_netlink.c +++ b/net/mptcp/pm_netlink.c @@ -1976,6 +1976,9 @@ static int mptcp_event_created(struct sk_buff *skb, if (err) return err; =20 + if (nla_put_u8(skb, MPTCP_ATTR_SERVER_SIDE, READ_ONCE(msk->pm.server_side= ))) + return -EMSGSIZE; + return mptcp_event_add_subflow(skb, ssk); } =20 --=20 2.31.1