From nobody Thu May 2 04:02:48 2024 Received: from EUR04-VI1-obe.outbound.protection.outlook.com (mail-eopbgr80088.outbound.protection.outlook.com [40.107.8.88]) (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 20B937F6 for ; Thu, 6 Oct 2022 12:17:51 +0000 (UTC) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=TS7N1rGzn2BtlGrIC29HruCeVcV2vZ6wBiMsRm5XIbSnsca2yvBS4s//gFOdr2GADCGsIe7IfpUjQaGCM/nfdO2vQU4QUKWYdpSjifgDlyNn1wk6szTDKFKscWymTLNXH+xL87MQtWoUDzPXGOk57Uiar3nc/4bOv1PTkm7j75mx/d5e544qq1CsHJM4OkxCmnO4Ck5iYe43t3c+YRiOsEu7k4+qfcn5RKszxoxgLmNAYXxZxqVBcE3j/y4pxnoOGFM0COtnBRDpre5BjbJdKVWPzj6lmdm6wdsPHS5f7X2WUI4kNDAhc5o7voubQjfJoyxUqUIK+6bUS5ene7XOjw== 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=/1/o6gkFc6KyW8Wjr3QM1a7oD22sfBNCHYRbBqSUVQU=; b=JyA4vNrvIFrdcdpPHlRc7ttZCXA2R1XL+RLaJSVuzAClmXTpB/GTxWCP/YctKlyMiHLNU6QefUoegbSZgW7gRnVJ4+Wy6l0S/SRLwaSX/drf7+HuC2HILM2ERxthC5vphssrmFAHZkbSF+OzxUT44No74LKDcxAue3UsOwPO8/raWHXmbb0oNnDI0p+F+YXc7F4Z8cV2AxsjH2SxBKJVIPzSyJ7Wa2lwp1TJa3j0NSE3Y+l/5yh7xUH0o3eh0YA6Ri3ff+8NaisfoDigckTxsc+U4waKTiB0mDJ3+a1b5QRmyUrMrAF0Ic0xzU7J3l4qBPAp+wJRbC6h85jx9skYuw== 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=/1/o6gkFc6KyW8Wjr3QM1a7oD22sfBNCHYRbBqSUVQU=; b=DDd5U2C3Udvb82k+3UX1XvvAvRmY0EkbrdCuHKSDhvr3kGrb4ytbYNZcQJuDPakxw3845GlyO788y6afXSzPRbP1fDtOOZDyL4JYaomCs+qrzuRrf3P1AARyBeO8XagGDn67/Da8GSko3rGXP4T+VjbTAWSQS8dCYbbXBTT9t31TaD4x7Ka9R9PFC13DEFf7hQW/ff9lrONkHN9/DSK9Y4UOwR5oJDRCrN1JZ1vG1t3PvCX2H5fpMW4s6bgl/DjFF4oMfB/TgSjDdKqBL+njIWDD4uMzhIiIm8/54ZmDRRS8bvx+iS0SNe9xGQHddZsH0T/OIK+HIMish0SdFjURIg== 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 AM9PR04MB8276.eurprd04.prod.outlook.com (2603:10a6:20b:3e7::14) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5676.32; Thu, 6 Oct 2022 12:17:49 +0000 Received: from HE1PR0402MB3497.eurprd04.prod.outlook.com ([fe80::c5ff:965f:506f:6770]) by HE1PR0402MB3497.eurprd04.prod.outlook.com ([fe80::c5ff:965f:506f:6770%4]) with mapi id 15.20.5676.034; Thu, 6 Oct 2022 12:17:48 +0000 From: Geliang Tang To: mptcp@lists.linux.dev Cc: Geliang Tang Subject: [PATCH mptcp-next v5 01/11] Squash to "mptcp: add get_subflow wrappers" Date: Thu, 6 Oct 2022 20:17:49 +0800 Message-Id: <08b3778e9ddad94e8a5e21660692afec1d3f81e1.1665058388.git.geliang.tang@suse.com> X-Mailer: git-send-email 2.35.3 In-Reply-To: References: Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: SG2PR02CA0084.apcprd02.prod.outlook.com (2603:1096:4:90::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_|AM9PR04MB8276:EE_ X-MS-Office365-Filtering-Correlation-Id: 4be28d22-528b-4eca-c7e7-08daa794c80f X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: ljlNut8TdvtFivMmEeUemPdF5GR5ADxsnjJAQbxXdXou3MahzbtNV6xM4AgAY1eAqNnxzfc9IyCYOwZ87wyROixUedDei3L+JdKbLmGJSu0QCzHkG+Ok7MgHD5TC01icJgJpWw/r1ebbqrkv2QuXoxbd+fqg1oIIJEaxz28Vi901P+Pst0MVo3e1OxAFQEysLYupeQuDm/XASewZzNGjAUPAVnefyqvGtyufROY4fM8yFstYrCMxa0Pcc9dQ0NBJGRH2jv7uoYwy5WKaeRLLUmi8KaGeTii0+QSznz8W372/ikKU9ZsGTYW0UaxurV/U2eqbeBrlqwZZTlfsokbYWi/l2d1j9uHM7Lc8cUTPUJMzrXc3pJSw6JBUMw3hRxXvKOeLChRWvwodADz1oPau11UdD0JxXr9T1M/hCii+uUZG+/LPsWMArmNE47gFOWQOlRF+z/KspzUSDXGIKh3Bm0la1XF8bsbAJokvnnWL6/CECnaWpRjpV6IjwRTlQSN2ywdH2y9np89BtHs3e/1IIGhIL+quk/6RdB5vGmqbdkJKKlG15TyAPymXfsWhBZhh+6cYz6UET8v43F/ToKASbZH3Jvr21RTZxm3tJDCYEVcpv95ZSQqYKHqgqYcRk3cmsdc43Z0CrMyxbSEnCMrqQBpRRVF3AD2+OqgmWqBLDNoz8uVAopfd3YlbA2K4lHlWUBhfZUMGkGdKmZxWlaaMR/QlQ9ssY09tBLuDuzcYTK9eXns9eR24MYAvJmN/jqb1 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)(136003)(346002)(376002)(366004)(396003)(39860400002)(451199015)(6512007)(26005)(6486002)(8676002)(4326008)(316002)(2616005)(86362001)(36756003)(38100700002)(107886003)(186003)(83380400001)(66476007)(478600001)(6506007)(6916009)(2906002)(44832011)(8936002)(66946007)(66556008)(5660300002)(41300700001)(13296009);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?9u0QKxRX6+r2UzXjDQRlZWakPobtaRmCXxQMTDPERanYnUrstHJVkIm/mqek?= =?us-ascii?Q?phgs2cjSwJOVfVPEOvQvNCx0J267vrg9eP1Hu1eU9ZmLBngDMLDVPMJqDMVz?= =?us-ascii?Q?d/cxifoKb6ZVK6b7EvL5hzxPKgv7yDGEr5zJ/myFF4Kh5JZtOk3iHEhXFzTS?= =?us-ascii?Q?tLy48U2D3CID1jlz/PK/EnDK4jI1lMBwiiBlyouMVTuWi7OWx76IpOWFm0Vz?= =?us-ascii?Q?Fe7p9MimwaWb/w7JUUJtqKtdwPwJEI1/JGipNYzbmGwZJEqWxqkSCtKbL0yU?= =?us-ascii?Q?9xfhSW84PHHVSn30EmJ4GqMcGBNo1RN3mDr5hI4IayN8N76JX7W9vTRUBsj7?= =?us-ascii?Q?of9Ui05GldE/FeQGDlJv2azoBft3w1U7JMsCvcI6BTf8h9TjNgpcSMbNjBei?= =?us-ascii?Q?JXaZt9gSqauDZwWVMMbiu+TcGmsVQDD22coovK7LQw9pClwEBmR98vCadU3v?= =?us-ascii?Q?YFcYXM4w/gOCbaMPsoEr+tRZ2D3s2k8duR7gsTw8ONpmFzI28jPPzmzUwGVV?= =?us-ascii?Q?2eidS/UaJhdJC55wW/OaUHYZRmqEQowe8sJtdMJT/TZ9e8WHpLOMJeKXIbdq?= =?us-ascii?Q?LjFo/q7U9BIA1oAF6XoW46rd9gK8oyYGIJ19TAZznsbS/RUTsA9v1CUuJpi5?= =?us-ascii?Q?PmcfsE9lrKk4y6MalgTmSNwlLZuCZBeI+JdBerwBrbxcKSH1MctL3hc7Cmvu?= =?us-ascii?Q?zB3aw9N/6TiNMfydyuirPHjhAPFzEkMZffGSyfH0JxIb+b27nCElUykHFaks?= =?us-ascii?Q?322KBNyY4W7buqIINHIHyC68Gp9qsUqdm+ai3bdUrdngCGZszgqEcE3d9kTy?= =?us-ascii?Q?Oa1Z4/n+G0tfN7HaYCeT8nqd+DA4Kt8i+cUsIDDdnymd0dxaUP5odOJgAvNT?= =?us-ascii?Q?nJGC7XQq0UROyaV4rO38QKhmrQImocUR53vTQEfZRh2JjUVZtXLpfNIOvIq3?= =?us-ascii?Q?p9RRLq2zLnwn2Kf3yOB4jMP39R2U9z2vI0f7FZl5eOXvzaeLl9tV2SNcepB1?= =?us-ascii?Q?Bvggf2ioqV7sEbdzXLlfkfW6BwEjgWZNQApXxznQEjpJyvzDQO+TFSydDOqs?= =?us-ascii?Q?eZDlVNO1wS6UxuFIMAu2S9f1OK5RNyUMkTq8qRtCHuNhorCYO6192bMoAols?= =?us-ascii?Q?hOhknZtm2mwpItc7NO6Totq14gO1FJQUUG1oq9wU0izAbqnY3Ddrl8b45orW?= =?us-ascii?Q?rCSXO2uysisGr6uWbZQKBHY9fAr+a9h9o5N1rwjUAyy+ZJUmXq/A4oWIdO74?= =?us-ascii?Q?X75Sc2yXL+VdsISzO9hFodhOSBmJZ+Wp0l0KvXk2gt1tdIBfbVqHwNuIPg7g?= =?us-ascii?Q?mLmvvQC+hs9YRM4EGyXJg343aLC8AAG0S6LAxgQ2DBE6tvUkFyZSdSwI+vra?= =?us-ascii?Q?6L6no1qNYggnzIPA2uKHKPj/nwJBe2eZrd53CudcPQO9ykB8a+uU+Psma9CB?= =?us-ascii?Q?f2iByCgBwl7MV8x1HHdu5IFVnyuXTQ8awWYlN/buo/bHn9SfLX8sZ9qJK0OD?= =?us-ascii?Q?f+UHQisrv3B5g2gVNRWptfJQbNLZnBMh8V4npE6U541W22ehsD32wnxeZDD6?= =?us-ascii?Q?g/zAW6FShWvKRXbicvYrMEDI9Q/o+7F5C0ZSdRilBMTOl2QTlm8nmH7gVqBG?= =?us-ascii?Q?pg=3D=3D?= X-OriginatorOrg: suse.com X-MS-Exchange-CrossTenant-Network-Message-Id: 4be28d22-528b-4eca-c7e7-08daa794c80f X-MS-Exchange-CrossTenant-AuthSource: HE1PR0402MB3497.eurprd04.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 06 Oct 2022 12:17:48.1697 (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: Crz1mulIA6uYQFDq4r3w4c8If1Y1KE1xa2Ooj1+pLfSR3ilsmUabnCRAigR0pX3rbPNwvlBoDKhOCJ8ZSbX3qA== X-MS-Exchange-Transport-CrossTenantHeadersStamped: AM9PR04MB8276 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 8feb684408f7..d500a00fa778 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 Thu May 2 04:02:48 2024 Received: from EUR04-VI1-obe.outbound.protection.outlook.com (mail-eopbgr80083.outbound.protection.outlook.com [40.107.8.83]) (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 C07F37F6 for ; Thu, 6 Oct 2022 12:17:56 +0000 (UTC) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=M4ZoFvRdY9/jApwHu7L2qWxDvwh34kNbJ02eFx5zG2Ud/INmYFtREtUYJ3w/Yj/5cF4Ns8I1+Is3yPzp/Se457c04tLP7ml9CGgDe1ci7z+h0kCmXbI9HTgTV4hW9aPkJ4tuguCKHbZtgxVRHO/6b5Z3RQ9wg/Vw6JuFj/c99viHlFeFQO7HEQ3mnZwOZu408BuqWTGkQUT33x/LtbutBOUBCZXhWtEHyitcK5Em3KF3vkYEab3JlRFibd1ALelZg4lcEM60GVFWHO7AdM6gtLzNxGZicyLxXt8ixePNOoDF+3Gs23VDpzdJjO0C60BMZE3/1cMw8PqJh3L0u5KNcg== 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=snPSMc/WxxctTtHWzJHq+ZL2ifJ8X4DF5foKJvwRX5w=; b=HID6NdmQrDKc6yBcr0O5e6Vi2n3huqkxXWsf32vMCFEYYF7B/siw0oXJGX4lOlmDSkfjWEstEkxBbNIfzrYyxr+2xKHSbtsK3YYC6A/i2RsdDxZBv7HcznEwE9mqlV6DN0uiP30aThConOTg1XvuDdgzcR1SuQ5tsT4zDaroCyZxNozqS2/7e2L6DuBAWrNHJJaq3Cn6DcJ99M9AyDdRsh8e1ljaf6BXUTcsG/yM/atyjNkZoSp4T6/Nv4oVF89ez53N8YTBqoc8B8cyj2hgh4AfU1R8i/4FY2Fi9Ejg8jLACnfgpXllsdqYaa9j33jymUKQT8HP6j+P1xfXWDaSKg== 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=snPSMc/WxxctTtHWzJHq+ZL2ifJ8X4DF5foKJvwRX5w=; b=Fd6/137CUVoTq1n4VMGzY0GA+IaJ9c02MTfx1Zyru0JPAR3d5F0ckf2Q5o3JMTXiVdl46+6tVLXubWTfpm9RHyvE863an3Qll5CIpc2yAWCFBfU4f9UWi+krgsrClGLicD0J7ArhHpMYew6A5nZLmE95VTjOy7ERgDXfLBp7R8BGR37IHDOxda02FWh8xmmW1NU9aUxKH/rxFANglqConrQaDxcwop4eEKf4dihimTzUmWtTHKrOD/5WdbS3jZc8a5jDCmYqvGw4YMMVv4Udsfr9ShrnK1XoyRK29FzqykLuMZ/Tk015GuPgBeLnsVSrG27hxBHNOr7Dfmjf9oLUxg== 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 AM9PR04MB8276.eurprd04.prod.outlook.com (2603:10a6:20b:3e7::14) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5676.32; Thu, 6 Oct 2022 12:17:54 +0000 Received: from HE1PR0402MB3497.eurprd04.prod.outlook.com ([fe80::c5ff:965f:506f:6770]) by HE1PR0402MB3497.eurprd04.prod.outlook.com ([fe80::c5ff:965f:506f:6770%4]) with mapi id 15.20.5676.034; Thu, 6 Oct 2022 12:17:54 +0000 From: Geliang Tang To: mptcp@lists.linux.dev Cc: Geliang Tang Subject: [PATCH mptcp-next v5 02/11] mptcp: 'first' argument for subflow_push_pending Date: Thu, 6 Oct 2022 20:17:50 +0800 Message-Id: <1d5861f38dcb25e8fc9f870e4920177585c28da9.1665058388.git.geliang.tang@suse.com> X-Mailer: git-send-email 2.35.3 In-Reply-To: References: Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: SG2PR02CA0082.apcprd02.prod.outlook.com (2603:1096:4:90::22) To HE1PR0402MB3497.eurprd04.prod.outlook.com (2603:10a6:7:83::14) Precedence: bulk X-Mailing-List: mptcp@lists.linux.dev List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: HE1PR0402MB3497:EE_|AM9PR04MB8276:EE_ X-MS-Office365-Filtering-Correlation-Id: d9299c5e-65e6-4dc1-b16c-08daa794cbb8 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: fyU3OoZA/5Y7D1dR7V9leuBbeIK2plS3vgxyzwsU5XwDjr5Khee8xsf/5QFQXcsqhijaOdQg++4hiWKuU7xh6jIDjTtMURW2DLRQ4nsmZDX4AJSfng+AMwgO5bXELeceDxzzOFJEVHJn69HThlEg1ce9+lESLLNLYaLuhtF0UlAOm3Hbsad+h8l8vLvoR9AmTr04uw+oip0lC7NGJI4CT+Tc85JbxZKclIoTeD8OowF25qF6GuQfo9tj5NLIqjnzl5G+s1YILRLdZkZqKWEsM2uE23xQCLLRosRTpToAYk9mUPBH9TtVcpmMfoYRk0yQCGQ/9SVybzopyHpmiuBiRucA6INW5QZ1ZQ56vj2H05po/V776Wh12O4AXOj0YteJjFXLaAH2lpXHgRFKma3qcDtlLAAZ3r8M39ZM2H0mKenYeDQyC9OpJNjvLMjx+79fl9i0aafUj2c9xslVHvvBrgOdXOy376kBdQYvxq7NCekdP55KB3i81QBFoOIkeDu15DCRk8qjnk4+CWQ9AMtCL+P/cByOsg/fJ+/cir3SNUgOqEWDWzU5lIHn8s4wBhna08OUVY6+Ph/haB5kiXNx3QRhL8mflq6ObkoH4Jj4IqG7Bwi2UlC3l9X7WV1oHA0zNgBY2oS3aks3CrRz0fX+gFD5uf3G3gQX5jS6VmzAEKo6AwAvIQg0iF/TIDt4pNRInyVU8WM9T2pXeYVfrimL6TApJtvwB2wblRVyj/BCV7txe4TRELwie7xNn16sVDU6 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)(136003)(346002)(376002)(366004)(396003)(39860400002)(451199015)(6512007)(26005)(6486002)(66899015)(8676002)(4326008)(316002)(2616005)(86362001)(36756003)(38100700002)(107886003)(186003)(83380400001)(6666004)(66476007)(478600001)(6506007)(6916009)(2906002)(44832011)(8936002)(66946007)(66556008)(5660300002)(41300700001)(13296009);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?GVxOZcrwvoqLECOw+IO5NMVWhmX0gSuvZ1YMkYUf/IM/WQBd/jCTkVC87DwW?= =?us-ascii?Q?OsN4OtNkz7lDm+7meyKhaFiTfwQIWnwHoEU4RxXsjcA871FCwLoyRTgFUE+/?= =?us-ascii?Q?g2BTIaRNj3FRzCQ56smuOUyabLnuzFbOCLn8Oz80ERNdJjb0fQdRMxJJc6wC?= =?us-ascii?Q?dp+9p0dZYdrhdlHz8t6DjWAsMTDflFyY0DHNrmy8a3Agzbu0VOBr2oYCPD37?= =?us-ascii?Q?z9DSImTNDDUopSikRavHZyPfYYQsMAwz11hAIG1CfoysNZLz6dumKyvjkAzj?= =?us-ascii?Q?IVLhsEpDGr6LJiNGQyaOKUQ5Bd1o0NzI8trUmTnPaQ3z8tDJs4jcwZX5ZCLQ?= =?us-ascii?Q?j32wy0kAvfOEi9B1g1tJS5WlRKRWTUEQPpgeXA+qWab7sZgpL1Gpl//xkMu1?= =?us-ascii?Q?Ql3m729XpjvZZ3kVVrd47xkLlLPQ8somcSVdM0JQ9H07qPh+pD/yNGPfy1cA?= =?us-ascii?Q?VIFLCPRLNnDMfLO7ApsCQHIB19V1C+aWfakk5M+b+2+Fwzz9nxt/lTll644M?= =?us-ascii?Q?MpsJxM/gUcpYw3dmHzuueNZPRWRVz5mBw1LlAglpp446FfjtAtyyxCRUWS7N?= =?us-ascii?Q?7E2e/o9clfhxx9Ccd8uhqS4lJtKz3jd6rfP/sGo0YCzSzQujZLsrcCA/jzUJ?= =?us-ascii?Q?ldHgjSgmylcCLYMamRcBjazBZu8pu+NBCu1JNjAdSfoDbs9nftkgXp7VDNUC?= =?us-ascii?Q?tH/LRwBQtl3NDbfx1ovQc0sj1MURFIubG488LlWTV5YkBIFvxGdeY4nCEePD?= =?us-ascii?Q?WpTv/N/NYg2sHL3hEZ2vnEbQbT40cNGf/CVS8zzz0Kr+nvvdfm2POjKtw84T?= =?us-ascii?Q?PYjlEKFsjrLzXurXAm3UBBckcUrB9Eq+y9gEH/moRyMR7pMdPiKzKaVeIjRF?= =?us-ascii?Q?uohDc9oQa6LWeYFnV4HCQMtBwdcUMigLWk6nY9kTpQYcokQXT9KQDW/7D4+e?= =?us-ascii?Q?c6lbxqujeIJzcmF+WgnEXJUuqOMuWovBWhkDKw5p9w9oOCBcW99IuGLlAOPY?= =?us-ascii?Q?YQA/R63WCJocJp4zNryQZ7MqyCuk76OS2xV8GGqqN8PO9dVKUDW2/Im1ivfQ?= =?us-ascii?Q?sZ/Vc1j63sTwBiIYv8WGf39TSnHunDoH2Jlq54x4/Kkq2wRBLEPabyCjXGmV?= =?us-ascii?Q?Igrk5up6oB+YB3d8CyWPyFYYKfXhBzOAxJp/ukAhOeNomqw3A5vpmlfTMS+u?= =?us-ascii?Q?ZCmVOF2IGPIfO4SYhfzz2FC9lkIPxGkwwo6xoo8S6cvBqB59dPS+B8JdlvP6?= =?us-ascii?Q?bWHl71KQ8e1cbySzWVrLMlhkGe/FsEmMgcaDNeen0Gjy1A6wvTVPMslHNAEc?= =?us-ascii?Q?3PfWGiSJXUq/xEZj+V9W9pySTncSz2ZU+tvoLxAeG9X4SYJpVoD4OGgonOlO?= =?us-ascii?Q?ENLHomTQ3Fb4I7Gjg3YlGRT4mjsegiJytU+PSfrCsXXLqfkKTYhG6ltAapQp?= =?us-ascii?Q?HNnlHTEEEIU/8z5t5bM0uIHqQ+AEd7AnPq/VXnlzDE6+CD2Yiv2QxSXF6Avp?= =?us-ascii?Q?LzMMfgMtLR826uXyFXP9SbkDqS55nBHKoMzZf4IXh1liLuDW0Ps4hz7KY1Ow?= =?us-ascii?Q?Ln9cCVszbaZQtyAM776Uqtuf9USrXXseN77eoRhCfvoUrMFprHUGVcrTJI2t?= =?us-ascii?Q?8w=3D=3D?= X-OriginatorOrg: suse.com X-MS-Exchange-CrossTenant-Network-Message-Id: d9299c5e-65e6-4dc1-b16c-08daa794cbb8 X-MS-Exchange-CrossTenant-AuthSource: HE1PR0402MB3497.eurprd04.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 06 Oct 2022 12:17:54.4036 (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: Ws2Pqp+NnFvlbbZ+n28FJd0NskgsRkmrnM3MKP31Txk9i2tue/Oih35JTMSLjHsnrsijL/dJBvpwVwNresQduA== X-MS-Exchange-Transport-CrossTenantHeadersStamped: AM9PR04MB8276 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 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 | 21 +++++++-------------- 1 file changed, 7 insertions(+), 14 deletions(-) diff --git a/net/mptcp/protocol.c b/net/mptcp/protocol.c index d500a00fa778..84d33393d24e 100644 --- a/net/mptcp/protocol.c +++ b/net/mptcp/protocol.c @@ -1593,7 +1593,8 @@ void __mptcp_push_pending(struct sock *sk, unsigned i= nt 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 first) { struct mptcp_sock *msk =3D mptcp_sk(sk); struct mptcp_sendmsg_info info =3D { @@ -1602,7 +1603,6 @@ static void __mptcp_subflow_push_pending(struct sock = *sk, struct sock *ssk) struct mptcp_data_frag *dfrag; struct sock *xmit_ssk; int len, copied =3D 0; - bool first =3D true; =20 info.flags =3D 0; while ((dfrag =3D mptcp_send_head(sk))) { @@ -1612,8 +1612,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 +3194,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 +3288,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 Thu May 2 04:02:48 2024 Received: from EUR03-DBA-obe.outbound.protection.outlook.com (mail-dbaeur03on2066.outbound.protection.outlook.com [40.107.104.66]) (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 0E33C7F6 for ; Thu, 6 Oct 2022 12:18:03 +0000 (UTC) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=XGYcNQmr0SeY/iUl9iNOB7B3w8INV0ZwhYQcP2DHQUCD5KPxmY0rW9wkhzbOHSkMouWlkjbHIG79wducDS2XOBiRC1lnDrCd+VrQuejZEgWYrm+wqcm4fSl+1UUMwo5BGLTt6gyY0+KrAkHxSKZtyTXT/UTjWPBxTn7GtFePd9B7E8XFbM8O36pL4KVO8QQZLFkDML1AXSpBJGts8oFf9o8CZyiobysDBWD3+B1RsJvVSpSX0INkqq6rCot+o4qaTwj7UDUUUCTPyezm8w/jnNAjIBI7I0WB0Eylf2RtBYWfLPTvDYlnDBetGEbo3Xr5c5TiGNZlZQtMZHK4DJxGiQ== 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=OVGxc1el4vLRit1GBQWFhg7+kx66ErXjSf76RYKCiV4=; b=V32BGM8qcAcfufffi8Eg2od+J5QsiKHYWd2ohAtI3fq3FMQMLkjMrFRQ92gy7l871GKTVzkh/7Z3k96qgWTZQ0C9k5WHlLlaGqNXjCDvu8hx/zNjedKRNz2qBMUnzlDxnwIckkJw0ZVhWXT1WSIT3g782iV8QePhE1W5JuvMVG73lg1iTdrplJKBFp3SXIqK9i3r0cbJ/z5i8VJ32jw2FJPFKpbC11VhjOcW6fMJHPITGHnxYZWift4p1AI1ssie8ZQ5a5AGHlwiVd/aOUkbjsCypfGXEyN482dglMIj+mX4C+Fb0KXW7FF2P1tj8Jum/TStI5rmGOgfh8CpC8HyEg== 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=OVGxc1el4vLRit1GBQWFhg7+kx66ErXjSf76RYKCiV4=; b=Mxc9YpTJ5UlUWyD0HzZC5OodnaG6aF34Xbb+D7uQowxkdl+FCBKxtYK0I4scwAhJvWsz7h4FMvUEacE4t+3Qr7iho2LJdRC6qBhbJdK/m88rOAJwV/Ol4/ac337VpLwMU7Ozn5xPcJQLRT59wKSIz17SBIv9sOyBtWwFltswLrjRfelIty9G5U8DDXfRe3gWWem7hGWwa32dBcXFAkqNMbxhPbHVH4PDisN5QcdQLoX3DU5FIEKlQzX4KL4LerGaYdMLzJ6NdFzGE8JXFkZn/YPPGRPW3/QifSZthF+jtRc1p8u/B3iSKK2XXMGHSTDVNcbj16NvxqirnwFiH//KRg== 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 AS8PR04MB8450.eurprd04.prod.outlook.com (2603:10a6:20b:346::5) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5676.34; Thu, 6 Oct 2022 12:18:01 +0000 Received: from HE1PR0402MB3497.eurprd04.prod.outlook.com ([fe80::c5ff:965f:506f:6770]) by HE1PR0402MB3497.eurprd04.prod.outlook.com ([fe80::c5ff:965f:506f:6770%4]) with mapi id 15.20.5676.034; Thu, 6 Oct 2022 12:18:00 +0000 From: Geliang Tang To: mptcp@lists.linux.dev Cc: Geliang Tang Subject: [PATCH mptcp-next v5 03/11] mptcp: refactor push_pending logic Date: Thu, 6 Oct 2022 20:17:51 +0800 Message-Id: X-Mailer: git-send-email 2.35.3 In-Reply-To: References: Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: SI2PR06CA0003.apcprd06.prod.outlook.com (2603:1096:4:186::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_|AS8PR04MB8450:EE_ X-MS-Office365-Filtering-Correlation-Id: f9095ec2-4b36-4870-4915-08daa794cf91 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: jLoFaPGDVWlULqI7v09tqVP+qpvOXEyJcL7ahLGhth+n25y2wpZfIUWuP8isLXGFR1YerLVvWznw/GJeysXPp1/Jkfcs8oKz8d/Pb01Njs/jCVQ4x1thdNkmpzEqM6sIs243qwgJvl/wprnjSnmyzArmkHxCX5im9dCqJfC8yNbnx99/th3F5mxie7BL492Ev0NtHpNjsWRDrcPJhtgQIH9DeE5a5nv0PA3vXPaFo8h002R4FdQ/+kOLeLQgT6jBMXU2EIUXhU8ue04qLnDfMdUa1IaSDKJVa016SSBbZ26+e/dzX9gxKFnj3j/mEvKwzx9Vr2Hl2+ZQENhlTob8A2N96leTKM+g8otXznGsWxwvQIc5iBOLOxVJwnn+wHjfy/xFHe3uRA9p9/0CBtSyDMnYwBC/U2L/qQs7CosUBW0TWHj2j8MqV4OULCwECbVzzn+lDIVJu4u8WWAmkUHU5uI6CxmZpXNbJREG1G+29nUQmMI/uiEp6PbjTiKiDXzpbo9wkJrD/cdWDPXswDV1xR0x9bpcU0EBFMaDQpvyBRtya+2JhubUx+QQYDfkyBuCi+xaoaryYSjDI4aHpaNzCo7RsrlgC0ZnYNUkDpmOo/WPm6V0FT/l3UXihfZOz/P5UxW8m1N1jFMG1ht4v0nS8GWWx62HrBsN9FgoSU9lZe0616F/63c4D8C5def5sW1cpp45gHiss9YZqwVSssJiwyfthgdmclszbkHNY433kr3GfFPGX7NKfEXlm7BtvLcV 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)(136003)(39860400002)(366004)(346002)(396003)(376002)(451199015)(6916009)(41300700001)(316002)(478600001)(6486002)(38100700002)(36756003)(2906002)(8936002)(5660300002)(66946007)(8676002)(66556008)(4326008)(66476007)(44832011)(6512007)(83380400001)(6506007)(26005)(6666004)(2616005)(107886003)(86362001)(186003)(13296009);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?Ho3jvNNn+nTLTrjo1SSPOJmcgHs1gQUt55A3SYml4zARTwjF5ZoDaqwmPzI2?= =?us-ascii?Q?H4TtIS++/Xh7LXIQt/5h3c+wnNqv07+Mtn4MJ5t8WF6IwAo/KwocAIShkX0b?= =?us-ascii?Q?HhQZFK2D961T4x/YnsQObeX2moGimawk7nRVsM9I5F+MeS6t3a2r+y5ne3j3?= =?us-ascii?Q?YQjmcKmyIzXBPTXuIsKJ0nDLxSX5BArvMVvWyA+8/CAAl44c59Vm64piTYnl?= =?us-ascii?Q?+hKBXFhC4HYmZgx9Gu4jfcP0X1gqT95bOoCkeBE/+3O5l4K/t4VmPMkiI5Qa?= =?us-ascii?Q?givsUvaLv3RsLe0iaOARICG+MD7MRA+fTBhrha8DHOO/eAFlGVy2Vk6a1esk?= =?us-ascii?Q?+zNGJG81rsb0d534TGZu/5s5pXTX64mccFlMv+pza2GW9DAaSU1T+eB39XZh?= =?us-ascii?Q?KZbXZf0Dh12IuSfUywlUPe61IgOCy/CExjKr6ItDdT2fnLdF8yFnAI0hxU9+?= =?us-ascii?Q?FmZc1ktytISj0H0pAbnOZDUtPqEYraotaN0lLpk3hn7HYA8xVGCQaJmFwc0J?= =?us-ascii?Q?rdATUcCjbkHpW1+IS4XIDniZeFwq+DUlK0iWZT86haHpZ+Nev+Fi2p8e4IvD?= =?us-ascii?Q?C92jCw1lHMAsSE6ydsF47zDpMTl0xGZxGzlI29XQ5ErgCrZOfpWGK8CK7dKH?= =?us-ascii?Q?MbOAJIv0TcMVjI+p7amhFnPeXwWWdy9ylQjb4ZSo+FLUuYh65nibli4pIqGb?= =?us-ascii?Q?CXv21/vA4OSBFCFEeQDP/nkodeSfNWOtKrXj+1zmhkMERYOWJ1fOhy7/SATF?= =?us-ascii?Q?BgZUHL2p/82hlwOcAl1g070sz2HRXZFAEZQbuI5n7sTGx37/Dh89qXZHhoHY?= =?us-ascii?Q?qvDKp/ixbxMBd9mkqaTtcUthdGtQa02bYhNk2NZOF8wMESw/AxKXy3OJCFT+?= =?us-ascii?Q?wNZlAFpzAvZpFYHGP0RV0iBFnkmUfGgyhuwXW0cPZhUP0SzDP2qR46OjILkP?= =?us-ascii?Q?zKrK2K38CNQB59mqlRkZm5VxAF56G69HAwZ+FtXQuRyGSEJ5sCHYcjluB+Ki?= =?us-ascii?Q?kWQEr+OGgnW82oWkWqRm5J31q4fpiomLIQSObQXvpTjgRTHlehsBmVvix9bx?= =?us-ascii?Q?ViM7a0svD0Ib3FzlqvrmzD3dX+ArPeDfxVs/IjOwNFYn0ogIsf5ec0N8CiPJ?= =?us-ascii?Q?xP0ruDX2rgrh4dAIU7seDCF63H4bgxAppKaghzpp/cHdeVWTCDu8riV5/Fki?= =?us-ascii?Q?uX87BdRajiTHNGjpexaKYP+1sgEKud6XHYoPtd5xstzRqLlD7QBtxeCO2icU?= =?us-ascii?Q?DqgF8EFB2YEuy47QEd7foYK4NSDqCK9IvOrFI158K1MCIe7RJcWvoJbTHbzI?= =?us-ascii?Q?pJS9kJFGt7wCi2SBO/F6liBnUSNv5fh6Ji4xVN29I5dtuCzux6ZVo5fFC1Mt?= =?us-ascii?Q?ZDmK3wfnGhq6JroxkKzs3Bc9EJUvEFdYtza3FBJjRXoJJrzZMJqvcM6ISllj?= =?us-ascii?Q?HsJQOQ29GKUZoUpDoOrY7T/Ogk9l+tHOCeQKCEBjU6bdTQzaeLZFOc3M7K7X?= =?us-ascii?Q?lPKWd6Ap2KLZRdAsanezltdrR89CkaEugjH3WkX32aDQQ13aUSbUVMPFa/AC?= =?us-ascii?Q?AX24PPbvDKGbnHx5ekBfcnojbRuTX3OVUAQD/xoM8ZmweotUyvJ5aW7f2FVX?= =?us-ascii?Q?Cw=3D=3D?= X-OriginatorOrg: suse.com X-MS-Exchange-CrossTenant-Network-Message-Id: f9095ec2-4b36-4870-4915-08daa794cf91 X-MS-Exchange-CrossTenant-AuthSource: HE1PR0402MB3497.eurprd04.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 06 Oct 2022 12:18:00.7624 (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: 6z2ffNlRrg4QNev/nDIEmpBf0JtopGHODezeRRyD6YQoxQ27K26TLxE8ObfV5ixVb7lPA86Q6VHdno8nnjuKDA== X-MS-Exchange-Transport-CrossTenantHeadersStamped: AS8PR04MB8450 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 This patch alse 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 | 86 ++++++++++++++++++++------------------------ 1 file changed, 39 insertions(+), 47 deletions(-) diff --git a/net/mptcp/protocol.c b/net/mptcp/protocol.c index 84d33393d24e..bf77defbc546 100644 --- a/net/mptcp/protocol.c +++ b/net/mptcp/protocol.c @@ -1417,14 +1417,6 @@ struct sock *mptcp_subflow_get_send(struct mptcp_soc= k *msk) u64 linger_time; long tout =3D 0; =20 - /* re-use last subflow, if the burst allow that */ - if (msk->last_snd && msk->snd_burst > 0 && - sk_stream_memory_free(msk->last_snd) && - mptcp_subflow_active(mptcp_subflow_ctx(msk->last_snd))) { - mptcp_set_timeout(sk); - return msk->last_snd; - } - /* pick the subflow with the lower wmem/wspace ratio */ for (i =3D 0; i < SSK_MODE_MAX; ++i) { send_info[i].ssk =3D NULL; @@ -1530,60 +1522,53 @@ 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; +again: + 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) + goto again; + 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; + if (msk->snd_burst <=3D 0 || + !sk_stream_memory_free(ssk) || + !mptcp_subflow_active(mptcp_subflow_ctx(ssk))) { mptcp_push_release(ssk, &info); - goto out; + goto again; } - - do_check_data_fin =3D true; - info.sent +=3D ret; - len -=3D ret; - - mptcp_update_post_push(msk, dfrag, ret); + mptcp_set_timeout(sk); } - WRITE_ONCE(msk->first_pending, mptcp_send_next(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 */ @@ -1636,6 +1621,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 Thu May 2 04:02:48 2024 Received: from EUR03-DBA-obe.outbound.protection.outlook.com (mail-dbaeur03on2052.outbound.protection.outlook.com [40.107.104.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 2AA5A7F6 for ; Thu, 6 Oct 2022 12:18:09 +0000 (UTC) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=QWa8ZW/J41OC8t89qDl8q5SUr9FB/ejDMJUioBf7pIFagoPg/L8iSyGiOHimDB30KaAFHXv1MKynJm6M1tTSimDdHUiIdHhl0gFIf84HMZk45Yko32ljaGdozIg6HOxpQKaJafBZ1XJWhFC/Q5hjzffewZcZ0jl+1sNRmJ2wzxk7CuAdkCWsLVbrIO2Z67lemowoItoYc4z2MiSDpBpQVYXeOvUS5xbFvpVaWxai0MjnmGU9u8FRW4qqVtdWV+kYMIt59dgNu61r+gGdXzvfIxYc/yt1zSSvIsrt30XKcBJzeqpylvePpxZC/XpCCJXckduXDUo2XtszsT9++SOZGw== 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=rq1wsrQB3/RIXoJhaAEw++PJGxECafmGrZEKC5V1Svo=; b=Do5RZecqypYEeHbqE4hvZg64SiB2lVjx/kHBPUFwXLDwCCp4ENX592WmxrJrGrEMobbpHOELddh9dvf4dWjklhb/q33s/TaLRKIwD+/PgCreZmgPlcLlts1ghmn0HIUzQdnABmugVfh/efQZhWbNEwRmHh/6nk6qDNu2s0qTxtT4boErWum0Qx0LtqE6mua9l5TP3OWfDhUIrXBzGfFZZf2hDDBExF80Oyme8rUNNpSWjJSbkgtjUxooG5btGvGXKRk+LgfCyctmTd67pAN3aiRThbNbS2UU4AChB8107l1ZTnW3pvjqZKSAphf9qmPfi5rcQZPT1/EjFuIAURIgFA== 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=rq1wsrQB3/RIXoJhaAEw++PJGxECafmGrZEKC5V1Svo=; b=bajHIZHj8Ab1zju02Vo5LMJ8+TQWClUEf/AU6rE9EjMbeA5adMs/EcsdMG0qIZdkLoJVaUhGVHEhXWWkRuInopa5AxqQsZT1YQRcc/DtUES702+/tzsf9Z3JK6lnw7lTgLejLNBp/MtQTm/273GuX4K1C5C4H43IzLtGwxod1yJuu5/R9cyMcUgcG58x8eDpslajxUy/m828rYZ2LyFkU9ECMaAkt6TUWhHOxRtImOZ4wHsmleVVqXdbBA93a9ygBAs925UDJIVbnhxF81PGI+8CrVghIJZ9vxvwlfl0x0DUwFnmB8KInSLFdIgPrnW0SJzSQFfEs3vvxEkdj/wjVw== 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 AS8PR04MB8450.eurprd04.prod.outlook.com (2603:10a6:20b:346::5) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5676.34; Thu, 6 Oct 2022 12:18:07 +0000 Received: from HE1PR0402MB3497.eurprd04.prod.outlook.com ([fe80::c5ff:965f:506f:6770]) by HE1PR0402MB3497.eurprd04.prod.outlook.com ([fe80::c5ff:965f:506f:6770%4]) with mapi id 15.20.5676.034; Thu, 6 Oct 2022 12:18:07 +0000 From: Geliang Tang To: mptcp@lists.linux.dev Cc: Geliang Tang Subject: [PATCH mptcp-next v5 04/11] mptcp: drop last_snd for burst scheduler Date: Thu, 6 Oct 2022 20:17:52 +0800 Message-Id: <477a7782fc1e495f0d8ef112ecf3c457b0edbce1.1665058388.git.geliang.tang@suse.com> X-Mailer: git-send-email 2.35.3 In-Reply-To: References: Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: SI2PR06CA0011.apcprd06.prod.outlook.com (2603:1096:4:186::16) 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_|AS8PR04MB8450:EE_ X-MS-Office365-Filtering-Correlation-Id: 59c1f1c3-fc42-4a01-a13d-08daa794d3ac X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: vvxHORvC1A1RzbO4/KjvwwomAVzYeyUEgxqZC44tS27IS3QuUk7WCGOZLgWlk6OcnhrcIxXrFbf51lPyl4WRtvNCSOt4vSNHb1xRUOYHDCZZ+sGOCEP3MmFYTyx6vCc73Fbp2ihlNJbQ/NJkz1wMjj7Qq5gk/HLlD5ShZQUt8rS/F/7vXIWDc+g76P5P2iNerWipPswR5goIJ1803p3a2bZl/ASJjESPcid/Q6eXDo4kHVoBjwNmg8xtaaO5z4p6qBdzXA7godYC5unqJfTDRd62L94xwTZMtkeRrGgOs/Pp9V4uxAyupFpqGHySSntpEy/opeeVNTob/hYFqxat8HeljwZF+QWgtW+6aczjXVKJhfDz88cXo6Lq9vjffcQFGEPVD1DmyTvt5B2GifOG5E632ki+M9I2mwQq21XLp5BbTzM6NyuvP484mKPg8hqAHL/hva5i9qVuvMpql02bd/ip5IYRE5YoqUBYiRf71gNdB1+bGyEdwRQ2tGAKMzhLxCjogm/Q5/72BlOGwwm6my4UcpORnCGeNJIwAyA9zMZPf1JRSG1GmmdG+R6RrzAj2fm7RrVTDQUrzsthy4fcpA8fkLdE2pb1OIYIK8w+UQkcDuFKFiWttSo8UzDRZZ8BAMRL2fTpgZrpeIyZ7OyJOYMNiE3imz3RO1atMvaRqZIO2+DkCDHZirdnaFVtaJ7RHZMrV1Z0yI+LKangzxH6SJ2Bhu68mIlust42zXtMAG3YeegbikSA3pe4XYfEGm2g 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)(136003)(39860400002)(366004)(346002)(396003)(376002)(451199015)(6916009)(41300700001)(316002)(478600001)(6486002)(38100700002)(36756003)(2906002)(8936002)(5660300002)(66946007)(8676002)(66556008)(4326008)(66476007)(44832011)(6512007)(83380400001)(6506007)(26005)(6666004)(2616005)(107886003)(86362001)(186003)(13296009);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?fU2H0dS6SCPT6D/Gy2FpucKQeZam5lZ2tZjX1BTSVEroeVx8dWhlH3BfHcU6?= =?us-ascii?Q?iggU9rOGguLgSIzsXAlqmNXTitJx35XkQ0iLVGPlrWdyyP+Wj/V1H7W+cOx0?= =?us-ascii?Q?8P0XWGobe90vN3gCK4+lMg2d71fPBkrHqJNTdQTHnaz90IyK94aNe1uWxqSi?= =?us-ascii?Q?8OHoZED+Yvp38S7eWL2nsFHhCv+F4HapVEAyU/w7k4MYHDpR4HkvsojVfMmh?= =?us-ascii?Q?5VcO2kvaR5u2vHb9azLEWnDVbWfOmvbj9KF25bSFL0kUNwRMoEUBx8UpWiF8?= =?us-ascii?Q?q9F0RRe5WL48zGn3qczAVnA25UK1Aq+H6TQis2oSHyn6e5ZRaPOHO5jkQYwK?= =?us-ascii?Q?/OAZa2OmaWD2LeT8XA+X4qyV0Us7WuEIReFK9IQFgKY00/yvywBkdS0ur0Zh?= =?us-ascii?Q?MEDJM5EvYY/ofLZKPjjLwTMLm8MasghV7yY/sKB1uppbz0NYUupwbir0iadK?= =?us-ascii?Q?w8T3sN+7euj3h5tvPPOiJ7LVU4DTuXd453jTe8BRAWMkreOk2Mo9dcT7CpCA?= =?us-ascii?Q?/7gWpqzQDuXEk8OdbsyLIlanhJQJ/KlrPq93lFfQ/Woivj/w8HcQSKiiTJqE?= =?us-ascii?Q?zED/K70v4okuuFII8k/QQsW5/HbJumenRLdZxyJq8wyD5zV4DSGiINNySrkU?= =?us-ascii?Q?vemydI1Gqt7J80kvkmEpVfCsNBHpHYpODYf7BnpqN2Zqgd1hRr3d2GDiwjF1?= =?us-ascii?Q?yUh2OXMMBn/0H4cxIXosVx0+mbA5Rf5UTX88ExK/I/ZIcoU8cBnp7XX5QU0m?= =?us-ascii?Q?GU628TY8MFXrjXw+nSui3JnR1sZO0aG6E43DIkGY0FNPsyoB9uh1CyJJ42yQ?= =?us-ascii?Q?1cmf6ld4/mYc72UX//potZbIH7XrOW3uVJPmi5jqW5eJJPM4MZFNbpVI0S+1?= =?us-ascii?Q?z6cVg4JdHfws4jZjHHstcvJUrnx6uE6dmvjjeCIOXVYEFCPhmjo+FkMAe4Bq?= =?us-ascii?Q?LcV/DUmWLFSDmSAZAA/68HJDDrZzMcIxEjjP6Cx9m+4uD5kEU10oVUcShHJO?= =?us-ascii?Q?xh9cEyrdGJnKvF5ONU8i/5CV6Mjsj/qJxjw0Rh/WJILZ0fGjn7qoAnrXJ+ph?= =?us-ascii?Q?LReNThA/lJjaJsmvVR3hr7kDVuRdbgBpXCPOm/CtmeDGZXFeMhCGdJTtbXxD?= =?us-ascii?Q?iPe0XPe5xcC5jJyt3vxG0ZViVzj93QzBFIWb7cvvRYxxN4D3jWMC8WkdgPkP?= =?us-ascii?Q?Hd3ewn2HQDFHzxwydTPq+BSXSzh849sjwI7KSA8dJUGQESoDhAFH26t297wL?= =?us-ascii?Q?mUm70OvAuipjJM53/ERvM6Evp9i2Rm9Qo5U8lE7RCOHAblh9X4S8stB9tlIu?= =?us-ascii?Q?+LO34lI5ZMTTZsgvmf1R7dOih/85/5Yv/n6BG4D0ghrZoeeKxLcMtD7F9qMk?= =?us-ascii?Q?fKKTcQFIfF0pvHoQJY1/LkKsqgU8D1CbOSB5gNYPBub8fzndzJg6pBNt1NBn?= =?us-ascii?Q?ILEcTpH0oqt2acnyhT05sjTtANMhRL85kOJZ57Gqgin4BuDtqniymGl1sBaK?= =?us-ascii?Q?JxzZix8fHNmLQ7IznbcMuw5Cp/FThBfScml3tIDSFyFgtOHobMRvKdqtmYDN?= =?us-ascii?Q?Gq9BuWDyu6G4BxtEvkL8R9Pkbsj9xNgYv5NoHFySAyzLPPKrLHVrkUcUfCon?= =?us-ascii?Q?/g=3D=3D?= X-OriginatorOrg: suse.com X-MS-Exchange-CrossTenant-Network-Message-Id: 59c1f1c3-fc42-4a01-a13d-08daa794d3ac X-MS-Exchange-CrossTenant-AuthSource: HE1PR0402MB3497.eurprd04.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 06 Oct 2022 12:18:07.6369 (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: ziuV1rDMCc6tZ7uGcTTmWCumxvVwbbMJkCwlUrOcJ9M3zuQeNyuJ5PVhJbgR85dJgsiPLASlDCiuCTiKluOqUw== X-MS-Exchange-Transport-CrossTenantHeadersStamped: AS8PR04MB8450 Content-Type: text/plain; charset="utf-8" msk->last_snd is no longer used anymore in burst scheduler, now it is used for the round-robin BPF MPTCP scheduler only. This patch removes the last_snd related code for burst scheduler. Signed-off-by: Geliang Tang --- net/mptcp/pm.c | 9 +-------- net/mptcp/pm_netlink.c | 3 --- net/mptcp/protocol.c | 11 +---------- net/mptcp/protocol.h | 1 - net/mptcp/sched.c | 2 ++ 5 files changed, 4 insertions(+), 22 deletions(-) diff --git a/net/mptcp/pm.c b/net/mptcp/pm.c index 45e2a48397b9..cdeb7280ac76 100644 --- a/net/mptcp/pm.c +++ b/net/mptcp/pm.c @@ -282,15 +282,8 @@ void mptcp_pm_mp_prio_received(struct sock *ssk, u8 bk= up) =20 pr_debug("subflow->backup=3D%d, bkup=3D%d\n", subflow->backup, bkup); msk =3D mptcp_sk(sk); - if (subflow->backup !=3D bkup) { + if (subflow->backup !=3D bkup) subflow->backup =3D bkup; - mptcp_data_lock(sk); - if (!sock_owned_by_user(sk)) - msk->last_snd =3D NULL; - else - __set_bit(MPTCP_RESET_SCHEDULER, &msk->cb_flags); - mptcp_data_unlock(sk); - } =20 mptcp_event(MPTCP_EVENT_SUB_PRIORITY, msk, ssk, GFP_ATOMIC); } diff --git a/net/mptcp/pm_netlink.c b/net/mptcp/pm_netlink.c index 9813ed0fde9b..1f2da4aedcb4 100644 --- a/net/mptcp/pm_netlink.c +++ b/net/mptcp/pm_netlink.c @@ -475,9 +475,6 @@ static void __mptcp_pm_send_ack(struct mptcp_sock *msk,= struct mptcp_subflow_con =20 slow =3D lock_sock_fast(ssk); if (prio) { - if (subflow->backup !=3D backup) - msk->last_snd =3D NULL; - subflow->send_mp_prio =3D 1; subflow->backup =3D backup; subflow->request_bkup =3D backup; diff --git a/net/mptcp/protocol.c b/net/mptcp/protocol.c index bf77defbc546..8708e1e4ba16 100644 --- a/net/mptcp/protocol.c +++ b/net/mptcp/protocol.c @@ -1469,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; } @@ -2343,9 +2340,6 @@ static void __mptcp_close_ssk(struct sock *sk, struct= sock *ssk, msk->first =3D NULL; =20 out: - if (ssk =3D=3D msk->last_snd) - msk->last_snd =3D NULL; - if (need_push) __mptcp_push_pending(sk, 0); } @@ -2978,7 +2972,6 @@ static int mptcp_disconnect(struct sock *sk, int flag= s) * subflow */ mptcp_destroy_common(msk, MPTCP_CF_FASTCLOSE); - msk->last_snd =3D NULL; WRITE_ONCE(msk->flags, 0); msk->cb_flags =3D 0; msk->push_pending =3D 0; @@ -3239,8 +3232,6 @@ static void mptcp_release_cb(struct sock *sk) __mptcp_set_connected(sk); if (__test_and_clear_bit(MPTCP_ERROR_REPORT, &msk->cb_flags)) __mptcp_error_report(sk); - if (__test_and_clear_bit(MPTCP_RESET_SCHEDULER, &msk->cb_flags)) - msk->last_snd =3D NULL; } =20 __mptcp_update_rmem(sk); diff --git a/net/mptcp/protocol.h b/net/mptcp/protocol.h index e81399debff9..05f4c6fd0cd8 100644 --- a/net/mptcp/protocol.h +++ b/net/mptcp/protocol.h @@ -124,7 +124,6 @@ #define MPTCP_RETRANSMIT 4 #define MPTCP_FLUSH_JOIN_LIST 5 #define MPTCP_CONNECTED 6 -#define MPTCP_RESET_SCHEDULER 7 =20 static inline bool before64(__u64 seq1, __u64 seq2) { diff --git a/net/mptcp/sched.c b/net/mptcp/sched.c index d1cad1eefb35..3d805760ae99 100644 --- a/net/mptcp/sched.c +++ b/net/mptcp/sched.c @@ -67,6 +67,7 @@ int mptcp_init_sched(struct mptcp_sock *msk, msk->sched =3D sched; if (msk->sched->init) msk->sched->init(msk); + msk->last_snd =3D NULL; =20 pr_debug("sched=3D%s", msk->sched->name); =20 @@ -84,6 +85,7 @@ void mptcp_release_sched(struct mptcp_sock *msk) msk->sched =3D NULL; if (sched->release) sched->release(msk); + msk->last_snd =3D NULL; =20 bpf_module_put(sched, sched->owner); } --=20 2.35.3 From nobody Thu May 2 04:02:48 2024 Received: from EUR03-DBA-obe.outbound.protection.outlook.com (mail-dbaeur03on2059.outbound.protection.outlook.com [40.107.104.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 E54657F6 for ; Thu, 6 Oct 2022 12:18:16 +0000 (UTC) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=bVUJF6M9LjDRXYBiitu6XJbCHBzMNiadpn/ZL9tg4kalEe3fgMfjGYo2u3MeWbUSF1kDX05pTPlrodmq1P7kP60pqgW2Pvf42LZHmOPp1TLlYiD2clNnhIIuU4dX3Q0y4UldXWfEd6sUy8ZRF6P7Y8ffZwMyDLjfZhmfDZPjvaunPLS/s0KaWZgBGFWj4E2SykJYh8AznjGwMbdFqlENgtfGKRo/l8CmG2uNGLgOz89fh6vzSBUDcWoDX8hdTa2x3az/Dh+iR4Y5fzu60RtOf5Jm5P6nnbx0pVf69MUebamYrwLzsbimeH/nQYlJrxCm1sbn8SojOrpYg9dsTbNOhA== 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=hDdJgqtozW7Ni3JLagB8yYebc3hxLy2oag8/ZnY/lmU=; b=aLrO+kMAX5BrZdOhfGmVDcSjbY0pudGmDW47IUfTy7wbphK9cQJvAP+WrYUCOKW90lNgVhn4VXEgIo9vyBW6hMvsNaxVTfOeAZPHJ2zcn5eLH4JHgfegIQZB1SNVwShlHV0BMJdIe307dfixPh43cSDWNZf9bMuGW10kq4XH+q2Ne1ybWfpIw0QUuK2OQoI7i7DX49Ab5mhLF4pYQIieJ0o3s/PyQu7aPJsXAWxZMdzrpbJ4YNV78UGDamCUpNOavOCUC3djvWvR2oxmMNVNOzwx/yfGGOi5D35KQYh2ITpwX6nwSIeZM3acN89dmYKUmji/E62XH6dwYpmbUvR2Tw== 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=hDdJgqtozW7Ni3JLagB8yYebc3hxLy2oag8/ZnY/lmU=; b=N9hUG9fEhVw5+ZUz4u0iRZyHDs3bFBy4b07b0IWCbB+mljHa8L2OseDyk2lvTw2x0gBylfGO2mqNKmUYcPknD9ZjTi48Gbjv5YL6PQYvq0UK9bRksyjGL/SoeG/96w4mU3h6p6gpYcrXHae6uY95bLyiRjJ+tRv/JhgeFSUjVywDF4IK2Ut+jImRodTpq9Kkn1ySlg0xNiM13cY4uja0Z9PqDBc5iajvB7trXCi81UHhQ8ZJM8+/QU7YWpq8PinyOmzE2sBJ37082gTpsqj8SsxKC5zr8FfLwkilziqAarFp9y5agpeCGTFwGosmdL9moh5+Dz3sfGy77g8CIqI90Q== 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 AS8PR04MB8450.eurprd04.prod.outlook.com (2603:10a6:20b:346::5) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5676.34; Thu, 6 Oct 2022 12:18:14 +0000 Received: from HE1PR0402MB3497.eurprd04.prod.outlook.com ([fe80::c5ff:965f:506f:6770]) by HE1PR0402MB3497.eurprd04.prod.outlook.com ([fe80::c5ff:965f:506f:6770%4]) with mapi id 15.20.5676.034; Thu, 6 Oct 2022 12:18:14 +0000 From: Geliang Tang To: mptcp@lists.linux.dev Cc: Geliang Tang Subject: [PATCH mptcp-next v5 05/11] mptcp: simplify push_pending Date: Thu, 6 Oct 2022 20:17:53 +0800 Message-Id: X-Mailer: git-send-email 2.35.3 In-Reply-To: References: Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: SI2PR06CA0008.apcprd06.prod.outlook.com (2603:1096:4:186::23) To HE1PR0402MB3497.eurprd04.prod.outlook.com (2603:10a6:7:83::14) Precedence: bulk X-Mailing-List: mptcp@lists.linux.dev List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: HE1PR0402MB3497:EE_|AS8PR04MB8450:EE_ X-MS-Office365-Filtering-Correlation-Id: b7b2670d-de6c-4064-bdf4-08daa794d7cc X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: RpyTvWv5fi7KOsNJmK2mml/SeDkU3uSt/VXKB/5TuquAPBpuIjLSoXgNW+MbWgH+uQvZgsNTHuny4SZg9bDMw5mUCiqefKm6hF9CAsP4K3rSlMgOBiJ22fa21iaOSBX6sqWa5w0WidzBUweko8B0KbuhDhMKrtgf2tjaDNaRUi3aXnb/uICd1x22hRpobi4TTv2tbzvU5ppTzN8KySxHcSE2HGAs7o3vVYN1OFBD6YYuH1XjHRvKYNC9dih5VATFJLcs8adiafxyb+X/wMRsHGJLxPaDvoRDDWf12JdKZi5NZvF4zf4YcU16i4h7FAb4V9oZR/F0/hxQ7cMwQ6bzglRbn7stnY4GFT0wwMjQiL++x2354WxzJUaVB9BbIqTBWuBCsuZVxdJ/l7smwrFjBc6I9j+DDAfo6mqDtB+kn+6phXnYbUrXYG96plrVubEfTTLVDcQZMTmJoeY8YjDfyvQ6LO7HQ2PtZLGRPySZDotedbDwZm6aRBMIa1/AbEyNdC5w4ImMPwmJzTs5r2TPBA4t5AfEa9E2DqtUESJFfv3wZRhdF/avt9m6ZC4GrHNH1+6ApEZXy4H+I+mo3kvmc5XSsADdnmWgmEnuJYWlsnj4fbMKxjVgo0bakZmC31mRe57DvAuyVnTPvdp8FNqoHbtUmJdIQ96c3Pcux78XPZfzci0v3eqUATHr2PU7v3pjioWCSltK2B/1x63UWOw6L+fSnT5OiIIULcbVVZ3JvgQjf+seA52fA76UecGLtR58 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)(136003)(39860400002)(366004)(346002)(396003)(376002)(451199015)(6916009)(41300700001)(316002)(478600001)(6486002)(38100700002)(36756003)(2906002)(8936002)(5660300002)(66946007)(8676002)(66556008)(4326008)(66476007)(44832011)(6512007)(83380400001)(6506007)(26005)(6666004)(2616005)(107886003)(86362001)(186003)(13296009);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?MswD8anBenUaEXI1ONebF9GBz8wOvVssFbNYTmlIkCCapBdsFWkZ5iqAMelB?= =?us-ascii?Q?nlaS7N511nL0uANXIfziJXXJYD0f4zPRPxJmoJ2AvVxnH8Yyqyb/co8/h5Jp?= =?us-ascii?Q?2RDNTw5ZmNnEwLSnUVGg8zbMqMtW7WJGaQ9Vsdsx8paMhw8t5d/9I2FMx5fm?= =?us-ascii?Q?hBCrK+F22q55Cu/mddADzrlnm1Ued821mN24dq+vGLVFj7c7jamCO1EJV64d?= =?us-ascii?Q?F0YFmfZ6IZBJi8lDfHGt62lUS1KvDORs/E4cz3/XH7ehldU0wjMiV0xKr7JQ?= =?us-ascii?Q?R5hOmRIl0irG56NQgLGvUNd8EDHi8LuKiIZmqBdTO25VDOba9p8JAie2x9Ii?= =?us-ascii?Q?aeHM0PHbPmeyLdeERdCrpbNfmWUtPZoI7Js6bme+rlmrhargN3GtD+7A5vlf?= =?us-ascii?Q?chMMjOJEtqMjP7hVMuXwt9+fCQtE1RKIVy4HMR69posRx6imb4utDmI1AjJZ?= =?us-ascii?Q?5xQUpKo3awNBo/eHQgAOjMgXSvbMBWMfRej68678MaGKdxYKk33vQEKTNy2o?= =?us-ascii?Q?njafr7ogZsLOxdTI02wYit+6Hc7vegxfhHsnQgm0vMz0bnWFFFZ1v62JVGrI?= =?us-ascii?Q?jlSxu5VC6bC4+k4s15a577o0mNclYZjcK6YoH/hQo1jbyHE5bw0046InvZ3C?= =?us-ascii?Q?l3vAqes6TYMkS2wpK3tMdvaAmgfpEcQuFE9wsVrf/tDsfQHNyS/bfBMM6QXx?= =?us-ascii?Q?m980kayugYvKr/khBcey/DB/l9MMAnpnXvCYWkD5VqfKVOM8NFEWs8M+SpuQ?= =?us-ascii?Q?aNw05DGDwvLnT69089qFAUglrZTYssIp7a3ffvhtceWTPwtWg5H9Uu4sqWeT?= =?us-ascii?Q?Zv+YJI3DT/l9imD3XE+ifx7guBjPcQ5iFVZ70IZDfDEPH2Drcb+nB66UiG6U?= =?us-ascii?Q?+U3X9zcZ5orP51yuLlfJsv0aDryG0+Bb8IPeKtm336ktlko3w3O7UsMJA7yj?= =?us-ascii?Q?ABzr9AJvC5dopN4RgMRYpz/rxm8YmTOJW4Gj5t1Jz/o1oBXg1jC5nr2jX4w8?= =?us-ascii?Q?kQOnkcfy1KslFHMU922e1t+ByefylN4/rawoxER/KTkEAEkuqQfgj4Lb/4QE?= =?us-ascii?Q?g9YZL1NRSJA0zCt4oFMZNXCYzDtn3B5e1Fz6HqqUqqyFB2NhIH/Fl0ET10wj?= =?us-ascii?Q?Va3cW1Bv1AVAI4Ai/3LBjzspWg0BOG55mFKg83V1yBon3mleV2TRuHh9EcsT?= =?us-ascii?Q?eOLyd2CslBIqPMT2+QdhW2WIu959CzbDOBfHexM0xiKxIZTaC9KETvofUKMv?= =?us-ascii?Q?rUoHV8AFM+sNYLV9UjLsdq4ZHdHFZavU5/I96fSfPjjY09bN+dIhxxddobqs?= =?us-ascii?Q?rVCzdZTPy2UEA5R0+8D0ZX9PlwMUWl4tLg9NhEyC5uEncYuqNWXB+xkVDznU?= =?us-ascii?Q?l37NtnJk2BstqoT2ScNubaUnio2bXGPFxELq7taX9Nc7SUckGKgRJx+uQ5eP?= =?us-ascii?Q?PIEQUzG4PILRcoMrBQP/3DmgX4o6fY3Bem/HhSRGz3pzUWmO/Lnbr3co3ocS?= =?us-ascii?Q?uLbdMT0amwh1sYHhRY4FAs16fh4sINVa4M2nxMzKcMSxEMCvMpXZmahiw6ih?= =?us-ascii?Q?4j2ujFKodCVy7rqhzgHxFDdjkhJKRvTpx1wSZ6uBtXUzkZkf9c/u6N7tWd3L?= =?us-ascii?Q?VQ=3D=3D?= X-OriginatorOrg: suse.com X-MS-Exchange-CrossTenant-Network-Message-Id: b7b2670d-de6c-4064-bdf4-08daa794d7cc X-MS-Exchange-CrossTenant-AuthSource: HE1PR0402MB3497.eurprd04.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 06 Oct 2022 12:18:14.6051 (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: e+UR+1lm4Xje6NlAuB6IKFiI270hCxvEB/5zTMHWBnFV3f58Offt+DJCmM9kVjT1yfDB2z4eRbltGT0BYajbyA== X-MS-Exchange-Transport-CrossTenantHeadersStamped: AS8PR04MB8450 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 | 95 +++++++++++++++++++++++++------------------- 1 file changed, 54 insertions(+), 41 deletions(-) diff --git a/net/mptcp/protocol.c b/net/mptcp/protocol.c index 8708e1e4ba16..29905214103e 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,61 +1511,80 @@ 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, err =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) { + err =3D ret; + 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))) { + err =3D -EAGAIN; + goto out; + } + mptcp_set_timeout(sk); + } + +out: + if (copied) { + tcp_push(ssk, 0, info->mss_now, tcp_sk(ssk)->nonagle, + info->size_goal); + err =3D copied; + } + + return err; +} + 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 mptcp_data_frag *dfrag; struct sock *ssk; - int len; + int ret =3D 0; =20 again: while (mptcp_send_head(sk) && (ssk =3D mptcp_subflow_get_send(msk))) { lock_sock(ssk); + ret =3D __subflow_push_pending(sk, ssk, &info); + release_sock(ssk); =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) { - if (ret =3D=3D -EAGAIN) - goto again; - 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))) { - mptcp_push_release(ssk, &info); + if (ret <=3D 0) { + if (ret =3D=3D -EAGAIN) goto again; - } - mptcp_set_timeout(sk); + goto out; } - - mptcp_push_release(ssk, &info); } =20 out: /* ensure the rtx timer is running */ if (!mptcp_timer_pending(sk)) mptcp_reset_timer(sk); - if (do_check_data_fin) + if (ret > 0) __mptcp_check_send_data_fin(sk); } =20 --=20 2.35.3 From nobody Thu May 2 04:02:48 2024 Received: from EUR03-DBA-obe.outbound.protection.outlook.com (mail-dbaeur03on2073.outbound.protection.outlook.com [40.107.104.73]) (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 5ED347F6 for ; Thu, 6 Oct 2022 12:18:23 +0000 (UTC) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=Z1YsFdmcAM3HpLXmKOsUqSOB3j8ldvKHyE2tLohHjG6pwWpQxb3E1T2PU6tsL5UeqXHemqaXpfLF/TQTzEEXDcOl/YyCKwRbSNG6wZ2o7QIlT7Gs6X8MpeUZi5sWmqpzzWP4NWQA84F35offm+88FrEOUCTe96b8GrDH8dIB7L5/Uq5kXNGsRSj6ue7Zr3mklokwrwY6uaLB8PBFAdloqpO0Cw8Jdget6Tlx7B0laFoMrk9MUVdsGv6EfK5B2xCLHB7s/BEp1/ki0ExFWbL/D/FR1w7APgT3aFeMlQm3R2DYFfdiluKmXuJ5xnLVqzkc9V8fdirSSYHAl6lkwjvG2A== 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=mGR/15dBZKYN8S5yrVJEJhiBff0uJ0vG0lkIkbECBJA=; b=QzMsnH5tnS8cYrXYGthc8jqYeIyFzZw1b65ycz+vGyxSUsZ8ZyTRIJAcviA7nRtH6laP0Lzv1wHgK5kTpuOePFlhgeloHxtrsEWNkPvWG7HsE32nYRnYDPGG4F7S9d6lQOMIorSsFOu99aY1YaSdGIc5oQyCvl2aFIpLH80NlKWo9Z+0Oh5geIqazCiZEC35Rx1VeLiPzUQAGVLCE7D6HKMrPOP/3xww+xiUhRR/8/MOEFKek5C3kDdyCqknHcYWAXq3oUtQp1QhCcauAvXlR6lVz3W/Kkcd4N51I2tohkAqPF8KlNxEWuwpSfsRa/V/Ly/vPdk37+RLfOKNzvSZAQ== 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=mGR/15dBZKYN8S5yrVJEJhiBff0uJ0vG0lkIkbECBJA=; b=PpWYTdEAAvqwTeRr+Qn5ue3ILmqW36hjvSGs9fPCubMk187ra697k9Zvx/KX8+MtbITP2pVCHLG0/M8UYaF57jo9VMIZ9hKzIuR81542uuPK+rgUANyPTPI1SxU/+QRN2rT9v3ogHMA0XjbBjAIhSKkEJ9lHYqtDqTr6Oe3Qhtt2Kqwa4h5cXvQeOQdQ6ORKhh1pmX703bxCDLV7zrKLP8oJnJTNuNDV4AR4BVtlfH0YzOLInCnkQ4Na2BBlNScuMvG0qkAK2qI6kY/uOpU7f1pc4viVCZalaWBR8Yo1e/0QoJUjx9OMf/39Muj+3hOy80RZ/x8WTKYM5pp0WaLpAg== 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 AS8PR04MB8450.eurprd04.prod.outlook.com (2603:10a6:20b:346::5) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5676.34; Thu, 6 Oct 2022 12:18:21 +0000 Received: from HE1PR0402MB3497.eurprd04.prod.outlook.com ([fe80::c5ff:965f:506f:6770]) by HE1PR0402MB3497.eurprd04.prod.outlook.com ([fe80::c5ff:965f:506f:6770%4]) with mapi id 15.20.5676.034; Thu, 6 Oct 2022 12:18:21 +0000 From: Geliang Tang To: mptcp@lists.linux.dev Cc: Geliang Tang Subject: [PATCH mptcp-next v5 06/11] mptcp: multi subflows push_pending Date: Thu, 6 Oct 2022 20:17:54 +0800 Message-Id: <599d7f22f8c154fc6ba013e5b90e3017bb60fce6.1665058388.git.geliang.tang@suse.com> X-Mailer: git-send-email 2.35.3 In-Reply-To: References: Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: SI2PR06CA0011.apcprd06.prod.outlook.com (2603:1096:4:186::16) 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_|AS8PR04MB8450:EE_ X-MS-Office365-Filtering-Correlation-Id: 3fd51469-ebea-4dd4-07bd-08daa794db97 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: dopB18HioaHqaYhCH4DFKGAG1VGQEtrrGuwz47wyF48WdfBzPnxNoZqw5QQC+dun+qPlLO3PseiCJyaW8MPEgeGvHGhlLcBqjda9I/wom4iurntr10gm6+Mmihmq+jgTVHFAuLpxBiYcNWqiSCxZNCLYxisH415h6XQKX/F/egg3SCH2DklqrRclm+6gg1AkkggnPvMru8Wg96APmsAfx1OnN8tHOtTML8u5dR9hLZk1gUrjIvn9xM2/oIhXvrRi6HWtNvfh3xTnrLe3kQNxDEWRj3K0apdwPCLXBVyG34MEBc3+4K7+fSIEylxsEVdBe0pWp2K8fv6+j3ODbONGAJc141mnZkR2giBC+YQY/dtUcH11GwR47gjo8FkKd94CNlVEsBUcmYNuwHdIz0hetDa9i9DEYZIwd3SdIBFGEh7IxjPmknFuvXJWTK9+VCgox/+PxfaNqdjWVNkD5wxoOdFVicALCS/70JGEfUMNXEGvR7A6UkgyZvq6OOIwqWLTQwklweywWNuG+IpFkJGFzLPZee8FNhDfonyijPBFzBqHX2occm9buVKyI5LkaHMjCui3PusHY6TApPozzUfIXRxmSPg9d7T+r76Oq9UC4XMckCIOXDSpULsBkMQWTybQXPcJZxDfTXwNneSJozPPR9v5nOipXhLGW/vOjVCIr4F/C12Yih+GLalVESReYvHi+wk+CwSeahNrlS0OMvMT2jp7YMgcYSVQkVxq6aBp2RQRXFc+ag86DNFZ3ETt5fOB 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)(136003)(39860400002)(366004)(346002)(396003)(376002)(451199015)(6916009)(41300700001)(316002)(478600001)(6486002)(38100700002)(36756003)(2906002)(8936002)(5660300002)(66946007)(8676002)(66556008)(4326008)(66476007)(44832011)(6512007)(83380400001)(6506007)(26005)(6666004)(2616005)(107886003)(86362001)(186003)(13296009);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?JWo83Ypfcd1RgStcMbiOc97a9H6TyvAQJESdHnXfhKr0PGmyPQAmbN6CBOdd?= =?us-ascii?Q?QonZkAjGVFinM7jI/jm4S1dOuyodNKiHSPIsMbXjQU1qTby+RPcsWv5aIvF+?= =?us-ascii?Q?fUhfZFirqih7baHoQHluDddTm0Vxtr4w3B0sqWPvXyQJJMtMdRW7xYrYztMV?= =?us-ascii?Q?XdCzn0yN9fLC1Qwb3oDMbJxj6+OUbJGiMEsn7JzL2P9vdTobGRDMNCaC7RLA?= =?us-ascii?Q?jt69maIBl4cOduWjSktZFTA/l5HbyTiGlHf70dGdhRG/xG8U4voCtvov5UHN?= =?us-ascii?Q?XQ91M1koOlF4YA34FWzEjMW89mpgEfx9GWcuRsBc81VRNRJ79Tv4U4jRdPID?= =?us-ascii?Q?bLb9Ro2yw5jog1G+PyjU72b0JwDU0yqmVW2zyTNkjcUxlQ/beOEeQr0z98Fa?= =?us-ascii?Q?t0eJVpe8suMdRHDFi0XjINp5l67uKlldWOMATAHt+MZA/f5D0B9kOfOrY0J+?= =?us-ascii?Q?gewq64I/5XsaG3/bNkRq/2oIyRGmArDMD+5DM0cQ7WabhKaYdZd3C7HU6mpi?= =?us-ascii?Q?t6P2KACce/DRj8XLgZsZ1iZHLTYntLO/J1627YlxlmatOtjD4jcli5fQd2ds?= =?us-ascii?Q?O4oj6pWf0E7Nn5urOdzmnSoQ2jBEFATHTHQeAPOMvZTOr6YdVoZZ1mNrCk/v?= =?us-ascii?Q?Kxv+dRmTac7oIELXZYljkiANYPBlPZV+GLMUQU5JiAu7UdaEvGxG0aOygTMh?= =?us-ascii?Q?fQ7nhp7E3ZkRS/6S0nDRVuUCbgxMdJH9zLY47Bm/vQRNBN0QWwyGyRNewrMT?= =?us-ascii?Q?t8fn4wJBABdZDB/HDSaVH4SP2i5uBCFIie3i5SwWHm0KORMdF08+WDmL46Bm?= =?us-ascii?Q?6/5AzpLNcXIQbs3o6LSZ7BtMTCbZCaL+a7izKBd8thB8R02QzjVoEqKtcy8Y?= =?us-ascii?Q?ct0hsh0jSqk1zSvjiKsRT/ZJsZuetZxIFbO4bHJLCE0Xe43pGu9sRmhe/TWf?= =?us-ascii?Q?GSb+zmoDzfnlk/JUvZeYUTZTjmDfgSoltQlQ6LQN+zKBA5brwrfz7uYMOUR+?= =?us-ascii?Q?1iYTcT2Bf3JFcC3l5c6SYHO3YE0cb09KXmOqHWeI85TeFOBRx0JB5oThzcrm?= =?us-ascii?Q?P0bd+BlthJJi7SmkIlZI8xe8J7iz4mhJ+sElwGZ2Ju2m8pNmfjPqacXHX09/?= =?us-ascii?Q?kVSNE2vYd7oOLUB/AB5Im3QlldUKJGJR3+4TeX6n0Cemj29yyjZag0wNN9r9?= =?us-ascii?Q?diyG7J1QdrtxPQnCpgoQmrF349ixaXMW48Oylp9vNLI84uGNwk/+ERD/AdbJ?= =?us-ascii?Q?Lfl/NalV4DmtVcpXKO8y4kP65kWI1F5UZ9Vd53T1WtiHQn6ysdZw2l6w45Us?= =?us-ascii?Q?i5HtNHujyqbFsH8xv3uX2VCqP+k2FoqWtbzNtqm8Jr77dsFpA0qfBWlhbupr?= =?us-ascii?Q?yfHJ9WMnt4uE9TxSVg/lkFFKftabgbhOIhV2VKth5A2q+Y/8mP8T+wb/sYu3?= =?us-ascii?Q?F9icYvUEJfB0K7HaI6evM5Kf3DonQ6ozJ5HwIwdwuQh4xPTcsseRtlTGkNJs?= =?us-ascii?Q?bHdZleDp5jWT/gEqtnlTgS5RMwgH6N7QXu16SV030+d6jHacqKEC97NfJgsZ?= =?us-ascii?Q?RvGGgqw7prH4y1vvvOjhU6PF9NkkRk661M3nZ6ZLqws/KSihtn2u7m9ODofF?= =?us-ascii?Q?6g=3D=3D?= X-OriginatorOrg: suse.com X-MS-Exchange-CrossTenant-Network-Message-Id: 3fd51469-ebea-4dd4-07bd-08daa794db97 X-MS-Exchange-CrossTenant-AuthSource: HE1PR0402MB3497.eurprd04.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 06 Oct 2022 12:18:21.0421 (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: g+zAm1yDjYIBaKiEUUzb70SPJS573jMMxdkrijuH/jW/uf9zC+tKbA3eWPrTuBFlaR+FdxDR6lIyKazMeFxjGw== X-MS-Exchange-Transport-CrossTenantHeadersStamped: AS8PR04MB8450 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 | 33 +++++++++++++++++++++------------ 1 file changed, 21 insertions(+), 12 deletions(-) diff --git a/net/mptcp/protocol.c b/net/mptcp/protocol.c index 29905214103e..fdb879e09a32 100644 --- a/net/mptcp/protocol.c +++ b/net/mptcp/protocol.c @@ -1561,22 +1561,31 @@ 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, - }; - struct sock *ssk; int ret =3D 0; =20 again: - while (mptcp_send_head(sk) && (ssk =3D mptcp_subflow_get_send(msk))) { - lock_sock(ssk); - ret =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, + }; =20 - if (ret <=3D 0) { - if (ret =3D=3D -EAGAIN) - goto again; - goto out; + mptcp_for_each_subflow(msk, subflow) { + if (READ_ONCE(subflow->scheduled)) { + struct sock *ssk =3D mptcp_subflow_tcp_sock(subflow); + + lock_sock(ssk); + ret =3D __subflow_push_pending(sk, ssk, &info); + release_sock(ssk); + + if (ret <=3D 0) { + if (ret =3D=3D -EAGAIN) + goto again; + goto out; + } + msk->last_snd =3D ssk; + mptcp_subflow_set_scheduled(subflow, false); + } } } =20 --=20 2.35.3 From nobody Thu May 2 04:02:48 2024 Received: from EUR03-DBA-obe.outbound.protection.outlook.com (mail-dbaeur03on2051.outbound.protection.outlook.com [40.107.104.51]) (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 A49B77F6 for ; Thu, 6 Oct 2022 12:18:29 +0000 (UTC) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=kC2vH2wqUchZuYtvZqO8Wyn7OtefEPMD05U8NuTfbkLCP1LJ2O1Db6EFAlP8ESuIo7THi7uXGFCfUsZJiHOnzcIQOlKLg1i8Igfy4gxKjQ9FKr8abPInN2debXnOtKKH6tKlbPbHZzzrsh0pZKGhQFlOZrHoS8P5xrKCi8MIGcoagoDz6+vDY83RQfohuwz7izqvzfSWRjCxZPU2HcD3FrquqoBu3tKXoqNlLr2xE/9CrhmAnROqeARk/G3tFhDpZVRf40uayJneZpylNW2AKv8amEKDSUpeUFEF+9StoZxu3VQVgehwFxuaPw5q7lQQ0Z++iQgepEHYw9VDrO7GIw== 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=KJGoFgRrMAu0/evmiR+5LPf/MU7pHwCPhwLtgBQ7Mzw=; b=isrN7Fpf8+8WQhP++ReWaDtfnLGlj9IxC/kU1eGKiQZFbnovCXATTHu2n9G01bGSkJM6nSP93OsLKr/TDpVxFpjFxtQ/urhuUyCKwvS5mx5R+tL7oZQy3/938+zq5gyFBVuZDrZ+aimlxGgS8oDMSCCQfha0BYT9TSbXD1HEmvjjwljSt0Qjo6aN2Q/oOmgPTWKeqrUwuXOgk/iqt+EE9YhPVbhd0mSVp5K4XAXXkOjCiJ7aRiH4g1XSjIh2ACUqwVrqm+L3y+nEVftJ+VkfsnhH5iO+/5wTM2ERpbxVS3OdOxUUGOUm9D60o0aJeKpsX0+lFvU6dUZ9RdYATk5QKw== 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=KJGoFgRrMAu0/evmiR+5LPf/MU7pHwCPhwLtgBQ7Mzw=; b=4zwGvKCNYbj5PuIoR7JKBHusvaViM/P6HIY22neo+HY6oekyyyY+2xGMpp5kHyxITnCayN0gI+VmPo/hi/6HXn0n6KvekVZqNgHG/xwCuRwcKyODUfiG8Ar1ETqji469cEkKdQsm9qA6qVF9qhp2DftPLbf24Dqd+WjcYfB1DgwdsKu9cm3/AeQ6kxk+n8DiAN6KTaJMtFHlY8TH1G6+HWoT5FxVn+ifFYRr4VuprjNjhYQYj/79HVhi35J1moREqY1D1MZMRcPI0wEuaxQ/42vCnq44xAxXmEH2e7QDn5kGJSKeGIry9ycB+4sBjcOKqstGBl+DvTs9FCHWF9srNQ== 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 AS8PR04MB8450.eurprd04.prod.outlook.com (2603:10a6:20b:346::5) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5676.34; Thu, 6 Oct 2022 12:18:27 +0000 Received: from HE1PR0402MB3497.eurprd04.prod.outlook.com ([fe80::c5ff:965f:506f:6770]) by HE1PR0402MB3497.eurprd04.prod.outlook.com ([fe80::c5ff:965f:506f:6770%4]) with mapi id 15.20.5676.034; Thu, 6 Oct 2022 12:18:27 +0000 From: Geliang Tang To: mptcp@lists.linux.dev Cc: Geliang Tang Subject: [PATCH mptcp-next v5 07/11] mptcp: use msk instead of mptcp_sk Date: Thu, 6 Oct 2022 20:17:55 +0800 Message-Id: <63907ddc55403a8dfbce8976fcdb419c9f3bc3c7.1665058389.git.geliang.tang@suse.com> X-Mailer: git-send-email 2.35.3 In-Reply-To: References: Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: SI2PR04CA0006.apcprd04.prod.outlook.com (2603:1096:4:197::13) 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_|AS8PR04MB8450:EE_ X-MS-Office365-Filtering-Correlation-Id: a7e84a88-2fbe-463d-3b0d-08daa794df8c X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: Kpf9417tdyJ2DFacYMJOo2BFgUXwYldXbWB/2fkhIPGuPo3bVFhfJoILOznBN9hSAH0RrggurSerdb6/3Y3PlJuPtADWspyo9kkXZebeIEcXbbREgM6PzBFOCUka9mPzSWlwmlJORtVnKvqtLxaxv5kp1IvP6tEKpEjFCTIVInQCRgCmH8ABmHp2QOfu6PxMxz9UpgKiIWZSImpE81ZcLDWk0lhGiEc2l7nWajEpWrt3wKKKk5mIpk4SvniLcrOQB1kaPcCcwvZWBVpWb7DKpSeVRxTQwqlVSuSDKxFS5+UdnXs10EG8gGUGk2+xwaDFQfMUPUi97WqpS81o4st4xO4hay85TwF52AkSsW48s4ja4Kdygj9BQ3N90XFbKS8C6+gN4cwvBbCAJQUAl+1yoYmatNUU3dWiTyk2ArT/z3N/Ztye3Vo6gB91WnqYW8dLHCk3zRVt1Ng7I97l+E2Jfi0mJXM78U9m2m+FBmPvQBIzjjNJiNSHBNvXIZ0/HVVLN/qop+bnrdlT7mMwcQSZWlWbhHI1FaKJwB1/ZbdbY3uacHgY7T/Pa1pTGJUz1eCWlx5+idPIQtXeaHa4EFaYD6j+3MY2M8rYqqWaTbq8yerOHEM029NAP4F3fPBAJ3KdCDOwe6bB67nZZvmp/yam15ZBdMO5nn/iGaRyuiJnBo9SnVdjCjjaetHPzFyUmvJU3wpCtpgP7L+PMi2dAdJnUIeFFhdCtJLNP2NKe3D+fdaN5unO5JAGB4z0eAI+TLQL 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)(136003)(39860400002)(366004)(346002)(396003)(376002)(451199015)(6916009)(41300700001)(316002)(478600001)(6486002)(38100700002)(36756003)(2906002)(8936002)(5660300002)(66946007)(8676002)(66556008)(4326008)(66476007)(44832011)(6512007)(83380400001)(6506007)(26005)(6666004)(2616005)(107886003)(86362001)(186003)(13296009);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?RGtl5gLazPQwEkPbjKf03fbV5a+DEAQ8UvO+oHoN66XATE5O4EHkw/NKHoHc?= =?us-ascii?Q?IZUcF1Rlx9jsdbmPSGzyGi/bITdy2GvJKBziGq25WIY0ecQyyGtx2ZqlGm7M?= =?us-ascii?Q?pYLry+XbxbDH+5MeEsLDaIWEX+FSNLtCHQILyGfgNZjcpHoA/Xe4Q/Rc+xyh?= =?us-ascii?Q?otD/oKWa1wgn84f/E/lfDHnrzGKdFPJlTO4X7CL6otLW0g1g9aQXDX5Lk3v5?= =?us-ascii?Q?QGHzU1xdy/Rw7SnZR4zRsUviNWiYuODh6TTA/7TTKxBsjzhVzzXevT5GLbUQ?= =?us-ascii?Q?77SADSUoHMClwQfqI9S9g47nWyd38AbjmgBQ9dPus78/2Rv3XFoTwIHEWub2?= =?us-ascii?Q?LVUks/NeJd9IQHeRzYr+Bl0lWOiwxj8FpTiwNSxb+Ga+u+/Inj8De0rk5egj?= =?us-ascii?Q?LqgflPaOKzu7EhWkxVl5IlZGPkKZq3Db7ax9wpZ/AxxyMldXm62B/hi7bmF1?= =?us-ascii?Q?z2F2C4aQv8h06/nj6jT0i6P3dR2tGspkFa10Hs0/O3J7jVwGcgb4JPven4LF?= =?us-ascii?Q?YAnRbxoA5p/ls69A2ACNbY1wGH6IFkBjuf//hmFNeDfm17WbU5hjfgwUnOjw?= =?us-ascii?Q?inORb31/sV04p7arBgMrVmEhSsSvlb3JoccqqEMkeHFPOQeDwv6mNI+ZEgH0?= =?us-ascii?Q?1/xyhVieGKvZQ3bySCYJAKhTkc9IQMH3ZZOxuTCK5voK/adPANydaL8L8vsh?= =?us-ascii?Q?T1w/O113tU2pa5sc6UzKhTCNM4JYcD6SAb/42GkdEqfl5wWZBa+nZa1slZIC?= =?us-ascii?Q?HFVCeSg19KWzvM6nUMsdMZW8iQxpxWu3QekOlKXUbtGnNK1+Gspx8ObLH+o9?= =?us-ascii?Q?W0+CJ/lxYLu7ovwn/6p4yr5ZNmV7dLaLHZKvHo91yg2eN6HUjIbcjwMOlM4P?= =?us-ascii?Q?zMu0n7/a4luFYqeWxbylt1Fq9/4loSpGF4wsVrJqf+mAFywPTREMJBhKUHjf?= =?us-ascii?Q?pHoFd+eh79A6MJkFuMaup88H+7QVYplvl5gQgLjUn2FZgQh8f8TqcFHyI27l?= =?us-ascii?Q?nDn/IXxLOs/0elGQR/n8aMuPXMhLCXkG4o7mueCD+tcUxNP0a9/Jt2W11mFZ?= =?us-ascii?Q?RW1GpaLBKVlQnEPIm7bFSeoRGSDRjY9AUq8DSEws30YkI5uVfAADof2hjhry?= =?us-ascii?Q?AMt2msKSvRVJuOHKTzgzIEijMS/AN/NNEL37k825FtwLmhzsnfwK9S/Btz+0?= =?us-ascii?Q?kVyZraMZpVH/uFwnTJx7eY2U1GcyTyY6lC1bgOLXSfGY3gZKxiAUOuMbvQVk?= =?us-ascii?Q?eADpkyDUnpNMTzzuCvmy0GWJyDGisBFBnACoT2LDI+6V2ybqrJQqAO4fNmky?= =?us-ascii?Q?zfdz0LvKxMdGsyT6I18gDJHDqgeMIfYlq2YW2WI5AGT5Zyuo83Ac/x+bBtaC?= =?us-ascii?Q?srEDskBL+k4ayFVCUAcPZITTAuY/8WB07DeatzgwybCOFHWy6U1mycheU+Je?= =?us-ascii?Q?Y7AT9nQqyysLnx9HIA6H6ZgBTxKNULmocKLu7CLhnKSvxaLkYLI1CJBAd549?= =?us-ascii?Q?QzYP7oMRietOhXv1NzQDXQCCBNrsHhHfy0uArajYJTkbWD4qdtAtTGvepuYV?= =?us-ascii?Q?YPzdangNEes5x1d1aNTfOa6mpyRgK85pEvu09Tn/Q0es9FzK+GjGFdXR06kB?= =?us-ascii?Q?2w=3D=3D?= X-OriginatorOrg: suse.com X-MS-Exchange-CrossTenant-Network-Message-Id: a7e84a88-2fbe-463d-3b0d-08daa794df8c X-MS-Exchange-CrossTenant-AuthSource: HE1PR0402MB3497.eurprd04.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 06 Oct 2022 12:18:27.5104 (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: 7JIOBPuItKYwi+BwD0FDvn4Jd2jGOvyJzfP6qBDo8zFyngEQYh9bqVFtvPEYNQujZhzY4YDF5uxMUgjTZ36b8Q== X-MS-Exchange-Transport-CrossTenantHeadersStamped: AS8PR04MB8450 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 fdb879e09a32..b15b97e8cbf7 100644 --- a/net/mptcp/protocol.c +++ b/net/mptcp/protocol.c @@ -1619,7 +1619,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) { @@ -2249,7 +2249,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)) @@ -2928,7 +2928,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) { @@ -2987,8 +2987,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 Thu May 2 04:02:48 2024 Received: from EUR03-DBA-obe.outbound.protection.outlook.com (mail-dbaeur03on2061.outbound.protection.outlook.com [40.107.104.61]) (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 59D237F6 for ; Thu, 6 Oct 2022 12:18:37 +0000 (UTC) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=HN0wDG684yyDzCzgY58qd5OZG9Jw5gxesszX0ieYmbssRP9j9G57aQd0PCJgdDH/Ye9G5sZp42W2yA9RkfD3SP8zceInxsxAF9F8V1MQ8VqrkDXmqVQfkYTXqsgbLUIuyeRClpIthXDHNbcxQHlvqkBLzXSk23xGNdFFYCuVBhVfnWYnhac4O/nQPyn3qkauiDGt5ASg37l3bwM4h3kCkv0QAr54qV/v8vec2I7kYhvYlICnXN7+etWJnXP9rVvGO2UCRZ/iZfhlj/zwFIjTTBEI1dPov3NKNIS89neFNt/2X5TFoc4/Kgs57GdqNDJI8lKPecf5p/xjvjzfGr3WxA== 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=RVSFbNahCOk6FQmZ/2cmsaGQVC9uSgZgrZn/E1yunDo=; b=ixJSU+3NvncYlrKEJlzT9hxgTYlDRA0ev4kj1OM5J2QDbWwBM05TTnfYSGHgGHsTBUcBd5qxmnn9VHbT1cxxepW9jyyLtX6DfS+UtO19x2qoMloTAEV99B7G43x5FZwDXvPtWJJY4vxUntlahJ2k/wrY2fFWtS4XNfA+5K3pN4CcvqIjEOVzofi0YeKUSPF++1jNHbyZJm1RHTqA5hPpwUsrlab8zdx8fPEDl/RDTXDp0G2Ql5Q4GEuGNFkgICCk2C342OlXqgVvwxAWjZiHTAD+BfOFEwdrjDNhV7wJooM5cUrBzucLprFXwMFKIuPb15HqeloqRBnMpcIkNm0QuQ== 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=RVSFbNahCOk6FQmZ/2cmsaGQVC9uSgZgrZn/E1yunDo=; b=Bjnm51mNcJ0edTnubWEO/9BDb/05t+zf7esn+BdX/MJ+ixC3y5l0COVLUI1dvGgcbPPNu7EJIS8fT7WbhpyQ0lF6dm2wighQaEpBg+oNOXytlGErbC4shayRrZZigBBMEOMI6UZ7sYOykHFukvZbAjwuYGGtA+j7in8n4NCIyVPiKPebE6IINoeo9NfOpUQOJNvM2sZ8P4YeEnc9pfuoOg749ejedhodGAqZd5+328KB8Hw/mowqY/svB7gIt+LTd2cn1NotiWpYFnqZX6cMwj4JHGuHctTqVH1ddqXL5sY+zg5JoIR+1/pPRm0usW1bgRxwLR/g+2+ltQTl3ysMwA== 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 AS8PR04MB8450.eurprd04.prod.outlook.com (2603:10a6:20b:346::5) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5676.34; Thu, 6 Oct 2022 12:18:34 +0000 Received: from HE1PR0402MB3497.eurprd04.prod.outlook.com ([fe80::c5ff:965f:506f:6770]) by HE1PR0402MB3497.eurprd04.prod.outlook.com ([fe80::c5ff:965f:506f:6770%4]) with mapi id 15.20.5676.034; Thu, 6 Oct 2022 12:18:34 +0000 From: Geliang Tang To: mptcp@lists.linux.dev Cc: Geliang Tang Subject: [PATCH mptcp-next v5 08/11] mptcp: refactor subflow_push_pending logic Date: Thu, 6 Oct 2022 20:17:56 +0800 Message-Id: X-Mailer: git-send-email 2.35.3 In-Reply-To: References: Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: SI2PR04CA0004.apcprd04.prod.outlook.com (2603:1096:4:197::22) To HE1PR0402MB3497.eurprd04.prod.outlook.com (2603:10a6:7:83::14) Precedence: bulk X-Mailing-List: mptcp@lists.linux.dev List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: HE1PR0402MB3497:EE_|AS8PR04MB8450:EE_ X-MS-Office365-Filtering-Correlation-Id: 4c4f7196-49ca-4a2d-def7-08daa794e3d4 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: JVJXENgXAEXsWZDsnRJMIYwGcDFIVllsfbg7ZHlQDyz8Qg+hLJ6XJSE7la7zL6FUVNac8S+PZlu4RCaZqI+7x8mpsm40sIDsVTSm5iHvKXVqoE0VMM8oqjJuXZ3FlF8GcC6qHQTXCqvw53iZ7EzVNOF7NiJUOo8LB7ppEfO5I5/btIhQlkVB6/cSLzvhqUg5xWA/oEN208przHiw3rT/ztrtyOm3/CZZzN2ZQhluGhAPV1GrXtb5KyMFe8an1KGsrjS32MwlZUqMEuftz+gwOCl++bx8YjFnKO2KnxlXPtiuLtN/LCYVw08TE+fFv02ka3Z6l7LnrxH9cYeon/YYOLMP0n+iR9Db2IeTQztC2bi++IY++s3rRk/llNagjq64quWwLrd6rCwdvhZhF35cFrBYdn8LeCI2vbrDEWGVz8XRKSFBS+yBCHcQg0vlGstZ/bskozfTKOJCVb+AwGwf7UlF++KA416eG+nPHxrQxxaG9e5quH170KSEITykNZg2borCnZCq9ntNFyYCYQVcPwwYNuuANqhzFPdfbVjIWNWeXmnqikpWaEMrWeeT8w6DdxyC3OoZHSBoO7TySRG8mru770cS2SFj/xntNB/n4ijuUroqLYpx4/s77obDXbuGJpkqg4YnlEuiXFCC/yztFmZ5XTdbZxgUf7ZzrKkZzma1djyoXVcuAas3aEe3xOIUju3btoJJJBOy4nrKyPE3v0wQdDDamb7ZTFgzG0hkHXtR0xLFdevpB3zXuaRzYrMV 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)(136003)(39860400002)(366004)(346002)(396003)(376002)(451199015)(6916009)(41300700001)(316002)(478600001)(6486002)(38100700002)(36756003)(2906002)(8936002)(5660300002)(66946007)(8676002)(66556008)(4326008)(66476007)(44832011)(6512007)(83380400001)(6506007)(26005)(6666004)(2616005)(107886003)(86362001)(186003)(13296009);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?jBwyss5arD5viOq0AkKWznr5Kt9FPBkwQWKd7f3idcSU2nVQcna6wFrTgl3I?= =?us-ascii?Q?LqJsfcY6OqFq5cDRhF+NKrrBlAEfJRcaGrysFWOGQKhfH6t7HdelTTTeCVN6?= =?us-ascii?Q?/uwjwL5baRsGKT1THEqYV+K1uKBHJb0GUN4o80/wbpCcBQEhMFyYVXjN/nDr?= =?us-ascii?Q?RLPer1OfGQlda00Y5E2A8H/9e9+eIyNWNchp0CydediVW5FNavy1oDkV9qrO?= =?us-ascii?Q?0cMjn8CixEyjAeMwHbaWj66oSh8pu8mMimQQ60hnfXL/08I7eqaSZ8rKex7L?= =?us-ascii?Q?MzpEdLfEhK2fm1s/Rqa9DqSM2Hk7xX8RNMPmz8WKM7KWjmPEAy/xgxhL5MgK?= =?us-ascii?Q?0WCG/x6+CDhiCWoD51G8u+3aGTJUByEkUzavAJf19a9iN0P7VH0/t2XfgaE9?= =?us-ascii?Q?swWjOlW9EmOlH5WqBZFzOCgH/2XVn1jS20HOI3UsQVqDn4dJYbgLmZXOzcWR?= =?us-ascii?Q?izaF2OngDw/vXA5EH0kzhyLbTNCVMuToxWGlEGtB1EzWfubJzliuGxt6dDKO?= =?us-ascii?Q?fPnKmWcdmcaKz7HcCbTLAeQwwp6+CBaEpf8bQSLHvaG1qN7VJEdCu63DcqL+?= =?us-ascii?Q?d9vWtqqgFirUHajTPeyn/opRqu6rLdI/6yTNIp27rWzVyrVmr+e61hvP1erp?= =?us-ascii?Q?/1t73C6TQ1ojnO4NDT8JH7zVecBuIN2hvcbf/YgCOQtKIBxsigzFSBxTIOln?= =?us-ascii?Q?z6BciTLM9lOgUKuDuLRZfpgjbkhVw8IAQoz0hX13kViH/mVmE9QDBLO3Nfik?= =?us-ascii?Q?dnlzxAQArPT00Kw05ewJ2WAH3qFaXCyIZg9yeaGb25twwZys6xfvH14reG2l?= =?us-ascii?Q?dwhZIrXlKEa0rAlBFpH7YxrRZsAW/aPkc0rj/F6s4L2Z2ER05BTD2PjHVw9A?= =?us-ascii?Q?QqmQ8rzXmKwWb9lhVDh2gCL4V7O0jY9KITywQpGYH7RZ5GiQUuyYS0vV0HeC?= =?us-ascii?Q?W5To1z3XS21BgViZwApq1LtPEO23/A80XGSalIkTO9kXIvE5uQLPbZDUpkb2?= =?us-ascii?Q?fx5y7oc0rGAHyrZfivr2KNaYLBahY53lIjvjukw+L2VfzqiuPqDTmA59nOpQ?= =?us-ascii?Q?40NvIWZrJ0OIXP6e6l5TiKZY/FQoG4F3xkMEejczuCfmtpUYB7FHK2jC6zmO?= =?us-ascii?Q?VfWyJMtlQNPFZ4kwrppkWLqcDL9sj+t3/Um8vMz0M51u5Jn4Do9jFPpaD4LR?= =?us-ascii?Q?l198d1DPhcjBFyEFIibfdLNZBVHGjeQXR071Rew7RlGmoaLW9Y/7ZSCigSWD?= =?us-ascii?Q?tucCuMTz0nD5J4c3K8r1Aaxvl6O5wQuQDDSHxyAHSQpX1APw08r8Jm96sLfx?= =?us-ascii?Q?3dBoaq7YZbfDgOX0SvHqzcrZjWcBa/kbFra5ei8G3Ld7CzANgXAZ67JPmRqn?= =?us-ascii?Q?Hv1Y2lNyEC/GspvCfEWiZTnAfUMTUcQEX33Flh36ino6vqBIGb8SFbe3n9pF?= =?us-ascii?Q?BSVJWDhrIHmmS2+xRR2RwOdesDewRq976Auz1oZXPzVITq+Dj9jz1xYFmHDg?= =?us-ascii?Q?ANq+CCpzh067ku/KoAfOVg9144qew5mBTwT14E+N+gUEzC7PPxcUgEfyzbDU?= =?us-ascii?Q?Wy7w/Afrn9H8IdwHA0K4/MrfkDozzF8TUVXl8Luc31ba/2AQxcNDQnCbXSux?= =?us-ascii?Q?ng=3D=3D?= X-OriginatorOrg: suse.com X-MS-Exchange-CrossTenant-Network-Message-Id: 4c4f7196-49ca-4a2d-def7-08daa794e3d4 X-MS-Exchange-CrossTenant-AuthSource: HE1PR0402MB3497.eurprd04.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 06 Oct 2022 12:18:34.8692 (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: wTTD+I4GF+nBafhsA+UZcWEcBAn5j4AvgnBgP38GVOm7FYtr4cwWwVRz1fWP6ZGdtLeX9ir9n4Y0U9BYxf/u9g== X-MS-Exchange-Transport-CrossTenantHeadersStamped: AS8PR04MB8450 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 b15b97e8cbf7..e2f47e8ca63e 100644 --- a/net/mptcp/protocol.c +++ b/net/mptcp/protocol.c @@ -1609,44 +1609,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 Thu May 2 04:02:48 2024 Received: from EUR03-DBA-obe.outbound.protection.outlook.com (mail-dbaeur03on2068.outbound.protection.outlook.com [40.107.104.68]) (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 638CD7F6 for ; Thu, 6 Oct 2022 12:18:43 +0000 (UTC) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=JKtKNaO2e2Kx95b0s95DzV80v0BSxnv0uUpXTRdMKmcwz0rQ66Ukgr2hzsdH6wm8FKU/TN++3rarlebVfOOvhca+OgUbjhhta1aE/VGTT72+tQVV45uXEHqTAa2VEIkmJ2aevo4mkwxrkf6wYU+/1TGRd32oR2Ng+jthlyKdBACUqXDhxh6RGuF89yIBBmKiVlsc0FyqnN44dcpoqvFL/6cenG3EiHPRE5E3bgRmIoq49xTFVhFOtf8YjM14TxLO3l3ohchXLU+IMXgxdA+slOut1s5P4MgvxBsPKAtBQghBkkm3207UDRQU8CAMQ0kPh+DWQ7GFb+xNzwuTmL1Tjw== 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=Udbz/0KRHD2Yx0zPilhcBMX8c0qPMZgV/h6nFNsMx+I=; b=KvnSJz/vN/MjCGw4ARazxv2o3Kskh/aw4I8WC43XbPiM3Xv2NYApwXIDonW9fhGBqajCf36QPlNpSwDfbWu7jwE4o/Iz3964Nn9+pRI+L5WsO+WxcVxI5GkN7Hj7rnIuLbTuElvbR9T3Cp3guR0foPjYX/mppigWYjNMb2ADAYsayM1S2JRNaoDOJGReEJCV/Wt85y7xPirWK/y+fIOzNfm5+JzH1LX3W7h+6e6iYMWNqkXH1jk13ItmpaVdiGBhFvYbnSY0Rry6fqQV9eEyQu7f9KPEaUXSAD/CtG6Jplhcr9j11R/trtCXnPNACHotgnZQXrS60Y5bWwssTE+ZEw== 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=Udbz/0KRHD2Yx0zPilhcBMX8c0qPMZgV/h6nFNsMx+I=; b=eLcmq6idBHz2i0sqfgHTztThVZ6YEERLG9FbQAt6QLnHvHlEhruhXpTEabQBI0xtCjCdi22B1BSZ7QfvU3Ij1E87Me0v8hNeFKhhWTimQRR4J7YTLrqKpV6LXVF7344xrYGy//J9l3zq+K7gNw9oGrFYZydf0GJVR4C10oQAOjetUkUgcWmJZWoMCY1B8xne0vzruOyxNYzknFq3+wujTSON4qGcwPY71ssZDHhjISJZyNnN6GL/klojM2RjPPuCnUY4GUAKvxf+GDgLpCz9LL7JT2ZaAmMmY9hK7LVsgbeK+fdjiCmV4fBxoktXzJI6CXd0ruD65bYse/qkm0HwzQ== 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 AS8PR04MB8450.eurprd04.prod.outlook.com (2603:10a6:20b:346::5) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5676.34; Thu, 6 Oct 2022 12:18:41 +0000 Received: from HE1PR0402MB3497.eurprd04.prod.outlook.com ([fe80::c5ff:965f:506f:6770]) by HE1PR0402MB3497.eurprd04.prod.outlook.com ([fe80::c5ff:965f:506f:6770%4]) with mapi id 15.20.5676.034; Thu, 6 Oct 2022 12:18:41 +0000 From: Geliang Tang To: mptcp@lists.linux.dev Cc: Geliang Tang Subject: [PATCH mptcp-next v5 09/11] mptcp: simplify subflow_push_pending Date: Thu, 6 Oct 2022 20:17:57 +0800 Message-Id: <20ac796b98f46678a8027b1bb9eb33169ee96618.1665058389.git.geliang.tang@suse.com> X-Mailer: git-send-email 2.35.3 In-Reply-To: References: Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: SI2PR04CA0017.apcprd04.prod.outlook.com (2603:1096:4:197::15) 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_|AS8PR04MB8450:EE_ X-MS-Office365-Filtering-Correlation-Id: 82816a7e-90b1-4377-aff5-08daa794e7c7 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: s2UZm0uWsDLo/yYlsYhU0ABk/f5hGnD1olfu0hZTN+YBaeboh5cCE8CeJR2gsAmSBSaAbiGRPCCSVYx+8HmIVfSLI025TU3pIDd8uJeSnXHGpuTUt+GS4BmClo+KkM+4T9mCEkPxNxnI+wjbhL5pKL8w37mnoAGZUpyDRmEwYWPwV2vJe0Aa/FshU0GO6mKRysQ8o/zAPrlCDfAEn43YIQuol0CdENMJZoOV2Y2ypUZ7A+t8zoJslwNJyvcZT9OXMsVnUme4YAzuJhsrabxjK2I1JlX9c9IY1tUXWE7r0v6I9iYVaMgsScO9ZX6byCLj/Dp8KZhjKd/1LZ+36j53qPzzsYg+AMSLwiJXPbJ3IcCD9Y/A3vSFkiH6Bt81eeCEj1b4muwmg4ZqJu9bY1D+KObhsEhMiE3QFkXcfiVUzOP0hPVqWr/lBl7fROnZCxccvjiJbLs9GHtsgE6DFHP9OoUlq3mFsKeCJOhI9FkqBLGRwgIaRayuWSZdSEEeEMSrAi9C8+AaSZKQRD0YqBL4zQhC0XBNKyjhJFnqOMQY1nCTLKIa7YNGVczJ0MBj9lJYnA87r21qjShkQIDUmSY6smjH4y4ZARwsIPcOiMPjqSb5eYkQGpDVI/4Mmp02HgmmlxU+BbpHLbvnnuJcSEMcr+5WhfjoySIWRIKSZHH8TIyK4eOVLblY9HK/g2Wk1R0kHV+DIdnp8urMFw5aVp/QVx010y1xR50gtVqV4CJ+f87LU01t3+AHLzQo2tq3TbeU 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)(136003)(39860400002)(366004)(346002)(396003)(376002)(451199015)(6916009)(41300700001)(316002)(478600001)(6486002)(38100700002)(36756003)(2906002)(8936002)(5660300002)(66946007)(8676002)(66556008)(4326008)(66476007)(44832011)(6512007)(83380400001)(6506007)(26005)(6666004)(2616005)(107886003)(86362001)(186003)(13296009);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?BCZx3VwE+owlu1k+ZVH5EPCkaffKv5Z8g20hlXU+QIRHqvQajdPhC8Fbq2JF?= =?us-ascii?Q?gr3i2wjtLcYhBF/Lmzay35mzU/cpxeN/L1B5OPdXq0zrRVnKRMxyagK0yjNR?= =?us-ascii?Q?e687XK55L2rk1JkInF9/URy/1jrJc5zqll4GcIne3ZBDSGbjC3Wz+xGlx+IU?= =?us-ascii?Q?hLAgaXryyn6V56k8ffzVx9V400BjJN4D00K0f4q7UBdejfoDDswKo0Qo9U2i?= =?us-ascii?Q?36uXLHElxa9HhFp1cZsXpaIF4GWiXhrau1+249DBJJa9ev5Z++GNd40YkdNq?= =?us-ascii?Q?S1A7Q7AEU75sGzI/nuoPXAGpMFDJ3SIEZ691pkSUbQN5/KmC7/7xa2Qbs4F4?= =?us-ascii?Q?vJapoVYr7X1cf7k6FjJ129/0uGZNLLxbYE+fgUisl6FoLO3+BxyfJXZSwakD?= =?us-ascii?Q?x1HvGQr1IJlnp92GOLiKZlYG2ZYXhH+4wvMNfd72zubp6yRwZHL+79fW58O8?= =?us-ascii?Q?o2mykuKkMmuGpnDH8qbk++mkLR0czorKZkYnAdAak05LCSgZcMr6Gc3OdlFH?= =?us-ascii?Q?gZZ7StR2ikrZCL5G5iZbNfLqAK0+Pwd1WvZ13EvPHdn96OqH5pHgoVsM0I1J?= =?us-ascii?Q?HjbklFcQKh7UkGiYMNg+vaNv/3FYSaxWM7MziNCXhkhGoIhoGNUEkxiHhBmp?= =?us-ascii?Q?EpqrASiOHYvmBOEGf9FiVv3jAvF0J6syBZx6eUI8TjR4by+YqxGff+qPcQO2?= =?us-ascii?Q?QGglpci83SiFoXWNWwZQE+QxBHZEgj1/VsU0iHuvUZOip38gNsF88w4cHJW/?= =?us-ascii?Q?kmaR129FCac4a4bItejwHPGgJUmSbkpVVUw2dVCupmAoCa3HEDv/z5dHYQZd?= =?us-ascii?Q?w+O8UHTpRB23mEcibcbFsB5+J0WRf+lsvPsv/9uByOVb4cXXRuyI6KKJaNJ3?= =?us-ascii?Q?wl4MWfVHHAPpf5cW4Avadx8nphMKeI3bvVHG428+5v1hHOCvPI8NpV/1DtRr?= =?us-ascii?Q?z3OZRgjsxlJ3WYoAGkArj4DPwNyWiNQ6JxpG6CQK1RYd0wCYoyON8wAHIE3y?= =?us-ascii?Q?Q+YQLs4D0YJO8v1/rHL9yjPJ5vsm6k95u2huNzjEljlGJDlW+OqIl+lUQ526?= =?us-ascii?Q?pW5P0nZ/9fDSoX5RuxYksAsqxWyEEVQ9CYkDLnSN8cZ4LP9XOevy0eaAi23d?= =?us-ascii?Q?OOJbu3Oug/AsT7rg1zyTm9xu6J15YxaZQCd5/+dBqeoghmUHf56w/ux5ADRE?= =?us-ascii?Q?NoAh1+sHhz8gQgxomFMNDbsh9I7iX0ICceEKPB1aaHgFamyxT2xKF/jk/CX/?= =?us-ascii?Q?irQbK+j/dk9gyJN+lFmZJoOOwlmHBZmYcWASoQ1Dp2ckzP9tYvYIVRmbHlzP?= =?us-ascii?Q?4f89tW6iNqCj54i+gX5b3CU0JXbhLdIln97B5q0PK5UVsR5cdZD6mkCdzgBv?= =?us-ascii?Q?Mu/YxX663uyCQo/HGcdvA/z515debZw8Z1EXl0EfqfDM9BlzMAzsuoYQ2o/V?= =?us-ascii?Q?sT28Hs8MeQXDBQEnlpZ/Jw4wj+WXqlP+75VjKwClygOYz6z69a/NuTZbmvXd?= =?us-ascii?Q?llqiHg7sZiOiUkSh6IqijPWgH700O1+s0IGLtGdFnhjZzFTxNHzjA8BGGhCS?= =?us-ascii?Q?M2S0eFzRUm+xqTLtbXjOf7+3cnxoFTeIKMPQNJL/GCnb9Nb1WRMtxR2YT4WC?= =?us-ascii?Q?4w=3D=3D?= X-OriginatorOrg: suse.com X-MS-Exchange-CrossTenant-Network-Message-Id: 82816a7e-90b1-4377-aff5-08daa794e7c7 X-MS-Exchange-CrossTenant-AuthSource: HE1PR0402MB3497.eurprd04.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 06 Oct 2022 12:18:41.3062 (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: UJjr1J1nNWFxzXydjUH1urB/WK/6kxULM+8pCfrSe3I+d8su4g99vv6s25HoTq9JRWbib2/36atx0RAzqHSksw== X-MS-Exchange-Transport-CrossTenantHeadersStamped: AS8PR04MB8450 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 | 39 ++++++++------------------------------- 1 file changed, 8 insertions(+), 31 deletions(-) diff --git a/net/mptcp/protocol.c b/net/mptcp/protocol.c index e2f47e8ca63e..66436885b749 100644 --- a/net/mptcp/protocol.c +++ b/net/mptcp/protocol.c @@ -1604,10 +1604,10 @@ static void __mptcp_subflow_push_pending(struct soc= k *sk, struct sock *ssk, struct mptcp_sendmsg_info info =3D { .data_lock_held =3D true, }; - struct mptcp_data_frag *dfrag; struct sock *xmit_ssk; - int len, copied =3D 0; + int ret =3D 0; =20 +again: info.flags =3D 0; while (mptcp_send_head(sk)) { /* check for a different subflow usage only after @@ -1622,32 +1622,11 @@ static void __mptcp_subflow_push_pending(struct soc= k *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); + ret =3D __subflow_push_pending(sk, ssk, &info); + if (ret <=3D 0) { + if (ret =3D=3D -EAGAIN) + goto again; + break; } } =20 @@ -1655,9 +1634,7 @@ static void __mptcp_subflow_push_pending(struct sock = *sk, struct sock *ssk, /* __mptcp_alloc_tx_skb could have released some wmem and we are * not going to flush it via release_sock() */ - if (copied) { - tcp_push(ssk, 0, info.mss_now, tcp_sk(ssk)->nonagle, - info.size_goal); + if (ret > 0) { if (!mptcp_timer_pending(sk)) mptcp_reset_timer(sk); =20 --=20 2.35.3 From nobody Thu May 2 04:02:48 2024 Received: from EUR03-DBA-obe.outbound.protection.outlook.com (mail-dbaeur03on2082.outbound.protection.outlook.com [40.107.104.82]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 08A497F6 for ; Thu, 6 Oct 2022 12:18:49 +0000 (UTC) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=FG07FL3dSSdvaj9iwyP57LQ9aEB+EynCzsuHoEqK85EREBNvBwsVPbWq9CRsFlwypMH2S/F4GjV/5G/KmZQsIwC9oDtMGSDPiiWqwKedUkgAyWGRsD94HA4DIU7l3QZ+vRuQOmQZns5c5ByK0jlnjLGhrOZOCpAPiRkJuADpq6bzp7ag4T63r6KUeFXNPeJfYHcGENww/qChweiJ3HacGFcIrfWqFfdeJbLjLoPGgnYTBdNOZRp41FH08UYr/+zyh/o4TgO/blt87RmhJ0Vkx4dCJq4wzBxYOk+9GIbkqcaOAoN9P9kjxEp1K+6rOhhYTc6SHm4wscFgpkg60Pz0xQ== 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=GQsbJwkvuqQN0o8Pguj5KlrsL/wQ+TnsofxVO7XjZp4=; b=QQ/VbAcDvuLdfktJrSQs09K/MN0UKEQqAvCzZuXhHOEfuI1jzrV3fuLZ9xeHeVohmPVEQ2Q7g88br0d6pbp9UoBlW7SFaW+27bISDJ8sOKUd8c8rOQsTCPuSDymL/mgfsD7GGmaVlEqoHNsnWltlZS25zjaomSQsqONZnldwWvZ6QIT2H/QLSJd9YjDzcCjF/ZIyxf1NYMqBFkD53YQrmnayPOWXEcfIWS80nP4Ej+SJwlccQuHC+X5TUiXStzkn/auIZ5RChk0dPVu9rwjGINp7k5ayCR7UMt27bs7DMOFB3AX2Onx88HypE6+oRkCK2TotOrI0SsdcrW2zcRw4OQ== 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=GQsbJwkvuqQN0o8Pguj5KlrsL/wQ+TnsofxVO7XjZp4=; b=y9hQteUW3RP4xM+/9w5rd5x18Fpax8j3m9RHW81zK0BqMV3O8Gn8EPf2BM5mmTh6j+R4sB8Zga8eC65ZT+3lMMlSC8CY0OJCl9MNB0es+8hTeAAAGtFH7bFF07Y5ztWo7t/VbKikb9MyPmeUjAYGX7u1dCFsShY0B1PsqwLRq4qxTqW8gcDjKvQIeV0UJdh8DtplDjU/VLQcOkGwvI+fSNk8iL6dF4PMn1yfrljSCAxzBB5cHeGxRhslZN1UGCAqHrs6ONRpuGu6u10UQSo3W0BWQXhDhJbL1JNzHTG+D6EkZ79ApA49SM+NklBeBHc8UgCFmHDpU1eRNL+sSO34eQ== 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 AS8PR04MB8450.eurprd04.prod.outlook.com (2603:10a6:20b:346::5) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5676.34; Thu, 6 Oct 2022 12:18:47 +0000 Received: from HE1PR0402MB3497.eurprd04.prod.outlook.com ([fe80::c5ff:965f:506f:6770]) by HE1PR0402MB3497.eurprd04.prod.outlook.com ([fe80::c5ff:965f:506f:6770%4]) with mapi id 15.20.5676.034; Thu, 6 Oct 2022 12:18:47 +0000 From: Geliang Tang To: mptcp@lists.linux.dev Cc: Geliang Tang Subject: [PATCH mptcp-next v5 10/11] mptcp: multi subflows subflow_push_pending Date: Thu, 6 Oct 2022 20:17:58 +0800 Message-Id: <9c15254bcb9826194719bee8da25829b84c08431.1665058389.git.geliang.tang@suse.com> X-Mailer: git-send-email 2.35.3 In-Reply-To: References: Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: SI2P153CA0017.APCP153.PROD.OUTLOOK.COM (2603:1096:4:140::10) 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_|AS8PR04MB8450:EE_ X-MS-Office365-Filtering-Correlation-Id: d8bf4549-2816-46d9-abf3-08daa794eb83 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: 6riJsZRwrfhf0eFO4C++5tFpEmocLD346dI6wU7GmFKFpwj1Wxv3TbZFLdo5WyGv6LbL2N10LRXNu1u/d5G4/4eiUezcAbOkPB1dqT6i7KQHRZEoYpy5hI3lDjjvEhAnWFegt09lpk6pAXjhvjFyZvuUElzDsdHMSoDV5gbs7urhRLk7P1bBlHg+9b45oxxuwxuL8c0Yx/S3sV0fUknKnuXD837+9iT+bS2uMy7/xajIvOaCBGCfiZEdik5xmgJfIfE+Um7Fqcrfcvucsd6YH9TEl5wESNEPay+euqEzZcd+3TXnTBYqtyGkwW6M00GpZoqGbmtzPmJ82QDB0geUTmD3hx5fzFeCRdcU1bCuis/4bpQhWbIqivFy8RgfQVdx/HwxL36lt28JDo7eUstcR0jEqhiyx2JIUTD1gPhSD6FZJCv2Q5BzuHI106y7wIHnd0NzTUpMvPFzX5gyDAlRzAcTEUpSJd0+tsY3qBpYAnOoL8uZQmmTifBp1hjNU5/XzhN20NRoXtdIXHM20bisbzkI9ssY1X2w4grmurf7NMSzB8vMyOqjZlqC8u83flyb88KFdj2QIn2bTt1wsaMh9RJh/dV8Nt7mWBDHsyDlDgz8bKhJnx23hqxOyyfpbC6eOmop6G/V8qGEJiDc4btL6YYtZP1OMRwT3PpKlkyNmfH/94uHcvziZ9f5YhZfZdiCSjau6/xQqGBfkWYJCNR9hAAdRC0EGlFErK95bkZudc7kYZSH6aax80kM5P4r8AX4 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)(136003)(39860400002)(366004)(346002)(396003)(376002)(451199015)(6916009)(41300700001)(316002)(478600001)(6486002)(38100700002)(36756003)(2906002)(8936002)(5660300002)(66946007)(8676002)(66556008)(4326008)(66476007)(44832011)(6512007)(83380400001)(6506007)(26005)(6666004)(2616005)(107886003)(86362001)(186003)(13296009);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?zGNC8R8/3qCluAjHn43Jc+DXpxNxYlHgw7IF948HoSVruBl7mneZID3eog2X?= =?us-ascii?Q?qm8ntoEPKMe8ZaDwcFPKcZ20SdMt5udec5BWwkAL1kE1actcn50UGVsB4RDE?= =?us-ascii?Q?pr7Rw2Azkmr5EfB0ihohPHrHYxEqz7fQMMrYjKLWCLxR8pIEArSk77qiWqVA?= =?us-ascii?Q?RA+6di3pfemF6zNfHJdIKH8JYeADW1c1MHZv0jU8212W456O029yFMcmuirz?= =?us-ascii?Q?P2Soy7sA8i+ymc0JD6ZnJWHzfS5LZlllyPoJAZN1g2SUg+peRirHhXPeW78l?= =?us-ascii?Q?Ofkuq2yw7GZeQuTmOD4V0/nTvO47YAAs0gt5sLAnjPs9sAxAS8mlbWIt2JrE?= =?us-ascii?Q?Z2XpPemQFmuWPh2Z8xp/gZnQzYAugsVybGFyBPXqQp2sofV/7bXcARZyzmtu?= =?us-ascii?Q?aMo3eElQQSlfA6m6xJilKYs+mmcPsJ2fFi3RqKEOCbWh8AEjPE5QvYlpJMgR?= =?us-ascii?Q?BJvOvyvUXwol9yph9ewuVrjckPTiEOHHLDXD9eZslTnAuMyB8vsBxkW7XwQZ?= =?us-ascii?Q?r5kyv2I5uqPZqBSe0S+EHsC/iSjfznqzwnypr2y2h6ttw3nqPlj9jLTODZvB?= =?us-ascii?Q?f3XiHpxLlljOhh85OqlcQdUNB8Fc8vk7NBH/Hztu3B2d86SdX/Hcma6Zp23Y?= =?us-ascii?Q?7ugC9Yq8fK6JahcnxSqg2iUaqm4U38xaBYxTc0j2LRCCzSZSAIU69s4hADkA?= =?us-ascii?Q?F+sIY/XnyUirj8fMDr3doni2Q6zhyucxDW753C0iFthTfR4OipBCNrpdHcOM?= =?us-ascii?Q?2GoU4OL4gbRgfrmuNQZfFY+I78fHEY5iE8yuGQga4R+CbORPwQr9X9wLJslI?= =?us-ascii?Q?Xyp4KI4HCObkaJTFeZIL66SxYlbeXEwMcLXqopapmrl6Lt3YYBc0niPKe/o6?= =?us-ascii?Q?zax1AxpPqIXl9jtZiJPycb8U+6zs9OzZI46HOdl7zEc8hsDuz4Nnl2zJ5aV9?= =?us-ascii?Q?pgLF1gL1ZlyL3h/5gjdnH6ZnKDDsxTFySp7/hd1HGowG2xNVeuM0nvUBHV3W?= =?us-ascii?Q?6pv23SawqR+XmjPNM3ivZL3oJzvoQ/Emx2AaE8usvtKiEGnQU2RZo0YvYcw0?= =?us-ascii?Q?Dn5kN8puXTU4jjL7qqcxUOuew2PLlKsphj8yXdszZYAqkO3Zhc8/vW9mBo53?= =?us-ascii?Q?lI+Is5npR4+EuoxVb+m61i8dhBYbNRmxwPY/fFO9A/r0cOHM6JS/o0OBmHe2?= =?us-ascii?Q?rrtZ783NmkFJRh+Tld8mHcvhLFjXhdg6YWpHvcsm6hUAwd1WxQahn8UL8pFa?= =?us-ascii?Q?CWJU5tX+yaGXla0oAkeFa7XYZh9B8sqzwNuKPMB28YOE4Vkc/bLusOLlP0SO?= =?us-ascii?Q?D21CoOxFwu92HKenHcF4gLnzrCIKciCKjKQTgtjoTNugSg+yEg1SSa6T8M7J?= =?us-ascii?Q?mm1XHAfJysLsywGt8lj4ja5IZvyEn1xBfvzwEwc6N6+ENRgtu1IwwJLBvdu1?= =?us-ascii?Q?hQNW8tpKug4wEQRcbM75ODFcg4ieIkbENDtcfcZiNZ+oHhCyUyegTrY1H6Bc?= =?us-ascii?Q?3lNOJbMfp7oRthJKawNFjtT7ct+aVuJWE7larlv6rSIinWYepFxvb6CHZKE8?= =?us-ascii?Q?eQERBj+Od/8C8KM9YkIHk+ILa7gX7QFyyFuWI/vX5Dolq53JG8qxDTOFPO/O?= =?us-ascii?Q?vA=3D=3D?= X-OriginatorOrg: suse.com X-MS-Exchange-CrossTenant-Network-Message-Id: d8bf4549-2816-46d9-abf3-08daa794eb83 X-MS-Exchange-CrossTenant-AuthSource: HE1PR0402MB3497.eurprd04.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 06 Oct 2022 12:18:47.7744 (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: aCztraiQmA/oac7mMuGEyfnD0WDTqzTpoPX4+MZf1E+3te7AYkvUhS4cjffpH0wipzw0AlT+FzrxQ0dUuurr7g== X-MS-Exchange-Transport-CrossTenantHeadersStamped: AS8PR04MB8450 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 | 50 ++++++++++++++++++++++++++++++++------------ 1 file changed, 37 insertions(+), 13 deletions(-) diff --git a/net/mptcp/protocol.c b/net/mptcp/protocol.c index 66436885b749..ecea2a400e6b 100644 --- a/net/mptcp/protocol.c +++ b/net/mptcp/protocol.c @@ -1601,10 +1601,10 @@ static void __mptcp_subflow_push_pending(struct soc= k *sk, struct sock *ssk, bool 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, }; - struct sock *xmit_ssk; int ret =3D 0; =20 again: @@ -1613,20 +1613,44 @@ 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) { + ret =3D __subflow_push_pending(sk, ssk, &info); + if (ret <=3D 0) { + if (ret =3D=3D -EAGAIN) + goto again; + break; + } + first =3D false; + msk->last_snd =3D ssk; + continue; } =20 - ret =3D __subflow_push_pending(sk, ssk, &info); - if (ret <=3D 0) { - if (ret =3D=3D -EAGAIN) - goto again; - 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; + } + + ret =3D __subflow_push_pending(sk, ssk, &info); + if (ret <=3D 0) { + if (ret =3D=3D -EAGAIN) + goto again; + goto out; + } + msk->last_snd =3D ssk; + mptcp_subflow_set_scheduled(subflow, false); + } } } =20 --=20 2.35.3 From nobody Thu May 2 04:02:48 2024 Received: from EUR03-DBA-obe.outbound.protection.outlook.com (mail-dbaeur03on2049.outbound.protection.outlook.com [40.107.104.49]) (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 A0D547F6 for ; Thu, 6 Oct 2022 12:18:57 +0000 (UTC) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=c2YvreWUdqWQXdpYV8r7kMoySSx+kskizcSxjlwRFX2qUYfGYdouCKg21fg7C6XJcTjM0YNgU+mdMhi2MZ+95HgxnpSBFupxXhJxpHK14hDv1tH5rN7acmGnoxVe60ukRMqWUAN5HlIJNmxnkXuEgYKPOgoAtQCqsg0wUZchDUhih7JKivGkkLuTdiZTlnNDYegFVxZDOiDploLrda7og50pFkPT6mBGTZTSv3exQRlQS52lyoFrtrlS7ixa/EZL642T9rMlchfBPTp/gD5lPB8FCZpim4XZ75YOx+vRKYTfKUseLO/0lkMWfv/rB9T6S8LOnSbcT0abRRHwF11Cng== 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=H8TCz4GEhB25ZGFegIstJI8jx9SAdmlJZszmNULq4lI=; b=IVQbsrzhfnxWKg5mDi13m4S3aoJfoIOFmrWQcwBMI2aZQZ4//TLDvtP/VfOSL5fQ7Dh81xJjLA99r5oagSj0z1IsgKQwhmoGnqPxyDKiMywybQQtKb1afObaeqYV1qlsraa/ipPb3ojO4pusPRr7Z/K0MK5Od4dv7gipbZaGJrGwXlJIbKRzQ7QtAzbjWH/UekA/TnpAR7te5jvecElraJkhqMwRiLg3pTMfITwe6mJ1zfdENhr2NpvjzWBmQn5aRWLmx/ClMcCGLtcsvYzD18y/pBZ7W+riveVoghO7YKtPGX3HHgMcXKxFk6olneRDB8W2bi5UjpwO6vUypflTPw== 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=H8TCz4GEhB25ZGFegIstJI8jx9SAdmlJZszmNULq4lI=; b=mmh1x/W6zvdjOEfjiwDK3yZtOjD83/dUrNX48L+spQWiIp+jYOLTLBj/uSGdxMNac/pwCsC+e9ivoXn72lWr5V2Dk4HU2qPkizmhvce1mte76HhLTzoKbEQF+IFldrXsX43A4JNUOlKnlPdWAF6ZTdZZeHorE3Sd91aHAxjqOCgjgtuYeqGPGoxnKZhenXf2wGezD8qaVS6zEkVlppEXVERQaAenugz3CO4IXfC9vB3BufE7DNVSFvRU4SMsh8OB1lTROCOwEOgv0ILlcO6BqGblYXB7mqoDSkcBOmT3cnivnyDwTjT3qns82iDu96LgumZNPhyYDkGGvfv4Fe5nvw== 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 AS4PR04MB9292.eurprd04.prod.outlook.com (2603:10a6:20b:4e7::16) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5676.31; Thu, 6 Oct 2022 12:18:54 +0000 Received: from HE1PR0402MB3497.eurprd04.prod.outlook.com ([fe80::c5ff:965f:506f:6770]) by HE1PR0402MB3497.eurprd04.prod.outlook.com ([fe80::c5ff:965f:506f:6770%4]) with mapi id 15.20.5676.034; Thu, 6 Oct 2022 12:18:54 +0000 From: Geliang Tang To: mptcp@lists.linux.dev Cc: Geliang Tang Subject: [PATCH mptcp-next v5 11/11] mptcp: multi subflows retrans support Date: Thu, 6 Oct 2022 20:17:59 +0800 Message-Id: X-Mailer: git-send-email 2.35.3 In-Reply-To: References: Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: SI2P153CA0011.APCP153.PROD.OUTLOOK.COM (2603:1096:4:140::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_|AS4PR04MB9292:EE_ X-MS-Office365-Filtering-Correlation-Id: 6235e9b0-3cb4-4428-ef9c-08daa794efaa X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: msvR850Fo2q80Vpl/AN2+MFlL7e1fnb7eUWSvpjAG3YFA2Zc9HXCH1SShmyBzm8bQZaMEJ5jrdEMpa8bao7EvNvUt2oejvr02I3htQwKCmh5BwM9VcQ5djlTmvr0HX1Uth2yVVaiAOm2IIVDWTEimiPFyzus8AB2nQwQfob50WKRlFyo63aVjBVdxi76gavJOsYP40NWWUKlNjPz90nuDgM2TTHW1TJKudM0p0tPw9Fobe5bruLAkUGo589aVzkzUSCr9+1InSSCeoGG2Ri/HaeWuFUG6E3UWr1+QIt3aFv+xp0CfaDDwKpWqb7Zof+YPHh2wkZoxpWCtHcKiZgemlYH4F2O1jplbVSEtEdJkUsz+W3Lm6W6mIoLQauK/lP6AyKL4/sIZihJlQcemZe+4ElnT7w92U88b5DlDe67vfBy+IBG2b7OG+zEkV8o3h/1MzdyhtgA43lvPGX6ScG22hWVx87dmZwxiB0HQcCgCq/AVPNF72Yn+/2q0LmA/wAuQRJTReWIlwoCT69L0nq0I3wFv1ThhqknfVRXn7+Gs9nJRKm7j2L4PqSq0M/HT7uD9e0yR4n9aYNRowAQxH7R+P58A8n9KJnF4n5pqoJ58ozhMEASKPauHP1qdzCfZNtaWaOjRO9db0udUMZLxzNIb0EOp4kCuyx+FDS6rLT3f/jZ1BznJBQVM+tUjYxrP8jlYFzIwx3rvt19Uzwunw2c4xr7T5ljO2+wBlQq0YNNgkbSyUEGI5wW8v1kfPnWx3Sr 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)(396003)(366004)(136003)(376002)(346002)(39860400002)(451199015)(2906002)(186003)(38100700002)(5660300002)(36756003)(86362001)(66556008)(66946007)(107886003)(6506007)(8936002)(4326008)(41300700001)(66476007)(26005)(6512007)(44832011)(316002)(8676002)(6486002)(478600001)(6916009)(2616005)(83380400001)(13296009);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?1MK1Y1phspHWL/4hUe3tOpYN7lRqUeXw5Fk4trTnKg2NTRFtq3Gp8NrSJNB7?= =?us-ascii?Q?WglC9Hr8cyqF0tuvpw2jCTnHxQyH+CRHeNURg8mydxvVSWWbW5POb7gJIMGc?= =?us-ascii?Q?v8ChelEXIizJHLjBSmkSm15kvsgQTBjWV0fVXfzGNi94QugwkmYnEOvHSbl/?= =?us-ascii?Q?OAW7vCdLoKufkMdoCBZ9vfpFUuYmstxlt1XUxHQDtm0yZAS1lmKEUJcVlZI7?= =?us-ascii?Q?8OPnrLY+6AZSLq8eQbOXd1DNkEhsP3R8rE+QE0loo9RaLCY1gDOvlKABPtAk?= =?us-ascii?Q?sUjKrGpNrNVW0ypMzsmqAV9e4HpBuKhX1s+OKbH6pXsYLE2fCPvPPkUuh0Yq?= =?us-ascii?Q?aJUsvn14nQKwXh9+X4Dabe2dIMBvvYRRwCvBKlpNZJu4OpXYMZvNevjtcEAO?= =?us-ascii?Q?1wbb6iDR+697e/DsvIHjChyZt142QVOEHu5M+jbovbkJTVaEFNK5KDDcwQxb?= =?us-ascii?Q?zxvdtdrIxQvcQGDOdHlDmvymiD+NaI5RRYkCS3q1yPnHY2dfAjzAIF/I7zUl?= =?us-ascii?Q?6Mskji22aGAAHjLPLBYDVXyctkFSCOIeDiWeRJNwJUP/1GcCRv4a7xnlj22q?= =?us-ascii?Q?yCQoMHYsfsVFo/7ID/99LyjsLxyx1qDzTUQJAyUNf+QE6w+BxyLTZG6OvH4X?= =?us-ascii?Q?yOQppXSEwAdmg8c6nr/WvpGwoOmBpSX4AUSforeZfJbcW1cS2UPH5Bb1zw3A?= =?us-ascii?Q?WSKXZYqKexO0WI4QVGPeDEg2sGJqSwolc73I7JZf5vnR3wVny0ghBpLu1jq6?= =?us-ascii?Q?LiQJYQ2ouzE2or+HfVObO2/Qo5uUOz2HI2GYy9rpeeKvVxkYyynKcJ79Jgls?= =?us-ascii?Q?S2bl0umUBQI+rwwdTWPLby3MO8Rajax4nS5lBRHSv/xwZOFxAxrn6V/gz8DU?= =?us-ascii?Q?IwadxopKOR4WWOZ5/BihqJ8snUCUO0ANtSeHEoRQBZFXkXfgsk6VYxaJ8FxO?= =?us-ascii?Q?LrVo3DqNhZpXJ23JIOEyRcduzs4WceL1ecO7aWekQrhaq6C87968go1pQqVY?= =?us-ascii?Q?SBe+rw2rMchvrW7f82gMtywsnURTua14MT9Qy6YRN6ItOCKatEne65llaZ3C?= =?us-ascii?Q?mLEmNSYL3vrKVIVC6W5vDiQCcrZTxB4SOs/JdT7FCIVpp+TUD6Y20MJ3t4ze?= =?us-ascii?Q?l078shMBPF0RMhAWQ3N9sot9rXwJc/91h6QZf4haBBKXeeJhyauMsO/xvXl3?= =?us-ascii?Q?1Lx9MiAKO9DX1Z21ofhF/iSVNgS+PEN6uCIDA7JT5+WZaNc7NfC62ledHYTB?= =?us-ascii?Q?5VOuAQyo0o24LSHR6gmLXsqSQdcISSQr3m4+oTovh7AruLBWeVa9bFFyAQZJ?= =?us-ascii?Q?RfdOO6nlUGdhPRuVFQl5esZKl4BgmMvxxRfAVcL7a9vC3AkLGnHMkt1RFFXL?= =?us-ascii?Q?BuiHUzjuTkkn9F+57ZrqAusdWxy0MaIT36JhgyQrRwtJQUGCUMOALXF+n9SQ?= =?us-ascii?Q?Aq7MPg6alRwO/ccKnUzUclDZBoBpeSbymxDfgYbjZ4dEny3sPrlNIvPxNV+w?= =?us-ascii?Q?6EayaRryziwjvqV312J5x6umzdpoicYhr8EIq+/oKGVc5xnktoZXLlhQT78g?= =?us-ascii?Q?T70cEECRodGlUn94kjCJQQ7h/HYNMuthaRPbQCddvtyf5ZK2mfnBW3neUVu0?= =?us-ascii?Q?EQ=3D=3D?= X-OriginatorOrg: suse.com X-MS-Exchange-CrossTenant-Network-Message-Id: 6235e9b0-3cb4-4428-ef9c-08daa794efaa X-MS-Exchange-CrossTenant-AuthSource: HE1PR0402MB3497.eurprd04.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 06 Oct 2022 12:18:54.7114 (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: fzmLH0glBDQ2to+exz8KxH86Fgg8tmXlq2MCY12/fKsWu5L5IMMAgptTb2ePwxlJrdhDlf/HwImxifRa7I+uSQ== X-MS-Exchange-Transport-CrossTenantHeadersStamped: AS4PR04MB9292 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 ecea2a400e6b..b422d5de435b 100644 --- a/net/mptcp/protocol.c +++ b/net/mptcp/protocol.c @@ -2479,16 +2479,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)) { @@ -2507,31 +2508,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