From nobody Thu Sep 18 05:25:08 2025 Received: from EUR05-AM6-obe.outbound.protection.outlook.com (mail-am6eur05on2052.outbound.protection.outlook.com [40.107.22.52]) (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 96DE22579 for ; Thu, 29 Sep 2022 15:02:53 +0000 (UTC) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=Kg3qSA9WXS4acowPZ8unfC14/0h8/kW/NtjEsdJlRsrOKgG/90bEB8Y+0JZxC08GZSF296u7Qu78zjP/Fz3Nvzp2/yQms1158rSugxq+rV0JLUBr8k0h/vvY8R9hhEMwQ/poUMWFKJ4YFdaO+1gUed2lMQs/6S8dUBBRUer9olvsZQRC6/Hnv7ZJLyWp7SjV2J33LyiE0tCLVBILD9ARxp7asj/oBp/0TwprO/6RLQSCWeXP71gGB32Rw74uj3JoJoiK3yJu5JmMpJtODuu2MpuDwOf40oeoD0za8fYAn2mYM95rhwsd14e+UPisK2nPPWl9TTjGVX5BS02ihOmo/g== 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=U2sl7Gfly5hXKlpRgpjaDgPDzb24D8/RBO1bdmjs47g=; b=Kzr/oBpICpZ+sDhC14krWHZzEi8eCu+wCaOTBDBRQSkCOBmjE0Sulyy3roowilZrez11WFDDSK+C/verjle6016T/5kjF/x0V8VtzizaPA04uu7nrpE1cOnipqMqYV27HZqMGcaePS9FpRIBQbNOVDF/AwSHY7igx6dq3owNc/tRn0Qxev7b1xJuB3PT3hF6xTKdGI8Qk2HfDqBmr/LoD66ZDl9gnKSW2akNajsc6meLU6fMTXJadhn4jKUK6Ww4NDz6oPDhoGjzxbrAJTa5GAk0N+3ucugLRoAtejAY3xUhKfX4H5brbWWBL5YBtyFgkFEFoTkWQ+Yg0MQYvKjrbw== 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=U2sl7Gfly5hXKlpRgpjaDgPDzb24D8/RBO1bdmjs47g=; b=VdKPGUQpQUWn8pMX3pNlTUvaxp9ijtbIse3AwL2CdhwIZHcpN16cfEOcKfYF80kya1E7COSYRJfkx9ib2zTD/euVrJIhaCmXJMel6hG13Qna2sNjXXMhMzaihsq5MMb5/U2CbNMapg3XGsLi3GBMTcpwDFyLM0YHmusjjpYp3z2IsqBTFWHvHwck+eH5y8yjrgU9xp7QmL2ROTo+GE9D1nkFOcCLKPyQvkUGmtmUR4dMsSgUAz5r+YhdpC01JQ6/VnaUTYp6scMe9e8tUKabNawlLnLW18uhJB8NK3RdmQgzLY5RAXZiU2Op3CbFPyzNGuru2NXZaYrJGuh6eiunrQ== 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 AS4PR04MB9362.eurprd04.prod.outlook.com (2603:10a6:20b:4e7::9) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5676.19; Thu, 29 Sep 2022 15:02:51 +0000 Received: from HE1PR0402MB3497.eurprd04.prod.outlook.com ([fe80::e936:9fd1:22e7:97d1]) by HE1PR0402MB3497.eurprd04.prod.outlook.com ([fe80::e936:9fd1:22e7:97d1%5]) with mapi id 15.20.5676.020; Thu, 29 Sep 2022 15:02:50 +0000 From: Geliang Tang To: mptcp@lists.linux.dev Cc: Geliang Tang Subject: [PATCH mptcp-next v2 1/4] mptcp: update __mptcp_push_pending Date: Thu, 29 Sep 2022 23:03:15 +0800 Message-Id: <67d506626dfb793b3fc14380f1aff35e67fc6397.1664463491.git.geliang.tang@suse.com> X-Mailer: git-send-email 2.35.3 In-Reply-To: References: Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: SGXP274CA0019.SGPP274.PROD.OUTLOOK.COM (2603:1096:4:b8::31) 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-TrafficTypeDiagnostic: HE1PR0402MB3497:EE_|AS4PR04MB9362:EE_ X-MS-Office365-Filtering-Correlation-Id: af633902-f9e1-4799-7a43-08daa22bad9f X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: BRrswrl1OTdim9g8MDPwgcDNaOGDK0UFiG8Mp0U1kymIQJkgOyGrmejzYeM+1NHbzy9Wj0JY4vQNdseTH80izgy6XcPKGUUA/mfxFofMzeMqCB4yayc9oM7+fTtyLnQ8OrPPHkYCBzpGqVEoFSkWPvzTrOIqqCNOL5NmhSJQGOEtOH7W344UJVrt7m9vcGNliO2bAO7QRp3ZLnbHqqfYlRzzEoxlEsl+VuzwY4Md1RyFF5En2K3Gz3H/svD+kQ9U2d+qd4JTXI8G2adppA3BBvJxaNI/bSzDF22nzZ5PCmUdAHdd+mDIEk3JtAx2T+6+Hp95Eki9ih3IuqYUDG4VTfdynb20vKK5fLkczHN1dimBTiBZtf2Z1cGThqAZlPSCmMOqinGwrxBiUJzjPgxTVd3sC1Q8PVC2UDq3Cnu7aNMJvjz+hz3oQiwNBaBOYIkmG/HVPUINU39Y/3+Ro0WITcpRJvT9kuKimJtzOf/xoM9h0bcU4ccbQiZHzQNlCmbCJPuwgpn5D5dnKQsacOh7LqLe/7+EHiKUf03o/XZAwO5Ock+EIZEA4OpRtRpqvB2ZDdZk6fygVN+YrxoKoVNMRAQ+42KiobVk3BaQHwqD04L9y5DWWxAFWCg7YHGAoQE2t6CdHB/NM85Zndtzi/K8uuxD46rcoXmjHhc+EC96cMSmXuOb4k1NUEytL+zB8rdjP9c0XAELLLsFUYH2s2XGLwPV/aV7RmFIQsXrkI1KgPvpwJD/3lckb4QbKYdC0HAl 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:(13230022)(346002)(396003)(39860400002)(366004)(136003)(376002)(451199015)(4326008)(36756003)(6512007)(86362001)(8676002)(66476007)(26005)(38100700002)(66946007)(6506007)(66556008)(41300700001)(8936002)(478600001)(6486002)(316002)(6666004)(107886003)(6916009)(2616005)(15650500001)(186003)(44832011)(5660300002)(83380400001)(2906002)(13296009);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?zwIyWmmq54XL3lUxD5WlVE3nPp6BN3um/ynIIhev2rqEBv0gtJBeoigBGVb/?= =?us-ascii?Q?9zP328LswEFNHzmq0rtFg+s9QerqihqzfYpjBPwDfcPfXp4iJBxGFYYV3ByN?= =?us-ascii?Q?Xs8zBFt2EAhBqMOpCpU+FtkGpZLQwuR7q4kfXBuefC6xzWs4QV1OhA0daGSE?= =?us-ascii?Q?Xvfg1WvcvhiZmRvtCs72mH+xsyOiJ9MBrqfWo4FdzoOmx4spQrsI1Z0M+z5F?= =?us-ascii?Q?6pwRZEVXYZBv1NAIUSvX2PPqKJJEMvR9CDUR0DqduY47TLQmI211LkpdcGt3?= =?us-ascii?Q?2+KszAoiJjHLfARWxEJv4+I/UehFiARQQpmWS+hDpta+X2no43p9Fop2EkOR?= =?us-ascii?Q?Lh6eogBzvV+4mxiXRKzJcbkDbWmUIZYDQAmNF4+5bePebgvIkVWq2dfuNgDr?= =?us-ascii?Q?DiAq6y4DJHTuBv/0EhvIA8uhlXfDcZUk3Yc+ly4zrCdI9CHojx+WLQ0AuCmZ?= =?us-ascii?Q?cLU9rZIPC/UiITxL8WjcrqsLaatLRTIotnTegOlvSTqtbhxa9at1LrTC94RN?= =?us-ascii?Q?PMDmFmd9xT6gEiwRrueiCFnSb0SrtXxId41ef1dWtrygb47DQr07juxL80e2?= =?us-ascii?Q?SPLUBwaGdyYtUP9+nnrI2vWrTspeugBSxkZDewgv+FApJnN4BFWhvTAs9DUM?= =?us-ascii?Q?t/dL2DnFtp8JZpKc2lkMdm1ciaFrnn6aZAIzWn4oIyT9JlQSR8MQfAJk5X0Z?= =?us-ascii?Q?ys9cSe+cUlUeyxOy0W+LSe9NuMBpqde7dQroshr3hSB8E1I/lVm4+duNrzXd?= =?us-ascii?Q?+bl/HFYMfPT//pcwF3Ma3024YApv0tyanFNYsfXX0Ov3p/1N74apZ+Q4TbqL?= =?us-ascii?Q?ikzL4PZHlF5yfzH0ALSEJffwIqpvgGQsL5T+Va1wLL7geVwqbx0FzDVAZhCd?= =?us-ascii?Q?pGreoEOQFDRobHAsBGbJXyHE96XfIbEN4fblkEN9BWpPz65gqi9yTjADcpOG?= =?us-ascii?Q?DQ7C0crg7knUZUKqEJI0Cj/Z82D1hZChP1tCZca9t+FOi7IYLKeifhAiOdKP?= =?us-ascii?Q?zni3e+xhtzo7W3lcbhbQsL6mtMm0xSQMiSHwKwVViQHLluRAu7j1OI7ncfTO?= =?us-ascii?Q?JdvNvLOosU9JzTGCa3dxAgN1JkKZCDQyp4DM60Pb/O5sZNHcOZE+SY/DS+8j?= =?us-ascii?Q?HFsVl1BTbQAgQweQ+IFr7nS4owk4aIqRN1dlNZcu7k3XAnewSFLxBUMeRq47?= =?us-ascii?Q?bxBBRqauDID9wJjbDTBUC43Beo5Rg4s4xlMFMvShQOdZG2NYec1z9okoYJx3?= =?us-ascii?Q?QeCJwLChTge/uj2uxrHzDZgKtGoyflfU5KYjnKYbNJaC8/V4zAyi4t2oYFwh?= =?us-ascii?Q?boJBtRDQFPWHskQjJxmgYbVORljmK7Bh1waPhzXbJNvCauRo9f8Q2T5llmnp?= =?us-ascii?Q?bwPKPzn3dQwGqPbH6Zo0JlUePI27xatc1iRrJa6tcYQfSqKPMid/gV7TdyQp?= =?us-ascii?Q?Gi199bXf1Usu/B6JwvP9gY8fVTCBbo41+iGFvalfpvh+6fFf8UP4kUcnYzgQ?= =?us-ascii?Q?sC4WaBYPGRUwdvDm+pg5EVPlrk0feB7Mo5/MlIdsz8tHn1lgmV0VHApkHEiB?= =?us-ascii?Q?IP40ce4CQZ4a7JQTjJtowEfmCiUiEe4XQ3/0Yi2Q?= X-OriginatorOrg: suse.com X-MS-Exchange-CrossTenant-Network-Message-Id: af633902-f9e1-4799-7a43-08daa22bad9f X-MS-Exchange-CrossTenant-AuthSource: HE1PR0402MB3497.eurprd04.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 29 Sep 2022 15:02:50.9205 (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: 46nBDy8/tp8pc2nA7neBdHOUWybdvoAK8jcHhClhO4bjr8uxxfkj9JmJ2UE30RIR4/bfkbs/J4RYGdLLaLbktA== X-MS-Exchange-Transport-CrossTenantHeadersStamped: AS4PR04MB9362 Content-Type: text/plain; charset="utf-8" To support redundant package schedulers more easily, this patch moves the packet scheduler out of the dfrags loop in __mptcp_push_pending(), invoke mptcp_sched_get_send() only once. And update the socket locks correspondingly. Signed-off-by: Geliang Tang --- net/mptcp/protocol.c | 50 ++++++++++++++++++-------------------------- 1 file changed, 20 insertions(+), 30 deletions(-) diff --git a/net/mptcp/protocol.c b/net/mptcp/protocol.c index 7ca21915b3d1..37a252a3f05b 100644 --- a/net/mptcp/protocol.c +++ b/net/mptcp/protocol.c @@ -1417,14 +1417,6 @@ struct sock *mptcp_subflow_get_send(struct mptcp_soc= k *msk) u64 linger_time; long tout =3D 0; =20 - /* re-use last subflow, if the burst allow that */ - if (msk->last_snd && msk->snd_burst > 0 && - sk_stream_memory_free(msk->last_snd) && - mptcp_subflow_active(mptcp_subflow_ctx(msk->last_snd))) { - mptcp_set_timeout(sk); - return msk->last_snd; - } - /* pick the subflow with the lower wmem/wspace ratio */ for (i =3D 0; i < SSK_MODE_MAX; ++i) { send_info[i].ssk =3D NULL; @@ -1530,15 +1522,21 @@ void mptcp_check_and_set_pending(struct sock *sk) =20 void __mptcp_push_pending(struct sock *sk, unsigned int flags) { - struct sock *prev_ssk =3D NULL, *ssk =3D NULL; struct mptcp_sock *msk =3D mptcp_sk(sk); struct mptcp_sendmsg_info info =3D { .flags =3D flags, }; bool do_check_data_fin =3D false; struct mptcp_data_frag *dfrag; + struct sock *ssk; int len; =20 + ssk =3D mptcp_sched_get_send(msk); + if (!ssk) + goto out; + + lock_sock(ssk); + while ((dfrag =3D mptcp_send_head(sk))) { info.sent =3D dfrag->already_sent; info.limit =3D dfrag->data_len; @@ -1546,24 +1544,6 @@ void __mptcp_push_pending(struct sock *sk, unsigned = int flags) while (len > 0) { int ret =3D 0; =20 - prev_ssk =3D ssk; - ssk =3D mptcp_sched_get_send(msk); - - /* First check. If the ssk has changed since - * the last round, release prev_ssk - */ - if (ssk !=3D prev_ssk && prev_ssk) - mptcp_push_release(prev_ssk, &info); - if (!ssk) - goto out; - - /* Need to lock the new subflow only if different - * from the previous one, otherwise we are still - * helding the relevant lock - */ - if (ssk !=3D prev_ssk) - lock_sock(ssk); - ret =3D mptcp_sendmsg_frag(sk, ssk, dfrag, &info); if (ret <=3D 0) { if (ret =3D=3D -EAGAIN) @@ -1579,11 +1559,21 @@ void __mptcp_push_pending(struct sock *sk, unsigned= int flags) mptcp_update_post_push(msk, dfrag, ret); } WRITE_ONCE(msk->first_pending, mptcp_send_next(sk)); + + if (msk->snd_burst > 0 && + sk_stream_memory_free(ssk) && + mptcp_subflow_active(mptcp_subflow_ctx(ssk))) { + mptcp_set_timeout(sk); + } else { + break; + } } =20 - /* at this point we held the socket lock for the last subflow we used */ - if (ssk) - mptcp_push_release(ssk, &info); + if (do_check_data_fin) { + tcp_push(ssk, 0, info.mss_now, tcp_sk(ssk)->nonagle, + info.size_goal); + } + release_sock(ssk); =20 out: /* ensure the rtx timer is running */ --=20 2.35.3 From nobody Thu Sep 18 05:25:08 2025 Received: from EUR05-AM6-obe.outbound.protection.outlook.com (mail-am6eur05on2050.outbound.protection.outlook.com [40.107.22.50]) (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 64A952579 for ; Thu, 29 Sep 2022 15:03:02 +0000 (UTC) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=hIW7CI5rh43os/N9HrU6JVYVH1a1Uwz+GKW7mPEbQYlEEPpEyMkFkCfGnnBqma4kVtsirQYF7lBzjL2AKj+dUK8yM/AVeyzYRw+9IxqOWHkOAl+7QXBxca7e+FOuSg35miGi9k5KTv57coxQcR0mTe0zEowDkHly/4eI+sVWR7JWKSfGP5Gwh79c2xmMzKVDFn4UGVm55fWRjPEP0I3ifhZR66SanDQsRaNIAzvzA3QSQU18KL7BzWG3HwP7RkRtwwSyMGwAv2lKDtB5bNzxsTbXNKhJLk8EzZS5mSruIL74Avj9KZ3Uo/DXTF2Ei7fqc2K/sqqs3nguaNtO/EaZLw== 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=kaL4xNoAHgJQtdwy27qiVFaGPslMFSrbbubFjIcXw2Y=; b=CZvuV5lKbr5P9+EEouBIlJx3F5YYtlqfj9nVy7Hd29jNTsNTL4YBF9oHaX1sbWpIVuzYP/xgMpnyPRGXAWE/X23xn6i7ErOK95wu6KRBnLeluXuyz33OKGZPxvybWc3fwLsSKZALXKTi/R4/KXyLfsjw31a857tV+UOVTB8NuyVRX846JZC7vsxUHxEBT9AAZc8Dc7F64ylJGKO4ZRYvvGSSKJA+r2Am8xleZ7rteO8o4D+k4QjlOJTb+n0UQXMS99XOGCoXR00mksMrnsv6r7eAlsbC+F6GEIJVL1bS1E2o6hhoIfYcpkdAkzOx9X54mUbYfsTB4RxOzHNVsvWzuw== 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=kaL4xNoAHgJQtdwy27qiVFaGPslMFSrbbubFjIcXw2Y=; b=osWeMTINTv5hxoik/PpLs5wiKqEijFrJT7SidAd+h2w8B1lNVnHvDksErMsNQfKb354KGB4+YDCy8MJuflXiK0zfE0RtiXWV/YUe3Fhz6vNbBnM2Kx30KBxvqqSkUgotT+1VTXjIwMErBmognPIP682dEs9ZAFXakmbrlFXanpPLWjqB6KIBUIr8/knPY+86WABg62FZaNm5+yo7xEmGpNopL+FUKR7gBglFJFLJTSz10N/le6BaFxxucLacR2Xkxhabm7HL2hRAC9BtJsNcfGCNCF46JLX942l0+Y2UIEb0K8LNb79YsfMJCtlX0/TP9sX4Xw2PG31+sxeu7iV4qA== 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 AS4PR04MB9362.eurprd04.prod.outlook.com (2603:10a6:20b:4e7::9) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5676.19; Thu, 29 Sep 2022 15:02:59 +0000 Received: from HE1PR0402MB3497.eurprd04.prod.outlook.com ([fe80::e936:9fd1:22e7:97d1]) by HE1PR0402MB3497.eurprd04.prod.outlook.com ([fe80::e936:9fd1:22e7:97d1%5]) with mapi id 15.20.5676.020; Thu, 29 Sep 2022 15:02:59 +0000 From: Geliang Tang To: mptcp@lists.linux.dev Cc: Geliang Tang Subject: [PATCH mptcp-next v2 2/4] mptcp: add do_push_pending helper Date: Thu, 29 Sep 2022 23:03:16 +0800 Message-Id: <3c7f5eb863b0b3b065fe28dfa116e7e1955b40d1.1664463491.git.geliang.tang@suse.com> X-Mailer: git-send-email 2.35.3 In-Reply-To: References: Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: SGXP274CA0006.SGPP274.PROD.OUTLOOK.COM (2603:1096:4:b8::18) 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-TrafficTypeDiagnostic: HE1PR0402MB3497:EE_|AS4PR04MB9362:EE_ X-MS-Office365-Filtering-Correlation-Id: 427e0f39-c429-440d-e5dd-08daa22bb2b9 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: WL5qSXdbS/NaUk45f8y5O/6AXYnRx8Y/9fJ1cOpja/QYnBI0SekFD8jdbCjObvuqAw8mZbUYxZgzaP4lXX/vE2IXlrDoBTLvdYvMHDwJ3HhWWWHwDl3zo75/Wefknqx4WGrax7qEifGoG2UVptBu5JtJrHmVnPXLOo/43uc9OqnDpORfdmQki1GHyWQzs/myAIlTNm7iUGhdLWwAy7ND3UBSMZjk9Xs2/JrCAUOCzkkNvncPW4v9i1JQO7SQhBDAEeW3gnEXasf99FcBCyyVeqefM6dMGkzUNI7gtraA/TSrqQLapSKheZh3UuikyLiEASHiPYIdscHTO4r43O5qaIwQ4TskvpzDi9uKka8SwoxdkECa17MrX6bqiHLeE+iB8Mhgq99bBeYMzbCqB6x2phCn1F8r3Nxobm3Uv2VPFoE5MyBXQJkeI/CuGA89MKYl7iVkamGGyFIgtUf/Bk7XPr9oaziK+FJa0/p3ismFknVekgbzBAgLM61e3ElhwaiOEzpd+gVvrMUGL5mZIGlHuYSTgHbxC6/HpwE0YMesEitokDzWLxsSxIiM/KQbR14y1W+sqUe+NToJM0q7/hHblYaE3TQfrrQE8sbqLbAtQ84AoFqYGxLXVSwZfUTuXoDco5krZRN6Mpy4ZI9nvm/3GUPWh2lf8O2X65tOhMAb1x3yUv7XMHKK46gIoz/c3WR4QubIZ5CvZopPVXegN/eZbP7narK3fh660l9FK5+EwQGm38NC4oI/IvYfphDiTGAP 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:(13230022)(346002)(396003)(39860400002)(366004)(136003)(376002)(451199015)(4326008)(36756003)(6512007)(86362001)(8676002)(66476007)(26005)(38100700002)(66946007)(6506007)(66556008)(41300700001)(8936002)(478600001)(6486002)(316002)(6666004)(107886003)(6916009)(2616005)(186003)(44832011)(5660300002)(83380400001)(2906002)(13296009);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?wfwjQ8WcUCEMAD1XI9PNEDTnlHlTEyjtW5IFmHw/bA3nsh30NaTdDm+zhEij?= =?us-ascii?Q?pc/vXa+NiSe08U1CV6H4QXY2gOqAZ3Tr173ATjqfBrnYqcE6byVaKaYPUL8g?= =?us-ascii?Q?IOcNb+hxF/Ls6LLdmsRY+ZaCnKyjGunntFrb+hcMT5is6nH//19imKyWVeYd?= =?us-ascii?Q?rc8VcKJOd7uW9BE0a6PJ/BsYf3ha65S+tXIssYEJX1kyGTVUks5zPHC6S4nt?= =?us-ascii?Q?ln25tjBPjXNbGX+3MWRBma5/vW2QWbYBvTsFnQY6R0sxMUv2RBECDsRd7DT8?= =?us-ascii?Q?am0X87NWyLipWfugknOpLBonW14n6A8RNLgOf/1EHe8iasU83rXu+aJ9z0z7?= =?us-ascii?Q?q7+cl5Pvkh2K+cncVB1GHg5BpwJ9kB3VAS7sxyy332yWRpfYkbGPdQtjC7Wv?= =?us-ascii?Q?aLSUYYO3yd6bUZsVJUCaC3Xg97Fi05Fc5ESmqbgyBYpmnwX14bzHVzfhlQMH?= =?us-ascii?Q?FoxkNyG3Da7xEky77MfnbO7NmLLxc5N/ZDG1LTPPtc5/r8bz//2ODqGXGWsu?= =?us-ascii?Q?aLNnEbkdIs79Hxl6ORoEcMN2aVqYQ+lk7K/PgIQ/BcsieQT0EG8nLZBPa/Py?= =?us-ascii?Q?0lovfmP4sDzo4psjYXdMUHwPGGZAMDx9nyTqeipDNX/sDUmfsHGuLSFXOKCK?= =?us-ascii?Q?xpTe27o5Nzb/U4+vQrMYjtKtVbQJTnAmpVr4KWM75+UsUYK/B5TAFMGRhGp1?= =?us-ascii?Q?QxoaIUIS4Ycem2a3l3Fne3EW7Jp9FfqDGETbet4bs9Z+xGjlEg3GDAUmUT9N?= =?us-ascii?Q?JB1eDHsSMh26I/ZAiJgrlwxHGH5+yjO/kev30AWS/Mg/6ENuaTzFQwRqvuzw?= =?us-ascii?Q?S8fxxaVWDetYPhCScYvRbp/k+rc+4AyKu7it9ln++rqExgj/LG3z+YuCVQFn?= =?us-ascii?Q?tA+T+6WYybBdvY93GHx483Vn4OKYJ7RF+ydUodg2wgRunaehq+gR+qQtCSma?= =?us-ascii?Q?vLRevg2IspyGmvp94e9lIWJHN0y+PqjpfjNr9iMkNvmFgukZddVVg5YNgR16?= =?us-ascii?Q?P68PRf43o4KonVXONzGRDNOM1vbloRJ+PCzaaYjWkGgAVrz8dMporw6roSgu?= =?us-ascii?Q?K76JDtY2STQK4i0vwTKJ6m4PIYHWUDwpWToSa0c7XB9BWpoMnCjDzCCzNA8W?= =?us-ascii?Q?5pssvsCVLJSzA/pQmEc+cfWW0GP8BgHXiGeRVLvBlA5Hvqi24775wxVKwagg?= =?us-ascii?Q?tPyErqS2F0pF4qyKroO86oPOMhIuUjjBMvn8Cli+SQpiU78UCUaVySh4Buyx?= =?us-ascii?Q?KZlH9Dgj6+yYX9dukSCItKNudoAu0H2nO49SMjHdfPOjIgxlskFBPKK2gwpU?= =?us-ascii?Q?V1EtCvUhhfNog0k4E5STrM3PNdgXNlt/FQFj4aT5pSJAywgq4zk+JmptJ83Z?= =?us-ascii?Q?ippIi2q8N2VZd7mC3BrhBVyPbzmjJ/d64H7KEUspa8P0H9KMolraQsQlKgfN?= =?us-ascii?Q?1XM69wqD4TVbq7I73LeqOpfRQWr5kmlMzwEbFVNkheQZRga/ENHGvnmqQsf1?= =?us-ascii?Q?QFX1JeBwt6Rsx4w7/A+925CxwExrJYcrSvQDhlWNJnI2WrslqjoF0O0IkoXn?= =?us-ascii?Q?GiYgxX++gKPqwDeK+LSUkmXnfQgfPj61RZ02T4XK?= X-OriginatorOrg: suse.com X-MS-Exchange-CrossTenant-Network-Message-Id: 427e0f39-c429-440d-e5dd-08daa22bb2b9 X-MS-Exchange-CrossTenant-AuthSource: HE1PR0402MB3497.eurprd04.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 29 Sep 2022 15:02:59.4979 (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: 3Z0JjXdJ+wJ98yQowdU6zzkWL64rjL9Qi1W4PHWc9/6/eOLZnzqrHc3Kygl0kXFPzHk1Sa+r3b7Vk0bEaXlKBQ== X-MS-Exchange-Transport-CrossTenantHeadersStamped: AS4PR04MB9362 Content-Type: text/plain; charset="utf-8" This patch moves the duplicate code from __mptcp_push_pending() and __mptcp_subflow_push_pending() into a new helper function, named __do_push_pending(). And simplify __mptcp_push_pending() by invoking this helper. Signed-off-by: Geliang Tang --- net/mptcp/protocol.c | 62 ++++++++++++++++++++++++-------------------- 1 file changed, 34 insertions(+), 28 deletions(-) diff --git a/net/mptcp/protocol.c b/net/mptcp/protocol.c index 37a252a3f05b..fe92a301b8f7 100644 --- a/net/mptcp/protocol.c +++ b/net/mptcp/protocol.c @@ -1483,12 +1483,6 @@ struct sock *mptcp_subflow_get_send(struct mptcp_soc= k *msk) return ssk; } =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); - release_sock(ssk); -} - static void mptcp_update_post_push(struct mptcp_sock *msk, struct mptcp_data_frag *dfrag, u32 sent) @@ -1520,40 +1514,29 @@ void mptcp_check_and_set_pending(struct sock *sk) mptcp_sk(sk)->push_pending |=3D BIT(MPTCP_PUSH_PENDING); } =20 -void __mptcp_push_pending(struct sock *sk, unsigned int flags) +static int __do_push_pending(struct sock *sk, struct sock *ssk, + struct mptcp_sendmsg_info *info) { struct mptcp_sock *msk =3D mptcp_sk(sk); - struct mptcp_sendmsg_info info =3D { - .flags =3D flags, - }; - bool do_check_data_fin =3D false; struct mptcp_data_frag *dfrag; - struct sock *ssk; - int len; - - ssk =3D mptcp_sched_get_send(msk); - if (!ssk) - goto out; - - lock_sock(ssk); + int len, copied =3D 0; =20 while ((dfrag =3D mptcp_send_head(sk))) { - info.sent =3D dfrag->already_sent; - info.limit =3D dfrag->data_len; + info->sent =3D dfrag->already_sent; + info->limit =3D dfrag->data_len; len =3D dfrag->data_len - dfrag->already_sent; while (len > 0) { int ret =3D 0; =20 - ret =3D mptcp_sendmsg_frag(sk, ssk, dfrag, &info); + ret =3D mptcp_sendmsg_frag(sk, ssk, dfrag, info); if (ret <=3D 0) { if (ret =3D=3D -EAGAIN) continue; - mptcp_push_release(ssk, &info); goto out; } =20 - do_check_data_fin =3D true; - info.sent +=3D ret; + info->sent +=3D ret; + copied +=3D ret; len -=3D ret; =20 mptcp_update_post_push(msk, dfrag, ret); @@ -1569,10 +1552,33 @@ void __mptcp_push_pending(struct sock *sk, unsigned= int flags) } } =20 - if (do_check_data_fin) { - tcp_push(ssk, 0, info.mss_now, tcp_sk(ssk)->nonagle, - info.size_goal); +out: + if (copied) { + tcp_push(ssk, 0, info->mss_now, tcp_sk(ssk)->nonagle, + info->size_goal); } + + return copied; +} + +void __mptcp_push_pending(struct sock *sk, unsigned int flags) +{ + struct mptcp_sock *msk =3D mptcp_sk(sk); + struct mptcp_sendmsg_info info =3D { + .flags =3D flags, + }; + bool do_check_data_fin =3D false; + struct sock *ssk; + + ssk =3D mptcp_sched_get_send(msk); + if (!ssk) + goto out; + + if (!mptcp_send_head(sk)) + goto out; + + lock_sock(ssk); + do_check_data_fin =3D __do_push_pending(sk, ssk, &info); release_sock(ssk); =20 out: --=20 2.35.3 From nobody Thu Sep 18 05:25:08 2025 Received: from EUR05-AM6-obe.outbound.protection.outlook.com (mail-am6eur05on2082.outbound.protection.outlook.com [40.107.22.82]) (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 D732B2579 for ; Thu, 29 Sep 2022 15:03:09 +0000 (UTC) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=kNjFcPPxOmKRNiEz4HWZXQqLaT+dj1m/oAQGSHxSOjH5muvaH0i5Uv9xRm4EsZDVEWMGl5RMgnzLYtQ2Iy72MIvcqE7ZcULtYQpuFTeyc6kbPbySew/P1lLRbBiG3YfpN89AJ8A/Z0oES/C5MrUY0mRyCuUzYNZ/Q7eFK4EQ+ddQ9iRKDN19x+vCxk10/MIY2+EsqaLyf3S6sKWyFVDDNOc+4H6g3vZsrvhBjilSBP0TXOCeWyi9YH1QR8Q7d9nZn3pz3bNpkEKNWM3tq9nSD7vl3v4RryThcc1qNhL9rm8iFy4k5erFckbD5fc1ZZSg5DzkBtX4huVhi6HE5Xi+RA== 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=aYDzJWlQOWdXEzbgxl4KxDGu932zQyqUKELPdaWNjj0=; b=CxozUBs/3eB5F2xWmUAc/OJv5VPzyxR+FAlx+kD/yV6S19KSA296kERQdH1MI2hCPBGfi8Ddo66t5i/vypy38YmTM+WWnJt/CDhatwhFT1HRAMMACNQN6EHGNGD0ruRhDVhm08ri5PwNCiuzqLkIiM1h8GHjPYPOdUzgNuLaXtHgi476YFd5tCTYXLJSNnZKCTdMdAjYpCoqZvV5uoMBYYlgWtM9EoPaUQKofzqjSLLdZ+7yGdHPWBfziF5rvvp/O0kZUY4OTKBFbO5YcOj3CCMso74bC65G4g4yTrTcIdpaaG+2jm8vWgSlU6ASe4qIS4FlEoBx6XJMgZ+2PgrWbA== 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=aYDzJWlQOWdXEzbgxl4KxDGu932zQyqUKELPdaWNjj0=; b=UvUZHa0gAUh19SV5WQk2ELPg3GkDiIQ0dMnYz7gZDwb/3p8JYybzsGCTNFh3N95InsY2kw2VPi8nXf89SwHMO7t3y3oRqf7ilwed0TIVPe+8yrOF6x3diuEhtp6hRGsk6yw46DyGK5Z/ZaTRjU8J2USeaVRpwn9QjLnU5U/ju3kRAxPVnSTB7uoy090/mpr0kt3V9IINo6Gf930RT6r6mJVdeE4bB9nnbq7K3fog/QQiLBgNbXKnxivV/vBoJs6gu7ZB9mqUQRHRTKN9gljMro1n6gzEZhvGS/Ar1ZLLPQBaiBoYXxo5d10maFUS/IGyAScKu3mNwijilTB1dbDbzA== 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 PA4PR04MB7822.eurprd04.prod.outlook.com (2603:10a6:102:b8::19) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5676.20; Thu, 29 Sep 2022 15:03:06 +0000 Received: from HE1PR0402MB3497.eurprd04.prod.outlook.com ([fe80::e936:9fd1:22e7:97d1]) by HE1PR0402MB3497.eurprd04.prod.outlook.com ([fe80::e936:9fd1:22e7:97d1%5]) with mapi id 15.20.5676.020; Thu, 29 Sep 2022 15:03:06 +0000 From: Geliang Tang To: mptcp@lists.linux.dev Cc: Geliang Tang Subject: [PATCH mptcp-next v2 3/4] mptcp: update __mptcp_subflow_push_pending Date: Thu, 29 Sep 2022 23:03:17 +0800 Message-Id: <593b52e17c75a2d605995f4b2cb7424d6f4db995.1664463491.git.geliang.tang@suse.com> X-Mailer: git-send-email 2.35.3 In-Reply-To: References: Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: SGXP274CA0011.SGPP274.PROD.OUTLOOK.COM (2603:1096:4:b8::23) 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-TrafficTypeDiagnostic: HE1PR0402MB3497:EE_|PA4PR04MB7822:EE_ X-MS-Office365-Filtering-Correlation-Id: 661cb854-e86e-45dc-4bf1-08daa22bb707 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: 6wDG38jeo8k+GmIXcnbv+4H9NfgEA0yzcsD3RMrX5cYDTYKjXUgcPpdf/Eo6ia7YEkp9QoD4H74XDPgo+JiMRgcVz5VdCGD/sF84zZkMfWW43vbnP+f8PncFQaWwGnn5LZBgf4dn5JbhRkru7nFpbmPkCrFW7H79yJyR1mwJKF9cNvj7A9Ez01dutnXfZrPmhnPCexii+djIY4IG3jVSQ9ifGjVSFbro8ROvRy38p7y8OLADdAR1EiRvNQTTexF86rzVnO833I/Zc1Ic3uT50Qv7EvVWkFq8i/HKfNck5hiTlEUIt3V+A7JQKcH5pe8ExQ/liTDOWcIbLdKOgX7A6nlyDQ1BiNrUVJKp2ze3s6G+WgY8cYKKfScK0GSHUPJ4JfViEdu6cGzSsX5VrdD6lAl28TLsAG+KVhHeYqbU/SEIDpxEoTQ+/oGV9MJ/9pR5FlW6JPxTS+P25k7NjKXmcTmXrqoSiY7Ss361bqWJ+o+YRnH3Xad+xVr31Oo9gOtYdQOcADl6xeAMbiNiJKIMyxRLO5Ae5LVrQSZ3N4SFjpgbgYpqEbXvpuFF/cuXFmKRZTJgyQA8IYM4n1vMoW0FZAr1mFzmdJ9UACZFPRZJ5/+D7lREoK23ZQMBKZTgPCwYok012mwv4zCeSb5Kh7LRyD9dFdIB+TwioqurQXKtBLFZ807llbfjYDPNQ6v5zbr5oywabKo+GpFDY5hrzFpnU59dEaxFXeBJ33ChECh+eir29FLJAFZ/akREZs2yvKLX 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:(13230022)(366004)(376002)(136003)(396003)(39860400002)(346002)(451199015)(83380400001)(186003)(2616005)(86362001)(38100700002)(8936002)(66476007)(66556008)(66946007)(5660300002)(4326008)(41300700001)(6486002)(2906002)(44832011)(107886003)(6666004)(478600001)(6506007)(26005)(6512007)(316002)(6916009)(8676002)(36756003)(13296009);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?zbx8oHPRY4aCIohLYdTf10wyRfHd3d7rjhw4edPAP/1PrVz1KDkFUE6HhFTq?= =?us-ascii?Q?ZraaXBlboOQWW/QizSaii4eFcaAAYTkIqjQJ45Hyl7jTpBZvASM5mRH606tZ?= =?us-ascii?Q?fTZlvbljh3FWV8l01wbCWKpg5k5i3bJiPUZAch4XS6+yIOo2lM5DG8SFa3TN?= =?us-ascii?Q?lELLAZX4b3osBZbAZ89KhUn4l68njRm3JhQ6kDLLmqZUdSR9cQoq1XwrFlpB?= =?us-ascii?Q?oUGUvPSXdsEi7/M1oQFw9mEfcX2cK8t0OmiRroGdPgnVuOb4s2Lu3RssFIqo?= =?us-ascii?Q?KYFGyHUv1jYTMa/H4CZdgb7nQeAPYXSBOi5PBA8kSwb/SCXR22mGvmBicgwl?= =?us-ascii?Q?DHxbrRRCpgSnOgG0MvAj2rNoFwDdrJ/aMofeN8eRMrAmbzDfmpqrtQbYMbV8?= =?us-ascii?Q?05XXy1EVHQf1bVIWt51m5Tx/Otvhvpp4h0wTzW65O+H1Ljpw0Qh0YQfpWtXi?= =?us-ascii?Q?wsRMuxPDbm3QO0aNd9ZsRRMcT8FWufnXw/O5djUJ+Gd3S9GY9ryQE0FVm68Y?= =?us-ascii?Q?SpKbB/jYWbdLO7A5kGxxYxv22n+Ixd15EX7Sb+hISvI5ewrjOfd23aeLbE+B?= =?us-ascii?Q?XVGgazcjsKQHDR4bfaSyQ/IZaKh5y/gdNhMSUt+9tc1V1cnvAgvU+uT3FGyk?= =?us-ascii?Q?wDjyJtT42Hwimy78cL4qTspeHlYfn7/VVO/TbqGrvvyVq2VqukGIMsxql63g?= =?us-ascii?Q?qGzPiiQRPLgiNLFnvB12XqIDxTmnYE9ZXnYnXEGgdaZI+7aUGu2OgWqHMna1?= =?us-ascii?Q?uGs0ExpTnDaozA9r7AnlW0aHN+jUTojpiGmcHRbvTnqDdts2u4JOeGv4I1S0?= =?us-ascii?Q?gq4mkQCpLLXPyj+3NdOHAqGsOFV/eDP/8XCkQrv2dkCDXFjfSsi7WPa5s1ZX?= =?us-ascii?Q?d4rq9qwrkR/hPlUf+gObqcjrxT0+4fvd0Kqlh1iMrzO8tsrmJ8wyTIPex0kN?= =?us-ascii?Q?p26YDP1aLZaRfX4+qjg2hecyeybP2M1soE+yMcLHZjZckUEPJR+Ef6dSUfTJ?= =?us-ascii?Q?kqvW/SHltpBd3TpBR7RvMDpH5R+y8JAslFXpkghOFkjihUJnWlBJ/nYql3Gr?= =?us-ascii?Q?LyNf2u5IqZvR9tMg8BTV8rwvcMB4S41STnIUqdTeaqZAkGq0FDquLNVViM5F?= =?us-ascii?Q?vGN7SLIodJIWTXo0yr5X/37S1fR68nCOjxAVSDKYzpCM0JxHnSQ5M8zq3KBd?= =?us-ascii?Q?clSgMw+Yr05UuepptaGjTf3EyIEoIaOYjkbWqPMGcHpzndLZCtNstKn1aPqJ?= =?us-ascii?Q?06ffMKSyl9LaFxP5BLtZDg7ZNXg2mGPTGROLuBzkY6vw0KtOoBr0jEQKijCh?= =?us-ascii?Q?mW01FDp0joZmK8BMnEWdt2oX+59QwYuN2hjzOQAQClfoQn4vOmytC1q5yyP4?= =?us-ascii?Q?/Y6KApQceIzxpSC+MlYreiiUgsob1q4QujUKQ4KvAPMaazR0IswKUtIF9EOb?= =?us-ascii?Q?kuxmFd416yQ4gxeePJin3abYqcAZFTyzWzYGi+A5CfaiGoUD7AmjXSwti/MY?= =?us-ascii?Q?Bb0oOaTDiTF8Ih1pj16F0rhdF3U0F20hGik87S1pS8HpopWrp32OiJqQM8Uj?= =?us-ascii?Q?8tXL0mjNBXsmZdmRiipg5CNHRZ2FxfDkDe7Lk5S3?= X-OriginatorOrg: suse.com X-MS-Exchange-CrossTenant-Network-Message-Id: 661cb854-e86e-45dc-4bf1-08daa22bb707 X-MS-Exchange-CrossTenant-AuthSource: HE1PR0402MB3497.eurprd04.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 29 Sep 2022 15:03:06.7004 (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: Gd8u2uZ8LLNSkZXlKYJ9CsyICAJdyihA+0qbZ6wFTzZ6eofDwAK7bK8Auaq8X+HlaSQYRQkD6ETNLcQ6RpUGLQ== X-MS-Exchange-Transport-CrossTenantHeadersStamped: PA4PR04MB7822 Content-Type: text/plain; charset="utf-8" Move the packet scheduler out of the dfrags loop, invoke it only once in __mptcp_subflow_push_pending(). Signed-off-by: Geliang Tang --- net/mptcp/protocol.c | 44 ++++++++++++++++++++------------------------ 1 file changed, 20 insertions(+), 24 deletions(-) diff --git a/net/mptcp/protocol.c b/net/mptcp/protocol.c index fe92a301b8f7..af37b18aa5a5 100644 --- a/net/mptcp/protocol.c +++ b/net/mptcp/protocol.c @@ -1598,7 +1598,15 @@ static void __mptcp_subflow_push_pending(struct sock= *sk, struct sock *ssk) struct mptcp_data_frag *dfrag; struct sock *xmit_ssk; int len, copied =3D 0; - bool first =3D true; + + xmit_ssk =3D mptcp_sched_get_send(mptcp_sk(sk)); + if (!xmit_ssk) + goto out; + if (xmit_ssk !=3D ssk) { + mptcp_subflow_delegate(mptcp_subflow_ctx(xmit_ssk), + MPTCP_DELEGATE_SEND); + goto out; + } =20 info.flags =3D 0; while ((dfrag =3D mptcp_send_head(sk))) { @@ -1608,19 +1616,6 @@ static void __mptcp_subflow_push_pending(struct sock= *sk, struct sock *ssk) while (len > 0) { int ret =3D 0; =20 - /* the caller already invoked the packet scheduler, - * check for a different subflow usage only after - * spooling the first chunk of data - */ - xmit_ssk =3D first ? ssk : mptcp_sched_get_send(mptcp_sk(sk)); - if (!xmit_ssk) - goto out; - if (xmit_ssk !=3D ssk) { - mptcp_subflow_delegate(mptcp_subflow_ctx(xmit_ssk), - MPTCP_DELEGATE_SEND); - goto out; - } - ret =3D mptcp_sendmsg_frag(sk, ssk, dfrag, &info); if (ret <=3D 0) goto out; @@ -1628,11 +1623,18 @@ static void __mptcp_subflow_push_pending(struct soc= k *sk, struct sock *ssk) info.sent +=3D ret; copied +=3D ret; len -=3D ret; - first =3D false; =20 mptcp_update_post_push(msk, dfrag, ret); } WRITE_ONCE(msk->first_pending, mptcp_send_next(sk)); + + if (msk->snd_burst > 0 && + sk_stream_memory_free(ssk) && + mptcp_subflow_active(mptcp_subflow_ctx(ssk))) { + mptcp_set_timeout(sk); + } else { + break; + } } =20 out: @@ -3191,16 +3193,10 @@ void __mptcp_check_push(struct sock *sk, struct soc= k *ssk) if (!mptcp_send_head(sk)) return; =20 - if (!sock_owned_by_user(sk)) { - struct sock *xmit_ssk =3D mptcp_sched_get_send(mptcp_sk(sk)); - - if (xmit_ssk =3D=3D ssk) - __mptcp_subflow_push_pending(sk, ssk); - else if (xmit_ssk) - mptcp_subflow_delegate(mptcp_subflow_ctx(xmit_ssk), MPTCP_DELEGATE_SEND= ); - } else { + if (!sock_owned_by_user(sk)) + __mptcp_subflow_push_pending(sk, ssk); + else __set_bit(MPTCP_PUSH_PENDING, &mptcp_sk(sk)->cb_flags); - } } =20 #define MPTCP_FLAGS_PROCESS_CTX_NEED (BIT(MPTCP_PUSH_PENDING) | \ --=20 2.35.3 From nobody Thu Sep 18 05:25:08 2025 Received: from EUR05-AM6-obe.outbound.protection.outlook.com (mail-am6eur05on2079.outbound.protection.outlook.com [40.107.22.79]) (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 904E82579 for ; Thu, 29 Sep 2022 15:03:16 +0000 (UTC) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=Q9l8wELVnFEQ6T6Kr0KpoLgxmL+RqFZp+f1xEYhTRurBw+jLXJHJL2Fz/Z+RP0BH6miFbR/ZigK+kZyvALexSM2dhMqppcGpK0Vgst6o441bxAzon/UCB1m51ZDlnMDtoNaWD0ln5bUhaDS8ioeqNYiPQfGNagzHNBSEhM7ZV+tyxZ5/Xjr9keaSrC16BbOkN7k/FIuVk+DfybutRJIWOuK3ZEVGiattPSdaEXL//o21ofJlUQy3o45VwbeC66/njF7aTI5Qtm/mAcRHxFfo14qBvuNZSKesB9TFBq4hN2DeqB0KdZ3OHDpiSje/eDqX20Cwi3ie1g1GYxfHbHHk5w== 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=vZyBh6hMF/tFTACf4HvquVxyA2bfbaIjuO2c4Kdn0dM=; b=RhpHd5hg3We+/LEJR3nD3K0mg+hyHK3kDZRKQ3gt+zlDldazXZzqERa2bgm0MlHHkFgJC8ETVkjpEmbqL9RZ7qmN/Uak1Zyg6oaiLEvHc6iARw0GtLgjfHfXGBVeqlA9PchFMqlVYkpeO4xYfsSz5Vy95ih/tL+ues9Xwe+cX0ojvheaWI2lzMTXhIWFFeNcsAvDbKKmeFTpLf3KiuHlkJCt8P2b/QwWrM/UsPnCrVEauqWdHz0QaRlcISdGmVYPzQdWKUX9Nc4UIEAsdaXbGBXaPvGBODzA7TuHRpfV3Uw3PQR+MUW+slhE7cFcqYwlx/VeNVo1sHVpoaGVEea7cA== 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=vZyBh6hMF/tFTACf4HvquVxyA2bfbaIjuO2c4Kdn0dM=; b=hfYfiNmond1t1HwOy4QYUX8uFGFKVRTHkc4ddpbUNU1V7Kjc1sYkwR+h90KqO+TwWr+VEP8/0/VixNXEDTuwwaT2L4qFTBrcAlO9OS4jiaiwfm4JPk4l/dCNyhukbEv+r0R0fiidXi9ubLOQdNzL4IoWSpSh2dlKb/mXGpID3+zM9IeVeBRHi8Xqt+MsPsUSBSXJd3dBv9tyq1YCRf6Uk5eOSfh07h9HwsCrx9TJ4ppToRSMzxwEXZINo6YERmlVMOp0/KlSGQboTydurMKC+1DvQNYjfDRW8wr/+0XFOY2n/TBeC5O6qjvfDsTr29dFaOpYTwYkgOJ4yNK3fBmcqg== 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 PA4PR04MB7822.eurprd04.prod.outlook.com (2603:10a6:102:b8::19) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5676.20; Thu, 29 Sep 2022 15:03:14 +0000 Received: from HE1PR0402MB3497.eurprd04.prod.outlook.com ([fe80::e936:9fd1:22e7:97d1]) by HE1PR0402MB3497.eurprd04.prod.outlook.com ([fe80::e936:9fd1:22e7:97d1%5]) with mapi id 15.20.5676.020; Thu, 29 Sep 2022 15:03:14 +0000 From: Geliang Tang To: mptcp@lists.linux.dev Cc: Geliang Tang Subject: [PATCH mptcp-next v2 4/4] mptcp: simplify __mptcp_subflow_push_pending Date: Thu, 29 Sep 2022 23:03:18 +0800 Message-Id: <51380f56ea152f419218b8f58951b5f848d982e7.1664463491.git.geliang.tang@suse.com> X-Mailer: git-send-email 2.35.3 In-Reply-To: References: Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: SI1PR02CA0014.apcprd02.prod.outlook.com (2603:1096:4:1f7::9) 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-TrafficTypeDiagnostic: HE1PR0402MB3497:EE_|PA4PR04MB7822:EE_ X-MS-Office365-Filtering-Correlation-Id: d63ed81b-f9a5-456d-afe1-08daa22bbb73 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: M/BkGrcPDyrkaCjP/ML73lt04H0smTrQFTVh1StN5k5ztVwfMCxNyEpYmt4chM4re2kJZko3yPGg+rXZIIJW8dRHPIGhuHvzPb5wOzOb+xLNtJAC1jYCgwKU+uMcB/ePYQSZx2LMfiUT0wCGSLkh5JQZTP0BtqxCQWyypOJyzZXRbZFy3RD4d5vtmGN1Uf/2zwRbiOd9HcHbl6cj+2m4tJFytl44e6ET8cvI3Ysa+1RrPKS+0tBbt8k9MKvZFrGOHgdmsTTSpBpM/d/Ti0yJRj6GJcP8BcTIS5Lx+5ErD3Kxt3Omz7HStmlQLVaOWidWYmFijpZ2bg7OKMwLDctck+no3pU0vZgw+8OsGrXx3N2bNzPFFYku+VZMZ+4dXEl3gRPJoR5YfNfmyuVaUGU2D5X3TZvxoYdO66E1W6Nos6zFvqYybGRburwMwD5b1A5kJ5ElX/lfnnkLCw/OoqVDBlmKYg30epOLVEXWKBpaW6LHp8RX5biChmvz2jqFTZ/cZeto7HLEoAqau9XGS7L03gFtoi8GEjbKH4gC7w8z75WLhK4w8fu8V3W7+A3nbA1fST/moh8WFd8gepP8LN3BTSGtgpi0IvNVNYUu1uzpMIGiDldBi3SBsK1GfzMi1+fKJyysjdEEV0M/llTgiuAQk5x2htw6YxT5mHZfKNeiT9iIQoXWOnTJS3KBA35/VpHtOsbN6wRdHj2MUkbUt1/TjKg7ETbJBWmBJmfdvDKQaXb7Dl2m8bDNohsQhdJyzJW7 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:(13230022)(366004)(376002)(136003)(396003)(39860400002)(346002)(451199015)(83380400001)(186003)(2616005)(86362001)(38100700002)(8936002)(66476007)(66556008)(66946007)(5660300002)(4326008)(41300700001)(6486002)(2906002)(44832011)(107886003)(478600001)(6506007)(26005)(6512007)(316002)(6916009)(8676002)(36756003)(13296009);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?dRgL3Y7J7utUBXu0DnTJfV84dZSnTpuHuU1/kcUiCjUBPLC7gCWckUnDd4o3?= =?us-ascii?Q?dVNPnmkx0qek464y3yBvEruZ7zWrKa3RdyI/XU2nYXvTXF3WyNsPddhjLK+r?= =?us-ascii?Q?7nK9PlMR6MG3Kq97lbaWNGGJZuOYorAQwHMsX+NJvtga57cRn/HpWZmQoej0?= =?us-ascii?Q?E4eFMYoLnhfw8gzwy5QRTodhrN7WRUPs89WzdXHpLT17jJM10WNGdZ9DG0LL?= =?us-ascii?Q?uVAxaU4C3756LbTrcfn2EZaxrG1rayjJMCgLmuWF7E6XX9cmBh8lOO9sbjyN?= =?us-ascii?Q?LZYqaDAp8UO5Hdui3jo0eGZtgYDybGmQdJ1wBML9Say7tB17gOayUnRc/cb5?= =?us-ascii?Q?ClLqyXF+Ue+nAb5zdxFZomxXb270GH13AlP47kfobEbnTrtEcTJ68qSkDxYy?= =?us-ascii?Q?G6JCWwNN1ZX37lk7w3gWllez56gYaJsadFtfsiqbeWs3UaSgz22zySEMeBVk?= =?us-ascii?Q?xmqWlPzpxuRZuVsOHrCL+3nx4WIdEeht7M4N0DZq3OGixl5f0/mNyZUfMV8L?= =?us-ascii?Q?EDhEXdTjC1ZUrNf8PSDKq46jkBx9lq4a3cjNZSOt+1dgEkXG/Jxn/qG4Ab/O?= =?us-ascii?Q?DmcnhMYvPL12Lifi7WKFWbpAeN4y4FPy65oSg5QYzRRNAOGdLm4L2va+dZTU?= =?us-ascii?Q?jg4X+LxvWKOHiVswzSxZsbY5PxgSLIPLtxlD8biN0kkXc1nCkQf2jSFvIWVU?= =?us-ascii?Q?OLqpYvl4uZpq3uZqPUj+SqcXVRUkHuWNQpmvBskUeQQEa/B1YndgUqxl31JG?= =?us-ascii?Q?Keha5StcLdrKZdhuUWCIUsSpyCw04ayr2dwKwtPQ5y5vuuxU1ZV82GnKpO1d?= =?us-ascii?Q?qzVcgDY5CawsOH3x6GIts/VpAyGaY/Pi9jccTAEAD8DUVPGtzYhQbdUJ0JVx?= =?us-ascii?Q?tJ0J9GhBBkIBqUwL74UOIQEDDOMIIGd7vUw6KHmTpaCW529l1wodkITw2Cga?= =?us-ascii?Q?UjWWMVOinwFzkM4DMxz9zRAMPUmxVoAvOCDt2D9mUgxjJ5tELRArBJvbM5IN?= =?us-ascii?Q?W76BhyWvnMJi0K2QYPYlGgOs6fd3i4DbscBXWtPSl3ZZZuIB3TaRzPDuGxeh?= =?us-ascii?Q?/ZA3IVPlu45QZlp5TvlPpTRV6Qz6Yx483fjgW5+7w46DqSThrN2ZrgoS1QZb?= =?us-ascii?Q?lS98EP52mQ/ZyoCYE/M9JuoB5ExJbsH/Z8l/SBQ8kExvhcRxyINJ1aXUI9O6?= =?us-ascii?Q?GpGu0E1TQzUQmo7cOrhOaF4ZidJ09iwU94jW2dfRQIgr2biDw9i6QR+4z8K1?= =?us-ascii?Q?arEDMo3RvTV4lkH0WGlJpmBVd+Ojrz1YoHlUarQZlfKfoCJ7mmxL0nFPINUw?= =?us-ascii?Q?YSJyp8w1yLvgIMWFlDK/TVVLgwSHLID1g1OtAx2tGQHvv+mlffEfwr0IdRy6?= =?us-ascii?Q?njoPkPESOetGSKXxPBnkRf24KSmEHLgeFy8cCOtPDZQHlnGH/xwHzpgbdb8Q?= =?us-ascii?Q?4kxbG8Hjv3AlOsi+fqX77siaxmGAB3PZDEe8e+kEel1C8QejyHNswinQ1WnO?= =?us-ascii?Q?wsiYuW4HBoV8knipUJL5P0n0+T1vHyVoEruZGZnVkRTICsbDA36Q8yjZFgNg?= =?us-ascii?Q?xLftfaVBRklA3UEIK0eltzyEs4rwtbKbdKLqJoXo?= X-OriginatorOrg: suse.com X-MS-Exchange-CrossTenant-Network-Message-Id: d63ed81b-f9a5-456d-afe1-08daa22bbb73 X-MS-Exchange-CrossTenant-AuthSource: HE1PR0402MB3497.eurprd04.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 29 Sep 2022 15:03:14.1217 (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: 2uVMNOZ2kiRh1nFEzNXWKlnMvFl5GIWuMf+7qTQktfzO1FdQAPSPLfsIz5CMapppb1N/P/3OhJuXbPVwYfG2WA== X-MS-Exchange-Transport-CrossTenantHeadersStamped: PA4PR04MB7822 Content-Type: text/plain; charset="utf-8" This patch simplifies __mptcp_subflow_push_pending() by invoking __do_push_pending() helper. Signed-off-by: Geliang Tang --- net/mptcp/protocol.c | 33 ++------------------------------- 1 file changed, 2 insertions(+), 31 deletions(-) diff --git a/net/mptcp/protocol.c b/net/mptcp/protocol.c index af37b18aa5a5..8ab98cd89e87 100644 --- a/net/mptcp/protocol.c +++ b/net/mptcp/protocol.c @@ -1595,9 +1595,8 @@ static void __mptcp_subflow_push_pending(struct sock = *sk, struct sock *ssk) struct mptcp_sendmsg_info info =3D { .data_lock_held =3D true, }; - struct mptcp_data_frag *dfrag; struct sock *xmit_ssk; - int len, copied =3D 0; + int copied =3D 0; =20 xmit_ssk =3D mptcp_sched_get_send(mptcp_sk(sk)); if (!xmit_ssk) @@ -1609,41 +1608,13 @@ static void __mptcp_subflow_push_pending(struct soc= k *sk, struct sock *ssk) } =20 info.flags =3D 0; - while ((dfrag =3D mptcp_send_head(sk))) { - info.sent =3D dfrag->already_sent; - info.limit =3D dfrag->data_len; - len =3D dfrag->data_len - dfrag->already_sent; - while (len > 0) { - int ret =3D 0; - - ret =3D mptcp_sendmsg_frag(sk, ssk, dfrag, &info); - if (ret <=3D 0) - goto out; - - info.sent +=3D ret; - copied +=3D ret; - len -=3D ret; - - mptcp_update_post_push(msk, dfrag, ret); - } - WRITE_ONCE(msk->first_pending, mptcp_send_next(sk)); - - if (msk->snd_burst > 0 && - sk_stream_memory_free(ssk) && - mptcp_subflow_active(mptcp_subflow_ctx(ssk))) { - mptcp_set_timeout(sk); - } else { - break; - } - } + copied =3D __do_push_pending(sk, ssk, &info); =20 out: /* __mptcp_alloc_tx_skb could have released some wmem and we are * not going to flush it via release_sock() */ if (copied) { - tcp_push(ssk, 0, info.mss_now, tcp_sk(ssk)->nonagle, - info.size_goal); if (!mptcp_timer_pending(sk)) mptcp_reset_timer(sk); =20 --=20 2.35.3