From nobody Fri Dec 19 20:37:54 2025 Delivered-To: wpasupplicant.patchew@gmail.com Received: by 2002:a50:bae3:0:0:0:0:0 with SMTP id x90csp821179ede; Thu, 17 Mar 2022 08:35:10 -0700 (PDT) X-Google-Smtp-Source: ABdhPJyNsqVBgdx0bH//xT7QzBUJoxuj4xslpHa7VW6f4zboAQlneVwh5YIqiwv5EXOYr6wmZlTT X-Received: by 2002:a17:902:e889:b0:151:a56d:eb8f with SMTP id w9-20020a170902e88900b00151a56deb8fmr5270548plg.142.1647531310699; Thu, 17 Mar 2022 08:35:10 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1647531310; cv=none; d=google.com; s=arc-20160816; b=oxKQJBK/KuALCWzKPPTWR+xXT8l2FpDdnXAt6CaE35Q733s894JT2futuPpnS/wJfh 0hU+0BVbQnV5mSxRNOP4gspk1juL2TnyY7i4cqBmfVpEBE1ji9N8XXPOu+41E6ZcdgPd 0ZG3uGASHhxMV4W2f/ishA32IlNjta3r115kuDY3rjWAHSdETAsDo6xoxH+akjlrPBLK dQFVHNcvD5J+QEu0iAztvV8Pq58XZG1U9dMfI8dF7TcFjywI7dvH63oWwzEH7hHw/qfE pG82PoG1ow2fmGV6n3bUMI0O9nyq+O/icWPeSW9dVGUDTIURCsM6pKJqA/nwGi5+675R 5Ekg== 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=jbH1Wqo1tSPJa4AV3EU7gsiYJMCbBZFZiTGAWgrWeFM=; b=X3GZjzDLpcjCXcQGYqnHR6T5OpSF2OIR/kx56tf6gWXHZW+Tq3iLUJCoNB/80CLWhD d5vSEZfHphPWcd6bxuwgRX/bpCTwkflPcmqQiul6zdQfeGjfgSYAUzndgRr58x754EsT QIsS35ilYvSvJHW/YgFHhPqsy2zETHYOWic2Tr8SVK+u9rjkpOEPAI+ZoLaAxk3tnGll Ob0XQQ/PKWR93MuUHofzmVBwmSvwyHhTWQN4vKHzL3DIDMi+A7u8hCG9VnKAFeRKE1pB 05Szwpg3jOwlfQT6Zoh1xFg1BiywBWBo58zoksZrZ1naMLGSSvJREfFQdpnmxB+Kkew7 gtRw== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@intel.com header.s=Intel header.b=HbzE4Aif; spf=pass (google.com: domain of mptcp+bounces-4288-wpasupplicant.patchew=gmail.com@lists.linux.dev designates 2604:1380:1000:8100::1 as permitted sender) smtp.mailfrom="mptcp+bounces-4288-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 m6-20020a63fd46000000b003816043eef4si2331699pgj.233.2022.03.17.08.35.10 for (version=TLS1_2 cipher=ECDHE-ECDSA-AES128-GCM-SHA256 bits=128/128); Thu, 17 Mar 2022 08:35:10 -0700 (PDT) Received-SPF: pass (google.com: domain of mptcp+bounces-4288-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=HbzE4Aif; spf=pass (google.com: domain of mptcp+bounces-4288-wpasupplicant.patchew=gmail.com@lists.linux.dev designates 2604:1380:1000:8100::1 as permitted sender) smtp.mailfrom="mptcp+bounces-4288-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 BD6F93E102C for ; Thu, 17 Mar 2022 15:35:09 +0000 (UTC) Received: from localhost.localdomain (localhost.localdomain [127.0.0.1]) by smtp.subspace.kernel.org (Postfix) with ESMTP id 7D3A94378; Thu, 17 Mar 2022 15:35:07 +0000 (UTC) X-Original-To: mptcp@lists.linux.dev Received: from mga17.intel.com (mga17.intel.com [192.55.52.151]) (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 59BB248A4 for ; Thu, 17 Mar 2022 15:35:06 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1647531306; x=1679067306; h=from:to:subject:date:message-id:in-reply-to:references: mime-version:content-transfer-encoding; bh=EgtX7OdoidfI0MVW/LMhtWa08zx5ZLwz3aDUcE5kC7U=; b=HbzE4AifOgX7Xh7WrfJS0Ui0/e9s9hA1k1YGSFpLbD+jjRU5HBBzou+8 rb15AKe4b94xiBCqgg0dUEkCDumRgAJMPFmrKCsC6Xr69iqzl1KehMQEn /CpwHl182z8Lg6l5hH4vAT/2qX1qBWWh3ksqgUXGmRJqg8MaLLHQibWP4 E08IC9V9Hrnbx5UZ4VsSHeGhOrC+0OH4E+eoXfQpssD6ETO3oK3nNtP2A WrLDwg4DVOweflr+eDM2mV8aIJwHcsOV4daRMdj8cVCutXRnUFOOyvGZz t1RlXjBeRJxV8Gyy5hcwWZz80SHWt/K15gzT5pzo/HikdI4fT7GWrndSd A==; X-IronPort-AV: E=McAfee;i="6200,9189,10289"; a="237504880" X-IronPort-AV: E=Sophos;i="5.90,188,1643702400"; d="scan'208";a="237504880" Received: from orsmga006.jf.intel.com ([10.7.209.51]) by fmsmga107.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 17 Mar 2022 08:35:02 -0700 X-IronPort-AV: E=Sophos;i="5.90,188,1643702400"; d="scan'208";a="516804209" Received: from otc-tsn-4.jf.intel.com ([10.23.153.135]) by orsmga006-auth.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 17 Mar 2022 08:35:01 -0700 From: Kishen Maloor To: kishen.maloor@intel.com, mptcp@lists.linux.dev Subject: [PATCH mptcp-next v7 4/5] mptcp: establish subflows from either end of connection Date: Thu, 17 Mar 2022 11:34:52 -0400 Message-Id: <20220317153453.665359-5-kishen.maloor@intel.com> X-Mailer: git-send-email 2.31.1 In-Reply-To: <20220317153453.665359-1-kishen.maloor@intel.com> References: <20220317153453.665359-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 3e5c8d5273a9..9b655d049b94 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