From nobody Fri Apr 26 16:49:11 2024 Delivered-To: wpasupplicant.patchew@gmail.com Received: by 2002:a02:b119:0:0:0:0:0 with SMTP id r25csp1107757jah; Wed, 12 Jan 2022 14:16:15 -0800 (PST) X-Google-Smtp-Source: ABdhPJxfZE0uEt0hpLXVAsjRWH1Gec+PSVHYLXVdt5bZx7u/4zofsxwqFkZIAOSu4jWAsnK45bxy X-Received: by 2002:a05:622a:14c8:: with SMTP id u8mr1442448qtx.267.1642025775327; Wed, 12 Jan 2022 14:16:15 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1642025775; cv=none; d=google.com; s=arc-20160816; b=CCRyq9vsmC7t8HCvwAsRkviBNpO0Wzvzs6u/e3/TmdyWFpHQVTxfC3lNCYmRHnYjGj LByVGNbhSd7COzGXHBQ73FCCcRyQKE3KqT7KlpnwekxrAtF9AjoxDAPYS06pi/snYWTF DqAf6GpQzf3hiD7b/f/oRqCB0YJU+VcOeymSR1QRkhrnCa7cePWfBwjpGuJEfmd/9GC2 kWiuTeokZiQ1cfUhoYcMcUknQpwLFoxJ7LiFPxkxSGYLVmV3E79BCGU+TQNfGROZfrcg Az3CeYSBHAQQkK+PD4VtmY9ZvntCFpcCL5yyhmXKX1WzHn88m5TXxQ2bT6LXjtt3Osq2 Q/sA== 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=l/IfxvvIt6+EdP8rl2d+UG7L7bBMFXNd3VLt53PbbxQ=; b=RpHUGa9epDzWyb4xu2YCDbcnL9RQytCCskDBWB5QIl+20Vs4iNzT76QrUKMDcdABwq M0fviF5tBy3yDu/euEr/gNQMIsMqG2Pn5R0C2rPG64ttpJlefh8WCMldUSmIGVX6xD+p aDYVsAoVNfjPy7eCusAjGPL+8+ZJefVj2gUaL7EnLeeO0pnjdKeZFx6nGa5pL/hUi+jw +rO9qOBs4xJsZVeHHNMDOkzlNrVWPOGvDik5wzaEl06f7sEOWSpFlvQWe0GVoiG/v0Jb W5Vi2+EwHtKFIxbwz8OxPpkFCcIgsZjjC6kQ8OxCKIonKQO+RzMyLTlYUHF4d/MF2CVg yv6A== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@intel.com header.s=Intel header.b=WQT1JFih; spf=pass (google.com: domain of mptcp+bounces-3076-wpasupplicant.patchew=gmail.com@lists.linux.dev designates 2604:1380:1:3600::1 as permitted sender) smtp.mailfrom="mptcp+bounces-3076-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 s3si477885qtw.734.2022.01.12.14.16.15 for (version=TLS1_2 cipher=ECDHE-ECDSA-AES128-GCM-SHA256 bits=128/128); Wed, 12 Jan 2022 14:16:15 -0800 (PST) Received-SPF: pass (google.com: domain of mptcp+bounces-3076-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=WQT1JFih; spf=pass (google.com: domain of mptcp+bounces-3076-wpasupplicant.patchew=gmail.com@lists.linux.dev designates 2604:1380:1:3600::1 as permitted sender) smtp.mailfrom="mptcp+bounces-3076-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 EFE971C0C61 for ; Wed, 12 Jan 2022 22:16:14 +0000 (UTC) Received: from localhost.localdomain (localhost.localdomain [127.0.0.1]) by smtp.subspace.kernel.org (Postfix) with ESMTP id 944F12C9C; Wed, 12 Jan 2022 22:16:12 +0000 (UTC) X-Original-To: mptcp@lists.linux.dev Received: from mga07.intel.com (mga07.intel.com [134.134.136.100]) (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 74B7E2CA5 for ; Wed, 12 Jan 2022 22:16: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=1642025771; x=1673561771; h=from:to:subject:date:message-id:in-reply-to:references: mime-version:content-transfer-encoding; bh=S0AsE2RcH/TKnANLPBUSz/kAluumjiVVGKrw50vnyG4=; b=WQT1JFihLmwUvtEx71l5vxDcvgyKhOFB2+O9bUByyQX/HsHFDurlaL33 oILCGK0PQFbbB2CcWwnUrqWZVUV8lpXlDQvec5RW3EWknJqRIrVfVqmqv ancXj7cR2aWQr696qMmBuDExVtYcCb7zopvnyUiY5mXEXdSh6jXnF68tQ /ir9DWafyOHasWrVgeH6Vbui2M0EuwWLkWHSpV1QnECCSVgtFbDywC75I nbFOIcjaFkPvb0nnwjtw98fOwxyOm3SLgDh3rZp+7gwlaiSVv1aJfY4/O 7PDA/JlG/HyOJk6ZolhqUjgMc2bihqFKjFzg/rlv9ZKFmmwmF2Vl7ATgC A==; X-IronPort-AV: E=McAfee;i="6200,9189,10225"; a="307213931" X-IronPort-AV: E=Sophos;i="5.88,284,1635231600"; d="scan'208";a="307213931" Received: from orsmga002.jf.intel.com ([10.7.209.21]) by orsmga105.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 12 Jan 2022 14:16:07 -0800 X-IronPort-AV: E=Sophos;i="5.88,284,1635231600"; d="scan'208";a="490907339" Received: from otc-tsn-4.jf.intel.com ([10.23.153.135]) by orsmga002-auth.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 12 Jan 2022 14:16:07 -0800 From: Kishen Maloor To: kishen.maloor@intel.com, mptcp@lists.linux.dev Subject: [PATCH mptcp-next v2 04/21] mptcp: establish subflows from either end of connection Date: Wed, 12 Jan 2022 17:15:06 -0500 Message-Id: <20220112221523.1829397-5-kishen.maloor@intel.com> X-Mailer: git-send-email 2.31.1 In-Reply-To: <20220112221523.1829397-1-kishen.maloor@intel.com> References: <20220112221523.1829397-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). v2: check for 3rd ACK retransmission only on passive side of the MPJ handshake Signed-off-by: Kishen Maloor --- net/mptcp/options.c | 2 +- net/mptcp/protocol.c | 5 +---- net/mptcp/protocol.h | 2 -- 3 files changed, 2 insertions(+), 7 deletions(-) diff --git a/net/mptcp/options.c b/net/mptcp/options.c index cceba8c7806d..89808816db06 100644 --- a/net/mptcp/options.c +++ b/net/mptcp/options.c @@ -921,7 +921,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 4012f844eec1..408a05bff633 100644 --- a/net/mptcp/protocol.c +++ b/net/mptcp/protocol.c @@ -3248,15 +3248,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 e2a67d3469f6..c50247673c7e 100644 --- a/net/mptcp/protocol.h +++ b/net/mptcp/protocol.h @@ -908,10 +908,8 @@ static inline bool mptcp_check_infinite_map(struct sk_= buff *skb) 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 && !subflow->conn_finished; } =20 --=20 2.31.1