From nobody Mon Feb 9 09:32:54 2026 Delivered-To: wpasupplicant.patchew@gmail.com Received: by 2002:a05:6638:2248:0:0:0:0 with SMTP id m8csp375772jas; Thu, 27 Jan 2022 16:38:53 -0800 (PST) X-Google-Smtp-Source: ABdhPJytynL+IivXu83iu/uvKFX5BWG1u8YMv412/0/JiFNUA2O7gCTfxB9hFoH3/6TdSjRVEeRe X-Received: by 2002:a17:90a:d983:: with SMTP id d3mr16819702pjv.56.1643330333796; Thu, 27 Jan 2022 16:38:53 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1643330333; cv=none; d=google.com; s=arc-20160816; b=qHd/7Sboj8QKIvwG3oqP3lFz3FBhsa6XGtZT/n1/SKFKxJTQUslPZZ6TgO6+Puu2A9 GGTweIkIJ/KvBZkX4TjgEl2VHj6A6HCpiJ2YiH2rxmkey87YikYze3GzKkuAsxdUYZff /hQiWaQMcfo9gZfqqQ8RMIu6apGn3og0vOFJoFMlJAJL/pLW3y8ILsLYgyyswu9ECe2v TC7aitSBMbwYPajFFFRa9KqhCF3fR2QYHUi/ucNqbULtOP3+q1dplt3vdveDj4QFGUg+ 3SHJvmYsREEWVtM0tYaGGwJP/RPfiCMV/xACiqLureCzIMz1QbRnG25VATjDFD0N6BHY Aycg== 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=nnVnW7NaexvyA7lvCOyH5Jqm5PuLyK59mZLESe1/gUk=; b=wJJ5GrKG11sM+/RphFvlVBt+Rt9+MAwEnWB1iucwEb807P0THXpFa9D3hX6m4bvxJz wrJUTaJXRiNhlG1WDj4j7IO+IqLCexWDxFc3TXFoRUh8HYGlQelvoLH1pDyJ7A2cpP1W IBhVEaPGXZ/766fTXwGrMEwWMb67ZJEhZ8haTQehtoNqxPhrmn77ZtSgh2QqkGhHkX8k WsNspGzHULyfYjKnkAZfE/YXbFk4EPS4c3KJvpgkP6S+GDNPCnOu4nVv5h6CkrmpGDGy MKOwlkjuJnhsLxzj0CD/cm3XKIsB8sNvJdD3uRK9G6X0h9IRZ2Dhi3gwvM3rjRRJNbgr 3uWw== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@intel.com header.s=Intel header.b="Jcf/CQ3M"; spf=pass (google.com: domain of mptcp+bounces-3344-wpasupplicant.patchew=gmail.com@lists.linux.dev designates 2604:1380:1000:8100::1 as permitted sender) smtp.mailfrom="mptcp+bounces-3344-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 h13si3683978pfi.361.2022.01.27.16.38.53 for (version=TLS1_2 cipher=ECDHE-ECDSA-AES128-GCM-SHA256 bits=128/128); Thu, 27 Jan 2022 16:38:53 -0800 (PST) Received-SPF: pass (google.com: domain of mptcp+bounces-3344-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="Jcf/CQ3M"; spf=pass (google.com: domain of mptcp+bounces-3344-wpasupplicant.patchew=gmail.com@lists.linux.dev designates 2604:1380:1000:8100::1 as permitted sender) smtp.mailfrom="mptcp+bounces-3344-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 571F93E0F20 for ; Fri, 28 Jan 2022 00:38:53 +0000 (UTC) Received: from localhost.localdomain (localhost.localdomain [127.0.0.1]) by smtp.subspace.kernel.org (Postfix) with ESMTP id 5F0B62CAE; Fri, 28 Jan 2022 00:38:47 +0000 (UTC) X-Original-To: mptcp@lists.linux.dev Received: from mga04.intel.com (mga04.intel.com [192.55.52.120]) (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 4CF582CA8 for ; Fri, 28 Jan 2022 00:38:46 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1643330326; x=1674866326; h=from:to:subject:date:message-id:in-reply-to:references: mime-version:content-transfer-encoding; bh=bKdXD6vgqKi6AwN+Uu8BGYp9THOjdb5gywK9XfblEa4=; b=Jcf/CQ3MqqNO0vi0fYUct0lm8QpyyMGUAoWWUOSjcLyHfBwiJj03P41o 5HGBO1jgOgALPH4tSBK9g2a9OrPc8Wqn6hGvjYuByjW3JLtpAhHZ1FRHq hl+KLKdKfmJ1KlxXYMPlY02VCSTQy6Qe9yA83jZgBk8M4X0CD91bttABN C2IpIJ5dHQPbTZOWe7vGouAp1zwYzSKZ2pwpjBHb+FwNwPrbKtRL3rj3J mC3REcXcZEMNVwfjT9SJTTLSMwYuN/Tco+FErAuLAc8yfVxOUma5EOw3t bBtBBTlU6LOoaDjSXmemxnci2Hap4Z2UypJhLCzTIf0a+0rx921SNuXSl Q==; X-IronPort-AV: E=McAfee;i="6200,9189,10239"; a="245846915" X-IronPort-AV: E=Sophos;i="5.88,322,1635231600"; d="scan'208";a="245846915" Received: from orsmga001.jf.intel.com ([10.7.209.18]) by fmsmga104.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 27 Jan 2022 16:38:24 -0800 X-IronPort-AV: E=Sophos;i="5.88,322,1635231600"; d="scan'208";a="564000999" Received: from otc-tsn-4.jf.intel.com ([10.23.153.135]) by orsmga001-auth.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 27 Jan 2022 16:38:20 -0800 From: Kishen Maloor To: kishen.maloor@intel.com, mptcp@lists.linux.dev Subject: [PATCH mptcp-next v3 4/8] mptcp: establish subflows from either end of connection Date: Thu, 27 Jan 2022 19:38:08 -0500 Message-Id: <20220128003812.2732609-5-kishen.maloor@intel.com> X-Mailer: git-send-email 2.31.1 In-Reply-To: <20220128003812.2732609-1-kishen.maloor@intel.com> References: <20220128003812.2732609-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 --- v2: check for 3rd ACK retransmission only on passive side of the MPJ handshake v3: check for active subflow socket in subflow_simultaneous_connect --- 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 0d3c8f7e5be6..947820a9da0d 100644 --- a/net/mptcp/options.c +++ b/net/mptcp/options.c @@ -930,7 +930,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 526a0f5ba415..7c591177c3e8 100644 --- a/net/mptcp/protocol.c +++ b/net/mptcp/protocol.c @@ -3256,15 +3256,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 d20c65fcba89..30006735afb7 100644 --- a/net/mptcp/protocol.h +++ b/net/mptcp/protocol.h @@ -906,13 +906,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