From nobody Mon May 6 00:23:19 2024 Delivered-To: wpasupplicant.patchew@gmail.com Received: by 2002:aa7:c50d:0:0:0:0:0 with SMTP id o13csp29754edq; Thu, 17 Mar 2022 15:14:50 -0700 (PDT) X-Google-Smtp-Source: ABdhPJxtkORc36Rtd4Q1Zi4BxOd/lHV+iHHDY9ZMlq79hYxAL94BbdkpixX44zFCfuHSmoULvOFw X-Received: by 2002:a63:4d5e:0:b0:381:4050:9111 with SMTP id n30-20020a634d5e000000b0038140509111mr5415970pgl.9.1647555290624; Thu, 17 Mar 2022 15:14:50 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1647555290; cv=none; d=google.com; s=arc-20160816; b=Hgbc5uMKHVoz6fbKYOt6KxX3WROKsTShCgJ3jqK75crWrLKMC5aL1HdlHbrAlDMQYJ nJeU8j06W5YrwdjTLtAs8KS8E0qCNQ8qcGJcdzpqsuXJvBGjRR9jeik/m7Xvsxq4HKzK DNIgkoUJCMQ7MwlmG0V9oB4QVk7V/6Kv8/Khc9xvodDudewDkXz5T17q6bicImihrSZw vilJ+EhByT3RhGodtcOcAA5b8S8uZFlKyISbglkLTcjYCF7UrlyAQooByzJy9wWqTYfE AOY1pvVqaNCUcIZZwbxpWdnZaWydmyfgGm6mdI0nW6nc+xAW8YtDAOdw18zMogKzzEpz Fhbg== 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:message-id:date:subject:cc:to :from:dkim-signature; bh=Uf3/3xVqF1blWHFTDong5zHyH+Z0xaeAXWGsOtvarAA=; b=CukPcYx1KKiuETG8uNF3ap1p8rGn7RN4hQ97Z1KjwpetHESgUvxcweC9Y2bVnUzzLo q5nCMmnwxNooHIb/5zNXPmC8uEABIJEKBNCvFRudM4DEjV4YykGEpf1pWN8muVwuvnUO D7lcUX+temjlm0dHaOxealDTAq+2AP0GlvqchGA6SzkJXQsNfoSTliPGU0SvdnYzMAkY c6GL3uNnxIh9DI63gjg5701Amx3Slu66MuXX4oSgvfvdYnfe1FUikfKa0YUtHtNy48ix b4kjJ782riZc9opMFvqqF4LTjwNsy/GvdcthaqdCQ8haZaPnZ9/tEAAxBNo1rmqoRz4T 4bAQ== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@intel.com header.s=Intel header.b=kr9UTcwV; spf=pass (google.com: domain of mptcp+bounces-4293-wpasupplicant.patchew=gmail.com@lists.linux.dev designates 147.75.69.165 as permitted sender) smtp.mailfrom="mptcp+bounces-4293-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 u4-20020a170903124400b00153b2d16551si325666plh.345.2022.03.17.15.14.50 for (version=TLS1_2 cipher=ECDHE-ECDSA-AES128-GCM-SHA256 bits=128/128); Thu, 17 Mar 2022 15:14:50 -0700 (PDT) Received-SPF: pass (google.com: domain of mptcp+bounces-4293-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=kr9UTcwV; spf=pass (google.com: domain of mptcp+bounces-4293-wpasupplicant.patchew=gmail.com@lists.linux.dev designates 147.75.69.165 as permitted sender) smtp.mailfrom="mptcp+bounces-4293-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 BDF643E1018 for ; Thu, 17 Mar 2022 22:14:49 +0000 (UTC) Received: from localhost.localdomain (localhost.localdomain [127.0.0.1]) by smtp.subspace.kernel.org (Postfix) with ESMTP id BADC54AB4; Thu, 17 Mar 2022 22:14:48 +0000 (UTC) X-Original-To: mptcp@lists.linux.dev Received: from mga12.intel.com (mga12.intel.com [192.55.52.136]) (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 28A1C4A9F for ; Thu, 17 Mar 2022 22:14:47 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1647555287; x=1679091287; h=from:to:cc:subject:date:message-id:mime-version: content-transfer-encoding; bh=LBH3oVPpZUWhACuFbLsRx6LPCOq5e55Un5nLgYAZFN8=; b=kr9UTcwVocAFdBfpOGA6gBFmNOLVNtm7iTMs9pyUKch/r2k7MyizULek HrT7rJA2bJaluqTbmKrr4M4P9VKUFpfvX6beSV0MGry1LA8eKR7bz2Mrr 54ziwPtjPjh5Ok6ZUdSNFEnjB6JAZW6lAUDXPaC/vp20QPN22r2qLcFwR 8mA5DNCYmsUvxQeGi+ip2xqeML3/WyD92K5qHmHHfLm3RVgOoj2re5dJn 2Ao/8NaTe5msjUiJ/CVlgJzsUCDuA7YtWd/TZYjXcI120BknwYIqXj8Gd 6Z95ZB1BbrmVQqtkeVoXr0a9jN0koW6ml4YbwHz8P9pq902kg48Z+TSR7 A==; X-IronPort-AV: E=McAfee;i="6200,9189,10289"; a="236939779" X-IronPort-AV: E=Sophos;i="5.90,190,1643702400"; d="scan'208";a="236939779" Received: from orsmga003.jf.intel.com ([10.7.209.27]) by fmsmga106.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 17 Mar 2022 15:14:46 -0700 X-IronPort-AV: E=Sophos;i="5.90,190,1643702400"; d="scan'208";a="499002728" Received: from mjmartin-desk2.amr.corp.intel.com (HELO mjmartin-desk2.intel.com) ([10.251.9.212]) by orsmga003-auth.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 17 Mar 2022 15:14:46 -0700 From: Mat Martineau To: netdev@vger.kernel.org Cc: Yonglong Li , davem@davemloft.net, kuba@kernel.org, matthieu.baerts@tessares.net, mptcp@lists.linux.dev, Paolo Abeni , Mat Martineau Subject: [PATCH net-next] mptcp: send ADD_ADDR echo before create subflows Date: Thu, 17 Mar 2022 15:14:44 -0700 Message-Id: <20220317221444.426335-1-mathew.j.martineau@linux.intel.com> X-Mailer: git-send-email 2.35.1 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" From: Yonglong Li In some corner cases, the peer handing an incoming ADD_ADDR option, can receive a retransmitted ADD_ADDR for the same address before the subflow creation completes. We can avoid the above issue by generating and sending the ADD_ADDR echo before starting the MPJ subflow connection. This slightly changes the behaviour of the packetdrill tests as the ADD_ADDR echo packet is sent earlier. Acked-by: Paolo Abeni Signed-off-by: Yonglong Li Signed-off-by: Mat Martineau --- net/mptcp/pm_netlink.c | 18 +++++------------- 1 file changed, 5 insertions(+), 13 deletions(-) diff --git a/net/mptcp/pm_netlink.c b/net/mptcp/pm_netlink.c index 800515fe5e1d..b5e8de6f7507 100644 --- a/net/mptcp/pm_netlink.c +++ b/net/mptcp/pm_netlink.c @@ -650,7 +650,6 @@ static void mptcp_pm_nl_add_addr_received(struct mptcp_= sock *msk) unsigned int add_addr_accept_max; struct mptcp_addr_info remote; unsigned int subflows_max; - bool reset_port =3D false; int i, nr; =20 add_addr_accept_max =3D mptcp_pm_get_add_addr_accept_max(msk); @@ -661,14 +660,15 @@ static void mptcp_pm_nl_add_addr_received(struct mptc= p_sock *msk) msk->pm.remote.family); =20 remote =3D msk->pm.remote; + mptcp_pm_announce_addr(msk, &remote, true); + mptcp_pm_nl_addr_send_ack(msk); + if (lookup_subflow_by_daddr(&msk->conn_list, &remote)) - goto add_addr_echo; + return; =20 /* pick id 0 port, if none is provided the remote address */ - if (!remote.port) { - reset_port =3D true; + if (!remote.port) remote.port =3D sk->sk_dport; - } =20 /* connect to the specified remote address, using whatever * local address the routing configuration will pick. @@ -684,14 +684,6 @@ static void mptcp_pm_nl_add_addr_received(struct mptcp= _sock *msk) for (i =3D 0; i < nr; i++) __mptcp_subflow_connect(sk, &addrs[i], &remote); spin_lock_bh(&msk->pm.lock); - - /* be sure to echo exactly the received address */ - if (reset_port) - remote.port =3D 0; - -add_addr_echo: - mptcp_pm_announce_addr(msk, &remote, true); - mptcp_pm_nl_addr_send_ack(msk); } =20 void mptcp_pm_nl_addr_send_ack(struct mptcp_sock *msk) base-commit: 1abea24af42c35c6eb537e4402836e2cde2a5b13 --=20 2.35.1