From nobody Thu May 9 00:12:48 2024 Received: from EUR05-DB8-obe.outbound.protection.outlook.com (mail-db8eur05on2062.outbound.protection.outlook.com [40.107.20.62]) (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 E42876AB3 for ; Tue, 6 Dec 2022 13:30:35 +0000 (UTC) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=jTpmhS1nCUOioDkNjbJlGC4SkB/dByv4CR+ftuvgCHiMbW2H4YMu16U8PbpaI5cVxOaniO2ZTVUr/k90KFEshsTi7oTJUETMq4JSIWbOa7AvPxgaAW7D7fiiUh6liIptlzX4ADRpUk8tORWKa3eRwVSwkfVewcYemrdKRXdA8pTfyWI6uJ8yxzpDjw9IRheZ+2ArEK0pDHBoow8jsBwQHW4nhBsLZe0zmx1g8OhQ5pbhS1Jk3hVcW7m81x9FfTxc5uUNzNFkAsUjE1xebVFjQBvs5Bc8vPcn4ImGlIcKQ0hAr9SnNrslp6+Sb2MXYSfaVAxS7krsD3tR2ba4jIKJrw== 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=MI101J64JcCPGGkapYWVpCY9mG7vX/2e1upC7OnlGMU=; b=lSgafti5Om8mipRU9gEpa39H2KDBECA1bk1AqwikecTdvHgIoMgI9FW9TAksQeIiUQaODYQml1uryVKuCenUCDW5dwN2m7PhAw46PRstfU8BfAlONDo+rRiolHnmtnZFYs3hXcJ1mtujPeOJYTF2IWGJQI1IEJVJSgRShzy0VWep/gH+MqGDVGYQIEPdtwG7V4zSmkorMUp4FbKS0gk9aSdGmfKyYSA+faw2BB3Zzp2lvXpfafLZF/xZdCzwSeTbhlL/IjU9LcC0dwB1y0QBCl/J0BO78xmFvmvArc6b0AZ9iDggmmxyzHR205Fi2zDbn1mcxw0NZxEo7VRQDIgcFQ== 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=suse.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=MI101J64JcCPGGkapYWVpCY9mG7vX/2e1upC7OnlGMU=; b=VMZR/N+WkIwbkQzNysDmaYd3ABVkYjA+rn15lL8+15GyVeygQCctV2EsuXPadXTIWoh4gYRKKtCjUngPlKdIqZMAdbn6/sjsE9S9OINVMrE4YRmzaSA+1XkmhUHbS9AxD1pgZbyeqz0cDyks79YPbixiO34AUOwqUUgIxsejJZU+j1TFPjpINoIJtDnF0c54eMVPUvauRkyi+DXQdbJwrKsrW5T16Ipby6Ox9DXt4uB8LQl0KgWkAh+oV7eETSMS0u1Pz/LgcBYaQBO2IZxv5/ZYw9G2LqyW6vdEgBR/oJLrSFIZpel9865V2MNIXdVsabVNmjD5X03JwtNoR7gAgQ== Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=suse.com; Received: from VI1PR0402MB3503.eurprd04.prod.outlook.com (2603:10a6:803:d::26) by DU0PR04MB9228.eurprd04.prod.outlook.com (2603:10a6:10:353::8) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5880.14; Tue, 6 Dec 2022 13:30:33 +0000 Received: from VI1PR0402MB3503.eurprd04.prod.outlook.com ([fe80::b847:ffc7:deed:c700]) by VI1PR0402MB3503.eurprd04.prod.outlook.com ([fe80::b847:ffc7:deed:c700%3]) with mapi id 15.20.5880.014; Tue, 6 Dec 2022 13:30:33 +0000 From: Geliang Tang To: mptcp@lists.linux.dev Cc: Geliang Tang Subject: [PATCH mptcp-next v2 1/2] mptcp: add use_lock for mptcp_retrans Date: Tue, 6 Dec 2022 21:30:25 +0800 Message-Id: X-Mailer: git-send-email 2.35.3 In-Reply-To: References: Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: SG2PR02CA0043.apcprd02.prod.outlook.com (2603:1096:3:18::31) To VI1PR0402MB3503.eurprd04.prod.outlook.com (2603:10a6:803:d::26) 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-TrafficTypeDiagnostic: VI1PR0402MB3503:EE_|DU0PR04MB9228:EE_ X-MS-Office365-Filtering-Correlation-Id: 6451a1e3-e43d-4b8e-982f-08dad78e0d16 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: Q4Yt3QBvR3GqiMD6LAg0XjfCWfG30PRWqXMQCX8aNQu0xDiY3MwZFUmOaC31rJsgSA62g/8pI3SDmacqgbQV3WKH2GIpNvBFqKzHZQCVceHwEE/ZenbOvLEzAk7xtD3mM4wMtkJNsJoYdsQzCyqNaJhmBMFzFIh7aYr8+whZVbwMINLmyHuiU6XBrY9xK2aowKkjf32cU+ywH7OhhwM+U3h9Ef9Bn5llWrEB/1QesGhEeiHlofOSjWBJrE/9Yodu93wW6gdDvVwjb+iTY+vbuBKvqgVfflYcgYOcX8ws80ydZtmm+FqIfWZNf+kWoDUewY2G4jJo8C7kz0mrczFLZNhQdyUV63St7xFfIUBfw3gU/SiNrAtzW6Ttq7wV/Q9LU+tGn90usVyCesnNVHWYtrmFVyfBSkV3+pg2ZdFsGF/T6gRtyHiHQ9Yju0ZJoacjuwOynHm3sLfDb0SnSfr6OqfUnos9yCSau8HK/uBSydBDFPd8ktBmO8Cd6hpAtqLGP/UFpWjyWjnHAFHNZTUVCnFoOyj2nkDTAvISK8c5mTn2PhbLwSex5Y6+t1mwgsdN53QhqH4jZcSCylobsxhO8KEnuvkkMlvOumu5/MxGe3qSph3STdn6SjsYvMaRBGMq8Qra/VjZinfmrNWnbtXtCg== X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:VI1PR0402MB3503.eurprd04.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230022)(136003)(376002)(396003)(346002)(39860400002)(366004)(451199015)(83380400001)(6506007)(2906002)(6916009)(86362001)(186003)(6512007)(26005)(2616005)(41300700001)(44832011)(316002)(5660300002)(36756003)(8936002)(66946007)(66476007)(66556008)(6486002)(478600001)(8676002)(4326008)(107886003)(38100700002)(6666004);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?R7EjDM6KVlo5k7r2XxMVCB7hn95/OJmElAhDqMytSfMjxrxMortrlK1sFmyB?= =?us-ascii?Q?0zW37HNgo380iG6ld4y/0Gc1cWZSr2E7oaZF6P4pX2vsQIlgn2NUUqCdLWMT?= =?us-ascii?Q?4I41qYRMQV7Wa5iaZqlHl4Awz0dJ+5sIz9ukfDDNVnFNgIJJXkxrA8BURUEu?= =?us-ascii?Q?Xl96aq4C3Qn6UfxyH1Bw/W1p6s8yPFqYr2Ia0gnumorCWup1j6edO78zPQWA?= =?us-ascii?Q?5wfetx8/Ce/ilJAdQ7swmIAzDczPypdJmcBBylAfOq5q168hNx/QwEF9MBIW?= =?us-ascii?Q?nWdvoSyZY2fciWoWOosNUJjcK7Ud7yI5n66jtswuE6eLiz1MMiCCmLqgIw5Y?= =?us-ascii?Q?UyMKQj/QS8ai0q3NkzJeIP8cU5O0OgYTReWTalQG1OH4z+HXNrSF+t6BGnQo?= =?us-ascii?Q?/yq75IW7kXCd4NET1wP+jhWuIvn/OUc+hkky4Sy8PdjwkiOhyP3PrdGulsHa?= =?us-ascii?Q?NfB0lNmLs4ga6fslpjgI83GzyjCCmkCYckjI8qWQQAeQqjSdzuwin7yxg7rC?= =?us-ascii?Q?fwVRUmwss3PJrZyYryrdbElsqkQgKYcG3rHSdhm3ZJIQt0APcx5SE7et9N8R?= =?us-ascii?Q?+lNyyzvVOCRR69kxOOEz65Ykcu4bHIWiY4489YfjlS28K0QURYKZ13VfDpmr?= =?us-ascii?Q?af7uXrvqm4zmTgq6kpceMTE5k4kCXlM0urfZAIFite6rNS94zZystHHtSmJ+?= =?us-ascii?Q?q6Rx6O7FlLXCJshKoVFAfkhTruw8IUVGXK/1C/I+dhF5U2/FuX/VANbDEks6?= =?us-ascii?Q?ix9lPY1GX6XAc906HmAN5wMSzPrp3qmy5X7XWchvlGEeIIVm5aqFPBctxYr8?= =?us-ascii?Q?a7KH+adHmB2UbiB4DBo9nMUmLbzXcXkACCUUX8JBleKfzAzl436rxJdom3Pn?= =?us-ascii?Q?2Ch0vFvsCeW/li5xC18bYbo08AhEBMcsuRgDTLUB+MA9nJn2n8obRc5WbSgn?= =?us-ascii?Q?DiuqD5LH20FtrXPQxUkC0ueR221UBApfasfDXiDNJZV2lRLxKHhK0Ah92MgW?= =?us-ascii?Q?0clr5R/LISsff2uWSbmhAPheqmirMz5YSc+7SqYlNgac9ZPr7W+avvjKsEiQ?= =?us-ascii?Q?FfNRqS3omsBIyRx6QWe/8JaknmcbEgeZlz/UZeRmsbn4c43gPCpngx39Acz9?= =?us-ascii?Q?5r5ER+yLYj7s/M1NxbUsKi4v1ac5PCkFpBKuFM+vbC1gdOX+w2XnAXEErICZ?= =?us-ascii?Q?co2OF2CL5m2TYEUxFYuFMp0FFFfZaG8GqC+AqVk/AHJV4C1jQJXSacrFih37?= =?us-ascii?Q?+KTMSWcknnHa+2GzaCuIImp17P1z3IcCPZL4mpIvXrc0wLm5qR7q0DkLIika?= =?us-ascii?Q?+zCRZhxp11+8kyuyv96UEvQcuGTl5sXA88pZH+yG7aD92eyn6DtBbm3kW5AW?= =?us-ascii?Q?KnX2lTYFI5X+pYCbsnttzplbDlymcgGiZYGTVEayK5vkUR2wYCxVNEvKxNb9?= =?us-ascii?Q?SbyPzY6t3LKn3iaCnjyN3QG/WWBrTKYRKeL0Fs9DzVjT4b6l0fXq5Y2cPiji?= =?us-ascii?Q?vEY4AuEyo00DCqEk6s6hOsUUX4mTuaAvqfPpjNd9hQkYveUrgWScAykGS2IM?= =?us-ascii?Q?t0SMqKZfy3f+20SgJ+Q8aEhlRmOoubFKOA1lnu6E5n13K7IXtDruZ4D/6mF4?= =?us-ascii?Q?wA=3D=3D?= X-OriginatorOrg: suse.com X-MS-Exchange-CrossTenant-Network-Message-Id: 6451a1e3-e43d-4b8e-982f-08dad78e0d16 X-MS-Exchange-CrossTenant-AuthSource: VI1PR0402MB3503.eurprd04.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 06 Dec 2022 13:30:33.2508 (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: pOLlcJHI/IESLZoZDpr8f6oNhxo/NChKnc1Dy0bz4Snirpf5p0ut9vYWqDQiSVvVEAp904Xzowou6C3v3S/qEw== X-MS-Exchange-Transport-CrossTenantHeadersStamped: DU0PR04MB9228 Content-Type: text/plain; charset="utf-8" This patch adds a new parameter named 'ues_lock' for __mptcp_retrans() to set whether to use socket locks in this function. Signed-off-by: Geliang Tang --- net/mptcp/protocol.c | 12 +++++++----- 1 file changed, 7 insertions(+), 5 deletions(-) diff --git a/net/mptcp/protocol.c b/net/mptcp/protocol.c index 5505c1439b3e..9f0237b5a4b4 100644 --- a/net/mptcp/protocol.c +++ b/net/mptcp/protocol.c @@ -2523,7 +2523,7 @@ static void mptcp_check_fastclose(struct mptcp_sock *= msk) sk_error_report(sk); } =20 -static void __mptcp_retrans(struct sock *sk) +static void __mptcp_retrans(struct sock *sk, bool use_lock) { struct mptcp_sock *msk =3D mptcp_sk(sk); struct mptcp_subflow_context *subflow; @@ -2566,7 +2566,8 @@ static void __mptcp_retrans(struct sock *sk) =20 ssk =3D mptcp_subflow_tcp_sock(subflow); =20 - lock_sock(ssk); + if (use_lock) + lock_sock(ssk); =20 /* limit retransmission to the bytes already sent on some subflows */ info.sent =3D 0; @@ -2588,7 +2589,8 @@ static void __mptcp_retrans(struct sock *sk) WRITE_ONCE(msk->allow_infinite_fallback, false); } =20 - release_sock(ssk); + if (use_lock) + release_sock(ssk); =20 msk->last_snd =3D ssk; } @@ -2694,7 +2696,7 @@ static void mptcp_worker(struct work_struct *work) __mptcp_close_subflow(msk); =20 if (test_and_clear_bit(MPTCP_WORK_RTX, &msk->flags)) - __mptcp_retrans(sk); + __mptcp_retrans(sk, true); =20 fail_tout =3D msk->first ? READ_ONCE(mptcp_subflow_ctx(msk->first)->fail_= tout) : 0; if (fail_tout && time_after(jiffies, fail_tout)) @@ -3308,7 +3310,7 @@ static void mptcp_release_cb(struct sock *sk) if (flags & BIT(MPTCP_PUSH_PENDING)) __mptcp_push_pending(sk, 0); if (flags & BIT(MPTCP_RETRANSMIT)) - __mptcp_retrans(sk); + __mptcp_retrans(sk, true); =20 cond_resched(); spin_lock_bh(&sk->sk_lock.slock); --=20 2.35.3 From nobody Thu May 9 00:12:48 2024 Received: from EUR05-DB8-obe.outbound.protection.outlook.com (mail-db8eur05on2072.outbound.protection.outlook.com [40.107.20.72]) (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 BBB6A6AB3 for ; Tue, 6 Dec 2022 13:30:41 +0000 (UTC) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=XakI6Jo8/r2hZ8GsEBTvk2a7plcRqoyrIptZY/Yxdgf5WMW7hSlIAPy7Wee9wzSc/wcq8gordS6ksMvovvuCQGARdAOjEY2rnMGmqnucttbCi+FKWLg/9E8Mx+gKGUF3vgqwECyhrYhYA1mui0K/KVBQVSudXRek43B0inm/nEuFkPxgXfiA8MA4b8nHUVByHhEpkQ70pnLdnIYdpAnS0uBcB/K30k1c523EgxAZjPwM7LWs0CvnkS7JHvs2y/DbDei9dyIj/ZVUP9sQBYvPCbYDcRSpueGsEc+kKqECcfRQGEqWOwnI+GInPLezlo0/NtyRpGxVVhtjZODB0ZK31g== 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=bpL03su/xuA8SbFc3r9A9LmLHcjlaRzV0QOe7+YfGIk=; b=bPhmnj4TKOJb2jl0jIfPH6Fv4YkGiNy5emQD9wVFn3yF4XXRIG8kCR8/TRYwCIsf/h7JiikxYchi1WXWR7JouOEp9kFuS7mubEdHY7ZKHCrgbkavFmtDn9r9ftOk37t/OT9eFmsxrz2dXlSld6YY33gx7tV4+nzI8CZe7sO3is941Xyc5/v1ZNTT3ZPXhXgo0scKi4DKGkvY7+fpVU/UAnsszUlfkelCeXdsENwX3NG4RjXYGVWoie/x28dMIDb/5AzCC3T+Q0dRRNnFBpgx9Vd9OhcIM9cFFEnJgc8eH9y347J3b175XTKJh+LdDeEGmF/UsgI/6OYELkAPUhtcMw== 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=suse.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=bpL03su/xuA8SbFc3r9A9LmLHcjlaRzV0QOe7+YfGIk=; b=DSRznCew9WBlYu40htXCEZYmL5cuLtZElGagKhbQxJ+po4g2RTsrG7XqR6mATY3xsmZeBh+XkAYwSTt2HtO0pAxRofs6tJfSF822Z7MyhhbeK4ro3m6OB+qwiHcW46amCNNUwpkZZCXxeiyQ9r4fBTJ//E9OHf7YF5mdLwgmyGoEuPOcXbB7hBqJFg5VPZvCSWrJtuG8Yr/ra56+FQ6dlmvDT0r2Uo/CX6hAQPBCJ3W3TY+zB/R8UV+k3eONs2/Hpg7JCi9QTTWiRn3rbvGK5B77Va1gO8JWKW3N6HJp5VP8+j33CyksIrZ0U+TG2T+6i61KbBTA0T6HuLfSuA7X6Q== Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=suse.com; Received: from VI1PR0402MB3503.eurprd04.prod.outlook.com (2603:10a6:803:d::26) by DU0PR04MB9228.eurprd04.prod.outlook.com (2603:10a6:10:353::8) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5880.14; Tue, 6 Dec 2022 13:30:39 +0000 Received: from VI1PR0402MB3503.eurprd04.prod.outlook.com ([fe80::b847:ffc7:deed:c700]) by VI1PR0402MB3503.eurprd04.prod.outlook.com ([fe80::b847:ffc7:deed:c700%3]) with mapi id 15.20.5880.014; Tue, 6 Dec 2022 13:30:39 +0000 From: Geliang Tang To: mptcp@lists.linux.dev Cc: Geliang Tang Subject: [PATCH mptcp-next v2 2/2] mptcp: retrans for redundant sends Date: Tue, 6 Dec 2022 21:30:26 +0800 Message-Id: <07e93f330aa94789dcb2a5d4953b7e0164748b88.1670333050.git.geliang.tang@suse.com> X-Mailer: git-send-email 2.35.3 In-Reply-To: References: Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: SG2PR02CA0043.apcprd02.prod.outlook.com (2603:1096:3:18::31) To VI1PR0402MB3503.eurprd04.prod.outlook.com (2603:10a6:803:d::26) 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-TrafficTypeDiagnostic: VI1PR0402MB3503:EE_|DU0PR04MB9228:EE_ X-MS-Office365-Filtering-Correlation-Id: a9b8b65c-ed54-435e-288a-08dad78e1060 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: JWjTFLFwmMXg/U8+54mte2lvpWBs4B+rEGPQmuhde05bPoVbzoGzjNigfCZ2vfQIUUDJHv/OMzyE2t9nuFZYWhfh2eTy/h0obIBtS2Qf6+ydh99R331H5dsU+LgxFzIR6LqBncf5Jv59jb1MqKJBK6j6l/M1x7tZKgpZpqNlPXTIv4OrwxoQam90t7SiFrZgWop5NVq2fkDFZDcjTcHqBrRr5WnVjlFT42zYKT1S8dtFk01t3E/PTZaP/RMGb2epqN5EBgGTs93E6o0WqjzPKkBMAcgcW1JupxwzSTYJWY2KkdBEJWkYC7GPLEG0wfe5bM2RhsugPQEDDLl25A02XvQpiAOIRcOtAyTjbPl4PN5v2+GgKN/4t/z1aOT4dbCWDmxLi+YPwysWdWt++RmF6fBBHFir5GsNNcq67IB9kIBfWyKsADjrHgMkkjX4nov3AbWYfbec4mtF5wgqyexYFdH2QDPFlxJ6bSD4Ng17hRmcyKlRE2DFiVTojS1QfSyIsVnd8bxHz5eVLVEeUCaoD6AnC32J7GiTeyFAApfphlmI9uYMk72QlVZCzkNtc+E5HGgqjw4kjZU9I6ObXSZYs/pxSrSipyS0Ztv0oyEIE4RLyuPQSRJi05d87ASK32ZW01GeKY/hhOrrJ3UYtglmNg== X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:VI1PR0402MB3503.eurprd04.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230022)(136003)(376002)(396003)(346002)(39860400002)(366004)(451199015)(83380400001)(6506007)(2906002)(6916009)(86362001)(186003)(6512007)(26005)(2616005)(41300700001)(44832011)(316002)(5660300002)(36756003)(8936002)(66946007)(66476007)(66556008)(6486002)(478600001)(8676002)(4326008)(107886003)(38100700002)(6666004);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?w/jI01CxqD44d58XXua5JCtxlk7hFo3dP9z4jW1UF6OLYrEizKEm3zzQU07Y?= =?us-ascii?Q?9eI9dnSgT6iL0XgX4zfymEGLzgouV/OZOT76MRvVdqkdHLVo8TcX2evUqYRj?= =?us-ascii?Q?cCQoNMrNjvVb7nIMuuQOYSJO2L7QeeU8BdotvqjCr19cqmI+jCS79/0vK/er?= =?us-ascii?Q?4oziqIRH9Q+ocUftNo4TKfW+WjGKzt6V4kXHoZL+pVAcV0eCxtnbkoYN7Z2m?= =?us-ascii?Q?L0ghXYuKvkUn2HIXawLxmMcjowCpnW5+s7jKLf9Sfhs7tm19iZxEgElgrWDG?= =?us-ascii?Q?Mw0n9AbcIc+EtTdc4BuJWw7fQ5SdMmFhQ28/PKoTrncm0b5a8yZs3FLDt8GU?= =?us-ascii?Q?toPftjejaVcrPE2xa44y4bFxoo+sU4R684PxC+6ncIoh/sPFKB39xDHATwdg?= =?us-ascii?Q?sr7cqOvqlo96d1wg6RzNZGV+fVPZjD9DXUGuu9G2WoJLuoKhLMaF9XJHd/oO?= =?us-ascii?Q?QDV4fJvUD7MqHH9wdpnvNd8UqD3YM8JS8T2n0ZmRlwll+kQXqsj29YkfSxr7?= =?us-ascii?Q?HTftyq3jyRQHmwYCi9lUezeBxovvKjtsa1IJhuH+0strmXzZogdpVqPw/TcD?= =?us-ascii?Q?ga/lfWWGmFL6ztCDAzc2xlSgi6Tf4oY8rh3iviZPWLf/ehIBEhPcSoVu8tmc?= =?us-ascii?Q?NuYmP9Qy/RYv9QASe0+SKH16Aoa0RMuoX6z4iV8Fa/7AJA+FnoDcnsywHcKN?= =?us-ascii?Q?M2pP3kcZ5u8Qp4JZxMy1eTnR8lcRvloTurGLCtHJMYiz2Z5slRoH0FaqAItl?= =?us-ascii?Q?vECKIQ3i7mXOqPbTyc4orvWEpXXjeRh/S+o5PbzfVo+3KsdH8YHXB2iqWjrG?= =?us-ascii?Q?khCerB3DXrx7aGBHRXyDAToT9mBa8nkPlJ5fHe6rj8GD54X/yhB9a+McrAey?= =?us-ascii?Q?YBogT2nxi2h71EZXUnbzDxdtHHRymH19BSI8LOO21acHaVuSTP/1ZujvpJn1?= =?us-ascii?Q?Jzo+MgJNqFbr4GZ9iemzeCD+3jH2zjWy5VFbUSUcdbm4NWWMGeAhvxT0olCh?= =?us-ascii?Q?nl/N830e8uZrSVswcPV8Pngvz1WnLjGD4dAGk96weWREBhkO5XLH5Mi/Y3R6?= =?us-ascii?Q?qWt0Gzp7LFBMPi2TM3A6jD7XOsKRi8eSJL0Lqm70z89IZz2yxNySwj9LUNzg?= =?us-ascii?Q?R/KRingE4/ZvP8KcIT9kZU9/zQba1dHdHcFa3HdRTa5kFkiY6OHxFfVMr79W?= =?us-ascii?Q?W5TEOHuwfcuGhkeAhFW6sZ07v/JXltwJ1C+5CKbb/PtbdZS2+5qpaAZZ3yKr?= =?us-ascii?Q?SiA6nfX9ja7n+Q0eCvn7VmNFtITioW9yEYghQqDU1ODp3kSOuDsShNDuG3fL?= =?us-ascii?Q?pViLsIRaroN/mUnmDObVWGoGKUAIdcCGzVzXoR7LVbIMSKILuQNDjZU6CW6F?= =?us-ascii?Q?p/VFDW75OJDsYJpecnJlRhIS0Ylobe61NI+sTtSRMBF53TioAPEiXnOSgcDE?= =?us-ascii?Q?wio2miyXb8nhCb6bP5dgpBA20I+nWiKntYE9ZFwoz0qnnAhg7WszliMocRJb?= =?us-ascii?Q?EVlvEFpKUxcdcP6GVdg0ZX59tRx3ab5mGQeDG0txbxavVdnsIQck1FkHGLM/?= =?us-ascii?Q?wKDBVCIATm6SIInCsH9wutmpsMmxr6hKmVLvxtxfaY2sy4wr8JRr2Rh1o0eD?= =?us-ascii?Q?hA=3D=3D?= X-OriginatorOrg: suse.com X-MS-Exchange-CrossTenant-Network-Message-Id: a9b8b65c-ed54-435e-288a-08dad78e1060 X-MS-Exchange-CrossTenant-AuthSource: VI1PR0402MB3503.eurprd04.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 06 Dec 2022 13:30:38.9692 (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: 0j9lDWN6OhGypeq73ZX8U0XFJpuVj1ta8v/pNBqUxAsCdaiZkzlkpa2RsIC6L4gj49db0EHqJVW+a/RWvNcOIg== X-MS-Exchange-Transport-CrossTenantHeadersStamped: DU0PR04MB9228 Content-Type: text/plain; charset="utf-8" Redundant sends need to work more like the MPTCP retransmit code path. When the scheduler selects multiple subflows, the first subflow to send is a "normal" transmit, and any other subflows would act like a retransmit when accessing the dfrags. Signed-off-by: Geliang Tang --- net/mptcp/protocol.c | 39 ++++++++++++++++++++++++++++++++++----- 1 file changed, 34 insertions(+), 5 deletions(-) diff --git a/net/mptcp/protocol.c b/net/mptcp/protocol.c index 9f0237b5a4b4..a8cb12af1d51 100644 --- a/net/mptcp/protocol.c +++ b/net/mptcp/protocol.c @@ -45,6 +45,7 @@ static struct percpu_counter mptcp_sockets_allocated ____= cacheline_aligned_in_sm =20 static void __mptcp_destroy_sock(struct sock *sk); static void __mptcp_check_send_data_fin(struct sock *sk); +static void __mptcp_retrans(struct sock *sk, bool use_lock); =20 DEFINE_PER_CPU(struct mptcp_delegated_action, mptcp_delegated_actions); static struct net_device mptcp_napi_dev; @@ -998,7 +999,7 @@ static void __mptcp_clean_una(struct sock *sk) =20 if (unlikely(dfrag =3D=3D msk->first_pending)) { /* in recovery mode can see ack after the current snd head */ - if (WARN_ON_ONCE(!msk->recovery)) + if (!msk->recovery) break; =20 WRITE_ONCE(msk->first_pending, mptcp_send_next(sk)); @@ -1013,7 +1014,7 @@ static void __mptcp_clean_una(struct sock *sk) =20 /* prevent wrap around in recovery mode */ if (unlikely(delta > dfrag->already_sent)) { - if (WARN_ON_ONCE(!msk->recovery)) + if (!msk->recovery) goto out; if (WARN_ON_ONCE(delta > dfrag->data_len)) goto out; @@ -1473,7 +1474,8 @@ struct sock *mptcp_subflow_get_send(struct mptcp_sock= *msk) =20 static void mptcp_push_release(struct sock *ssk, struct mptcp_sendmsg_info= *info) { - tcp_push(ssk, 0, info->mss_now, tcp_sk(ssk)->nonagle, info->size_goal); + if (info->mss_now) + tcp_push(ssk, 0, info->mss_now, tcp_sk(ssk)->nonagle, info->size_goal); release_sock(ssk); } =20 @@ -1559,10 +1561,15 @@ void __mptcp_push_pending(struct sock *sk, unsigned= int flags) .flags =3D flags, }; bool do_check_data_fin =3D false; + struct mptcp_data_frag *head; int push_count =3D 1; =20 + head =3D mptcp_send_head(sk); + if (!head) + goto out; + while (mptcp_send_head(sk) && (push_count > 0)) { - int ret =3D 0; + int ret =3D 0, i =3D 0; =20 if (mptcp_sched_get_send(msk)) break; @@ -1571,6 +1578,13 @@ void __mptcp_push_pending(struct sock *sk, unsigned = int flags) =20 mptcp_for_each_subflow(msk, subflow) { if (READ_ONCE(subflow->scheduled)) { + if (i > 0) { + WRITE_ONCE(msk->first_pending, head); + mptcp_push_release(ssk, &info); + __mptcp_retrans(sk, true); + goto out; + } + mptcp_subflow_set_scheduled(subflow, false); =20 prev_ssk =3D ssk; @@ -1599,6 +1613,7 @@ void __mptcp_push_pending(struct sock *sk, unsigned i= nt flags) push_count--; continue; } + i++; do_check_data_fin =3D true; msk->last_snd =3D ssk; } @@ -1609,6 +1624,7 @@ void __mptcp_push_pending(struct sock *sk, unsigned i= nt flags) if (ssk) mptcp_push_release(ssk, &info); =20 +out: /* ensure the rtx timer is running */ if (!mptcp_timer_pending(sk)) mptcp_reset_timer(sk); @@ -1623,14 +1639,19 @@ static void __mptcp_subflow_push_pending(struct soc= k *sk, struct sock *ssk, bool struct mptcp_sendmsg_info info =3D { .data_lock_held =3D true, }; + struct mptcp_data_frag *head; struct sock *xmit_ssk; bool push =3D true; int copied =3D 0; =20 + head =3D mptcp_send_head(sk); + if (!head) + goto out; + info.flags =3D 0; while (mptcp_send_head(sk) && push) { bool delegate =3D false; - int ret =3D 0; + int ret =3D 0, i =3D 0; =20 /* check for a different subflow usage only after * spooling the first chunk of data @@ -1650,6 +1671,12 @@ static void __mptcp_subflow_push_pending(struct sock= *sk, struct sock *ssk, bool =20 mptcp_for_each_subflow(msk, subflow) { if (READ_ONCE(subflow->scheduled)) { + if (i > 0) { + WRITE_ONCE(msk->first_pending, head); + __mptcp_retrans(sk, false); + goto out; + } + mptcp_subflow_set_scheduled(subflow, false); =20 xmit_ssk =3D mptcp_subflow_tcp_sock(subflow); @@ -1660,6 +1687,7 @@ static void __mptcp_subflow_push_pending(struct sock = *sk, struct sock *ssk, bool goto out; mptcp_subflow_delegate(subflow, MPTCP_DELEGATE_SEND); + i++; msk->last_snd =3D ssk; delegate =3D true; push =3D false; @@ -1671,6 +1699,7 @@ static void __mptcp_subflow_push_pending(struct sock = *sk, struct sock *ssk, bool push =3D false; continue; } + i++; copied +=3D ret; msk->last_snd =3D ssk; } --=20 2.35.3