From nobody Tue Dec 16 03:46:14 2025 Received: from EUR01-DB5-obe.outbound.protection.outlook.com (mail-eopbgr150052.outbound.protection.outlook.com [40.107.15.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 23DF133D9 for ; Sun, 2 Oct 2022 14:24:48 +0000 (UTC) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=GbB8IicRLiyrfwf33hZVlc+AhSZqu8/Mu0rpmw0zefxx/WT2JH9yA5sA6t/bHcCcpHgl4Qi/T2IremL0JVumO7EqCcGDNeZU/gL7I6emCEFBKugOhh/SpZjmnSuH1dQgaJQ+vIEUmIjpA+P1N0Ba4ewVLH/bDy2WWhonRalmBJI6A7y4E6yOuhNcRzm78OhVbXjjDOp8HBqFqN/hmSMh2D7MXuCkB1V5kMirUlEXuhnnIiz39nIJ9JnAo2fyjbQpfOYERXuGZjvG8lj+bgqrue/KNxD2MAodOJnKeauMj4841s/ygQ+6ieG8Xhv9eUYQbGqRlQ9/8mg51itgJt4MdQ== 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=hebWbYBPjN753RtkY5tGxwSFNIrTnUNdndoflBJfo4U=; b=bjrrsYhaUIypdhL9ANnnXNjidKwdbIzQe130lr1SgVBhZevSKE/c4g2S1EKRZJZIAokTfxIeyPC/MjhTGOaHNkzLChEZWfUmvwMcq+vzWFwI3ixKmX8gpYvqPxlhvR8hbVYXf+GDLM94LzEn50ZBts3+aRPxY5lWFctbXeHkd6tH1txA8KV/c9fXVvrzdKI783iSBGH4qgGI66r71oCA2DQlFsZJc+KblSy2wOMh5OdwYrhMzR5y3zHje3jPePh5wfKlm+bnN82F39NSAo15jYu9vntPk8DNHeH31T0qNPB1YF1Z3eICj+jV6nRamFyNVdZJoJX4zRSOHCgXc/aaIQ== 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=hebWbYBPjN753RtkY5tGxwSFNIrTnUNdndoflBJfo4U=; b=3pcChPkrm6Z8SEd9DilQXtYSbeskvVp3WNUjFS9+UHQeXXo+T3n9DRrDAf4hhilMvMH1KcT4fkMU7qG3hJPHWwb5G0AKrcbwFsoLfbfrJEUb6uNAaRFpgSFVQ6ddgwichimZGcd0uVxXfr9/6IZPDY8v5ZCAHMb+BAokgKYjcG5mCK9qMGX+rway9ZCELUvTcKDDn8f+EwxL815ZQ5mM/4Cgqo0+/GgALkOpUx/39eDnY8iFyC64vBRNWS10Eadh1Bcl24DOZBc+Ee0Q9clpAQdPu3j1KbcoVdLI5aXg7hVPUBqXS7UEKnIZLGgP6j0GgV61hqqv4Z5MpdLXL0VT7g== 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 AS4PR04MB9409.eurprd04.prod.outlook.com (2603:10a6:20b:4e8::14) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5676.17; Sun, 2 Oct 2022 14:24:46 +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.024; Sun, 2 Oct 2022 14:24:46 +0000 From: Geliang Tang To: mptcp@lists.linux.dev Cc: Geliang Tang Subject: [PATCH mptcp-next v4 01/11] Squash to "mptcp: add get_subflow wrappers" Date: Sun, 2 Oct 2022 22:25:09 +0800 Message-Id: <564b5c387644eb2b83c7bb03e0fe638d16acf6bc.1664720538.git.geliang.tang@suse.com> X-Mailer: git-send-email 2.35.3 In-Reply-To: References: Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: SI2PR02CA0034.apcprd02.prod.outlook.com (2603:1096:4:195::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_|AS4PR04MB9409:EE_ X-MS-Office365-Filtering-Correlation-Id: e5b80c01-7b7a-40f8-850f-08daa481db42 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: wC7yTbTD2w22f/brkgbVSQC5nTTI4rkXMnYEVeA/K71BmbAsIxBYIY3ChRC9V63MUhk46CCsao9gqdF5nyNxvJwWRwuys44uwgtvvUdd0wPQJKSuDACwYLvbeJAnbP3eG7BRCx6LkWLN5UGBCstRGUxm4ShtMKtMApBfmpXM5D0JafbcZl+cklm5WRsLGcwZk/0AoKnIOVx6kSeJB3Leg0HPkz67zqgCi5flAvZuCVqqelHWBgmpvuWfBaJhurufbV10Rxy0GXPv/rSmpSDHgS6D6IID/v8LpBCbZ7nKsKNz7RxJibgaZs4LslY3uwu6vpwgk+Xl0mexJhDBDfidAnSxrlT510EJZgfuZC0exTHMe0IZzc7U9mh1EqbZVZzLCgW80Sd7lYMf5zG7Iv94v8T2rw7niQZEv5+mvI+sKOavC5YMoUL6qjYUi2wD14CVOM+fAjgll7EC3qcQQyrtlT2bw0Fty7o4ZiPcPfMplriSsedlEhtJBK07PuQV/o+vHcFWWxGYR5haLsKbpykCxFraza0ZuBoxEfvKUdi9amB/iRHSyUeCanYSnsZU5+fYbE6/XKxjYO4XGCB3w0He/ZYe53vJR9KnQrD6fGMS7LR+0f1pHQzgmVFJmLyffLktFETeo5ScnUI740fPr0dNDFy03dtFtI4yNN0KFQh+wpTDPuOdrsJ8ji9LpTUANn819dUTgNHRhNMMtIoR84t16w== 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)(376002)(136003)(366004)(396003)(39850400004)(451199015)(316002)(6666004)(6916009)(2906002)(8936002)(44832011)(36756003)(66556008)(66946007)(5660300002)(8676002)(4326008)(26005)(41300700001)(66476007)(6506007)(186003)(38100700002)(83380400001)(478600001)(2616005)(6486002)(6512007)(107886003)(86362001);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?frhv82kVjVoUFmwzNsZuqmU86zie9HQG2UFLlA100nAIFcqKeJlLuhxKGom8?= =?us-ascii?Q?7dtpYw+/30VSsjh6lb+wxy1Y9a2FYe2k8WIt1AvbKS4vmhViWylSd8qK+j8X?= =?us-ascii?Q?KOtqNKCmppca1UQXfFzArXdqyjYKvDq8/0TKjYDLX+XlXVS49UU96s+SKu72?= =?us-ascii?Q?/4bp+GmSBSTZDVdL2Y0xa5YNIf0wBFE1EY+gCWh4FT3/M4VpkDjizYjTuGHQ?= =?us-ascii?Q?DIH8u4gab76Qee0/Ijf3nIxo0kVPzAJ16LIu0dHwhYgckhl4frdVMnlOSj14?= =?us-ascii?Q?BDHAxGSLmiJWIt1Ptu8KKKy/dFcVPoknb0wBS+1VSs2bqAVVuQ35fgiYlIt3?= =?us-ascii?Q?kNWwUPlpdzb1+dFY84E1xBiEvS5k+eTIsxLkiBYF3DlS9i9WDVGcnAZIgVxr?= =?us-ascii?Q?hQVIl6uJys5gFBr4/C7lX1MDU0eH+xJF1yqESHmO/qPsKqu+eJlVizuFpH5G?= =?us-ascii?Q?ddanh8OGdJSf2V7y3U9Po1BSELdcnJ6GYDJ6+2AGQx9v8MZrAjXVA+mTvMKS?= =?us-ascii?Q?u0v8+VhAd3mO2Y595I2tjaQTRNqp88SnMlE6PF57tJOUjcDZZkTLZ+mVzSSg?= =?us-ascii?Q?ey8lvpuvm1VCf2jhnogApHEDF6c9vBIg+gUXxbiQroZKp0Y1DmizA/8ZFqGA?= =?us-ascii?Q?kBEDeYo5izzv3oR7YVsCwwEpOOmIR1Mu2PfZcjSBCk10BG7PAIbCiH2KTPmG?= =?us-ascii?Q?RC4qKYqHB3DCgHfBJc2Ps2IqzopDA0jMnTei8mTk5sAik3P10mNHl9i5vLBo?= =?us-ascii?Q?E2uAjhxNHi/ZIYCyUVBxu4iXOkA2LotvMjd7QAnw2P36jfGCTp0vv5r3WQ5Y?= =?us-ascii?Q?PpwMlzcOqnXbFquUVix1XG4fTmBq+cfdfnnOQ36PNWEEh42JnMCG9xpRdi5d?= =?us-ascii?Q?mQpjjWD16gH458Y6knsaBbkDR8Xwbj+beVVRdlgRAwveIki4Svio+vSRPiyb?= =?us-ascii?Q?Ur4JORprIuM5KPfM3R/eJfFuVdWI6WLBV9LRaw5hzdANkr/mT+IfaowD2UV0?= =?us-ascii?Q?nRpMm/0KGx/dLr3S5isVs1+kDgCH21QGXOwsB8PiI9QMZJUGdTPeyfv2UqxB?= =?us-ascii?Q?mn6MJlSLAh4ECOskLfJhOV1H2Kz0oSR9wyUFDuzGMWhcOzWTUE0mRcpIjs4g?= =?us-ascii?Q?+5jIcLNOLiar6BOZ1GYvP229FjZA+V6gdEUhLNiUx2X+30JU9OglghfgHT5g?= =?us-ascii?Q?Jr7t54e9kAVh1MvMAPudb+6fQpliU7xJf3N8ETZzXgkfck4cNDVER4OJ4zxZ?= =?us-ascii?Q?rO03SP+WdWQGeYE6/VK90XULh3as1wB75BK5J/s8+D0BDXtU2V7DWKeAuYdJ?= =?us-ascii?Q?RpawiowB0ECOBITvfF0xTZA31D05XVcE7yU+O/KR7BGZfJhWBjOLZFMm+JFT?= =?us-ascii?Q?jx5lX6xX1Ac8EN44ZSJddxVii9omNqFeAmNt7dzmGfmaqTjAywP0NaEnm+WT?= =?us-ascii?Q?zLUf4OW67oYX3f5x3Jogbkcuiuj+e4avnJ3Fcj2jkY+Md2D1R0EsYNOM5Nw3?= =?us-ascii?Q?3FMztGnJw++q8wBIAaZPK5Pn+tkjIOnRzA4RBl5XVFpr9ON3vb0R6CnC8pBv?= =?us-ascii?Q?XK2a3FCWtl22KFHkbfDvTl9uzV8Zynp0vCZFBVc73kQG18cQ34eqOZvhvDAm?= =?us-ascii?Q?1A=3D=3D?= X-OriginatorOrg: suse.com X-MS-Exchange-CrossTenant-Network-Message-Id: e5b80c01-7b7a-40f8-850f-08daa481db42 X-MS-Exchange-CrossTenant-AuthSource: HE1PR0402MB3497.eurprd04.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 02 Oct 2022 14:24:46.4996 (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: NbWwQHkwjj1yGPQz0Lqv02cLNqswFYQn6QDTgtbs7KWR2hR+4G10q86ZT+LYF13lZKJKQL0do4dJrtlPlbupxw== X-MS-Exchange-Transport-CrossTenantHeadersStamped: AS4PR04MB9409 Content-Type: text/plain; charset="utf-8" Please update the commit log: ''' This patch defines two new wrappers mptcp_sched_get_send() and mptcp_sched_get_retrans(), invoke get_subflow() of msk->sched in them. Set the subflow pointers array in struct mptcp_sched_data before invoking get_subflow(), then it can be used in get_subflow() in the BPF contexts. Check the subflow scheduled flags to test which subflow or subflows are picked by the scheduler. Move sock_owned_by_me() and the fallback check code from mptcp_subflow_get_send/retrans() into the wrappers. ''' --- net/mptcp/protocol.c | 8 +++--- net/mptcp/protocol.h | 4 +-- net/mptcp/sched.c | 59 +++++++++++++++++++++----------------------- 3 files changed, 34 insertions(+), 37 deletions(-) diff --git a/net/mptcp/protocol.c b/net/mptcp/protocol.c index 7ca21915b3d1..cc8e67543e76 100644 --- a/net/mptcp/protocol.c +++ b/net/mptcp/protocol.c @@ -1547,7 +1547,7 @@ void __mptcp_push_pending(struct sock *sk, unsigned i= nt flags) int ret =3D 0; =20 prev_ssk =3D ssk; - ssk =3D mptcp_sched_get_send(msk); + ssk =3D mptcp_subflow_get_send(msk); =20 /* First check. If the ssk has changed since * the last round, release prev_ssk @@ -1616,7 +1616,7 @@ static void __mptcp_subflow_push_pending(struct sock = *sk, struct sock *ssk) * 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)); + xmit_ssk =3D first ? ssk : mptcp_subflow_get_send(mptcp_sk(sk)); if (!xmit_ssk) goto out; if (xmit_ssk !=3D ssk) { @@ -2478,7 +2478,7 @@ static void __mptcp_retrans(struct sock *sk) mptcp_clean_una_wakeup(sk); =20 /* first check ssk: need to kick "stale" logic */ - ssk =3D mptcp_sched_get_retrans(msk); + ssk =3D mptcp_subflow_get_retrans(msk); dfrag =3D mptcp_rtx_head(sk); if (!dfrag) { if (mptcp_data_fin_enabled(msk)) { @@ -3196,7 +3196,7 @@ void __mptcp_check_push(struct sock *sk, struct sock = *ssk) return; =20 if (!sock_owned_by_user(sk)) { - struct sock *xmit_ssk =3D mptcp_sched_get_send(mptcp_sk(sk)); + struct sock *xmit_ssk =3D mptcp_subflow_get_send(mptcp_sk(sk)); =20 if (xmit_ssk =3D=3D ssk) __mptcp_subflow_push_pending(sk, ssk); diff --git a/net/mptcp/protocol.h b/net/mptcp/protocol.h index 93c535440a5c..e81399debff9 100644 --- a/net/mptcp/protocol.h +++ b/net/mptcp/protocol.h @@ -640,8 +640,8 @@ void mptcp_subflow_set_scheduled(struct mptcp_subflow_c= ontext *subflow, bool scheduled); struct sock *mptcp_subflow_get_send(struct mptcp_sock *msk); struct sock *mptcp_subflow_get_retrans(struct mptcp_sock *msk); -struct sock *mptcp_sched_get_send(struct mptcp_sock *msk); -struct sock *mptcp_sched_get_retrans(struct mptcp_sock *msk); +int mptcp_sched_get_send(struct mptcp_sock *msk); +int mptcp_sched_get_retrans(struct mptcp_sock *msk); =20 static inline bool __tcp_can_send(const struct sock *ssk) { diff --git a/net/mptcp/sched.c b/net/mptcp/sched.c index 044c5ec8bbfb..d1cad1eefb35 100644 --- a/net/mptcp/sched.c +++ b/net/mptcp/sched.c @@ -114,67 +114,64 @@ static int mptcp_sched_data_init(struct mptcp_sock *m= sk, bool reinject, for (; i < MPTCP_SUBFLOWS_MAX; i++) data->contexts[i] =3D NULL; =20 + msk->snd_burst =3D 0; + return 0; } =20 -struct sock *mptcp_sched_get_send(struct mptcp_sock *msk) +int mptcp_sched_get_send(struct mptcp_sock *msk) { struct mptcp_sched_data data; struct sock *ssk =3D NULL; - int i; =20 sock_owned_by_me((struct sock *)msk); =20 /* the following check is moved out of mptcp_subflow_get_send */ if (__mptcp_check_fallback(msk)) { - if (!msk->first) - return NULL; - return __tcp_can_send(msk->first) && - sk_stream_memory_free(msk->first) ? msk->first : NULL; + if (msk->first && + __tcp_can_send(msk->first) && + sk_stream_memory_free(msk->first)) { + mptcp_subflow_set_scheduled(mptcp_subflow_ctx(msk->first), true); + return 0; + } + return -EINVAL; } =20 - if (!msk->sched) - return mptcp_subflow_get_send(msk); + if (!msk->sched) { + ssk =3D mptcp_subflow_get_send(msk); + if (!ssk) + return -EINVAL; + mptcp_subflow_set_scheduled(mptcp_subflow_ctx(ssk), true); + return 0; + } =20 mptcp_sched_data_init(msk, false, &data); msk->sched->get_subflow(msk, &data); =20 - for (i =3D 0; i < MPTCP_SUBFLOWS_MAX; i++) { - if (data.contexts[i] && READ_ONCE(data.contexts[i]->scheduled)) { - ssk =3D data.contexts[i]->tcp_sock; - msk->last_snd =3D ssk; - break; - } - } - - return ssk; + return 0; } =20 -struct sock *mptcp_sched_get_retrans(struct mptcp_sock *msk) +int mptcp_sched_get_retrans(struct mptcp_sock *msk) { struct mptcp_sched_data data; struct sock *ssk =3D NULL; - int i; =20 sock_owned_by_me((const struct sock *)msk); =20 /* the following check is moved out of mptcp_subflow_get_retrans */ if (__mptcp_check_fallback(msk)) - return NULL; + return -EINVAL; =20 - if (!msk->sched) - return mptcp_subflow_get_retrans(msk); + if (!msk->sched) { + ssk =3D mptcp_subflow_get_retrans(msk); + if (!ssk) + return -EINVAL; + mptcp_subflow_set_scheduled(mptcp_subflow_ctx(ssk), true); + return 0; + } =20 mptcp_sched_data_init(msk, true, &data); msk->sched->get_subflow(msk, &data); =20 - for (i =3D 0; i < MPTCP_SUBFLOWS_MAX; i++) { - if (data.contexts[i] && READ_ONCE(data.contexts[i]->scheduled)) { - ssk =3D data.contexts[i]->tcp_sock; - msk->last_snd =3D ssk; - break; - } - } - - return ssk; + return 0; } --=20 2.35.3 From nobody Tue Dec 16 03:46:14 2025 Received: from EUR05-AM6-obe.outbound.protection.outlook.com (mail-am6eur05on2086.outbound.protection.outlook.com [40.107.22.86]) (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 0D3CD33D9 for ; Sun, 2 Oct 2022 14:24:56 +0000 (UTC) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=RcfrVIVSpingaE0xf3N8ApLiZS5FgUlls8jt/iprEQwiAilvkEIQmk2jsVevVZrV1D8jn2gmieWdq9KgXzbdO4DK9z0/XpC20df7vevsF6ky8FptqOB1SStuSTAuFMCfmdycCY+MKz8yKTe9VURsaxaKW/sMsoRns8HgOFhWcoiGbd/Zo47sUU60AtlZi+NQzd2ZnPhVIX1yN7ykx1B2AfTB+GYAyUcNmu8c3UhIpTpFtn3URYR+M/ghgMerOBBRn2RDs7t5kGT1sZMrxeSW5/r0deiCdNqYxgvFF5Rek0GuOyJmeO6Rfk9xTrhhrWOh5PznuvibaChebq2tFfMj2Q== 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=bBYCWLHX72eZ0zMJIOGpKvleHTol9CzhsNjQ3EebapI=; b=OdO+eO78JP5LJkc5muNoFSXgauVyUeoLaH2yM2ygUx7FXRMvued7A/cH4VM5yN+bstvGKZxx9+WNTYX750idBGPcKzDWIzTHoS/s4Mt1qOJlUfuYzM0nOVl67mEQ4dmF4QIeG1n7K2g7tsqqVKCRhy0Thk14hFCztajnVjgsqi3lKeLqmLKNWfL9YalDYJslRthksYl61IK/4kk8jmYoBGUsjSoZTQRKFUbs0nA9R2Cnvk4Rb9ujMiAkDvPfczI8t2YpSzcAwD0kPJwF7hnHcSseqy7U29vhd1z1wEbTO7uGUQCSUeXNv/saJqyed9xNUXcclFIBsEwG5Tl7nThMgg== 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=bBYCWLHX72eZ0zMJIOGpKvleHTol9CzhsNjQ3EebapI=; b=BjNGqH5AqrT0tutYyF/5Kcmhz7+1FgUOsMKlRGBDml2FTDXja3/CPqGR/t6kRqFpsFvC8hQqPQg9/8YpGjwNhUP1BrPsP15lpEaOq4xSYEUg3kypF9VWFDbOmIxc36VNot9ulpIFF1iiIRuMhrNB4Vt411rxrQ79DWQ4klwshWPxq5nN8j2BAu4hvW6grS5QaOLLJ9f6CcQQJRihDahhk6914z9lQEuxTJ1SZouTAp5fo3lTteiybFfvt39I9DdaC45sx308aj9WaaZaXjOSTTcKMczElvlnac0i0OIi9eQpJJg9wU7cg7kkfAXEhOnFZYp7JYeMCgd3mXyDOHhfxw== 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 AS8PR04MB8738.eurprd04.prod.outlook.com (2603:10a6:20b:42b::19) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5676.24; Sun, 2 Oct 2022 14:24:53 +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.024; Sun, 2 Oct 2022 14:24:53 +0000 From: Geliang Tang To: mptcp@lists.linux.dev Cc: Geliang Tang Subject: [PATCH mptcp-next v4 02/11] mptcp: add new argument ssk_first Date: Sun, 2 Oct 2022 22:25:10 +0800 Message-Id: <03e299e3fa96817a92e0f0f79f7bce938f732d96.1664720538.git.geliang.tang@suse.com> X-Mailer: git-send-email 2.35.3 In-Reply-To: References: Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: SI2PR02CA0025.apcprd02.prod.outlook.com (2603:1096:4:195::21) 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_|AS8PR04MB8738:EE_ X-MS-Office365-Filtering-Correlation-Id: d13e068d-bfb6-439b-1a1b-08daa481df3a X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: icMxJCxHbKFINtAt3tEkugL6NNkaZRkWzbP0F3S5O5vdkb7ZGH7Qii6mYzdZNiwBISuuyaGUr54/M7eHmo6E1MY4M78JQyEQd+5zDzt/OMrlHkt+hSB5eP+SXMYe3vRkK8EjlmZbS0rryBEBL4QVz4kD7uyS/u2BO6VvHlj6HnHEmIqYBPvc+AsVv59Sv/b7YfYhTImWo6IoXShWyhWevcbT6RbVjY30mDaamrzHHI9QYmc5qhoIAyUyMq9vlw2YT6vfnse+kxBFlap3v0BvKYNf7/BAyL4Y+mpws33gENMFupAW5HBxpkmUhig14r3OeS20sW9K2xR47HP2A19KoaZwQdhLoq13F/b7BO5uSl7y6DAQHEpVJ9l0apydChokbfuVgMEUz3W3ZkHexnRnvahOsgaz5RbfmYKi1YIxGcnVR6ByofvRJiZLyYOx2HJ9wQRZBlOWtifaLD2qMkN+/syVRFR4kek6FGn5Kv1P8wITCaip92OxlhfQqDgqiSmsjZCU7m9tKl+go8SnGQihLxMLeKNHEL1Lb/R7BI2L4sDsdpzZnHC2LdAUBaMz2F+EsL0tCRDgYBB64WxmetKq54gZ5NvfKkOYtzx8Qk7IluDdrlefy4H9lfm6EIcPMvOaDd4e0mml67j74/wSwgEeiMyFDE1EfongyXsMmdWNFOMqFAkrnZQV11VyphMARej4TobWcMbTbcQGcrRjdKPm8A== 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)(376002)(396003)(366004)(136003)(39850400004)(346002)(451199015)(186003)(86362001)(66899015)(2616005)(83380400001)(66476007)(38100700002)(66556008)(66946007)(478600001)(5660300002)(8676002)(4326008)(44832011)(2906002)(8936002)(316002)(6486002)(107886003)(26005)(6666004)(6512007)(6506007)(36756003)(41300700001)(6916009);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?Zqwyd3OpdtdsHtiEQx/xUrHk15Mcvl52KrN3OlNN5DP33rkiItaWc70rvuBP?= =?us-ascii?Q?2ciU/JHSWIjad1SGeGZpsMjLiQZExOX310jDcqfECBLGXj+P+GW4po9SbrMc?= =?us-ascii?Q?ILQEdlgVRZa7l9S6CmN8wbNFGmKJJoOTWAYf0qJWBD7ZSYJ/r2zyEF3+CVEq?= =?us-ascii?Q?wPaKDYpEj/lyexLz3LfX1pCqsMFJFsJg0QKYu6L336f+po3AHw3bQNVODK9L?= =?us-ascii?Q?S8B0yhL0E0VMyHvlkdUD4I/BrIimWM6l3Agmh5LnTdNa+k48WJ68Gm/6x04X?= =?us-ascii?Q?jzMOwSkBC3HUc4KWoLjUh0sSg+ydFdXGs80crAM2UaD/rQ03+mMrVgklyrOi?= =?us-ascii?Q?iGY7L0CWsE3IdXBxrx4/Nh0MhylrDBFC4Nu35LKtDGhO8jDcYzn44Ztof5i0?= =?us-ascii?Q?opVKosvECEE3jbJNj21NI4AZDQtM9iWRXDjwSqxHAU2DJ3WFX0Zr83zvLyhH?= =?us-ascii?Q?Wg/Vj/5i+ijxnCd6z6d+QFDV+fREoAALAeSS91NhKDmYkCCXQIWWyzWCNY3V?= =?us-ascii?Q?RUzvL2NUrQRqlYNBhYcUA+wXvOsAxKOUua8NkCzpU/93xPwRKjRg2VTVgCaF?= =?us-ascii?Q?UPk8gz+vY73UyquVzHoC0mFftcPEDO/xXrFGPc8iyINVsPLEkA34pO/TIKg+?= =?us-ascii?Q?UjQCbCqjyNCyQeS32JAAWSE/W2X3f70XqyBkzEOPAfuZGPe6hdSf8IVWN+Ks?= =?us-ascii?Q?qxHEwkamM5gK9yeHLXTNxje1zV8jP0m/ZvEHg/mepKIJWg86zyXFCeSGaXm8?= =?us-ascii?Q?bodgzCaYqsY9ERjTQEQGVOYH8rwTbf8Y9T0DmrSDF+HMY1L7GkUcZ8PRahgJ?= =?us-ascii?Q?/Ms2No9U9fA1L8fPDx8xxwESJpZ1HIKTEH7b7F4PAprforRpt5WB2DxrqCWW?= =?us-ascii?Q?1RE8Eu/nF5MnpYCETRTqLIfVzvkjwrxCxbuEegIvXiSKAFQM/n7oQoXPmyi0?= =?us-ascii?Q?rtJJk1GjVFqBEq19GqCrbzJ4xPCxAQM0dXUvRK7cRqqGff3ztoAYrmy6Q0YY?= =?us-ascii?Q?ORq5BInomD54/3cRX3zGze1XaL3dBx87sUAeeHfREEE2dGXvtyQ2sSYfdirX?= =?us-ascii?Q?d+yfPQ3PTYVT57jAG+SBRztWpGvbKoUWxcQsItLj/tFC6zPr0Zq600ybmkgM?= =?us-ascii?Q?GBdCXoQHbe64/UjG/PbjRV4JVuRoZBdKF1GaJl061Z+vUr8YtUmgjBanOi++?= =?us-ascii?Q?uEZQYt0mHFVQhjW68Tp4ov9jptFj1+ddXI1f0AhEP4TqPrPKY2cZQWTbv/9f?= =?us-ascii?Q?h2HCW6L7WVfz4dKEIrzqHGccFGOD6X2dzDu1MeqBJN1gYzTt0b6IETLlAEQv?= =?us-ascii?Q?MnM8Y3NAF4RcEWGSzmTgvQfUNdQeCEV+wOacuCM6OPKKen0sQxWgFt9psQju?= =?us-ascii?Q?n6oAs9C9exgiZ3u2079vmt47hxLH9xlRtQzl9ZrMAURHiNmYInwrVTFLGSpR?= =?us-ascii?Q?vmxksu9uYsAt3mQ4L6aRmFaBcVpXuiS4IXvsFAH3it5URVBMh6KyVV4udRbm?= =?us-ascii?Q?bbX2vVTcVFTl3RjXBQ3V3e/QQITRhEudUx+dWO7FlaDdsYpePf1za0SJpNYT?= =?us-ascii?Q?g4JuP5q88GbVD7PQrP4dWatiMsSITU1I9RNPdp7j?= X-OriginatorOrg: suse.com X-MS-Exchange-CrossTenant-Network-Message-Id: d13e068d-bfb6-439b-1a1b-08daa481df3a X-MS-Exchange-CrossTenant-AuthSource: HE1PR0402MB3497.eurprd04.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 02 Oct 2022 14:24:53.1709 (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: S9sAFIllG8zGqpP93cJORIB12Q7TyEQZcZY/iqVgaKDisJHhWbBhH0GODyqoPcIEysil+hxvqbGLGpCrcoRt8g== X-MS-Exchange-Transport-CrossTenantHeadersStamped: AS8PR04MB8738 Content-Type: text/plain; charset="utf-8" The function mptcp_subflow_process_delegated() uses the input ssk first, while __mptcp_check_push() invokes the packet scheduler first. So this patch adds a new argument named ssk_first for the function __mptcp_subflow_push_pending() to deal with these two cases separately. With this change, the code that invokes the packet scheduler in the fuction __mptcp_check_push() can be removed, and replaced by invoking __mptcp_subflow_push_pending() directly. Signed-off-by: Geliang Tang --- net/mptcp/protocol.c | 22 ++++++++-------------- 1 file changed, 8 insertions(+), 14 deletions(-) diff --git a/net/mptcp/protocol.c b/net/mptcp/protocol.c index cc8e67543e76..bbc43212a20f 100644 --- a/net/mptcp/protocol.c +++ b/net/mptcp/protocol.c @@ -1593,16 +1593,17 @@ void __mptcp_push_pending(struct sock *sk, unsigned= int flags) __mptcp_check_send_data_fin(sk); } =20 -static void __mptcp_subflow_push_pending(struct sock *sk, struct sock *ssk) +static void __mptcp_subflow_push_pending(struct sock *sk, struct sock *ssk, + bool ssk_first) { struct mptcp_sock *msk =3D mptcp_sk(sk); struct mptcp_sendmsg_info info =3D { .data_lock_held =3D true, }; struct mptcp_data_frag *dfrag; + bool first =3D ssk_first; struct sock *xmit_ssk; int len, copied =3D 0; - bool first =3D true; =20 info.flags =3D 0; while ((dfrag =3D mptcp_send_head(sk))) { @@ -1612,8 +1613,7 @@ 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 + /* check for a different subflow usage only after * spooling the first chunk of data */ xmit_ssk =3D first ? ssk : mptcp_subflow_get_send(mptcp_sk(sk)); @@ -3195,16 +3195,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_subflow_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, false); + else __set_bit(MPTCP_PUSH_PENDING, &mptcp_sk(sk)->cb_flags); - } } =20 #define MPTCP_FLAGS_PROCESS_CTX_NEED (BIT(MPTCP_PUSH_PENDING) | \ @@ -3295,7 +3289,7 @@ void mptcp_subflow_process_delegated(struct sock *ssk) if (test_bit(MPTCP_DELEGATE_SEND, &subflow->delegated_status)) { mptcp_data_lock(sk); if (!sock_owned_by_user(sk)) - __mptcp_subflow_push_pending(sk, ssk); + __mptcp_subflow_push_pending(sk, ssk, true); else __set_bit(MPTCP_PUSH_PENDING, &mptcp_sk(sk)->cb_flags); mptcp_data_unlock(sk); --=20 2.35.3 From nobody Tue Dec 16 03:46:14 2025 Received: from EUR02-HE1-obe.outbound.protection.outlook.com (mail-eopbgr10074.outbound.protection.outlook.com [40.107.1.74]) (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 371AF33D9 for ; Sun, 2 Oct 2022 14:25:03 +0000 (UTC) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=Q7sI7V/yY96yR6ep7yjkeE7AgBp5O6mrW9lD/7RW28IuIQVpBrqSnzMk7IzZ+DFFvutAp9ITb1U76nTySyj8Vx0x6JfW5XpvRW8M4PqCyTVMIb/gHTGrgF/SmB0xkE38/6/gE+2pagK2Sh9n8CZrpneQjNbmbUmi62ZS7FaIYRU9O/2KMrUQMpKdovPZgmOubesc1ovTiGVj9xu8OAmi3tvmfiPf9phk0dsUWcewHpFeG89Eybf4f0HKu19D68sw1+0V1L5PvaVLmkSScqrhmspRSoAEgz+jqS3mIlwxkhO87LYRpykIUPoJzSGvekhq/+gQ7u9roaXLwNe6Wb7tew== 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=0f+Yk9vA/ZIZN7Kpj+basZnNz+yGimYLJKTmcxOvwNQ=; b=IcDHzb9p18Wa5RELpIisbnzAiWpCdcBMWrdQf/SCzST+OZTpaOev0P8pO1xo5Itq0myTNHSiCmz122mz1pq4U60DHIY9h3kOHtaBBKvW6pm5tt+HZH4fq6UAGPQ4sJ2lcqYqiGKZsw4hdHY7Fm+O+YSBEXMqcsg/JNBCdivE9WtaKPzA1HHz8roffA42Vn465JNHkRBYKOgsWQN5Eau58pnUQUpp4i4DLgjo/+zzAwm/4/pDf1Rntpmc44GS2ZRSYvNtJxZDGgsdV9h0lsPk11RF5RYWk3Eb7olFRmBYiiD2u/ZWdlIPJVP+ZPPF9d+xTjdKVgOpF+3AKmpzVqzrsA== 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=0f+Yk9vA/ZIZN7Kpj+basZnNz+yGimYLJKTmcxOvwNQ=; b=jufkbm5yGxDY7d0hNILH4ZQ6mMzAF9mn88X7X//vrnCkootefuMQgbv95DP25qudetNtHn7elORz1BmlTozvF/NxxOXQzopG/r3n4+fYlA7diWCTrds6PvkuQlTAYFdLN7Ewrtynw0b52t7g0D/bZcD4dD7QAKKeO3J/ZyRdzvdNO3r9zXoi/l+zuNcp3HkvvFIsqWiF3TtJb/v5BOVG/N2jNgofDty4fXESNF5gYNUgxmqn0oHItinsmbJjhw7GQm6L+EFo1PYoiEFw4QaVMYtBue3D1/Bho698iYaVF8/27T7BcUUcAG8kOGFEOJNlZ0hSUZQVk4Fa4af190zS5A== 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 AS8PR04MB8738.eurprd04.prod.outlook.com (2603:10a6:20b:42b::19) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5676.24; Sun, 2 Oct 2022 14:24: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.024; Sun, 2 Oct 2022 14:24:59 +0000 From: Geliang Tang To: mptcp@lists.linux.dev Cc: Geliang Tang Subject: [PATCH mptcp-next v4 03/11] mptcp: move burst check out of subflow_get_send Date: Sun, 2 Oct 2022 22:25:11 +0800 Message-Id: <8beaaa2c182775909a6040433497b1b69ef882eb.1664720538.git.geliang.tang@suse.com> X-Mailer: git-send-email 2.35.3 In-Reply-To: References: Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: SI2PR02CA0024.apcprd02.prod.outlook.com (2603:1096:4:195::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_|AS8PR04MB8738:EE_ X-MS-Office365-Filtering-Correlation-Id: 32b52473-402f-4507-8e62-08daa481e2cd X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: Dx6wge7KXQk2DVutpKYBLxgHJE6UDZFx5yP6WsCSIo3ULPb0WtIYWD1yiVV+uTp96VKiCwi3/hUDRzjCf3+UuGH7ZaiyyZnNZFdKT7wOagdHvwr8NSMyRnv7Dr/gD8q/9MEUga3XPTuTtBB9r8C91shJnNWQGg2f/+pFwy1sPSf3OAn+Ko4x5OTE1SAwWPGiVLqBU2ORSk9RClU2RPMImAQ+Q5bjiSp2OhKGyM3rPTNOi1Mi98vLkmux9Ited3DXcDu5wXTlC6G1bfe77TIWruncvsXHaZFTy+U938crTLnyoQ0OQZNigvrw1gTlDpQdCEwuPIqN3mAnw8ZMM9g/ReS3jUG8AXGMwKXV02eo3ljj7WT8/JC1yabc1QqGk8DaJt/p/pl7lP3lS7DDmX4zIAHJvHSeAGZUP6R7Ibp5a3Y0fC/xVVzharEkxE284I6tj+hwgLvsDdCSAvE+6pqJAaq5GdpV2DOB2w+c9KMx7uggP3RumnX5Fkh5J3sJ+tJ5q+T/AKbUTfdndgaLYVcHEI8O9X32f8ciPGzibVbVY5gjiBTpG4cDCu3JT4vhGEjgz1W9jvM14mkDH+6JeMMEylZxKwzsRtHfBbSVYHvuw38yicd0dxCX3MnywpKTEQSkWOnl07MtCduHCDpCW8cGhpNr+WGvB+dqRZhOhac9DiOE6G0SdZ0MKi0zl+WhebTkTAq3pwF8MNSpC1d9rbLGyg== 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)(376002)(396003)(366004)(136003)(39850400004)(346002)(451199015)(186003)(86362001)(2616005)(83380400001)(66476007)(38100700002)(66556008)(66946007)(478600001)(5660300002)(8676002)(4326008)(44832011)(2906002)(8936002)(316002)(6486002)(107886003)(26005)(6666004)(6512007)(6506007)(36756003)(41300700001)(6916009);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?E+z987bV4jUW/pUZl80MOwsYy5tfC6LRESSe/H5DmzfHUpi22/UHcsyhMs19?= =?us-ascii?Q?TMzk2CW5P8/wxRG1HzE+fJpovg4QdPT4E3+IxyBRR9mmexWB2C4P2IbyRcXT?= =?us-ascii?Q?iEfagZwN1Q0aG+1kckaFD2CnHULf6Lxt7yy+8Pm2vGUwczJ9iYJipsJ6nryg?= =?us-ascii?Q?F9mNBri13FUkwdU2XwFZQXF+938BSO/K2VkxOzkaYexrKjEIMx03U5GjpwLd?= =?us-ascii?Q?DyYqIFY8oZ3/T0zugH3MO3QZ3ruTnwE/WA62Eh9Uq//kL6lphr52wuY6mytD?= =?us-ascii?Q?jn8zyZFghDl1wByctvnjezLp4D7I+ZoO/M9EUPfLpvqkDIw7SmM87lqF920F?= =?us-ascii?Q?MKPoVSX6GmbTdoRozrzjvhinIX3QvdUvX8Lpc8NPP77NBRfvXLlJ/FdB57pr?= =?us-ascii?Q?LXs6lsoNzkhleX5Cq7Q07I7Rmprqf0rQ4j5xrSAFUFPDLTWL3l07RUcpemsL?= =?us-ascii?Q?jSigQ12nrqTAx1qqeq04nmRZBRuuUARYnvN/EP2rA86lAVMvPwi3VUiAkeQn?= =?us-ascii?Q?TyZyOHtcuhQFvN6VsgxAXkLThpEMRoKhCpKxC2Wv8K9mw4odTT3KSjTyl3Sd?= =?us-ascii?Q?mU3Su1AQc+TV4QH25TjYxzIDBajIM7/qVgVdw4kf7zEYFKTVUt5C2RCB86xv?= =?us-ascii?Q?VmdNJrMcFa2Ydn449pzaZhgYhTlPR32QbQ4e1+KT/zKiK+cBPUc58DcuDXRK?= =?us-ascii?Q?5EhN+ZfrKUvP7VAXYlutp4Y0tlIlNe7viKhujVdScQ4WgWG/UQbUFF3xEis7?= =?us-ascii?Q?xlQ2xbndAwAveysgtFZ/OVWfpXL4rWFo5MKJFMUI6IYvBJn1qvd2iLcF/YWg?= =?us-ascii?Q?MrvQx+SfaF40yAQmBo4bxMBI6I7geWuZdTVUZCZTC/yLO1LB3IP712vdDbv5?= =?us-ascii?Q?BXvplvQFIyPpIWwSTrPT41f5iqF+fh0LbVLlYCcceHaz4ICwQDyeTAL6EEjw?= =?us-ascii?Q?kmbXZtu+87s6qlBDVrXX3c1YkM4/G1ulRTC8mLXw0XRtUoPpKD9pZBARq9NG?= =?us-ascii?Q?HFe9cZflU+VmtQC8m6v9yww22Dnwb9Yykl5abZOUb0/oASsr3LlLX/lJYiom?= =?us-ascii?Q?cCubCl6WYtJCkMO3ir6oB74U7w2Fj0W0aU0MtOqOs/Z/k3g8EhULOjkH0u+n?= =?us-ascii?Q?VGcWpJ3itgs3PZnZt3GFMYwhfzKBquin1eb5erNp5HDBPlbZUnlCrzq2pnia?= =?us-ascii?Q?QJnIePeXNKO9PP/eD0H2wkJyTfM3wZgSdVpj8QwLFGrFZdnNr445sV+zKMbV?= =?us-ascii?Q?9LjFTmNn5GREPVwqZG2dseFRKYTEAoqUd+cjgbppd2ddoRfknJIj33l/Ftni?= =?us-ascii?Q?Mn6DC9I/A3X7djxS7bsj7iBPacpQsNqvPqaxr4UpvgcBOm05hqsSLp/VJD0n?= =?us-ascii?Q?hqpgvREUVqzYuPP+fy2LayvyNz4yiqla6ETLSnwrzf9fmgsvzdHKyd23LOfo?= =?us-ascii?Q?nSHJL6fT9H1qsBBv+TJshZgpKoRblgCPgeyn/90goBGH05FSmz6PZS0tetFm?= =?us-ascii?Q?+DmmUFqk//8X11uKtZjDOS6b5/ALzEBF2cLT8UzIMJfO5bSqbcwSDOpSSd+G?= =?us-ascii?Q?IoRnQ2ggbrHZ+K+GQXrP5ZptnxFZAET/gufT6atI?= X-OriginatorOrg: suse.com X-MS-Exchange-CrossTenant-Network-Message-Id: 32b52473-402f-4507-8e62-08daa481e2cd X-MS-Exchange-CrossTenant-AuthSource: HE1PR0402MB3497.eurprd04.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 02 Oct 2022 14:24:59.0142 (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: wxM7s5z70XLvFahX/74i1PW7ZeskLKeYyAl47r019kmroAqnD9ckWVNqI5w9rhviyBCmyE9BltnrQkJINTKnRQ== X-MS-Exchange-Transport-CrossTenantHeadersStamped: AS8PR04MB8738 Content-Type: text/plain; charset="utf-8" This patch moves the burst check conditions out of the function mptcp_subflow_get_send(), check them in __mptcp_push_pending() and __mptcp_subflow_push_pending() in the inner "for each pending dfrag" loop. Signed-off-by: Geliang Tang --- net/mptcp/protocol.c | 27 +++++++++++++++------------ 1 file changed, 15 insertions(+), 12 deletions(-) diff --git a/net/mptcp/protocol.c b/net/mptcp/protocol.c index bbc43212a20f..785c52b738cf 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; @@ -1477,16 +1469,13 @@ struct sock *mptcp_subflow_get_send(struct mptcp_so= ck *msk) =20 burst =3D min_t(int, MPTCP_SEND_BURST_SIZE, mptcp_wnd_end(msk) - msk->snd= _nxt); wmem =3D READ_ONCE(ssk->sk_wmem_queued); - if (!burst) { - msk->last_snd =3D NULL; + if (!burst) return ssk; - } =20 subflow =3D mptcp_subflow_ctx(ssk); subflow->avg_pacing_rate =3D div_u64((u64)subflow->avg_pacing_rate * wmem= + READ_ONCE(ssk->sk_pacing_rate) * burst, burst + wmem); - msk->last_snd =3D ssk; msk->snd_burst =3D burst; return ssk; } @@ -1579,6 +1568,13 @@ 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 <=3D 0 || + !sk_stream_memory_free(ssk) || + !mptcp_subflow_active(mptcp_subflow_ctx(ssk))) { + goto out; + } + mptcp_set_timeout(sk); } =20 /* at this point we held the socket lock for the last subflow we used */ @@ -1637,6 +1633,13 @@ static void __mptcp_subflow_push_pending(struct sock= *sk, struct sock *ssk, mptcp_update_post_push(msk, dfrag, ret); } WRITE_ONCE(msk->first_pending, mptcp_send_next(sk)); + + if (msk->snd_burst <=3D 0 || + !sk_stream_memory_free(ssk) || + !mptcp_subflow_active(mptcp_subflow_ctx(ssk))) { + goto out; + } + mptcp_set_timeout(sk); } =20 out: --=20 2.35.3 From nobody Tue Dec 16 03:46:14 2025 Received: from EUR02-HE1-obe.outbound.protection.outlook.com (mail-eopbgr10048.outbound.protection.outlook.com [40.107.1.48]) (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 E38F033D9 for ; Sun, 2 Oct 2022 14:25:10 +0000 (UTC) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=Ow6/l0TKOvwZOzn8GGnlqg08FadhfSD8WLERVn+hO8d/FluMIHNbVwA63uleYhljUvMxvm8365odpafYxe296wWHvglRP5Wy6aWdXQV2vnChrqXiH8msy1m8S5ba8k+39KUB4Izxnn8toH3B9AL1Y1HWEKktORxtvVbp8Ndp7kogAEwLg3amunoXq9nELT4isO4MpHM6yNYMun+uxYxBaoB7y3FjLvtTRcu0RcthOHRu5P12JfuK9+aQjPl199YDmaQE9TTthR4OOWxoJjYaXRJkTPP3IJhAHjhbyXmfvZOjH2NS7+VDSTY3jWc2+WvXz+5oBZ6ruxNm6eSrDvuTgg== 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=Ic3vhbiuGADqE/Jl/P8oLe/c1ICHq1UyU1Bm/nbJ9sQ=; b=OJy7e9wPwzCEScgA060MXaZD+cdw5MopadDHQTcBL5mwplksuGonb0VprSZO3uSCjqkEw3QaJEOyXR9fpTSHPwCdbsUi82uK/lbHj6gcMZZ+ng1jzf844op+LCkQo4ibd+rm3fkTCiq2nH4r9MEZgOuvprFlE6/1OeGBmlcxllYB28nK3cc+PVoFC5JoNkNxhiiUNwIYrf6MOMfCO0DwdOZXiaZbBfi3Ty3QO6aQo3u/DDMpntf88IvCtCRP4Zez070JiBbWLADgsqaQPZPLiVbiRSoUI9Zw+/R4rQAyBhv5TTzlOO7VigSXXmiLbN2T2WM4jkiJdfJO3ipZwVuY/g== 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=Ic3vhbiuGADqE/Jl/P8oLe/c1ICHq1UyU1Bm/nbJ9sQ=; b=dM7kocLdRSgrfSK8/F5slKIyv0HH63kTYD4Xk/J0Pbm5v2Uw9O/ETG0CP5CGPWk5pp6gGtB8ukOAVAgZqfFqzJe7xmo3gBamkty5sva5FsLGcvR1PtcMJirBp0t3cs6RNbJVSTVVIAl7ZxxQFD8PFfqvVlTxvSCQbXLg/RhDaELMknCKLw9MN7i2jsi3zE9ZnqCgsWOAB1dEfwHRbVsAQ3y35fxfQGA7YOOXRwo9JTckp2jszJSVib95RD/CEGra9DSLo4mqf/geyXIzH1gwgWcqDBzL/9qZzumdkcBEPrymC7MEO2OcMu4W00U8hSl4y26S7/NfHtqHR535pr0bmw== 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 AS8PR04MB8738.eurprd04.prod.outlook.com (2603:10a6:20b:42b::19) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5676.24; Sun, 2 Oct 2022 14:25:08 +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.024; Sun, 2 Oct 2022 14:25:08 +0000 From: Geliang Tang To: mptcp@lists.linux.dev Cc: Geliang Tang Subject: [PATCH mptcp-next v4 04/11] mptcp: refactor push_pending logic Date: Sun, 2 Oct 2022 22:25:12 +0800 Message-Id: X-Mailer: git-send-email 2.35.3 In-Reply-To: References: Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: TYBP286CA0029.JPNP286.PROD.OUTLOOK.COM (2603:1096:404:10a::17) 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_|AS8PR04MB8738:EE_ X-MS-Office365-Filtering-Correlation-Id: 8c5d8b65-fb35-4b7d-7f40-08daa481e84e X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: fwoC74mpLdJkqUHBitv+8L5p8iMXyKl5uNXYXs3vQSAkcCIsWSTHBxcFVs2W/JNV1SkMiIkgUTFSrxZQH7/fDhWz43GkbWJKIDlQIYPwCd5OjjBD22CSmW2nP9ATejxix3jB5neKs6eZHVKXIBIUTGlMxKOS3V5zT2k1QbrpZ8Ybdc+5gzyc2Js1/UejeBoUB/KG2iGFkQUpEIT/E+Y1i3DJMg76Pab78WQCKn35H7Vt6/fARQV24Xei6wdZuvva92diZ47HJ57/7Mq9eh5tfPkuUzoFrdRalS1BUXoMZSOCjllp7vH0mE14WNFq0T73tSEDUtmN5zR3xnsVR01X7o8BwCh6Dgy6HX6Wf3ZujzR/4yYGKdV0vzyGiUM79CUEKuEjpsi51uFEtjPq270CB5x47/qoLf1Bt26tJG+6jrqO5vFVsCAczkGlrhNuoYyw3vunT+C/a5/iuttT//mVduIBhjiv606L/ci1C1l+Hmd/XxNAbYhb54CMpeHOguzDEHWnBga5hc+joIw+vzTcbe6L7h7PFhfotGieL5NaUDRfwqq1W2dDdJUJhxZXbfeNvfw+0uC1IT7R8PPZUhguejkdEFnHhi0bW1moWNSblavcF11kBwNiPWJCT5uU/vLpKdPcrYZTRVBKQK9LokhOK1lebSWGV4Ajp/1vcooo644lEeXbE+JpzF7YvhmwxTdfYLkBRQI2EH2aJBg9lKb2OQ== 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)(376002)(396003)(366004)(136003)(39850400004)(346002)(451199015)(186003)(86362001)(2616005)(83380400001)(66476007)(38100700002)(66556008)(66946007)(478600001)(5660300002)(8676002)(4326008)(44832011)(2906002)(8936002)(316002)(6486002)(107886003)(26005)(6666004)(6512007)(6506007)(36756003)(41300700001)(6916009);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?3yyqZasU33FlL7E8fFkz4rOOyHFxly4GY++5fqoO/n2mlIHSTS2gITef4jQk?= =?us-ascii?Q?UhUwBPTdMbw/buF3AWAJnI1vhhmGSkAn22i8JcwoxhVDiNwPVhMuHctWqcv9?= =?us-ascii?Q?cXgXgO2sHFjcp1v06cCt+oiLqNZDscab8UeojftWNb8jlk2jicsmbfyHsd8s?= =?us-ascii?Q?fItr+H7JeF/BF69jgd79ziVDI33vLciNOI/7PGQKzLzIktk3Mj6wyEqGQUCM?= =?us-ascii?Q?XQiD6jTRUZWRBKfHt14niNHzRX6nEEshJLP2LQ0oPYtWsTkID5hx+SKNu0Y5?= =?us-ascii?Q?ITykvkjyg0yTWcZhRSOZr9VwFzOhtB/rGDuHKMA9yri48UUORK4sh/Q54sih?= =?us-ascii?Q?oI+jTsp6yqDKk+qJJGGsXxonzWfEUC7n6zUq66UiR+0IzcopUnQiiGCOcfW6?= =?us-ascii?Q?ZOdA95WFlkETvBrHtI7q5MQSWZKVnP+G+sc+WPduz2P4DRXNaKoEXLVXLCDN?= =?us-ascii?Q?EFpY1G78eYM8+FTYBd2r5olQAoVsTKhEJx1RdsP2BMUXB9San8lMZoCdvy5M?= =?us-ascii?Q?CJLhOIX2iIZZMg3gZJWWfBOExT5jdh5Xp2aC/qfpSz9WVgNYOpFtq69jvG0N?= =?us-ascii?Q?gmko5HYK924Gvon/dnpEjKZoyD2H/62aHF72gr+PZkwxMtq7Yof1Hh1aNzvP?= =?us-ascii?Q?2OajDEhJC8RxHO0otwu9Goiwk03ezGBHPoYRzpy9OfdgqtGH1x5LuDUf8Llc?= =?us-ascii?Q?xVwoO/pgpdANfKqQ8dSriS7gxoDSieOdvIKqEoJQb0pBXdhHSELiCVM1qCiB?= =?us-ascii?Q?5UuegB5z+lPaQzRlhyCpCLjmHZ8TdXzkv2wuDchw/v7mYAJlVmsBB7O4J2vJ?= =?us-ascii?Q?iGHR3jWwjCCCo+zt+JNc+ZUhPHtt9gyyiI8cOLWp1k333I3vyZB+DsRa5XnW?= =?us-ascii?Q?GgwOJqgZoo7VZSbqm9xK0pHGkd52IN+lnqDHKOCQML3gZiXFulIwuqlA2Xbc?= =?us-ascii?Q?HF27QMRAIGC/I37o3VGk23lndi0aiLjAKBpJ4vMriAuNeJYv1tZ20IJLPuIV?= =?us-ascii?Q?2ZIkGJcFqQf9iyfEmMgXy/mepKNd6cbjoAGYHOP7b1g9I5wQcUJBrUc7/IsF?= =?us-ascii?Q?FM6QnQgvYvMJDjA7EDIyWuBJ+YtbEh3vZIsqmmXKpOuL3XuD7QbAseRvNw2/?= =?us-ascii?Q?EOpg6fjt3sPPWtrI/7XM1N8ZR6JOGCrOBQlG/8ZSlu+g+m5P3ggm7n5msze8?= =?us-ascii?Q?Gw7K73Hzlrr29uzyiCPz2pLiGFB2xrdgj6fm6MWmKLo72zm1N2CCccTmaDns?= =?us-ascii?Q?gNHkmzT5XZkDjGYRamZ+lzWBEh/BEz14oyAq2vC+gJb2MDTwKGoRvingBLzB?= =?us-ascii?Q?ify9SSa68EEbL+abzDyl0kdwIiiQwA5ipY7gTDu9dmBvnveSG8ukdN4SPdRt?= =?us-ascii?Q?KXn9crnZthWa39Zzv0jUVl85uuCC7uQXgsLNBLbkegY0m4iwHPEh2YRc132s?= =?us-ascii?Q?sqnjh5tgI0s7FwoQovuLEBVjuk+w4xK8htW73TIY+zPWPL142Ope2PayqKzq?= =?us-ascii?Q?vkY/IzIAZQyEU0AU5Hpz3iH1DbAUeLjuCY7CSq2lTtBc1fSsWve0KovvilBU?= =?us-ascii?Q?2oteglPbdvGchn4Yq9P7QjzNQD3YiRXE6x+Pd/k4?= X-OriginatorOrg: suse.com X-MS-Exchange-CrossTenant-Network-Message-Id: 8c5d8b65-fb35-4b7d-7f40-08daa481e84e X-MS-Exchange-CrossTenant-AuthSource: HE1PR0402MB3497.eurprd04.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 02 Oct 2022 14:25:08.4822 (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: RHCu9JTXMDPYevmG1e+M1LxAH2S59Zf/4zMrqARnIT+ilDYQH/CjhaU4vlR33/XZUi1PXh9O81MgkfQ4UMKQjg== X-MS-Exchange-Transport-CrossTenantHeadersStamped: AS8PR04MB8738 Content-Type: text/plain; charset="utf-8" To support redundant package schedulers more easily, this patch refactors __mptcp_push_pending() logic from: For each dfrag: While sends succeed: Call the scheduler (selects subflow and msk->snd_burst) Update subflow locks (push/release/acquire as needed) Send the dfrag data with mptcp_sendmsg_frag() Update already_sent, snd_nxt, snd_burst Update msk->first_pending Push/release on final subflow to: While the scheduler selects one subflow: Lock the subflow For each pending dfrag: While sends succeed: Send the dfrag data with mptcp_sendmsg_frag() Update already_sent, snd_nxt, snd_burst Update msk->first_pending Break if required by msk->snd_burst / etc Push and release the subflow Signed-off-by: Geliang Tang --- net/mptcp/protocol.c | 76 +++++++++++++++++--------------------------- 1 file changed, 30 insertions(+), 46 deletions(-) diff --git a/net/mptcp/protocol.c b/net/mptcp/protocol.c index 785c52b738cf..296b7135e9cf 100644 --- a/net/mptcp/protocol.c +++ b/net/mptcp/protocol.c @@ -1519,67 +1519,51 @@ 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 - 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; - - prev_ssk =3D ssk; - ssk =3D mptcp_subflow_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; + while (mptcp_send_head(sk) && (ssk =3D mptcp_subflow_get_send(msk))) { + lock_sock(ssk); =20 - /* 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); + 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) { + if (ret =3D=3D -EAGAIN) + continue; + mptcp_push_release(ssk, &info); + goto out; + } + + do_check_data_fin =3D true; + info.sent +=3D ret; + len -=3D ret; + + mptcp_update_post_push(msk, dfrag, ret); + } + WRITE_ONCE(msk->first_pending, mptcp_send_next(sk)); =20 - ret =3D mptcp_sendmsg_frag(sk, ssk, dfrag, &info); - if (ret <=3D 0) { - if (ret =3D=3D -EAGAIN) - continue; - mptcp_push_release(ssk, &info); + if (msk->snd_burst <=3D 0 || + !sk_stream_memory_free(ssk) || + !mptcp_subflow_active(mptcp_subflow_ctx(ssk))) { goto out; } - - do_check_data_fin =3D true; - info.sent +=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 <=3D 0 || - !sk_stream_memory_free(ssk) || - !mptcp_subflow_active(mptcp_subflow_ctx(ssk))) { - goto out; + mptcp_set_timeout(sk); } - mptcp_set_timeout(sk); - } =20 - /* at this point we held the socket lock for the last subflow we used */ - if (ssk) mptcp_push_release(ssk, &info); + } =20 out: /* ensure the rtx timer is running */ --=20 2.35.3 From nobody Tue Dec 16 03:46:14 2025 Received: from EUR02-HE1-obe.outbound.protection.outlook.com (mail-eopbgr10059.outbound.protection.outlook.com [40.107.1.59]) (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 77FE133D9 for ; Sun, 2 Oct 2022 14:25:22 +0000 (UTC) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=FU+TJdnHZg+vMwjcfPaBX5xcPsAd+69OfFQT/ZyZIHrtKlxfPpzNcVmZ3l7+74QIBf5xrfFdAqHnxtQzt+OxpTum57sI41wXICOY7y097cUBQQlxn+CFfoEm5wgYF0L1n+GDFxmx7AOgCbWR6UgSaRNE2O27rmNo7kxftNfLS/mtXUAN6p3+4o9+DvZP7jJBOgeFAljiU4H9m6nSmYsZ11mhWLo88HEW80FeeodV29UPaW+GZM62bSr/V9+ozwGm6TJy1hgHgnCAi33CqXUcF2ldaNhBwLwW4T1l2NgslYSoeHFvbB/t0W7GXj2EtaIswQ2+YlZCtvuWYIm9Ot0ZxA== 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=7Op99eGQEfKnc39GRogn6pBWdookKxktCy+LmZeFmWg=; b=NwiD/3UIyhs3M3aDbPJsX1qinWlbfxmlOiFVKPG8fSql0hBZpP2JKPnqzoQKYUuQ6rYnMcdFYo7ur5R6Aso5H3hkT7Tqbx+fLt46EOoUpBv5YigT/bt+fDRjDQgpmyRjAngCdkwjR/XE21WzQLSKNK9tQ820dP3Yr5ZAUSoObki4MWg+C/LYXk0sZ4JkeSdlHTt1PCGVdmrKpBV934dHCauFJLQkL8vm+sZbSTDlN5mapvNhxjJGbreDxHwOqrHy8JYtmuB2AQk0+O+QRaKYeyzjUrxjSATxxFnVmZG6OhJ0jcyHPxR/r31shxhN4jisuE1gmo6rX8b1eewALK9MTA== 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=7Op99eGQEfKnc39GRogn6pBWdookKxktCy+LmZeFmWg=; b=Bmw5HXRLcHiHDXeQeS80C/jsBZBU74IFPT8VQdZzm77lShEj2MTcVpz570x7Qa9pj2am9Zcy93yofqi54tKDEGmmG1limOKoSi1BXVDSFE7tpIZr6RfBP/Fi6p5LCRWsxO5PHuYtPFvl7J52CVl0Uo/vF5XgM0Nneta6zCvDeHDhNzXDOQfyta2mnPXiv1gLOrSgBxDOjlyxergkU3segbC6DgUukx7TBHpQXw1mpfH/8vrHGrdGJpd/W7j0qcynoPSV3Xh2SN6Sk2tvAfwjF6Qkk8S5x/JKbxmDsiV7ligXg679PEDdQ5NrdD5XQbffh4VjRmFTXU7oQBEtr0LlYg== 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 AS8PR04MB8738.eurprd04.prod.outlook.com (2603:10a6:20b:42b::19) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5676.24; Sun, 2 Oct 2022 14:25:19 +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.024; Sun, 2 Oct 2022 14:25:19 +0000 From: Geliang Tang To: mptcp@lists.linux.dev Cc: Geliang Tang Subject: [PATCH mptcp-next v4 05/11] mptcp: simplify push_pending Date: Sun, 2 Oct 2022 22:25:13 +0800 Message-Id: X-Mailer: git-send-email 2.35.3 In-Reply-To: References: Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: TYBP286CA0047.JPNP286.PROD.OUTLOOK.COM (2603:1096:404:10a::35) 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_|AS8PR04MB8738:EE_ X-MS-Office365-Filtering-Correlation-Id: a4b3eb8d-2aa6-4ecc-5d92-08daa481eee6 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: SDB84qE9Ywi+fZx1GHE3R8wanI0C9sGqgG7BQirxl6QgvX/8z4RNIcv5vY3kOvNqlc64YhPqYNaf5NtArnEhmaeuomMCDs1NcAyLldEf/5iV7VNydfKxTvo4cwpSNxP5xRbrKWQmV8Pk1X+L2Z3MLNfa6vLBMByhquSREYLqzkJXCX0+RrgRNn2X2xkpTAH9/9Bw98fnKHS+eelj6j7ckmnrW252yb2Tp3bVsqKFXjOC5VQvdcd/a9wmrcnK0j6YpNJFO3DU/gkGhftfsj76MXWQwU0n6k1S1eOh7f3K8B0xofQ9kW/GyDnZANON/f8L2tycAgrY0fh3sAmMyjnYSVDl+zxhkrcByt/eOOa+fCYHHGufcpVNh9XbiSqfILHYQ8ceTwRf0VGhtPVecYZ2MUlRXS96+7lruKQQJNEYSK1XIWPSSy36cQusRy761XYW5gn2uy5ODbcTPQQ4EqoVYwpZqUPtuyjuwHKpZ5zJJZKPXwyHCel4a9fwLasCjjV5JnEfvr/hiGu7COPWFMemX5ZpXIaFgESEgT1E/fI6cqDDYvFaxnOxL1Rtul5XTOe7OWNmd7/Ng9KGL/pHApqdFkoEZRe4qtJct7K59rro5topdoxIphu8IQUcRdaDmlZv0HLEnQutcvRjOHo/BVl04JVRgfIiK+smMfIG+of1zbBgxGKWlPdzwCA80YoQvVYlm/sxIyUSRCipYFoUdJ1XoQ== 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)(376002)(396003)(366004)(136003)(39850400004)(346002)(451199015)(186003)(86362001)(2616005)(83380400001)(66476007)(38100700002)(66556008)(66946007)(478600001)(5660300002)(8676002)(4326008)(44832011)(2906002)(8936002)(316002)(6486002)(107886003)(26005)(6666004)(6512007)(6506007)(36756003)(41300700001)(6916009);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?GxGyMa6rHkkjCPZLI7CGxK/K34bbU2NQBJ4PeKwLCeB9KlHbLYSkP/l6szZs?= =?us-ascii?Q?IA80YSpoyTosGKFNCZG986FGfvGDCSyyJz4R036xqr8oXwgY5ohs+JY/SN28?= =?us-ascii?Q?72RYxa6qjQch43ZxeSUl/TE573wl0G3Rs846i7Qet8qawtz8ibwvmOVNGRNq?= =?us-ascii?Q?AIz3eux9GolUJ+kw8ON5M0qQhJu9xsFTz8fJnCqQUAB5oAqkGUv7L5HIJki0?= =?us-ascii?Q?7w4NxYb1Y0woSGGqcboSJPYOQA8kck8JZgKIS49HTAiWYsG+gYARMHMk2bav?= =?us-ascii?Q?JrlVXcB9V8vuAzBhe44Ot0ldlx+y/oak8n9Qf6a0fg4SOncVrKdtyuMtUtGa?= =?us-ascii?Q?6yMMMxBRUmzraQQ5J+YJf2kbef0+XsDcwfXkdY89N80y2z7RLsoM5Wv3ZG5q?= =?us-ascii?Q?TvYhsjHv3Dx6B6u18/FLOU0eVIXU11BDtbaRmlutyDLUzn1JJRvhCiVpnjmP?= =?us-ascii?Q?6WvjODa1gqvnQXqzHYm9XwpOHjhRgNHO3DikGRekwPbD1FUkkmv9ntG3B7WH?= =?us-ascii?Q?/1+ROI+VymvZXMOsgMrbicvx6qvUj98PAuPN68VlHvrXzbMOkuxjloxoA0r2?= =?us-ascii?Q?bsWXtDNF1r0QV36efk9OnmBVUS5U6nJDOP+sHjQN/N6IdQ0zXy4D9/6RBUwS?= =?us-ascii?Q?U7UqHBXFKDP5GEe00dLJ/Imo6b/AFK3hGAh6dbK5IMKnEpG0OZFY4oASBsUm?= =?us-ascii?Q?TlpgBla+Ni/t00LjqVCybLmvTiJzylmpYvl9G5ixvmb0uFKQUvfR9LV75u1g?= =?us-ascii?Q?TeaPLngXcenj0iAW2bj6gdSeCMYQaNLEd7rUWAyVa+5TkfGIe7bshU194B0r?= =?us-ascii?Q?YQ6Zhnbfuu4X8uKbslHGH6Kasri5PuMgUBoQiJuHCSE2k4hUh+ja9BaC2tN3?= =?us-ascii?Q?wDLJFKNrz4GtfV0/H3rLvnPfyzpXfg2+qxoCI5mNG/Ln1zxT8RlXTY3nPs0r?= =?us-ascii?Q?e1J7r2xSpZpaDpaap8rJjiBvfGmENQL/u2iBHx2mYvIxOqgUDxgpzwhKbd2C?= =?us-ascii?Q?9DKbvJXZmXbm8Q8i17DcyQB5mPNJfhssexuUuJbMtAgiZk76tx99RdionbLr?= =?us-ascii?Q?H6MaUlIK+G0VArhaf0yNL8j93vYVTVu9ZmDiuTZKpPwVViCPdyFneMDiAMVQ?= =?us-ascii?Q?O9pkTWeQP/dyWRT0MD0WVSJW64kMzyYogjT3p4E0qUoIK8+jfEzuSlA4dLd4?= =?us-ascii?Q?RhGP5BSNzDKYGmjhNXP/SXJmRAl8QHIlurAJlMLoFJyVtxpqmHqjrmNDkyqA?= =?us-ascii?Q?weXDPy66f2X+n2sYt6mxUv9yk82ebma5Pcs14t1F7DqD222x6Cw/4EvS7n/V?= =?us-ascii?Q?y+iYgKSahXptmSeTzxuaoyKpSdiqaDal+Fx8R3g7XdUS0Adl2L2Gfhe4Sgjh?= =?us-ascii?Q?UP3kqMAoSrRM6N1B2+5Nw8Owsm2SR4DKLEtoN4H2aawlcyBOPNOBu6IgIlTi?= =?us-ascii?Q?WVpHY2W+eP9RtS/JoMOszCUtdO4DAYa1yI6FLNXuT8sffYv7YBN2bZx1EnMd?= =?us-ascii?Q?NjVy/SoK3HFzNxooruT06XX5uCGBABRFEMtLy4xAn5tJ66KRM9CNlQpalXO9?= =?us-ascii?Q?1xBBogv+6AgwniAP0oIUU5wG2xp56gpCV1YZC5Jk?= X-OriginatorOrg: suse.com X-MS-Exchange-CrossTenant-Network-Message-Id: a4b3eb8d-2aa6-4ecc-5d92-08daa481eee6 X-MS-Exchange-CrossTenant-AuthSource: HE1PR0402MB3497.eurprd04.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 02 Oct 2022 14:25:19.5282 (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: eCEOKDz/G1mN54rkavvkUXpoyLDnugsWcPsc0wS70gfYHbvHy3mGq5ZncE4PgtHSPrqmqjbDLHq8LupQoCjFcw== X-MS-Exchange-Transport-CrossTenantHeadersStamped: AS8PR04MB8738 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 __subflow_push_pending(). And simplify __mptcp_push_pending() by invoking this helper. Signed-off-by: Geliang Tang --- net/mptcp/protocol.c | 90 +++++++++++++++++++++++--------------------- 1 file changed, 48 insertions(+), 42 deletions(-) diff --git a/net/mptcp/protocol.c b/net/mptcp/protocol.c index 296b7135e9cf..66c97ac06a4e 100644 --- a/net/mptcp/protocol.c +++ b/net/mptcp/protocol.c @@ -1480,12 +1480,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) @@ -1517,6 +1511,52 @@ void mptcp_check_and_set_pending(struct sock *sk) mptcp_sk(sk)->push_pending |=3D BIT(MPTCP_PUSH_PENDING); } =20 +static int __subflow_push_pending(struct sock *sk, struct sock *ssk, + struct mptcp_sendmsg_info *info) +{ + struct mptcp_sock *msk =3D mptcp_sk(sk); + struct mptcp_data_frag *dfrag; + int len, copied =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) { + if (ret =3D=3D -EAGAIN) + continue; + 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 <=3D 0 || + !sk_stream_memory_free(ssk) || + !mptcp_subflow_active(mptcp_subflow_ctx(ssk))) { + goto out; + } + mptcp_set_timeout(sk); + } + +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); @@ -1524,48 +1564,14 @@ void __mptcp_push_pending(struct sock *sk, unsigned= int flags) .flags =3D flags, }; bool do_check_data_fin =3D false; - struct mptcp_data_frag *dfrag; struct sock *ssk; - int len; =20 while (mptcp_send_head(sk) && (ssk =3D mptcp_subflow_get_send(msk))) { lock_sock(ssk); - - 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) { - if (ret =3D=3D -EAGAIN) - continue; - mptcp_push_release(ssk, &info); - goto out; - } - - do_check_data_fin =3D true; - info.sent +=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 <=3D 0 || - !sk_stream_memory_free(ssk) || - !mptcp_subflow_active(mptcp_subflow_ctx(ssk))) { - goto out; - } - mptcp_set_timeout(sk); - } - - mptcp_push_release(ssk, &info); + do_check_data_fin =3D __subflow_push_pending(sk, ssk, &info); + release_sock(ssk); } =20 -out: /* ensure the rtx timer is running */ if (!mptcp_timer_pending(sk)) mptcp_reset_timer(sk); --=20 2.35.3 From nobody Tue Dec 16 03:46:14 2025 Received: from EUR02-HE1-obe.outbound.protection.outlook.com (mail-eopbgr10072.outbound.protection.outlook.com [40.107.1.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 E5A3F33D9 for ; Sun, 2 Oct 2022 14:25:29 +0000 (UTC) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=EgRQBxQpfPR7v3XhFL7OHrwnzTaKRkiP25UxYdBnjU1bJ6yQjR9ZpJN/hRqybjhXXYSLrBK9vh4IO7UJPRvd+YHZ/Ikd5BKy9uFWb4/1EatNf5G+6MlyU7LyM7Eh7lkc3CS2fJDDsqVVjH5UB1MRQBx65ioWEZ3yrb1OyNybCanVKt3MsaMcVjb8v4ZURd21I3na3Sl4k/oPsfiOvRPU1I9ziZA96ZnsyGBEj+cHypwfOREpfMk5RdJDIkfej7OO4dXq2uVnhE47iW++cja4YNI3WZrSA1f8jgeg45/eXZWLZCQXfTIdaDFLqV3CV6hC33h0e1pxKjnzWZY4/K3naQ== 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=69TInZSkQchlolmeTFEdcz1ewcDzvSfNkHMy+aE/5GY=; b=iEtli6bE7QbXCmK4B1SvzvKwzwa0AOzD0EXsBrAab7B8pm88aZ3wzkPw/UWUzsjd1yCbTiLusf9kABOgvpbFR1mCRjKFEfV+LyYOri2Atqsbu7TUWnenuUkfqT2KOirBwRgVszzNFnhVGuwe6Z+1+lJnmaVZ0Fyql/QFx3mrGyiOD/EUM03HWmYhZvAsdHUXOWxkgIp+CaraSXOhKCxebhjcshox8udH/QeLsk3IVDwrQH1Bd2VoB0Qnc0QnKLvwM42wLQL+0nW4RqfYo/jtXR9UNofhsE8h21R+AIyVempe/x866TqMpQu72k0uCp8X1BsDZGiMjycn+Pb4PHSn+w== 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=69TInZSkQchlolmeTFEdcz1ewcDzvSfNkHMy+aE/5GY=; b=tK52rTa61RoIAcIU1Mn9h8RmdblYVwBYulZIORISTXxTY+6tdPWYaoyP2r3cARnV0lRvuKtq42b5vj3FQmgO0q5hTKT21gByj+/Rf3xQSXD004k5qkNJMCViyUY7XoQFkvzpyiPaFvUKZdNSWP36k4w3zqmcsnbqVCqdHE0QGondAdTKOgekMb2H9Xw5YFGj4A4mZcS7NrsqzIoW93xgvHd7SagVNuPWquKiW4aWrVOqmDr6qAH1DJ02A4q31arp9uyRxXPsbraRNjdniwDyZLutX3Wcvy/22M00AdMDcl2u1gUndpalkIOyHH/AFa3kwJflUnGnKanvASF/gW/wrA== 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 AS8PR04MB8738.eurprd04.prod.outlook.com (2603:10a6:20b:42b::19) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5676.24; Sun, 2 Oct 2022 14:25:27 +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.024; Sun, 2 Oct 2022 14:25:27 +0000 From: Geliang Tang To: mptcp@lists.linux.dev Cc: Geliang Tang Subject: [PATCH mptcp-next v4 06/11] mptcp: multi subflows push_pending Date: Sun, 2 Oct 2022 22:25:14 +0800 Message-Id: <0138de3ef6d2e3678138fe4d875e73cf67227cb0.1664720538.git.geliang.tang@suse.com> X-Mailer: git-send-email 2.35.3 In-Reply-To: References: Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: TYBP286CA0029.JPNP286.PROD.OUTLOOK.COM (2603:1096:404:10a::17) 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_|AS8PR04MB8738:EE_ X-MS-Office365-Filtering-Correlation-Id: ab3d1879-d3c4-4895-1f82-08daa481f3b2 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: 7CbK1Y3Yi7l/f62Yw44ONJYnNqfeuBznPr+LUh/sA4ZKRNshtYcCEqkTGxC31H91hDn8xkqyPI5dg0RCC5ADJd78pmknEEPAkd9wYWNw8sMLCZH01wGCYm3KRdNVQOqHKOQICXZxhILgRM1cC+40q7OPDvnPrPXcKV9meOGvB5rkeVCWfEhCxAPnzvYubbHs7g76SGQimLmpIMXx6VSyTPP/RZkYf1Xa4VeLrnm7ZnAO2cWvaW1DBXJWZoOMgQ7VvfH/WSFGlCT1JMO3YxL5U0f3vGGBX81WADcS8FHNRvcYMx18FKMdula9r8JXHiXTHIMFqCBAF+DVYNTT+Sg2tUN3CM5yUpwdqGt3ypojil2dQs1hwgxI7vjUPQxcM9bgYGVa2dUbT0ABb5TNDf6DzFU3+AR/qwIaa2Ek8+zcagfmpP94E4qreUOAIz9SxT0Yuv5UpSiZt9dRKdfVI0o/fbjojRsbNRYEIKNyzvrLbQh9g9RZNAD3FKjI/cSiUchfOxcyOU+LLOg75vkOTPa1bz7r8UzCtSm01IeK8SU8ye10cQXuUCfa413eY9ZH+fg+0PvGwK9GTi0WSsPUlvnn8ezz52RyKJt8qzBhBprz5qJ2kJ6zn/3g3a0FpF2SctSNSXbpHYWSDDBOWr4jn0LMC/JfL6zTzBjcM84qmM6fbikXoKMGgJm5wmKIHx3DR5OR/qN98YCQrrR81IMyCFsx2g== 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)(376002)(396003)(366004)(136003)(39850400004)(346002)(451199015)(186003)(86362001)(2616005)(83380400001)(66476007)(38100700002)(66556008)(66946007)(478600001)(5660300002)(8676002)(4326008)(44832011)(2906002)(8936002)(316002)(6486002)(107886003)(26005)(6666004)(6512007)(6506007)(36756003)(41300700001)(6916009);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?fwrwOb50NI2QetA/9mTavx/pJ42E2NCixuAXIYWKJUqIo5oMBXB3xKqpEmeE?= =?us-ascii?Q?wEp0v0DfXsZ9nN2UyrRVl0qe5HstSqEDErQkVafei8+zan7XYQ0mWENgOTef?= =?us-ascii?Q?EB3/wuu8d4E5MG7Cuu9kkXb6/RzF4ge02Dqf+dNefmAcVVnT2RrtnK6YTHdt?= =?us-ascii?Q?5S6JbT118P9A4YF/vejEfEMInD3yLr7rVlRnV2D6cBPIxm7mtzdSLTRHZ/Yj?= =?us-ascii?Q?85374xncDQhjEAaCWXDdyXOnB//6gGvCIIIhZY6o6he1awQNs42OsJaCLgra?= =?us-ascii?Q?QwMIt7AEX0FDdrZ1nOpRNh7+x7A8poEsxJW+xKEzbIsM5mahpqK+zd3pQUEo?= =?us-ascii?Q?3cQTeAqDf3u5YqPqxGTplhkyXGCrvPCpFTpR9FUg+oQpwS3pQ6brcQO4zH0S?= =?us-ascii?Q?EldV18i1SmF0FQShsIUtNXZrRvx4u+pvWL9NSkz9kUMrWrvPxaoyEcEQqttr?= =?us-ascii?Q?MipRFLFvNbpVKOJFR32n7ImNhhRiDZpIG0BWe6GMdu8zHrSY/+7HZttEO7q5?= =?us-ascii?Q?RzAjWLKNgzG/MfUKc4wYffBa3+iRQGrt+FCuhPAl4vnUN+PctgZ0VbYz+nuX?= =?us-ascii?Q?xxux7CAB4WtJx6lI6niW5nrJhp+6kOROJ1VGFh4ETv/8uFCDd/DmIDwYkjz8?= =?us-ascii?Q?FuCnKRYVUNWRQbn3hh2Mhsp6rg/a5A9YQxC0ZLEd8ylQX/Uuw4D3rGB7ayxu?= =?us-ascii?Q?p2upetKO/geveG7/NguRI9/L3UakS3rw3uCdnMGbn4pLQEa/gSof6Z5b/1Ec?= =?us-ascii?Q?iMQ7XGmBhZYrGNVtfpvvpdivcLLZ/nS87qdPdHWA5Z7Txb9uDpr5PGrbJQ6R?= =?us-ascii?Q?jCGOmd5tvTR3LeLRKgQb1sXuq5ZwBdJCThnctWRHFJWnRTeJO63MDi/AYGec?= =?us-ascii?Q?m6D8yMsSy/pNkHcRBzDQjIBesuTJJLtKviyLr6LxZK4g0HG8yLdSbjZ07AF9?= =?us-ascii?Q?8h7L+IJb+N2TIV246V8I9CHslKDpEJnaOdQIkfYyvov+JhgBJ2b1zubnPW9f?= =?us-ascii?Q?wUjZarCSquN2knfLmVZ17CpTp7ofw1gr0RkEgl2vwd1E0FCTJBh86R7/mhEn?= =?us-ascii?Q?Tl29TB9JZcmtdsGRskUBTPaNlZ3B2giCUqzDhOkSRUoE2dWKSRSuGDzOOjzQ?= =?us-ascii?Q?/rTBqH7mtbfSTo7v95u1yJwN/0MZzCiqqSQqedxOYxN+2U7bjzEibF5y2O1M?= =?us-ascii?Q?w4A47pDeD8rOrv3YQiKnxpGeePrJv6enMNjzn8sYyjq+tf853nrG3B70bl24?= =?us-ascii?Q?rM3WsdhvcVfBx3z0yvltk/ghL9+wfEItxypPxGX1XFdNVaX6O4vI2TGxyyiH?= =?us-ascii?Q?kPvvycikzXrPKXEspdl3X0wPFSr2+vlLLYxAndFg8PYPNg/6EOJB81+BAHxe?= =?us-ascii?Q?Ft6IfeAf62ETjr3thxffj28FRLQ4yZZ0kllEBEnpYHV9tROSj7Bk9HtCEcy3?= =?us-ascii?Q?OYhi5A5x7gGtyoWTp1sFQXHPcZA23RI/InsLEx0xD/esZvsWhp84rAEz3HF1?= =?us-ascii?Q?i/KLqfwsZYPlOT2TmVgrVHKxBEiYLXEZ3zV7GtODuJL0kTCz6XEStHBepNXY?= =?us-ascii?Q?AB2JixPJNwL2SM931z9DFJoKa1dxnjFgINM4k8GF?= X-OriginatorOrg: suse.com X-MS-Exchange-CrossTenant-Network-Message-Id: ab3d1879-d3c4-4895-1f82-08daa481f3b2 X-MS-Exchange-CrossTenant-AuthSource: HE1PR0402MB3497.eurprd04.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 02 Oct 2022 14:25:27.3557 (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: R/5Q2nsafmmtnlUBOcVKgxXbGhGOrwDiwQpSsvHImFwTq2MDZ+wIiZ3H4mwArQMRzfei7+ySTpPVCYC/WVetIQ== X-MS-Exchange-Transport-CrossTenantHeadersStamped: AS8PR04MB8738 Content-Type: text/plain; charset="utf-8" This patch adds the multiple subflows support for __mptcp_push_pending(). Use mptcp_sched_get_send() wrapper instead of mptcp_subflow_get_send() in it. Check the subflow scheduled flags to test which subflow or subflows are picked by the scheduler, use them to send data. Signed-off-by: Geliang Tang --- net/mptcp/protocol.c | 26 ++++++++++++++++++-------- 1 file changed, 18 insertions(+), 8 deletions(-) diff --git a/net/mptcp/protocol.c b/net/mptcp/protocol.c index 66c97ac06a4e..7108eda00b6f 100644 --- a/net/mptcp/protocol.c +++ b/net/mptcp/protocol.c @@ -1560,16 +1560,26 @@ static int __subflow_push_pending(struct sock *sk, = struct sock *ssk, 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; =20 - while (mptcp_send_head(sk) && (ssk =3D mptcp_subflow_get_send(msk))) { - lock_sock(ssk); - do_check_data_fin =3D __subflow_push_pending(sk, ssk, &info); - release_sock(ssk); + while (mptcp_send_head(sk) && !mptcp_sched_get_send(msk)) { + struct mptcp_subflow_context *subflow; + struct mptcp_sendmsg_info info =3D { + .flags =3D flags, + }; + + mptcp_for_each_subflow(msk, subflow) { + if (READ_ONCE(subflow->scheduled)) { + struct sock *ssk =3D mptcp_subflow_tcp_sock(subflow); + + lock_sock(ssk); + do_check_data_fin =3D __subflow_push_pending(sk, ssk, &info); + release_sock(ssk); + + msk->last_snd =3D ssk; + mptcp_subflow_set_scheduled(subflow, false); + } + } } =20 /* ensure the rtx timer is running */ --=20 2.35.3 From nobody Tue Dec 16 03:46:14 2025 Received: from EUR05-AM6-obe.outbound.protection.outlook.com (mail-am6eur05on2089.outbound.protection.outlook.com [40.107.22.89]) (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 C981633D9 for ; Sun, 2 Oct 2022 14:25:39 +0000 (UTC) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=lQZW0k+arP3PMXmWXxUjG6PMohXd77Ou2xgy3whu7AYOtfK6cioMGi/Vkhcn8E6xx/YJp5rSxTmMvQrpNZKMoKOWmYm4WbOCU1jAtbzzib9mf6nSn1BdxxrF+zgJrbOFkH2+/mjZhJKMZS2pq3VM3w99Tz0lE5Vx64HKR5pQ2XA2XZP91oq10kfDw2I+8VLJ0qiWtVJ9IY9S+KnMgQa/uifpfXeZyLd1wHtRDXPKn3X8ZLJbhX81Ttv7f+Xk24ioAJELz8VjLCo0j5vkNtCb7FgPVWtKIz/qLwcOQQs8ZDO0botdRoCy7/yfVCC3UxhlW+FRPsmO8t7jBYKhjQC2yg== 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=pTWQfgRyfDIJ/IWieb04Sfn3zbsFzyD2WEK4NWd+sws=; b=gZ+NA4g5ummwykmWbRBO35vBzTGkc0NQZ2Tv6myFosU/DBW473vHT1pa2Ji9velfZhaiVBcoY7EkxSFU1b4mOiGOiN6QNTxZR6+kMRLwt2EcMnLrEXt68DwVd0cJwhgo3sBV2FUDRIa0VIYord3+hCb9hY/0YkwDzgdlkkQNuqEvYBDnGZIxezSTtYtxV0Z8H/EhFHzmcrYi0V8c6FBCuPinM3N2S2gQXHfzsuDMdCG1371jNxC+GTYagumpsE4OS70QfpbpXk9mX0rLLdioAm8Xi0a2BwKfChnrexQOm9Q02Ma1DMCOcFCLoHUQRV6Ksw/qWYojX9/65vnieueiMA== 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=pTWQfgRyfDIJ/IWieb04Sfn3zbsFzyD2WEK4NWd+sws=; b=cteJ+rC4bnU8I/Ywf0UChMZ4KzFXoYhaNCnK4kKUXUPsjWyQsMQtPjxrt1yg0eIVh1urFUpKuRUt2fePqV8EsWFE7eWmsdUzD8HozEGcs0d79LODB1QFxySYggkEXvoG/YARuHFtemyf3x2OVM55REZCKImRu7sD/1tdJOpKVhJIt5VqUI+6cjS30p0vOQvh5EECj42PjbvJ1M4YilvvCB3O7+kjOJnfIQCPyscr4TMzteS/MjYostapV6+UrSbw8E0o1/luPA4s0Ucu72dvZ2q3UXfIkezQjWKxE1Px1DWIzGIT2ghcvdo+Aw8m3FmlY1BtZvb0djcAlHIi4OYUfQ== 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 AS8PR04MB8738.eurprd04.prod.outlook.com (2603:10a6:20b:42b::19) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5676.24; Sun, 2 Oct 2022 14:25:37 +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.024; Sun, 2 Oct 2022 14:25:37 +0000 From: Geliang Tang To: mptcp@lists.linux.dev Cc: Geliang Tang Subject: [PATCH mptcp-next v4 07/11] mptcp: use msk instead of mptcp_sk Date: Sun, 2 Oct 2022 22:25:15 +0800 Message-Id: <4e200561e3d42d7eec282c608c8b9c0d57ec6ad7.1664720538.git.geliang.tang@suse.com> X-Mailer: git-send-email 2.35.3 In-Reply-To: References: Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: TYBP286CA0041.JPNP286.PROD.OUTLOOK.COM (2603:1096:404:10a::29) 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_|AS8PR04MB8738:EE_ X-MS-Office365-Filtering-Correlation-Id: a1f133e6-a6ca-4819-7eeb-08daa481f9a5 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: r06n2wBKWCS4Toj6vS4EN43uw9ge6O85DDfSHHUlSflIN52Fu8UkMRRYdIdhTivu5fvAU9ZKZHWBMfUUNj2+iyWhXbn565MyEZKFL2TammV2NzGxtEy81+Azj1wXZ0LUur1/GYnCiDM1Fb/Wv46m68nsJ1qc9vENG8UTpQLPsiqchR/wQ2iJH6uZS78ePa/tIawEzodkk/GfRA8KqUYnc4coV51NHKJSjHAujnTgVNItepUmcbtk7LWHKw+lXXI8hywzSL3kR0GOV5/qTPBdbnXEds7wlrtQKxfUyK4HisNdKCFhDpNGecR2+EiQkCymDNk/fFpMeG4GorRiSY11amZ60yVqmoQrceOZeVsddTxPJmAjRX+BjO7GGzTGRVu/94r0FnrMHv7w085q/Ha8PcmqDz1R4W/s7jW/OYcQVtn50FtE/RWZasaeq7FnD9Z9Hb6KIJLyCnGbBRxVYAmo7slmmzJ/TQxd27FOlx6kElk0L2hBqTGOzcHPqgSxdmdcbUIbZVvYLkazqr2i1tIOedGam+eza5w864o5hAIPsTDxStrcTL+3hQ/o+U7jGClDg3cwh3+wogxK7e0W5I4k6V3tyvG99cq6S4igf6q1dPPKgVBWQn4pHZgxrFc0rIjABS4YI3vxgNYxgK2tjuWb2ST+PgKJgvlzVRw47L6P/BbPs9JSGTyWA0uVOGV2TSeme6M/3g27dkifpYiUFwscag== 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)(376002)(396003)(366004)(136003)(39850400004)(346002)(451199015)(186003)(86362001)(2616005)(83380400001)(66476007)(38100700002)(66556008)(66946007)(478600001)(5660300002)(8676002)(4326008)(44832011)(2906002)(8936002)(316002)(6486002)(107886003)(26005)(6666004)(6512007)(6506007)(36756003)(41300700001)(6916009);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?omMtjadxzDxlp1SS/ttxl821wGUHNjAI+lFON9Taf/Hnl/3xjTu1jndVwvT0?= =?us-ascii?Q?C8QFWn1ryXOTvvj8HPEcPjTBdbq/3vcl/iKPmFE7NnZh8R7YCNQWnuRZ9BQV?= =?us-ascii?Q?l/7ixWcwfpMs59Sf4MkliR0owTJx7K3YCQeGQkdihw9DK/KJbAZvhJeRORuB?= =?us-ascii?Q?7kOCGleqnj/jPquTCQzOHFFMiidcwnglt+V0FLsSAaTETmJ7pCeHatrmNzvw?= =?us-ascii?Q?LwhV04MelKAl4lOB79Z9ZjKw0O+X/PcPgyEvc0QGeMjo/+Lg/291+1UKyjiF?= =?us-ascii?Q?OjcEcPb7nueTQfifGeCKh4tINcQk6twgEuGHr9QGyJfqz6elJiJ6BTIyqbS6?= =?us-ascii?Q?Xkdej8rm7XF7g66x/llIP/6OYr4LRl1lGVotlXppJUkeQNFyooK/gz9ll+VT?= =?us-ascii?Q?fZi0lKImFPkpraYPcOzCtN3eGXt8HwpdtRMKEGB+wfGcdfkjWT1uxXngVGv6?= =?us-ascii?Q?LfRnNLDO7IqIvRvNudZCi7l90a8VtpOunvhzzaSkOS5Dqx8pWshrWfVmjlz+?= =?us-ascii?Q?2kbrvbj0A9aT04K5SgFlMhSDzKyZIVLhQB7rtA2WrNYiQyLr3pu8wXEGzXeM?= =?us-ascii?Q?BktI5Suj96DaxSOBOJ63Bl4fBxU0e4g/3dbW6da2rKAT62s6M11y/48jKdAW?= =?us-ascii?Q?vWesoTMq/nLj/96/3U33+ZrR/asnkTBX8HuN7BPkLeYGtk3OmTSGS3JM74RZ?= =?us-ascii?Q?QyUe0ljORFMj6LkWKSkS/didEg7T41DW/VFMfd6ZPqsWCNuHbFqpbdJq7yoN?= =?us-ascii?Q?GqRk1H26+EaZzkwYeR3NwWsFA9fhm/n6bFVn7jx84ycg4avJ2uzAE+FdWVEZ?= =?us-ascii?Q?CHbtNt0/dIsz3qwDKvUszZ5XJ6Xp9cpPVlixsOeu/41x75DgNikznWMz9GMo?= =?us-ascii?Q?G7LcNscfF557bWZSPTU9h9j5muTkddx22eiooZfEPIS2svGGlDKeRuJerQnI?= =?us-ascii?Q?qR1JNm6FgAGr9mipuvHeYu1gy+uP3KNcOw7QcjIVvfL1umrLNkhHWcrp/S9j?= =?us-ascii?Q?pmAdtDh7QUJSlqzlZDGFBTOWMXHYBrU7zjX5/8d6ECndTQyFPPKyTQWCii+Y?= =?us-ascii?Q?x7O5BObHDXJBwEidVpHC9YZwwv9BJDPLW7p8gWBeC1OGd8ymb0tN/lg0Bje9?= =?us-ascii?Q?Fse/agQphEIj742S19Yk3hMziWfkOgCgH8T+WTT70m0sri5cXnLE8iOboLLV?= =?us-ascii?Q?XV9y1d6wRxF6vfRRbiaIdzvP82PyvzgYE2BH2VhuX/JqzydMFG4f/htyfMHO?= =?us-ascii?Q?DFdqmZfRb0yozNG5sg5sosgUq1bKCO//zLPlggnmE4By1vmqJ6J8UfJtZqEX?= =?us-ascii?Q?CTpM6ZyEY5SmTNW15dzptfKtLDPybuNxkZ5KpfT0uRJQa+9wrihcLfOjgnhQ?= =?us-ascii?Q?++7W7L4S3K9+4EAxpzZhKR67ErX7xuv1tbegvIpi7kHK+zS7ACSkEHfHW45g?= =?us-ascii?Q?mZdTnhIFpgVNXocg8/sLG4uPScVs5SaiBe77wtQdbXaDtvaZndZOv+T/3fSP?= =?us-ascii?Q?0Pnsz7jJ0LZaarR7opipyhhpYjaa7LVzArTPMUdWSx0LkLXswd2hE7oKIhiA?= =?us-ascii?Q?WaXiUusq7vXXr401ZltX3ef+xR9VBKTKy4z/gLIy?= X-OriginatorOrg: suse.com X-MS-Exchange-CrossTenant-Network-Message-Id: a1f133e6-a6ca-4819-7eeb-08daa481f9a5 X-MS-Exchange-CrossTenant-AuthSource: HE1PR0402MB3497.eurprd04.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 02 Oct 2022 14:25:37.3080 (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: 7M2NZ+iQRj3AmLSExGQWyfGrpM+ycEdDUP8msDjimR5Wg7226N1XoywEcA3UzBVIOEjpB7TGhaBeE3PwAjaS1w== X-MS-Exchange-Transport-CrossTenantHeadersStamped: AS8PR04MB8738 Content-Type: text/plain; charset="utf-8" Use msk instead of mptcp_sk(sk) in the functions where the variable "msk =3D mptcp_sk(sk)" has been defined. Signed-off-by: Geliang Tang --- net/mptcp/protocol.c | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/net/mptcp/protocol.c b/net/mptcp/protocol.c index 7108eda00b6f..a8674b431593 100644 --- a/net/mptcp/protocol.c +++ b/net/mptcp/protocol.c @@ -1612,7 +1612,7 @@ static void __mptcp_subflow_push_pending(struct sock = *sk, struct sock *ssk, /* check for a different subflow usage only after * spooling the first chunk of data */ - xmit_ssk =3D first ? ssk : mptcp_subflow_get_send(mptcp_sk(sk)); + xmit_ssk =3D first ? ssk : mptcp_subflow_get_send(msk); if (!xmit_ssk) goto out; if (xmit_ssk !=3D ssk) { @@ -2242,7 +2242,7 @@ bool __mptcp_retransmit_pending_data(struct sock *sk) struct mptcp_data_frag *cur, *rtx_head; struct mptcp_sock *msk =3D mptcp_sk(sk); =20 - if (__mptcp_check_fallback(mptcp_sk(sk))) + if (__mptcp_check_fallback(msk)) return false; =20 if (tcp_rtx_and_write_queues_empty(sk)) @@ -2924,7 +2924,7 @@ bool __mptcp_close(struct sock *sk, long timeout) =20 sock_hold(sk); pr_debug("msk=3D%p state=3D%d", sk, sk->sk_state); - if (mptcp_sk(sk)->token) + if (msk->token) mptcp_event(MPTCP_EVENT_CLOSED, msk, NULL, GFP_KERNEL); =20 if (sk->sk_state =3D=3D TCP_CLOSE) { @@ -2983,8 +2983,8 @@ static int mptcp_disconnect(struct sock *sk, int flag= s) mptcp_stop_timer(sk); sk_stop_timer(sk, &sk->sk_timer); =20 - if (mptcp_sk(sk)->token) - mptcp_event(MPTCP_EVENT_CLOSED, mptcp_sk(sk), NULL, GFP_KERNEL); + if (msk->token) + mptcp_event(MPTCP_EVENT_CLOSED, msk, NULL, GFP_KERNEL); =20 /* msk->subflow is still intact, the following will not free the first * subflow --=20 2.35.3 From nobody Tue Dec 16 03:46:14 2025 Received: from EUR02-HE1-obe.outbound.protection.outlook.com (mail-eopbgr10078.outbound.protection.outlook.com [40.107.1.78]) (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 0828E33D9 for ; Sun, 2 Oct 2022 14:25:50 +0000 (UTC) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=MHZinRl3Gn1krXHDmiw/v4QctplzgR9rFtdYbzehXr2qrqvYxaWLrFscm9cA+g158MXbbxAetow9FaQvwIY/6S+BTOvt0u18XgEQ+R7l4C12bw1mQNnr75WecjS6SPZLiUFam3s9TYU44X4L4KMJb9kSkX4U237Ewivl4IMkSOVyuVmie53bdvmTC/0iA/mnR0BpJfcKmJGYcyUDncecKTgDaiS+1mgpUSEE10HY6Xnz/mLSPw6NoDGpzdydUU983+8384KoPBsHgKrTtxApiz6Mvf1c9ZVpcvSuEo5piXZmBXd6cy2OIfxMY1diLjpdi9/ubKsphrqLLrtSP8FWPQ== 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=fHftcWQShmdn5zrNG/KYVFCbqQgsJU0MVMC2MM3gT2o=; b=CyFOEC6yhjJ6Hmnqbsf20OIks/jSPOgaPyptQi3g72be8uRlFL4SiR5n4r6gRMK04FgNAc62atvRCYGcyBHW1jiVoSL4wg/z+CHMjyJ7WHY5I/30+cXWf4jzv5ZFCby6UskX4HLM/Y2Rm9cNYuS4V/PBGJWQWXsnVWWaO9pmAC/Zryg7hG80h1roBw8mE5E1HUlwByVUGdQRKVlql6zNnz3dgesBVn2Ur/Amd8Du/n2wbsFtVx2OpZSQrLN3TAbYelRg0ogjrdjwqJNn3/cgjE5XMf2NmZ1cUUQlRTtSIvzMhVMZ4TsUlsgz/oUJgLGcBa5PyJDkfVkNFQfv91nxPw== 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=fHftcWQShmdn5zrNG/KYVFCbqQgsJU0MVMC2MM3gT2o=; b=Tj0zwIq98rPWFvuGBaTTTbHbEtj9YqzqibdZVQisAKJkqPXahYhVFhX8qGN/yVzDNelP8oJqwfOFQvJ9skZK81eVKVIu4cqvE0J7+31UkCzg4yBDyKy1wrB7TtLWe8pyn6RHwNWaoXVcMKILYC4fG2ERdsBOzaNGMnPjDP1cj9gZV1zkzmMTMR5u1+u0hOgTyKU5ieedkCFASHAap4Om+K/8/O/LSf6C7Ufd74IR7a20JZz1aMhrF8GMVw+WcUErGVNaQYktF1OaHAMc0PbzHsbo69494IoWVeYE+7YaN+fWK+mjntihQ0lMlpliPd9oNpbD7JNcoih50d8VNl9tQA== 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 AS8PR04MB8738.eurprd04.prod.outlook.com (2603:10a6:20b:42b::19) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5676.24; Sun, 2 Oct 2022 14:25:48 +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.024; Sun, 2 Oct 2022 14:25:48 +0000 From: Geliang Tang To: mptcp@lists.linux.dev Cc: Geliang Tang Subject: [PATCH mptcp-next v4 08/11] mptcp: refactor subflow_push_pending logic Date: Sun, 2 Oct 2022 22:25:16 +0800 Message-Id: X-Mailer: git-send-email 2.35.3 In-Reply-To: References: Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: TYBP286CA0036.JPNP286.PROD.OUTLOOK.COM (2603:1096:404:10a::24) 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_|AS8PR04MB8738:EE_ X-MS-Office365-Filtering-Correlation-Id: 7b024bea-e9c8-4bdf-af2b-08daa482000d X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: ITJU0lnQxT9ZV48cnuM+kg+y/6d83Urpe9elpaz/VuL+1KxZ+FCJIGgrqIlegF1hLFj79VG62HZBWBXXmSaVq0HdU+OsKE/Mcjlq2q9MOi0XvBlPJLQJKb0c0FLWlftQBmi3bA8Uz4PdaND22/qt+edFePJ3KuFE5f94pplSwjHiPK18ehLefMZHCQJeEA/lAFiHWjE3W7LX4hrci76CMHkQ4OkS4Kf1uVVe6Ov9+nWMRR0zCDS9JqYUu6xMhi/TMgbgaMVlWJL3/ZqNB3iFej8FNlhA0abHl4u40hw3vS4XZr5hrr1Kw7TnfglPe62UOcXLueGv9aqr0wsi0+5vdhZL7t0Ecs7RQXldHPiMI9Mg8Flja/eCPRVu+tMiGYUqURnG3q3kaWY1R1lhuIpkK99qI/48pGjByOBUKduH/TmUOQ2CmjWYvh5yyweB8Mv9zTf4gk5vIkWfR2Zp6F5jdlz4busyZ5IUvvA3QgJdPdsF5l+8YLjf9mJurpuWschLHcFJpJyQmPfHxkXLBtOGhZs7d8EkCDPqRe4SfnRSOkL4dJ/hSIwuQPQSVuzTBT1F4RlvJSASFUQwjls7C0xD7ahfztnnnl8XZhtRjnYMWEspEmqQZ5ui756ZYwrGZN8R6XIyGXdmjhVaQj5f8hEw6dXZBEafDYMUvcx1OtX00lC6i4lrfpqW04tSe+43GDDq5RtrbOnMQ+aEs/omw/sjYg== 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)(376002)(396003)(366004)(136003)(39850400004)(346002)(451199015)(186003)(86362001)(2616005)(83380400001)(66476007)(38100700002)(66556008)(66946007)(478600001)(5660300002)(8676002)(4326008)(44832011)(2906002)(8936002)(316002)(6486002)(107886003)(26005)(6666004)(6512007)(6506007)(36756003)(41300700001)(6916009);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?6bvqJnjBduBmPWVFcDo5grDB7Ldmxg7MBMvauSwTJ8eEzchcyq4sbEb3zFcs?= =?us-ascii?Q?4JcKZgNSkS5I4IEiQ175JEpWivdZCUKpkDWsGbGMNYyGiMNev9m9CgOwTetF?= =?us-ascii?Q?eGongarXEzqGxe0K8A538ztW3WqGK8xP7/mNXRqEB9OvM4T65G6aMTs9+L5/?= =?us-ascii?Q?LvzRD/nhjestc35CgecDAdLI3A5FtEDuCSo6HEZPdl5B7q2q8Yv1ZOfQ+zTv?= =?us-ascii?Q?82zAnUCVXjInwzjwLWa7tNm/VOwSMFfN7rrMhmZ+yrZzl2Msu0AASxYrLppX?= =?us-ascii?Q?zz3CLussKGhFHHdGehQYm1GlLqpp4Vs/eD/wmH42+luEMdwmcjjY6a8RDVjB?= =?us-ascii?Q?mg90Ts/QP6LoK0aakkjGbuVNVtZLEx8akIoTIG6iW2YrnuewNzROjpcmkF0s?= =?us-ascii?Q?uiOieKcCCt7Gm74eLYOHsfdhcnr3C589obflwbuWEBsUSv+08gc9JwsNEh0p?= =?us-ascii?Q?y0ObeT6c4CadNmU645bzYEb0u5IzvHvY48gNZ+N1Uw9unmXFXPMpNodkvU1z?= =?us-ascii?Q?fFD37HvmWdxTkpxQuqddxTokeKwtEgwuHFFdkL2JAnLNnV0Y21KY2ov2NJA4?= =?us-ascii?Q?c+vFTwgWRSU+9johmROq/j0ZcJmNVn+I2q10xRcpGsYOOG+KcYOa88aDMi4u?= =?us-ascii?Q?Sz0lOK29S+g9grFiEbS0fjriQZZFZM0mPA3TNAMVGHHFlPihLjOTo6XNwBF6?= =?us-ascii?Q?bJ0DdU5ODEzKyB50gDyGGWthr8UrxliCbNNfkhJgNu6l0Kb+4QuOUgdgBej3?= =?us-ascii?Q?jvdYyLclgJYyndZQQWJ6qj9SWtG/qJe3kKdilGTrt98oi4We75LF4SHkb1Fo?= =?us-ascii?Q?CDWSgjsJAh/n+cRxX6IJi7GVSM+tQY74d4uK9qDxsKWAlwg8H343xA7l2USL?= =?us-ascii?Q?Rs3nVP81pHwx+ctenUHDij6CyBB/R4ymfo6aJwgPSaXjwBR8K5qBmcquHU70?= =?us-ascii?Q?HVcjBTL5vTCpKcu2deXvF6W6JFGVtyAnWjGYn1M8sTrdcMe5PQB+T+vlk9X8?= =?us-ascii?Q?ZSlnkL8rGjDOPr+0tU/FMfXadB36yPBjEk5L5qC1Clj6QNwcaLqXpiSOXVoh?= =?us-ascii?Q?cuGLZeK0jmKrag/B0jKnSk7H79AFHLAXcWskjAERFddnwhgeDnOUdswoLKBJ?= =?us-ascii?Q?YUZpW80Jwcw8HsDPqJmgvLaEng7CSUe1u91TB7Sztrwr/92QJB5xUoqAnQU+?= =?us-ascii?Q?J4I3ICBEWFhAUpMqaPHtKiwlebveU/zkMSqwTG7HzqXfxzskl9biDzuilsc1?= =?us-ascii?Q?iyJeSgqFw7bVjGd7QZTMvhQqfysWSrbElU5TWaBGyXyHYTEhRPPHSXVDXTnF?= =?us-ascii?Q?nnLwB97dJO7u5YkqaZJc+MWS8Nvxk+enxkskUPj3qxLpihT55Ltl9NkB2dnc?= =?us-ascii?Q?u2JljW2gNRzsJhSJKDNduTQFbMlV9GZmYiAlXu3m3/NTSZ2ccddJXT04MkT3?= =?us-ascii?Q?HcmWJtcYvCsoQ8wPuna0osF5ueMcqYgGEO6Idq0yRfgwKN4xborm8zXP8HEw?= =?us-ascii?Q?FXRANwtWA9liQNaSFW96qffEG78ZUW7nAMqj7U/OjHEEs48KXogo2cu9v6bY?= =?us-ascii?Q?reUjs2bcHePDa1a1nMp6Vx++y3802/1JrlrWWNrx?= X-OriginatorOrg: suse.com X-MS-Exchange-CrossTenant-Network-Message-Id: 7b024bea-e9c8-4bdf-af2b-08daa482000d X-MS-Exchange-CrossTenant-AuthSource: HE1PR0402MB3497.eurprd04.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 02 Oct 2022 14:25:48.3071 (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: LfeVGJ4XXrthbVTZoWTJjrvZbrfbdEFI4Z3aYs2Oc6S7T4FEestxea1FNaaNrcBLsmyetIr7QzUsxQJJ6+Mu8A== X-MS-Exchange-Transport-CrossTenantHeadersStamped: AS8PR04MB8738 Content-Type: text/plain; charset="utf-8" This patch refactors __mptcp_subflow_push_pending logic from: For each dfrag: While sends succeed: Call the scheduler (selects subflow and msk->snd_burst) Send the dfrag data with mptcp_subflow_delegate(), break Send the dfrag data with mptcp_sendmsg_frag() Update dfrag->already_sent, msk->snd_nxt, msk->snd_burst Update msk->first_pending to: While first_pending isn't empty: Call the scheduler (selects subflow and msk->snd_burst) Send the dfrag data with mptcp_subflow_delegate(), break Send the dfrag data with mptcp_sendmsg_frag() For each pending dfrag: While sends succeed: Send the dfrag data with mptcp_sendmsg_frag() Update already_sent, snd_nxt, snd_burst Update msk->first_pending Break if required by msk->snd_burst / etc Signed-off-by: Geliang Tang --- net/mptcp/protocol.c | 66 +++++++++++++++++++++++--------------------- 1 file changed, 34 insertions(+), 32 deletions(-) diff --git a/net/mptcp/protocol.c b/net/mptcp/protocol.c index a8674b431593..c036a788fc27 100644 --- a/net/mptcp/protocol.c +++ b/net/mptcp/protocol.c @@ -1602,44 +1602,46 @@ static void __mptcp_subflow_push_pending(struct soc= k *sk, struct sock *ssk, int len, copied =3D 0; =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; + while (mptcp_send_head(sk)) { + /* check for a different subflow usage only after + * spooling the first chunk of data + */ + xmit_ssk =3D first ? ssk : mptcp_subflow_get_send(msk); + if (!xmit_ssk) + goto out; + if (xmit_ssk !=3D ssk) { + mptcp_subflow_delegate(mptcp_subflow_ctx(xmit_ssk), + MPTCP_DELEGATE_SEND); + goto out; + } =20 - /* check for a different subflow usage only after - * spooling the first chunk of data - */ - xmit_ssk =3D first ? ssk : mptcp_subflow_get_send(msk); - if (!xmit_ssk) - goto out; - if (xmit_ssk !=3D ssk) { - mptcp_subflow_delegate(mptcp_subflow_ctx(xmit_ssk), - MPTCP_DELEGATE_SEND); - goto out; - } + 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; =20 - ret =3D mptcp_sendmsg_frag(sk, ssk, dfrag, &info); - if (ret <=3D 0) - goto out; + ret =3D mptcp_sendmsg_frag(sk, ssk, dfrag, &info); + if (ret <=3D 0) + goto out; =20 - info.sent +=3D ret; - copied +=3D ret; - len -=3D ret; - first =3D false; + 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)); + mptcp_update_post_push(msk, dfrag, ret); + } + WRITE_ONCE(msk->first_pending, mptcp_send_next(sk)); =20 - if (msk->snd_burst <=3D 0 || - !sk_stream_memory_free(ssk) || - !mptcp_subflow_active(mptcp_subflow_ctx(ssk))) { - goto out; + if (msk->snd_burst <=3D 0 || + !sk_stream_memory_free(ssk) || + !mptcp_subflow_active(mptcp_subflow_ctx(ssk))) { + goto out; + } + mptcp_set_timeout(sk); } - mptcp_set_timeout(sk); } =20 out: --=20 2.35.3 From nobody Tue Dec 16 03:46:14 2025 Received: from EUR02-HE1-obe.outbound.protection.outlook.com (mail-eopbgr10042.outbound.protection.outlook.com [40.107.1.42]) (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 D5BD833D9 for ; Sun, 2 Oct 2022 14:25:57 +0000 (UTC) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=T5Hk+n6AWmT+ZVslgK+hWbPrE1YGDyCFAQu9ueyIHgYTSJI9+liTnyk6wwGDqwIyekAsrqW4tjFLJsO7ky3XHwK61iRPXtP7v7laI67oNpk+9+kdyAAMal8ul/dNyNMLpHXv//Q8ipCk5OFYLWQE+g3+ARyLH44462DX3jvpfadTgGRmeOf2KN+UxDIcYUPxo/I16lh8ILu7Aqu1NEKyheGAmlnxxNjLuieafNhBg9roDZCEaFThbs3jj8Zg5JN+HHf+ocRr3byiesGsZGaMeft/bwOVszQqQ4Gb+L43/GNexuxiJwL6FfXCJW7JnR6wIz2LjTw1dMy0Ls03n/9ouQ== 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=jlfLFQ/0WvsjjE3Sg8I/7t77IyqkUvNdF7TCe8ix2wo=; b=OYBTd/QgcqkXg9x6MDEqvgVDM6SZ1qweuGD8Nlvct5THT73O+gp2L3qDmvx9XOxQk2aKBjFESVgjrQMyz1ZCpp07asOUl0o5kVPUp7spjMPALg+Z8NEx1SMUgIFdzOJM84My95ajXuRDQUbfmaHhn9SiXfP7eQMQd8DyGnuorjIFkmsqZ2zVUKDr0TyLEkOUFtYh/38UOkMk+sNJJ4rUsrONczR3hbupu2xP/mnwrziC/KfTh1LpdCH5h6PZgL1gk8Cr0Ie73yxrgH5N0rE1roMmjeqrXBesUBJQ/ig1Pip66C1ghLTXqv537ew7wuE9L/LpmzfRM8UyoaX4o0cngg== 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=jlfLFQ/0WvsjjE3Sg8I/7t77IyqkUvNdF7TCe8ix2wo=; b=qKJ0Q7auhqxO12zew5x7s876kN+Ilu0Sjg7QjYhNKEsQ6PaBD6XpuyPRg9XWiVekEAjl3Fg9Blne4DgReDi8+E3LTQx/0Dycv6LvnMVhpaA6QJONaDBStLL0fSj9Np6W7qdirtZoDp+ugdBJey1Uo2jUUQ8BnmYzr/i+et1viSDRpSGfpUhDa9yoAdVc6iPSOMKNGuAeNRfmqGNuuYjHItfFzU5PSe84iOKFuT4O/SuGit4vf/1f55FYwwxn0XpWEbYlA3w6z+iZZkf/Kr2FVbnx5gZq+DAhqv4L5ZfKlSDhy9grFkt6MqTqnmp0jfqpX5GFlKcjrCIYaRZ/Scewmg== 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 AS8PR04MB8738.eurprd04.prod.outlook.com (2603:10a6:20b:42b::19) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5676.24; Sun, 2 Oct 2022 14:25:55 +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.024; Sun, 2 Oct 2022 14:25:55 +0000 From: Geliang Tang To: mptcp@lists.linux.dev Cc: Geliang Tang Subject: [PATCH mptcp-next v4 09/11] mptcp: simplify subflow_push_pending Date: Sun, 2 Oct 2022 22:25:17 +0800 Message-Id: X-Mailer: git-send-email 2.35.3 In-Reply-To: References: Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: SG2PR02CA0108.apcprd02.prod.outlook.com (2603:1096:4:92::24) 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_|AS8PR04MB8738:EE_ X-MS-Office365-Filtering-Correlation-Id: 3e946498-6d8d-4515-b4bd-08daa4820458 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: WLwXsOVh7YsKql4TvbTZAhrjmFYfV/q4Xesp7O1g8VoqiW9DUXSr9D8WzUqBtgdg8VqGXlejo7tIDuezfNi4xka0zARmPIpcW04QI+5MgZI6BWx2TZsydkRMnBwPTOG7IJqBdzSCOKgE59U/TKm09t2Jmvvv2bFHzQdsSjAHYR6KIPYsKvgt7WQZsx7tZ8jt2GLBlWke72QZm4y7AG25/1mek84VYbPk1vuM1+7RRzgUmP04A/qcxHOZSz/oL9/qyhtzfueSRI3hkUNJD9B2uWk051bcnp3nxRs4RUCKjhZBSNFLJY7jiyzyt+l5kB8f/tXI0+JS1UW/QK03YUI5zlUrOEMDXCAWEhU67VkULF99KBg70MQ3WXIuG9EgERf2I27t0VxD0IN1mPDXkAwuj2h+qv8fyBPC8ZlvKTl1rBtixxEGDX+lYpV2kESQlYh6+43B+/LLflHRtwqYkidMGaheim6rvTXCj9UpP8ZkO9w5ytIB7IZ/Dz70AUh8s+Cy+OWGMu1EEl4puF0lrC4TtKGmmxF5IsqNgjTM9ZVDiiOFyzXwedOp6BQVe104x1HDG9XO77p2Sp38SEBqpMynVcXM56KpW/DdCjWP7zj05yDKIU1yNareTKBGx6HF8wcyS3iCrhQ3LpwspzM1QvI2+vh9pyUFLzkTrTe117j3LHZo/C7zDNsl6XeQcvpAijzE37ijo9QUhyyhPyogyjKX4Q== 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)(376002)(396003)(366004)(136003)(39850400004)(346002)(451199015)(186003)(86362001)(2616005)(83380400001)(66476007)(38100700002)(66556008)(66946007)(478600001)(5660300002)(8676002)(4326008)(44832011)(2906002)(8936002)(316002)(6486002)(107886003)(26005)(6666004)(6512007)(6506007)(36756003)(41300700001)(6916009);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?RM1bsMjqLmwAboS9MPkKhxoh93UcS2+Ixp1C1kQmFm7tzGMgqlPJxnQ5HdSq?= =?us-ascii?Q?kWiARzpdBPOVvZwG9+cmFWKx/7mrnd70G/B5sybCBg0TpcXRyMHBSqZUEGtI?= =?us-ascii?Q?lojZu/34LnZGbpizmPCldbheI/wIzNl/W0dIL+jjIT28ebYWGZnAQRhh/67T?= =?us-ascii?Q?C/ZgQyTKXvtSHpLAZIBLl6ACAQb09E5wC9AP4IxN0wKnFCn4+NBKJXOMErfF?= =?us-ascii?Q?JLjEGfkF69TLeFZiiTAH0sTf60qbVNn1+DwvOboelXT2QoHhXYJ/kcjwq4rN?= =?us-ascii?Q?ZTlOkphaYAgdKIsODUkQpmJkVIbAnaWx87PL4+e9mm9hkoJqliKsFMw2bQNo?= =?us-ascii?Q?/y4yQp8HZOnndce7/YmcZeHWVFnbNLIYhUdZ/xwhGjDOCC/Omv3uMpqjQBPy?= =?us-ascii?Q?MRPJCkTMIoYniifvKpIGFL9n6rc7lWWNGK5ptz8hw3OrlyNNLxUwOxTimEva?= =?us-ascii?Q?OHcl+eUYO0toRHAR9b6FtGWQvY6r4KkW7424sjectrJoukd+BV4CW0QqL+Ht?= =?us-ascii?Q?XRmMxR0lPdhXX6yjmZlaSLQvvAuaVpQJdNXlUVhip1PM/tHBxMg1ethcCD2W?= =?us-ascii?Q?zZwf5uOURrCEgbtTiCLRfYDhctP9VJ3Ynjegs8RcWeUrjRSHIhTaDgAurIwg?= =?us-ascii?Q?K/lWd2k2dnKfJs+BGTyWAfBmltUM5LmlmN/WaXSMP35Rb/g244n0+dtEzaoZ?= =?us-ascii?Q?3SyMYF+QHqY+SfXpP7g+DaB0FLZuqm8guj2yxdzbOiTVbYGYVUVjvDDu6Li6?= =?us-ascii?Q?zPx6HKTjaRYVGWHQ99s8PiwOa6gexsdjdT3l6FpYAmJJGtgssD6lvHjauFs8?= =?us-ascii?Q?ODo+4SDobzkSra9LV3ljMQ29DMNjw70C2PuQ1A4YSmlX/8HxRuFC022rye+e?= =?us-ascii?Q?C8Iv+yNYU6KiRGCQFMpTcAyLm1stkukc9pCwbIQJgxu7q7jqczaboa51l9HX?= =?us-ascii?Q?XG5WmYVyq8fRDDppYauMkOSSTJKRXEGrUBX2tafHXKHzHOVz0TcGkwdwXjOy?= =?us-ascii?Q?4zUAqb1a4/2nOdQw/z79nU0mW9hZJ3L7MnM0WvvmfSBTH93PCiTqXPTLPMxz?= =?us-ascii?Q?G4i7sdnerjdfItf8WbO5WjhRCBy4dRl87HiYZ9B1y9ZR/zcXiMiJmw0hNuHA?= =?us-ascii?Q?r/nOeuoJIhs/J0S5OXdqVi+SYWfu+byM7Pgo79L80I8Y4alZqXthH9jnYlDH?= =?us-ascii?Q?IuTbivLsLk+RQzapaWirfjRVbhwANlupwtiWmT30NfR9HykVR4dv8tyZnuW6?= =?us-ascii?Q?21ixpAZe6CfV74mYcKSwcJpy4fLbtwcTtanGGxn1FDT9WTyWXfukj64AIftD?= =?us-ascii?Q?pBP6pivfMTJiozwgUHK/IlBruui+R43ObanOeBTDZEVIp+FUeaL6iB69wqvR?= =?us-ascii?Q?J28o+8LhruXaquuyN87Meui1xi5WXo0KTFhrrqAl/OujXKWVx2pIECVAOyYH?= =?us-ascii?Q?ok6wYYvZ4KGfLmjwZY870rdntC0X0c3aQzA93sSjT1joN/nDNkRBPtgpzJ1D?= =?us-ascii?Q?hbcGzXJywewyACD6V7i3D6h3fgU9eknW8MTVl3p87MPB/qRuAxwdpvqaQqlk?= =?us-ascii?Q?W1UpKR/Q/KkiPVmlNOASoOXe/65x1tiwr6/3YH/D?= X-OriginatorOrg: suse.com X-MS-Exchange-CrossTenant-Network-Message-Id: 3e946498-6d8d-4515-b4bd-08daa4820458 X-MS-Exchange-CrossTenant-AuthSource: HE1PR0402MB3497.eurprd04.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 02 Oct 2022 14:25:55.2597 (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: qwN8mKb8yp24SpS6pNXLWla0sA0xKz6q+6NE+0YNrJDsDGMfq1KGPChPHO+pp21kKRZ6ERIwc7mR9kMJ+BNemg== X-MS-Exchange-Transport-CrossTenantHeadersStamped: AS8PR04MB8738 Content-Type: text/plain; charset="utf-8" This patch simplifies __mptcp_subflow_push_pending() by invoking __subflow_push_pending() helper. Signed-off-by: Geliang Tang --- net/mptcp/protocol.c | 35 ++++------------------------------- 1 file changed, 4 insertions(+), 31 deletions(-) diff --git a/net/mptcp/protocol.c b/net/mptcp/protocol.c index c036a788fc27..439af075b144 100644 --- a/net/mptcp/protocol.c +++ b/net/mptcp/protocol.c @@ -1596,10 +1596,9 @@ 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; bool first =3D ssk_first; struct sock *xmit_ssk; - int len, copied =3D 0; + int copied =3D 0; =20 info.flags =3D 0; while (mptcp_send_head(sk)) { @@ -1615,33 +1614,9 @@ static void __mptcp_subflow_push_pending(struct sock= *sk, struct sock *ssk, goto out; } =20 - 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; - first =3D false; - - mptcp_update_post_push(msk, dfrag, ret); - } - WRITE_ONCE(msk->first_pending, mptcp_send_next(sk)); - - if (msk->snd_burst <=3D 0 || - !sk_stream_memory_free(ssk) || - !mptcp_subflow_active(mptcp_subflow_ctx(ssk))) { - goto out; - } - mptcp_set_timeout(sk); - } + copied =3D __subflow_push_pending(sk, ssk, &info); + if (!copied) + break; } =20 out: @@ -1649,8 +1624,6 @@ static void __mptcp_subflow_push_pending(struct sock = *sk, struct sock *ssk, * 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 From nobody Tue Dec 16 03:46:14 2025 Received: from EUR05-AM6-obe.outbound.protection.outlook.com (mail-am6eur05on2046.outbound.protection.outlook.com [40.107.22.46]) (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 380E233D9 for ; Sun, 2 Oct 2022 14:26:04 +0000 (UTC) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=kdjM1R/gnOAx/Z1sPORYOtPDEUgec4I2baWxfrPRGuyilN1Ea6IliArge3CKA+i9ydF9LkhCKFWqVf5RfK0M5yLI9QdYaKoZKXXrZfpeeFYUhRxqQWLmZ+JzeCYPzwynhp/xI6vAiv2khkwaM826/Agn6dYTLmzrZCN6VHkJo1q3RiU1PGnoo2p0MfhgF6g/vBrDrpufbMSov4bhHRLy1wY/4s9rDcjNhWTJKeRTBXrsykNE9a4EHXBxuViNKx+47QsC5sD4TFvxcJBOIsvP/lZ1s4r3FSlXrx/4Td8sqxHIapNCqmU0HmdFe0hoWpXu5hJLGunTOfgZeSJNUXqDXw== 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=xEwiw7AQPDGH+uRFNaT68sCaIFKgjloqo2079KiU7Tg=; b=gTlHRDBqBXqMJr7EXVk0459JrFFDQ3NmhiN38ChdshbXTc0zgzb1pJbMnlEtVNjMXJ6d3cHLELMdIeSiVb8wpCX5PYqWnDSQnq7ao2eTclu+wAen4SyAjLvkNuyLSB5fLwnRayb4B2b+YA/72EMfPzc4PZllxRnfat5KnLHoXMZWICSyzITQ+4ZxxqSZhOAnGf0jspQitYzrNKsE0OWunAEUHK9zhwB3jm2PbBdLr+sGS26Yw9h7Sq0yTa34DA20LI8JR000x6Ndk3OYyexg3O37+49ctIn911WnSvT1RkMRUUcR+DqMwt89t6sHh4oB3JvMgb9iUCIcZ5PIwpcaZQ== 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=xEwiw7AQPDGH+uRFNaT68sCaIFKgjloqo2079KiU7Tg=; b=uke9KkBywZYgklGXt71nrkPqbV/RcaLPti8tr3gIfx27n5z47blkMMMQlM1E7xCelhPCQsC/vT/ujTgEFI8s36rAgp32Vh4RljnT4SS9yZlUY/M8At6aBe6W+F7lG3g1thg7REbeWEcdGuoLhmX7ec0Q6WHVNgAAwTGujcorBbTN6HG3J4IKoMh8HdZ9YRP4zJFp1MPvPttffzLxzJtKMyiraz+ZgIZ+dPAxy7zXnIiifpsT1twoaUCk6wzmKEaR6aOl0vVIb5yDDU8pkSL+F1+9d+aoBHcBbNtyx0QfInHUcSN1RYeBaxNmjij1jPNFh242eEG3S+XszvTutuzMng== 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 AS8PR04MB8738.eurprd04.prod.outlook.com (2603:10a6:20b:42b::19) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5676.24; Sun, 2 Oct 2022 14:26:02 +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.024; Sun, 2 Oct 2022 14:26:02 +0000 From: Geliang Tang To: mptcp@lists.linux.dev Cc: Geliang Tang Subject: [PATCH mptcp-next v4 10/11] mptcp: multi subflows subflow_push_pending Date: Sun, 2 Oct 2022 22:25:18 +0800 Message-Id: <3bb3e808126d1b4d24d7979a2b255bfc0232789c.1664720538.git.geliang.tang@suse.com> X-Mailer: git-send-email 2.35.3 In-Reply-To: References: Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: SG2PR02CA0101.apcprd02.prod.outlook.com (2603:1096:4:92::17) 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_|AS8PR04MB8738:EE_ X-MS-Office365-Filtering-Correlation-Id: c19d8776-f63b-4d8f-9995-08daa482083f X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: 3cyD9IOjG0rKmBty2tX/6OWEgvZDQfjuQic5h8L/5lNG/IiBWxiDvtgV7v/N2lt/8I6BJN+2pk4eRhDcmiBMhkK1vOUlwcft/PiUqLvx6HD/FRhsBvAXsIFn9gtiC1koIR1NolYvY8/QJpwsftYmFAP0lUD/8SM1PvmLoD8wsTujKuF9OMYnTf/VICYcExA5nyWQhWJnMcM4hrhzELdRSMjmTiy6TtG4Mg9D3syoB1sZOlwwev5KG3HK6ceIvoX0rvXYA/kEKAOhhnQorr9sY7onlE18AUd/IY/Y2gi3JiZwrG/g8MvFxs17oCagRSXkJ7xA8VTnKzTAO1Ne5Hp/IzRxWmuj3+563ggiemDSKbXJcAIAa24qksSSazlbFErOY3QJfqXmmHCUo7AxR/yPdN8XJQ0uRmgFWgeNwFnBEDUE1rzklgPqQ2bUSiu0UrBZWj6VUAu7tTHfsj5k1SO/xMrpccld2aup3b6UwtoDCS83AO8ZGNP4MqnRAJ1IobsFJJME4Xmx5GfaXc6wLSZtzAxDY14NWjVC8vBdGxMWTU09hxyOhxU6h3iuV04khb4NghAbgFw5c5eFFzjtM0uN2ob91HWG1nXqSbO0RriIaqqiyAMlLqJnPXM7kIRwPIjqk742XgifiSO2g35vMqTle0/hrHqZvDe1SES40jbqWpnjeXxJ/6+Y66Vd82b5k9cXxg3ncWDxhfhvnrQVk6P0DQ== 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)(376002)(396003)(366004)(136003)(39850400004)(346002)(451199015)(186003)(86362001)(2616005)(83380400001)(66476007)(38100700002)(66556008)(66946007)(478600001)(5660300002)(8676002)(4326008)(44832011)(2906002)(8936002)(316002)(6486002)(107886003)(26005)(6666004)(6512007)(6506007)(36756003)(41300700001)(6916009);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?HFvz8xMbCZ5mIxy+8gMt8lOHC47F0KPXaXu/MSKDAez6+Yn/c3I2pDmhv/K7?= =?us-ascii?Q?Dz5RT2N20otEz9VEo0iIjkMWsnRKAssu2+E4T09NBpR5Y3SAcAiiXcFfTcLB?= =?us-ascii?Q?CtPsGJqD5gh3sfhavnG4885g5cCWnkbx+Wo76qrvtCl3ms7nkkYH4g+99Ru+?= =?us-ascii?Q?2LeKsdFoNvtgZkM/wtIfQf+LxXi+wehfmnT0QaeRj5z5x/u6kD8muy5dIIFQ?= =?us-ascii?Q?+Tze0hHUjSPbynUJyLADkBbFotLtW2lKQCovKoaSzzLuxAE8QXfF0kDwE1yF?= =?us-ascii?Q?XtVsMFBqzWVfZZvCRc5VCVMGCVtcq14lUPte5eor4UcCkrVJgwBU4hHFc3wN?= =?us-ascii?Q?a7i/M3XLCEXsfMwC4JEG7MM+E0pp3EvqZKj/vnYpEE2k43eRKWCq2FwznxjX?= =?us-ascii?Q?0RghCxADNptbhBQhJ7Ln+9fzXUzzmMix9bv0jU/Fl3NoVbdSpIHErZTLBaFy?= =?us-ascii?Q?tKLm/1xLyCm9EifbRBE+lGuzLp0uBcDjpembKON0PNn1ezIkzes9slpuGun6?= =?us-ascii?Q?/oIwrnHS9HxgTGq7yrvwemilyr1bYPYKmDw2isLxplmWI+LKPsX8mvd/kMNs?= =?us-ascii?Q?Heg9N+P33cjk7jrREeL50bcZwvqWLBtHfrA7kINaMt9/puH8D8y+fCIg6SS5?= =?us-ascii?Q?C/bc2iajNQ2W8aYHI8aISSzl8/eewKWKIYaQ5AfidZ8ZwtCqS8QLsA5NgE2t?= =?us-ascii?Q?p59tjXctLf4RfCdMCErdaXzinu6XKbeFbEyH2QB+YZuezmQRmjdPstpjg4Gz?= =?us-ascii?Q?7YjKuW8dRPXq7tpNYFVcdZ82YYeTt5TbzGwrDOurxZiwcBeg14luoNiN6So7?= =?us-ascii?Q?PEXa/HlhW+lKue7B+LC7DIxiANfprS4qd110YPiNtt13Bjqf4Vtv++XqCcLg?= =?us-ascii?Q?oYZlMFVFc7260mx7aATrxHVRUcYanVt8WrkSDslHaAfpqvz3GzM1Wgo55kJx?= =?us-ascii?Q?i1xEbVqY3tHpTv7ALs4EdkqoUleMdcm4xo4hEz/9rW539rQ8KvhjOFK8wUcZ?= =?us-ascii?Q?NKvZ+tch7EEMB/vzdMBXjljANm5+AyGbHIxLjbT2rrABrxcQpIhtX6CP4b2g?= =?us-ascii?Q?1KeUjIAW+vyGjsOr9vfw/y+xXCqHqQoOHXB8IL0Ixw7HKJBgGLOB9srNjDHu?= =?us-ascii?Q?nImSk+03GCXjoI/0ait6op5/Icq7+0cHAOeLhKmDbg6BBMeIjGdXIY8YFTGO?= =?us-ascii?Q?gX3/jyMag6Znk1fvF/b3ikS5n10mOGlNJ2G12RxaAK0x/+Xh7mSlXl4zVdPe?= =?us-ascii?Q?TNa+2fKGh+QtUMZYUFL6Q+C/EhFgBmyfQmObYJRpVS7+R7ptoRTGN5H8eAkt?= =?us-ascii?Q?hgtj7byYEYT13IzS6wrxlsQH3lLYFEku8hfZwQh93QpKmB8haNIrbceMn0W9?= =?us-ascii?Q?PO79KFEYxtptOx0xZWXUvL8vSOq7Q3A3IOMWbQWDdc1yzMuu8j+LtPDoUN/R?= =?us-ascii?Q?jknUd7uEG4yOXSRrfBO21HZoHyBTa4T9NAozN2UxzvKx/ySr1R5CJtd+ISGB?= =?us-ascii?Q?Y1I01+XdWY4rGLoeEoJQklM59OnOYVjfZe+/2C2upNJHu+6+HnbMBy2WRVnv?= =?us-ascii?Q?+uOcSwnQdgfCQJcokfaViwcwVFuAChyZWxu6aCgZwH9RpFfogqrTTQVssEAS?= =?us-ascii?Q?dg=3D=3D?= X-OriginatorOrg: suse.com X-MS-Exchange-CrossTenant-Network-Message-Id: c19d8776-f63b-4d8f-9995-08daa482083f X-MS-Exchange-CrossTenant-AuthSource: HE1PR0402MB3497.eurprd04.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 02 Oct 2022 14:26:02.0092 (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: M3j78XJyZm00iOHBfrOCXJ3JgPZubtobnJ7xxHcLWNYHfj/g1RJFG2h+unGFixEuanL4e1rBf7i3mk3qJSMZew== X-MS-Exchange-Transport-CrossTenantHeadersStamped: AS8PR04MB8738 Content-Type: text/plain; charset="utf-8" This patch adds the multiple subflows support for __mptcp_subflow_push_pending(). Use mptcp_sched_get_send() wrapper instead of mptcp_subflow_get_send() in it. Check the subflow scheduled flags to test which subflow or subflows are picked by the scheduler, use them to send data. Signed-off-by: Geliang Tang --- net/mptcp/protocol.c | 43 ++++++++++++++++++++++++++++++++----------- 1 file changed, 32 insertions(+), 11 deletions(-) diff --git a/net/mptcp/protocol.c b/net/mptcp/protocol.c index 439af075b144..85f72cdfa2c4 100644 --- a/net/mptcp/protocol.c +++ b/net/mptcp/protocol.c @@ -1593,11 +1593,11 @@ static void __mptcp_subflow_push_pending(struct soc= k *sk, struct sock *ssk, bool ssk_first) { struct mptcp_sock *msk =3D mptcp_sk(sk); + struct mptcp_subflow_context *subflow; struct mptcp_sendmsg_info info =3D { .data_lock_held =3D true, }; bool first =3D ssk_first; - struct sock *xmit_ssk; int copied =3D 0; =20 info.flags =3D 0; @@ -1605,18 +1605,39 @@ static void __mptcp_subflow_push_pending(struct soc= k *sk, struct sock *ssk, /* check for a different subflow usage only after * spooling the first chunk of data */ - xmit_ssk =3D first ? ssk : mptcp_subflow_get_send(msk); - if (!xmit_ssk) - goto out; - if (xmit_ssk !=3D ssk) { - mptcp_subflow_delegate(mptcp_subflow_ctx(xmit_ssk), - MPTCP_DELEGATE_SEND); - goto out; + if (first) { + copied =3D __subflow_push_pending(sk, ssk, &info); + if (!copied) + break; + first =3D false; + msk->last_snd =3D ssk; + continue; } =20 - copied =3D __subflow_push_pending(sk, ssk, &info); - if (!copied) - break; + if (mptcp_sched_get_send(msk)) + goto out; + + mptcp_for_each_subflow(msk, subflow) { + if (READ_ONCE(subflow->scheduled)) { + struct sock *xmit_ssk =3D mptcp_subflow_tcp_sock(subflow); + + if (xmit_ssk !=3D ssk) { + if (mptcp_subflow_has_delegated_action(subflow)) + goto out; + mptcp_subflow_delegate(mptcp_subflow_ctx(xmit_ssk), + MPTCP_DELEGATE_SEND); + msk->last_snd =3D xmit_ssk; + mptcp_subflow_set_scheduled(subflow, false); + continue; + } + + copied =3D __subflow_push_pending(sk, ssk, &info); + if (!copied) + goto out; + msk->last_snd =3D ssk; + mptcp_subflow_set_scheduled(subflow, false); + } + } } =20 out: --=20 2.35.3 From nobody Tue Dec 16 03:46:14 2025 Received: from EUR05-AM6-obe.outbound.protection.outlook.com (mail-am6eur05on2044.outbound.protection.outlook.com [40.107.22.44]) (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 6391A33D9 for ; Sun, 2 Oct 2022 14:26:10 +0000 (UTC) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=nLvA4t/e7ExnwzoHdWANhC64MvK/n9CWW2uYFIy2VcRkzo3fVOeNIYxNrvEpMEPLJIdfi6HanVfuy9SoCwzljUBG6FQfsVktzaLpVOL08/hpKy2NwOAC5JMQYNjboyyCs/MMTGS0CzFQFEF7s3IlXYNlVM7PkryZbIZYFm8DNyBX9VPd1MjM14tbDgEaKRbEFZd3B0fgWS6/dgkDY9mbMlO1GtqlBMGm60K4bJChFUwL28JU0VJXH4luyCX9SR007I7xy+xnd0bVECjj96MgHFn2e9S01rxvoNIPN6N1yEi4NV3cOKD6Eyykmmf4ZyqWk9CNLLyBXlGx9GWi5qWkWA== 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=ZlF3IwrBPjtRNdYoykgDViNUqjPyquCPzvN4olnC2KM=; b=fTqGJ06HwdROu7X6KwvVGX5tXil6ymAUKTL3vi4A7bQ0LAK2Lw9sA8RYBv8OWXwwZHo6XdSzFXqhgNLszAgodbPu/1vWah/hsRndQJdODLnPRbP0xFwpuSS3jyJYKcRn4+khPDqgMHIlqx6CCyCufYLZ+u5WRsCoSyOaySsp2jrNSQopGIUMQ40jLOxje66eMXuAeZMGySxoXHurcVAxgyfcHGDqynQuZeaiMSN5axYoWbDIQhu8uvDwycIyQ6E4adSN1ZjSWjdUXIDN6/JIUCHV8UXfcywz1z4T4whySYQ30mDIHIGNsZKsxUtQqolT8imSStbhn+4lhAJfYRyluQ== 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=ZlF3IwrBPjtRNdYoykgDViNUqjPyquCPzvN4olnC2KM=; b=alG3HEP9L2bOfwPIAXu1FVD3vwlwNZjC21gxPp64C14XmDyVok73P20Rzi/+5KRZzKSfNi9TeBH4JUKOsd14HxO2wpGejUhvFpFVPRW4elZ19x2sIoeAngN/9dR625VAtE2lPyT9EICgLlymUqAsHAURTNQlFDva6QTBCT87kxJKCWG6kuGJaQ865PCSBlTrdl9S8ExMHT5UHl2yN9LqT4tYPWWMQYGRVReAGJi0ufW2HDrIS7XJyUeQr8BsIOg6iUkGVTaF+ZNtbldqQs6Z7ofMOqJiP7FiwTc33nCiTuMJw9UAaDxAEA3RZnjlVsft/MRMSZq4eItbYjbsTa7pag== 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 AS8PR04MB8738.eurprd04.prod.outlook.com (2603:10a6:20b:42b::19) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5676.24; Sun, 2 Oct 2022 14:26:08 +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.024; Sun, 2 Oct 2022 14:26:08 +0000 From: Geliang Tang To: mptcp@lists.linux.dev Cc: Geliang Tang Subject: [PATCH mptcp-next v4 11/11] mptcp: multi subflows retrans support Date: Sun, 2 Oct 2022 22:25:19 +0800 Message-Id: <98389b79ee3e35b87bdba1b82ba409d6f921aa72.1664720538.git.geliang.tang@suse.com> X-Mailer: git-send-email 2.35.3 In-Reply-To: References: Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: SI2PR01CA0022.apcprd01.prod.exchangelabs.com (2603:1096:4:192::14) 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_|AS8PR04MB8738:EE_ X-MS-Office365-Filtering-Correlation-Id: aac8f4e2-2519-473a-d26e-08daa4820bd7 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: EiYyLi3pnG9uIklk/xmP9AL3kflECyhHGJacUvNXvceQ5DjdFSfybKvn8OTWsi3GFwXzWqkPUPK62NeyBJ/FBozKNqXaYnHskqMnoBaCNKus60Bk4SzFu1VajFJv/ugqjDcDIRHYloVzgHV1yE4tG6sLs2Pb57CaZ6egyJY8gtwV2ySa+7HRPDT+Cf2CkRH5wlQgYmLiazb9B2X4r5O7jG30eC5J8DRecMd3iW7ZZQ1JJ208I9Z86I0Fs75RT6vV9bNcR+lg4Gbrow7pxy7o64JK5DxnmGtPLNEB2JSKtfYs3T7in/xpLfaVzBgDGUBZw9+Ru4Ky+Ah8TP0LmOuGEnjkJVMPK6+e5fj9cYzgiEmb+x5NGcE6g/703Q8rt8AV+zeDZpoeV25dh7ziEHBwZ7dcIn1fO9rsWbWvfBqqQ55sTnxYDOXfszaSktFSwYRS1ful9WbpkRhEINy+Qvba0kGFSV1m0sypHWzevpy1spq1PRo9ABmrg4wfYBsoMie/UwZSRd91wOkEs4+UTyDx8j0PUKPrwrq3oNOvleO9yzYzvz5FvJ0GQSADKG5xhxBCR6z0boXnVXNa4OsBqtgS03s+lQR0pNLG2aT3/a5vjB1X9ju7DneuMcAr59sK2x89ecVaFVRCs/KuolX8W3Caa2yKDNqTJUh2tnLlafLMdaLwfhTEmQLXO2rSnzXWwkip6QjjXXYmfI0QFf4ilPscAw== 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)(376002)(396003)(366004)(136003)(39850400004)(346002)(451199015)(186003)(86362001)(2616005)(83380400001)(66476007)(38100700002)(66556008)(66946007)(478600001)(5660300002)(8676002)(4326008)(44832011)(2906002)(8936002)(316002)(6486002)(107886003)(26005)(6666004)(6512007)(6506007)(36756003)(41300700001)(6916009);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?7HwRGyyHymR78DSQ746CI83UTGz31vlvLC056Cwo2S89nDuCGleDLi9EMgb4?= =?us-ascii?Q?pRjvKs1OQFaEP9b1hDmFMGHfuv/hpz25FEz93V6cWgzsYPWoN5oB0LWcoqyq?= =?us-ascii?Q?P6BC5R3rY8k9IZ4SJbiV/HjtuWj5lODztBXId5KCnB61KZjHpwI2uh/wEWX1?= =?us-ascii?Q?bq/1VL8MVnFB6DDNPJwHbLkqaxQ1dwutHWC7Or9BmPx3kRvnh3OMWnKGMZEV?= =?us-ascii?Q?LizylwGwHzepEq6b5ylgDoI9l2P4GS/ZNenic+8N45+ISNqFAPNuZcP/NQmS?= =?us-ascii?Q?qoNKkTHp1E0UFrq0JE0R8AGsIylZOaBjqM57iymktkAUrotm8RSWL0uNNySO?= =?us-ascii?Q?P2vK3lMIBQjfK+3lJWR7Q3LLELU6jn9lSWNTu5HAQUdok3x8mPtExuyJgVOm?= =?us-ascii?Q?ruCTRZYhp1YMh49VUCM4gl+109sYc8xT8X6MPNXRww4mnzefhu4kSuM7Doxo?= =?us-ascii?Q?8MKiycos33KTWVWdrjmjQjn07GVAWrz3GKjvXfGV5Ltp89d9JSfmTnH5ot7Y?= =?us-ascii?Q?d4uv0kbmskBWLz3d3N9MZOwZznwNHP9D2jXEO0llbhvj276FHz872Ty0XiLT?= =?us-ascii?Q?3cByqdIRxTj1UOhQX8o3Wncr6DFPOfrgDEjH7mhVuWnYf16dkXOslf6x8/TR?= =?us-ascii?Q?WnCUnywwrLjlMZv/tng+qwZuxVe7LqaX9ke+dOECA7QC7zOZTJeRkrOcWv7M?= =?us-ascii?Q?ojR/e5DRR1MW7PmbXn1/ke7hxNEXpkVLcsXtwPWO7zytTCulSAhByKmxJKfk?= =?us-ascii?Q?J/GeQU37ijvtoH5loK4Ig26WxnwHVK/7kmHP/8bOGImp6MShpjhpTrUJE8sb?= =?us-ascii?Q?zL731M9ddz4HPc2bA5/QvHt/Vhv1VO6y+2SjLdwFv+VIN9C6RBK/x3XxxpRM?= =?us-ascii?Q?P6LbSxIVZjMQ/8op3/ZZb6SN6Vl4B+DO95p4I+d2IxYFdXGnt/PsFjld+25R?= =?us-ascii?Q?N6h/eL7qVnmJYOGDW1deNgkL4nHxzCkt8sQQht/rUcIHOVqVcJez27MinDwq?= =?us-ascii?Q?Enc2DbLNeDa0cn97L/D12euKxHmc/93aOROhuQgzJ0MuIVrvxqafNhNAWGRI?= =?us-ascii?Q?wic3Mw1gTsHq6BXCGU25Ex+Mu/L3jbimRqrsJXyhjbYkH39qveVdiNeJIk5V?= =?us-ascii?Q?6RRBfVqx2g4klPL9PVPb9kEavpJFemvtiBoVWUCTkrsqDRfh0pVWJ0C6BcbN?= =?us-ascii?Q?RT6G2hrS5uDm5MK4XYoECDWxHPjwJvVP+rWtNvfDB1K95w575Z2OHVchVh5C?= =?us-ascii?Q?/jsvMPVs0cVuVdJO/KoH5Qff9ohfycMsbweMJKh54UNFJxSrcsxkiour9XF+?= =?us-ascii?Q?E46N76YNO2O33jmbEnd36cNHst028NUr64MT5sXEgKRv9Z0GkRueIzHxM7xT?= =?us-ascii?Q?vmvX8BHNgqeagKKBhlWceqMtTlvt8YkyiuMUa+fkxxIGKd3pHHrnlHQE8K3g?= =?us-ascii?Q?HhMbwBfn/i7aWFSYlBPFFoFp59wzlbMy2eg8q20SBCjuriJtLyo8PZDvAgYh?= =?us-ascii?Q?unulf9XAMXat3iy2bsuuNx55osmedtILzlsg5wnLe7SrCl9foNcWRbqn3ruK?= =?us-ascii?Q?fHpQYQ8zo5g/GCHO01qEhmw9DD1NMbTbMEyVWYZ3dIVUe5BgnVgfuPsPjdLa?= =?us-ascii?Q?OQ=3D=3D?= X-OriginatorOrg: suse.com X-MS-Exchange-CrossTenant-Network-Message-Id: aac8f4e2-2519-473a-d26e-08daa4820bd7 X-MS-Exchange-CrossTenant-AuthSource: HE1PR0402MB3497.eurprd04.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 02 Oct 2022 14:26:08.0243 (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: TTLPlWkbyBwhPa1+ZDzwS2asxi4iA9gCxNPL8KrWU0mKd57wU7AZaUvSY7i00AMcXEC2J+uCvYc3zUzYAGEeFQ== X-MS-Exchange-Transport-CrossTenantHeadersStamped: AS8PR04MB8738 Content-Type: text/plain; charset="utf-8" This patch adds the multiple subflows support for __mptcp_retrans(). In it, use sched_get_retrans() wrapper instead of mptcp_subflow_get_retrans(). Iterate each subflow of msk, check the scheduled flag to test if it is picked by the scheduler. If so, use it to retrans data. Signed-off-by: Geliang Tang --- net/mptcp/protocol.c | 62 ++++++++++++++++++++++++++++---------------- 1 file changed, 39 insertions(+), 23 deletions(-) diff --git a/net/mptcp/protocol.c b/net/mptcp/protocol.c index 85f72cdfa2c4..b90b4bb70ec4 100644 --- a/net/mptcp/protocol.c +++ b/net/mptcp/protocol.c @@ -2468,16 +2468,17 @@ static void mptcp_check_fastclose(struct mptcp_sock= *msk) static void __mptcp_retrans(struct sock *sk) { struct mptcp_sock *msk =3D mptcp_sk(sk); + struct mptcp_subflow_context *subflow; struct mptcp_sendmsg_info info =3D {}; struct mptcp_data_frag *dfrag; - size_t copied =3D 0; struct sock *ssk; - int ret; + int ret, err; + u16 len =3D 0; =20 mptcp_clean_una_wakeup(sk); =20 /* first check ssk: need to kick "stale" logic */ - ssk =3D mptcp_subflow_get_retrans(msk); + err =3D mptcp_sched_get_retrans(msk); dfrag =3D mptcp_rtx_head(sk); if (!dfrag) { if (mptcp_data_fin_enabled(msk)) { @@ -2496,31 +2497,46 @@ static void __mptcp_retrans(struct sock *sk) goto reset_timer; } =20 - if (!ssk) + if (err) goto reset_timer; =20 - lock_sock(ssk); + mptcp_for_each_subflow(msk, subflow) { + if (READ_ONCE(subflow->scheduled)) { + u16 copied =3D 0; + + ssk =3D mptcp_subflow_tcp_sock(subflow); + if (!ssk) + goto reset_timer; + + lock_sock(ssk); + + /* limit retransmission to the bytes already sent on some subflows */ + info.sent =3D 0; + info.limit =3D READ_ONCE(msk->csum_enabled) ? dfrag->data_len : + dfrag->already_sent; + while (info.sent < info.limit) { + ret =3D mptcp_sendmsg_frag(sk, ssk, dfrag, &info); + if (ret <=3D 0) + break; + + MPTCP_INC_STATS(sock_net(sk), MPTCP_MIB_RETRANSSEGS); + copied +=3D ret; + info.sent +=3D ret; + } + if (copied) { + len =3D max(copied, len); + tcp_push(ssk, 0, info.mss_now, tcp_sk(ssk)->nonagle, + info.size_goal); + WRITE_ONCE(msk->allow_infinite_fallback, false); + } =20 - /* limit retransmission to the bytes already sent on some subflows */ - info.sent =3D 0; - info.limit =3D READ_ONCE(msk->csum_enabled) ? dfrag->data_len : dfrag->al= ready_sent; - while (info.sent < info.limit) { - ret =3D mptcp_sendmsg_frag(sk, ssk, dfrag, &info); - if (ret <=3D 0) - break; + release_sock(ssk); =20 - MPTCP_INC_STATS(sock_net(sk), MPTCP_MIB_RETRANSSEGS); - copied +=3D ret; - info.sent +=3D ret; - } - if (copied) { - dfrag->already_sent =3D max(dfrag->already_sent, info.sent); - tcp_push(ssk, 0, info.mss_now, tcp_sk(ssk)->nonagle, - info.size_goal); - WRITE_ONCE(msk->allow_infinite_fallback, false); + msk->last_snd =3D ssk; + mptcp_subflow_set_scheduled(subflow, false); + } } - - release_sock(ssk); + dfrag->already_sent =3D max(dfrag->already_sent, len); =20 reset_timer: mptcp_check_and_set_pending(sk); --=20 2.35.3