From nobody Thu Sep 18 06:43:00 2025 Delivered-To: wpasupplicant.patchew@gmail.com Received: by 2002:a9f:3042:0:0:0:0:0 with SMTP id i2csp71139uab; Wed, 8 Jun 2022 17:01:23 -0700 (PDT) X-Google-Smtp-Source: ABdhPJxjlFgUMMxdn+lE2oe+KPOfSo9WcEPmpt2E5PZeQO0cg8sImjSVPEFLrOlk4/mr6sgbls/m X-Received: by 2002:a17:90b:4acf:b0:1ea:4f97:55d6 with SMTP id mh15-20020a17090b4acf00b001ea4f9755d6mr540115pjb.82.1654732883032; Wed, 08 Jun 2022 17:01:23 -0700 (PDT) Return-Path: Received: from sv.mirrors.kernel.org (sv.mirrors.kernel.org. [139.178.88.99]) by mx.google.com with ESMTPS id on17-20020a17090b1d1100b001dfefcb735csi31741613pjb.95.2022.06.08.17.01.22 for (version=TLS1_2 cipher=ECDHE-ECDSA-AES128-GCM-SHA256 bits=128/128); Wed, 08 Jun 2022 17:01:23 -0700 (PDT) Received-SPF: pass (google.com: domain of mptcp+bounces-5599-wpasupplicant.patchew=gmail.com@lists.linux.dev designates 139.178.88.99 as permitted sender) client-ip=139.178.88.99; Authentication-Results: mx.google.com; dkim=pass header.i=@suse.com header.s=mimecast20200619 header.b=kgVoHI7Q; dkim=neutral (body hash did not verify) header.i=@mysuse.onmicrosoft.com header.s=selector1-mysuse-onmicrosoft-com header.b=SDlZFgjr; arc=fail (body hash mismatch); spf=pass (google.com: domain of mptcp+bounces-5599-wpasupplicant.patchew=gmail.com@lists.linux.dev designates 139.178.88.99 as permitted sender) smtp.mailfrom="mptcp+bounces-5599-wpasupplicant.patchew=gmail.com@lists.linux.dev"; dmarc=pass (p=QUARANTINE sp=QUARANTINE dis=NONE) header.from=suse.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 sv.mirrors.kernel.org (Postfix) with ESMTPS id D8B7228099E for ; Thu, 9 Jun 2022 00:01:21 +0000 (UTC) Received: from localhost.localdomain (localhost.localdomain [127.0.0.1]) by smtp.subspace.kernel.org (Postfix) with ESMTP id 6F4DE2F59; Thu, 9 Jun 2022 00:01:20 +0000 (UTC) X-Original-To: mptcp@lists.linux.dev Received: from de-smtp-delivery-102.mimecast.com (de-smtp-delivery-102.mimecast.com [194.104.109.102]) (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 712607B for ; Thu, 9 Jun 2022 00:01:18 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=suse.com; s=mimecast20200619; t=1654732876; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=RMM/iB6esnrGGp0/IGyocozOLOaGEtfRIYi85Y3YZlA=; b=kgVoHI7QWGcLUjcR0QSDdssU/6yHPOyBn9ATgBdQrwOp+S4bOpZQ/1zb/RhhBB9LgoUWui tyYbUS8JMj8F2+gtJYhEzamZpWxRRH5sJJKSpA136/uADNp7MVpbCxvJ4P6T5Pm/cTgMFQ yMHq+z0ijMMoUQZmmIZB7BXv+WAlNjI= Received: from EUR05-AM6-obe.outbound.protection.outlook.com (mail-am6eur05lp2107.outbound.protection.outlook.com [104.47.18.107]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id de-mta-41-82K39Bf2PreFDB_LEbwSVg-1; Thu, 09 Jun 2022 02:01:15 +0200 X-MC-Unique: 82K39Bf2PreFDB_LEbwSVg-1 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=e+jtWNLWmg18lD2McM0823ELWtOFdpmnJcsY3bvEuruuxRHxrXjblrLahy41TIWQNfIN4IcVqcKwxxZ7fzMw0n5HiTnPhZSps7s/RYzTa2468aUPI/gNIHdYLyN67GteiZvdGWOjXDsj4qzfgsZpbtSFihWWU1Fsp7mLsiM3pIjxGpXcn8PmHePkiRxmgrXD70f1/PmViZrN4pigEkXRQpQ/eALiP9JHew4BDQkZFDl/5R6fI0iR8VODnM1sB7K2SvZEjBpZ1r3HOJ3NlsKmlkw0y//V+/MiGX3zuGwbodAU1vnt/P1SiTzwnRYIkv2DHgCMe+l/tQ6PxYkMobeSAw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=ugGxdQH/TBh6zHgxZ4nSUsB4TVEmdBAeEirjrCAxfGg=; b=e1HIxyiYhICAw7fmypy9abA8/91dTqzrykYWvRpw9V0/tyRkk0e6RVunqA4RfERbx0nQycR0oeGWwldWDyhLlqp6P1VubpP6H41WbwUEKwNUOyhD3vTFm77N1zoHjlSOAPXnEJQD6/5iGj3186CWoCGBeH7XbY7CXmOMUfl1/3+9Pbeh3Y72Lo+BbXOG0gBMgj6q7yG3x+eDz/wFmtXJbon0DTCm8Qo6wHayRo8D64Dj8oYkBTmvoxCAcEXXR6zaWnaqwsTJ/+DfrLtYmqWsU6ygIIdb7GoreETfPZG5OX5dAzBDBPUFDcs/MAOcJnDJ76EAjFzYzxsbsNl8BFk5YA== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=suse.com; dmarc=pass action=none header.from=suse.com; dkim=pass header.d=suse.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=mysuse.onmicrosoft.com; s=selector1-mysuse-onmicrosoft-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=ugGxdQH/TBh6zHgxZ4nSUsB4TVEmdBAeEirjrCAxfGg=; b=SDlZFgjrEt+ptZ9sYdlrUzmqMjT1BtlZCsF7dGb5dSjL80uANsUugGiMpjAVmNsHdF/PdcoZKSv/HekiVUwPjmydQZLuAgeCPC287d9JPIG5IMqldpKEsYo8h4kgE14ktyogl4OBVuSKe0Z160opgNOg2hoYXCBbvmTFCCQOFAytac1vqrXOkO4yDHEOqJ9jAVPVKro3TsJb2lEtufKmzqoBeMiAtRLjEbeES17EfySpvckFGe/tTd7s3pBAeCB41xCslzNmtCxXUJR8eEYlt+Kjat75JJSUmb8diDrrcsvVWDmHmGxX/ULG/DmysKTiluavmIX0n2KLExNJO6t6ow== Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=suse.com; Received: from HE1PR0402MB3497.eurprd04.prod.outlook.com (2603:10a6:7:83::14) by AM6PR04MB4263.eurprd04.prod.outlook.com (2603:10a6:209:4f::25) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5332.12; Thu, 9 Jun 2022 00:01:14 +0000 Received: from HE1PR0402MB3497.eurprd04.prod.outlook.com ([fe80::8002:50a5:a57a:d8fe]) by HE1PR0402MB3497.eurprd04.prod.outlook.com ([fe80::8002:50a5:a57a:d8fe%5]) with mapi id 15.20.5332.013; Thu, 9 Jun 2022 00:01:14 +0000 From: Geliang Tang To: mptcp@lists.linux.dev CC: Geliang Tang , Paolo Abeni Subject: [PATCH mptcp-next v4 1/2] mptcp: refactor MP_FAIL response timeout Date: Thu, 9 Jun 2022 08:00:52 +0800 Message-ID: X-Mailer: git-send-email 2.35.3 In-Reply-To: References: Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: SG2P153CA0012.APCP153.PROD.OUTLOOK.COM (2603:1096::22) To HE1PR0402MB3497.eurprd04.prod.outlook.com (2603:10a6:7:83::14) Precedence: bulk X-Mailing-List: mptcp@lists.linux.dev List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: b837a99d-95ea-40b4-e35f-08da49ab2b1f X-MS-TrafficTypeDiagnostic: AM6PR04MB4263:EE_ X-Microsoft-Antispam-PRVS: X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: H3ixPuiRpzuaXe9BQXx2uTy3+gqoVkrnw8x3FxLlQLbfCAdOF2dLaernppb2trpjpb+4OmDaSPh+lpYj95GwBH+/IWQMSlrNbLUYXYKdHmLeL9XypxmC+KD8dQb5+IkGwGFlN0eIfTxN1b7YOS6K2/VOfsCgJMjqVdLdHVkp4iShhojPcciEdBSSVHjxRIho6Aa719Me4wjFVmPOZOO8jdYXGkrpY69knUk0VECrq1zYqmZY0ayMtOBHFfozXM65fKKhe0EWGuZeYYHNRHdsHrM+xEhraB06a/TwXRBAtdttUl8gaCvTzEQdydZobdWCgbGTnBMbj7JrHB50LuasUO77KgV8DTDyt+J4ag72d+V5BHXnhhhKUagJ8MCF76xQvZWOnT71ulc7ytUuDd3ff3R93DA/04/Gq9TdkWEA8PCVnu1E1SVevb4+W+kUr9mIqz8G+Ev0T2+1cnl5P0r/7bYezxxt2fdHCkFMNhDkN1i6VXvDs2o5E/3nyyH300PnEbUHdUexokza+C0tdbGXgtb54nf22zASgHa2sKWb9gIuAptmEm62NJqEClOWn6wCbCen9+IcNKb75K1kKkHQGkKZgkCGvaLSLzqUwZlDMqrypr3qeImsmuUiv1uwlbh5WALoLGp/gaxecsUJ2StXPDWBD/3mSpW4KlYZLQ7NsNzb31RJAAzXIp9qx6u9GN53fp/AJmmQoLDBljitOAtMpCLGqVnj0f9tZNrjSRgZosRQwUNHN4IAJCfyt/Gn5HsirLs0ZDbS/0UeYxRoHl8QNQ== X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:HE1PR0402MB3497.eurprd04.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230001)(366004)(26005)(316002)(186003)(8676002)(6512007)(4326008)(6506007)(8936002)(54906003)(86362001)(66946007)(6486002)(6916009)(66476007)(66556008)(83380400001)(508600001)(6666004)(38100700002)(966005)(2616005)(5660300002)(2906002)(44832011)(36756003)(13296009);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?lapkuZb/RBAJjUIudQGFrroe838ULcZgkD2CYkBO77zxyX9h6pK29lKZ777C?= =?us-ascii?Q?aUCKk0m6DKYukAL4X/qE4jAUAY7ocX/2LhMIwXX8tzq3wVRWBIYOtuXf5cuF?= =?us-ascii?Q?SojJ0e2Vw5KK363qi+4dl8vGwenMRbFPClW4ZtD+YdPqy9PxlZZY0GnEIALo?= =?us-ascii?Q?ApTxde76fdNeGokp8V5OLKo2ZQ+R8WQzbeScD4saQOyNGyvCyXQ4GiiwYIIC?= =?us-ascii?Q?hjmjiEIrUCFWd68z+8HlUWJuDgImsimEiTZCgbK+BogXQqzhoJckZDX7JSoT?= =?us-ascii?Q?39VK7fS2J93410WBOaNOwAVdFeE/P5nxTUvjd4lOYLjFBu+rwyTecfptODY6?= =?us-ascii?Q?s8hh2DVRFDsnWgn9BIawDBtjsTANSh9S5JuZ9/vz3Ige0v498V84qxUFnAou?= =?us-ascii?Q?o2oTr/kkrdg5Z9yVtOwTL4Ao+lPckmyMbvyU9vCmEPitEFItWq9BkrP1XPbS?= =?us-ascii?Q?/+P6uiI/5UOoHyjRzcKyNibSRJN+nrmVJtR1YUP7fMoJeohycQV+jMyoSRS0?= =?us-ascii?Q?wFLqw6Qoih/6QZogy8/b82S6slOUfzcB61+dmdF6IzUcdg96VsYGABWFO2Vk?= =?us-ascii?Q?W1DStkBvEQQX3vSc+x6AfM8kK9tBpgg/2BvDarP7viKnhF9OYA5phef7FJWf?= =?us-ascii?Q?+Rad27gmavNC/fNBK+qtode2i4o2Qbr9GWpP+/X3oCMuAVk5rti50qx/pXUr?= =?us-ascii?Q?1gRiYkVKUXLCzFCkm3iPyYi7wkR31JePDIJe1svGySlIZZMWDn6WzpQI/y+W?= =?us-ascii?Q?Gpl3eFaINqLaVHvXP3InZDyE28u/+1NMkwn6nhe+Hao6K3GdXVVeDKDrbQCq?= =?us-ascii?Q?w3MZbb5nq3O1B9F5IQGNMHonQD3XIDPc17HllNt5GF3hXwLsq0n+lTwcEudl?= =?us-ascii?Q?EYM7pG9LgYqybghFBaobn9//Ndhxft9q/rvZ0xu203N53wldPQYFmGBaC6VQ?= =?us-ascii?Q?iz5vtk/SbTZbe8hwwAeYNdsPBF4/ObK5UcCSlEiliWGScyNzghHcc0YhAGct?= =?us-ascii?Q?EgzSXfuJw+4WDIpxjwbPqPtd59DjmbtlmTK3tP+kblntozsH0S4UTdLGN3CW?= =?us-ascii?Q?/xD5z7Vux311CmlC0hFCn+udEgcwKlTop6tPAxkIPl5QjAzMvQHteB7cqfvM?= =?us-ascii?Q?H8KykCnVuHkS10QmxV21br8l8MjMMpLpSfgu5HEY1ju2jINn4K4eu6JE0Hyt?= =?us-ascii?Q?77uzGLEURsrhwXOyD6RBGb7O3Z1G1xBFP7HzRlwM+f7KdJzbyEJc4Jv5BzS+?= =?us-ascii?Q?KAAonLo6cBBrbTCAH9w91Jme6fNIjGMNly9pecawWeIRqvH77M8Fs/IZy3LV?= =?us-ascii?Q?U6aSfLka3gJaFK6AJalvw8FXzbJ/4lacKh3Ti/IqbZOJlzLFzNbExB2ttllB?= =?us-ascii?Q?JarVSJvXYERq5+s9OXczEfEnPnI+TFMBgrxMylC2QaoQ9Gd2I1p2SnRpe2LN?= =?us-ascii?Q?Mz8ft9XVBp1GOey15wTyjxmh3eAscQYkvNYO/mcgOkZJbvpypRb96lRZSuk+?= =?us-ascii?Q?G1NW+A/05MTpmuT7TRs5rmbHSrOToTMAVYjxMglFMBKM4Rp4THcZKlTdKs4q?= =?us-ascii?Q?X+kr913qWFjROdJOtKggFCYCvWSOjkXd5zGvMima2bAXLrqzNusm1jM8SeyQ?= =?us-ascii?Q?YZQmSIT2eltHXtw85VeW5uQmNvNUlWdRWARSr3I7w1yIDm+FPVPsUDzr2w4i?= =?us-ascii?Q?m5tzBUic49Z0+d9bB6JRWDko25MaC4nxypLjD+BY2LETp5ne9R3p27yvm4gG?= =?us-ascii?Q?Gfs7lWJzc8C8ZlzSItnhy2eQSH/26IQ=3D?= X-OriginatorOrg: suse.com X-MS-Exchange-CrossTenant-Network-Message-Id: b837a99d-95ea-40b4-e35f-08da49ab2b1f X-MS-Exchange-CrossTenant-AuthSource: HE1PR0402MB3497.eurprd04.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 09 Jun 2022 00:01:14.0904 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: f7a17af6-1c5c-4a36-aa8b-f5be247aa4ba X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: 6eNDL5hyZbUbeYzN5pvdH+PvdRXeHSEbEtyLbXAop4fQ1/Ffi1nftKTRAyz0+vA6KG+9KiNju0yyI0TZ1kOpNQ== X-MS-Exchange-Transport-CrossTenantHeadersStamped: AM6PR04MB4263 Content-Type: text/plain; charset="utf-8" mptcp_mp_fail_no_response shouldn't be invoked on each worker run, it should be invoked only when MP_FAIL response timeout occurs. This patch refactors the MP_FAIL response timeout logic. Add fail_tout in mptcp_sock to record the MP_FAIL timestamp. Check it in mptcp_worker() before invoking mptcp_mp_fail_no_response(). Drop the code to reuse sk_timer for MP_FAIL response. Closes: https://github.com/multipath-tcp/mptcp_net-next/issues/281 Fixes: d9fb797046c5 ("mptcp: Do not traverse the subflow connection list wi= thout lock") Acked-by: Paolo Abeni Signed-off-by: Geliang Tang --- net/mptcp/pm.c | 5 +---- net/mptcp/protocol.c | 4 +++- net/mptcp/protocol.h | 1 + net/mptcp/subflow.c | 10 ++-------- 4 files changed, 7 insertions(+), 13 deletions(-) diff --git a/net/mptcp/pm.c b/net/mptcp/pm.c index 59a85220edc9..45a9e02abf24 100644 --- a/net/mptcp/pm.c +++ b/net/mptcp/pm.c @@ -299,7 +299,6 @@ void mptcp_pm_mp_fail_received(struct sock *sk, u64 fai= l_seq) { struct mptcp_subflow_context *subflow =3D mptcp_subflow_ctx(sk); struct mptcp_sock *msk =3D mptcp_sk(subflow->conn); - struct sock *s =3D (struct sock *)msk; =20 pr_debug("fail_seq=3D%llu", fail_seq); =20 @@ -312,10 +311,8 @@ void mptcp_pm_mp_fail_received(struct sock *sk, u64 fa= il_seq) subflow->send_mp_fail =3D 1; MPTCP_INC_STATS(sock_net(sk), MPTCP_MIB_MPFAILTX); subflow->send_infinite_map =3D 1; - } else if (!sock_flag(sk, SOCK_DEAD)) { + } else { pr_debug("MP_FAIL response received"); - - sk_stop_timer(s, &s->sk_timer); } } =20 diff --git a/net/mptcp/protocol.c b/net/mptcp/protocol.c index d6aef4b13b8a..917df5fb9708 100644 --- a/net/mptcp/protocol.c +++ b/net/mptcp/protocol.c @@ -2562,7 +2562,8 @@ static void mptcp_worker(struct work_struct *work) if (test_and_clear_bit(MPTCP_WORK_RTX, &msk->flags)) __mptcp_retrans(sk); =20 - mptcp_mp_fail_no_response(msk); + if (time_after(jiffies, msk->fail_tout)) + mptcp_mp_fail_no_response(msk); =20 unlock: release_sock(sk); @@ -2589,6 +2590,7 @@ static int __mptcp_init_sock(struct sock *sk) WRITE_ONCE(msk->csum_enabled, mptcp_is_checksum_enabled(sock_net(sk))); WRITE_ONCE(msk->allow_infinite_fallback, true); msk->recovery =3D false; + msk->fail_tout =3D 0; =20 mptcp_pm_data_init(msk); =20 diff --git a/net/mptcp/protocol.h b/net/mptcp/protocol.h index d406b5afbee4..f7b01275af94 100644 --- a/net/mptcp/protocol.h +++ b/net/mptcp/protocol.h @@ -306,6 +306,7 @@ struct mptcp_sock { =20 u32 setsockopt_seq; char ca_name[TCP_CA_NAME_MAX]; + unsigned long fail_tout; }; =20 #define mptcp_data_lock(sk) spin_lock_bh(&(sk)->sk_lock.slock) diff --git a/net/mptcp/subflow.c b/net/mptcp/subflow.c index 8841e8cd9ad8..866d54a0e83c 100644 --- a/net/mptcp/subflow.c +++ b/net/mptcp/subflow.c @@ -974,7 +974,6 @@ static enum mapping_status get_mapping_status(struct so= ck *ssk, { struct mptcp_subflow_context *subflow =3D mptcp_subflow_ctx(ssk); bool csum_reqd =3D READ_ONCE(msk->csum_enabled); - struct sock *sk =3D (struct sock *)msk; struct mptcp_ext *mpext; struct sk_buff *skb; u16 data_len; @@ -1016,9 +1015,6 @@ static enum mapping_status get_mapping_status(struct = sock *ssk, pr_debug("infinite mapping received"); MPTCP_INC_STATS(sock_net(ssk), MPTCP_MIB_INFINITEMAPRX); subflow->map_data_len =3D 0; - if (!sock_flag(ssk, SOCK_DEAD)) - sk_stop_timer(sk, &sk->sk_timer); - return MAPPING_INVALID; } =20 @@ -1238,11 +1234,9 @@ static bool subflow_check_data_avail(struct sock *ss= k) tcp_send_active_reset(ssk, GFP_ATOMIC); while ((skb =3D skb_peek(&ssk->sk_receive_queue))) sk_eat_skb(ssk, skb); - } else if (!sock_flag(ssk, SOCK_DEAD)) { + } else { WRITE_ONCE(subflow->mp_fail_response_expect, true); - sk_reset_timer((struct sock *)msk, - &((struct sock *)msk)->sk_timer, - jiffies + TCP_RTO_MAX); + msk->fail_tout =3D jiffies + TCP_RTO_MAX; } WRITE_ONCE(subflow->data_avail, MPTCP_SUBFLOW_NODATA); return true; --=20 2.35.3 From nobody Thu Sep 18 06:43:00 2025 Delivered-To: wpasupplicant.patchew@gmail.com Received: by 2002:a9f:3042:0:0:0:0:0 with SMTP id i2csp71171uab; Wed, 8 Jun 2022 17:01:29 -0700 (PDT) X-Google-Smtp-Source: ABdhPJykldHAaNm+0yP0zyv9UY47Lt/AnMXMmbM/wBFT6pWPem6HJ9Ie/RwjD1zZ+rMghjFrbB/0 X-Received: by 2002:a05:622a:1389:b0:304:f2f9:8202 with SMTP id o9-20020a05622a138900b00304f2f98202mr12099103qtk.42.1654732889709; Wed, 08 Jun 2022 17:01:29 -0700 (PDT) Return-Path: Received: from sv.mirrors.kernel.org (sv.mirrors.kernel.org. [139.178.88.99]) by mx.google.com with ESMTPS id jv8-20020a05621429e800b0046b5832b2e6si6525751qvb.369.2022.06.08.17.01.29 for (version=TLS1_2 cipher=ECDHE-ECDSA-AES128-GCM-SHA256 bits=128/128); Wed, 08 Jun 2022 17:01:29 -0700 (PDT) Received-SPF: pass (google.com: domain of mptcp+bounces-5601-wpasupplicant.patchew=gmail.com@lists.linux.dev designates 139.178.88.99 as permitted sender) client-ip=139.178.88.99; Authentication-Results: mx.google.com; dkim=pass header.i=@suse.com header.s=mimecast20200619 header.b=T6v6G1Yl; dkim=neutral (body hash did not verify) header.i=@mysuse.onmicrosoft.com header.s=selector1-mysuse-onmicrosoft-com header.b=Wx8xR8s2; arc=fail (body hash mismatch); spf=pass (google.com: domain of mptcp+bounces-5601-wpasupplicant.patchew=gmail.com@lists.linux.dev designates 139.178.88.99 as permitted sender) smtp.mailfrom="mptcp+bounces-5601-wpasupplicant.patchew=gmail.com@lists.linux.dev"; dmarc=pass (p=QUARANTINE sp=QUARANTINE dis=NONE) header.from=suse.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 sv.mirrors.kernel.org (Postfix) with ESMTPS id ACA98280A7B for ; Thu, 9 Jun 2022 00:01:28 +0000 (UTC) Received: from localhost.localdomain (localhost.localdomain [127.0.0.1]) by smtp.subspace.kernel.org (Postfix) with ESMTP id C8DA02F59; Thu, 9 Jun 2022 00:01:27 +0000 (UTC) X-Original-To: mptcp@lists.linux.dev Received: from de-smtp-delivery-102.mimecast.com (de-smtp-delivery-102.mimecast.com [194.104.111.102]) (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 81ADC7B for ; Thu, 9 Jun 2022 00:01:25 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=suse.com; s=mimecast20200619; t=1654732882; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=ZRs4MO5oxYq959azse8AM4UnL6mw5gPTA4ehcZdC4cQ=; b=T6v6G1YlcFKnDE62jpkr3KhX1yh9PjmwduTyDfM4i21cH+AvsIE6+I49Um9T9El9xTSkzj q+WhRExfrpk7iCVnZjt0imLt1ZG/7hVuum6r3Z6w9BwOF0Edr8B8ndkPbRg/vCQFZbKSs8 rd9zLBCqKSZ1L+JS2kuygDSmkYCkz5w= Received: from EUR02-VE1-obe.outbound.protection.outlook.com (mail-ve1eur02lp2052.outbound.protection.outlook.com [104.47.6.52]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id de-mta-20-Sp6tLhm0Pqm4k4h1pYo7xA-2; Thu, 09 Jun 2022 02:01:21 +0200 X-MC-Unique: Sp6tLhm0Pqm4k4h1pYo7xA-2 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=d2TUwo6wu0bGrSB69huRjv2QLDbGhjX85xSkumm5SKsx97tH3dUub/x/s8Q09jQnWv0GWZAEqbwGzKTEp60+MfjqDffJkrh6WxzXoVE855ipE//twUOOlJOlmOmDBCjFfOKLVPxECtARCuoyuymLPFYoHRy7l5ONzDCzHnqbGJl76VEkjXSCuxC1zVZeEtLZuBMIP9NzJevEUV8gFkI6E69+wSSE8wQnB1kCqs0eBTbjQlK/aWizCj1D6d7l1Pj0V4lknm/mvBH6EEJHBPkAbosYaSvY4nuvjIpNDrmS8k0B0r8rgGAFcmgIffnnaWD0DhSPFwg5ZZS0GYujET7qIA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=7Sm1W9UgzEcDyjWlZhOZLYf4YvXlpATOT0QdsSlOeQ4=; b=fgjiesIpVUIb1SJiOoA8VlVbEnmrtbW0u56Kwt55adb5PBP7DuEeUoTEusKuuiAUoMbZjqYm/odGfVjvmxcYfl6wbk1NuNYSE2npYDh5ScmL/bkFZBsdiBqJ4xGzzknpC59tf8Btg8EfChFI3PiiyN+QkMoXFLsNRCs6BirC8d01SApkl7mbZNkmnfBiw49m01zGuUr/b4S9ziYDZs/oQPWXtVVk/f9NV21x5Y+UaLEhevJXm+CIymQmsNjEV5b/sLkOgW0XdoepUjKUhNlxOVZD65SuyItpP+WmWEdidzqroPdwDv1c2a22zCgCOzVTJKStksxQmP6doo5S/sqV9w== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=suse.com; dmarc=pass action=none header.from=suse.com; dkim=pass header.d=suse.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=mysuse.onmicrosoft.com; s=selector1-mysuse-onmicrosoft-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=7Sm1W9UgzEcDyjWlZhOZLYf4YvXlpATOT0QdsSlOeQ4=; b=Wx8xR8s2sA436WM49whMDC9wFmqbXiz8hKCA9hkHs/5pttndO2KRpdZl1jqorwjIiecppVU0mZm0xNBXfQhNqBBaFJbSCaGLkCD0Asq9NPYVyamlCslk7H59fXu6i/XEjhklkV1y2wGOg8B6ISYq02ludQd2cXDsRXrBg/m3FL4of0Tsf4re65OkG6Kp9to5DdbW5M5+TjnQl1cdsRTXYOnmgzp/li9HDV+LXVPVZlneTGgEIzxG4y6+XAHYhLyi4+GWNeHEmE1ZDGBRVk7X6Uzh5SLT5BM9oXtqx3n/NlI+sZLinIXfrFwk4YQKD/vRmwBHGQa9XblzdsMDI+QMeQ== Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=suse.com; Received: from HE1PR0402MB3497.eurprd04.prod.outlook.com (2603:10a6:7:83::14) by AM6PR04MB4263.eurprd04.prod.outlook.com (2603:10a6:209:4f::25) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5332.12; Thu, 9 Jun 2022 00:01:20 +0000 Received: from HE1PR0402MB3497.eurprd04.prod.outlook.com ([fe80::8002:50a5:a57a:d8fe]) by HE1PR0402MB3497.eurprd04.prod.outlook.com ([fe80::8002:50a5:a57a:d8fe%5]) with mapi id 15.20.5332.013; Thu, 9 Jun 2022 00:01:20 +0000 From: Geliang Tang To: mptcp@lists.linux.dev CC: Geliang Tang , Paolo Abeni Subject: [PATCH mptcp-next v4 2/2] mptcp: trace MP_FAIL subflow in mptcp_sock Date: Thu, 9 Jun 2022 08:00:53 +0800 Message-ID: <005b6c1dda2ecb334cc9f6b07053aa59b69b5613.1654732564.git.geliang.tang@suse.com> X-Mailer: git-send-email 2.35.3 In-Reply-To: References: Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: SG2P153CA0015.APCP153.PROD.OUTLOOK.COM (2603:1096::25) To HE1PR0402MB3497.eurprd04.prod.outlook.com (2603:10a6:7:83::14) Precedence: bulk X-Mailing-List: mptcp@lists.linux.dev List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: e766d468-74cb-4db4-cc8c-08da49ab2ec8 X-MS-TrafficTypeDiagnostic: AM6PR04MB4263:EE_ X-Microsoft-Antispam-PRVS: X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: X3Yc0TfncJi7BzLhpEyhWR83QKnIKwPYIaJbUPODhp+FuIxsBxM0uNaRvoclWmgDSU02v8hyL0V9xzkRXAIWC63Pw1QmfJq8Farf0diZ1GmBke4H9r1MbyeGaHnsWhPHbvz9oO7YpbuapxB43mpEvoYsRFAHa5xz/GLH2ATi89Ps9RIDyGf4+XceLhjvPmqGqkL5X+LTW7/KKSYliMNbhx9bqTpSntpVwhIvsitlFsv1uUp6WzI6F9W99XqZ0MJ0hjr05tn6TvWMVKtvNJFnevdz+m2WpsFruAWzRAnbTOTaldJkhz4pXTVVM1Ts2EqmkNZ5XczZ3NQcCuGsi4/7ztheUWZlt1m26PPuOTPur/EOzWSBDnXoiEZUH2uQ2c+lhMH4yCpG1NkDzm0m/1EcN6ZHTwtsoTzUzshIlkB0FlEtkirCcOHld6Qr3yGrTZFswuQ4SuTP3ylV94/L5b9NK0W0XiU5KxycVi+9ADjtEsMM/S9RcASFpUBRDU0+LigaUPSg/jfEaeM+l7OMDd9WEVzKwsqormuX8tYy2HB8RMhcBGOqG2PmBz92ES0SoXE4RMp1/e1ccHyQxBIzabjqCoaggT2irJiurkSQsk4uioRuKgT8GQoFWuuFv5VLphZKXUNOLScGFm6JAnsCI/ZmbtscRgAySBYSpdpmyCUMXIJpa/Q8YSHWMBWuMinNiFk5 X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:HE1PR0402MB3497.eurprd04.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230001)(366004)(26005)(316002)(186003)(8676002)(6512007)(4326008)(6506007)(8936002)(54906003)(86362001)(66946007)(6486002)(6916009)(66476007)(66556008)(83380400001)(508600001)(6666004)(38100700002)(2616005)(5660300002)(2906002)(44832011)(36756003)(13296009);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?ysp8QbIra042s1AGOjPEAavNl6frbjyFftHqcW9Ic+noQuecsbZAw+rPDY2f?= =?us-ascii?Q?kKNMOrx9HkRTXbQj2lGlCj6VY/yIaYaU6KZ07tC2fJn/QlMi9R4UdjtKaWpW?= =?us-ascii?Q?Jne2XHePAosTxjlAAj9XpDeUBy3xGeZJq9EdaLJx8r+OdeEYRkObdkwEFhtu?= =?us-ascii?Q?3YN8gN6S8djhsAGpvV9InP+QDcbnikguPsWaxelHCl8XSwYHhWD9gNYV4KOC?= =?us-ascii?Q?wSI5+sY1+xtkJo2LeDSo3bJ98nZmpj37wZkuDQsZA1XR3H3iGe2pWfQltemS?= =?us-ascii?Q?6GlGhxXZsGn4aqUxV1BwpzaAaHlZ+UJadJEUayQClpvwEf2yYYPRltFr8weq?= =?us-ascii?Q?isPBoHuG4ckV9dDedAJ3OvJPCU3kKrwuDeJ/7xE26dgPp5IgCUXmp2SyIAMd?= =?us-ascii?Q?cALQmF5A89qLRqGLkh8u5kB1nQhlJbepEdUIz2FLkA45NVoMLFFOb8itmH+0?= =?us-ascii?Q?TrU+1zqBwJ/iSWQqNTbxjAbHzKJI7rgPL8WHVFP43gIh7xXXuSCkhf9WCyEr?= =?us-ascii?Q?BPNteL6HFLSxdItiHa98KATEJeNU+hywPWFpc656rit1LVkk5tsylACN66kw?= =?us-ascii?Q?WeeFmTYV4XL0ciIf+gXyHqyDJWCwYMXz3spXncbIYY0hrDYBCsoqaxlyGnm3?= =?us-ascii?Q?ZgaNxJvxB7hjmu0bf/RiRgizYjWQ8KXxVVj5m41oybJCtAM1oyIo4VnvleQL?= =?us-ascii?Q?rUrz5ftk/yPUDTt/bJmYGWA+74IgUmBglHXaYGoE4UpTcKIfcF3ACx1pKPg/?= =?us-ascii?Q?IsoTgDTIG+I5wUkMghIYPYjq73hpZdhmJNGYf6JwqJCLyddUXqzsKTB2aP1d?= =?us-ascii?Q?6brmB3Wj1xL0MmwkIf8Pcd6DMF5V6ir/JGD7UzvHbwtjK35bhZxcWaTqFdK8?= =?us-ascii?Q?IfNlY3woNFbYh46C99kgWagWNGgd07fcWwWwDDATdOHbUgC+eZ7VdbNlcWXA?= =?us-ascii?Q?B1yJpZuezknN1tMtrWREXnN+DCSNjeHk7jrSrP5d4/r4JWMt0YgsfpOgT6tn?= =?us-ascii?Q?PtRdRuQR++eJYYNyM5QI8ESYLjZznrshWaL+XDxKr4bfzmiIZdMXTFDSxhCv?= =?us-ascii?Q?AysGKVbvvgBhhzBdeVXoDC4CwKFbRDyfSf2tLlTpJrDtq6VfqOEg9V1szIAw?= =?us-ascii?Q?xLHJ63Z5AoQvRBy487ZnbqEyJcE6q/P/TL3W+cXMXlvuem0z5b1MLPGonMIu?= =?us-ascii?Q?nwHvXRgfMFcR+dm6OXcVprMw4zI7ohIRuON9oQ+oLzu3Wnwf6vbU3GfkpTbt?= =?us-ascii?Q?sPbf2E62GqE38c2/g8/ZLZgp4G6mb7S8K2/wog4tqEyE5eOlQiuE3CTGa/5k?= =?us-ascii?Q?RKjE8XlikxeTgmw+G2WC/HO9LNmPba9UAuRALFxF/Zc708CrjkfYvuUSMs2S?= =?us-ascii?Q?dEASv+uyRJdWaqwLfFRNMHpt5RrkFJ90/nYR8t0nUjGYg0AIsvUrqRdawWNc?= =?us-ascii?Q?UFM6xvWxDeGepYuzVCS2MzYL05q+hgaCMCgmY9rsBnhV8Dr5OO+bI99BOa+N?= =?us-ascii?Q?IoZJKHBEVdtVrPZ5AZxYxWSmHfCvOIJuqVBKfGPm6m2sLlOe2Vykxqc79vHD?= =?us-ascii?Q?9A8fa08fPJTIb1l/BDdPa0RriRxMaGZUVOzAd6isjsbfCYxytLkFMiJkYCxm?= =?us-ascii?Q?kPTbwneLtMj+MEFmgV1IGlRz2I4VPjxTTRgdZ2cA3WogxDOzhAgjZcLANhM4?= =?us-ascii?Q?V+ONUKWMT0mL4eYM07LkttdRrMtXWZjB5NMPLZsC9gLGYFPUFw/R7mU9thUJ?= =?us-ascii?Q?74R0ChV9ZQi9glEq7Y9lbYk335u6i6U=3D?= X-OriginatorOrg: suse.com X-MS-Exchange-CrossTenant-Network-Message-Id: e766d468-74cb-4db4-cc8c-08da49ab2ec8 X-MS-Exchange-CrossTenant-AuthSource: HE1PR0402MB3497.eurprd04.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 09 Jun 2022 00:01:20.1368 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: f7a17af6-1c5c-4a36-aa8b-f5be247aa4ba X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: 9kN0UxmleoWClBTaeEr8ay7fqhC/NufcDIfooc2m8b1VDKL2oWnYKgLKYEmw0vowhdCJSrLQ2fJSrKiEWOpbIg== X-MS-Exchange-Transport-CrossTenantHeadersStamped: AM6PR04MB4263 Content-Type: text/plain; charset="utf-8" This patch adds fail_ssk struct member in struct mptcp_sock to record the MP_FAIL subsocket. It can replace the mp_fail_response_expect flag in struct mptcp_subflow_context. Drop mp_fail_response_expect_subflow() helper too, just use this fail_ssk in mptcp_mp_fail_no_response() to reset the subflow. Acked-by: Paolo Abeni Signed-off-by: Geliang Tang Reviewed-by: Mat Martineau --- net/mptcp/pm.c | 2 +- net/mptcp/protocol.c | 35 +++++++++-------------------------- net/mptcp/protocol.h | 2 +- net/mptcp/subflow.c | 2 +- 4 files changed, 12 insertions(+), 29 deletions(-) diff --git a/net/mptcp/pm.c b/net/mptcp/pm.c index 45a9e02abf24..2a57d95d5492 100644 --- a/net/mptcp/pm.c +++ b/net/mptcp/pm.c @@ -305,7 +305,7 @@ void mptcp_pm_mp_fail_received(struct sock *sk, u64 fai= l_seq) if (!READ_ONCE(msk->allow_infinite_fallback)) return; =20 - if (!READ_ONCE(subflow->mp_fail_response_expect)) { + if (!msk->fail_ssk) { pr_debug("send MP_FAIL response and infinite map"); =20 subflow->send_mp_fail =3D 1; diff --git a/net/mptcp/protocol.c b/net/mptcp/protocol.c index 917df5fb9708..58427fabb061 100644 --- a/net/mptcp/protocol.c +++ b/net/mptcp/protocol.c @@ -2167,21 +2167,6 @@ static void mptcp_retransmit_timer(struct timer_list= *t) sock_put(sk); } =20 -static struct mptcp_subflow_context * -mp_fail_response_expect_subflow(struct mptcp_sock *msk) -{ - struct mptcp_subflow_context *subflow, *ret =3D NULL; - - mptcp_for_each_subflow(msk, subflow) { - if (READ_ONCE(subflow->mp_fail_response_expect)) { - ret =3D subflow; - break; - } - } - - return ret; -} - static void mptcp_timeout_timer(struct timer_list *t) { struct sock *sk =3D from_timer(sk, t, sk_timer); @@ -2507,19 +2492,16 @@ static void __mptcp_retrans(struct sock *sk) =20 static void mptcp_mp_fail_no_response(struct mptcp_sock *msk) { - struct mptcp_subflow_context *subflow; - struct sock *ssk; + struct sock *ssk =3D msk->fail_ssk; bool slow; =20 - subflow =3D mp_fail_response_expect_subflow(msk); - if (subflow) { - pr_debug("MP_FAIL doesn't respond, reset the subflow"); + pr_debug("MP_FAIL doesn't respond, reset the subflow"); =20 - ssk =3D mptcp_subflow_tcp_sock(subflow); - slow =3D lock_sock_fast(ssk); - mptcp_subflow_reset(ssk); - unlock_sock_fast(ssk, slow); - } + slow =3D lock_sock_fast(ssk); + mptcp_subflow_reset(ssk); + unlock_sock_fast(ssk, slow); + + msk->fail_ssk =3D NULL; } =20 static void mptcp_worker(struct work_struct *work) @@ -2562,7 +2544,7 @@ static void mptcp_worker(struct work_struct *work) if (test_and_clear_bit(MPTCP_WORK_RTX, &msk->flags)) __mptcp_retrans(sk); =20 - if (time_after(jiffies, msk->fail_tout)) + if (msk->fail_ssk && time_after(jiffies, msk->fail_tout)) mptcp_mp_fail_no_response(msk); =20 unlock: @@ -2590,6 +2572,7 @@ static int __mptcp_init_sock(struct sock *sk) WRITE_ONCE(msk->csum_enabled, mptcp_is_checksum_enabled(sock_net(sk))); WRITE_ONCE(msk->allow_infinite_fallback, true); msk->recovery =3D false; + msk->fail_ssk =3D NULL; msk->fail_tout =3D 0; =20 mptcp_pm_data_init(msk); diff --git a/net/mptcp/protocol.h b/net/mptcp/protocol.h index f7b01275af94..bef7dea9f358 100644 --- a/net/mptcp/protocol.h +++ b/net/mptcp/protocol.h @@ -306,6 +306,7 @@ struct mptcp_sock { =20 u32 setsockopt_seq; char ca_name[TCP_CA_NAME_MAX]; + struct sock *fail_ssk; unsigned long fail_tout; }; =20 @@ -469,7 +470,6 @@ struct mptcp_subflow_context { local_id_valid : 1, /* local_id is correctly initialized */ valid_csum_seen : 1; /* at least one csum validated */ enum mptcp_data_avail data_avail; - bool mp_fail_response_expect; bool scheduled; u32 remote_nonce; u64 thmac; diff --git a/net/mptcp/subflow.c b/net/mptcp/subflow.c index 866d54a0e83c..5351d54e514a 100644 --- a/net/mptcp/subflow.c +++ b/net/mptcp/subflow.c @@ -1235,7 +1235,7 @@ static bool subflow_check_data_avail(struct sock *ssk) while ((skb =3D skb_peek(&ssk->sk_receive_queue))) sk_eat_skb(ssk, skb); } else { - WRITE_ONCE(subflow->mp_fail_response_expect, true); + msk->fail_ssk =3D ssk; msk->fail_tout =3D jiffies + TCP_RTO_MAX; } WRITE_ONCE(subflow->data_avail, MPTCP_SUBFLOW_NODATA); --=20 2.35.3