From nobody Wed May 1 20:33:08 2024 Received: from EUR05-AM6-obe.outbound.protection.outlook.com (mail-am6eur05on2048.outbound.protection.outlook.com [40.107.22.48]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 4B3DC17CA for ; Wed, 12 Oct 2022 04:40:24 +0000 (UTC) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=awlb9c2YCZZcGDKHOipR+CqtIKXF/VhGUvuxHTEdlj21jKyLEYtA4zY6yk504QM0YGD3IHMEh0Fsl/1FWFU8oP+Jj3ODSbu8QeFUwGvBn+huLeAA90jdEQzcXuMWu49+UkOoUUEFcyUsbkC4GKM9pitGB/csTsiTg2eyJCO79WAgOwzzpF76lSe3GtY0pBAEBYORfd8cDK5DR0HypP4BxU4Uf5ketfqfvlpVDYzuV/vBERi1wrlir0GPGjq8FCTtxkud5p3JN9zWjlUSIn/uolO+3eIlMYLlSFSFg45I0q4awJymv5etLfRkInB/UUKY8boUVvPe4hLkqPymxI70kQ== 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=CxQh1Yb/jTl6VKmqplPmD4ZR07La8WSewUrWkcN1jTE=; b=as09oGIz+GUhAZqdEs4IWXB218FIkIux62rmQxj3xim0j4TddIBK4wsFojBupaFbRLpMy5+i1KAbuY0j5OlbK7oteQktI8JqHZ/KmcBOLyPZi5BbhGpKg5TFzxJQBRQQ0/jY3+PqPXaer+fuhinYkirfwJWdINkPLTwsE3ZbsjoAN1Ul+Nvvth9P7fcNBPssY4vvRClAO+vulfkJjxkbyArjDXTYpm0WshT8ZZFaro+wp0ojzWhMASk/44/zTcRTXUjxIgqilYwith7Gm7BarBXuGhh7cbUdEBA5k1WHp7cPQuyjFBxGVGY9COFrjMvrPnp/g7loDwv44lbV7Y1XDQ== 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=CxQh1Yb/jTl6VKmqplPmD4ZR07La8WSewUrWkcN1jTE=; b=mWFLwCorTapoG+qAKiBdejWD++UMGiQ98TTLYU36VcTRaNqpBgHpF+61ukRAY06pT/e55fXBPobWzVNnIUIszJYrICnx7Yr2TdmZtbkfVma6vK9XdztIpdFtECILkC9bzMXshxKKMcY74sDfHlHwlXGR2kgLmsbw9mewSmjePkO861+O/9uJK6gpylSKeE0RS2GOjFidArS4hvFH9c2M4cr3yr54iI15jJgW0hG0VeKOee84du1OI7tK1mKiIHMEf5cIZFiQPfHQ0ZaTVvtQAp5nr4ZpjqBJV1YhwEzE1F7C4TUK20Jh1z7fHoFYo3Nu7EshOUOO9l/KNKavG7DGxA== 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 PAXPR04MB8814.eurprd04.prod.outlook.com (2603:10a6:102:20d::20) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5709.15; Wed, 12 Oct 2022 04:40:21 +0000 Received: from HE1PR0402MB3497.eurprd04.prod.outlook.com ([fe80::f426:b04f:d9f1:cd5f]) by HE1PR0402MB3497.eurprd04.prod.outlook.com ([fe80::f426:b04f:d9f1:cd5f%4]) with mapi id 15.20.5709.021; Wed, 12 Oct 2022 04:40:21 +0000 From: Geliang Tang To: mptcp@lists.linux.dev Cc: Geliang Tang Subject: [PATCH mptcp-next v7 01/12] Squash to "mptcp: add get_subflow wrappers" Date: Wed, 12 Oct 2022 12:39:56 +0800 Message-Id: X-Mailer: git-send-email 2.35.3 In-Reply-To: References: Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: SI2P153CA0020.APCP153.PROD.OUTLOOK.COM (2603:1096:4:190::19) 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_|PAXPR04MB8814:EE_ X-MS-Office365-Filtering-Correlation-Id: 87ca1888-df46-46f2-a851-08daac0bdf2d X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: ERqG2pKgS16bfQ9iomKgfkHKxQHZ9zLnuVQ313UNWySzJkGgVLalcGWBZg4lRlYUnADPnNDAlGTcug2uvpuxgshq2+AbEOl8I07ILPLPeVwxB4slrzqFPyq4qtgcN7UEatRkyGqohNCmwj3cK3XoJCx3Tll8gTrYq60VywqMR8FJvJc2Fv+q/ZtwTkZH6IrdNU/B8XUzeLr4ro1s+XjhI+ZWJ+3NO2pOCcYGtwfe8RLYNuEbNiOU+v0KOZfVB4pHNnCO2NVvaOy3bWb5RF2uQ47324uAPXtIQ9jfso4pad34lWjC1tuEhqAfd7XspEulpq9t87AQpppJ25wxQ9I1vviGkzPDKmsWZcDOUKPOAeN2z1JoSqIpTB44Jf6O6ufqCdQ07NNk80ynjm0Ur4yYWG4K6skoQMmk6/M/t5BuJxcRrwzK5/ne9HuDFQgoA1LWi8wIjt1W5UBUb2p9Ot/81ikXU1FEbnFeooi8h8oqyC1i2ewB31lyJB1p786KvTVYu4CZ4V/NMkNCrPbbQnoME4r9myK/xRYy7HQJHcUNWLkWowoaUfHHXdyvQPmPl0Xz2ZdI5SrR/MNRDFBISs9l7knjjumMnq9X+nT3HX4zky9LapwiMQPrfVUtI9MYD9idAHvHKTN5FLBCDVdpOREe1awAW6EwCZHvHt4wlRY4tvJfYGjyD2L236uIcNOVwX1UthgRpyKP9Gc89cDG7UbAr+jTvJqDhXVSHM9SiCn7GoTVSgpIIUynu7OrsAPKfDoZ 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)(39860400002)(346002)(136003)(376002)(451199015)(107886003)(83380400001)(8936002)(2906002)(36756003)(8676002)(5660300002)(86362001)(41300700001)(66556008)(66946007)(316002)(44832011)(6916009)(4326008)(66476007)(26005)(6486002)(478600001)(38100700002)(186003)(2616005)(6512007)(6666004)(6506007)(13296009);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?R9rRq5avuLFxfqxzYyD30I8qms6anW9bpsUs5Dck5bJftn3f06lSx20LJKWB?= =?us-ascii?Q?fUSWJFtDNyUfufx0OAIAiwRRFElIuzumapXJFZpOx/exCaDJsHISfs/sPN0s?= =?us-ascii?Q?gWTd0vq0Ynkt8cLax7AreyC13eJcYAM3S1k0jJWVLxlUNeSXPQUETF2E471O?= =?us-ascii?Q?rlZc8bbFUKBzOmePjDTmjwGX+apA+12wknoMsZsD/DYrP2fcejtbg3PtMftX?= =?us-ascii?Q?NnKL3mIWTcl2yeJGVSOm/nLJh9a4j6+XwgKqrlH0/chyk9sd3c+4Dxhpy2U0?= =?us-ascii?Q?dus2TKF4yx9Or9eKo3po5ky9aD6nTzLNTQFkw13TZUT0SF+k72NfoET7LTUY?= =?us-ascii?Q?DnO0jQsB5Yk2HIUs0G1UEB1RKGQQe1V+n8YO4BecVnm9p7IILYWYx8L7fTAW?= =?us-ascii?Q?OaTaIs3KqtTGS0UAvKBOsXDoknfI8nVCSDrdBkAx7kAPlSkBe5CXPyTorFQI?= =?us-ascii?Q?v6hA4DN1ktZ1hvEarcvUEY/bYifRomvRxh3FyksbMIMeKNXwUrvJbfKd5URX?= =?us-ascii?Q?H1jcBWRlNdX4gP8OlLX52vjzGwR5x8R1kjA+ScbNQSAAsUBeFyvdyJz+PJtD?= =?us-ascii?Q?/hJzntWav5aGYLvoP2ADLn/1xDnZsp1H2kuK42aAr5gvu82Zt+qckwxoPifF?= =?us-ascii?Q?45YX70+UbFqtWSEFup5FEE9a+7jiuF8BJ75S0Qq25/4X26NJYBmXjHyhHhaX?= =?us-ascii?Q?4q1vDWe2avGkuvJprmqM2SPKLOdxT7oOAFZeZDxBvmJ1LLllz+g/YoYtzRPL?= =?us-ascii?Q?UgrXu4KpT1rIn6yWqDgMJvVaGu9EJj1c4Fx7U8ZLZzX9KJ749MyPdd8lD9Iy?= =?us-ascii?Q?nncCZgAZ1ExWqRAyaEbMFFkbD3vzDB1ZnV59/XKOEKOTvHXU1h/uIAA0GNkz?= =?us-ascii?Q?SwJQrhviAb7Vz0zom+I9J1Rg80SoBz98Qm9/xhpC0zOsPxMgn6uEDqEFYQDp?= =?us-ascii?Q?FRdZzb4O2fjmKDyIArOF7rv6uOzQZSvtBrgJye2grhvt/PmoUkfza5/eP7hf?= =?us-ascii?Q?F7lrlDtWYbEk0QzolaCMNBXL3bDJCGzxtR9lr7/esuwvuIPAIJq3DNphpTJ/?= =?us-ascii?Q?DwDU/IxJEQ28KZMQqaEOIk4XS5p+JLyxMcIVD1sw/FJbFHF8oN6Y/0TQUWP7?= =?us-ascii?Q?w3wT6h5uSJWnNjNsF0CbpCwFo51QUSKd7Lyz+w9QJ+d9p1rEJh0mcm+6QFR1?= =?us-ascii?Q?whH6XUgmCDeGq/V8ELqe5aFc+dCpYLPEjHh4ExQdb5tiei+qQfDhBMxnFtzN?= =?us-ascii?Q?VnKSGESTC4dahFCQWwaRofenBrIHixJCItRq9zn5sPDo5bIgHveBVLt1kEPM?= =?us-ascii?Q?MBB49DpAesJ+8of03qtUX0Aqe1wZjWzgVwczYcVO4aZqDXxZmw63ZeuXq9gF?= =?us-ascii?Q?f5LGIw4W0Yj2ZLo11qvGzYrx/orqzVZ12y1peVZaiB6lqz/pVZW4XCwr8jlz?= =?us-ascii?Q?ONHsFlf3nMk64k4QppfnQ9KJyrkzc7tTsTs0pZP1etFtcQh+5llnFnZVVJbn?= =?us-ascii?Q?EDeWN6Ft5uOnSk1aAry095O/uEO2ORvouBHc47CgDPNE7XfERiCUvtBROQJW?= =?us-ascii?Q?EtCfTXJtkRfsNJXuRtHJJj6iLcGILpdwnHLf3YSgTq+w5Zf2pGmDuLm5fX/F?= =?us-ascii?Q?gQ=3D=3D?= X-OriginatorOrg: suse.com X-MS-Exchange-CrossTenant-Network-Message-Id: 87ca1888-df46-46f2-a851-08daac0bdf2d X-MS-Exchange-CrossTenant-AuthSource: HE1PR0402MB3497.eurprd04.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 12 Oct 2022 04:40:21.8087 (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: M4YySxwLDUQB8SrdQSx28qqZNujqRacvDd0IYpxTaGvzUruojVA8u6bCZtb0y8qIG9JKE9LvNyb168gUylHFVA== X-MS-Exchange-Transport-CrossTenantHeadersStamped: PAXPR04MB8814 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. ''' Signed-off-by: Geliang Tang --- net/mptcp/protocol.c | 8 +++--- net/mptcp/protocol.h | 4 +-- net/mptcp/sched.c | 61 +++++++++++++++++++++----------------------- 3 files changed, 35 insertions(+), 38 deletions(-) diff --git a/net/mptcp/protocol.c b/net/mptcp/protocol.c index 1aa940928b4f..9a2253436f50 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) { @@ -2481,7 +2481,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)) { @@ -3199,7 +3199,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 18f866b1afda..d44c97bb41db 100644 --- a/net/mptcp/protocol.h +++ b/net/mptcp/protocol.h @@ -642,8 +642,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..9b128714055a 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); + sock_owned_by_me((const 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 Wed May 1 20:33:08 2024 Received: from EUR01-HE1-obe.outbound.protection.outlook.com (mail-eopbgr130043.outbound.protection.outlook.com [40.107.13.43]) (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 0E84C17CA for ; Wed, 12 Oct 2022 04:40:30 +0000 (UTC) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=i2M96j9m9ecn2JqnO2nIbRSFYJF1oCjF56f97/QtNRf37ZjwuLbGTnAksWDo/tRVdcj3bxA+85AS+V5pSnHRx7P71FY9//fikO/I7ChxMOf8KtSDRyuTqhJAzOcRM+XFRwhkWk47ewNs+YeyMBrnM/PoEkJd73P5qbHlBjdnwnB83ezizBly6JAgc40vBWgFmEW2G+165/1emWBEgpAJ8DExfuLn9Pby1gA1sBpbJQwJJA6nxHEk48q5iSNAzHRJliYnPFuEiTtdiWD23s8RHB9N2C/1qBPTTSjrbftHMX+3+KgMBjfg0Gs3O+R/ZrKlwPl9pn4E5J5AS9Kn3pQ7+g== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=wsOnjSqrgkbfkTE6pmyRUwRcDmt/XKW+i4Pe7JdDcAo=; b=SVR7WZ/GihP3QJBWKi6qZMDMjtZj8KsH6ILGsF3oUl2iJieF3F6he/2BIyCvE1C7yblpWtzRkJOqaKKBii5hKUmXeRzO9c4KAST58HGetTa1sLjm/k95iccz+ad8BRcEQ91AZkgKgQ0nPkdT4qJ+iLUCTZzijgMP1aoI61w2ODqJKL385/TVqm3Wmqu8vWrABgOoOhOnOKPO27K+Xrwf3MxLB1m5OATjl0OjlPvfMmRGc8Tec3cGS75b66FjUMZ5q0zIWbbrcjcCTjb7HZTMsOFGwmaphyaUe8FBwSZL3o8pXKTZdZwENZuLKIIVCC4G297Dzna34rmeGMXDXVOHuQ== 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=wsOnjSqrgkbfkTE6pmyRUwRcDmt/XKW+i4Pe7JdDcAo=; b=4ZjjGaWg/7Pd7lXCxGkcBAd3HFV73XCCAGJncZkEAQKdFeDlRmhQSA2bSzTC03/owtQDnzPWz0eIL9ZYPFj8AeUTaJSM9cXLMDwn5XU8vGHsblU/QlS6AEb39WJ7M0gxPK/kwD+dWPVpdwy5Of6KRk7Ro7F9pUM/+C6JvK6Qk8Fh+ZLAm8b1kiXS/D1IICXFi2jtOjJq7oEdfFHx09mNmQCe1qxvrC7B/MCiPsSMXc2m1FQ1zpH3jM/zPAGp0Rz0SS0M+EABZVx0uvY/tL0JKvPZ0izniKLt0SqrbE3c/jg7wXU2tQ6Km5cGEpIbiBYqJrkxbutbM+vbqMnzmO4jGg== 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 PAXPR04MB8814.eurprd04.prod.outlook.com (2603:10a6:102:20d::20) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5709.15; Wed, 12 Oct 2022 04:40:28 +0000 Received: from HE1PR0402MB3497.eurprd04.prod.outlook.com ([fe80::f426:b04f:d9f1:cd5f]) by HE1PR0402MB3497.eurprd04.prod.outlook.com ([fe80::f426:b04f:d9f1:cd5f%4]) with mapi id 15.20.5709.021; Wed, 12 Oct 2022 04:40:28 +0000 From: Geliang Tang To: mptcp@lists.linux.dev Cc: Geliang Tang Subject: [PATCH mptcp-next v7 02/12] mptcp: change 'first' as a parameter Date: Wed, 12 Oct 2022 12:39:57 +0800 Message-Id: <028884c75c55908908f82bfda1133c0f9981f119.1665549148.git.geliang.tang@suse.com> X-Mailer: git-send-email 2.35.3 In-Reply-To: References: Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: SI2P153CA0022.APCP153.PROD.OUTLOOK.COM (2603:1096:4:190::8) 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_|PAXPR04MB8814:EE_ X-MS-Office365-Filtering-Correlation-Id: c11cc46e-dab2-4005-b580-08daac0be2fc X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: gf8gijKulD1zdpQLM//DKS0EgtZI3jAzGFd6yCcQYstjVLW0edAsNX2efA0q1b+lu5RCV18kSMzWtkldUm49Pt7Zme6/5Vns3hYdx+cq3eW2Sa7t/ewvRBXbCFfzpdNxqJSITTaSIOqSJcrBGLEaSLqPkhDLuxNY4dMZjOKdTyJrPTS3e/BVkJm1AXWnBl3apCOPV67VJlU2vAS+C433QC2tmvYUYIJQvL7NPB7IsPJzsw3zQKocZt3OW/ZOsl6T7cbJXN8d6k5jt0ShppvhB99ifkn3YXVVoTY7OFg+mr9m3N8p8/sL7e3pQtYkYEUQYNMxf+Yro7vUpJNFePr9pIUtDTYxn2h0KOuNupBurRwRG3xEkmo22nNEJ1wZakaUinHNfA7ykRft+Ko5OiI0A5SrFU2B8paREgX+blAfAzXGYfx1Qe36XW1uDujfuzpq1mEJ36PnIFnznHBVvuRnq9ZO6qLiQx35uE95yVLDRmqTodl6Uq23UwBMTjiKQBEi8aX9gvQ0jFilx6iOKnF4187SN4p2o6QiIbcclLrQhixZsVNiaEVUDSNLQ3fhD85yTAhFx8K5+hFqYkD4bDXqPFbxcsFV/cDHR8VeLhoqiVb1nftaplOyZRDs2IejBmkncYcgiZSjAq/MoeAWuqn2IC3XIB/9qt4n+0q/3MsbeULrsNoAdPg5iRuYw/+Q4JLZ1xI+rYBXRg9r6+uwX+8kRSPL4db5MSDsYWE35e9cnuu8kcnakmtP5Qlrnwzeql4v 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)(39860400002)(346002)(136003)(376002)(451199015)(107886003)(66899015)(83380400001)(8936002)(2906002)(36756003)(8676002)(5660300002)(86362001)(41300700001)(66556008)(66946007)(316002)(44832011)(6916009)(4326008)(66476007)(26005)(6486002)(478600001)(38100700002)(186003)(2616005)(6512007)(6666004)(6506007)(13296009);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?Fe9pUvq2kWxnqQwSfcjVT3LaAKlnJyIViYE7xblmsf4eCvb9vGYL7Sgyxv2v?= =?us-ascii?Q?T+7cL0GI1BCZZdsWOJbzoV4zTzsYVsbnlX1Pm7SufFtbMTkma4PFDbtEGS/p?= =?us-ascii?Q?C49xUGHvkn8gyNIGeWm/QweF1kiJ8XMLDU7ecGn0ho/ZeE5sV0f2jGc3b90q?= =?us-ascii?Q?RTrTTdcw1Rwuxu+MrfbX1ldBxpZ6guVEJGNd1voinVj76BajHglvDw7zViFJ?= =?us-ascii?Q?UsH3dRFu3Exz6tZPEwfYmtOI8aaOHjCGCGvugq/prcgFvy5gSoc2SgvOCclv?= =?us-ascii?Q?uiGtqrIYWGmKwyvQrukdUPWdewwtayh1gmJ9Nfl5btuguEDXsOaTTBI71gdJ?= =?us-ascii?Q?3Ra8LulZrboSLxzMLOkQKe/VOUOEICYz0u+b8oq+88pADAF6byz5uI18MjcO?= =?us-ascii?Q?Dh/As98IPoN1vlFZ4qE4le+VShIsO235G+gttfZS2OXMCWxUu4XoQqbvjUH+?= =?us-ascii?Q?vIFFOInwU2GRQSgKhlirtbDNp7kqwAVRgHbEmWa4Y0Qk4FUhOJdMdeWozf5t?= =?us-ascii?Q?KWVomWraRFjGJUGNO5le2tfKrdcwNunGzDOd/rWP4kialC5lWOVWQn3jJdlv?= =?us-ascii?Q?maOS19tKF02aBr+7CS/apAO9EbQkfsGsezFOaOchrawMhY/m82Aq9ix26wJc?= =?us-ascii?Q?jkUcn5xNmgl+aVR0uZ8J9LBa9m8Zsw+RE/JH96oXAnEtXa0C+pwfFfx35Khx?= =?us-ascii?Q?ZQG0QQE6XP3SIxM4ktpAGv0z27q+KHJ5UI35ci2LQyc1QtN3br5/kCPjOwTF?= =?us-ascii?Q?nZXN8VrZnbJlT4T6MQz4v1c4vfU703SYzUfNOr/nCarowO8eCxB5mSag2fZC?= =?us-ascii?Q?+pXigUle9+EoCxjTLuScqFuYY9GeiDLT4e44+IjdNi6NlI0GiYJmd6W6vtzw?= =?us-ascii?Q?qWGb/VNCrx5BRvG1pupha73qRi2LBwl3pTiEf7T8qcKctLmpJXjBdV/mHuHB?= =?us-ascii?Q?jK88rf8L0vubecgo2eZ4g8IoU5YHAzea5ZoZuQobjDd6Mrwk+yNxNEAin3nr?= =?us-ascii?Q?wLwYu+RQcz1wG/FEskBpyveb8gnX+38VXE3upLbsmFiwnoQ/gRsQQW++Nwuz?= =?us-ascii?Q?RzTcQu7TGxT9nyHaN2qyA71HOuTNTWmTJtDr9igsEbFznKjEZ5DblBqYqWys?= =?us-ascii?Q?Uk312gmjhn//Oe7YXWfG3eXbmgrT0Irr2vWlcgsHNou5/mdzYJ1H1EpCISZ1?= =?us-ascii?Q?UspybAD0JGZ3qzouHi7GhUjDX2F+vrU41cbydiMiYCjpEa/5CQqIofsI4bS4?= =?us-ascii?Q?3j4hscXZ02aHOwQk09MMJKm9pZaT3XRQjakYZ9FTUjL8beb2uK9VGs+B9JXp?= =?us-ascii?Q?MWAyAQirqY/rtV21lVtgot1yRzI7hiQnkMYVgGVeihTLjS+WCrhTu2oOyVdf?= =?us-ascii?Q?5lIHmTgE7NtCQCZRUJDrXQaIc/ySznxfJvit1wjXdS0yTTDu3gRcWo0eX6VE?= =?us-ascii?Q?xCU4OQJjF5qzS/sFqlQd8XdxgQ6LgidFWGnLHK/5FUM7JxDGQvr+ETYARf2j?= =?us-ascii?Q?DVnQNwR5Vlh6OUd2bB7dPhPCTQxw2+GLJ0wOUSaWvTwKZPYgnb926BiFFPZH?= =?us-ascii?Q?iesRNhneIZk/br9Xg8KyGpfdhEQeaIfQesJcpfB/5YyBfCuXQTbXQSuQz1dn?= =?us-ascii?Q?HA=3D=3D?= X-OriginatorOrg: suse.com X-MS-Exchange-CrossTenant-Network-Message-Id: c11cc46e-dab2-4005-b580-08daac0be2fc X-MS-Exchange-CrossTenant-AuthSource: HE1PR0402MB3497.eurprd04.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 12 Oct 2022 04:40:27.9957 (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: cCCm6p5ALeB5wd10bG1DffrPVrjzb7eAUykNb6b1DDK7T4/7FiJhSkHjO0W45jiGxvfW9mS7UnJSeCIhGBQoaA== X-MS-Exchange-Transport-CrossTenantHeadersStamped: PAXPR04MB8814 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 parameter 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 function __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 9a2253436f50..0285b21ff912 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)); @@ -3198,16 +3197,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) | \ @@ -3298,7 +3291,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 Wed May 1 20:33:08 2024 Received: from EUR01-HE1-obe.outbound.protection.outlook.com (mail-eopbgr130045.outbound.protection.outlook.com [40.107.13.45]) (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 8BE0117CA for ; Wed, 12 Oct 2022 04:40:36 +0000 (UTC) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=KjopaI+dzSofv78WvmI6yxd/QJhXlsLob1LDUnK3XfNDP68IcKXRflXGuZDUvO5rXI0b8PtKMYdo61o0WMOHvbB7ZkY6mQU6wThKLqsfHV+rRC5w90g4FGLr5DzexGDJxA21u0PCNgP+hIhTeJaBD73zPGoK4K2tPm7BmF/gQesemRjXFuQc8R8BOyGRTphQSgL13K0OI/laodvdg6nMZVJuK/NGv95p9MFaaHnJWab569coQ/EtiU1ccDl0hmzS1lu6kVa0YOf9WDGCOFGUSY5mhzJ+IfrwY6+K14WDtjaDZ9e4smlicgmjbNwaDPkEv8+zF/C3Gw2O9FbDCbpQqQ== 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=ZtSB2AOnwbfoLW2FuQhhbfPDVxG61dziHJglw82O/1Q=; b=YJCOQ2UREAnNns/6ma4hhlqyFUHNUNXObe6Yrw7GyIWc2T+jTFGPWAMbACgsgEWowuXuzgo3u8xiUhtIcJpM6404+A/Hv8olNnAboYGtLjq9fGP8QHZoVdJaEW2FOVeJxECT1onn0XVATKE9TMohtlF5qHaUOsX8w1afjxu214iI7fh2f8uyRf2V0t6N3BH0XXz8U0P/hiVwfOPgz4Z0THO5RtrMXJpJ8XFy62gBIKyoVmXyw7bRy7lhH8xz3xjfzfHcrWHzuIH4tKegCzpFcmBQrpd6TNjproNRSHPc1s0Gq6g6venmS3xUDiQj6Vs6jqzj9XaMMHVlS+0W494sMQ== 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=ZtSB2AOnwbfoLW2FuQhhbfPDVxG61dziHJglw82O/1Q=; b=waTYJESuebyF9Vyijh7/eIZ1tYbJRKWARQSnd/1IWrQR9HUjh0hGNJPLL1WIfWvYMSQhG9AjiPoovm2uUiN9lAO8xGRYA67GFpR1ctI8Kz6N8kYuhRYVIJ9/iDH+cXWuxVUqImjyA+6srQxI8wf5DaNVeDCrwijEUP+lutiTGPg56Yq7MeKkxru0HY5/ByzfZfbfjCrS13KYOReL1yskBp8LrVyP9zU5T0cwhTPUI1H/wFbdFv/a8h09IHmVSK22dYhQ2zEmxTIMsWwUMxyiPciHllEjod3+vr12JHrWyMpUDcxmgPHrl7jJqAAJ4tYJfI1R4GG2b84GpCIFp+CI9A== 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 PAXPR04MB8814.eurprd04.prod.outlook.com (2603:10a6:102:20d::20) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5709.15; Wed, 12 Oct 2022 04:40:33 +0000 Received: from HE1PR0402MB3497.eurprd04.prod.outlook.com ([fe80::f426:b04f:d9f1:cd5f]) by HE1PR0402MB3497.eurprd04.prod.outlook.com ([fe80::f426:b04f:d9f1:cd5f%4]) with mapi id 15.20.5709.021; Wed, 12 Oct 2022 04:40:33 +0000 From: Geliang Tang To: mptcp@lists.linux.dev Cc: Geliang Tang Subject: [PATCH mptcp-next v7 03/12] mptcp: refactor push_pending logic Date: Wed, 12 Oct 2022 12:39:58 +0800 Message-Id: X-Mailer: git-send-email 2.35.3 In-Reply-To: References: Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: SI2PR01CA0048.apcprd01.prod.exchangelabs.com (2603:1096:4:193::17) To HE1PR0402MB3497.eurprd04.prod.outlook.com (2603:10a6:7:83::14) Precedence: bulk X-Mailing-List: mptcp@lists.linux.dev List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: HE1PR0402MB3497:EE_|PAXPR04MB8814:EE_ X-MS-Office365-Filtering-Correlation-Id: 01642707-c9ef-448f-dd74-08daac0be662 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: Yaon3ZhPi2Ly1dv78xIVxOExC5hJNIKWAhCMdDg0Wh0geLY+fpPddw/3kuu0YWXWYwU1QzybHiYkhYj3G0JooZyI215LYfqqyenprgqq2ZAwTjmsfRvoLcoF/vKKL4V+Ov4y259tuQM/cMheDttY+BoJqSCIb9nrGZJrniFjvNKGjr/n3rSA7FOtk/ugLGtaoL3klhtT1LXkeRcCnhZs5gadtDSVGqPzAfsanzScsnQNWrkujOoTq94YkPmQXrE3nlMqS5oY6CY94hkkdFm4gMt2Yi0WA6bXAZgGLrVOlGuPyoCUcG0jXTasxWEqyGUIzV1b+HdRLbtU4e/0pQ+18Sqx7yDS8Bd7TyM1GYspoOqdzcvsF+FYo/RXLnW8Ap/8x4WSLCX9SwdqMv6T90n7wWQk08oROsIMMnIFRi4vJIswncuekuH4Jo9iSnMuehJFOYKfbsIIfFDV0EPvZh7OiukmNjshMODSkLxdfKMm7eImB/Bd0+neOsv33CcsygvEyTMGsrBnmLNbP2iFn9YyUoAcKTBbz7xQFuHQzcgsDQNEpI/USlL6wvU4rEO4nO56vpKRGYozzvABkUQH61FCDoDf/JG7sUS0xGmf5C2cWRduYNxJT0D9e89mHU+KnutqioDG6CxTf/7lfHK8px1yjMJiKUWsspCiSNZSgzAxtBa0mRtd9oBq95gCAPUyoHAzslTfa1958cbpi6rTY+RLfxCSbHt14wOk6TPSdNdvyeJ3qpapjLWgj7+Vn9yjP3ZB 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)(39860400002)(346002)(136003)(376002)(451199015)(107886003)(83380400001)(8936002)(2906002)(36756003)(8676002)(5660300002)(86362001)(41300700001)(66556008)(66946007)(316002)(44832011)(6916009)(4326008)(66476007)(26005)(6486002)(478600001)(38100700002)(186003)(2616005)(6512007)(6666004)(6506007)(13296009);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?RjTxt5I0o4MyDyQF9IAL5ea/PWQ5Idt2s6ZPdIov0C3z4xvwJuAJ1lUExr8S?= =?us-ascii?Q?VD8+lSqFU416er5Byh/fBk0OLLHZoSPbEkexZXjjlXQVkZt2yjmYZgvdp4Kv?= =?us-ascii?Q?Fj39t25JAeJHlHtt33LTN96fF6KEezaouidAuPXj0pCSeojRO7NGDpHXYVQa?= =?us-ascii?Q?ZqawbHi7LuE/oD8pqpmmhe36MBr+r5TfH5sK12i6mpd7a3IDBq4OfC069o9w?= =?us-ascii?Q?1xN7iJGDRfi/h7INhtJD9gQmQM5R0A0JHO5m2SXBS4Qm5J1OAAOxlK4k3KFm?= =?us-ascii?Q?kJf4gCysodaL7QaPS2aga7FjI1haPeN/NVWpqHtGYn/PyPrQPY0IlLbuA0PK?= =?us-ascii?Q?2TSiRQP5em0QDhv0YDAAqifHjM7a2eZLX6TG37dhD/v8D15+HdEo7XwYQpEq?= =?us-ascii?Q?ZnkPBFXxAyJMFqq+Wgoi+kw8OtzOwExLPnmObJB+8HprIrkOOmqmxGx74Vup?= =?us-ascii?Q?bjAWLR3LZivh3dF05cgljbAbxVEX4rHABq6bP84YAGYvh+8vZOL4IuVIzCcZ?= =?us-ascii?Q?LNHZ8savrdPjSndx3Xb48W3lUHEOvXiAJ1JVFVFRIDOnV34kiWb4PHYmWnN/?= =?us-ascii?Q?fXcXYiNPTGCdeMd3APuQET6BcCaK7JzJWEUQeR5Q45qhE4b/Y/MLZOdM5fpp?= =?us-ascii?Q?EQ0GlOiM0hUQWhczala+fNeBGXrq9pMElbYUsDHXb8RjkoT9yv1SaD7MRzRF?= =?us-ascii?Q?TGf6G2MPCAopLX6p2fgzWkppE4aYbrPWdynzCkFi7dsxOC/n83lR5zLlB8Ro?= =?us-ascii?Q?NFTJH4Cg33XRPLNk3+pyKN85AnM/mmcvSCzUVOBE0O6QkRuUblvWYSw8QGyU?= =?us-ascii?Q?NFOY2mqh8S/8fUd+Cf8gMPPX3SSR5q2FqqcwBMhaQiNMaWXMvlRKzrmaRZ5u?= =?us-ascii?Q?+QNrBTpN0hnZQVYVRheyEUyed73fTTC6Q4MyZZW0I1bNXdqZmVhxp/JC1sH+?= =?us-ascii?Q?Sm5cA5MAP2H97Tcmiq0kALM+UkUvFAYIY35zlKY5ES/GFZj9milXbqlaV/Js?= =?us-ascii?Q?Yp/tMiJweI6pnkNpO6jnu87v81aTnW9dw78lm5f7kj5GuZMfwpPT/IWTU8WX?= =?us-ascii?Q?3R1RdM6il1YfVrkcm5QxPy97A3JTD5Y0fUnjkPM444sbPhNzPT6uyN5QK0yK?= =?us-ascii?Q?RSLN/432ofCHzVjuK8ycLLhfXSPzbguphRurSNm96/Ct9ict51FFaBDmMyXN?= =?us-ascii?Q?kJvvPhKUu02z4ChrlUQE4nDoQh7xXlNtrnij31rCiwVcdPV+8iEOL1D2hm43?= =?us-ascii?Q?1Rbh7ZPhyyYBbzRIJT96pXHQZIGkL0WrR9ZDQmLrim0JmOdakikWz9LJnY5C?= =?us-ascii?Q?EzTd9eVT81UAAqy2nBZpbi3bCkpvF8K1RhgSLwEgIMCzSr5tpYNy58rU9jm0?= =?us-ascii?Q?fqCFUEdpQWMhKxX6abGkg1ObtUPgV6ee+sZ8jd5NGkNNYmOPehFXUuc/lmYm?= =?us-ascii?Q?1/D7oao7S57mZRXY29BSoY3+TvJD8tfw9EM5jpQ2kcwJOJFcS4jMf3LQ+Z4r?= =?us-ascii?Q?oQ/nyP1jZMqbVi7YV/+DY2pvjQngGLQ4yDAcMkeymQP1LKAsrGwzpXsiyR06?= =?us-ascii?Q?f1lf+Ua6xwsN/7K/sKGZw8siDN+qgTBkvVZ0BzqkYRU09bB+ygJ3vlcYdutT?= =?us-ascii?Q?lQ=3D=3D?= X-OriginatorOrg: suse.com X-MS-Exchange-CrossTenant-Network-Message-Id: 01642707-c9ef-448f-dd74-08daac0be662 X-MS-Exchange-CrossTenant-AuthSource: HE1PR0402MB3497.eurprd04.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 12 Oct 2022 04:40:33.8234 (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: U65KGX2Np97wvPq+iJ6f52PcTkKrB8K9XQxULO6YJCzC6gxPHcbc67NLrGCdXaY6zPEL1fW7OjKV5QGQxLKcaw== X-MS-Exchange-Transport-CrossTenantHeadersStamped: PAXPR04MB8814 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 -> 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 also 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 0285b21ff912..52ac57fd8c27 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) { + mptcp_push_release(ssk, &info); + if (ret =3D=3D -EAGAIN) + goto again; + 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 Wed May 1 20:33:08 2024 Received: from EUR05-DB8-obe.outbound.protection.outlook.com (mail-db8eur05on2043.outbound.protection.outlook.com [40.107.20.43]) (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 9AC2C17CA for ; Wed, 12 Oct 2022 04:40:43 +0000 (UTC) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=ieKmCL23ItcV4iOHNZogS81WbI4+/7Y4jCm40WMndp1tTReHvaBseHfXx9nxTXdqM9ShMp4Ulc/bcDgTKZXfcmdS8Q8mxCedOLvoRRRAbQJAlBww+UuMDhahbTsW5lslOkOsoZHOj3zR61e+MadEIVLKXJxUd2kJLn0KK/5k8HrgJ9EGwH77yqdsQRzVNm1JDrBY9ei/Am3xtPZV8pWiH2Vl5Z44vvfnU/g0Reqsm4R0Shw4Zad3HrL3IKS0zdOB6a3UUxHYJbRcAwCTF7a51d3lJdPril4RIzp2DCPGHnsxLhfVSVg0I00EKatiZ1hJeXiQ+7hNDp9/mwxRZgeZcg== 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=4J1ugRQjnFj/22ve/ERiELUmvDgRKvH/YGYu/AKffDQ=; b=ZkaA045QNZ/9Q90L5EWYavd94o6GPtNTNqtcIImpqMMidvdeRdB7BAO5rEZEX6ep9nlfKkPPUQnHpgcRJif6pWH4B7M3iOQ4PcXLDHBU6DsG2O47CCyPQbcvGC3ao9Aomlm57fOQOVmeZ8XYcVcYF2xlUxI+F7UDEK3kcQ3mEYuU2sQsgPnAqD0fNgX+VhQeh5C7BCmgo+Xhr4kxbmQnyod7sOoCa4cDsvlbJZ/eJ/lr7gEGF+xZjA8BtijAkEkF/E8fTNi8XIVzWdjKMCv+dhbETWjN0Vp7CAAZBSH30vETfSEg4wT+y6OXh1MBcdsQAVIx90PEghcrkg9l5scz/g== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=suse.com; dmarc=pass action=none header.from=suse.com; dkim=pass header.d=suse.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=suse.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=4J1ugRQjnFj/22ve/ERiELUmvDgRKvH/YGYu/AKffDQ=; b=Zq9ciOgXK434n1oAadatoqGPixSwgEAHWx4+YOojO9BuQCpAW8BCCIqVESmmcbR6tA/FdwLEwpJ0chujCqn6lkuNMMGOri2N1gl9EXNyFRBpnfsXcND5hh55KyDT/39H2RK34Iek9pi8mGRPH9H1jUZ/8vEE17KU4vr/4q04q69qw4MIImKkpv6jyKcfPeFCBrOz1Wu1zvzNZNX7MlaSr5zQbYjb0Ei31RQ6s23WrWZJSUwBwC2SefWVcbZCeL1LGQ178a5eyNNvR8dlsJ02WGKE0bwdk9Z8YEW8jsIuIxQMtGwvEpbYF2s8mYnQAsg6et4j8eMm3oCOKsAFm4kowg== 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 PAXPR04MB8814.eurprd04.prod.outlook.com (2603:10a6:102:20d::20) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5709.15; Wed, 12 Oct 2022 04:40:41 +0000 Received: from HE1PR0402MB3497.eurprd04.prod.outlook.com ([fe80::f426:b04f:d9f1:cd5f]) by HE1PR0402MB3497.eurprd04.prod.outlook.com ([fe80::f426:b04f:d9f1:cd5f%4]) with mapi id 15.20.5709.021; Wed, 12 Oct 2022 04:40:41 +0000 From: Geliang Tang To: mptcp@lists.linux.dev Cc: Geliang Tang Subject: [PATCH mptcp-next v7 04/12] mptcp: drop last_snd of struct mptcp_sock Date: Wed, 12 Oct 2022 12:39:59 +0800 Message-Id: <8c7a2402131bc217a36bb2643ec55ec6025e93a3.1665549148.git.geliang.tang@suse.com> X-Mailer: git-send-email 2.35.3 In-Reply-To: References: Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: SI2PR01CA0037.apcprd01.prod.exchangelabs.com (2603:1096:4:193::9) To HE1PR0402MB3497.eurprd04.prod.outlook.com (2603:10a6:7:83::14) Precedence: bulk X-Mailing-List: mptcp@lists.linux.dev List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: HE1PR0402MB3497:EE_|PAXPR04MB8814:EE_ X-MS-Office365-Filtering-Correlation-Id: b6895687-2e92-415a-e264-08daac0beaad X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: u3L/qdfvaWjD7/ZadS9iFlLbkrCntBmepg1R2oTRNmYCA9DtSFzKZGFXWwRfyo3djWHn9ObbzOvG7R1rYUGW+IN5IDNV893SnSBcJD9LmL0YgDfnJSqc4UOHFqTFf3V5BqAX5lVgmQvGme/7aAX4eraDf6Y/iNZDBDHyzH0QNXQjp/F1UAiuPb0/3A28IaeGfrXb94De1izsBV1OVIiI4aMPuyN4CSkNceasIfWoK004Bz2S9Aqnvp9yeHesyshURVfpyPeoz3pxRootph5ptC2FxR/JwcFa1JgqD+6JCaLoGyEhPLc6lzaXm8H5hktOHaB5KRi+ZhLr2G2c7cmb2T4CLtRecxuh3OpmZpPNQt7J19cXps0GEKMAzMQLcZaj+zNtfCgXv+Uh0eVkFR6geWRGyZ55WdTVc7RmGht232lRHvp5/SgkaP3fKqdCqn/FUbdCfSDqWkDCJk4Y5KzR9hjsetRA3PSdwtRIFEHO3G7LB6hS0gK4UdQHNSxKzB4Qqk/K/ob5SWY5gMcTTlt/rSH/ouMdv9318CwasqVxwVqQ/v2YDM5pVnxal/zuY9WE5tUrkDoooEPY2bmM9vYyYbsNw6KUrFv4UKj1z4DYkgDzw5cMZo9TUnCgIRYDMr0ChzNm9lsBQP+AM4tblnHRAKD69SzHX6XIbfFnGMB6UZMZ9vYyx4s5wjlHSJLCqms1B69l9YQ1jfCz/l+JqthT8u/BMZhQL9Ww9Ew+ZVku/oiBoaUln/GXJCbj+V5kS6JW 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)(39860400002)(346002)(136003)(376002)(451199015)(107886003)(83380400001)(8936002)(2906002)(36756003)(8676002)(5660300002)(86362001)(41300700001)(66556008)(66946007)(316002)(44832011)(6916009)(4326008)(66476007)(26005)(6486002)(478600001)(38100700002)(186003)(2616005)(6512007)(6666004)(6506007)(13296009);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?9F94zPoA+N8fKJp61OMMQ2pznOs3KVa5H4Och8dHDPuqKiun3WcM8o0DRNH/?= =?us-ascii?Q?IoWvJdDPJi07pn4LUpp5Rowg5814Wyi1QdPm/KOEMJaSHyogsJPlg0Yj04vN?= =?us-ascii?Q?N/KVJcR+xA5Vn6M1azwV8x5Q/nfu/D2zNtWvXp+KulPUthK1i0Mg6i3ov8CG?= =?us-ascii?Q?HeYAsJMa8iGTAWOntmsUW+0ZlAkqXtI1ONziWtzuhxJHxomWsyiAqTaMoy4W?= =?us-ascii?Q?ixb11nR/6cyNPVffz9E8oVp4VRmsQZAv1coDDDhxEBwWnl06htAz48wGCNc+?= =?us-ascii?Q?p+6XkLLSlYaJrxn31P4Bdmxg065E0WWyVvzO47KVujJ4dBIE4vGhhVKx0RNu?= =?us-ascii?Q?FOgmYdFpbBlM5pEHNEWyPVkU5XwKle5sqRsgxNJDrj5F/Z6IfUA61SGFAtPF?= =?us-ascii?Q?h3QXefHDcuYJCKNwShBvn0foOtpeoNvf8t1v3QjurYzGQU4Q8Fg60yvMx1mX?= =?us-ascii?Q?Y7LDyuiQI32aia1Zbb9HBgL8MFASkoJUnaK3ZGg0yKodV5z47PtIAHSct7fn?= =?us-ascii?Q?qs9E74Gg7jxhyamuVXRAVK8ZNBbB+nLVW4uCzUxC9AFh2aZX8HYdiIOHfTJz?= =?us-ascii?Q?VjpOQz29Hyj9x+0HXhI5XCwRhQNobmL5IMOAI9yYIUBBPQ3VJuaI8m4snVEb?= =?us-ascii?Q?/SGBHuofosWeM8xlGAQt0M5R1Jq29ej8FK68XViUtK4tiBiKw8f1UIcckq70?= =?us-ascii?Q?CdweOTfAGwNixAHzIZEtHlS1IFW/hpYHRPizN9/ILkWhxa0otQQiB8rK7N5M?= =?us-ascii?Q?zoZB6gDq7ppXhD/nXuxXJ7/Iok+OkVVLlhAxhQCP2w13vsi9dV9QtMAqItYI?= =?us-ascii?Q?LHToAQKS/7qhyW5u7qKwAmwPS+KASareK2/kYduNnE+d+q/pxmUyxnpE5px8?= =?us-ascii?Q?BsaJKmIl1HK5go7yYar0PmU6CY1PfiGoQkqufPNLv4euxd128bfJjHIx5IWM?= =?us-ascii?Q?pgUAoS4l3kl1VBBMlrWZeTkAecvYWxbMWR2AaDzQFpnbvaGEv3+B9eW3Fzl5?= =?us-ascii?Q?V2aRfs5TYPdoJvYLxqlhjpgQl+xCk8jX++2ZRhjsKKG4mXnjXYFTtciYtHCi?= =?us-ascii?Q?CY5m6myo+x0fkAKzfzrnL/GFcNJjVMWV0zi6poJRhfZ/6vfo9GtWGWPXT83O?= =?us-ascii?Q?32i8tdGYMVwCEz3UCjcg9o8+elL6l8b5Nv0CtRB8TnB6fj6TosFy/iFgafis?= =?us-ascii?Q?GJYIuGTOPZ7lCXsDNL70vuUrWVoZx28O33kqg4iVBzJkIrlzvqIj0zv+awzi?= =?us-ascii?Q?R3ItosT1kAPSTmH93/zJ+AYx16QpMaBXCA/J7cy6BPmn0dorLLQYQkdDDyIa?= =?us-ascii?Q?TXnHCfmU8Cv61JWFxUSH69EltBC4hHJF19vglBN/bjjUJtq2BRldzUj39zT0?= =?us-ascii?Q?D7DnD+2tPHPLKMw1Dl3ES/KWQZJsGsY37Kog4qJL6OE2WfqB7SXm/7IwPz2c?= =?us-ascii?Q?ArY4JsjMmQ65yPfavatwmelGAZSj6SctAF9vJ8T6hHA1UaR30H2pbV1c9voB?= =?us-ascii?Q?XqyR6LWFz9yPS6/LKKO814m2ddO7Jh/m6LQIDSaX0KEhueUwqiJLsSsl3YYM?= =?us-ascii?Q?y/2OaaP6oVGgPwU1l0oM/jPHIhFHb2V7QjpDX9CAqgBMMOvMYKDPRUDi3xwK?= =?us-ascii?Q?mw=3D=3D?= X-OriginatorOrg: suse.com X-MS-Exchange-CrossTenant-Network-Message-Id: b6895687-2e92-415a-e264-08daac0beaad X-MS-Exchange-CrossTenant-AuthSource: HE1PR0402MB3497.eurprd04.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 12 Oct 2022 04:40:41.1040 (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: 0dUBZeMSqbQWgZN2jKU6tkPbUhX+T4AvFQZbZMGGxGYqoQW4GTmYFQe07L9Kw1UPL3/ZO2GtQPbpWzmhBDS9wA== X-MS-Exchange-Transport-CrossTenantHeadersStamped: PAXPR04MB8814 Content-Type: text/plain; charset="utf-8" msk->last_snd is no longer used anymore, drop it as well as the macro MPTCP_RESET_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 | 2 -- 4 files changed, 2 insertions(+), 23 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 52ac57fd8c27..7d5f89799c9a 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; } @@ -2346,9 +2343,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); } @@ -2981,7 +2975,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; @@ -3242,8 +3235,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 d44c97bb41db..68a2b22a47eb 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) { @@ -258,7 +257,6 @@ struct mptcp_sock { atomic64_t rcv_wnd_sent; u64 rcv_data_fin_seq; int rmem_fwd_alloc; - struct sock *last_snd; int snd_burst; int old_wspace; u64 recovery_snd_nxt; /* in recovery mode accept up to this seq; --=20 2.35.3 From nobody Wed May 1 20:33:08 2024 Received: from EUR05-AM6-obe.outbound.protection.outlook.com (mail-am6eur05on2060.outbound.protection.outlook.com [40.107.22.60]) (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 817B917CA for ; Wed, 12 Oct 2022 04:40:49 +0000 (UTC) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=MHX4PRMCotSsKOgOn/525f/SUCZPP33/nfap4nrv1zLrzwjBrZozyIla/cDZhBDwFHKFpdsA3An1ENlzoGS4TwSd5Sl8S7XOPmvk7T9bt9Ck5MIpVT9KxFb9pPx7WM3Iv32EFS4yT961kX/i4V9J1EkyH0z8cjioCsu9c39SqUlAI4KqOP1W+reJdqZpD2H8nZ1MROasJRxI7LwaP4qI7GrYuVxANjOgWtuYEVTCSOb/3lSam8REf3Fvj6BhN1Y2vzMD3D3OXOM+XfEP2X6UktgEEROB80eHBoNjJurEeEtl7QkRfiUO8fQw2O+UFUiDfHU4tIKLBhPCyKn4Q5hUHg== 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=womHxEQqr+muOUDWWuHI57fTytEHfNTMM41UpogoXiQ=; b=N6FNDXRHHTLTQLIZRrGCFuFXOjninSgijEqLzNEltdJBdY+BzrI3GX1INBaeo/F2WNWzkuBtfCCmdVwkSJJd7uMs8TdwPLY7gFyF0H72za3EVKy5dJfKp0s9nEbu8cIjf2mqvZnQi5uJrIp3pDFpevmabfK8dGbrbZ3xRx+AAoYk5j4dJuuu/BJNqs50Zmw0fmPH/j+REbSWJswPG7zAN7aolXoTEjk5Irde/lhjvDPe1LLWMGclQn0suSZdvo4fp1HO7ZtZRQKLIvxkmBCfFvCH360Ue0OkNBoKhnwqKR0yY2E4ukl/4hwMuNO/WP1fthF8jIMuLxZl199ACO5wKQ== 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=womHxEQqr+muOUDWWuHI57fTytEHfNTMM41UpogoXiQ=; b=dZTcgxa4eZyeb9N84509xoYNNnYv59JVO/mJsfLm2HUQzPRkOnoDiWyrV3b0XBpfWGl3FkFMcEIbP2rIhDoyQdwzbbDnxRo3AhPAa1DwLq0eoYay+EhgQsyuVc/sIKBTupQlbDvxkl21ztOu1ZXw+P9zvSQqOm9gYy0OMHiAKSpggMOZ+y0+3GMbUe5UQGGgUIaDKl1SH4aH9ax15wZXBM1FzOPlLeZllPl3wWayLsvr74AO+ulBpG/tN50YKUuxVaTjAgdmMTTSy/ULAiPKmkZaURAANYqqpWS02CBPNOAyOkIXvXbKLsCNi8FZY1B5oj8kYSulg16oM65JtMl8UA== 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 PAXPR04MB8814.eurprd04.prod.outlook.com (2603:10a6:102:20d::20) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5709.15; Wed, 12 Oct 2022 04:40:47 +0000 Received: from HE1PR0402MB3497.eurprd04.prod.outlook.com ([fe80::f426:b04f:d9f1:cd5f]) by HE1PR0402MB3497.eurprd04.prod.outlook.com ([fe80::f426:b04f:d9f1:cd5f%4]) with mapi id 15.20.5709.021; Wed, 12 Oct 2022 04:40:47 +0000 From: Geliang Tang To: mptcp@lists.linux.dev Cc: Geliang Tang Subject: [PATCH mptcp-next v7 05/12] mptcp: simplify push_pending Date: Wed, 12 Oct 2022 12:40:00 +0800 Message-Id: <3a974f4a2eeaaeb500048655d1d0af5cfe7e9aa8.1665549148.git.geliang.tang@suse.com> X-Mailer: git-send-email 2.35.3 In-Reply-To: References: Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: SG2PR02CA0123.apcprd02.prod.outlook.com (2603:1096:4:188::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_|PAXPR04MB8814:EE_ X-MS-Office365-Filtering-Correlation-Id: d32673ab-366b-4d4b-5614-08daac0bee41 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: VGam6q9cwIdWWgNr2ZCBqyifvyvCLSFH9KLhd/g9Flz0oP27Tc0B17W3Um+aTOxI9pa/IVYTQBsIlo7HrVOVecTsF8bIcTEmwAdZow8Wy3UBZ1fkFJofrwSftQGH4J7/KZB0cKRUMgxC5RYY7uMdG9Nw68sB8eQGvMa0JfqY9iV8MsbaieikvGLMRNMUQya0CeJtnvQEUPhnGolwa32GMq+uUe5Pk+KkP7fLoFV5g2v3PvNXruJ0aGN9XRaljBJJHfR6VYg/abYSIqDbE8DaP46hh2FQrQUQyDP8pWxCBLuURpryekUOoTVPniFT44OrCekmqFWiKgxJLnzDMJ2Ykn0js/29pvcp+FQ8Z4q+TX5GC1jbKH0yHo8TSZm4zlN1POb+mB21p/kQkIYnRn2I9VCWtlsXvc24pxXN0d0WnahR5Ezs7YHk3zFo/HaKqEkQNaRmO0WSnmmdBrLdfAQ8SRfEcgpZ0lum3Eg0953RylvgklaEd3nKAq4rtdYB/r8LocoDBzxDHjQiGM/v0a+71FW3Jp3Z7C02zPoTXhRtDE3r6v4Bjw2o6FWZUVy3EyM6li1H3N97zLClbGbG8lqi1HPSrv8FHRlXWcjf7X6i2xtga9RKeZqNeWn9WdJIHf7zPw9hs1HCaJsE4P/vuu+rRfMGyjgGuox04B44mIyClS+yq9yho8FWefbP1dAWM/+O8Qoingos/tNSMrlm3EFHgVTp6q7BYBS+GIc+4L91vH08zhqQqmigt/G4W9GbAt7G 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)(39860400002)(346002)(136003)(376002)(451199015)(107886003)(83380400001)(8936002)(2906002)(36756003)(8676002)(5660300002)(86362001)(41300700001)(66556008)(66946007)(316002)(44832011)(6916009)(4326008)(66476007)(26005)(6486002)(478600001)(38100700002)(186003)(2616005)(6512007)(6666004)(6506007)(13296009);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?RuYoQwq5uC99GBDZhJ7RwFeZQ7ZyaofTJ9VXpiWzFx6h6/9ntNis50EFYvQV?= =?us-ascii?Q?Oyyv0+MowDwxJYaFs+trRMh63PNvRRgAvpkT7LFSUOxV6i3BuN9gACXLnRyJ?= =?us-ascii?Q?sCQC6rd33ArHaPt79tWbjWHjwBDFhTFcixHhWJ1a1j/mtXnjFWd5HQyacEAm?= =?us-ascii?Q?ABpXMkC1AI1X1bLiKlm+pkpcYLMxf5p0Mas23ic+Yn4nAYR+tOf5VF48Ts9W?= =?us-ascii?Q?HCnloXF9I1ceSgeuiSS4YUAOWjxAVfLUGP/zbflLDEcBxQjOAiuOQwjMaFwH?= =?us-ascii?Q?Ia23eztGNEdeY5inVG1lvpWYUu2maEy5VWSXSQxV3pVXIgwnpUVmbhfBf3M7?= =?us-ascii?Q?yLPVvSDnCFKML3wMpo84SM9JuxbO0bMaV0qz2rVOFMvmFDimp/561FombiZ5?= =?us-ascii?Q?apmUupR1KKkiUUoHdeXpS6jg2i9V8ad3DkznaB43klDa2LxeKnMFc6nsxueo?= =?us-ascii?Q?mFKA6hMXQD4RwxvpTdnoOw2AD3n2gCX0Nzl584ECpffX3oxF8AglSIzhD85y?= =?us-ascii?Q?l6sBSFXSMcxhyBIFVMyQ64re4gXz6rP1t47IsCigWkv6zu4aS4gMHgZKZrvs?= =?us-ascii?Q?C6NRjqMD8FywxLbcCY4ONOIaayR/cjkns6hhPKvpPE9yf43uODfXivWlofnE?= =?us-ascii?Q?cmPZpeRj/0dW3opmQutzTrW5+M2iOkeHOL4PRk02V7ufUuqHwI+0tAbgh/jt?= =?us-ascii?Q?uexyBMru76ZRu91qozmZm8eeN96656pUBw39JPlQg7jGfKnqbw5ArDFm59qp?= =?us-ascii?Q?1NWqrmvO7upDeeQpN6eQB7JsdIUFEYNt5Ql9h+CFVAwvMd1BSX7WIz5xPtBF?= =?us-ascii?Q?lM9C5EK/SqxHQMWuJQKQ+UEfeMbGR1AktPMpORHZ7VQDnyIuM2T+9kzsQR+6?= =?us-ascii?Q?lwjYWrvdtmiQTYvwhKm2bUzqD9+vOp7CtEWGP13VSMZfERvLGNkoOhd/o79g?= =?us-ascii?Q?Y5s7SC0T5FYHfVr7aVMM9KEQmYKxWs8ufRU4eb5RS1sxPDAVfek+zg1iThkE?= =?us-ascii?Q?GVvX1fbF3/ubpgL1NZySwU08wT+QMd6XJsr9d4vf2KRBGo00WUaf0iqaOspY?= =?us-ascii?Q?7aOU7XHfUamFKl1A54w4EbaT/k940vM4c2WK6EZgR1CYHkQL0w8hsqJXeLcZ?= =?us-ascii?Q?h30mqdH8k9yMGSgOtXrK+eU8/yeIDD+2ETFclB3qjsoBjATt+O1L7B/LnrFD?= =?us-ascii?Q?8XtAqylWSQbBKfkUEgHjfIq9avZzkdVvJgmM0Alr7ifool7ZkaHG92ZdqLmJ?= =?us-ascii?Q?8s+BJu7k6R80KGUNRgcr5Ud1pleo5omwojRgeigB+7uU8mU9I7DIZLxSyLSi?= =?us-ascii?Q?D84gS3Lw7KH83OiRsxrJKheBKbvPFqiRN7q1C0UtpHW4DLupek7fiimtG2Ce?= =?us-ascii?Q?SxEuNje2k9+7HQigBg/ElUZyNvtOxJ+Y3ImzOoUgcihiJqET+OW0/E0m0git?= =?us-ascii?Q?zyHUv2qATEgSJpEkvJTwL5Je8oFZ9zvt5Z8fpbY8pA2bRs4GpYRUycrgd0T9?= =?us-ascii?Q?rHNIznwsPBH7fqkZf2Z036sz44uukp4XyD1aOxmV1sRXFw6+R1PKG/OApUlc?= =?us-ascii?Q?b7wJNv8vOiP4e/k7c8iNt0gZAAmYFRtXcQch9pHZgBXQrQYHLcKUeGXy8z3G?= =?us-ascii?Q?4w=3D=3D?= X-OriginatorOrg: suse.com X-MS-Exchange-CrossTenant-Network-Message-Id: d32673ab-366b-4d4b-5614-08daac0bee41 X-MS-Exchange-CrossTenant-AuthSource: HE1PR0402MB3497.eurprd04.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 12 Oct 2022 04:40:47.0723 (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: GPbT2G7paTcQ1LYbj2nZ7HiuhX4mEGcsgNpMkei9+nt4ZNZx/U7ZrXGwHdHw3/MCfoZLSdKwa4aXVX1XLtrDXg== X-MS-Exchange-Transport-CrossTenantHeadersStamped: PAXPR04MB8814 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 7d5f89799c9a..817e539d1d12 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 copied ? : 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 copied ? : -EAGAIN; + goto out; + } + mptcp_set_timeout(sk); + } + err =3D copied; + +out: + if (copied) { + tcp_push(ssk, 0, info->mss_now, tcp_sk(ssk)->nonagle, + info->size_goal); + } + + 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) { - mptcp_push_release(ssk, &info); - if (ret =3D=3D -EAGAIN) - goto again; - 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 Wed May 1 20:33:08 2024 Received: from EUR05-AM6-obe.outbound.protection.outlook.com (mail-am6eur05on2059.outbound.protection.outlook.com [40.107.22.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 959D18F48 for ; Wed, 12 Oct 2022 04:40:55 +0000 (UTC) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=Ygj3YKRXd3ka9QGKVaaZq4/ARv9yGszbXtcGOdv7SAPAfhocmlzyBMqZeP0JoHNoue4wPE4j7k6SW7mxoAQwAtHUzpsj/YZTyOmyuD1Y9Xh9H+qU6AvUIMMEY0jCJQ1qKs8IvPm+VFQo8FMNfv1rGQxV9VPCrtvym24cIn5A6ifNd7JvlimTwZ9O0tPMWrVhn0oi/2mKr5VDP1CcKfXA7hio6NheQTJQhoMZ8hAWRNNKGFN2nRPQgnAln+X/7qzwPmy8VCuz49xFP1Zn/x6zHwiiBPrfPQF7Q6ahiQmTkfY9lK21Q1UN9AzkCbS/puYB/IIY5OBcCqD4JyGuAmSx6g== 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=KBqcC0XH8lE/uvVbkMxs+vy9jz1fzIz72BZrPVV4gs8=; b=I7wrtOModWlhJETgG1iNbZC6TUHuDjB4/mqzCkg2g6xnxjwyuyNrEebJktTA7xy6zkKMvg0ChPhnr7LCkt0EMwxeQX0b7pxwmZUmQDNGN4vhU3ciiCjgKk4U0SHr02XCabcHey8LazLSMe3VfkY5UoqVSfglUuEVJbz9eg+n8gmT6V0TyLuxL3UgVazPi0YNMRzQ223qxsc9v8eleiI3VTqhrzG4ebmMsUflA5rGmSAGQtzFDqn30FOBW95F4awqof5EJ9drBBJQgKujTULbPTsP1qJtnpzcBQrnq2yLfCGe16FTTJqLrOxDyiTkqii6lgl+aGPHdC9+yVkTU1FkCg== 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=KBqcC0XH8lE/uvVbkMxs+vy9jz1fzIz72BZrPVV4gs8=; b=V/FYUjeFUeyUmD6y25QOIYIXVxM8wdbnFZ5wzEXcsOTkyPy1X6Uj4VfIkkVRBQ5UyhMZcFNHZpsiV4qirfxkWYk1eHgztoHnnrY/IsskJGpXpVqdg5T4hPqbMo78TbbIG38LUNNo8SGDg4g3T7t0JZ1/NBmvmf9KHmOKDKUdWVi3utwz/DhodOzkmFiLxPF0IJYhlLlaBwS4KgvJL/qcePQt7S2OAghD0piFxJYrRLsbv20moltOfobmZnCvN4HKgLGhR2jWYvyRP+YFvNxzRFPAnWEp6NxTkwrYbCylqJQfibhO3/y/VaM/kS462OMKxkn0lZaUrLD5izTI7xhtzg== 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 PAXPR04MB8814.eurprd04.prod.outlook.com (2603:10a6:102:20d::20) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5709.15; Wed, 12 Oct 2022 04:40:53 +0000 Received: from HE1PR0402MB3497.eurprd04.prod.outlook.com ([fe80::f426:b04f:d9f1:cd5f]) by HE1PR0402MB3497.eurprd04.prod.outlook.com ([fe80::f426:b04f:d9f1:cd5f%4]) with mapi id 15.20.5709.021; Wed, 12 Oct 2022 04:40:53 +0000 From: Geliang Tang To: mptcp@lists.linux.dev Cc: Geliang Tang Subject: [PATCH mptcp-next v7 06/12] mptcp: multi subflows push_pending Date: Wed, 12 Oct 2022 12:40:01 +0800 Message-Id: <7db864f376047671f93a1902d0ec1e0cdaaf9278.1665549148.git.geliang.tang@suse.com> X-Mailer: git-send-email 2.35.3 In-Reply-To: References: Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: SG2PR02CA0132.apcprd02.prod.outlook.com (2603:1096:4:188::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_|PAXPR04MB8814:EE_ X-MS-Office365-Filtering-Correlation-Id: 54024d6d-8fe0-451d-a0e2-08daac0bf1ec X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: 85Cav+R6qr7dM6QsE8YjfPcQD91+BlyRCDZrLkLDVyG88HML1byHmLbIukk8X7t3ADU8PPr7RTwxg2Kk1bccrxsSqcI92gOcTAEZYely5AwpH8RnfbJPGJVG8NubeM2+teQ43gqHR9xko2nsQInbO+5Q/NrZLzX9WSQTy91tymTWcL0mZ3h8CaH+UpT5Z0KGpVMHdx+2P0jmJ6u4ZFZQlKGivbgIhXvGpZJH7lgBa7i+lY/wzp6ooL5mA5fP7FfGEszhX5mSyNQ3g5Ugm8rQaS+gsBeoMR2s5deLVBe/T8kH7IWTZxt6pXyucwXMvS8xZ608R1cIWrI3oHzbitZYOO4XzKWxQ2hfLsS7rexNMPVV392fZpzUv00J+0+DTnspUuvJrk/IZfet3Vr7A624tcN6YjmyobvY6o0woqrO8DpU6S4FfqZovqHMl20fP+n1/6eI/6w4OXQ540g7vPTq1IVm8kFkA6oGI2GY8LBLGtIO76vc1+w8X/h8GTIPNOhROiRbwHL9UH38R1NKVJSYgtP3MGSanwiAX2W6rA6ibY0Q30YjqIoB5bmHRugsSd9S3D2b3GmGWqbEMHxmhDOMa/yaKzAfvpAy52Yk9lZzPdNFmR+j8Sd653oJLIsBrg4rx+vMGmO2oL2omdQlTDJerrBS8jGoyDlSGdWmv1+rAFeUVQBTNlLwzm9n9yC0czFze/FSmjvixEjLgK8sKA7TQIWkBW313jf35UFpXv790+uitJBZTMFmIagD0jbpnNQ0 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)(39860400002)(346002)(136003)(376002)(451199015)(107886003)(83380400001)(8936002)(2906002)(36756003)(8676002)(5660300002)(86362001)(41300700001)(66556008)(66946007)(316002)(44832011)(6916009)(4326008)(66476007)(26005)(6486002)(478600001)(38100700002)(186003)(2616005)(6512007)(6666004)(6506007)(13296009);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?pDeu6c6oHYJMLU8I62XYI4SpDjGLUTBfC8ehw+sqNNtS4feKdyirkQC6yAcd?= =?us-ascii?Q?fuqk7kpW0Sh8bo9vRdzcdu7KmJMhrGWR1k15sqmV3Sa8nNOnldwmq2z1J+ve?= =?us-ascii?Q?ufpi64K3HqgGFHnF1jL381w2mmLl1pCYBk2na9qhGPpuJUrC3CIFQYTggH+r?= =?us-ascii?Q?isDNVJhHKfpGklxP9usu8PeAXp/INA5Qzhfk0XJrfcKi7D3h9Z5ZnyK4bM3b?= =?us-ascii?Q?3Hm6LMuxA7P5IVBkm4a6T/ntkrWx4cbBGv+hMLJoFoDCUKYhy2MCkHLaCZGo?= =?us-ascii?Q?w3LGK2LavLhjU2tWXvZg59iyQuH2y8L6nGA+HmrefvUnM8YUEsy5INTVPL6w?= =?us-ascii?Q?vChzPwR03fQUHeDHQdtWtnYUZo6oB03W+lRZqkHFU8jxA+h4911M49u+9Qsm?= =?us-ascii?Q?sIMznq7gW/UB5VW4x0aDnyl9D9+KyrQvLYllmeEVQA2IINRoI7NsWaWPcTG1?= =?us-ascii?Q?o48FjCEPbNk45TDT4uQoqQsC3V5Zd+VfHAekoVFRoo6LvJDAUULbs2g4Uilj?= =?us-ascii?Q?+xkzRZ0qGELmmH7uJLAOYarOhfWKdHM0ZMwOUAX5yI2W2Mk/EDkrGybd7Zk6?= =?us-ascii?Q?/QnA0UGYFNJZhokz4wSrROvWCveQoow2fLe64ZHJWIcMmg9NGJTC3pkDqIjB?= =?us-ascii?Q?F9qhpPSaS7DXIYNMwmQOimCd5IEhGtk4glkQO1YzWisnt2vYnYSY8O+okdxv?= =?us-ascii?Q?ay/gt2CQ+Dktz2Yd3Tf3uWENP8oEa1mQnwP2fij1T+bc+F2ztKKm5iWOIY5j?= =?us-ascii?Q?5iXksKXT+/htXujy4Nimlt5X249k0jz31CNvcebkbALKDCXAaVBpVNKAetW9?= =?us-ascii?Q?mPXMz49tulZBAKyGBpSIn+MgmUb+/GEjRx0f/teeOHY3l/CsMh7W9oXQ9JOS?= =?us-ascii?Q?GTvEe/eLE71F8TiIG2LsTF4pReRVSU9eVKT+dpQQmWfOM2bR1cmrIBGmaIqZ?= =?us-ascii?Q?yzNI2RSFX9eLt6YwOoNHXenjWwud/QlHaW0hSY/BnA8fsphLhTxaCjkmJtyW?= =?us-ascii?Q?GhXyR2pLxTTVtlHOBFWSlMhM6GTg3UKC9mq0LYdL29r1mAfmDKXwVHgQMymY?= =?us-ascii?Q?ylD4CKlvEphXZh0PRXEuH/g2hQ+0yEqDbzswylL06kahQWYe7ouoT51Wtoga?= =?us-ascii?Q?iQTBa46QFOXmdN0lMBAjvNWFIAnxeFPFzXNtX9SjVIVsVhE9dZFcpwh/J0tT?= =?us-ascii?Q?YWd/gCow0x01ePE1voyw3BUcv28BOfdgErHRIhtjjBF0jQnfqzMuYfWJMxPt?= =?us-ascii?Q?+2s5EVKL3wpTtxPqzica2YCnyDEV0UI983ghvt8nqCEiPPLgO7iLa0KLP8hm?= =?us-ascii?Q?QgTBi3p0ngp0LYe0WtgkKP78kLabwBEuoi3zgWNHtb/+qcAKM+Wz+QCEXtQx?= =?us-ascii?Q?Mn2wvO7+0TnQMMlj7y6Qe6WYBehZw1ow8AIkQRbalPWcRpJqSO/l3xNBd2Rq?= =?us-ascii?Q?H0brK84yeF/C9CRC0tEpK45oWowgHVFL0oLjsSZUR8PaSI88MPF8SvNqUK2s?= =?us-ascii?Q?ZeuvlIESimrJ7vQGyzs6rahfIl8M0TByfV1DmdSdnM1IYUWepqHXsUt5B8eQ?= =?us-ascii?Q?WYj6uMA6/VEvtQa2Bv4lMj/U4vz8OeT7FERbaTy72A6hUcAa0dOsZY9MIFQF?= =?us-ascii?Q?IA=3D=3D?= X-OriginatorOrg: suse.com X-MS-Exchange-CrossTenant-Network-Message-Id: 54024d6d-8fe0-451d-a0e2-08daac0bf1ec X-MS-Exchange-CrossTenant-AuthSource: HE1PR0402MB3497.eurprd04.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 12 Oct 2022 04:40:53.0874 (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: DJRiWsF+yVc4PyBd5e1nJCV7LI3MYkwtN0Med5QQKQRYSRMhPiVPfTgp5tkZQ8JbJQKqHxM++yFPUM+xWh4yNQ== X-MS-Exchange-Transport-CrossTenantHeadersStamped: PAXPR04MB8814 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 | 32 ++++++++++++++++++++------------ 1 file changed, 20 insertions(+), 12 deletions(-) diff --git a/net/mptcp/protocol.c b/net/mptcp/protocol.c index 817e539d1d12..86ac38d10bc4 100644 --- a/net/mptcp/protocol.c +++ b/net/mptcp/protocol.c @@ -1561,22 +1561,30 @@ 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; + } + mptcp_subflow_set_scheduled(subflow, false); + } } } =20 --=20 2.35.3 From nobody Wed May 1 20:33:08 2024 Received: from EUR05-AM6-obe.outbound.protection.outlook.com (mail-am6eur05on2071.outbound.protection.outlook.com [40.107.22.71]) (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 48BAC17CA for ; Wed, 12 Oct 2022 04:41:01 +0000 (UTC) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=V21HLqOelQZ0MXWJWc3N4r0Lw/cmahh1MipwHUmblClFFeW44tqahXtv0LCrWKzUKhBVao1Bigr3OEzcFTaYYpbGEaqVLWVzjruMQOJypqIkw13A2SMCUwLPwMXbU+TckR6EM+zKUMWYQ7a4Q3D8VQCy2vlYUkvh8DtKqVGacmxGfEOtXxzz86bK7mfw+HRsWuW8bDmVBCsWOEerIEBDJZk+ve0Ifut6Q+KcpyQDYARFAQgtJNFAbccM7xMe3WN/jYN2liEkqDIRbPzK0alz/Ewezih0L2+NzDgkxsi9yXIflB9eloMEF/WuBLD2ZIiyR/qbfdtK8Px/wD1aWoWh6Q== 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=svNannqIoegQ8ihbXsehrlw5PeUtcNaP+DfZsINbdDs=; b=eNmiHGPNCq8Fmgsg98Xy3LJhstIulpeFY0Z4ZXhfCBneZfzExovNc85XhPFUgcmMeerOIv5vne2+LCZsJY/Nq33/HSB+JtjEEnKtAXlegF6MPdUESYd1hpDGyr/y1SYs40PsVkbcyBNpawwesbN04gtj38fTqv1hAKj6vpadNgOjuSN/fDG+fpuoj5W3DeVDuSWHXgtKb045YqVzKihLw5tKbVprjAMXmnjAxcuKT5dZ/WRc1MWzNlJAoGoufwlLk0deuvjHV195cXqaiq4pPYbTzRbVFswWuI8XHHfbWWAioRfrEVToKUtFuECW6WAoR3DVmeqSMA71ohEYdpjULQ== 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=svNannqIoegQ8ihbXsehrlw5PeUtcNaP+DfZsINbdDs=; b=GbxVJ2szI0ODBPoNPu+EFP6/DfZC02D5/TSDuiW1mETf5qwjeY8rgCg2Ma0tkGRmr9wyqAswgXOnZy7yfL9YnpHp2rn7ZNG9Q0wXpcQl6jpOdGG1m+3DfrO96CUqc0Aoesk6tvu942hy2Rim6deZkZVkeXxnvkRdYyT27viVKhThl0KOsorDLnmmaIlXe8DW6oHlqTZPZAQtHB1kBb18+kn0vwZZyrV9+34lhLsauLkuGSR/mHBIr4C7GeMW/oym3P5Pcu1E8MHEZsffpDsf4wtqOk9akNXBLmHAmQu6luCQMBsJvTFSej4JmDkj5bojuuAdSQXjwqCqG1Uid4AD7g== 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 PAXPR04MB8814.eurprd04.prod.outlook.com (2603:10a6:102:20d::20) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5709.15; Wed, 12 Oct 2022 04:40:59 +0000 Received: from HE1PR0402MB3497.eurprd04.prod.outlook.com ([fe80::f426:b04f:d9f1:cd5f]) by HE1PR0402MB3497.eurprd04.prod.outlook.com ([fe80::f426:b04f:d9f1:cd5f%4]) with mapi id 15.20.5709.021; Wed, 12 Oct 2022 04:40:58 +0000 From: Geliang Tang To: mptcp@lists.linux.dev Cc: Geliang Tang Subject: [PATCH mptcp-next v7 07/12] mptcp: use msk instead of mptcp_sk Date: Wed, 12 Oct 2022 12:40:02 +0800 Message-Id: <4d32a43bf2ea79a2fa61b691acb6b7e067f98790.1665549148.git.geliang.tang@suse.com> X-Mailer: git-send-email 2.35.3 In-Reply-To: References: Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: SG2PR02CA0136.apcprd02.prod.outlook.com (2603:1096:4:188::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_|PAXPR04MB8814:EE_ X-MS-Office365-Filtering-Correlation-Id: ad85e844-9750-4835-db63-08daac0bf565 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: iMTHIygXlTLauMXwPiqDZDABI9iRH9ptm2ucQJeWr+LKtJnxIMmvhQa+R93gaJ5bUpt8Cvf87pC/n9OMjnCQZcmM3g1rPkslKcgESiNxkYYsgDUpIP/BtszMqS4C5g+/Bnw2dfvyz7azV4H7CTEtnj3FinkTyiuOROCULE3P+d/jSkZlWw6WGSqrs3mobgsuypRTGwHKG/uNbV4RZrWGQKv7d0jjjSEABBDrIButsM5cngsOmBCmyWIkZVBuSqR7gXcZlFtAXL75mdgZF7tqhmJx1Ma+4/FJxsG76G5rn4hAjCHnGHg/uVdSZGYqNYF1e0OnybwxM9Os9z3Rz4RtFZaqhqAhGyJZT8L17uI2hVYTv6tcsnwvnT36g0+4f8VKWXJdLJqSw2SbOpVIQtxz8D9QiHHs18whzroQ2HaJPkiTEkmgEKBYp9dSP33/nLofcHpSmAEtgoy0JiP9adv5N7rlfe4Uq323NFdqx/qANirkQ8J+itvQJndQJDKJ6bP08x0MKY/+vX/v8hvzAr7CZTNCAIqZbpDTQ94h8CpsgkCGHILwUnvf900AbiQHp66M5TqEyUtzP/fwU4RXow80LfIaLxMTyDsBk2bWJ4J+DlDsuLbJUzdWU1lURNoTn/XknZH4gCd4LXLPkouMix+qYZ6czJ5nWW6/b6Kd91pHlTovScOXKacFxJXhLT/BjgQ2IYES2b6Od7IojL1CW9IJQHdZ3JL0ZGJCPM/SKbPhj7EKuQNZsTfdsPbLNhivkDyP 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)(39860400002)(346002)(136003)(376002)(451199015)(107886003)(83380400001)(8936002)(2906002)(36756003)(8676002)(5660300002)(86362001)(41300700001)(66556008)(66946007)(316002)(44832011)(6916009)(4326008)(66476007)(26005)(6486002)(478600001)(38100700002)(186003)(2616005)(6512007)(6666004)(6506007)(13296009);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?dh0NwyVKgEVP3U3TjQ6mm8YklyEpB9mer/iE4VHkSWmAWiW+j+MsWOTS+RMQ?= =?us-ascii?Q?3kxvgUO15RkNXWqtqqNTg+5wuyuCGm2mc4HtBCvAIhDjlOXHbzU5DVySw9fu?= =?us-ascii?Q?JEQanTSqCmV/42ZH5STafjbkpw8eMeI5vuB8REs8TwBN+i3G7x/nxWERN/yS?= =?us-ascii?Q?98sxWKB1emYvgEnA/9eJAXcS6tacUrKnZ46IMI+QA6Z/QVf9AqrMo1cyT8LM?= =?us-ascii?Q?imSjActUmFapSDKZvL29tLzUzW9OfBfmaJrZEVRl0e3V98yZHGfz8QehPeKl?= =?us-ascii?Q?qnYYSVRUcODakJ6AlguutAUCB4+8u67Q4Klasc5K9dQvAoI2ZSxRKAvuvL0p?= =?us-ascii?Q?VAcwa42pBWSrs7+EmPGVaerAfcX8Bp/TG9qwhBAv8JB2yi0GYQlFpJh5g37Q?= =?us-ascii?Q?Dq+XEQE++rCT0ZVW4qYRIcZ4uCAgLqhIKL1umrdurWtqPJ4mlfzTpEviwbPO?= =?us-ascii?Q?cEliD1PBgirHZfvKnS7IMo4N1vpXFTIoRZJ9TIULRyQ4eKo9RI7oHcxNbuwt?= =?us-ascii?Q?N4Wys9QxGyonf9FqWiqqkXgpAm6bORnEb0LDLn8C2iGN8THSy/sk60pp6v8A?= =?us-ascii?Q?jvp2Srk8tjbH2t1scFKCwLMAIc7fyMvbMl55hSbCmCMNWbOZr0jRUiYGNr/a?= =?us-ascii?Q?BFaS8Z+/o4//W3zqtXRPdO+yAqSRtWAH8ZkVMjSqX9UMNjbSmNAm0S3AEI2T?= =?us-ascii?Q?eKg6gW7s3goRGwbh8INl++30ay/b+ftjUBNLoVSsPdXlOXM088lGiQ2aplbO?= =?us-ascii?Q?ivCSrmm7I7AvBH+n/9gPCnYgrokks3846+U1G+ZifxOZETWrXpKmlvd/7AVs?= =?us-ascii?Q?yWxrz1kXonHvS1ieyUphY+EAcCzYzGZndPy5JJaLpS7Fnsdf8F3tXSx9F87o?= =?us-ascii?Q?FpXk61rBKbO0hw7lsvDNNaCP+FlP90mNB3HZKhUCUX3CIpU6yLaksIJopk38?= =?us-ascii?Q?YyWtj9ifQMzVXiBo24AT5rBPC0qFcW7WAw0ox0dDokcSfXifFdGK7LWTDPWK?= =?us-ascii?Q?TdY1ykwWx1Tczr97iWvbrDqPj4/i1HyGdqu71U9l+DGvgKQct9El+hlYxdLW?= =?us-ascii?Q?awBTQ+06hJ1uO41zqiFu55Bohff/BwimTnD7EznCsS5pw6Ox7pnJ9g2AF0YU?= =?us-ascii?Q?s2CXbijEAzJ4JJuCqcqW81EoI7sfvF4E+UWOwEj+ct5O2KT0G0tIx9UByZof?= =?us-ascii?Q?FC0m0hxNUm4EU6rBcT01RyaIIKVfxHm/ls6CfRGcw1XeIwB3kVAGkoWZAOG0?= =?us-ascii?Q?5PdGkHZKO0wcxqsZgJuZXdVahKauhHGstF92Ezc/UeFmjbnjmhi+791Fs7Bj?= =?us-ascii?Q?O4dNznvfDkeiCzw8zgGzWomQ6mQwBMxj0x1UJNB4/uy06/XKBgw1JX4lGqdr?= =?us-ascii?Q?eQOyXnmeB3KpwBJwG+Nuy8RkeuXF9UGGf4FawkbRnr0RTb4ktJbKt9FzVqW8?= =?us-ascii?Q?fm2wW7W/0a6OO41zrPnixXWDa5jqaNvB2wzaPHXGa3OwzE9G1/QY61fwLBoq?= =?us-ascii?Q?j25GGNH3LLKClfY8O88C8m6shtcFMdrh6FsbPu+1jd+q92NRpMEuK5hHOV5b?= =?us-ascii?Q?UKSb4EsiZNRkmHr/Qvq6c/4psBihLbwQmhK6SlG/y0Z6nsxtgpecnWw+uMMT?= =?us-ascii?Q?XA=3D=3D?= X-OriginatorOrg: suse.com X-MS-Exchange-CrossTenant-Network-Message-Id: ad85e844-9750-4835-db63-08daac0bf565 X-MS-Exchange-CrossTenant-AuthSource: HE1PR0402MB3497.eurprd04.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 12 Oct 2022 04:40:58.8994 (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: q0/nkenqnwKygzUyQnCwpguhXuq51VtqGe7tojpzuVsVySsRZ56/22D0FanMZKQ7U9gjoPkWRV66q8e3kzHsSw== X-MS-Exchange-Transport-CrossTenantHeadersStamped: PAXPR04MB8814 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 86ac38d10bc4..abdaeb0d867a 100644 --- a/net/mptcp/protocol.c +++ b/net/mptcp/protocol.c @@ -1618,7 +1618,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) { @@ -2251,7 +2251,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)) @@ -2930,7 +2930,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) { @@ -2989,8 +2989,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 Wed May 1 20:33:08 2024 Received: from EUR05-AM6-obe.outbound.protection.outlook.com (mail-am6eur05on2058.outbound.protection.outlook.com [40.107.22.58]) (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 98B6F17CA for ; Wed, 12 Oct 2022 04:41:08 +0000 (UTC) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=oDCiXdAfDcocnt1PT9XVrYudU0bfW/SmhqludBmFyBVOH9NUSawlTzAd5fd9Hr0UJSD8tV8ix7VXBy+LuP5BcJxe08VFKUtN3hQtxSK9Fzgw1kexeHFIZHqRn0MYY996Kcf0z6gt+wjge4HnspphHpTndbe6X28NukFgYRU7UCRBFRGC7DaOx0ICnqHP4IGm4BIv0pB4YpmkmGMc3izFFhnkeBO0NZkmHBdnMb+0OsNQ9noBDGqdId7lVCRnKivqq0w7xuePgB4qnnAKtc1+1RGx/eXsZeA0F7FyUWa+wz5yNFzlp0xmQCpYMdOm8B0IN9LZOaw/F9FctYqffHfuPw== 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=9tQoDz3GWU67+/TxFuwZBTovo2X5oTAluJBDUVeaWME=; b=gwxyxP236kONBjYXRWTEpBRFsBWk2tvQpjTaamtpxnKgyKS30VtggqskLFkMxnhYad10Jsk8iBmp8yZcmewh5KEQ7y2wYrTbIqqGSR2CwCCXNQNqCRbfT7HUyK7Hrqx4fJ1xfXvQwFGOKlidxmLnEoPHPduKiGwYR3+QKgwP17UfdWLCl7tLISC8ac/UQn6DQxCT8NG3iMEy76VqoFTC3FeqXZpXXhcHJOibDTpFTqZpODSHFj78eBIxR+ybuSB5GmT1+Ax6X0f1JExj1+R4dnYecYG5CmqYwAm8kgVPMSd6RW6+VydkHknOn5rlR6Z/ZFwJ3QNNH7Wyo80PVDwDZg== 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=9tQoDz3GWU67+/TxFuwZBTovo2X5oTAluJBDUVeaWME=; b=lyM1X6w2W9/fugAbZpPHKv4fUgpeHOYxnmHlHuqK+Ln3xQpydaynyAK9LsG+290uLgwz1xetFfMSZDZi7YiYzLVZSnw8rSjN7oSKzYQdBVoYhDrF5sJyruse9gcOjFi8aRzOxUJvJm8kPgKC4QoRzoktgQKm3cAraW2K+CCtdwYma5jslLGbJEigPeBRLuJKKZ4iciwIcPEhDhkeorfmzB47S1ZWzu71YMMPaIp9Av4mUmbJy82OcEcLRHR0R5+nyTea0Phnqxzj2qAEPjTW0gXAy9ZIFi5LqR9yWPALRB1FnTGXTzF4DBCnCQAYSXmGnEbgUAC9gor/psF3dRWDyA== 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 PAXPR04MB8814.eurprd04.prod.outlook.com (2603:10a6:102:20d::20) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5709.15; Wed, 12 Oct 2022 04:41:06 +0000 Received: from HE1PR0402MB3497.eurprd04.prod.outlook.com ([fe80::f426:b04f:d9f1:cd5f]) by HE1PR0402MB3497.eurprd04.prod.outlook.com ([fe80::f426:b04f:d9f1:cd5f%4]) with mapi id 15.20.5709.021; Wed, 12 Oct 2022 04:41:06 +0000 From: Geliang Tang To: mptcp@lists.linux.dev Cc: Geliang Tang Subject: [PATCH mptcp-next v7 08/12] mptcp: refactor subflow_push_pending logic Date: Wed, 12 Oct 2022 12:40:03 +0800 Message-Id: X-Mailer: git-send-email 2.35.3 In-Reply-To: References: Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: SG2PR03CA0125.apcprd03.prod.outlook.com (2603:1096:4:91::29) To HE1PR0402MB3497.eurprd04.prod.outlook.com (2603:10a6:7:83::14) Precedence: bulk X-Mailing-List: mptcp@lists.linux.dev List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: HE1PR0402MB3497:EE_|PAXPR04MB8814:EE_ X-MS-Office365-Filtering-Correlation-Id: 423cfa67-ada2-4f23-7dfe-08daac0bf9ae X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: YYIak4jz548htEm89CrZKfOdNLI/cFWOlUgyhB711OOjIozyJgFfBQKgRTB9OeoHRtFE0En8NIYDFDBy+M4P4xMZiwvQE3Kno96ay39J/E0oAiCo8Togdubm44XxnsnsE7sRCwCg8kz/Ns+nPL1HeI5oXj8R8TS6JwUdsIMB2WnJcs24w7YxAJauQjq5haLIEkOv1F/hmaovWNTmqB/OZAyg3FO7Tg7ze546p54equ1PVOBOdcLqgDyp9pj664ROsmtKQH8HjBb8/WaR3BFvPRF+xYWuqZcnJPKgDFMsTBPD5J/Chpj2ILuHRaUM67Qe1a3eFeR4MgGv3RKaR6Z1jzs5m00W4YV3nSKsINE1HfDlyZAAYy9MrNYBrmt+W1/1n3HE03100y6TW6fsTL7PMtNrSPA8i1zOcXcBZ3dlU9MGBdG77jzRPfqsbjWHLeBDaWGhpPU5g6LYdy42aefpSoilj9OdRd8gpRBwfvBYdnIe+jMeILbsl4si+mLfYqlpUm96c5lPzfWawTac40adGSKVHDrtflA7RyrtsvcyY0GQvIxRkTy14GIR1Ho9v/a4jT0xPLIaIOQn5RXaNm/KHBTtWOeHCKbPP7JET77ppLO51vZbuSsgto7s1Ok+IJsnollg+FaD2HCOSxeM945WFLVpfzTlYSy0UPEyNs7XGadNqmAoc3gpzCY+dWAkTsWzl6+pN8AuArH8UApkmmQ98uAGA2055sg75ksdlh4lWZNlBuDCJo/TTgW4Se5aIUKU 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)(39860400002)(346002)(136003)(376002)(451199015)(107886003)(83380400001)(8936002)(2906002)(36756003)(8676002)(5660300002)(86362001)(41300700001)(66556008)(66946007)(316002)(44832011)(6916009)(4326008)(66476007)(26005)(6486002)(478600001)(38100700002)(186003)(2616005)(6512007)(6666004)(6506007)(13296009);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?ZnlUa1xuCC765fOkbtqfMx94HpprQcSsdAKnWYRkXn5hRyOr6TrtntvgP0hv?= =?us-ascii?Q?h7J2fowTdn93NFBso9O7rrf56RTmKj9tn/axq3QbKXOmVLMLB1HCQmHNd/TW?= =?us-ascii?Q?kzrGRblxYQ/69eGuBWpSIEWf+F3Qzx2mB+FCiuM/J96wpOdmyGeDvSKJ4BkY?= =?us-ascii?Q?NbtG60vAk7lzBlXcfyeF//z/vSnZB5w4DflZLWswGG7kI3uK425SgnlUsw24?= =?us-ascii?Q?WHVXa1XGl3kAeYxa1ZUY7t0Z62wvm05DezBqIMHIdMGt7mIg7Lqib4YQK6V1?= =?us-ascii?Q?ayA/aSwoFpz8LVykBOmErZRVdyj8gUgXBWJ4IRjUTFbsaIwayX04tPHpY4Zq?= =?us-ascii?Q?C3TSGzbtiIq2USKCfnQ2lvItDzEtshmLC2AMFUxiPIW+g0Hz2tu7EtVp/VQv?= =?us-ascii?Q?6rhcChhxDtHYp108mcKnjHbilJdZx3KzXrmXNRQTtZIDa2ewlII9ZwoV6LCW?= =?us-ascii?Q?SIkTKXDpbspzGTrO2qZIQuQyIMrXgeK1q4hsYR1lzErRbGEZ9S/dNs4pBFMc?= =?us-ascii?Q?+gVHH3Ez75Tpr2PPrvqPJes/xhzRG6iSPdC4BJS6YiFPxmtccPTumzlx1VZA?= =?us-ascii?Q?9HZZjAhJKRDwvUdI1ekWiV9A5MIqms1U9Vxa55PbVKXgdaHbM0CXcebMW6Hj?= =?us-ascii?Q?LXZjSB9A1tveM78rQ17xQyr6WVV0ozaftBDHBbguVwtN9cBk/zYLrCm+irr5?= =?us-ascii?Q?MHX2YhQ/8iCwr+TkyeCkrHkWufpxmCsGirbvlqmHl8a0NRBXQODsh876tYSy?= =?us-ascii?Q?tqK2QCiWbdjKZDOZO2eehrISFmCd+1WdMh4NWEJnktsq5xc3oj5EyRHU6xvF?= =?us-ascii?Q?JQSJMi+tHEvQHoRLnnJjzHW2fr47PUIDMufCBjiXevit7TLMXQxGlg6q250v?= =?us-ascii?Q?RVxnjAhxakcsddY3ODjefXxUMm3dh2iAPMNmcttk2el/qC1VwqG3qFJP2/dv?= =?us-ascii?Q?ERk7T2i6saT7GVmXd33hwq73inR+s/kzOsVYEglgoji2KnniYRW4Ujfjw/mR?= =?us-ascii?Q?wybZ2rFU0UnJKccxtfifgSTC3qw+50KmZUjxXb5LDfXxcU7BZNkCexINhH74?= =?us-ascii?Q?eSXVObu8oq5AKLEgccBeSBOvcNrkTtH0ZIqEWNTHV5NRZjs8WqCW+sy2riiM?= =?us-ascii?Q?h5QblKWserEBiEoCoSB8SDf0QvvUadZE3yqUoKYQZCo/wNE21MuxLZNGTcXF?= =?us-ascii?Q?wcx3iV+zqduo/6eSLzn3MJHyI0C+dBvrlUudTLx4GLlLO4sz/GK4pm+KGGJi?= =?us-ascii?Q?fACJnNPosfJnRs4wCG4fHfKyJiCefPVdIdMQtZWVtzysaS8y3JmzdTvrEdCT?= =?us-ascii?Q?KIcD4PU9BheKcBuY6gvZYAczrf8S9unvojOrJRY3FkwaQcJQvbTqKhpip30k?= =?us-ascii?Q?tOyA6r+3frQqNAfGg0nDlYzmlOVzvnAKphHSMqC+3v6t5bgqKuukc3E2q3Um?= =?us-ascii?Q?a+JLEnziFffQJ4Vyh5BB30hlUgWSahsE0qvgjVbLODd9FvjVBTUQknVKTI0A?= =?us-ascii?Q?LMTuFh1KX5bJ8ToEsL32BBPRzAk11gKZO5ctQgJ/IIlMp4i6HqffNQLCxO1L?= =?us-ascii?Q?7XPoIwl3Q8G8TV4kf/+EDh09vsM9EASFN0rxPS/3jkM9XGIKrbi/1r51B0WC?= =?us-ascii?Q?Bg=3D=3D?= X-OriginatorOrg: suse.com X-MS-Exchange-CrossTenant-Network-Message-Id: 423cfa67-ada2-4f23-7dfe-08daac0bf9ae X-MS-Exchange-CrossTenant-AuthSource: HE1PR0402MB3497.eurprd04.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 12 Oct 2022 04:41:06.2426 (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: YnRSTg+2bwmietsKEqvDvShZ5uuIP/TQaRfkrHNGTsr82KDu+9rulhDKxUTMwp1/D/RZ0YKr9t8wU8WiutmZiw== X-MS-Exchange-Transport-CrossTenantHeadersStamped: PAXPR04MB8814 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 -> 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 abdaeb0d867a..fcb65c4ec774 100644 --- a/net/mptcp/protocol.c +++ b/net/mptcp/protocol.c @@ -1608,44 +1608,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 Wed May 1 20:33:08 2024 Received: from EUR05-AM6-obe.outbound.protection.outlook.com (mail-am6eur05on2067.outbound.protection.outlook.com [40.107.22.67]) (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 0DCAD17CA for ; Wed, 12 Oct 2022 04:41:15 +0000 (UTC) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=dGaLnv34PWdfer/4GYHuejVRae9fuOH9g6IW2FezRVbBYmavdbBdaFyi+diUkYuRv2OqEK/l3rNvs9KG3oCqaDzqf+zdSDN+PdzTa5X0rLG4fCp709/fcODFLqetB2WS/Vv1n5HdMPDgZl2nwja549w55gB3vVX5MW0mnOshgVPTExGUopsIxTpzbg09BBsnrbUog0sFqFb6B1AyljTI2Zx50NKx7SO2LxIVTqnU0DZzVUkaFIm0vYzIaWPkT9GvL4o5Ta6pEvciftMwSqjvNJK2r9Zj0HzLLKByRbhJ5uDQtMBQeodQGKD2lii3T5miRortuEjbk+JgHUXuiyqH0A== 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=SUxX51OiuTsNUwmtXaBtvAbRUsihC9OVRZme9vFQ1ag=; b=hyILrRw0xrJqKw6MFAKsYPZYTi983ef+Duki7GOYIYaTpTrN4jcEjZEy7AHDP1zFP2AfryxyOZln493pY0ejvcjb8BYShuo0NmfwAfjBDJ0b/tGjqv5zDUJPanGd8xjBQkS25SQ7Zz9Oapi5R0Du0eicfSLIH/oJL/ebIWeVKspXigkV3hCpltdVPBX4Le0wrQfOtBmdKYOGpNrmofqO6dF3LokixrP1iCckwG+sKc2Q6Tyzvm7wjH9inB77NoWz3b96iMEwkC9fRzZsqkowMa94lelOR97zjHDr/3i2l/1ajoWx6KWnkIzIzcPt17r75u6zejASddNij1RvpIeN2g== 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=SUxX51OiuTsNUwmtXaBtvAbRUsihC9OVRZme9vFQ1ag=; b=vdruf7hbqZbbc9Lxgph7TcRWZIiHa+7YIaZ5YNqyR/D71Mis3eFO61H/n7FxY9QhG4RPgx752Dz1Ny+NCi1D880SchGqNodLnk/p3pUu4UBYiRpzMMQTvFJUs46lA9FP9WHyU2nDGfi0lTDv+UMepaYUWT81/yu9GNqLUEjW7GfSrFaOgKD3mAmHGivGlRx3ynw/15qChWti3+D+Sx0FNQakVFVPYEGlwWhKKo7ypiyGHVnxNBIzvhmd/kS/bY1AJy11pC0uOme4loRooC9tbAqBCb1ejckranIpDWjR0Yh+QhReYjtXErikG/G1twtwQLQvZxc4Uv6epkLR5I8ihQ== 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 PAXPR04MB8814.eurprd04.prod.outlook.com (2603:10a6:102:20d::20) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5709.15; Wed, 12 Oct 2022 04:41:13 +0000 Received: from HE1PR0402MB3497.eurprd04.prod.outlook.com ([fe80::f426:b04f:d9f1:cd5f]) by HE1PR0402MB3497.eurprd04.prod.outlook.com ([fe80::f426:b04f:d9f1:cd5f%4]) with mapi id 15.20.5709.021; Wed, 12 Oct 2022 04:41:13 +0000 From: Geliang Tang To: mptcp@lists.linux.dev Cc: Geliang Tang Subject: [PATCH mptcp-next v7 09/12] mptcp: simplify subflow_push_pending Date: Wed, 12 Oct 2022 12:40:04 +0800 Message-Id: X-Mailer: git-send-email 2.35.3 In-Reply-To: References: Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: SG2PR03CA0117.apcprd03.prod.outlook.com (2603:1096:4:91::21) To HE1PR0402MB3497.eurprd04.prod.outlook.com (2603:10a6:7:83::14) Precedence: bulk X-Mailing-List: mptcp@lists.linux.dev List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: HE1PR0402MB3497:EE_|PAXPR04MB8814:EE_ X-MS-Office365-Filtering-Correlation-Id: 7e801c36-48a8-400d-ced5-08daac0bfe26 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: MEIKzrRHT2a2D08IUTK3aG6KlO4tAKvGx2UO6Lea++3HJHyjXdzFrRfK0c0GogHMaqHI8b/vKP0GA3DLDB7wI1/xGJg4r9q1MY4Bss0Wnrf0ZT7NEmcgzH1gHt8z/cBtv9YAKGUlrSplzuPEvyvEnyKj4xVVVfKEZpu2Ttj6EwouP8rCaLHv944g3H8tiINRrJB8/jo80/Rio5eRRHLoHCEwxXfBxIgUoDQKp8RleFuBlLmF0L5nmv/UfsPKvPowFQ3cAdHMSg9MRDcvXD/KNpMjaP1BHjqmTwxFzuuqsTU/xpRf0m1tBbkDi0wj/EA3ilyZhSXHiPJRHHLr7esJRm9Pu6Qr+wjIvPh33mMutxu9R4h/qZUbCU9m8oJJ74UCkoUhKFRFgVWZP8BJJ5uhpttsgpuSsD3hGWJ3OfAxa+VxMzaV5FNUp99Ulfmq0HcKkizp3F5QXeKfj+5lPw69eGdAqwq/pqURXq81OIHfjsRYj1g4m+ZdH3SqvBdZ+P58SFt9sLgiR8JL/EawLKpLOSqUqy/wJcNps8UXvIaG5paF2RUFiiqpdiaBwkWf9ENKj2Gc3IvAaAhp8jz6Z6ZA9qwZtb3CHU02KGj8BFfCNr3QCRpnBVX1jEtXJrxC0n9ag6g5hxn8W/W/ibAyxFXzdpRgkxJ7E/KlFfZt7NdDAvwF3AjvGHFG189szi/JH4QwSxF3AiQGqw1IZAJYmMruRnkQoTXXNER9Xtbt6cZHNLl/mrIzQreU2P6yC5BZE/L3 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)(39860400002)(346002)(136003)(376002)(451199015)(107886003)(83380400001)(8936002)(2906002)(36756003)(8676002)(5660300002)(86362001)(41300700001)(66556008)(66946007)(316002)(44832011)(6916009)(4326008)(66476007)(26005)(6486002)(478600001)(38100700002)(186003)(2616005)(6512007)(6666004)(6506007)(13296009);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?LCqmw+rfmA1ukidRBQexGlnuv/fJdDc5Dl5BlAvP2v9cAwyCr6BNlosGu+a6?= =?us-ascii?Q?hiDDrMotTB9yIMVvxcR2RYBJTCoZzqkRdYVjB4jhyhwSgyLO+UbOEmItwNUc?= =?us-ascii?Q?mzp1DSP/HXX293KLJ7XGP1kLQIp7QBQxRysRVsHisDdjUqEXq3CYDUsOCpU6?= =?us-ascii?Q?si+EpUD0ryFV3QALw58RdCRiTSJKS/U8mj6W20pGFcTA1gkxoaGpZPuIe5Gs?= =?us-ascii?Q?k1KAR+sYIK7k9k4lRzL26O4VZ1ssV1p0sEGbh5gsHA9IKfPAfvmF7prw9Y5C?= =?us-ascii?Q?sjud5P2cas6MYE9v+nQr6IhN3yrefEZYHPKX6zkZboQuaGB/oYWzHHRlt8sm?= =?us-ascii?Q?Hv96NGXmY6UrtDLf/MmOiYhLHfHATC05L/P6eB8XHi76ILzy9vPA6SOVmhWj?= =?us-ascii?Q?eBwpKkvafKfu7PpI+3JKjmeIWgjztpINnbUIh5KsNlp0m630P3X46SuqC0Yq?= =?us-ascii?Q?alyqy8sVo5cxEdYRaMC1PrCDzNuY6VBrg1EJZ8Yy8wDMStJufckXoxn4rgMZ?= =?us-ascii?Q?k/VQI4PlZORec/rDJUgSIw3MM8agD2SMR1Hy4WoroNk5zwOBek11pYtzjxmT?= =?us-ascii?Q?5SSsh/GVnrKBjDouLGV6TnNPEGz1P5gnp8dRm5v/M2tM363quUzqwftlkLOT?= =?us-ascii?Q?RcEJjpqWp0YZFt6MRgPsMZVUp1EpaHNpQTBKcm4L8+otFk96aNhNqCknYNWf?= =?us-ascii?Q?eEuF5I6Z+VKS8PjO4W1KjOP4egfKdHQfkG1mofGts+9rIvZn0vykh3clQjia?= =?us-ascii?Q?Wo6wI4eD/RnNo7HkRNdAnSVaGkVIOS2lORZ4bJBjATuftVYG24Y+Yedw3pyE?= =?us-ascii?Q?LWEIIvcjXbEuZf3pQhC6raiDKUvh8+mS3fwjHFInEcrzq6Ue+9ZBe1rDNFc8?= =?us-ascii?Q?UhTaSP2qaSlXuSPQQhVsBQJeLUp7ZKHz75q4hJkhTle5P7IDUO7m1plAim5q?= =?us-ascii?Q?SU6qEEsUk66v7AqOpBhPMEclsFdP2C7nhfN5V22stDNFDudkWitKwHPBOeag?= =?us-ascii?Q?9Jg8WJ0TV/wHMRkqhR8uUJeNIQcUL1YtRwETP1E20oquohaa8vrripeiz5OG?= =?us-ascii?Q?iB6JECliS512xsFHR66yZN31PRPXbNYKTC/fx5506W+84OD0tc7MjXrTpXiE?= =?us-ascii?Q?aulYXn3TCPeFZeEUgcJ8U2mP6eF0+6HPl3BAKucrYZn8JDYaS6YVbYg4mKFs?= =?us-ascii?Q?0MB6V+IHgiU9km20ZErxOaZT3naKxV5nMLYJyClVUEAkS4rEmp4UBRI9s7PB?= =?us-ascii?Q?Tl4TD6rQXIb0cUkQAhN6ApTdmk8Rdu6uMemcxF0DwWGp4g29MNNSxAn094QN?= =?us-ascii?Q?Prl2TYlN1f8SiyJ7iZ+eBWL+MwS1UHb4ShwFnyNEFRWSNGMTHSUZWcHcNRk+?= =?us-ascii?Q?op/76morSEVbg7fSczg0rmWl9eCPuphDuC/l6qGD2Zxiuues8qbnPYI5/MmR?= =?us-ascii?Q?NiF/uphSFMbD7jz6BWmmOBnxtPVe35vgm7AwmYgKiuLG04pFcuJL867rQtqK?= =?us-ascii?Q?G28BTWUJrHSe5ZEogG2R/Ory5zL4xHZGN1BzVtRruz0LFQeAbypBlLWEGmtS?= =?us-ascii?Q?3Xw4+HgC6erME9p+M5+8Vp6zVNdB7dGudFifdTWxxF5LnP8GmjRX0O5g4bsr?= =?us-ascii?Q?bA=3D=3D?= X-OriginatorOrg: suse.com X-MS-Exchange-CrossTenant-Network-Message-Id: 7e801c36-48a8-400d-ced5-08daac0bfe26 X-MS-Exchange-CrossTenant-AuthSource: HE1PR0402MB3497.eurprd04.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 12 Oct 2022 04:41:13.6014 (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: 9m5MrRsu0XWqMOOxtUcHcI5/w0UpMPD32T+Y0NXL/pY9uzSxi9goKVzg2DAsz4LmV9tq4ETKSYwABR06NP3Qpg== X-MS-Exchange-Transport-CrossTenantHeadersStamped: PAXPR04MB8814 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 fcb65c4ec774..36525d7ea8e7 100644 --- a/net/mptcp/protocol.c +++ b/net/mptcp/protocol.c @@ -1603,11 +1603,11 @@ 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 info.flags =3D 0; +again: while (mptcp_send_head(sk)) { /* check for a different subflow usage only after * spooling the first chunk of data @@ -1621,32 +1621,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 @@ -1654,9 +1633,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 Wed May 1 20:33:08 2024 Received: from EUR05-AM6-obe.outbound.protection.outlook.com (mail-am6eur05on2049.outbound.protection.outlook.com [40.107.22.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 2613617CA for ; Wed, 12 Oct 2022 04:41:25 +0000 (UTC) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=dL9Zrs1fe3EYWSK/YNW2xQXZv4KNEr+RfgOpjQLrp3rSBV/km/41Y/Sz7znOHMbylQVApZp2QIFG4bEYRz2RrhpJ7CCfInOvOY+nfpOmYJolUbODJ/9+A/K9VbJr51HB190Bd7JCdBhK1UvDKoOqzBUBo+L4rlpKA4ta8hxkTSYszlFU1sahqpr7dc567bJiWtXx2aNFqGR9OaX5nidhrr4W0Up7pLdlcDgxbvOIzIOMr7UB1xnQ4dCPwxpGInFRwkv/FyvFNyX3N57j5TbQBK/ZTjl1RgrhX2yCLkrswW5JYZh01oFHdqnRl2n7X1Ucosp8sDUjy9lFXNvvn36rEg== 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=J0ZxTViTfy5QkUpFD+EcVssFhQKvsQuYt0ib5WyfOsA=; b=dHZzAZUtd7TFIkvqRkhCz99KkOuCc/+ENLGN+n6juNXZ3dcdktp4L0l5pPMvkOGNOVwEHsoO3A31p4y0rmrPpm2Tv0ZPOdzXz2YJxVzlxL3OlKrQ4ckOvEME1gbf3puVOZvOHGf8hBSYyqSjTCmFb+kJQziDztL21opqWvGfVujpQ+3s+2/It8Se3JKgznK8RSPEgLbYuXtNhxeQfz2R+5eJC3W5dRAr1cXlgz/E3x1WuP2ZQN301NgzucY13ceDBR9ygkN7kakVgJORueJPS8Pb+VnOj4YEWmKlT/TeyAhC764Yhq8PfaSy70XLFGUhZq1yoteW6/+tb7WldQ8sbw== 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=J0ZxTViTfy5QkUpFD+EcVssFhQKvsQuYt0ib5WyfOsA=; b=FnRuyut0BAB/6dokZZ5BLIXsoJJj/gImVghAsvh3R6q3YFQx6wJGgUHyX83UCTRkqWtdixow6scLFWsjSrvhcfVV/wNMenQB/ZjwbDPPBChVE+LGFpQs9MeqhyqAjW1TwLjYtcS9ZXzvpxVsGd3SXITs6lFtMx38sdSlRh3abQ0tjC+p+GIJagIeF5ScjEdQ8k9NHQXXNERmIpYnGywvV/oYsaClJxVATIkylihS0RiBKVJBubZcCwmClf8ehXRnzyuW6n3/fU/PYJ0nh5NGO3vCe64qynAppFdI1cQW2ntypiC4gBjBqK/ecYAemTHBnQnJb4ACCk/Tt9km3lekyw== 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 PAXPR04MB8814.eurprd04.prod.outlook.com (2603:10a6:102:20d::20) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5709.15; Wed, 12 Oct 2022 04:41:21 +0000 Received: from HE1PR0402MB3497.eurprd04.prod.outlook.com ([fe80::f426:b04f:d9f1:cd5f]) by HE1PR0402MB3497.eurprd04.prod.outlook.com ([fe80::f426:b04f:d9f1:cd5f%4]) with mapi id 15.20.5709.021; Wed, 12 Oct 2022 04:41:21 +0000 From: Geliang Tang To: mptcp@lists.linux.dev Cc: Geliang Tang Subject: [PATCH mptcp-next v7 10/12] mptcp: multi subflows subflow_push_pending Date: Wed, 12 Oct 2022 12:40:05 +0800 Message-Id: <5ed126ff5fef486cb205b81f7f78fb9e7df4e040.1665549148.git.geliang.tang@suse.com> X-Mailer: git-send-email 2.35.3 In-Reply-To: References: Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: SGAP274CA0022.SGPP274.PROD.OUTLOOK.COM (2603:1096:4:b6::34) 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_|PAXPR04MB8814:EE_ X-MS-Office365-Filtering-Correlation-Id: 64de2af2-8e40-4c19-aae4-08daac0c0289 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: 17JgTc3boenZZMp5EHTS6VRSa90jozmM5+mVTOWed2an7zHZj1E/hjokiknEAoFP+O3T+tvVuYyb0mACQQY8I6VKpDtqLxCZRcz9kGJr30h/O+tky2XhLPzUB+IKZ8VHO1W56QQ//CQ2VyJq9js4y0R9GS2oW1LQXfxk0W3ykL9yXNr9P4sebalfScy8Rv7MOT35QH2lOQGwHpWL5Q6MiLnX67754wkh5aNR4qUkTsPIoyBHOYAb2eZBNusD9OkLPztA7Whb4+B6shi5VmXRIoUYA5wJ2iEZ2KcoCpcryTELlGdcXVRuogOAFAikghyYMdIMADYYkKpxAtAnFwpMocTOFP+rSJ9cR2yxv3Ubo6Vbv2LH44A0H2vGUpo4R/xDc9DvqGwL9zyVISdWPOiZzzBZyNIv7hvoh88sxmQfQM/S79TRCeO7tkgYDAk1PckSpzSCrC+tkaXYViYHF63vMGDxL2rpZ0rULJyqXT3YRxtqQb9gA+I3fr+1tBkw4h/qBGCwVjuyJDVMJZnBscPRGNfUvS68HSxTwdae5DcK7/9JpN5Omywq/r6C1QnOl5T6GTS8a/D2doXl195u/i407uFM04cfVECMg4q7nrmux3SA7zi2JFg3o5wYIBiggXdPyUor8skSO5ZqZrNSkKzSAISLzkbL8cwlZWdcKoWtDejER0jhEFcfD8jj+WHA/Q5rXfKJ4phWvCucyolIq8YaxRb5t/SBLwlutcPivb06NffqlCA3liomsG/T4ODPNkWj 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)(39860400002)(346002)(136003)(376002)(451199015)(107886003)(83380400001)(8936002)(2906002)(36756003)(8676002)(5660300002)(86362001)(41300700001)(66556008)(66946007)(316002)(44832011)(6916009)(4326008)(66476007)(26005)(6486002)(478600001)(38100700002)(186003)(2616005)(6512007)(6666004)(6506007)(13296009);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?V1pA3F8Lu8T1yr4lS7IaIcdJJNyaB1pELx76wHChWk/GMr80t5zsUpK/k/lR?= =?us-ascii?Q?NdoiBvPx8ublm8OHBksvL9JneVIIB/M/6S9q0PHzA1Rjvk+JpK0tfDuSnkUv?= =?us-ascii?Q?ZMwqlbodJu1y1J3rHH17M1rNN2+Afe7/v7lsznOwGxERBX04YBHDEkd3ULEr?= =?us-ascii?Q?8xMMS52NBw5cFbLdg73omJ1Q3w8Xuk+4wXQF+b4lN4lTM8DeHmR/rXFRL+DV?= =?us-ascii?Q?5F3InBcRPXoIf8zuEbWe2z10IareLE8rLQXve3RyhrQ0IxueXnegg9FSZ3j5?= =?us-ascii?Q?7KSp1KvpxkEJeQylJqhl+Hvjv66IZ8ZVlhYz54RE5a9vUbI04lJFnpIv8pLP?= =?us-ascii?Q?L94NiVJ9eNveheHzJkont7W1Icb6QXtONaJ7Gj2uabqUkf/Mw7QKEG2hQKk6?= =?us-ascii?Q?cqBziHrKTUg+NALd9cGT/mZXq5bqktQfoCkCROolIstjCrGQNTFVC2MYldZf?= =?us-ascii?Q?OOHXfoDkp/kFfR3i2PcJDwx2QKxz+OHmSCEfYOLLOfBbtOy59MmZ2yFONM4u?= =?us-ascii?Q?UG8p82Hx0llN0DZMKWn9YyLoNHHl/2+R/B3dHQ27fi++kjECbUSFKwbDBISU?= =?us-ascii?Q?c/cxyLX8jLHkGQqbcXx9KhcfbAwY7jN9MEoO8K5Jl4M12HtzJtcXLRia4sHW?= =?us-ascii?Q?RoP0DJT62wJMABXSEBUr5BJMD9X7/cWGBpHM6cvIUvtudvTFnYcGKCGn6Otl?= =?us-ascii?Q?QLP3fu81lv+G9zRCNW2KVKCd9ANSfJecBIg68WRYc1FJAP8p2IBfBlOf2i5I?= =?us-ascii?Q?fMIRmTNlG6OPoFciSD69/2NrkKx+KCPIdnZEJs6mvyvEmZiFZzao3wGPsu12?= =?us-ascii?Q?c3mH8ZHzQGW3hXasBY7jCXRhyrA+3aynpTibCg66Weruw+OepW8p33Y2lNJS?= =?us-ascii?Q?rolgCH5drQKetIgIDT9/ZeDjJkna6df0Wm8UAkCyvmBx05z+7GGhB63cBhTs?= =?us-ascii?Q?kqsIG8XbHxW9V5ktL1JnP3AdzP8X5+EiY/hKmajXEroYtPsJa/ijex3ZxrxX?= =?us-ascii?Q?5UTDYWlZ8/zF3PVygSOaWFOduXLLrQouoteeO5aAFjeOYP15wLKXqbnLv5ph?= =?us-ascii?Q?x5V7VZFMBcrZSwwRpuSXcIkKdFrbTbjLMvXhim0YwJPQ2fIGhXsqrlqc6sF1?= =?us-ascii?Q?NDTxcEGf43oo2dFOCYPZU+VajHjtpK6CJI4uvg90ac6NWUkSS8jsODC9JNWg?= =?us-ascii?Q?FIkG9T+61b6w8iwHGSGQgNnkABX8dhf1PCxgN3wpPGeq7kk2U//z9g+omMA4?= =?us-ascii?Q?OG9hePV/hpd18rZ0V5MwHa0aDZiaXvntRCRDJuBjPZndvE9b0udxzj781Yw/?= =?us-ascii?Q?a/Jq3lNGF/yJoDMLch/foQuVAIgRi40/DNMxKd+I2yuoKWY/RAoJtY5nJHIj?= =?us-ascii?Q?XrnCNzP6Gg9e0AKxX/PB2YILhi/6U/Q5H2x2t+YrVvPP8nd1jWYYcYoTpVBM?= =?us-ascii?Q?/YnxYkPTJvYhetWI2ZO86qbc6ZVi3OUhSMRt4xOUay2axw8+muWbG5yuAf3f?= =?us-ascii?Q?1GSzk4V52amurwQVMtZGiHslfJ73vaY/Gb/6SMXtABbE1PlsLTdOP+boAWFm?= =?us-ascii?Q?X4X5Dwpa8wI2uoYlJ3VF7NVNBhp9dm3rZiIAZ/YpLZDUb8y+6XIBuIcriLC7?= =?us-ascii?Q?ow=3D=3D?= X-OriginatorOrg: suse.com X-MS-Exchange-CrossTenant-Network-Message-Id: 64de2af2-8e40-4c19-aae4-08daac0c0289 X-MS-Exchange-CrossTenant-AuthSource: HE1PR0402MB3497.eurprd04.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 12 Oct 2022 04:41:21.1789 (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: gcI+ex3C2upBqaaeq/E7MAXd/5Qxkga89Y4qbiAgqALxpYpktOGLAFa8wdxfvryAf3zxKphAm4/NfPYWHSnnGw== X-MS-Exchange-Transport-CrossTenantHeadersStamped: PAXPR04MB8814 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, 38 insertions(+), 12 deletions(-) diff --git a/net/mptcp/protocol.c b/net/mptcp/protocol.c index 36525d7ea8e7..4c9c2c6dfbe5 100644 --- a/net/mptcp/protocol.c +++ b/net/mptcp/protocol.c @@ -1599,11 +1599,11 @@ void __mptcp_push_pending(struct sock *sk, unsigned= int flags) static void __mptcp_subflow_push_pending(struct sock *sk, struct sock *ssk, bool first) { + struct mptcp_subflow_context *subflow, *last =3D NULL; struct mptcp_sock *msk =3D mptcp_sk(sk); struct mptcp_sendmsg_info info =3D { .data_lock_held =3D true, }; - struct sock *xmit_ssk; int ret =3D 0; =20 info.flags =3D 0; @@ -1612,20 +1612,46 @@ 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); + 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; + continue; + } + + if (mptcp_sched_get_send(msk)) goto out; + + mptcp_for_each_subflow(msk, subflow) { + if (READ_ONCE(subflow->scheduled)) + last =3D subflow; } =20 - ret =3D __subflow_push_pending(sk, ssk, &info); - if (ret <=3D 0) { - if (ret =3D=3D -EAGAIN) - goto again; - break; + 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) { + mptcp_subflow_delegate(subflow, + MPTCP_DELEGATE_SEND); + mptcp_subflow_set_scheduled(subflow, false); + if (last && subflow !=3D last) + continue; + goto out; + } + + ret =3D __subflow_push_pending(sk, ssk, &info); + if (ret <=3D 0) { + if (ret =3D=3D -EAGAIN) + goto again; + goto out; + } + mptcp_subflow_set_scheduled(subflow, false); + } } } =20 --=20 2.35.3 From nobody Wed May 1 20:33:08 2024 Received: from EUR05-AM6-obe.outbound.protection.outlook.com (mail-am6eur05on2045.outbound.protection.outlook.com [40.107.22.45]) (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 73AE117CA for ; Wed, 12 Oct 2022 04:41:30 +0000 (UTC) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=ZL7RPo418UTuOUXR5X5kq7rL0XPiAQLFVQdgrorboIH0XruFYYRyGzcPFj+Y7rUK2F9SYcYPdveQh96TzZ/crKvi/VCcae+ANkXPTIIplw0vtZYiYpPIlsHXCGR+0vRuC4IKpFF0JZKF9VVyKQtOhNgO/7hDJEg6PUNdCx5WV7bKNGRYbctaSSduFjoPqhlhaWBLvyriDCk76hVlHWsHDE7dHBCgYTDwUhd88VnRRVlez8fZGWp2G2tHYywlnYIZE0Ik6j40SD93hbL75qIgk56qQJxyJRmZhr/kz6ONZ0fszGQGjLJFQ9oDVm65comUCdInetLvjhjLrdH9lhWSBg== 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=SQlHVlX4OvThMBh5rZNiRm/XEboXcO14+SGXRp333Hw=; b=cG9Ksf2fURbut6l29nSiVfRPLR5a6G8fabS7C4WGGD0iQmwuTkcizSv3guT5QAhg2J00o+h4NQ97941pLu1l80UqB2SU0rC0FwXzdgrvan3NJCFpCvh1NqNiUW4cyM24bMCuU+dKwhAUQNp9SjXCs+agRkg4Szl5F9Vuz/Yxb4koYG/5BbKBeeKRA535pG6v/o9bB2oT6zyvRzFCA+8cmTQUB48RWKZbs9PVkWDiRq8JIzSHyQrZEswnhUKXexAdNMuPT29D6GJ7vnfttEo59b76LmIQfhtBiWIKulYipExG8ep/uQKNgXNarjTHXIeOHIjsNHQeFL46PdxzryPJUA== 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=SQlHVlX4OvThMBh5rZNiRm/XEboXcO14+SGXRp333Hw=; b=Xa3BI6LlIUHvz7OudUZynmn2wIKxLaT9YbCNbYUWnCTV0YYaSU3r21e1xhJjuX09tFtQ1DVIE/CfVUgRRu6Clmy0Y/CbqIX7NVadnxlUO75bDzRIFyr68HccSMitN/wg4ZaFPXe5H18TM4DR2R4vlfHTBIF+sYQgOOc4RH1BrQY+wrlyMgIpmqioYS5cmRJfAulLOSJFdOVu9AzsPhNJeu8c3G7wqbHSGrYb5RpT+KTRfsQNFUu/ZG3TlFwlKzVl3YYFAlrdrSdYvSsJaGM7ujP4YkiYnU/2xhIdspBcnYEQcKyePDLhdhodIN31EGYTwhXgTvE0ewOGOovgMDDTOA== 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 PAXPR04MB8814.eurprd04.prod.outlook.com (2603:10a6:102:20d::20) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5709.15; Wed, 12 Oct 2022 04:41:28 +0000 Received: from HE1PR0402MB3497.eurprd04.prod.outlook.com ([fe80::f426:b04f:d9f1:cd5f]) by HE1PR0402MB3497.eurprd04.prod.outlook.com ([fe80::f426:b04f:d9f1:cd5f%4]) with mapi id 15.20.5709.021; Wed, 12 Oct 2022 04:41:28 +0000 From: Geliang Tang To: mptcp@lists.linux.dev Cc: Geliang Tang Subject: [PATCH mptcp-next v7 11/12] mptcp: multi subflows retrans support Date: Wed, 12 Oct 2022 12:40:06 +0800 Message-Id: X-Mailer: git-send-email 2.35.3 In-Reply-To: References: Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: SGAP274CA0006.SGPP274.PROD.OUTLOOK.COM (2603:1096:4:b6::18) To HE1PR0402MB3497.eurprd04.prod.outlook.com (2603:10a6:7:83::14) Precedence: bulk X-Mailing-List: mptcp@lists.linux.dev List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: HE1PR0402MB3497:EE_|PAXPR04MB8814:EE_ X-MS-Office365-Filtering-Correlation-Id: 721d39ed-d79c-4f08-9fda-08daac0c06a2 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: rm4ccWnRlNdn1bEV/nuvFiD+E486/ceD3Lhur4oHIV9pNui3R3bNRCNACoQFVaZ6WxAk0qpLJD0KRi1J/rZpcNWJHNOcTyX+GGtPvRfQz2DXzLz2cnv671+7sWnR6P5uRDVmlPjKVorasljy/4fBKeGbL5YFkAenbaG9g+0piXX0+LVFgZtvplcqHevpFbvMA6O+O8cdkvnGuSw97gXbnvhG91uywfg1fqLtgAYPrZjOAe7DaKahES0M44I7/3sg4F4hbUvNBGsH5AI+xTZX6rlOBzN2AbP4mCUUdj2yIYNR9iXs5/FHfYycz+Si0SunwRm6LxCsOdjDlCFGdR16iryMej18B+YuydsNDUSYKa1/KCZr/yBYhOLJz0lkMjyB6OanyZhNzUW6Xje4pdbHbEusHy6zkwc5iVj3GdPxybLpZAKOxKRD+NplSuItoEN+56OcW8YQHB3g2y5bdKwvmNiLuJnhAgdLoGf6DsuQY5iHTrprGEqWhkTp9ZOPrkTqSqA6eyhJo6dLZiRq4tptZDmg0WpjkD2cZDUIkQSiTTMOI/jCmXNyYoW/tOK4izdod8zLaKiGgU4me1bkMso9ix5+8i/zW4tDfxMZUU3lcyhscpL3nuzCxvRaDM0QwY73Q+ZSPZ4luEPgJ81aSMxMrDZG5MO0XUGhGo5kl1XvLjXO58BGVSX+so5m7GWn6G2+GOhXScH/UqeUfXz1TR6XBBqQafxCVX6mKstCg1j0r/ByOBlxl5PTXkyc1749ry0b 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)(39860400002)(346002)(136003)(376002)(451199015)(107886003)(83380400001)(8936002)(2906002)(36756003)(8676002)(5660300002)(86362001)(41300700001)(66556008)(66946007)(316002)(44832011)(6916009)(4326008)(66476007)(26005)(6486002)(478600001)(38100700002)(186003)(2616005)(6512007)(6666004)(6506007)(13296009);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?nUV8zOg6tAnY8tUVkFgZ6Wn/XaWTjzjzVVhyWi/8Jjfn80wj4brr5niCEV7X?= =?us-ascii?Q?KV9PseOqRAdA9IKNm3O+pcFmWkRPAdDLHOBoFmPi3Zks0mBLS1l/ZMqlhFDA?= =?us-ascii?Q?t+fpyiikuYfwTJb8b9PTCw+o3zQ285Zo1tq09obyTkSaIcUpIiZYtWa/CZzx?= =?us-ascii?Q?rD9bKRbkSZh4UO8opAZoNdGb+xRgQsmrxVZl/3PSi/mYXgqVBCNULQhDuXIg?= =?us-ascii?Q?BTkzPea0/9CULfg1/KFxt45mwpZwqBxHoiwXWdo+BzdOqG00h09Ky98s6XSl?= =?us-ascii?Q?ZaAX6n5KTNB6c9gmkSpXoLXviZjtX7Qqkftxkk4Q8D+H9RC8DQ7nGaoETx7o?= =?us-ascii?Q?WKEBwG+QQKvNq6RGb+GMGmWJFnTNnYDDTqme/ZBi1Lrn/iE5ULrHtC40M25q?= =?us-ascii?Q?yWi0XsjiraYjSZtUPern8NChz3WtRITAbRZLQpHx8MDPhRUIiXKbO4JMm6Sq?= =?us-ascii?Q?JtnsWyuGBLPGvHcMI+u1n4t0/BHMliuUK0mEqTP49IgapuimzGa3hsmYtoYW?= =?us-ascii?Q?mL6jfIVkpW7/HhtO1jiNRoOWNIxezA1WHJPCBWrb4a6BeP4DaDVC7YZ3ZNJb?= =?us-ascii?Q?MriKiZjHaIq0Iq3HQfnYXXFl0watYJBdCo1DxNP8y+V8P2VxyduzM7ouYisN?= =?us-ascii?Q?wZQxNVaYjjwQgsFecBSFa6iAt1fRxnwV/9ajM6EXJ8taGV3oQj/am/XvYwsT?= =?us-ascii?Q?zZlYnDtaTbS3JbcTpuoBf9Kkvlf3mjAruSnspmarEyDFlyLVTaeP0a9mRfQc?= =?us-ascii?Q?DYS1CybKYoBBWN/9N/cj7sMXX1zwZDzTYX65I+fZ5ermhYw4QG4tVRQdvDuc?= =?us-ascii?Q?XoYf3R6JjDea6PdInOiYr5zxN0Nh97CYbGbhlCaSGfXXvscYBKCD5rH59WAq?= =?us-ascii?Q?3h/vD1rvJoy+/ehG4V3ZQNRD6LtJVXvOVUTxdzQSa395mQm04QDYewaSeEVQ?= =?us-ascii?Q?NEOoCa1DbS95rxoBHu4PV1zoMoCVqT7EeM64s3P3o7ZCtsevL6RHIFHHXuVa?= =?us-ascii?Q?qm5jAmb5KXWplKbtFqHH3o74tja+EZPwnDQ5rEjyIjChYdCIlpbVVPxeBvCn?= =?us-ascii?Q?F27+NkSjf3zpXyWE2sa+z84EjinyMr3uiN9Xct++R5mgdN/Dop/W6NV42gMd?= =?us-ascii?Q?uNXtTK39xX1da6alcBstzQdNw+88zlp3dk4FlYYodN1P8cRmBNQUq/q7EDC9?= =?us-ascii?Q?0wehGyP9yYMQswvLFbnwrOdrZ/YlKdwmLnRVnTMx0HFHJoRE9Yh3prmyGeQx?= =?us-ascii?Q?F6eX0SYeVBgpvQhshiDA+rzzjKej53TehvO07wEyU3Gs9K1GxNU+kADJQQIs?= =?us-ascii?Q?Uo5aN4AqTRRkE2W6xO1No2FJx6FkaQaIHzSsvu0Vpa4uR69pXgCLE49jE2ig?= =?us-ascii?Q?Ntl/Ye9lT6jZuWEVW9bZV8Kj5NDpauAzPCAPYjmflzUyt08fqYbArsDuY+Q8?= =?us-ascii?Q?pwmFGlvwKWxM0nKCjS/eIyhQnkXvQDhilwInxvQhGfiPfVNAXWa54uRoxl+5?= =?us-ascii?Q?O7da+vDOwvTKHyEWhk3hR61McHidHhaGrveT67booJPNdDUwQFf9C7U+1HhK?= =?us-ascii?Q?k+9XRRQuyI096Ix4wGtPH/iEGNHjQUulYIo0F9oOk7dJYFXlocqckJ6jLvqH?= =?us-ascii?Q?DA=3D=3D?= X-OriginatorOrg: suse.com X-MS-Exchange-CrossTenant-Network-Message-Id: 721d39ed-d79c-4f08-9fda-08daac0c06a2 X-MS-Exchange-CrossTenant-AuthSource: HE1PR0402MB3497.eurprd04.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 12 Oct 2022 04:41:28.0064 (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: T4iROtx57h/VL/PGTlU0GvYVlJTlyMh1TeDrWohW0gtmCN1zyZDdHr9o1d5NoApZcKGwCoFgKU0EMljj0PwseA== X-MS-Exchange-Transport-CrossTenantHeadersStamped: PAXPR04MB8814 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 | 61 +++++++++++++++++++++++++++----------------- 1 file changed, 38 insertions(+), 23 deletions(-) diff --git a/net/mptcp/protocol.c b/net/mptcp/protocol.c index 4c9c2c6dfbe5..5ddceeb1d334 100644 --- a/net/mptcp/protocol.c +++ b/net/mptcp/protocol.c @@ -2483,16 +2483,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)) { @@ -2511,31 +2512,45 @@ 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); + 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 From nobody Wed May 1 20:33:08 2024 Received: from EUR05-DB8-obe.outbound.protection.outlook.com (mail-db8eur05on2073.outbound.protection.outlook.com [40.107.20.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 827FC17CA for ; Wed, 12 Oct 2022 04:41:39 +0000 (UTC) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=SzJW1WIiVGvSyH3rhZrqXLQlF7lt/WZ4q+nykMRwcX42VCimL2O7F3uLL5iWpG6D2v/ZB87wAL+RVjpIDDXM7QaCstlqPQzcENCtruoBLvFz24JilVYobbaHYPJ2KRXGfyGsknMJ3CvwLc1hqAuPyWnU0YCdaSE+ao4v15Q+ozWN3FmqDmHLFUFWDnYsVT8FhkuMVNIae696YHgHKvqZ97xBcovsa3Nuop5DmRCd4yODFmzW2NLKbWDelDVGbM4rSULHnXKZ0N174OP6A/hhlzO8e5XIo7xRleSwlyONW1TKGNLBkx8PcnkgjVzi08j7Zu9CucbF2BK1mZzbFZ3U3w== 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=4NAzwtDFbpIUwHwByLTGsCfexGOXk1N8mJzhLu2sZHQ=; b=EtAVzCEuJzmdPAdXSHBLaFvQqx+SVPkdEjedwRH6qRjEBPVOyVMyrvseTjkkAbxF3jMHLNE63ylpqwLnSzjlvfcvFss82b+fMk4fZIei9Abu1FYhLbCyVUtKzPqxIh5KmU+Azg+7LrzRsdiDsFJQPvmjn+/jPYpKggMqguOPPEcS9kfuWjLrxRjIgFGxzZD89PsDmq8uLDs6tApAyQOTuv1xW0UAnQJEllrdowVPbsI+LPc97O0lfirf22Vd6wPaAw2RpDpeM1/dfL05L+pc/61lWdP6HOSSvk4Uaf25iC9O8R6VRVncltc5zKisFOCUP9XZBFdSzT++L+FGIdElOg== 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=4NAzwtDFbpIUwHwByLTGsCfexGOXk1N8mJzhLu2sZHQ=; b=r4bPUHzq8GVqQBdJ8PuobGi4GA+gFkJpIekkXK6DPXATHVXmKPXIoUrSZ7BSeuIilQSqaCUOT1HiNEt22md8+dG8DxwUW5DuFcyr9PS3YGJ7FsXT0vQbR1bfLnxqZLL2gxZ9x7bT8HjQ2M+lLeR7M2AIAF/qGDRv8mS22EcQsIuzKPydjR4zhEp7w2N0DN3WOrpJvC13FPXy3MUreLDEQS0SXXzkuO6m/K4+tUcJtvJ6hl+CxnhlVmzkXK8l/4s724oLXFypZBzdtDuA39e5whV6oW4aXVRiai+UOF5VxeriHVJXebunrmOwfnwd18PE5FGKeuIAr0BMgCgjTnL3zw== 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 PAXPR04MB8814.eurprd04.prod.outlook.com (2603:10a6:102:20d::20) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5709.15; Wed, 12 Oct 2022 04:41:37 +0000 Received: from HE1PR0402MB3497.eurprd04.prod.outlook.com ([fe80::f426:b04f:d9f1:cd5f]) by HE1PR0402MB3497.eurprd04.prod.outlook.com ([fe80::f426:b04f:d9f1:cd5f%4]) with mapi id 15.20.5709.021; Wed, 12 Oct 2022 04:41:37 +0000 From: Geliang Tang To: mptcp@lists.linux.dev Cc: Geliang Tang Subject: [PATCH mptcp-next v7 12/12] Squash to "selftests/bpf: Add bpf_rr scheduler" Date: Wed, 12 Oct 2022 12:40:07 +0800 Message-Id: <811dd5cfe0553f4f1cbbad4d159f96f6cd826310.1665549148.git.geliang.tang@suse.com> X-Mailer: git-send-email 2.35.3 In-Reply-To: References: Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: SG2PR04CA0179.apcprd04.prod.outlook.com (2603:1096:4:14::17) To HE1PR0402MB3497.eurprd04.prod.outlook.com (2603:10a6:7:83::14) Precedence: bulk X-Mailing-List: mptcp@lists.linux.dev List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: HE1PR0402MB3497:EE_|PAXPR04MB8814:EE_ X-MS-Office365-Filtering-Correlation-Id: ee081ee6-c983-4c77-e215-08daac0c0bf3 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: rg8jyIlkZcpC6HASmF27SKxFNNi4W+g43brcxty//9v6iBbXG9kIffovMCfDiMJ95EHpluxMk5/OC3RlBwPu7a88UZbEMfVGaOdc/yBVZqQjEqHwyNGpRx1k8sUdZeB1fXZI/qc2c+9JDeug9Qe8Yn4+JN9dUMkv3nE5wUF875kMLXl9VMm6rzChFWn/y7rH6jHbqm+u9ICPtdGWccZ4c0DjnTt4xHFx38rwlz7X2sfan4GU0UurckCeN4jm22XTMTyitn+CqSPJPUIZZs9QTDdPrHoE9GMM2EhR3BjsRPoL1ptPe80c1d3y0hoMQy4Qhm6H1xAsirkwbT75qPtdFb6aQJSdbp1WfYiOk6ipSzrzd9OKeDtnkFFQLYvDJ0r1XN7mHXSt0f12YyBqAF2o5BLxfI1ExAyVmGtT6G1e2st0LfKG5qT18YCK7fxe6U3Wstdsj5n0squ0L1VBGbUuj2+At1XAmV4rN87vP3OEHdxPkG/eDEIBn7lztNbujZQ9eqIw5J6mMS3e5uaCAFwgy1FojBi93cLeB2oLPmnlYofK1urv6BSDVmiCZmEI5FfZq5CHMiwqTj385XjZz9mxMp7BQ5IHCBa2B46lAejVTp08X9t50/horWhnNZEzONXfK7oS5eDgpX+kzhD1Tp4fURA9IxXpg7S4WWrGZho/tiotYhHvKCJV5N8QWRH39vm6b3qk5PJ47eCIm/vig3cg7YGS4EQvYHaSDzy+GsPsi1KYSwJbuf/Uxj5vgi62V8LV 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)(39860400002)(346002)(136003)(376002)(451199015)(107886003)(83380400001)(8936002)(2906002)(36756003)(8676002)(5660300002)(86362001)(41300700001)(66556008)(66946007)(316002)(44832011)(6916009)(4326008)(66476007)(26005)(6486002)(478600001)(38100700002)(186003)(2616005)(6512007)(6666004)(6506007)(13296009);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?kjAulsNTy1kDv1wUMFk8q/Cank6lCs/d5kod96qIeZ0qMO3gMNiKIfBnnqSS?= =?us-ascii?Q?64uk0l5DC2/vyrq2CEs2sN/+7UH104494C8fDYS7NjWX4XEDMGi44npcRpDw?= =?us-ascii?Q?kww8aBwTcl6wGtd7xiW5xFCU6HFbZZA5PFLmtMAgayDccXfQ95RfMk9cL3L7?= =?us-ascii?Q?EWyCxEduNdfziwvPe745Q5wxH1peAgaZTAsHMD+0pbkN0XAmGRG6ha96WJYb?= =?us-ascii?Q?iLAexyKA/thEAToqoDBffAJDT8Oqtd29eWuUkDLMC0MUQn4ZckPttGSQV0qq?= =?us-ascii?Q?ROl3ioC40+7eNbtupgRxE06v6h1lvwMgzIsqDqOb3GKxPNGPMj7X6Zg/Qpr6?= =?us-ascii?Q?bnTce0MFuSD3HSBkS3qS7RATMVQXd+4JeCTNHMFORfoHsTvohOSc6Xtb9pBs?= =?us-ascii?Q?cxC056fXkIWMob1P76HSpRClIyM/spvpNIXemu8C1m0x+24Cc500AUNHIFW2?= =?us-ascii?Q?5EGFOTVqN7IfNlAPlYS5XoykR8OTE59N8tB3YBXoM3dTxO2JV6vRCIdbdoWA?= =?us-ascii?Q?L2LQINl3gSzpy3B9XIUJ88VNJAMhPEGLmIhLJ0WXive7qoaCSgUhDcmVBc9y?= =?us-ascii?Q?3wOwJ0lG5uhTfe64+LrzkxqtsmghoNTxsMxbjdoeTReH8cFyYzu/NZE/2qrV?= =?us-ascii?Q?dbeNv59moHY9jCzE0xBI6G67RjLHBbuoO/HDVdG0Y7GWBaS4qEVsHGAhgcar?= =?us-ascii?Q?doj5VPkFbMbhda18SSphujAE5mzEosCDPi3b8+BVbUSxSvtPAJScZ7DCMc3Z?= =?us-ascii?Q?fYUtKxro5ntuMUwcbNxHt1UkFU3BOSb7WYnn7CfeR57DbSAXMvoVmeq6rsYp?= =?us-ascii?Q?eygwI+y5FLGhQ9D6hRcR/CFodaMUz/PhOrCEB8LjNZgFa2SGJ/q7iWJVaOR5?= =?us-ascii?Q?9AA9k6/W45867K9PmvgTLW42ziGu3g/5mvpoUwr8Y99xwTPHhCLAJDXM4k9H?= =?us-ascii?Q?GMHM8GF1jRVAWSLDy5v+Sn2Vim2/je8wamZ4buDqHolzushezfD0J13BpFA7?= =?us-ascii?Q?X2nKdwJR3v/SD8y2coHqJt4AV4CTprNMb4eprz8gh9wZuSASDrjXsot1L6gG?= =?us-ascii?Q?TbzCg9KJrYa21c7ZzZbFGAiPoA+5l1mv0/siF/qlMdqXXP0eZ4R2EKgf+CJe?= =?us-ascii?Q?b9/TVkQpyyFUP2+IhHkkSR/mGQSSzVaqvpfFqvcuXhozx4x3RcH79CPrTqte?= =?us-ascii?Q?4QaYNpxuu69n6zag9ZlzFWuF5nOUaHbpFR7XVw3hwQUXvk/7n0Geek3Bz9md?= =?us-ascii?Q?LZIRwghpO+H383Mbjf4YkxopZEFPnPmdWU/o0WavjvI0vfzRWpP0JbAz2p/i?= =?us-ascii?Q?CQmMqH97u+WxVvqqLCcksKA3SrMVLTHcrcX0iolABRY89YXLIJqm7g9JLuMP?= =?us-ascii?Q?+tRJnXRpDmsN5rB5uadcZq1xDp2NcMhONhQmQ7OhE3r71/3jSt8NC9OZeo10?= =?us-ascii?Q?lTvDTyUbDCCdTpwdLGJrhgdd77EbVPTxVu7gyHaXL8oyIW07Tfkj2/szpaRd?= =?us-ascii?Q?vY9yo3KzqJbzWUNKHi4V+Gc+iUW/lzHpJD+ZbBaWU7vkt59M6QtpMIVBL9p4?= =?us-ascii?Q?6Ehco1zJ71izdlSRQL2FZs/9mweBHiLYVObdE2s0ZZCQSPYHg4CjHIFoeH6U?= =?us-ascii?Q?Rg=3D=3D?= X-OriginatorOrg: suse.com X-MS-Exchange-CrossTenant-Network-Message-Id: ee081ee6-c983-4c77-e215-08daac0c0bf3 X-MS-Exchange-CrossTenant-AuthSource: HE1PR0402MB3497.eurprd04.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 12 Oct 2022 04:41:37.0838 (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: Vcfv7HCeyyoEIEp8rfl0oFipPkP5/cDZDO0evdoTL9qBqp76CDewWNINSabX2xpM0ctQJIjjBQTOPQcRraRBJQ== X-MS-Exchange-Transport-CrossTenantHeadersStamped: PAXPR04MB8814 Content-Type: text/plain; charset="utf-8" Use last_snd instead of msk->last_snd, then last_snd of struct mptcp_sock could be removed. Signed-off-by: Geliang Tang --- tools/testing/selftests/bpf/bpf_tcp_helpers.h | 1 - tools/testing/selftests/bpf/progs/mptcp_bpf_rr.c | 6 ++++-- 2 files changed, 4 insertions(+), 3 deletions(-) diff --git a/tools/testing/selftests/bpf/bpf_tcp_helpers.h b/tools/testing/= selftests/bpf/bpf_tcp_helpers.h index c7d4a9a69cfc..c8792e6f125a 100644 --- a/tools/testing/selftests/bpf/bpf_tcp_helpers.h +++ b/tools/testing/selftests/bpf/bpf_tcp_helpers.h @@ -257,7 +257,6 @@ struct mptcp_sched_ops { struct mptcp_sock { struct inet_connection_sock sk; =20 - struct sock *last_snd; __u32 token; struct sock *first; char ca_name[TCP_CA_NAME_MAX]; diff --git a/tools/testing/selftests/bpf/progs/mptcp_bpf_rr.c b/tools/testi= ng/selftests/bpf/progs/mptcp_bpf_rr.c index ce4e98f83e43..b7156f6aae8b 100644 --- a/tools/testing/selftests/bpf/progs/mptcp_bpf_rr.c +++ b/tools/testing/selftests/bpf/progs/mptcp_bpf_rr.c @@ -5,6 +5,7 @@ #include "bpf_tcp_helpers.h" =20 char _license[] SEC("license") =3D "GPL"; +struct sock *last_snd =3D NULL; =20 SEC("struct_ops/mptcp_sched_rr_init") void BPF_PROG(mptcp_sched_rr_init, const struct mptcp_sock *msk) @@ -22,10 +23,10 @@ void BPF_STRUCT_OPS(bpf_rr_get_subflow, const struct mp= tcp_sock *msk, int nr =3D 0; =20 for (int i =3D 0; i < MPTCP_SUBFLOWS_MAX; i++) { - if (!msk->last_snd || !data->contexts[i]) + if (!last_snd || !data->contexts[i]) break; =20 - if (data->contexts[i]->tcp_sock =3D=3D msk->last_snd) { + if (data->contexts[i]->tcp_sock =3D=3D last_snd) { if (i + 1 =3D=3D MPTCP_SUBFLOWS_MAX || !data->contexts[i + 1]) break; =20 @@ -35,6 +36,7 @@ void BPF_STRUCT_OPS(bpf_rr_get_subflow, const struct mptc= p_sock *msk, } =20 mptcp_subflow_set_scheduled(data->contexts[nr], true); + last_snd =3D data->contexts[nr]->tcp_sock; } =20 SEC(".struct_ops") --=20 2.35.3