From nobody Fri May 3 03:21:10 2024 Delivered-To: wpasupplicant.patchew@gmail.com Received: by 2002:a05:6a06:1788:b0:4ac:5e5b:1ad1 with SMTP id y8csp619096piq; Mon, 28 Mar 2022 19:14:13 -0700 (PDT) X-Google-Smtp-Source: ABdhPJzFLnVMnO4nVeARMWsu6P/vpgSBOGdQkDh1RVHpcfII2p3LVaDWiXZ6PppRtU7FOB8/N1/k X-Received: by 2002:a25:8b10:0:b0:633:607c:d52d with SMTP id i16-20020a258b10000000b00633607cd52dmr26291386ybl.148.1648520053167; Mon, 28 Mar 2022 19:14:13 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1648520053; cv=none; d=google.com; s=arc-20160816; b=LkoEtHcPM2ORbcOXgU9fnQqZPqx1QpjMAnT1Z8ZlLH/fIrBeCSyUkVAtb6pGU3W3uT JMwXNJWpNEtc4H8nLL6JCFqGhfpWUZka2vw7CAjtogOm80rk5A7baU5zRSb9INJG6txR kcoxaK54nS2GdW2GeJ+ET3+9OxAR9F4weZnu+Yg02RzCme51HvNpglIWEzi8C0kusyzD /si/63k5jTfPmQNzZQNUNXQtOMsrOm2zHsTh3CboGaL1XiyjTmgace3oEYR+wkol0UOs YdapQyo8AheVj0ArfPsNFkjr/8wFFwwGChN0IakoH5svkR/czndGUC2uJE9QuOHPvJRA JKLQ== 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=BkCP7jENjaLUnz+Stm9/sZ/HLA8kvZTiLdgypHOptv0=; b=E80mj1AohQ++A0Sk5cYIDXROokIughwhXXnUJVnk0bhIyV32O3tNQlPsALy3ATPDMq tQorxLLBPJvF67TyMxRHF2sqnXiw2SHBaC+W//RoVa3odyO6KFrtKVbYMVeCB+KlALjH XHcR3D5Enz2XUlnOmPY+sdLHxKEuzm4FEsnRcVKn8rmcO5XfdWdsnRGyJ7NcqRxPHKLZ X0J8X3Vf/N6Vla+8/v8rERr5i9DEkobxBeWSPw8EfUH8b90+Y60J1+GpnMvwqwbSIsJw RRvU2bgb1sy0JMT/l+WYxErGjyitRT8naHRXfhrPKfvwhn0eOwfB/StrzRDJMtkCaAQ3 XGKA== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@intel.com header.s=Intel header.b=UB1AkJzx; spf=pass (google.com: domain of mptcp+bounces-4488-wpasupplicant.patchew=gmail.com@lists.linux.dev designates 147.75.69.165 as permitted sender) smtp.mailfrom="mptcp+bounces-4488-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 d191-20020a25e6c8000000b00633994045f7si15685344ybh.609.2022.03.28.19.14.13 for (version=TLS1_2 cipher=ECDHE-ECDSA-AES128-GCM-SHA256 bits=128/128); Mon, 28 Mar 2022 19:14:13 -0700 (PDT) Received-SPF: pass (google.com: domain of mptcp+bounces-4488-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=UB1AkJzx; spf=pass (google.com: domain of mptcp+bounces-4488-wpasupplicant.patchew=gmail.com@lists.linux.dev designates 147.75.69.165 as permitted sender) smtp.mailfrom="mptcp+bounces-4488-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 AB3783E0E4D for ; Tue, 29 Mar 2022 02:14:12 +0000 (UTC) Received: from localhost.localdomain (localhost.localdomain [127.0.0.1]) by smtp.subspace.kernel.org (Postfix) with ESMTP id DB2F820E8; Tue, 29 Mar 2022 02:14:11 +0000 (UTC) X-Original-To: mptcp@lists.linux.dev Received: from mga05.intel.com (mga05.intel.com [192.55.52.43]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 0C8AE20E6 for ; Tue, 29 Mar 2022 02:14:09 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1648520050; x=1680056050; h=from:to:subject:date:message-id:in-reply-to:references: mime-version:content-transfer-encoding; bh=RJJAoZH769xw3Gm9uQPRUtnnIFyaZSVqSI6EX+533dU=; b=UB1AkJzxr7p/JmwrK8swkJ73Lv1vEUJpQ181gB1t6FNnAWAYvIb7eQ2M pHzW9T2RyURMmLQn6790Vmdeh4RcIKxrjBly8h8R0GE84zrnqDaF28wUv MoDxyoVl02JLxpxUQmXdHsC8Hsn8SGfg/5x4Txmka7xT8Hjamuva7w8ju ebp3jDM+9/M65+Zf5Lj+QC9EFxw+JfnF/OJchVvEW8C6axHcxjTYzRubz So/wRtjwoIjv7+ddybvDbNk3pjmaJvPww2MPLEDzrrh17wJwelDP/oWGb ndNXzfIJnum6kK+pbjMpX/e8/bv7O9YXG8jckEibFa3lp9ipfxTNCAahJ Q==; X-IronPort-AV: E=McAfee;i="6200,9189,10300"; a="345578742" X-IronPort-AV: E=Sophos;i="5.90,219,1643702400"; d="scan'208";a="345578742" Received: from orsmga008.jf.intel.com ([10.7.209.65]) by fmsmga105.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 28 Mar 2022 19:14:08 -0700 X-IronPort-AV: E=Sophos;i="5.90,219,1643702400"; d="scan'208";a="564202539" Received: from otc-tsn-4.jf.intel.com ([10.23.153.135]) by orsmga008-auth.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 28 Mar 2022 19:14:07 -0700 From: Kishen Maloor To: kishen.maloor@intel.com, mptcp@lists.linux.dev Subject: [PATCH mptcp-next v9 1/6] Squash-to: mptcp: Bypass kernel PM when userspace PM is enabled Date: Mon, 28 Mar 2022 22:13:56 -0400 Message-Id: <20220329021401.1196466-2-kishen.maloor@intel.com> X-Mailer: git-send-email 2.31.1 In-Reply-To: <20220329021401.1196466-1-kishen.maloor@intel.com> References: <20220329021401.1196466-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 Reviewed-by: Mat Martineau --- 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 fd82fd113113..54d2b3b2d100 100644 --- a/net/mptcp/protocol.h +++ b/net/mptcp/protocol.h @@ -806,9 +806,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 03:21:10 2024 Delivered-To: wpasupplicant.patchew@gmail.com Received: by 2002:a05:6a06:1788:b0:4ac:5e5b:1ad1 with SMTP id y8csp619118piq; Mon, 28 Mar 2022 19:14:15 -0700 (PDT) X-Google-Smtp-Source: ABdhPJwTxeOk16MsaQ+xorF/9nPQf9nAHu4uKOX92BjEsywtyIPhh7OohkMjBG6T8bOuvPMXE2S1 X-Received: by 2002:a05:6402:2812:b0:418:fc32:be18 with SMTP id h18-20020a056402281200b00418fc32be18mr1244752ede.357.1648520055351; Mon, 28 Mar 2022 19:14:15 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1648520055; cv=none; d=google.com; s=arc-20160816; b=hBJgEDyp82SO3qU9EaM0/wU6+xI+/lzfzU5/ZRp8DnqBCRh7PePJoU7nl8VDiJL6oA JfL/FUcnl09obeHk14qGJFZqyH4R5AyYtbYlpQNT2USiFHeEPDPQ+IollMsINVQ9hgRo lD8GuKtww1xWkMIL4eBV0ujG9hSBSGQMcsIVZBBsoJcYxicvc0NFvge5ynqiMeHH4NTq v2QoIVr/tp7Sx3WbIo5G5yBGJT2BltFZPV9GacMPzLq43O0HOG1WkGc3RC0RHaTNpMrz E88y0NzAUkYH9JBgrvS1qG8L2Hf7vvmfO+UcbDmoBDWlVPSzz7J2OvbCSZT9zQJntExC R0fA== 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=ScNSrd1PE3Zmz5se+3dBX87k3p77u0jh2pI/05XprVc=; b=iIS1LW/rnm20AEpFunDhci2+W5dQGYaPypBqZwJ1C+qiWgPD3Ur3TwTAqfzTv9Sf5k JMQdOAbXIGKSmPh+TA/nIyAZHZZFyJLrbetd+WWbcrQZAfOmcMtsOK9Cch9r7ds9uxJ+ P9xAGLL5uykOIuE6UoaqdNaebPd4wAkQAP/oMXKxJma1G+oE6La5l6dRJPnT7scylLdp v1JvT4CVVC3+0Mr3iQSsGeWDkeDgMKfHbQHgXxYP7TnrFJbK0NGeY+TxaYegzwr9EDjG SHM/R/x0yldt9w/nGsDRsLM1MLh7iuZDwLOQv6+i7I1ImClM2QRhJW1UBKpfJAa1Ptli Q/kQ== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@intel.com header.s=Intel header.b=aXgN6Cs1; spf=pass (google.com: domain of mptcp+bounces-4489-wpasupplicant.patchew=gmail.com@lists.linux.dev designates 147.75.197.195 as permitted sender) smtp.mailfrom="mptcp+bounces-4489-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 a1-20020a1709063a4100b006df76385d18si15849047ejf.440.2022.03.28.19.14.15 for (version=TLS1_2 cipher=ECDHE-ECDSA-AES128-GCM-SHA256 bits=128/128); Mon, 28 Mar 2022 19:14:15 -0700 (PDT) Received-SPF: pass (google.com: domain of mptcp+bounces-4489-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=aXgN6Cs1; spf=pass (google.com: domain of mptcp+bounces-4489-wpasupplicant.patchew=gmail.com@lists.linux.dev designates 147.75.197.195 as permitted sender) smtp.mailfrom="mptcp+bounces-4489-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 5F8E01C09E4 for ; Tue, 29 Mar 2022 02:14:14 +0000 (UTC) Received: from localhost.localdomain (localhost.localdomain [127.0.0.1]) by smtp.subspace.kernel.org (Postfix) with ESMTP id 07C6020E9; Tue, 29 Mar 2022 02:14:12 +0000 (UTC) X-Original-To: mptcp@lists.linux.dev Received: from mga05.intel.com (mga05.intel.com [192.55.52.43]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id A281D20E5 for ; Tue, 29 Mar 2022 02:14:10 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1648520050; x=1680056050; h=from:to:subject:date:message-id:in-reply-to:references: mime-version:content-transfer-encoding; bh=JFfNMKu2BiP/IalZtdk4SedEQzW3OgEn1gkuHHI+jsU=; b=aXgN6Cs1gEFXN7x8caF4RGgbV4/67hhZ9OIievwgfOgcDcK/6mEWUamk oeGNFwN8TixnGo9YviYnejKtvCQWPVlDtZIWRk4150gdzP6iWfCK19/D/ BEcvtbQj+hzJ/vq0DlwmFLd8EXnDtR9dwHCmfugwmDz/gUV6BT+DSuIyH DAtrRYqBaMdZSRRypW/TcMic7y0F/VoraeE20rsbQ1+5qeAoGfFm4MYds ajuywYk3inBH0DLLz2BGMdfYGFNKHu8FJ4tBtMRkApHvdqpi3P+G/yc3O KlaqxjwWbESlhQCaHFTUvZ1wBbyjGJlZkEuRbWa/W8StvuzsM+xnY112C Q==; X-IronPort-AV: E=McAfee;i="6200,9189,10300"; a="345578743" X-IronPort-AV: E=Sophos;i="5.90,219,1643702400"; d="scan'208";a="345578743" Received: from orsmga008.jf.intel.com ([10.7.209.65]) by fmsmga105.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 28 Mar 2022 19:14:08 -0700 X-IronPort-AV: E=Sophos;i="5.90,219,1643702400"; d="scan'208";a="564202542" Received: from otc-tsn-4.jf.intel.com ([10.23.153.135]) by orsmga008-auth.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 28 Mar 2022 19:14:07 -0700 From: Kishen Maloor To: kishen.maloor@intel.com, mptcp@lists.linux.dev Subject: [PATCH mptcp-next v9 2/6] mptcp: bypass in-kernel PM restrictions for non-kernel PMs Date: Mon, 28 Mar 2022 22:13:57 -0400 Message-Id: <20220329021401.1196466-3-kishen.maloor@intel.com> X-Mailer: git-send-email 2.31.1 In-Reply-To: <20220329021401.1196466-1-kishen.maloor@intel.com> References: <20220329021401.1196466-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 Reviewed-by: Mat Martineau --- 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 57f67578a47f..8df9cb28d970 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 10a73898c8db..491aedc486f1 100644 --- a/net/mptcp/pm_netlink.c +++ b/net/mptcp/pm_netlink.c @@ -798,6 +798,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); @@ -1848,6 +1851,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 54d2b3b2d100..85390146944d 100644 --- a/net/mptcp/protocol.h +++ b/net/mptcp/protocol.h @@ -784,6 +784,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) { @@ -811,6 +812,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 75c824b67ca9..9567231a4bfa 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 03:21:10 2024 Delivered-To: wpasupplicant.patchew@gmail.com Received: by 2002:a05:6a06:1788:b0:4ac:5e5b:1ad1 with SMTP id y8csp619127piq; Mon, 28 Mar 2022 19:14:16 -0700 (PDT) X-Google-Smtp-Source: ABdhPJwjwH/bNAVPJ91onETSsCbuMGJRGoVS5EoZpCt15CcJUQP7lUoM7kgLg3py6LRv57m23wB5 X-Received: by 2002:a05:6402:516c:b0:419:92c:a2a with SMTP id d12-20020a056402516c00b00419092c0a2amr1257490ede.175.1648520055993; Mon, 28 Mar 2022 19:14:15 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1648520055; cv=none; d=google.com; s=arc-20160816; b=E4QhckXCBiuj8BD41bJUYYDhbRjQAuVy8E8/3M+09/Gy/yoXbBUYg/0PcX0tLgBM3r j+zn45xn0F9cIQVlF1bFQHlEQtqIjxirqxdNv7xfuwDl0i0WUEUwtT+LSZ6uROYsb1iF H79kG5HhxI9kv7NBoEgAC/fKqISKL8GX0lpLRTx03raUu0X3SO2TVdc59hf68kjnJ6CY 0V3BBd6n6F9a76WdVRBSTDSj6pMXmtp/3wT/C/quMwjTaXwkwbZdFqPnSaIgvTAXtdkq xgtj51H76nT0DYvZbcq47zfhFjZU0AGsgssUG5NPHXHk64LWmF5WVygCKccsjQgd/4iT n+rw== 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=T+/bLfagnlJITDxaURy3veXXFLkEPrbm8E7kvo3NyqQ=; b=I+CNSrsxTawFwzR9tW3FjcSQQB3FWSiXDkjqQ97eqmlxqVW6AWtaOSvDMyZZ1Jo7Fy cU3ZZXT5LZ8FricKZD1u8jXtx58KbKSnqO36Dw3Ujne1cIedbrBPSRKS77rueV6/DD1k L//aX7Iun6rC9wldWg9YLaUJ6f2tBu/trF+4jxP5jPUJmuYT099uewd/YpQIpGuuvCqY 8P6fJ8qVAPhvs3HCGTtNjr3FzztulQNjy8F2vt5DoiMWAPk1ct04O+ycssLGESgRt929 8i/crbFuwO60r6TjjaLm7XGUC0FTYXdv3MRvLSRRgdGRkC/GTpDwWZXkcUu5PKaoV2PG HReg== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@intel.com header.s=Intel header.b=nSDeYqTn; spf=pass (google.com: domain of mptcp+bounces-4490-wpasupplicant.patchew=gmail.com@lists.linux.dev designates 147.75.197.195 as permitted sender) smtp.mailfrom="mptcp+bounces-4490-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 a1-20020a1709063a4100b006df76385d18si15849047ejf.440.2022.03.28.19.14.15 for (version=TLS1_2 cipher=ECDHE-ECDSA-AES128-GCM-SHA256 bits=128/128); Mon, 28 Mar 2022 19:14:15 -0700 (PDT) Received-SPF: pass (google.com: domain of mptcp+bounces-4490-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=nSDeYqTn; spf=pass (google.com: domain of mptcp+bounces-4490-wpasupplicant.patchew=gmail.com@lists.linux.dev designates 147.75.197.195 as permitted sender) smtp.mailfrom="mptcp+bounces-4490-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 8C6311C0A77 for ; Tue, 29 Mar 2022 02:14:15 +0000 (UTC) Received: from localhost.localdomain (localhost.localdomain [127.0.0.1]) by smtp.subspace.kernel.org (Postfix) with ESMTP id 1DBF220E7; Tue, 29 Mar 2022 02:14:13 +0000 (UTC) X-Original-To: mptcp@lists.linux.dev Received: from mga05.intel.com (mga05.intel.com [192.55.52.43]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id E74B520E6 for ; Tue, 29 Mar 2022 02:14:11 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1648520051; x=1680056051; h=from:to:subject:date:message-id:in-reply-to:references: mime-version:content-transfer-encoding; bh=GKhZx0nF/uINtofrjJx97ZVcvMzDhR2KV3qHhBQpcrw=; b=nSDeYqTnSeDnlB/vRqtVoHnVw1uBTffDLkC4KY703JyL9UbHwyZtLU22 9BLJ27hyt7syTVmA0A2pH6aLcsw1gRLEqFGF4A/AUtqqN1phwRW2mnBgg L1khLWr4sye4OAV37RTITnZZSy77EV/xDoZW6a7hxobzRxkDsS+1+aLnr 0QzrUTJf9e5Ums4z7byZeA3XStemO627vWV/qEzjkIMaJWSVpgc47Xk57 zg2KMaqOMvjdvabKIg3JCaWctf5kOucYdhEOUCO8xewmuBkANrGe35Gdl a99WMwsRAeGAytxnsIzWdSV6WGe6OiYCXm9c/wb8kCP4i6MkMPkw8v7tz w==; X-IronPort-AV: E=McAfee;i="6200,9189,10300"; a="345578744" X-IronPort-AV: E=Sophos;i="5.90,219,1643702400"; d="scan'208";a="345578744" Received: from orsmga008.jf.intel.com ([10.7.209.65]) by fmsmga105.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 28 Mar 2022 19:14:08 -0700 X-IronPort-AV: E=Sophos;i="5.90,219,1643702400"; d="scan'208";a="564202544" Received: from otc-tsn-4.jf.intel.com ([10.23.153.135]) by orsmga008-auth.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 28 Mar 2022 19:14:07 -0700 From: Kishen Maloor To: kishen.maloor@intel.com, mptcp@lists.linux.dev Subject: [PATCH mptcp-next v9 3/6] mptcp: store remote id from MP_JOIN SYN/ACK in local ctx Date: Mon, 28 Mar 2022 22:13:58 -0400 Message-Id: <20220329021401.1196466-4-kishen.maloor@intel.com> X-Mailer: git-send-email 2.31.1 In-Reply-To: <20220329021401.1196466-1-kishen.maloor@intel.com> References: <20220329021401.1196466-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 Reviewed-by: Mat Martineau --- net/mptcp/subflow.c | 1 + 1 file changed, 1 insertion(+) diff --git a/net/mptcp/subflow.c b/net/mptcp/subflow.c index 9567231a4bfa..a0e7af33fb26 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 03:21:10 2024 Delivered-To: wpasupplicant.patchew@gmail.com Received: by 2002:a05:6a06:1788:b0:4ac:5e5b:1ad1 with SMTP id y8csp619145piq; Mon, 28 Mar 2022 19:14:18 -0700 (PDT) X-Google-Smtp-Source: ABdhPJyf5cZi+4BP3G99FhvnOj+f9JqskSPpVD3Cv91In+XF6dRL9WUG6hM6Dun7Kp0iy7v5X+zN X-Received: by 2002:a17:906:4ad0:b0:6e0:12aa:a911 with SMTP id u16-20020a1709064ad000b006e012aaa911mr31943393ejt.455.1648520057970; Mon, 28 Mar 2022 19:14:17 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1648520057; cv=none; d=google.com; s=arc-20160816; b=KHPz7vmg7Rlyn/tVrJ+8MlAfkYqC5YM2mh6pZw51g5Zs5Imtl6SsBCladPpK739oBZ aU+kq3Su330F8qXMArV2YlEeJiFlxL8QH9YWnCKL3NV7rZajDTV7s2fB8fQtHsldaEwe eQp1NPI6dBo2j91uK7d4orJ3AloSqMAbLaPFfRrPEDr5INxVgXMFyFSIuRUkg5WHx8Du 50rVvQQZFdfqYoDvI9MDRs2x6fVco075Wljf46rWLCBF12WLZBTnsaplZZ5z3YH3usQw hS2TWUEoy5kk1n534P8p/FuYSbFkKI8i4rgvFnPrqsgqfn/z/YHY/k2CCB70aSTHRLv8 oE/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=Y3b+YywSPJMNw5eSoxJwmA0BxK5znj8p7jPyjeljeRE=; b=WuG7BVjLaPP//B9ArM9pU+TLHMEY0Iu25xxQbgmZnY7jXmNV5UiQefhoNSZZ/R6WQr 4UBNhw5luCHMTehfT2X4PDpY/cJ/oRFlEcZAWPiE6QAEhfBhaxlPhmy1VUCPWQazl2oh 7MJPKU2iwOMGQ8ACd69j5e0hhCtGWL8o5wNhjcVGcB5EQOtXkjCnfw8+GTE7aYQvYpMT BF1vLHc8wk2VP4q4UUrjCVRvdFFpvBMrk8wD/2tRxVx0yRfZVqO6rG6SwjP0+lhtoUNa hmGcYtJdM0AJjARzdtbDJByKMFNvBPnErBuoVdS/NEBb2oNtotXYTRqi2vv5TyIX/LzN cfTg== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@intel.com header.s=Intel header.b=S6sg2I7Y; spf=pass (google.com: domain of mptcp+bounces-4491-wpasupplicant.patchew=gmail.com@lists.linux.dev designates 2604:1380:1:3600::1 as permitted sender) smtp.mailfrom="mptcp+bounces-4491-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. [2604:1380:1:3600::1]) by mx.google.com with ESMTPS id nb21-20020a1709071c9500b006e0003920d0si22421234ejc.405.2022.03.28.19.14.17 for (version=TLS1_2 cipher=ECDHE-ECDSA-AES128-GCM-SHA256 bits=128/128); Mon, 28 Mar 2022 19:14:17 -0700 (PDT) Received-SPF: pass (google.com: domain of mptcp+bounces-4491-wpasupplicant.patchew=gmail.com@lists.linux.dev designates 2604:1380:1:3600::1 as permitted sender) client-ip=2604:1380:1:3600::1; Authentication-Results: mx.google.com; dkim=pass header.i=@intel.com header.s=Intel header.b=S6sg2I7Y; spf=pass (google.com: domain of mptcp+bounces-4491-wpasupplicant.patchew=gmail.com@lists.linux.dev designates 2604:1380:1:3600::1 as permitted sender) smtp.mailfrom="mptcp+bounces-4491-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 D299D1C0A77 for ; Tue, 29 Mar 2022 02:14:16 +0000 (UTC) Received: from localhost.localdomain (localhost.localdomain [127.0.0.1]) by smtp.subspace.kernel.org (Postfix) with ESMTP id 7F6D120EB; Tue, 29 Mar 2022 02:14:13 +0000 (UTC) X-Original-To: mptcp@lists.linux.dev Received: from mga05.intel.com (mga05.intel.com [192.55.52.43]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 1049220E5 for ; Tue, 29 Mar 2022 02:14:12 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1648520052; x=1680056052; h=from:to:subject:date:message-id:in-reply-to:references: mime-version:content-transfer-encoding; bh=M8VFKEXFq01Bzu5rjwUUaGZPLEnPWvxibr49JsGr9Tg=; b=S6sg2I7Yg7Zcdhcl/X035hmtBgsaLNApB8Sw2jBORp8rJfmbgjUk+nhy PKALkJV5rldmEQyn4Jv+C/5lBJ8YgY9+I4TKhz6sh+qORj5eLEQ22bUX6 4KE90RtvlY8ljUlqYRL7VvIZBuq7q2/WzHC9eIamYCc0Tq+Lkxs3nN+8H etxthkE/0GJ3MCZvKPWAp2I9Rnlbu4dE0JnPh04pfVm4hjW6/92Y9JCig uT4sbOj9ViwAwclzHTCfbVueilw1JKGtUeiftlRCW3jJ/fWTnjLG9e489 pcRnpYkT34bGubuIgGOG59iJbYlYkIUQzgVgkrdXpabZnL47SigOgWVGA A==; X-IronPort-AV: E=McAfee;i="6200,9189,10300"; a="345578745" X-IronPort-AV: E=Sophos;i="5.90,219,1643702400"; d="scan'208";a="345578745" Received: from orsmga008.jf.intel.com ([10.7.209.65]) by fmsmga105.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 28 Mar 2022 19:14:08 -0700 X-IronPort-AV: E=Sophos;i="5.90,219,1643702400"; d="scan'208";a="564202547" Received: from otc-tsn-4.jf.intel.com ([10.23.153.135]) by orsmga008-auth.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 28 Mar 2022 19:14:08 -0700 From: Kishen Maloor To: kishen.maloor@intel.com, mptcp@lists.linux.dev Subject: [PATCH mptcp-next v9 4/6] mptcp: reflect remote port (not 0) in ANNOUNCED events Date: Mon, 28 Mar 2022 22:13:59 -0400 Message-Id: <20220329021401.1196466-5-kishen.maloor@intel.com> X-Mailer: git-send-email 2.31.1 In-Reply-To: <20220329021401.1196466-1-kishen.maloor@intel.com> References: <20220329021401.1196466-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 Reviewed-by: Mat Martineau --- v9: removed explicit 'struct inet_sock *' cast. --- 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 8df9cb28d970..5d6832c4d9f2 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 491aedc486f1..6b555b20fd6f 100644 --- a/net/mptcp/pm_netlink.c +++ b/net/mptcp/pm_netlink.c @@ -2012,10 +2012,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 @@ -2037,7 +2039,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 ? + 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 85390146944d..a762b789f5ab 100644 --- a/net/mptcp/protocol.h +++ b/net/mptcp/protocol.h @@ -753,7 +753,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); @@ -782,7 +782,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 03:21:10 2024 Delivered-To: wpasupplicant.patchew@gmail.com Received: by 2002:a05:6a06:1788:b0:4ac:5e5b:1ad1 with SMTP id y8csp619154piq; Mon, 28 Mar 2022 19:14:19 -0700 (PDT) X-Google-Smtp-Source: ABdhPJyDxcmO8Ro20t1nWUXFfFeF3hP+TGrkJihpQ4vOjpvgrhrtet0F+u134ItKpBPWymAuH2Wy X-Received: by 2002:a17:906:8a6d:b0:6e0:68ac:7197 with SMTP id hy13-20020a1709068a6d00b006e068ac7197mr32104221ejc.703.1648520058974; Mon, 28 Mar 2022 19:14:18 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1648520058; cv=none; d=google.com; s=arc-20160816; b=JBMzvi93+tvh4HWf5xpzz6eJEnP+mWXe5EXo8kLYArorYYnJVZ6ycFpQ2T3zKTUp8J llxZ4Z5fvWdKoo+yl8hPwIP8OrBkS3GV+gxpITLyaoMCPv0BmCrqjxP4gqZ7l887Qbd7 Hbh9XnBzIkJb/FJ35yrx3t0ChC5OYYXV+XEhyh4GU9c42FtW+aecLPRCNP/pZ6TB7B3f z7GjweelCek+lw6pHsR2miM+AnyhqA5U3SLN4dnp9FjziSMme52HCmU+M0uDGP8W1xmo hcyRLWRU4pympJNFogd1NeSKSlCmu2P1xUwGnoxlKymkALeFMiIqDomShn7oVLrl++cX 2kbQ== 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=GHitLBVn8Xab6SNMfTBRPqq+E8tAYy2dlZdqCqRo7PU=; b=oXA0jE6M++NjLHwE756z3rGZ5I6VUC4YKLiBPV35dFyZFUToOTMYd6JZoBDJne7Ggj twd3/MaHj0MyLUq7cR7Ta3SUvlhz7KGH5L4JoeiqPlW2Gp9s1RlR6JlZAfSwe4Hp+6Qf ySrKR7AQlTHO9iuTB2H1yJkUMH406qq/0LwoSCR7p3WA2CZHT/KodQbDzROTAly8HvhY MSVsSSgHKqHTeepIlanGVXnPo+2RVMg2pg8zeyQAWnZOPR6UpppalGRzdSJWXar6zGZc 1zsADoggL2AC9vH5DpUwqhYncYzBpgwmrh+eRQu6qX2suT42epc0Y/FyLZqO21cxcYlo NtYw== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@intel.com header.s=Intel header.b=AQuU7PON; spf=pass (google.com: domain of mptcp+bounces-4492-wpasupplicant.patchew=gmail.com@lists.linux.dev designates 2604:1380:1:3600::1 as permitted sender) smtp.mailfrom="mptcp+bounces-4492-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. [2604:1380:1:3600::1]) by mx.google.com with ESMTPS id cb15-20020a170906a44f00b006df76385bf2si15771220ejb.146.2022.03.28.19.14.18 for (version=TLS1_2 cipher=ECDHE-ECDSA-AES128-GCM-SHA256 bits=128/128); Mon, 28 Mar 2022 19:14:18 -0700 (PDT) Received-SPF: pass (google.com: domain of mptcp+bounces-4492-wpasupplicant.patchew=gmail.com@lists.linux.dev designates 2604:1380:1:3600::1 as permitted sender) client-ip=2604:1380:1:3600::1; Authentication-Results: mx.google.com; dkim=pass header.i=@intel.com header.s=Intel header.b=AQuU7PON; spf=pass (google.com: domain of mptcp+bounces-4492-wpasupplicant.patchew=gmail.com@lists.linux.dev designates 2604:1380:1:3600::1 as permitted sender) smtp.mailfrom="mptcp+bounces-4492-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 EF82B1C0A64 for ; Tue, 29 Mar 2022 02:14:17 +0000 (UTC) Received: from localhost.localdomain (localhost.localdomain [127.0.0.1]) by smtp.subspace.kernel.org (Postfix) with ESMTP id 37A2E20E5; Tue, 29 Mar 2022 02:14:14 +0000 (UTC) X-Original-To: mptcp@lists.linux.dev Received: from mga05.intel.com (mga05.intel.com [192.55.52.43]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 4B70720EA for ; Tue, 29 Mar 2022 02:14:12 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1648520052; x=1680056052; h=from:to:subject:date:message-id:in-reply-to:references: mime-version:content-transfer-encoding; bh=d/xDT6btLh0ZvnslagoXCmEcD+Xgida3BERey+wbCB8=; b=AQuU7PONG3kSvKsXAF8MTTbEt6Uh+OTyao/sHgQ3B3/iHD7N8hPC7PRY PfsfQd54c3IBirZjRua/zuf1SfEu9yoaYB8uPmmJVzDCkVgnFeu7XZFli 08mBVeMi6rtT53/s7mVq8r+EyZ+zh801UW40R01EPhpigow9RV9filCUS 8c7ZDlRK8VkQX3wvFKC1maa2vtLB2nyxkQWA/mwzuR3mW4oVktYRHK9/c F78/A38gMpAIlrh+R21ELR3IDVpe7J/4F60wm2gQtzBL3lsWQ27YCWqdq 8BAxIkcDhYSZhp51iNPLbEbwB8UXM2SlU7wyhqktgkUF02E3lAGtBrMPf g==; X-IronPort-AV: E=McAfee;i="6200,9189,10300"; a="345578746" X-IronPort-AV: E=Sophos;i="5.90,219,1643702400"; d="scan'208";a="345578746" Received: from orsmga008.jf.intel.com ([10.7.209.65]) by fmsmga105.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 28 Mar 2022 19:14:08 -0700 X-IronPort-AV: E=Sophos;i="5.90,219,1643702400"; d="scan'208";a="564202551" Received: from otc-tsn-4.jf.intel.com ([10.23.153.135]) by orsmga008-auth.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 28 Mar 2022 19:14:08 -0700 From: Kishen Maloor To: kishen.maloor@intel.com, mptcp@lists.linux.dev Subject: [PATCH mptcp-next v9 5/6] mptcp: establish subflows from either end of connection Date: Mon, 28 Mar 2022 22:14:00 -0400 Message-Id: <20220329021401.1196466-6-kishen.maloor@intel.com> X-Mailer: git-send-email 2.31.1 In-Reply-To: <20220329021401.1196466-1-kishen.maloor@intel.com> References: <20220329021401.1196466-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 Reviewed-by: Mat Martineau --- 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 d3887f628b54..b2c654992de0 100644 --- a/net/mptcp/protocol.c +++ b/net/mptcp/protocol.c @@ -3327,15 +3327,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 a762b789f5ab..187c932deef0 100644 --- a/net/mptcp/protocol.h +++ b/net/mptcp/protocol.h @@ -911,13 +911,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 03:21:10 2024 Delivered-To: wpasupplicant.patchew@gmail.com Received: by 2002:a05:6a06:1788:b0:4ac:5e5b:1ad1 with SMTP id y8csp619156piq; Mon, 28 Mar 2022 19:14:19 -0700 (PDT) X-Google-Smtp-Source: ABdhPJxMi9/gGUN8J2qJvVzQnRSuBUNZg6OElAj3WAGaesheEbeFtNA73L3IsXMsuZKnlnthWu6x X-Received: by 2002:a0d:ea4c:0:b0:2e5:8bf8:4587 with SMTP id t73-20020a0dea4c000000b002e58bf84587mr28628755ywe.180.1648520059232; Mon, 28 Mar 2022 19:14:19 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1648520059; cv=none; d=google.com; s=arc-20160816; b=pJUpQmy0I7llDj1Mw1PEjtiPb8UqHS9vsFqrACD+ZOyneLzLp2I1U+1fymAdtv5A63 JGv4fOUfc2tMdVIJtH/yEdQ0id4oxBRfor1/pxzMJn8aa3mwi9fBnwIK9kNhJfa0u2Qo 5zKJAeDemrZxts+DrydxYeG9YS50cN7WJk145OY8XonNs7n/w6BnyjNE9obmFFke5dKn u+tJIgUti5r+dIGAmez/s/9OZB2wTf5nwLgtGkTVMeuXhyjTlRcSEOXDjd/u93FrRPMd +rsYTtKUbifLTfpDSI6+thp4KrbaLM8Udp/2O3lWj8g9l08l1iZRwzcIcejjwB0/kmsD rQ2g== 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=sLx8jBQkw2cxypbmCa8z/4rFPGnm77VXNtJlfHsflkY=; b=fHRUjg1z8xCU4uAOG/PsPev0Q3i0Yt9eihRc7ldlzZZ5/ZHF4QaILS7vPSSMAohdzZ IjHrfJMtsDFQIWeKu0hmPs2l+1YowIc2CAYYgHxSOb+qN1jMsdaJ3w7V57ej7sHfWhR3 OAs/0rQcMadxNCB4lha2elMZ06FBzmMMebxIqNcijaYDM6USnM2EGBhaHRJ/v7c2KA0g OgW1NL8Qz2q92m6LZCnnU7KgvTjj/N44njZQaJmvBrtHEIdMCIyYISOMo5pF/xfI7SZD A0LoVC22641S5yy4Ohbw/BjIKog388DQXr6V5Nes5Oi7fL42XGmsM1VnVch5s+L3QC+6 jcxw== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@intel.com header.s=Intel header.b="CU8P/gSv"; spf=pass (google.com: domain of mptcp+bounces-4493-wpasupplicant.patchew=gmail.com@lists.linux.dev designates 2604:1380:1000:8100::1 as permitted sender) smtp.mailfrom="mptcp+bounces-4493-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 c132-20020a251c8a000000b00633994043d9si16095809ybc.67.2022.03.28.19.14.19 for (version=TLS1_2 cipher=ECDHE-ECDSA-AES128-GCM-SHA256 bits=128/128); Mon, 28 Mar 2022 19:14:19 -0700 (PDT) Received-SPF: pass (google.com: domain of mptcp+bounces-4493-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="CU8P/gSv"; spf=pass (google.com: domain of mptcp+bounces-4493-wpasupplicant.patchew=gmail.com@lists.linux.dev designates 2604:1380:1000:8100::1 as permitted sender) smtp.mailfrom="mptcp+bounces-4493-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 C72323E0E4C for ; Tue, 29 Mar 2022 02:14:18 +0000 (UTC) Received: from localhost.localdomain (localhost.localdomain [127.0.0.1]) by smtp.subspace.kernel.org (Postfix) with ESMTP id 657EB20E8; Tue, 29 Mar 2022 02:14:14 +0000 (UTC) X-Original-To: mptcp@lists.linux.dev Received: from mga05.intel.com (mga05.intel.com [192.55.52.43]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 2729C20E6 for ; Tue, 29 Mar 2022 02:14: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=1648520053; x=1680056053; h=from:to:subject:date:message-id:in-reply-to:references: mime-version:content-transfer-encoding; bh=kfzkYvxkvtrOkLLjy4C+eKMJJ5Jur2DgftgTUihqKsY=; b=CU8P/gSvWozSfHIOTDyW1/wEVXMUBCp8b6lXgGOR98jaXCJEtttoSfK+ rTGTu+wl44jG6DrcPvubWqCpB4esr9uCkdLJ2w0N1WqGldPjU7XEzRW49 Dg8HWtt6xPvXbHjw1Wd2ga5GVdXSUIOa85mfbdmYyiRFEkg/yUYhHC1Th 0KtPrhrh8mqVdo/EWu9lmLzx075P2cRsRUoKrj09Oc4kjm4lNA0oC7kgi KCQG5iKWskz7nH3OROkahK8e/d/i6hutvCNn50RlYc0kTONYbBPpwa5JM +vWAY3K9Ndv4M68xj9ezJ69lC1zi2RyjL8BKIZ6JK52bTV8OetA5RfI46 g==; X-IronPort-AV: E=McAfee;i="6200,9189,10300"; a="345578747" X-IronPort-AV: E=Sophos;i="5.90,219,1643702400"; d="scan'208";a="345578747" Received: from orsmga008.jf.intel.com ([10.7.209.65]) by fmsmga105.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 28 Mar 2022 19:14:08 -0700 X-IronPort-AV: E=Sophos;i="5.90,219,1643702400"; d="scan'208";a="564202554" Received: from otc-tsn-4.jf.intel.com ([10.23.153.135]) by orsmga008-auth.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 28 Mar 2022 19:14:08 -0700 From: Kishen Maloor To: kishen.maloor@intel.com, mptcp@lists.linux.dev Subject: [PATCH mptcp-next v9 6/6] mptcp: expose server_side attribute in MPTCP netlink events Date: Mon, 28 Mar 2022 22:14:01 -0400 Message-Id: <20220329021401.1196466-7-kishen.maloor@intel.com> X-Mailer: git-send-email 2.31.1 In-Reply-To: <20220329021401.1196466-1-kishen.maloor@intel.com> References: <20220329021401.1196466-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 Reviewed-by: Mat Martineau --- 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 6b555b20fd6f..7c92af2ad900 100644 --- a/net/mptcp/pm_netlink.c +++ b/net/mptcp/pm_netlink.c @@ -1978,6 +1978,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