From nobody Tue May 7 11:25:05 2024 Delivered-To: wpasupplicant.patchew@gmail.com Received: by 2002:a05:6402:358d:0:0:0:0 with SMTP id y13csp814085edc; Mon, 7 Mar 2022 12:44:49 -0800 (PST) X-Google-Smtp-Source: ABdhPJy99FCzf6N+AZMwfVaTV51jIoFtJTmP8HgUhgAcTvt4MMLXwPrXBgTkHCx7Wu4du6Hxw//Q X-Received: by 2002:a81:738a:0:b0:2dc:2bf4:76b0 with SMTP id o132-20020a81738a000000b002dc2bf476b0mr9678096ywc.296.1646685889717; Mon, 07 Mar 2022 12:44:49 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1646685889; cv=none; d=google.com; s=arc-20160816; b=0+BvHgTST4wkMnIWABo+IMoctWsAgAEHLu3rFbaO1vT3Dwoer3Qw18YdF1K1y26Y/M km1FGaLURvggZ5zpunWW3Rl3ZbMV4GRair1Jy6I4KkSa8Gy04E5IXAV0El4SkAd9zJVf fqRatLeDMNupyXxac2OZDs5F6ogQpLMbvB9v2aNV2pV40X0LRrzFB6fmjPa6rPDEvBSd i2LZZCFi4GN47n+U95IXuArU2CgfC/sGp6pZUL0Ihq/ANWLR7mYgCRQbnlU5Dkzjz+Zz L0HTdmjRrO/i1TB7oSSytLg3T8mMTxu2veUPvsQaQj+QuPFAEMvNpeyhempypnQaKKh8 6TGw== 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:cc:to:from:dkim-signature; bh=8Nbnr7QDF3C+cfyKTPhN3i2mWzdvEz2WrYq9ayiwZAA=; b=yNdrcYd9h5XXoD08pYqWXks1c+i1zMBEdAUQeE5++S2i+7xO+yUIOEKFDDffi9FKRx Y2ILLeV6Wd5qJP4LobrgEXvLfaqmj23iZU9LXEkHRdUBLkGCUhYR3zUEw5T43E+hppNN vOpYka0zdMie2IBLNg6Q6JYD8Kfn2H3LPflnTbSRo8GYIDhb/EYz65NhLSVSPTNwC7YH fG3fiJYwqBvwwh0fx/3Kj/gMwPQ74ugVKehlQTslWGkt53df5GOrV1bg3DwpeGrgZapw ZfoWNh4/yFSp4gMDmbFkesOG3saAAdE21k0mLmTeX5l7KKYRzeMJVkWB+9dsQ+xiGQvL 27Dw== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@intel.com header.s=Intel header.b=faBRPrsR; spf=pass (google.com: domain of mptcp+bounces-4132-wpasupplicant.patchew=gmail.com@lists.linux.dev designates 147.75.197.195 as permitted sender) smtp.mailfrom="mptcp+bounces-4132-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 t2-20020a817802000000b002d7d318329asi8565569ywc.132.2022.03.07.12.44.49 for (version=TLS1_2 cipher=ECDHE-ECDSA-AES128-GCM-SHA256 bits=128/128); Mon, 07 Mar 2022 12:44:49 -0800 (PST) Received-SPF: pass (google.com: domain of mptcp+bounces-4132-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=faBRPrsR; spf=pass (google.com: domain of mptcp+bounces-4132-wpasupplicant.patchew=gmail.com@lists.linux.dev designates 147.75.197.195 as permitted sender) smtp.mailfrom="mptcp+bounces-4132-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 445871C09FF for ; Mon, 7 Mar 2022 20:44:49 +0000 (UTC) Received: from localhost.localdomain (localhost.localdomain [127.0.0.1]) by smtp.subspace.kernel.org (Postfix) with ESMTP id A5043434D; Mon, 7 Mar 2022 20:44:47 +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 865E24349 for ; Mon, 7 Mar 2022 20:44: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=1646685886; x=1678221886; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=4ucCVEbG2r6tv8BhrEAQxcmNxQ5DVG9ZS+1eowHh6Zk=; b=faBRPrsRW97i9s1AVOoQb5G1zEatk5PmF9WpdIfryLQbUmZyGVWeRgwD HykcxV4Z4ICXEZnEz1UQ5+jbvKegADS+Eq+g/CUNi/CiACWvwurfaZQR7 JHR6PidSRp4IpjKmPvgBbQEjDx/5eT7RqdJo7MHnl6w1j0hpNdIbBAXB0 Guq4PGRwzlU6S1Xwmp4k98X37IKcGbHivlGh242o3MWgMrkpV46VlkGZ+ Psx2grUyBe4WsQGQNe1UiZQjMqcbuIDa7h98eTdQoxghQIG//qk2eL+tJ T6uAG7zJjuw4NiuD3mYUv3MExzgMGjJoTk1j5d6xlJb5HPIXFWknz/iDo Q==; X-IronPort-AV: E=McAfee;i="6200,9189,10279"; a="317731783" X-IronPort-AV: E=Sophos;i="5.90,163,1643702400"; d="scan'208";a="317731783" Received: from orsmga008.jf.intel.com ([10.7.209.65]) by orsmga105.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 07 Mar 2022 12:44:44 -0800 X-IronPort-AV: E=Sophos;i="5.90,163,1643702400"; d="scan'208";a="553320480" Received: from mjmartin-desk2.amr.corp.intel.com (HELO mjmartin-desk2.intel.com) ([10.212.192.43]) by orsmga008-auth.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 07 Mar 2022 12:44:44 -0800 From: Mat Martineau To: netdev@vger.kernel.org Cc: Geliang Tang , davem@davemloft.net, kuba@kernel.org, matthieu.baerts@tessares.net, mptcp@lists.linux.dev, Mat Martineau Subject: [PATCH net-next 1/9] mptcp: add tracepoint in mptcp_sendmsg_frag Date: Mon, 7 Mar 2022 12:44:31 -0800 Message-Id: <20220307204439.65164-2-mathew.j.martineau@linux.intel.com> X-Mailer: git-send-email 2.35.1 In-Reply-To: <20220307204439.65164-1-mathew.j.martineau@linux.intel.com> References: <20220307204439.65164-1-mathew.j.martineau@linux.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" From: Geliang Tang The tracepoint in get_mapping_status() only dumped the incoming mpext fields. This patch added a new tracepoint in mptcp_sendmsg_frag() to dump the outgoing mpext too. Signed-off-by: Geliang Tang Signed-off-by: Mat Martineau --- include/trace/events/mptcp.h | 4 ++++ net/mptcp/protocol.c | 1 + 2 files changed, 5 insertions(+) diff --git a/include/trace/events/mptcp.h b/include/trace/events/mptcp.h index 6bf43176f14c..f8e28e686c65 100644 --- a/include/trace/events/mptcp.h +++ b/include/trace/events/mptcp.h @@ -115,6 +115,10 @@ DECLARE_EVENT_CLASS(mptcp_dump_mpext, __entry->csum_reqd) ); =20 +DEFINE_EVENT(mptcp_dump_mpext, mptcp_sendmsg_frag, + TP_PROTO(struct mptcp_ext *mpext), + TP_ARGS(mpext)); + DEFINE_EVENT(mptcp_dump_mpext, get_mapping_status, TP_PROTO(struct mptcp_ext *mpext), TP_ARGS(mpext)); diff --git a/net/mptcp/protocol.c b/net/mptcp/protocol.c index 1c72f25f083e..36a7d33f670a 100644 --- a/net/mptcp/protocol.c +++ b/net/mptcp/protocol.c @@ -1356,6 +1356,7 @@ static int mptcp_sendmsg_frag(struct sock *sk, struct= sock *ssk, out: if (READ_ONCE(msk->csum_enabled)) mptcp_update_data_checksum(skb, copy); + trace_mptcp_sendmsg_frag(mpext); mptcp_subflow_ctx(ssk)->rel_write_seq +=3D copy; return copy; } --=20 2.35.1 From nobody Tue May 7 11:25:05 2024 Delivered-To: wpasupplicant.patchew@gmail.com Received: by 2002:a05:6402:358d:0:0:0:0 with SMTP id y13csp814088edc; Mon, 7 Mar 2022 12:44:51 -0800 (PST) X-Google-Smtp-Source: ABdhPJwWyrUWq6yvRT8gWq+wAHrGxhfOYcnquscjZJgYK02vTGW9nD1uK1ZAzgqUQg9+wYlvf1m3 X-Received: by 2002:a25:ef43:0:b0:624:a7ba:d4d1 with SMTP id w3-20020a25ef43000000b00624a7bad4d1mr9207043ybm.110.1646685891219; Mon, 07 Mar 2022 12:44:51 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1646685891; cv=none; d=google.com; s=arc-20160816; b=kZ1WdL48xwjejquA0nz+5rhwB0tkE7uU39Li1PO04DOvwhSQvIko2welbNf2NRVj8A yR+IbcFZzkQXKne8neVJDJJ2ELD5DQrML6KfbIArGajrG5Q1/VQRlzXtg3eIlxJ4R9qM di8/KyiXv0QMQt6NMaUlmWNP8y3uqdTtnG7L4Vt4/EBzBCV1YHSBRLhMGBb/S2ckYw0G 669pEAmaQoasw0Z2T1HNUwiwedeQI1looXqy/LnDtieSOtCLUUkXvBKXmUmxRODr4XCF NADUHdOEG226EF+yxkrtkJYo8M+KWL8BxIoW5n8dARRJyDdn1ptS7jTyyENcpBywZCsJ uBPw== 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:cc:to:from:dkim-signature; bh=hNw76oEw5UcuXgriWvVTuPi/s7msFJ2KecNFLgtjb3E=; b=r6wxjPy5rSTn1QRmLM5N6bs7d28pguseHU+/9j0n9nSMPcPR4aN9Gev7CSHZIvEAaq wWIGIFKoIsjepl/Elxi7Uog5mGLwB/jGFVta5VH4xQfnxMtcwu3cUz8KnKR0cUsxwAMm BxDHW/Yw08zdr5pcGem4mZxIAwFpSFahU+ip0U92gRBZUX5h/RhCRM8r79DPmOd+kyOr igfgjo1d820dZ0UOFsx74xWfA7IF1pYpKAIMnHv+LBHH0yGlIYNdWoKjI5N4OYlwzf8m Hb60CR3lkf6M61wNulCsALArpJUu7nh1XTyzip6KD3BBK+mTl1k+gdJiPtgOHyBerdky K3vg== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@intel.com header.s=Intel header.b=bgBOZaOF; spf=pass (google.com: domain of mptcp+bounces-4133-wpasupplicant.patchew=gmail.com@lists.linux.dev designates 2604:1380:1:3600::1 as permitted sender) smtp.mailfrom="mptcp+bounces-4133-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 x9-20020a259c49000000b00629173c8676si4189896ybo.167.2022.03.07.12.44.51 for (version=TLS1_2 cipher=ECDHE-ECDSA-AES128-GCM-SHA256 bits=128/128); Mon, 07 Mar 2022 12:44:51 -0800 (PST) Received-SPF: pass (google.com: domain of mptcp+bounces-4133-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=bgBOZaOF; spf=pass (google.com: domain of mptcp+bounces-4133-wpasupplicant.patchew=gmail.com@lists.linux.dev designates 2604:1380:1:3600::1 as permitted sender) smtp.mailfrom="mptcp+bounces-4133-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 8CC111C05F8 for ; Mon, 7 Mar 2022 20:44:50 +0000 (UTC) Received: from localhost.localdomain (localhost.localdomain [127.0.0.1]) by smtp.subspace.kernel.org (Postfix) with ESMTP id DD67D434E; Mon, 7 Mar 2022 20:44:47 +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 C438638FE for ; Mon, 7 Mar 2022 20:44: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=1646685886; x=1678221886; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=eDGInZ02EZTQhjOVuz9yt7L4hFYAeZ10SMHH1IYnTJY=; b=bgBOZaOFvclUu63fZ4lCn0XlJsvRAjGDvTJFMsay2wWuflBvAOjwb9mt IUeHxNP8CfvxYbL95NxCpw6bIP3uVvKCTHuAVy0CvCYZyWt72PklLrtKi PigR17GtQSttd++qXC+hA4NFnpUqCceqhLQA0unqSGyJTU+Maq7Kgm6Df yDsGW4zRH+fa8NAUWx2vNtCuRqN7Mm4rMC7x4AQa6CTw8+ExYPGmW81u+ lCb/YMq3ReLVWjqbu/yCPDlP0m+XgcW6zkn5Tn2pagphkVm/u2hS02XlB wIidasUbLeSnnPDBgHe920LtTeYzZxJPZs1Dmoyuxk+BhMoT+SyaW90m2 w==; X-IronPort-AV: E=McAfee;i="6200,9189,10279"; a="317731784" X-IronPort-AV: E=Sophos;i="5.90,163,1643702400"; d="scan'208";a="317731784" Received: from orsmga008.jf.intel.com ([10.7.209.65]) by orsmga105.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 07 Mar 2022 12:44:44 -0800 X-IronPort-AV: E=Sophos;i="5.90,163,1643702400"; d="scan'208";a="553320482" Received: from mjmartin-desk2.amr.corp.intel.com (HELO mjmartin-desk2.intel.com) ([10.212.192.43]) by orsmga008-auth.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 07 Mar 2022 12:44:44 -0800 From: Mat Martineau To: netdev@vger.kernel.org Cc: Geliang Tang , davem@davemloft.net, kuba@kernel.org, matthieu.baerts@tessares.net, mptcp@lists.linux.dev, Mat Martineau Subject: [PATCH net-next 2/9] mptcp: use MPTCP_SUBFLOW_NODATA Date: Mon, 7 Mar 2022 12:44:32 -0800 Message-Id: <20220307204439.65164-3-mathew.j.martineau@linux.intel.com> X-Mailer: git-send-email 2.35.1 In-Reply-To: <20220307204439.65164-1-mathew.j.martineau@linux.intel.com> References: <20220307204439.65164-1-mathew.j.martineau@linux.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" From: Geliang Tang Set subflow->data_avail with the enum value MPTCP_SUBFLOW_NODATA, instead of using 0 directly. Reviewed-by: Matthieu Baerts Signed-off-by: Geliang Tang Signed-off-by: Mat Martineau --- net/mptcp/subflow.c | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/net/mptcp/subflow.c b/net/mptcp/subflow.c index 45c004f87f5a..bb09a008e733 100644 --- a/net/mptcp/subflow.c +++ b/net/mptcp/subflow.c @@ -1104,7 +1104,7 @@ static bool subflow_check_data_avail(struct sock *ssk) struct sk_buff *skb; =20 if (!skb_peek(&ssk->sk_receive_queue)) - WRITE_ONCE(subflow->data_avail, 0); + WRITE_ONCE(subflow->data_avail, MPTCP_SUBFLOW_NODATA); if (subflow->data_avail) return true; =20 @@ -1169,7 +1169,7 @@ static bool subflow_check_data_avail(struct sock *ssk) subflow->reset_transient =3D 0; subflow->reset_reason =3D MPTCP_RST_EMIDDLEBOX; tcp_send_active_reset(ssk, GFP_ATOMIC); - WRITE_ONCE(subflow->data_avail, 0); + WRITE_ONCE(subflow->data_avail, MPTCP_SUBFLOW_NODATA); return true; } =20 @@ -1182,7 +1182,7 @@ static bool subflow_check_data_avail(struct sock *ssk) subflow->reset_transient =3D 0; subflow->reset_reason =3D MPTCP_RST_EMPTCP; tcp_send_active_reset(ssk, GFP_ATOMIC); - WRITE_ONCE(subflow->data_avail, 0); + WRITE_ONCE(subflow->data_avail, MPTCP_SUBFLOW_NODATA); return false; } =20 @@ -1204,7 +1204,7 @@ bool mptcp_subflow_data_available(struct sock *sk) if (subflow->map_valid && mptcp_subflow_get_map_offset(subflow) >=3D subflow->map_data_len) { subflow->map_valid =3D 0; - WRITE_ONCE(subflow->data_avail, 0); + WRITE_ONCE(subflow->data_avail, MPTCP_SUBFLOW_NODATA); =20 pr_debug("Done with mapping: seq=3D%u data_len=3D%u", subflow->map_subflow_seq, --=20 2.35.1 From nobody Tue May 7 11:25:05 2024 Delivered-To: wpasupplicant.patchew@gmail.com Received: by 2002:a05:6402:358d:0:0:0:0 with SMTP id y13csp814094edc; Mon, 7 Mar 2022 12:44:52 -0800 (PST) X-Google-Smtp-Source: ABdhPJzuYTmhbsQO0fX8GsIQ9FSAzhg15Y4cNIeDWIfDgXptRo1Yw6kUV+sV7kcw3wyE/a6q+B36 X-Received: by 2002:a25:415:0:b0:628:dfc6:fcc7 with SMTP id 21-20020a250415000000b00628dfc6fcc7mr9743071ybe.605.1646685892136; Mon, 07 Mar 2022 12:44:52 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1646685892; cv=none; d=google.com; s=arc-20160816; b=KM7/BcPfwdDEQnOHSPFjhT24ix8zyXmGLjAnBOPDagC+NeKPbECWoLOQOrXtoNdL5k JIFIwSRXKwQ6Uq5ia7Ax5jIK9yCO93AzNvh1XmAo9mD/nkAspbPdQfIvHtePn53jjDo+ 1bNvfhVlFlyR6uA1/QLXTeBgMOpVnN9aCxJacA7VfNuuxhTRVOmfi2Bt0z/c8i9kcxx+ /J62InH0Z1ImA8l7h0qMHwTXGIAUlhxkUKNR4vkwvkyBce7NtXI87t+0iMfTdauWG2Sw VkW+tud6Or7M0/Xc5Wv7o3QOdAY9YzBNcWRbswayEO/m0SnsxFTh9QmXQNP9CVEu/YpN KtZg== 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:cc:to:from:dkim-signature; bh=/nNAJwzNt0XHfOFzjp8njQbnNfWNQIBnFFrcqGHy7Hc=; b=FSu3Q+zMfutIPPPOz2LwCmBJ2XXwq+B81hzOzc+w/DtdB1fDHBivjIgC9cKygTxAXK CcsjPIPCXREiFNkzGLwdKFJ9fOTzzUdVzF8FuGoluQvDOMK9/M8lLlUSN7W+Ln/q0V+b uuwB8nCD6HgwQ3HWMjRCXVDxt2esnbfqf0bjqYMaSQgOK+hTCe4kcVOPvi2PNqv7IvDp hQ7shGnvnr1ID/RgWfjJwV1onlGpQv3NE40byYO3DKRfAp/VUiorB42EkDExTjCBtinf KWzOcp+Jhd5x6oEampxCGTFaTH/gZLr2EbEmxyWBwhqJUq2uR09nvAqhabl+TLfMRkzv mBTw== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@intel.com header.s=Intel header.b=Gm3grsgE; spf=pass (google.com: domain of mptcp+bounces-4134-wpasupplicant.patchew=gmail.com@lists.linux.dev designates 2604:1380:1:3600::1 as permitted sender) smtp.mailfrom="mptcp+bounces-4134-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 84-20020a251657000000b0060de457f8b9si9438651ybw.526.2022.03.07.12.44.51 for (version=TLS1_2 cipher=ECDHE-ECDSA-AES128-GCM-SHA256 bits=128/128); Mon, 07 Mar 2022 12:44:52 -0800 (PST) Received-SPF: pass (google.com: domain of mptcp+bounces-4134-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=Gm3grsgE; spf=pass (google.com: domain of mptcp+bounces-4134-wpasupplicant.patchew=gmail.com@lists.linux.dev designates 2604:1380:1:3600::1 as permitted sender) smtp.mailfrom="mptcp+bounces-4134-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 B967A1C0B5C for ; Mon, 7 Mar 2022 20:44:51 +0000 (UTC) Received: from localhost.localdomain (localhost.localdomain [127.0.0.1]) by smtp.subspace.kernel.org (Postfix) with ESMTP id C00254350; Mon, 7 Mar 2022 20:44:48 +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 AAD854349 for ; Mon, 7 Mar 2022 20:44: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=1646685887; x=1678221887; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=R4tIQUAOTRz1Si2gcqBM3+CXn/RCAkFxYB6IZ5aqlfw=; b=Gm3grsgEAKlUoRKCSh0lp6ubrmlqkwL6HoqFssxdEh6GEOeIgY2xbFOJ F6B7T98MuspqJX9FyoRDR05fk57P2WJ9gjv3uexhhItA6vN++h1VhadjL qklL/2BArWf48vvRc0nXa9HadxB4slM7Dr2yVhNukC8fd3wP5rX/2ZT0/ Z14jffv3Km87iqAHbxinBkx4Ba/N6nU6FjNCe4B/LMru9jirb7UFsmpE3 A3F6ZDMLSMvKKUUlkwzsfACyou7fy9hUzs/LfrvrU6w9w1kkEDJ1od0Yt 1p1ufCGdnhQI/U2qGnfwkVZxeUT2bRL8pFHGpxGFjRSIAJEmB/ncvnZdI A==; X-IronPort-AV: E=McAfee;i="6200,9189,10279"; a="317731785" X-IronPort-AV: E=Sophos;i="5.90,163,1643702400"; d="scan'208";a="317731785" Received: from orsmga008.jf.intel.com ([10.7.209.65]) by orsmga105.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 07 Mar 2022 12:44:45 -0800 X-IronPort-AV: E=Sophos;i="5.90,163,1643702400"; d="scan'208";a="553320484" Received: from mjmartin-desk2.amr.corp.intel.com (HELO mjmartin-desk2.intel.com) ([10.212.192.43]) by orsmga008-auth.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 07 Mar 2022 12:44:44 -0800 From: Mat Martineau To: netdev@vger.kernel.org Cc: Matthieu Baerts , davem@davemloft.net, kuba@kernel.org, mptcp@lists.linux.dev, Mat Martineau Subject: [PATCH net-next 3/9] selftests: mptcp: join: allow running -cCi Date: Mon, 7 Mar 2022 12:44:33 -0800 Message-Id: <20220307204439.65164-4-mathew.j.martineau@linux.intel.com> X-Mailer: git-send-email 2.35.1 In-Reply-To: <20220307204439.65164-1-mathew.j.martineau@linux.intel.com> References: <20220307204439.65164-1-mathew.j.martineau@linux.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" From: Matthieu Baerts Without this patch, no tests would be ran when launching: mptcp_join.sh -cCi In any order or a combination with 2 of these letters. The recommended way with getopt is first parse all options and then act. This allows to do some actions in priority, e.g. display the help menu and stop. But also some global variables changing the behaviour of this selftests -- like the ones behind -cCi options -- can be set before running the different tests. By doing that, we can also avoid long and unreadable regex. Signed-off-by: Matthieu Baerts Signed-off-by: Mat Martineau --- .../testing/selftests/net/mptcp/mptcp_join.sh | 67 ++++++++----------- 1 file changed, 28 insertions(+), 39 deletions(-) diff --git a/tools/testing/selftests/net/mptcp/mptcp_join.sh b/tools/testin= g/selftests/net/mptcp/mptcp_join.sh index 45c6e5f06916..309d06781ae7 100755 --- a/tools/testing/selftests/net/mptcp/mptcp_join.sh +++ b/tools/testing/selftests/net/mptcp/mptcp_join.sh @@ -16,7 +16,6 @@ capture=3D0 checksum=3D0 ip_mptcp=3D0 check_invert=3D0 -do_all_tests=3D1 init=3D0 =20 TEST_COUNT=3D0 @@ -2293,84 +2292,66 @@ usage() exit ${ret} } =20 -for arg in "$@"; do - # check for "capture/checksum" args before launching tests - if [[ "${arg}" =3D~ ^"-"[0-9a-zA-Z]*"c"[0-9a-zA-Z]*$ ]]; then - capture=3D1 - fi - if [[ "${arg}" =3D~ ^"-"[0-9a-zA-Z]*"C"[0-9a-zA-Z]*$ ]]; then - checksum=3D1 - fi - if [[ "${arg}" =3D~ ^"-"[0-9a-zA-Z]*"i"[0-9a-zA-Z]*$ ]]; then - ip_mptcp=3D1 - fi - - # exception for the capture/checksum/ip_mptcp options, the rest means: a = part of the tests - if [ "${arg}" !=3D "-c" ] && [ "${arg}" !=3D "-C" ] && [ "${arg}" !=3D "-= i" ]; then - do_all_tests=3D0 - fi -done - -if [ $do_all_tests -eq 1 ]; then - all_tests - exit $ret -fi =20 +tests=3D() while getopts 'fesltra64bpkdmchzCSi' opt; do case $opt in f) - subflows_tests + tests+=3D(subflows_tests) ;; e) - subflows_error_tests + tests+=3D(subflows_error_tests) ;; s) - signal_address_tests + tests+=3D(signal_address_tests) ;; l) - link_failure_tests + tests+=3D(link_failure_tests) ;; t) - add_addr_timeout_tests + tests+=3D(add_addr_timeout_tests) ;; r) - remove_tests + tests+=3D(remove_tests) ;; a) - add_tests + tests+=3D(add_tests) ;; 6) - ipv6_tests + tests+=3D(ipv6_tests) ;; 4) - v4mapped_tests + tests+=3D(v4mapped_tests) ;; b) - backup_tests + tests+=3D(backup_tests) ;; p) - add_addr_ports_tests + tests+=3D(add_addr_ports_tests) ;; k) - syncookies_tests + tests+=3D(syncookies_tests) ;; S) - checksum_tests + tests+=3D(checksum_tests) ;; d) - deny_join_id0_tests + tests+=3D(deny_join_id0_tests) ;; m) - fullmesh_tests + tests+=3D(fullmesh_tests) ;; z) - fastclose_tests + tests+=3D(fastclose_tests) ;; c) + capture=3D1 ;; C) + checksum=3D1 ;; i) + ip_mptcp=3D1 ;; h) usage @@ -2381,4 +2362,12 @@ while getopts 'fesltra64bpkdmchzCSi' opt; do esac done =20 +if [ ${#tests[@]} -eq 0 ]; then + all_tests +else + for subtests in "${tests[@]}"; do + "${subtests}" + done +fi + exit $ret --=20 2.35.1 From nobody Tue May 7 11:25:05 2024 Delivered-To: wpasupplicant.patchew@gmail.com Received: by 2002:a05:6402:358d:0:0:0:0 with SMTP id y13csp814097edc; Mon, 7 Mar 2022 12:44:53 -0800 (PST) X-Google-Smtp-Source: ABdhPJxu5/dXit0qH3HVszLv+Zki9T8gidqQ/OJG1EkTM+4KT+3R+hIsm3iL1R/m8HA2TxzXTb5D X-Received: by 2002:a17:90a:600a:b0:1b9:dd79:ea77 with SMTP id y10-20020a17090a600a00b001b9dd79ea77mr909126pji.44.1646685893097; Mon, 07 Mar 2022 12:44:53 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1646685893; cv=none; d=google.com; s=arc-20160816; b=Dw0zMUuEFgUee2/hU2AJegl9N/yZgIkdFhrdtgBdjyyUmoskct+ivRGXIP7GbCEiYJ Qr3Mstm9zbThK6c6ecITJQiWYMj82+7AnqiiplCBBoehVpxvJfV0jw9QU63v8XJ56Xjm MQl/E1g0N9nI7oqp5NZ26ramz9WnrR6nsDVE1Ai/7GLOchI0YVxQIzUxryuBBiu1V3yV EzBRvXIf8cZA7qCLNPJ05h3vEhO5XlXdnV1IWahxctez1vPkW19DtAGiBHv8q4bbYjvo Hb3FW+FAKIVpoSzUt94mPCOGS7C4bfniwDJ50X/vuU1JTwUAzjgUIXP9FwMgksKmI+5C fd+A== 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:cc:to:from:dkim-signature; bh=xipx2gDQ6oCJ8h1fzU54G2hfBZBzqGndXGXZePnRbKA=; b=W53VcfXnOgvVjpH/7Vhgn/IioZZGZLD4zvZAVRTSKslP5RTITRafntAqZU3Wg2MWdL HovMf+EgrSysU7AMO5RJjmYWdUNUigBcSo3g+0Y6JZ2cHFzJhhChBemvTqZ59vYfUO5R 7RYZ0o1f0M1jlqOWl01LRSHv0R4joyiuqQwW7QMbq5tINZWrV8TZOZZ3uOwHUbhj0rTs xipcokjer0ULQ9Jvo5VMpt52CfBMtrgVQ3FnirjYwW/nabgForcqAY0K4b6l6WtwgwRq F9smDOFLv7kDTkcu21jqrcLiOZq2Rt0/r3Gy1UPQq8Ln0Jj1GkRPXjUkCZKM/31hJory B/1A== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@intel.com header.s=Intel header.b=Ddm6+xKp; spf=pass (google.com: domain of mptcp+bounces-4135-wpasupplicant.patchew=gmail.com@lists.linux.dev designates 147.75.69.165 as permitted sender) smtp.mailfrom="mptcp+bounces-4135-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 gi22-20020a17090b111600b001bd14e01fb2si128404pjb.160.2022.03.07.12.44.52 for (version=TLS1_2 cipher=ECDHE-ECDSA-AES128-GCM-SHA256 bits=128/128); Mon, 07 Mar 2022 12:44:53 -0800 (PST) Received-SPF: pass (google.com: domain of mptcp+bounces-4135-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=Ddm6+xKp; spf=pass (google.com: domain of mptcp+bounces-4135-wpasupplicant.patchew=gmail.com@lists.linux.dev designates 147.75.69.165 as permitted sender) smtp.mailfrom="mptcp+bounces-4135-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 7E5D93E0EC5 for ; Mon, 7 Mar 2022 20:44:52 +0000 (UTC) Received: from localhost.localdomain (localhost.localdomain [127.0.0.1]) by smtp.subspace.kernel.org (Postfix) with ESMTP id 37DF1434B; Mon, 7 Mar 2022 20:44:49 +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 EEA2538FE for ; Mon, 7 Mar 2022 20:44: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=1646685887; x=1678221887; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=lmWvw4D5PKVHts20BdUYWt5NY1uF+i3noijxyyVdqiU=; b=Ddm6+xKpezNLgPDTG1OTOvmlsVpjWw/vODFP2MpfSZGJ3ZRbefrZkDtq sBFzmS1JM7A5eTZCftrHine443awNCZTSQ8wIrYPQCckItoej1I0XJrKn u48hChPw7DTr18viZdlF7+DAR7ALpgE0udp9EGZfxCdepOaxTPrkVVmYV xraPZ2+cmZqhx9hHMQhdzi475aTKOrqlmsMuabYv6BH/KCl2q0M60dSzA VhbTmHdgIbkKMKb3GnHypf3KXW8sNsOXneUUChTjutsr3ZfGWj8rNkSYo MM3adfh/jCo8p0ry6KpZOCwPNWJIWzuyfXjGGZb3Bwoj2QRbtXfAlNv8/ g==; X-IronPort-AV: E=McAfee;i="6200,9189,10279"; a="317731786" X-IronPort-AV: E=Sophos;i="5.90,163,1643702400"; d="scan'208";a="317731786" Received: from orsmga008.jf.intel.com ([10.7.209.65]) by orsmga105.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 07 Mar 2022 12:44:45 -0800 X-IronPort-AV: E=Sophos;i="5.90,163,1643702400"; d="scan'208";a="553320486" Received: from mjmartin-desk2.amr.corp.intel.com (HELO mjmartin-desk2.intel.com) ([10.212.192.43]) by orsmga008-auth.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 07 Mar 2022 12:44:44 -0800 From: Mat Martineau To: netdev@vger.kernel.org Cc: Mat Martineau , davem@davemloft.net, kuba@kernel.org, matthieu.baerts@tessares.net, mptcp@lists.linux.dev, Paolo Abeni Subject: [PATCH net-next 4/9] selftests: mptcp: Rename wait function Date: Mon, 7 Mar 2022 12:44:34 -0800 Message-Id: <20220307204439.65164-5-mathew.j.martineau@linux.intel.com> X-Mailer: git-send-email 2.35.1 In-Reply-To: <20220307204439.65164-1-mathew.j.martineau@linux.intel.com> References: <20220307204439.65164-1-mathew.j.martineau@linux.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" The "selftests: mptcp: improve 'fair usage on close' stability" commit changed that self test to check the TcpAttemptFails MIB instead of looking for TW sockets. The associated bash function wasn't renamed in that commit because of the merge conflicts it would cause, so this commit updates the function name as Paolo originally intended. Cc: Paolo Abeni Reviewed-by: Matthieu Baerts Signed-off-by: Mat Martineau --- tools/testing/selftests/net/mptcp/mptcp_join.sh | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/tools/testing/selftests/net/mptcp/mptcp_join.sh b/tools/testin= g/selftests/net/mptcp/mptcp_join.sh index 309d06781ae7..d4769bc0d842 100755 --- a/tools/testing/selftests/net/mptcp/mptcp_join.sh +++ b/tools/testing/selftests/net/mptcp/mptcp_join.sh @@ -1242,7 +1242,7 @@ chk_link_usage() fi } =20 -wait_for_tw() +wait_attempt_fail() { local timeout_ms=3D$((timeout_poll * 1000)) local time=3D0 @@ -1361,7 +1361,7 @@ subflows_error_tests() TEST_COUNT=3D$((TEST_COUNT+1)) =20 # mpj subflow will be in TW after the reset - wait_for_tw $ns2 + wait_attempt_fail $ns2 pm_nl_add_endpoint $ns2 10.0.2.2 flags subflow wait =20 --=20 2.35.1 From nobody Tue May 7 11:25:05 2024 Delivered-To: wpasupplicant.patchew@gmail.com Received: by 2002:a05:6402:358d:0:0:0:0 with SMTP id y13csp814101edc; Mon, 7 Mar 2022 12:44:54 -0800 (PST) X-Google-Smtp-Source: ABdhPJwXPeWLylb8TS3os/JFDVT2IU88zcyXaS00bRhOLjyVj8u7g02sgqq9mFMfASvY25bD3qot X-Received: by 2002:a81:5dd6:0:b0:2d6:3041:12e0 with SMTP id r205-20020a815dd6000000b002d6304112e0mr10332887ywb.331.1646685894750; Mon, 07 Mar 2022 12:44:54 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1646685894; cv=none; d=google.com; s=arc-20160816; b=rGWqINij+AK+rofwUSzjzzezxK0wF7+1f3c2hBJ8eHG+vicg1b62ehH+KlRT9bARVy kUpxdPOl8zGYbtgoR9eCf3EgY01xffa5j9vCxv8ZQqDykYKpEREf58aIlpna932EK4La vMcx3KPHBobjwEFMoWHGgphyr3Ye7M2Yi1eVy/eWtM+MSBuWDo3XeTolF5Smd72LV6eh OGsdO4A/3PiIrHgzXtDeWVKO+gXVTCsIh0hSRzhT7QJM2YxYJ9kfrUVaR15S65OqetGG LniFRCD7E+rC3ZHkUnvVasep5GnGakh6x4YXusQmx5tv9hPLu78x5a+MODiOEKY9VDPk 6kkA== 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:cc:to:from:dkim-signature; bh=2eEI3yVDQ3VO8/Pkdx1XZviibuAVUL8AIJh/LWIbMPE=; b=bS6Q6sZ/8mltvqxAvJWaJzTYQX9wgNtjKiSo/+P1gS3X/g0e8M1vPZoxu6OLq2tL6q UVY1JzqLVRDFCavOpfagAH+uudonUSaNkn1Z+b8RAkrcxddSPh3G7yfZVMngWU3XjQdT fVU7vABnOOlOV42H+YWGnKT2gwCSaqgeYa0fVFNOWwj5lOBKwqqADoLi4cvGvW6pbqeU xK9SAbb5DlBNCD80mXImKUtc2SZIHsBQIzdHkdoBbYHINggY7CUNx6wZGfzUY5D9gp0b y7FfqkZ/as4eUzk9/yV/6Sf0Z3T26mS7fKGwWZx8fiZ7lq2n4Th8K4vVW4nn22ulsbX3 B1ng== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@intel.com header.s=Intel header.b="SZTl8U/2"; spf=pass (google.com: domain of mptcp+bounces-4136-wpasupplicant.patchew=gmail.com@lists.linux.dev designates 2604:1380:1:3600::1 as permitted sender) smtp.mailfrom="mptcp+bounces-4136-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 b204-20020a2534d5000000b00628755c3ac7si8745599yba.169.2022.03.07.12.44.54 for (version=TLS1_2 cipher=ECDHE-ECDSA-AES128-GCM-SHA256 bits=128/128); Mon, 07 Mar 2022 12:44:54 -0800 (PST) Received-SPF: pass (google.com: domain of mptcp+bounces-4136-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="SZTl8U/2"; spf=pass (google.com: domain of mptcp+bounces-4136-wpasupplicant.patchew=gmail.com@lists.linux.dev designates 2604:1380:1:3600::1 as permitted sender) smtp.mailfrom="mptcp+bounces-4136-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 0668C1C0C58 for ; Mon, 7 Mar 2022 20:44:54 +0000 (UTC) Received: from localhost.localdomain (localhost.localdomain [127.0.0.1]) by smtp.subspace.kernel.org (Postfix) with ESMTP id E08734351; Mon, 7 Mar 2022 20:44:49 +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 1B6D5434F for ; Mon, 7 Mar 2022 20:44:48 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1646685888; x=1678221888; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=TAAcffiJOJsRQQTyOrz1x5kOdHFzms/WH96XqyL1xuE=; b=SZTl8U/2xX9tXp0F829OpZyQh+as+TFRPGoGou+057w5U8UBD8S6H6YQ ZO3b/mMLYs0AWKv4eugqz/JE2k7OMWzly3Kg/e1Hd2h41I5vcBYv18U6I GFinP+bWJzlxjQeFvAD9HufRGTf1fnmR01Tyg9x+n9z9b909pqmcNiM4G ifHIOtbmNyWfaSiZw5mobydUpU7hFc82BLK+cJu5zRZ38ALur5WYxzgdV XHlcdts/iOkRjNNSKggEYc3VbEwLztmBuFqj7XaXGLgbOlUQsw46H+ig6 A6WUSzxnYIdEvl+Og/Y1df0n3zT2e0zmjzaJX9zgpO2F5FstnD4EUjUd/ w==; X-IronPort-AV: E=McAfee;i="6200,9189,10279"; a="317731788" X-IronPort-AV: E=Sophos;i="5.90,163,1643702400"; d="scan'208";a="317731788" Received: from orsmga008.jf.intel.com ([10.7.209.65]) by orsmga105.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 07 Mar 2022 12:44:45 -0800 X-IronPort-AV: E=Sophos;i="5.90,163,1643702400"; d="scan'208";a="553320487" Received: from mjmartin-desk2.amr.corp.intel.com (HELO mjmartin-desk2.intel.com) ([10.212.192.43]) by orsmga008-auth.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 07 Mar 2022 12:44:45 -0800 From: Mat Martineau To: netdev@vger.kernel.org Cc: Paolo Abeni , davem@davemloft.net, kuba@kernel.org, matthieu.baerts@tessares.net, mptcp@lists.linux.dev, Mat Martineau Subject: [PATCH net-next 5/9] mptcp: more careful RM_ADDR generation Date: Mon, 7 Mar 2022 12:44:35 -0800 Message-Id: <20220307204439.65164-6-mathew.j.martineau@linux.intel.com> X-Mailer: git-send-email 2.35.1 In-Reply-To: <20220307204439.65164-1-mathew.j.martineau@linux.intel.com> References: <20220307204439.65164-1-mathew.j.martineau@linux.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" From: Paolo Abeni The in-kernel MPTCP path manager, when processing the MPTCP_PM_CMD_FLUSH_AD= DR command, generates RM_ADDR events for each known local address. While that is allowed by the RFC, it makes unpredictable the exact number of RM_ADDR generated when both ends flush the PM addresses. This change restricts the RM_ADDR generation to previously explicitly announced addresses, and adjust the expected results in a bunch of related self-tests. Signed-off-by: Paolo Abeni Signed-off-by: Mat Martineau --- net/mptcp/pm_netlink.c | 10 ++--- .../testing/selftests/net/mptcp/mptcp_join.sh | 42 ++++++++++++++++--- 2 files changed, 40 insertions(+), 12 deletions(-) diff --git a/net/mptcp/pm_netlink.c b/net/mptcp/pm_netlink.c index 75a0a27547e6..91b77d1162cf 100644 --- a/net/mptcp/pm_netlink.c +++ b/net/mptcp/pm_netlink.c @@ -1466,14 +1466,12 @@ static void mptcp_pm_remove_addrs_and_subflows(stru= ct mptcp_sock *msk, =20 list_for_each_entry(entry, rm_list, list) { if (lookup_subflow_by_saddr(&msk->conn_list, &entry->addr) && - alist.nr < MPTCP_RM_IDS_MAX && - slist.nr < MPTCP_RM_IDS_MAX) { - alist.ids[alist.nr++] =3D entry->addr.id; + slist.nr < MPTCP_RM_IDS_MAX) slist.ids[slist.nr++] =3D entry->addr.id; - } else if (remove_anno_list_by_saddr(msk, &entry->addr) && - alist.nr < MPTCP_RM_IDS_MAX) { + + if (remove_anno_list_by_saddr(msk, &entry->addr) && + alist.nr < MPTCP_RM_IDS_MAX) alist.ids[alist.nr++] =3D entry->addr.id; - } } =20 if (alist.nr) { diff --git a/tools/testing/selftests/net/mptcp/mptcp_join.sh b/tools/testin= g/selftests/net/mptcp/mptcp_join.sh index d4769bc0d842..02bab8a2d5a5 100755 --- a/tools/testing/selftests/net/mptcp/mptcp_join.sh +++ b/tools/testing/selftests/net/mptcp/mptcp_join.sh @@ -1149,14 +1149,25 @@ chk_rm_nr() { local rm_addr_nr=3D$1 local rm_subflow_nr=3D$2 - local invert=3D${3:-""} + local invert + local simult local count local dump_stats local addr_ns=3D$ns1 local subflow_ns=3D$ns2 local extra_msg=3D"" =20 - if [[ $invert =3D "invert" ]]; then + shift 2 + while [ -n "$1" ]; do + [ "$1" =3D "invert" ] && invert=3Dtrue + [ "$1" =3D "simult" ] && simult=3Dtrue + shift + done + + if [ -z $invert ]; then + addr_ns=3D$ns1 + subflow_ns=3D$ns2 + elif [ $invert =3D "true" ]; then addr_ns=3D$ns2 subflow_ns=3D$ns1 extra_msg=3D" invert" @@ -1176,6 +1187,25 @@ chk_rm_nr() echo -n " - rmsf " count=3D`ip netns exec $subflow_ns nstat -as | grep MPTcpExtRmSubflow | a= wk '{print $2}'` [ -z "$count" ] && count=3D0 + if [ -n "$simult" ]; then + local cnt=3D$(ip netns exec $addr_ns nstat -as | grep MPTcpExtRmSubflow = | awk '{print $2}') + local suffix + + # in case of simult flush, the subflow removal count on each side is + # unreliable + [ -z "$cnt" ] && cnt=3D0 + count=3D$((count + cnt)) + [ "$count" !=3D "$rm_subflow_nr" ] && suffix=3D"$count in [$rm_subflow_n= r:$((rm_subflow_nr*2))]" + if [ $count -ge "$rm_subflow_nr" ] && \ + [ "$count" -le "$((rm_subflow_nr *2 ))" ]; then + echo "[ ok ] $suffix" + else + echo "[fail] got $count RM_SUBFLOW[s] expected in range [$rm_subflow_nr= :$((rm_subflow_nr*2))]" + ret=3D1 + dump_stats=3D1 + fi + return + fi if [ "$count" !=3D "$rm_subflow_nr" ]; then echo "[fail] got $count RM_SUBFLOW[s] expected $rm_subflow_nr" ret=3D1 @@ -1666,7 +1696,7 @@ remove_tests() run_tests $ns1 $ns2 10.0.1.1 0 -8 -8 slow chk_join_nr "flush subflows and signal" 3 3 3 chk_add_nr 1 1 - chk_rm_nr 2 2 + chk_rm_nr 1 3 invert simult =20 # subflows flush reset @@ -1677,7 +1707,7 @@ remove_tests() pm_nl_add_endpoint $ns2 10.0.4.2 flags subflow run_tests $ns1 $ns2 10.0.1.1 0 -8 -8 slow chk_join_nr "flush subflows" 3 3 3 - chk_rm_nr 3 3 + chk_rm_nr 0 3 simult =20 # addresses flush reset @@ -1689,7 +1719,7 @@ remove_tests() run_tests $ns1 $ns2 10.0.1.1 0 -8 -8 slow chk_join_nr "flush addresses" 3 3 3 chk_add_nr 3 3 - chk_rm_nr 3 3 invert + chk_rm_nr 3 3 invert simult =20 # invalid addresses flush reset @@ -1973,7 +2003,7 @@ add_addr_ports_tests() run_tests $ns1 $ns2 10.0.1.1 0 -8 -2 slow chk_join_nr "flush subflows and signal with port" 3 3 3 chk_add_nr 1 1 - chk_rm_nr 2 2 + chk_rm_nr 1 3 invert simult =20 # multiple addresses with port reset --=20 2.35.1 From nobody Tue May 7 11:25:05 2024 Delivered-To: wpasupplicant.patchew@gmail.com Received: by 2002:a05:6402:358d:0:0:0:0 with SMTP id y13csp814106edc; Mon, 7 Mar 2022 12:44:56 -0800 (PST) X-Google-Smtp-Source: ABdhPJxjQZFyov73liKMGQEPdDTWo5FcqiLnfL7rHezyoWa4a5J0jhn97DesxMf1YETp3hjOsZbs X-Received: by 2002:a17:90a:d681:b0:1be:e3e5:3e6e with SMTP id x1-20020a17090ad68100b001bee3e53e6emr867580pju.122.1646685895853; Mon, 07 Mar 2022 12:44:55 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1646685895; cv=none; d=google.com; s=arc-20160816; b=Q+zAykFqcqHA1CtSiA6tVXXuH9M+5LNsBjUhC95hw7fpBrWWzJUE0m2o1cA8PxspCM gvAGS8/fASQYDU8ojBLG2Cuh5zFTMq8RAw5OIwHmbGRtIXqI4VQZ/vHTsHW045H8Q3ME WY2fhm1BZkLZN/iNcDIGFNEy/C4dWM8/MyFT96RrMQIslkq+c7uADp2caem5Ns8c4HKO h/ujK/7B6OhvvKjkqmUyCsacD0bxcpsH2ITyA8fJlmiq3NP5r2pc9FTrsDzFXrKufc3c NTWrM4sB95mKITsrMly9R9b9friNDIJejaTLMLCmK38s6EJ6plNNy+RwulGH0NdnXIMN DxLw== 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:cc:to:from:dkim-signature; bh=hxwaIosnT/0ebfIZzeFThwKWohbMz/olWhQi5eAXlws=; b=fTePHX0cDJjlFSp1+N6HP0gNNyFpdmx1h8a9/3G7sgXbEysbKjmS7IsEiQSAns7CRt ZRQ98Fq/g0g5zmKZaX8kXmHFBoXcmdRF9KMD7AMSSFUJhlwarDgYze27cLWOAvYN7Aa4 uJWaTNVHUGe1vEjx8e3TdChS3wtFHUuiheKTtj0jLy2ro7nmoXwwIDKPBKiNCMU5Lc2L Qz9mVMTThSkAC32+p+mAqBastsXheZtTAIE2Yr5r3fnm0WT90nzUOxzIUgE6NWluH/UR Q4yJYQ3UCtZ4WRA+3iryXPMMnV8ipZ/Qx3ML+yd01BWcKvS0bF8Am7VymFDCIiAEu8JR AmRA== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@intel.com header.s=Intel header.b=fA21lKf3; spf=pass (google.com: domain of mptcp+bounces-4137-wpasupplicant.patchew=gmail.com@lists.linux.dev designates 147.75.69.165 as permitted sender) smtp.mailfrom="mptcp+bounces-4137-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 d2-20020a17090a02c200b001bd14e01f20si281357pjd.14.2022.03.07.12.44.55 for (version=TLS1_2 cipher=ECDHE-ECDSA-AES128-GCM-SHA256 bits=128/128); Mon, 07 Mar 2022 12:44:55 -0800 (PST) Received-SPF: pass (google.com: domain of mptcp+bounces-4137-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=fA21lKf3; spf=pass (google.com: domain of mptcp+bounces-4137-wpasupplicant.patchew=gmail.com@lists.linux.dev designates 147.75.69.165 as permitted sender) smtp.mailfrom="mptcp+bounces-4137-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 020073E0EC4 for ; Mon, 7 Mar 2022 20:44:55 +0000 (UTC) Received: from localhost.localdomain (localhost.localdomain [127.0.0.1]) by smtp.subspace.kernel.org (Postfix) with ESMTP id 02BF5434F; Mon, 7 Mar 2022 20:44:50 +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 C36DB4349 for ; Mon, 7 Mar 2022 20:44:48 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1646685888; x=1678221888; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=CpbSltr7vLpV0VAH0lgwZDuE0U+mKzxZCbR1mYGKECY=; b=fA21lKf3xKSFlgOx9k+X4Cq5+zDB56b6asKQpp4TshBPr3AE1MNOaGmw rKi8/RCk9wWJWCcyKnJPBa29Ka5f1+7X8umy1S5mEidEwbtXMDZvll/5H hGwlhxQRjC8DmZGLN8RAPt3HiADkDeTDu/muDZXlcnuCIz72grEU8mGsg AG2k3Ld2KZ/bGzuJLxUAVyhtiMGyYiixQ7B6aBdJALgUJxbX8iayfXkFR HFuxcYyi9U4/U9BL4hCbdd29L3K6ke3+Z+R1m2WT+cvyXRrbdOPeILxaL dT/5Biof+p9+51L3zhTC4Yf+gTz4cvL1dXd23UBAbiLSBfeiFfBvxsKKD A==; X-IronPort-AV: E=McAfee;i="6200,9189,10279"; a="317731789" X-IronPort-AV: E=Sophos;i="5.90,163,1643702400"; d="scan'208";a="317731789" Received: from orsmga008.jf.intel.com ([10.7.209.65]) by orsmga105.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 07 Mar 2022 12:44:45 -0800 X-IronPort-AV: E=Sophos;i="5.90,163,1643702400"; d="scan'208";a="553320489" Received: from mjmartin-desk2.amr.corp.intel.com (HELO mjmartin-desk2.intel.com) ([10.212.192.43]) by orsmga008-auth.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 07 Mar 2022 12:44:45 -0800 From: Mat Martineau To: netdev@vger.kernel.org Cc: Paolo Abeni , davem@davemloft.net, kuba@kernel.org, matthieu.baerts@tessares.net, mptcp@lists.linux.dev, Mat Martineau Subject: [PATCH net-next 6/9] mptcp: introduce implicit endpoints Date: Mon, 7 Mar 2022 12:44:36 -0800 Message-Id: <20220307204439.65164-7-mathew.j.martineau@linux.intel.com> X-Mailer: git-send-email 2.35.1 In-Reply-To: <20220307204439.65164-1-mathew.j.martineau@linux.intel.com> References: <20220307204439.65164-1-mathew.j.martineau@linux.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" From: Paolo Abeni In some edge scenarios, an MPTCP subflows can use a local address mapped by a "implicit" endpoint created by the in-kernel path manager. Such endpoints presence can be confusing, as it's creation is hard to track and will prevent the later endpoint creation from the user-space using the same address. Define a new endpoint flag to mark implicit endpoints and allow the user-space to replace implicit them with user-provided data at endpoint creation time. Signed-off-by: Paolo Abeni Signed-off-by: Mat Martineau --- include/uapi/linux/mptcp.h | 1 + net/mptcp/pm_netlink.c | 61 +++++++++++++------ .../testing/selftests/net/mptcp/mptcp_join.sh | 4 +- 3 files changed, 47 insertions(+), 19 deletions(-) diff --git a/include/uapi/linux/mptcp.h b/include/uapi/linux/mptcp.h index f106a3941cdf..9690efedb5fa 100644 --- a/include/uapi/linux/mptcp.h +++ b/include/uapi/linux/mptcp.h @@ -81,6 +81,7 @@ enum { #define MPTCP_PM_ADDR_FLAG_SUBFLOW (1 << 1) #define MPTCP_PM_ADDR_FLAG_BACKUP (1 << 2) #define MPTCP_PM_ADDR_FLAG_FULLMESH (1 << 3) +#define MPTCP_PM_ADDR_FLAG_IMPLICIT (1 << 4) =20 enum { MPTCP_PM_CMD_UNSPEC, diff --git a/net/mptcp/pm_netlink.c b/net/mptcp/pm_netlink.c index 91b77d1162cf..10368a4f1c4a 100644 --- a/net/mptcp/pm_netlink.c +++ b/net/mptcp/pm_netlink.c @@ -877,10 +877,18 @@ static bool address_use_port(struct mptcp_pm_addr_ent= ry *entry) MPTCP_PM_ADDR_FLAG_SIGNAL; } =20 +/* caller must ensure the RCU grace period is already elapsed */ +static void __mptcp_pm_release_addr_entry(struct mptcp_pm_addr_entry *entr= y) +{ + if (entry->lsk) + sock_release(entry->lsk); + kfree(entry); +} + static int mptcp_pm_nl_append_new_local_addr(struct pm_nl_pernet *pernet, struct mptcp_pm_addr_entry *entry) { - struct mptcp_pm_addr_entry *cur; + struct mptcp_pm_addr_entry *cur, *del_entry =3D NULL; unsigned int addr_max; int ret =3D -EINVAL; =20 @@ -901,8 +909,22 @@ static int mptcp_pm_nl_append_new_local_addr(struct pm= _nl_pernet *pernet, list_for_each_entry(cur, &pernet->local_addr_list, list) { if (addresses_equal(&cur->addr, &entry->addr, address_use_port(entry) && - address_use_port(cur))) - goto out; + address_use_port(cur))) { + /* allow replacing the exiting endpoint only if such + * endpoint is an implicit one and the user-space + * did not provide an endpoint id + */ + if (!(cur->flags & MPTCP_PM_ADDR_FLAG_IMPLICIT)) + goto out; + if (entry->addr.id) + goto out; + + pernet->addrs--; + entry->addr.id =3D cur->addr.id; + list_del_rcu(&cur->list); + del_entry =3D cur; + break; + } } =20 if (!entry->addr.id) { @@ -938,6 +960,12 @@ static int mptcp_pm_nl_append_new_local_addr(struct pm= _nl_pernet *pernet, =20 out: spin_unlock_bh(&pernet->lock); + + /* just replaced an existing entry, free it */ + if (del_entry) { + synchronize_rcu(); + __mptcp_pm_release_addr_entry(del_entry); + } return ret; } =20 @@ -1036,7 +1064,7 @@ int mptcp_pm_nl_get_local_id(struct mptcp_sock *msk, = struct sock_common *skc) entry->addr.id =3D 0; entry->addr.port =3D 0; entry->ifindex =3D 0; - entry->flags =3D 0; + entry->flags =3D MPTCP_PM_ADDR_FLAG_IMPLICIT; entry->lsk =3D NULL; ret =3D mptcp_pm_nl_append_new_local_addr(pernet, entry); if (ret < 0) @@ -1249,6 +1277,11 @@ static int mptcp_nl_cmd_add_addr(struct sk_buff *skb= , struct genl_info *info) return -EINVAL; } =20 + if (addr.flags & MPTCP_PM_ADDR_FLAG_IMPLICIT) { + GENL_SET_ERR_MSG(info, "can't create IMPLICIT endpoint"); + return -EINVAL; + } + entry =3D kmalloc(sizeof(*entry), GFP_KERNEL); if (!entry) { GENL_SET_ERR_MSG(info, "can't allocate addr"); @@ -1333,11 +1366,12 @@ static bool mptcp_pm_remove_anno_addr(struct mptcp_= sock *msk, } =20 static int mptcp_nl_remove_subflow_and_signal_addr(struct net *net, - struct mptcp_addr_info *addr) + const struct mptcp_pm_addr_entry *entry) { - struct mptcp_sock *msk; - long s_slot =3D 0, s_num =3D 0; + const struct mptcp_addr_info *addr =3D &entry->addr; struct mptcp_rm_list list =3D { .nr =3D 0 }; + long s_slot =3D 0, s_num =3D 0; + struct mptcp_sock *msk; =20 pr_debug("remove_id=3D%d", addr->id); =20 @@ -1354,7 +1388,8 @@ static int mptcp_nl_remove_subflow_and_signal_addr(st= ruct net *net, =20 lock_sock(sk); remove_subflow =3D lookup_subflow_by_saddr(&msk->conn_list, addr); - mptcp_pm_remove_anno_addr(msk, addr, remove_subflow); + mptcp_pm_remove_anno_addr(msk, addr, remove_subflow && + !(entry->flags & MPTCP_PM_ADDR_FLAG_IMPLICIT)); if (remove_subflow) mptcp_pm_remove_subflow(msk, &list); release_sock(sk); @@ -1367,14 +1402,6 @@ static int mptcp_nl_remove_subflow_and_signal_addr(s= truct net *net, return 0; } =20 -/* caller must ensure the RCU grace period is already elapsed */ -static void __mptcp_pm_release_addr_entry(struct mptcp_pm_addr_entry *entr= y) -{ - if (entry->lsk) - sock_release(entry->lsk); - kfree(entry); -} - static int mptcp_nl_remove_id_zero_address(struct net *net, struct mptcp_addr_info *addr) { @@ -1451,7 +1478,7 @@ static int mptcp_nl_cmd_del_addr(struct sk_buff *skb,= struct genl_info *info) __clear_bit(entry->addr.id, pernet->id_bitmap); spin_unlock_bh(&pernet->lock); =20 - mptcp_nl_remove_subflow_and_signal_addr(sock_net(skb->sk), &entry->addr); + mptcp_nl_remove_subflow_and_signal_addr(sock_net(skb->sk), entry); synchronize_rcu(); __mptcp_pm_release_addr_entry(entry); =20 diff --git a/tools/testing/selftests/net/mptcp/mptcp_join.sh b/tools/testin= g/selftests/net/mptcp/mptcp_join.sh index 02bab8a2d5a5..1e2e8dd9f0d6 100755 --- a/tools/testing/selftests/net/mptcp/mptcp_join.sh +++ b/tools/testing/selftests/net/mptcp/mptcp_join.sh @@ -1938,7 +1938,7 @@ backup_tests() run_tests $ns1 $ns2 10.0.1.1 0 0 0 slow backup chk_join_nr "single address, backup" 1 1 1 chk_add_nr 1 1 - chk_prio_nr 1 0 + chk_prio_nr 1 1 =20 # single address with port, backup reset @@ -1948,7 +1948,7 @@ backup_tests() run_tests $ns1 $ns2 10.0.1.1 0 0 0 slow backup chk_join_nr "single address with port, backup" 1 1 1 chk_add_nr 1 1 - chk_prio_nr 1 0 + chk_prio_nr 1 1 } =20 add_addr_ports_tests() --=20 2.35.1 From nobody Tue May 7 11:25:05 2024 Delivered-To: wpasupplicant.patchew@gmail.com Received: by 2002:a05:6402:358d:0:0:0:0 with SMTP id y13csp814111edc; Mon, 7 Mar 2022 12:44:57 -0800 (PST) X-Google-Smtp-Source: ABdhPJwN1mQucs5ooxUzoHTURERL6wJ2XLo9TJmN10CnBKsRJa6GffgAJYb+2FcHxsdWJVrqKS+h X-Received: by 2002:a81:83cd:0:b0:2dc:2dc6:d695 with SMTP id t196-20020a8183cd000000b002dc2dc6d695mr10349001ywf.167.1646685897138; Mon, 07 Mar 2022 12:44:57 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1646685897; cv=none; d=google.com; s=arc-20160816; b=XVcjIYZyOVY4quKf89h69ggZJTpYyFXrpXvtWmXYeENAcxh07befB0tqC4zXmg8Hfi UXpjUKX4MKUPGug0OH/yL66x/4+LwU5mcXLq0VTyB94tHuEpSW6xxKnEqBYMZlH6C3IL By0kby5bKYLyVI3DzphzBTSgtMkRWyZrVnvvjY1Q1+VPW4sJ8nj2b/Ydg18LOficgglb gBf7cezdgrrXDlPzrlEa5smImHbggp39fCjb+tSX6C7doS1nbW0C7SLtQx9XYKAk7kZP 4iiuhjcq9WdGvDs3bJh4cXQwK/xOcl0lamcS+u3S893ZFQZD42KEr8ASCS/maC2t0Qhe /Uzw== 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:cc:to:from:dkim-signature; bh=WQ7Cn6D7pANXocMUegoUIvGmOduJifwIhtcC9a5hpRI=; b=mp15kUAzk4Cd0Xladhjx5466MQLufjMQv2R4SmOPzpxf8GnGDyYAoJbtPuwTU2OwKO /AGqzZG9Q/Ygz23Z0quIDW7JySk+feKiPHF4gNmYKViOotcnOwaFn366xq1LJe2SAAYg dXags1ySl1+127KK4V/3I4/aucT34NPHpKmDjhrQ6INb8TWN+Xt5CPFoXCVeSmRYTZxH Hic3MZupqhocwghzJ8MrmUhQuFtFPD4j1ZoGGEL7ZfzZCar/rS1ur9YtABhL8SS9NV+W dmvnec84T2fogaDLUJ+sTyBr3s+yAEiP1cEh1kgeKRqJ5Zd4GutJEDGJ67d1EjDmV/7q drfQ== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@intel.com header.s=Intel header.b=A5t3gVX1; spf=pass (google.com: domain of mptcp+bounces-4138-wpasupplicant.patchew=gmail.com@lists.linux.dev designates 2604:1380:1:3600::1 as permitted sender) smtp.mailfrom="mptcp+bounces-4138-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 k4-20020a256f04000000b00628a0df1805si9095596ybc.633.2022.03.07.12.44.56 for (version=TLS1_2 cipher=ECDHE-ECDSA-AES128-GCM-SHA256 bits=128/128); Mon, 07 Mar 2022 12:44:57 -0800 (PST) Received-SPF: pass (google.com: domain of mptcp+bounces-4138-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=A5t3gVX1; spf=pass (google.com: domain of mptcp+bounces-4138-wpasupplicant.patchew=gmail.com@lists.linux.dev designates 2604:1380:1:3600::1 as permitted sender) smtp.mailfrom="mptcp+bounces-4138-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 79D151C0D4F for ; Mon, 7 Mar 2022 20:44:56 +0000 (UTC) Received: from localhost.localdomain (localhost.localdomain [127.0.0.1]) by smtp.subspace.kernel.org (Postfix) with ESMTP id 800F04349; Mon, 7 Mar 2022 20:44:50 +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 3E1AC38FE for ; Mon, 7 Mar 2022 20:44:49 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1646685889; x=1678221889; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=KPNpdu3Rldm+3QB1r5PQ/DRLndD3TF2UZnkx5oNTpfc=; b=A5t3gVX1eGb/jsjfGYwg1o3+DrKR2kHcIv+sUBwE4g+RFA/Xjyqj6QLL 2lsO/D2I6pAwBXPbQVjKywv3LDyOGe0TKDxWXGjWHVpm5eV+lrXBw2JdE yPXySe9y1gVsKdmEraXnxuE9EfpADyUuKWmqzuNzX1UXblemJJPOOGvzM j1NZw91eBN8okataqwkzzYdxnRgAtYCF/D/ZYmAlf3p9NwNZWkPxZ9sJ2 fC9ApCcNMx7GaJBjNMkkvwQwtNOVO8chtHFan9AwN5daOS5nCJlnbmXuM 3cNwVuN8fSyCD05pRTq6NkFnvc+I6i9h+83DGhPxmuHVmmaw1RBosP5Pi Q==; X-IronPort-AV: E=McAfee;i="6200,9189,10279"; a="317731792" X-IronPort-AV: E=Sophos;i="5.90,163,1643702400"; d="scan'208";a="317731792" Received: from orsmga008.jf.intel.com ([10.7.209.65]) by orsmga105.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 07 Mar 2022 12:44:45 -0800 X-IronPort-AV: E=Sophos;i="5.90,163,1643702400"; d="scan'208";a="553320492" Received: from mjmartin-desk2.amr.corp.intel.com (HELO mjmartin-desk2.intel.com) ([10.212.192.43]) by orsmga008-auth.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 07 Mar 2022 12:44:45 -0800 From: Mat Martineau To: netdev@vger.kernel.org Cc: Paolo Abeni , davem@davemloft.net, kuba@kernel.org, matthieu.baerts@tessares.net, mptcp@lists.linux.dev, Mat Martineau Subject: [PATCH net-next 7/9] mptcp: strict local address ID selection Date: Mon, 7 Mar 2022 12:44:37 -0800 Message-Id: <20220307204439.65164-8-mathew.j.martineau@linux.intel.com> X-Mailer: git-send-email 2.35.1 In-Reply-To: <20220307204439.65164-1-mathew.j.martineau@linux.intel.com> References: <20220307204439.65164-1-mathew.j.martineau@linux.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" From: Paolo Abeni The address ID selection for MPJ subflows created in response to incoming ADD_ADDR option is currently unreliable: it happens at MPJ socket creation time, when the local address could be unknown. Additionally, if the no local endpoint is available for the local address, a new dummy endpoint is created, confusing the user-land. This change refactor the code to move the address ID selection inside the rebuild_header() helper, when the local address eventually selected by the route lookup is finally known. If the address used is not mapped by any endpoint - and thus can't be advertised/removed pick the id 0 instead of allocate a new endpoint. Signed-off-by: Paolo Abeni Signed-off-by: Mat Martineau --- net/mptcp/pm_netlink.c | 13 -------- net/mptcp/protocol.c | 3 ++ net/mptcp/protocol.h | 3 +- net/mptcp/subflow.c | 67 ++++++++++++++++++++++++++++++++++++------ 4 files changed, 63 insertions(+), 23 deletions(-) diff --git a/net/mptcp/pm_netlink.c b/net/mptcp/pm_netlink.c index 10368a4f1c4a..e090810bb35d 100644 --- a/net/mptcp/pm_netlink.c +++ b/net/mptcp/pm_netlink.c @@ -83,16 +83,6 @@ static bool addresses_equal(const struct mptcp_addr_info= *a, return a->port =3D=3D b->port; } =20 -static bool address_zero(const struct mptcp_addr_info *addr) -{ - struct mptcp_addr_info zero; - - memset(&zero, 0, sizeof(zero)); - zero.family =3D addr->family; - - return addresses_equal(addr, &zero, true); -} - static void local_address(const struct sock_common *skc, struct mptcp_addr_info *addr) { @@ -1039,9 +1029,6 @@ int mptcp_pm_nl_get_local_id(struct mptcp_sock *msk, = struct sock_common *skc) if (addresses_equal(&msk_local, &skc_local, false)) return 0; =20 - if (address_zero(&skc_local)) - return 0; - pernet =3D net_generic(sock_net((struct sock *)msk), pm_nl_pernet_id); =20 rcu_read_lock(); diff --git a/net/mptcp/protocol.c b/net/mptcp/protocol.c index 36a7d33f670a..101aeebeb9eb 100644 --- a/net/mptcp/protocol.c +++ b/net/mptcp/protocol.c @@ -117,6 +117,9 @@ static int __mptcp_socket_create(struct mptcp_sock *msk) list_add(&subflow->node, &msk->conn_list); sock_hold(ssock->sk); subflow->request_mptcp =3D 1; + + /* This is the first subflow, always with id 0 */ + subflow->local_id_valid =3D 1; mptcp_sock_graft(msk->first, sk->sk_socket); =20 return 0; diff --git a/net/mptcp/protocol.h b/net/mptcp/protocol.h index 9d0ee6cee07f..3c1a3036550f 100644 --- a/net/mptcp/protocol.h +++ b/net/mptcp/protocol.h @@ -442,7 +442,8 @@ struct mptcp_subflow_context { rx_eof : 1, can_ack : 1, /* only after processing the remote a key */ disposable : 1, /* ctx can be free at ulp release time */ - stale : 1; /* unable to snd/rcv data, do not use for xmit */ + stale : 1, /* unable to snd/rcv data, do not use for xmit */ + local_id_valid : 1; /* local_id is correctly initialized */ enum mptcp_data_avail data_avail; u32 remote_nonce; u64 thmac; diff --git a/net/mptcp/subflow.c b/net/mptcp/subflow.c index bb09a008e733..aba260f547da 100644 --- a/net/mptcp/subflow.c +++ b/net/mptcp/subflow.c @@ -481,6 +481,51 @@ static void subflow_finish_connect(struct sock *sk, co= nst struct sk_buff *skb) mptcp_subflow_reset(sk); } =20 +static void subflow_set_local_id(struct mptcp_subflow_context *subflow, in= t local_id) +{ + subflow->local_id =3D local_id; + subflow->local_id_valid =3D 1; +} + +static int subflow_chk_local_id(struct sock *sk) +{ + struct mptcp_subflow_context *subflow =3D mptcp_subflow_ctx(sk); + struct mptcp_sock *msk =3D mptcp_sk(subflow->conn); + int err; + + if (likely(subflow->local_id_valid)) + return 0; + + err =3D mptcp_pm_get_local_id(msk, (struct sock_common *)sk); + if (err < 0) + return err; + + subflow_set_local_id(subflow, err); + return 0; +} + +static int subflow_rebuild_header(struct sock *sk) +{ + int err =3D subflow_chk_local_id(sk); + + if (unlikely(err < 0)) + return err; + + return inet_sk_rebuild_header(sk); +} + +#if IS_ENABLED(CONFIG_MPTCP_IPV6) +static int subflow_v6_rebuild_header(struct sock *sk) +{ + int err =3D subflow_chk_local_id(sk); + + if (unlikely(err < 0)) + return err; + + return inet6_sk_rebuild_header(sk); +} +#endif + struct request_sock_ops mptcp_subflow_request_sock_ops; static struct tcp_request_sock_ops subflow_request_sock_ipv4_ops __ro_afte= r_init; =20 @@ -1398,13 +1443,8 @@ int __mptcp_subflow_connect(struct sock *sk, const s= truct mptcp_addr_info *loc, get_random_bytes(&subflow->local_nonce, sizeof(u32)); } while (!subflow->local_nonce); =20 - if (!local_id) { - err =3D mptcp_pm_get_local_id(msk, (struct sock_common *)ssk); - if (err < 0) - goto failed; - - local_id =3D err; - } + if (local_id) + subflow_set_local_id(subflow, local_id); =20 mptcp_pm_get_flags_and_ifindex_by_id(sock_net(sk), local_id, &flags, &ifindex); @@ -1429,7 +1469,6 @@ int __mptcp_subflow_connect(struct sock *sk, const st= ruct mptcp_addr_info *loc, pr_debug("msk=3D%p remote_token=3D%u local_id=3D%d remote_id=3D%d", msk, remote_token, local_id, remote_id); subflow->remote_token =3D remote_token; - subflow->local_id =3D local_id; subflow->remote_id =3D remote_id; subflow->request_join =3D 1; subflow->request_bkup =3D !!(flags & MPTCP_PM_ADDR_FLAG_BACKUP); @@ -1728,15 +1767,22 @@ static void subflow_ulp_clone(const struct request_= sock *req, new_ctx->token =3D subflow_req->token; new_ctx->ssn_offset =3D subflow_req->ssn_offset; new_ctx->idsn =3D subflow_req->idsn; + + /* this is the first subflow, id is always 0 */ + new_ctx->local_id_valid =3D 1; } else if (subflow_req->mp_join) { new_ctx->ssn_offset =3D subflow_req->ssn_offset; new_ctx->mp_join =3D 1; new_ctx->fully_established =3D 1; new_ctx->backup =3D subflow_req->backup; - new_ctx->local_id =3D subflow_req->local_id; new_ctx->remote_id =3D subflow_req->remote_id; new_ctx->token =3D subflow_req->token; new_ctx->thmac =3D subflow_req->thmac; + + /* the subflow req id is valid, fetched via subflow_check_req() + * and subflow_token_join_request() + */ + subflow_set_local_id(new_ctx, subflow_req->local_id); } } =20 @@ -1789,6 +1835,7 @@ void __init mptcp_subflow_init(void) subflow_specific.conn_request =3D subflow_v4_conn_request; subflow_specific.syn_recv_sock =3D subflow_syn_recv_sock; subflow_specific.sk_rx_dst_set =3D subflow_finish_connect; + subflow_specific.rebuild_header =3D subflow_rebuild_header; =20 tcp_prot_override =3D tcp_prot; tcp_prot_override.release_cb =3D tcp_release_cb_override; @@ -1801,6 +1848,7 @@ void __init mptcp_subflow_init(void) subflow_v6_specific.conn_request =3D subflow_v6_conn_request; subflow_v6_specific.syn_recv_sock =3D subflow_syn_recv_sock; subflow_v6_specific.sk_rx_dst_set =3D subflow_finish_connect; + subflow_v6_specific.rebuild_header =3D subflow_v6_rebuild_header; =20 subflow_v6m_specific =3D subflow_v6_specific; subflow_v6m_specific.queue_xmit =3D ipv4_specific.queue_xmit; @@ -1808,6 +1856,7 @@ void __init mptcp_subflow_init(void) subflow_v6m_specific.net_header_len =3D ipv4_specific.net_header_len; subflow_v6m_specific.mtu_reduced =3D ipv4_specific.mtu_reduced; subflow_v6m_specific.net_frag_header_len =3D 0; + subflow_v6m_specific.rebuild_header =3D subflow_rebuild_header; =20 tcpv6_prot_override =3D tcpv6_prot; tcpv6_prot_override.release_cb =3D tcp_release_cb_override; --=20 2.35.1 From nobody Tue May 7 11:25:05 2024 Delivered-To: wpasupplicant.patchew@gmail.com Received: by 2002:a05:6402:358d:0:0:0:0 with SMTP id y13csp814122edc; Mon, 7 Mar 2022 12:44:58 -0800 (PST) X-Google-Smtp-Source: ABdhPJyGUTSnK6QjGymUKUTaOflwxtMm5sqghSliSwOjeDFAEW9UCWeDBWqOMlLaJQwKdYlMVI/V X-Received: by 2002:a0d:ea97:0:b0:2d7:9394:17ce with SMTP id t145-20020a0dea97000000b002d7939417cemr10001349ywe.297.1646685898245; Mon, 07 Mar 2022 12:44:58 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1646685898; cv=none; d=google.com; s=arc-20160816; b=GsntdrNknxpHm0b0xcgOWKN8TzxjYcZdmkQmCpTN3URLx+DrD6PwSf5545s+tSGbM7 R5CmzA3ExnbFEEaIa9GiTjGnRIUb+Bbu/ewFRLdlU8Y0iha1pNJXC6KfV21TXEymHL3i TnlA+4ASzMDwqcvZOLk4CJ00VOrwD38eKUzwlhDagOwrpLhMAYEjxL34kgcaU/LE9ovd nkFIDRR5NsNXK3Ka+BBDedB70xrphDTgRVRq1QAMbtZynhJPPBfUCio/hnuVDOQ7sm0f 4dtEO7D/wttPc57nv1dwTvEam/Vyj8tWo2NVIMhGTtLuMTJemmN+TfEkkgrSEpzCP8Nr y9Xw== 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:cc:to:from:dkim-signature; bh=mCvDQHLDEhRcbCwJV7ojFYFs+qyQ0k2xk+Lz8XCVcfg=; b=vSZaROXhEqM8CPLGmM/ZrSm9Nw09lJeavMoRN5cUtk0mEKHgPaTm9XQfz/FU5Gd5G3 jVqf1u0nj2UJr7C/VmwCUZoa9+CtBRWLxgYXfleftFejnnDAwCiWbQ7YtGu2dT9/bETm AxBVwEhB7zmrXCQopK8+XIYYzJPmz4FZKUEyZEQ9auatF7rUlQnLXuayynSl+TyT0kU8 hb1YOLKjTw/xkczNR9syRkMX1fToBClDlXVxncxDxO4ijgRORJ+UCPUbm9izb+c9bPt8 DptOQCoA60GiCdTiSdp0XCtS9pPBuv27OWHdoIyQP3ZBt165du2hkmTzWK53baVyjVlU AA2g== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@intel.com header.s=Intel header.b=B7xNE61V; spf=pass (google.com: domain of mptcp+bounces-4139-wpasupplicant.patchew=gmail.com@lists.linux.dev designates 2604:1380:1:3600::1 as permitted sender) smtp.mailfrom="mptcp+bounces-4139-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 be16-20020a05690c009000b002dbf9150095si14099931ywb.5.2022.03.07.12.44.58 for (version=TLS1_2 cipher=ECDHE-ECDSA-AES128-GCM-SHA256 bits=128/128); Mon, 07 Mar 2022 12:44:58 -0800 (PST) Received-SPF: pass (google.com: domain of mptcp+bounces-4139-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=B7xNE61V; spf=pass (google.com: domain of mptcp+bounces-4139-wpasupplicant.patchew=gmail.com@lists.linux.dev designates 2604:1380:1:3600::1 as permitted sender) smtp.mailfrom="mptcp+bounces-4139-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 9A9881C0D2D for ; Mon, 7 Mar 2022 20:44:57 +0000 (UTC) Received: from localhost.localdomain (localhost.localdomain [127.0.0.1]) by smtp.subspace.kernel.org (Postfix) with ESMTP id EC9AC38FE; Mon, 7 Mar 2022 20:44:50 +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 E290E4352 for ; Mon, 7 Mar 2022 20:44:49 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1646685889; x=1678221889; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=Y70bUn1hKmrA0uVOeYcMBCmyn9LGK/Kr0ab27W7G4mE=; b=B7xNE61VWVNziPt7td5IHemg973VWEzn8lp4Kv4HZU6UxpbfLiGIlaxE U4MLYBgXwOuW9IlfzpXSGTuO6ST+TO7W+4GLkkEbf9ftn+WQ4ziTDhsNB m72j1q+MW7vR5PbUWhry+Dll2o5G8U3s7mNGoAlkkRbzNf+l3ylEomzm1 +bqKmnWc4KfBYWL/fOhbB2uiZ2p2eWOwD8CI/ozQlWBEdZ3j3k4NRkqIu rBLziL3oNWCiPpcewervQTAkU89kh0+T0ddwbY+E5al5lXckvbJWqimih Enouz9PHm5hvrvYiaCSvTyU/IlcbM5Of/X1DEjdOW6DjdBv1Vh8cCZ3PX Q==; X-IronPort-AV: E=McAfee;i="6200,9189,10279"; a="317731793" X-IronPort-AV: E=Sophos;i="5.90,163,1643702400"; d="scan'208";a="317731793" Received: from orsmga008.jf.intel.com ([10.7.209.65]) by orsmga105.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 07 Mar 2022 12:44:45 -0800 X-IronPort-AV: E=Sophos;i="5.90,163,1643702400"; d="scan'208";a="553320493" Received: from mjmartin-desk2.amr.corp.intel.com (HELO mjmartin-desk2.intel.com) ([10.212.192.43]) by orsmga008-auth.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 07 Mar 2022 12:44:45 -0800 From: Mat Martineau To: netdev@vger.kernel.org Cc: Paolo Abeni , davem@davemloft.net, kuba@kernel.org, matthieu.baerts@tessares.net, mptcp@lists.linux.dev, Mat Martineau Subject: [PATCH net-next 8/9] selftests: mptcp: add implicit endpoint test case Date: Mon, 7 Mar 2022 12:44:38 -0800 Message-Id: <20220307204439.65164-9-mathew.j.martineau@linux.intel.com> X-Mailer: git-send-email 2.35.1 In-Reply-To: <20220307204439.65164-1-mathew.j.martineau@linux.intel.com> References: <20220307204439.65164-1-mathew.j.martineau@linux.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" From: Paolo Abeni Ensure implicit endpoint are created when expected and that the user-space can update them Reviewed-by: Matthieu Baerts Co-developed-by: Matthieu Baerts Signed-off-by: Matthieu Baerts Signed-off-by: Paolo Abeni Signed-off-by: Mat Martineau --- .../testing/selftests/net/mptcp/mptcp_join.sh | 120 +++++++++++++++++- tools/testing/selftests/net/mptcp/pm_nl_ctl.c | 7 + 2 files changed, 126 insertions(+), 1 deletion(-) diff --git a/tools/testing/selftests/net/mptcp/mptcp_join.sh b/tools/testin= g/selftests/net/mptcp/mptcp_join.sh index 1e2e8dd9f0d6..ee435948d130 100755 --- a/tools/testing/selftests/net/mptcp/mptcp_join.sh +++ b/tools/testing/selftests/net/mptcp/mptcp_join.sh @@ -310,6 +310,21 @@ wait_rm_addr() done } =20 +wait_mpj() +{ + local ns=3D"${1}" + local cnt old_cnt + + old_cnt=3D$(ip netns exec ${ns} nstat -as | grep MPJoinAckRx | awk '{prin= t $2}') + + local i + for i in $(seq 10); do + cnt=3D$(ip netns exec ${ns} nstat -as | grep MPJoinAckRx | awk '{print $= 2}') + [ "$cnt" =3D "${old_cnt}" ] || break + sleep 0.1 + done +} + pm_nl_set_limits() { local ns=3D$1 @@ -410,6 +425,80 @@ pm_nl_change_endpoint() fi } =20 +pm_nl_check_endpoint() +{ + local line expected_line + local title=3D"$1" + local msg=3D"$2" + local ns=3D$3 + local addr=3D$4 + local _flags=3D"" + local flags + local _port + local port + local dev + local _id + local id + + if [ -n "${title}" ]; then + printf "%03u %-36s %s" "${TEST_COUNT}" "${title}" "${msg}" + else + printf "%-${nr_blank}s %s" " " "${msg}" + fi + + shift 4 + while [ -n "$1" ]; do + if [ $1 =3D "flags" ]; then + _flags=3D$2 + [ ! -z $_flags ]; flags=3D"flags $_flags" + shift + elif [ $1 =3D "dev" ]; then + [ ! -z $2 ]; dev=3D"dev $1" + shift + elif [ $1 =3D "id" ]; then + _id=3D$2 + [ ! -z $_id ]; id=3D"id $_id" + shift + elif [ $1 =3D "port" ]; then + _port=3D$2 + [ ! -z $_port ]; port=3D" port $_port" + shift + fi + + shift + done + + if [ -z "$id" ]; then + echo "[skip] bad test - missing endpoint id" + return + fi + + if [ $ip_mptcp -eq 1 ]; then + line=3D$(ip -n $ns mptcp endpoint show $id) + # the dump order is: address id flags port dev + expected_line=3D"$addr" + [ -n "$addr" ] && expected_line=3D"$expected_line $addr" + expected_line=3D"$expected_line $id" + [ -n "$_flags" ] && expected_line=3D"$expected_line ${_flags//","/" "}" + [ -n "$dev" ] && expected_line=3D"$expected_line $dev" + [ -n "$port" ] && expected_line=3D"$expected_line $port" + else + line=3D$(ip netns exec $ns ./pm_nl_ctl get $_id) + # the dump order is: id flags dev address port + expected_line=3D"$id" + [ -n "$flags" ] && expected_line=3D"$expected_line $flags" + [ -n "$dev" ] && expected_line=3D"$expected_line $dev" + [ -n "$addr" ] && expected_line=3D"$expected_line $addr" + [ -n "$_port" ] && expected_line=3D"$expected_line $_port" + fi + if [ "$line" =3D "$expected_line" ]; then + echo "[ ok ]" + else + echo "[fail] expected '$expected_line' found '$line'" + ret=3D1 + fi +} + do_transfer() { listener_ns=3D"$1" @@ -2269,6 +2358,30 @@ fastclose_tests() chk_rst_nr 1 1 invert } =20 +implicit_tests() +{ + # userspace pm type prevents add_addr + reset + pm_nl_set_limits $ns1 2 2 + pm_nl_set_limits $ns2 2 2 + pm_nl_add_endpoint $ns1 10.0.2.1 flags signal + run_tests $ns1 $ns2 10.0.1.1 0 0 0 slow & + + wait_mpj $ns1 + TEST_COUNT=3D$((TEST_COUNT + 1)) + pm_nl_check_endpoint "implicit EP" "creation" \ + $ns2 10.0.2.2 id 1 flags implicit + + pm_nl_add_endpoint $ns2 10.0.2.2 id 33 + pm_nl_check_endpoint "" "ID change is prevented" \ + $ns2 10.0.2.2 id 1 flags implicit + + pm_nl_add_endpoint $ns2 10.0.2.2 flags signal + pm_nl_check_endpoint "" "modif is allowed" \ + $ns2 10.0.2.2 id 1 flags signal + wait +} + all_tests() { subflows_tests @@ -2287,6 +2400,7 @@ all_tests() deny_join_id0_tests fullmesh_tests fastclose_tests + implicit_tests } =20 # [$1: error message] @@ -2314,6 +2428,7 @@ usage() echo " -d deny_join_id0_tests" echo " -m fullmesh_tests" echo " -z fastclose_tests" + echo " -I implicit_tests" echo " -c capture pcap files" echo " -C enable data checksum" echo " -i use ip mptcp" @@ -2324,7 +2439,7 @@ usage() =20 =20 tests=3D() -while getopts 'fesltra64bpkdmchzCSi' opt; do +while getopts 'fesltra64bpkdmchzICSi' opt; do case $opt in f) tests+=3D(subflows_tests) @@ -2374,6 +2489,9 @@ while getopts 'fesltra64bpkdmchzCSi' opt; do z) tests+=3D(fastclose_tests) ;; + I) + tests+=3D(implicit_tests) + ;; c) capture=3D1 ;; diff --git a/tools/testing/selftests/net/mptcp/pm_nl_ctl.c b/tools/testing/= selftests/net/mptcp/pm_nl_ctl.c index 22a5ec1e128e..a75a68ad652e 100644 --- a/tools/testing/selftests/net/mptcp/pm_nl_ctl.c +++ b/tools/testing/selftests/net/mptcp/pm_nl_ctl.c @@ -436,6 +436,13 @@ static void print_addr(struct rtattr *attrs, int len) printf(","); } =20 + if (flags & MPTCP_PM_ADDR_FLAG_IMPLICIT) { + printf("implicit"); + flags &=3D ~MPTCP_PM_ADDR_FLAG_IMPLICIT; + if (flags) + printf(","); + } + /* bump unknown flags, if any */ if (flags) printf("0x%x", flags); --=20 2.35.1 From nobody Tue May 7 11:25:05 2024 Delivered-To: wpasupplicant.patchew@gmail.com Received: by 2002:a05:6402:358d:0:0:0:0 with SMTP id y13csp814130edc; Mon, 7 Mar 2022 12:44:59 -0800 (PST) X-Google-Smtp-Source: ABdhPJx63bvr1udPAOE+38EqV2IwwpQMpqkOoC8oyiK932/BQo/SE9ZItjjIDaItnXDRnOa1Iv1Q X-Received: by 2002:a81:a4d:0:b0:2db:efff:b9df with SMTP id 74-20020a810a4d000000b002dbefffb9dfmr9985202ywk.174.1646685899224; Mon, 07 Mar 2022 12:44:59 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1646685899; cv=none; d=google.com; s=arc-20160816; b=kAHYJd0RFRXN+N9EfqgAETZkTY1NyP0luEEbT8xEFU2VvPMKekJvbM5u6+6YgY3yEN eaiguuuiH9nroTHvKSxm/bNbmmv5j1XvxQ7z6UYRVmLP0dKtHubAVHVWjLt6s6FQSjIX 0bUnjf9S20Pi3eaT4sG44n1DFUyGTr9bnShBQ9PwBWcDYqB5efuZ98w6gevgMXY/ShG4 AQaQByvfMDoOLJZuIhAJyhj69DWdty1YIHGed2oM2iqfGWe+fwFxdVlJW4QRnRJrk09V GUIShmrLptXjBg2MUB9rd9evDUX00i197J2CFlBbX1IRWSgaVYfhzNeVZVk2mkZmRsc9 9t8A== 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:cc:to:from:dkim-signature; bh=SljWsmg6Ip+uRNNav/RYcW0zzuPdsiXsQ8E8iifN31k=; b=XOrCCEcT9dttMq59HiVsZnyvRheXuUxOhNnN9APDz+6cxhCaUXAWt6NnwLsA4Ji1SA gNZKQu74Zyi9y07sEh6k8uvJekCcCOvvn6mTbWRx9/Ku8NiMjmkW4Lc5T2bBAyFJ8NFe eZSi84d78BFk5wpldOigcOOwD+JNfUHYlN5Ny1bThALhZR4PENRfaa18axZywm/Hr+le tWgsJUotS2We0fKSB//4b9dxqlyJKAspmJ7LphgDsKDtC5DakuW/m7DBMEcIQQchJhYR TGW71yIywL7tNXNg0h8vVu67G6gA0BY6A5kBlQkhdSLLfxzGYkBZPOdb7Wz+PuTMfHyr g4Rg== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@intel.com header.s=Intel header.b=Nc3SKl4q; spf=pass (google.com: domain of mptcp+bounces-4140-wpasupplicant.patchew=gmail.com@lists.linux.dev designates 2604:1380:1:3600::1 as permitted sender) smtp.mailfrom="mptcp+bounces-4140-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 n3-20020a252703000000b0061d87a9dc5bsi9164672ybn.270.2022.03.07.12.44.59 for (version=TLS1_2 cipher=ECDHE-ECDSA-AES128-GCM-SHA256 bits=128/128); Mon, 07 Mar 2022 12:44:59 -0800 (PST) Received-SPF: pass (google.com: domain of mptcp+bounces-4140-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=Nc3SKl4q; spf=pass (google.com: domain of mptcp+bounces-4140-wpasupplicant.patchew=gmail.com@lists.linux.dev designates 2604:1380:1:3600::1 as permitted sender) smtp.mailfrom="mptcp+bounces-4140-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 C46EC1C0B5C for ; Mon, 7 Mar 2022 20:44:58 +0000 (UTC) Received: from localhost.localdomain (localhost.localdomain [127.0.0.1]) by smtp.subspace.kernel.org (Postfix) with ESMTP id 0A576434D; Mon, 7 Mar 2022 20:44:52 +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 046884356 for ; Mon, 7 Mar 2022 20:44:50 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1646685890; x=1678221890; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=/eP9FA3TlK1JhqXDW8j+WHnR3670oSgdS19K3yRsgGA=; b=Nc3SKl4qPl2uyX4+VocbLD43/cXKURaaHiiOoUmU5T0zpbU79Jlyjzmd qnZF8+0Z/PAlqtctnA59OfkGwg1CynXRau5joa3BjzVMAo41JI5m1+5qP BCobAEAB3huJoaG8iN9nVJgR8rIyx/Q3iHipO17Blsnoibmf8mXTSH24H G6Ex2rZZRsCM8stobUOoAf/fzVu3i/1pPa1K3MX+AXsJsxcPiBVaKRAlE 7g3YMiFq0BRWT6DaYirpM+g+HWy0WJ9kRdbvqUFkV3Vc2LYo6Q3CqqaHx fV7Hr4PAPi9Uw1pAMbyo46bk16EpDtV5YkNrYvNhOdw8BNDb1SFUuY3n4 Q==; X-IronPort-AV: E=McAfee;i="6200,9189,10279"; a="317731795" X-IronPort-AV: E=Sophos;i="5.90,163,1643702400"; d="scan'208";a="317731795" Received: from orsmga008.jf.intel.com ([10.7.209.65]) by orsmga105.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 07 Mar 2022 12:44:45 -0800 X-IronPort-AV: E=Sophos;i="5.90,163,1643702400"; d="scan'208";a="553320496" Received: from mjmartin-desk2.amr.corp.intel.com (HELO mjmartin-desk2.intel.com) ([10.212.192.43]) by orsmga008-auth.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 07 Mar 2022 12:44:45 -0800 From: Mat Martineau To: netdev@vger.kernel.org Cc: Geliang Tang , davem@davemloft.net, kuba@kernel.org, matthieu.baerts@tessares.net, mptcp@lists.linux.dev, Mat Martineau Subject: [PATCH net-next 9/9] mptcp: add fullmesh flag check for adding address Date: Mon, 7 Mar 2022 12:44:39 -0800 Message-Id: <20220307204439.65164-10-mathew.j.martineau@linux.intel.com> X-Mailer: git-send-email 2.35.1 In-Reply-To: <20220307204439.65164-1-mathew.j.martineau@linux.intel.com> References: <20220307204439.65164-1-mathew.j.martineau@linux.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" From: Geliang Tang The fullmesh flag mustn't be used with the signal flag when adding an address. This patch added the necessary flags check for this case. Fixes: 73c762c1f07d ("mptcp: set fullmesh flag in pm_netlink") Signed-off-by: Geliang Tang Signed-off-by: Mat Martineau --- net/mptcp/pm_netlink.c | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/net/mptcp/pm_netlink.c b/net/mptcp/pm_netlink.c index e090810bb35d..800515fe5e1d 100644 --- a/net/mptcp/pm_netlink.c +++ b/net/mptcp/pm_netlink.c @@ -1264,6 +1264,12 @@ static int mptcp_nl_cmd_add_addr(struct sk_buff *skb= , struct genl_info *info) return -EINVAL; } =20 + if (addr.flags & MPTCP_PM_ADDR_FLAG_SIGNAL && + addr.flags & MPTCP_PM_ADDR_FLAG_FULLMESH) { + GENL_SET_ERR_MSG(info, "flags mustn't have both signal and fullmesh"); + return -EINVAL; + } + if (addr.flags & MPTCP_PM_ADDR_FLAG_IMPLICIT) { GENL_SET_ERR_MSG(info, "can't create IMPLICIT endpoint"); return -EINVAL; --=20 2.35.1