From nobody Sun Apr 28 17:29:10 2024 Delivered-To: wpasupplicant.patchew@gmail.com Received: by 2002:a50:bae3:0:0:0:0:0 with SMTP id x90csp694626ede; Thu, 17 Mar 2022 04:05:04 -0700 (PDT) X-Google-Smtp-Source: ABdhPJyc7l41jZzpmeSlFd6FQLcVHg2bf59JzwcuCqhVr2Tvt2LYo53CNn2/N2uS0oylKy/emUkj X-Received: by 2002:a05:6512:1698:b0:448:872b:4425 with SMTP id bu24-20020a056512169800b00448872b4425mr2488947lfb.377.1647515104289; Thu, 17 Mar 2022 04:05:04 -0700 (PDT) Return-Path: Received: from ewr.edge.kernel.org (ewr.edge.kernel.org. [147.75.197.195]) by mx.google.com with ESMTPS id i3-20020a056512340300b00448a11dcf6esi4543437lfr.360.2022.03.17.04.05.04 for (version=TLS1_2 cipher=ECDHE-ECDSA-AES128-GCM-SHA256 bits=128/128); Thu, 17 Mar 2022 04:05:04 -0700 (PDT) Received-SPF: pass (google.com: domain of mptcp+bounces-4277-wpasupplicant.patchew=gmail.com@lists.linux.dev designates 147.75.197.195 as permitted sender) client-ip=147.75.197.195; Authentication-Results: mx.google.com; dkim=pass header.i=@suse.com header.s=mimecast20200619 header.b=GDlqoAC5; arc=fail (body hash mismatch); spf=pass (google.com: domain of mptcp+bounces-4277-wpasupplicant.patchew=gmail.com@lists.linux.dev designates 147.75.197.195 as permitted sender) smtp.mailfrom="mptcp+bounces-4277-wpasupplicant.patchew=gmail.com@lists.linux.dev"; dmarc=pass (p=QUARANTINE sp=QUARANTINE dis=NONE) header.from=suse.com Received: from smtp.subspace.kernel.org (wormhole.subspace.kernel.org [52.25.139.140]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by ewr.edge.kernel.org (Postfix) with ESMTPS id 224AB1C0B41 for ; Thu, 17 Mar 2022 11:05:02 +0000 (UTC) Received: from localhost.localdomain (localhost.localdomain [127.0.0.1]) by smtp.subspace.kernel.org (Postfix) with ESMTP id ADFA83FC7; Thu, 17 Mar 2022 11:05:00 +0000 (UTC) X-Original-To: mptcp@lists.linux.dev Received: from de-smtp-delivery-102.mimecast.com (de-smtp-delivery-102.mimecast.com [194.104.109.102]) (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 168292F38 for ; Thu, 17 Mar 2022 11:04:58 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=suse.com; s=mimecast20200619; t=1647515097; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=8mCTpTt5GMaNI4IT5rhV/RB8K3kk2qV1QJaBS4N1spE=; b=GDlqoAC5XFwC5cJEx+Ofpb2FRM1DvMK5cYbBDTz4nUIcBoheSBGBAbXvLgADfhhun5Ok0e EmdWWa1udd449WBor6WvS+NnYlVV2l4L0poDY9VPO9NCO3hDkT4fP80GiwFKKRLStXo8BF m87+5matgbysqaTS5AJRhNllndSEfk0= Received: from EUR05-AM6-obe.outbound.protection.outlook.com (mail-am6eur05lp2113.outbound.protection.outlook.com [104.47.18.113]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id de-mta-17-7p2pUvYWMMiBGyM_FIqQfg-2; Thu, 17 Mar 2022 12:04:55 +0100 X-MC-Unique: 7p2pUvYWMMiBGyM_FIqQfg-2 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=A5MdqInI1ANxSN8vul8Tga9nprB3lKgWCwTqJTLs4M9k6AMN1fVsuTedYVTkbjmewjUJIZSKwFW+KgcgQaTgaU+w4Zj7zdq1Wi797NO4CH8KjwloqPY352XUsvoiOzwgBTbvDaR4iTF6W9X6dOu7KqGUMFvajetZjTTb6Qj771mO27aJ7ak+HphZFKIXN6hGoYFC5pnmxVS4HwQOhOKFku/h0i2Z1Gq8YKigZ6TgQi0AV8LhaxNAJ+l7YxoqJrftd44Qd5lj0cr7qpNmBUydzliOKCnxEbB24hv84XgUShr/TnwjihmHN9nA86n3yDp3B9vP2li4oQJXR+gwJmsfnw== 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=uOaGNkiDFkW2us/y4FUYH259Tr4/9+TJSJvlDtxae/A=; b=dNMvykV2cO7i9r2zjIGeSyz8SnFAgCSdIViaRuMPqYA9LujVY/lPgU2PyIXbNIyWPr+dO8EV6lg3BmNjCYp9Oa+KK24wY/CzsQXC5EMIW5PFcqZRImunrb7H+4tTFeGUoonQRxQqz8mPEkDkNnEo8PcDEIXryMMx9g/J7QqBn8ISaEfrGLFkKwzVHNMCqA8nVRkZGmPjAmeOgJgN/vDFoL70RxVV1urDa59r2vGQS0OY8KSfsYoU19k3GEpK6/j+w5bzpi+g1kMqst+cFJNWX3dH8s5Fj8hlZ3iTKBSQ4TFCqrnfhX6sr4MFgSoQxzHpGST3kLB0dugrLZ8zrqtVpA== 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 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 VI1PR04MB4462.eurprd04.prod.outlook.com (2603:10a6:803:65::30) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5081.17; Thu, 17 Mar 2022 11:04:54 +0000 Received: from HE1PR0402MB3497.eurprd04.prod.outlook.com ([fe80::b110:cb51:e09f:bb05]) by HE1PR0402MB3497.eurprd04.prod.outlook.com ([fe80::b110:cb51:e09f:bb05%6]) with mapi id 15.20.5081.017; Thu, 17 Mar 2022 11:04:54 +0000 From: Geliang Tang To: mptcp@lists.linux.dev CC: Geliang Tang Subject: [PATCH mptcp-next 1/5] mptcp: add a new sysctl scheduler Date: Thu, 17 Mar 2022 19:04:42 +0800 Message-ID: <23bdbd0af9f498a2d6fd3964acd694ab5f7edb60.1647514852.git.geliang.tang@suse.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: References: Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: HK2PR02CA0164.apcprd02.prod.outlook.com (2603:1096:201:1f::24) To HE1PR0402MB3497.eurprd04.prod.outlook.com (2603:10a6:7:83::14) Precedence: bulk X-Mailing-List: mptcp@lists.linux.dev List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: d06e93dd-e65c-4ad9-3ed1-08da0805f764 X-MS-TrafficTypeDiagnostic: VI1PR04MB4462:EE_ X-Microsoft-Antispam-PRVS: X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: x+/vazowaE1vawpmq6v9uGx/rHKsgC0z6v0Ns89fSADm+rh5zTsBBSB9iCO5YUi6ONUG17hJCrfkezt8jDSoaXT7kDahbEkG11+W/GV/SYW+t5dV4cX2pseXPWDF5C3jhdyB7R8sS8MjhVEm+yUiSzvcMDNeVTgVO2/GBMcJeByX5uBlMysHeAhP9uFCm3pQIEAnCdNlINJD8CTKdKQ+t427AebZU6kpycosSg2dkIxSm0zy5TYHx5GC1UMEWQM2WcEWlsuVyUbl7bHv6MHg9VhNL97DcFFuC9VqMYpL85QhLgQrKLQMEvTLaShrAR9rZlkdR24DApq3BvDi2rIJdGxs84oVz3O2EN7oO54wv5FnHAJtldCSkBx/XtaxJRYuNulMNHd0+p1e7GjYGfJQ3sEHv1yrTKVwjr+emF1tzQtTETfIbtdriJGR3Au0WZ0liksnNt7L5HO+7JG14VkNCpB6Y9d+klqAogzspCBa4VRIyGfZJnyy6OPuQm7h81kaK9aQFjM8Ql34O9jJDR5vlBVtdg9q9X1puWuqY4dGSnyhGBxkXPEZ9xfK6Gn/fSC7xpRq9DwhoyYEVo98WNr6ouY8wShyNjpSf/4oNNwLG9brSqn2bOty8KoOfV1z0LEx2zpSsTdvDti4MuQopARmgk7pKkxWjU+J+ZE68qJrpEYwH+qbcUOaps/1t2auAxsw 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:(13230001)(366004)(8676002)(6666004)(4326008)(36756003)(2906002)(5660300002)(107886003)(508600001)(8936002)(66946007)(66556008)(66476007)(6506007)(44832011)(38100700002)(86362001)(26005)(186003)(316002)(6512007)(6916009)(2616005)(6486002)(13296009);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?H7Heez3frd/QKRaow4GvJwVcb+rjI1zZU4Rh45F+8ixBQB9NRd39VeZSMNsL?= =?us-ascii?Q?pjTBJuhA4KeiBj2Bz5VKfr6LAGEwuZYdawpIT+0T+A6r0V85tu91xBuAKC3A?= =?us-ascii?Q?NdKqD63ejM9prgWCPNTfDJYXxRnW5TvlTqqWtb/Qs//rhHh0ahuDwl5hH4qL?= =?us-ascii?Q?ZVs6CNfencEG2tBCUAJgsTsyPa5mUzCTBiVLoUef35sjtJqxHd5xsrD955y4?= =?us-ascii?Q?Ku2PbsCeL1uA3hHreaP4xvTPWflz/I6WuUuIKYH7pcFp8YInh4wQBR1OkDYU?= =?us-ascii?Q?7TucNk8EErKdDejM2N/q3mvVJ6uXEhsErETK4FdEf1MBt8JNkkQqhLVuTsEL?= =?us-ascii?Q?X/Cvo3OZ25OWzcUzUmXyeARpx62nRFtyB1C0bzgZn7PrPlCRfdmapfI8y/hs?= =?us-ascii?Q?Yiay5msVrdtA81qESkbOCa5a3fhUqPeHfpdn1/FIfBy6R9UUNw5llOo3sjn/?= =?us-ascii?Q?+EeekLU6V8aT+pqE/IvIN2pm7wDg/CvNtksKJUoDYDSMbont58x1uXBWJAd6?= =?us-ascii?Q?Xy9lmn9ONfMyXNm06WZmEJYhgBl4+IEPs2XXj5+yPP3XAhPJCg0bV6dtFR2E?= =?us-ascii?Q?VYtXBAHizy8v9RashwujsBT9+QgGfSdrF7DttcGBSSavFJ7XFyOkI6KtQt2I?= =?us-ascii?Q?hq62vcGyiEEUHFqxr0cGHi1OuZq4qp6OqppKI2Kijby8TwYCW1mAugLrGgi3?= =?us-ascii?Q?Vmz5veQkXtPl5ZAXBebb7X4bqOcdk/p1N/UwFRRpAh+JWXWhhAqNSpt2/nUN?= =?us-ascii?Q?uZORY1eFHMBZ0Gp/CFv99nlsGmBLaeqDoyOB0YF2avxid+ujqXijtvJYp4g2?= =?us-ascii?Q?AmevHrPecBntY2LEkYk/WPY4RkOveibb9XcQ9zR4xeU67ukEvqlQ7BsAEKxD?= =?us-ascii?Q?Xq4VivfWNocWXtZCqDvDTy4w0X01HsXZZbWcbeApTr3ZPjaPHf6qdXkf6iQd?= =?us-ascii?Q?6JP6bzcRRo8xtGmehb+a3FjA3NTsCOjwD3dE6hO2BG91AS0FBDb+XBXHopna?= =?us-ascii?Q?aAc+tH6m5EEwLitOVAny6JnlaaPgnh/0bWRJ71uE0AJ+uvpHbnonzKadmHp3?= =?us-ascii?Q?TIipM35eWtYSbci1qecDWk9gQrajHs1smqxFTAFldSHW5VugSRpjLjT7SUZ4?= =?us-ascii?Q?7u8xTIl9P9uLcsJ3+yoO7DvO0ueb1fjPzYylj2G5tYat/zSYQhl5swTbjEvl?= =?us-ascii?Q?d1eNXixytlryEP2ilsWGZSVZZrStblSbF6mj/MQ2e7CUmxAQtWHcOj1OmN+G?= =?us-ascii?Q?QoctmU2Cg0Kx/7M/292dsrYyGScpWKxd9/eNMh0OcutuxVF3LpG6kVqxdmFO?= =?us-ascii?Q?p9ZMJhAICyZvUj2WlKthTxibh0S+wG7LZcsosbYVBTbKOhKR13wsE0XFogkK?= =?us-ascii?Q?xWpUNN1ILGPAvWxbqpA9Xh9lJ8G4IKse6Y73zU1bvZL7CM7HwFXOpjkVK6Oy?= =?us-ascii?Q?AYNoQ4QjzG9WJZeruETBWN4iq9UOmJUycJUdZKFwSib4c3csOGxRPA=3D=3D?= X-OriginatorOrg: suse.com X-MS-Exchange-CrossTenant-Network-Message-Id: d06e93dd-e65c-4ad9-3ed1-08da0805f764 X-MS-Exchange-CrossTenant-AuthSource: HE1PR0402MB3497.eurprd04.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 17 Mar 2022 11:04:54.6309 (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: sag9F9cm3IsYd7xRgjqvyYvOeWYV68yj3QfWEod/zDZhtceStQ6e1+bORZfEeJBTKc6C2HFcirlQfaEMi7gj3w== X-MS-Exchange-Transport-CrossTenantHeadersStamped: VI1PR04MB4462 Content-Type: text/plain; charset="utf-8" This patch added a new sysctl, named scheduler, to support for selection of different schedulers. Signed-off-by: Geliang Tang --- Documentation/networking/mptcp-sysctl.rst | 8 ++++++++ include/net/mptcp.h | 2 ++ net/mptcp/ctrl.c | 14 ++++++++++++++ net/mptcp/protocol.h | 1 + 4 files changed, 25 insertions(+) diff --git a/Documentation/networking/mptcp-sysctl.rst b/Documentation/netw= orking/mptcp-sysctl.rst index e263dfcc4b40..d9e69fdc7ea3 100644 --- a/Documentation/networking/mptcp-sysctl.rst +++ b/Documentation/networking/mptcp-sysctl.rst @@ -75,3 +75,11 @@ stale_loss_cnt - INTEGER This is a per-namespace sysctl. =20 Default: 4 + +scheduler - STRING + Select the scheduler of your choice. + + Support for selection of different schedulers. This is a per-namespace + sysctl. + + Default: "default" diff --git a/include/net/mptcp.h b/include/net/mptcp.h index 8b1afd6f5cc4..2dde95412fc3 100644 --- a/include/net/mptcp.h +++ b/include/net/mptcp.h @@ -284,4 +284,6 @@ static inline int mptcpv6_init(void) { return 0; } static inline void mptcpv6_handle_mapped(struct sock *sk, bool mapped) { } #endif =20 +#define MPTCP_SCHED_NAME_MAX 16 + #endif /* __NET_MPTCP_H */ diff --git a/net/mptcp/ctrl.c b/net/mptcp/ctrl.c index ae20b7d92e28..4e0811969d8c 100644 --- a/net/mptcp/ctrl.c +++ b/net/mptcp/ctrl.c @@ -32,6 +32,7 @@ struct mptcp_pernet { u8 checksum_enabled; u8 allow_join_initial_addr_port; u8 pm_type; + char scheduler[MPTCP_SCHED_NAME_MAX]; }; =20 static struct mptcp_pernet *mptcp_get_pernet(const struct net *net) @@ -69,6 +70,11 @@ int mptcp_get_pm_type(const struct net *net) return mptcp_get_pernet(net)->pm_type; } =20 +char *mptcp_get_scheduler(struct net *net) +{ + return mptcp_get_pernet(net)->scheduler; +} + static void mptcp_pernet_set_defaults(struct mptcp_pernet *pernet) { pernet->mptcp_enabled =3D 1; @@ -77,6 +83,7 @@ static void mptcp_pernet_set_defaults(struct mptcp_pernet= *pernet) pernet->allow_join_initial_addr_port =3D 1; pernet->stale_loss_cnt =3D 4; pernet->pm_type =3D MPTCP_PM_TYPE_KERNEL; + strcpy(pernet->scheduler, "default"); } =20 #ifdef CONFIG_SYSCTL @@ -128,6 +135,12 @@ static struct ctl_table mptcp_sysctl_table[] =3D { .extra1 =3D SYSCTL_ZERO, .extra2 =3D &mptcp_pm_type_max }, + { + .procname =3D "scheduler", + .maxlen =3D MPTCP_SCHED_NAME_MAX, + .mode =3D 0644, + .proc_handler =3D proc_dostring, + }, {} }; =20 @@ -149,6 +162,7 @@ static int mptcp_pernet_new_table(struct net *net, stru= ct mptcp_pernet *pernet) table[3].data =3D &pernet->allow_join_initial_addr_port; table[4].data =3D &pernet->stale_loss_cnt; table[5].data =3D &pernet->pm_type; + table[6].data =3D &pernet->scheduler; =20 hdr =3D register_net_sysctl(net, MPTCP_SYSCTL_PATH, table); if (!hdr) diff --git a/net/mptcp/protocol.h b/net/mptcp/protocol.h index c8bada4537e2..c36b9c40c314 100644 --- a/net/mptcp/protocol.h +++ b/net/mptcp/protocol.h @@ -583,6 +583,7 @@ int mptcp_is_checksum_enabled(const struct net *net); int mptcp_allow_join_id0(const struct net *net); unsigned int mptcp_stale_loss_cnt(const struct net *net); int mptcp_get_pm_type(const struct net *net); +char *mptcp_get_scheduler(struct net *net); void mptcp_subflow_fully_established(struct mptcp_subflow_context *subflow, struct mptcp_options_received *mp_opt); bool __mptcp_retransmit_pending_data(struct sock *sk); --=20 2.34.1 From nobody Sun Apr 28 17:29:10 2024 Delivered-To: wpasupplicant.patchew@gmail.com Received: by 2002:a50:bae3:0:0:0:0:0 with SMTP id x90csp694673ede; Thu, 17 Mar 2022 04:05:11 -0700 (PDT) X-Google-Smtp-Source: ABdhPJyMGd6W/fBCSN/C+dqQGIOLIIWL8fzMcfizafbrPrJYWnfrwf/u43JLMpWCljkVVyMSNh/0 X-Received: by 2002:ac2:4184:0:b0:442:ab70:14d6 with SMTP id z4-20020ac24184000000b00442ab7014d6mr2544420lfh.229.1647515111549; Thu, 17 Mar 2022 04:05:11 -0700 (PDT) Return-Path: Received: from ewr.edge.kernel.org (ewr.edge.kernel.org. [147.75.197.195]) by mx.google.com with ESMTPS id d15-20020a05651c088f00b0024936db9dc2si3422356ljq.504.2022.03.17.04.05.11 for (version=TLS1_2 cipher=ECDHE-ECDSA-AES128-GCM-SHA256 bits=128/128); Thu, 17 Mar 2022 04:05:11 -0700 (PDT) Received-SPF: pass (google.com: domain of mptcp+bounces-4278-wpasupplicant.patchew=gmail.com@lists.linux.dev designates 147.75.197.195 as permitted sender) client-ip=147.75.197.195; Authentication-Results: mx.google.com; dkim=pass header.i=@suse.com header.s=mimecast20200619 header.b=Q2eho3Yq; arc=fail (body hash mismatch); spf=pass (google.com: domain of mptcp+bounces-4278-wpasupplicant.patchew=gmail.com@lists.linux.dev designates 147.75.197.195 as permitted sender) smtp.mailfrom="mptcp+bounces-4278-wpasupplicant.patchew=gmail.com@lists.linux.dev"; dmarc=pass (p=QUARANTINE sp=QUARANTINE dis=NONE) header.from=suse.com Received: from smtp.subspace.kernel.org (wormhole.subspace.kernel.org [52.25.139.140]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by ewr.edge.kernel.org (Postfix) with ESMTPS id 5040E1C0B18 for ; Thu, 17 Mar 2022 11:05:10 +0000 (UTC) Received: from localhost.localdomain (localhost.localdomain [127.0.0.1]) by smtp.subspace.kernel.org (Postfix) with ESMTP id F1BD63FC7; Thu, 17 Mar 2022 11:05:08 +0000 (UTC) X-Original-To: mptcp@lists.linux.dev Received: from de-smtp-delivery-102.mimecast.com (de-smtp-delivery-102.mimecast.com [194.104.111.102]) (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 ECC562F38 for ; Thu, 17 Mar 2022 11:05:06 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=suse.com; s=mimecast20200619; t=1647515105; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=UYT5h+Xz2FDHu39DZCQ/GHp2DAN3NBjKvtOMDc1S0Ds=; b=Q2eho3YqipwYCB6z1pRWhaHusIeDF42HD4KWq2839wVQCEZXpLrqzLOSnm3rOMlPhsEDJl xNSLS6NUR4WWhhU9v7XAuwXNkpEKSfBEEpR+DrDmOGFCEI2sCSTgSQr/TfizSLndduHV/3 QNq8UwF7bS4JTj5KIMfHj9mpv27OezI= Received: from EUR05-DB8-obe.outbound.protection.outlook.com (mail-db8eur05lp2113.outbound.protection.outlook.com [104.47.17.113]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id de-mta-16-xXhGi3EyMeKrdZOj9OtYkw-1; Thu, 17 Mar 2022 12:05:03 +0100 X-MC-Unique: xXhGi3EyMeKrdZOj9OtYkw-1 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=Fzz1r0/58gmoe9EsLTAgU7Op13hPUboxps/VQtD8+kOiP19l5s2actU1OhTNau1rj0+2qtM+CQj7OK4Em0dKBkBB1xY1qx8bZIm7Cl6FJ0KEk360DTa1A6ZMFXLFhcw/IhRN5KPUP1REH4Vzz8QNX6XDLDT3rxXpXUWaCWG4RkP6652rUybs9miJL+NfTmpU+G3Hy0ywi4YFuYya34l7WLMZmC7eFwGROvbOzGR4+iR5dVk3vxoFv1WTo8HlsuhGKos65aQKBxgUwIzbbzmPovocqHnBB6pjlAOMl5Kfxilv8K148WOq8KQhqnftIUY+BliZKMfWRnxGASiAbH5e9w== 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=GH3LUR+8TvoKnK7xyA9z4kW1v09xrwNt0JS3kJO7+TE=; b=j7WD464IsA3YfL0LTCMUW3B6iZfvwPjrkteCMMydMW9wF91TEsufy0oR8LaVYMyFsnyiYD6dEcnZS67gFhz4cgUvGMuTchjktMMUl0OTUngfUdXlePe0tovTD3WNVke31VAON475DTVqNgic3gkTawbmRy/vZCYKxNmaOdgJA8DV0WzChzRTVwzWBE1iLy5EkhJV/tIQzWcssGAdOvQG+7aq+ygMvY0r9HnJKz8OgaKIHjzQlAi59GrTlSGHatwehfZhgR4uEpoX96k5RiNYbF4/RdpsDjJ54nK3m9vD6gRKnwaIVUj2uvMxoq6d2o9CKUNC94Tx/mkWfoRpco3pHg== 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 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 VI1PR04MB6256.eurprd04.prod.outlook.com (2603:10a6:803:f5::21) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5081.17; Thu, 17 Mar 2022 11:05:01 +0000 Received: from HE1PR0402MB3497.eurprd04.prod.outlook.com ([fe80::b110:cb51:e09f:bb05]) by HE1PR0402MB3497.eurprd04.prod.outlook.com ([fe80::b110:cb51:e09f:bb05%6]) with mapi id 15.20.5081.017; Thu, 17 Mar 2022 11:05:01 +0000 From: Geliang Tang To: mptcp@lists.linux.dev CC: Geliang Tang Subject: [PATCH mptcp-next 2/5] mptcp: add struct mptcp_sched_ops Date: Thu, 17 Mar 2022 19:04:43 +0800 Message-ID: X-Mailer: git-send-email 2.34.1 In-Reply-To: References: Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: HK2PR02CA0172.apcprd02.prod.outlook.com (2603:1096:201:1f::32) 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-Office365-Filtering-Correlation-Id: 96071beb-cecd-4ed8-894d-08da0805fb2e X-MS-TrafficTypeDiagnostic: VI1PR04MB6256:EE_ X-Microsoft-Antispam-PRVS: X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: 814FkP7L7+U3PVPLShf0QvfxpLE7nfcV35a9EJ9Lsu1XyV719Ttn05dKjzAljUNMIZ7GwG2QBda3EtuOIb459OP71eLieONfdIhKIj+8tSOQPzRD4/OgxW6vWNW5QqHXSS9/47rnpL1R7PGDFOfRXstF7zO4AS+v3n8Mt8flVKvXfxlQiOR1Re5VJqKnovDo9R0N6KULFlZmHkUYKpJHc29r2XuX9hn5I0zB7yM1SoZSBZTjTBok1Zw69JLMzhome8bkfMn01msdjxLFVPuBpx5Gqp9yUoOn48HG/DDudx9hCVrPsbOhC5iHLUChueCXuKRSstnXVbRVw5+3t4ilBvfkFZCxZj0bTcPvgoo5I7hitqWlX9GBCB8kMbkFesdDTKFn/BP6gzuumjQ083C2l6N9HqdpgJaxmw+RVzh1hZ5yTlCeKPBIooYP4XqkwiMR4E+Jm6pyjaoZeHsM334nAUrRIG9y/SmT3TU2TKTsKnPBlUz4prmclZDIIWyeCTGFpRuOjY0YlAMmsGwba57lQTehveXEjVV/7H8Qm8D3aOcnCYcNoWuAcHi4yFOqBccin5Pm61+K8HQm8KF6ENQeWxjLqtXWlpnEVc7NenOGd/cBR6QiAiyikob7X7SYqdsSCITIPFYNdSFOoGoXEvSrBCDClfeZ+z2lUODNOBLvDqm0oJssY2v4y/2NzVtDEQTj 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:(13230001)(366004)(6512007)(316002)(8676002)(2616005)(107886003)(26005)(186003)(38100700002)(4326008)(2906002)(6666004)(6506007)(66476007)(66556008)(6916009)(66946007)(86362001)(44832011)(83380400001)(508600001)(8936002)(36756003)(6486002)(5660300002)(13296009);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?5Ac/ZlhwL5eb3cnfr7C/LxG9pbr7tXrrR+aGLPuBDLPTCYOS3VEiVNxCAXSm?= =?us-ascii?Q?l4bs4vvSmk467ouFiNKGsuYfQ4VCGfDowXRXI1iz/22SmGbncfhTAekMNMDe?= =?us-ascii?Q?z6tXwtMk1K/+ZuNMYwF001/ou5qhs0E3TTAeQLRX00PM7N2UVKdEL6wkMSCO?= =?us-ascii?Q?QqIfC3SzlSnI14EcX4M+uvG2vHx1fD4lRfr0Wi/DWidaKWzNQ+RkoLaBrbUU?= =?us-ascii?Q?BbJYqXdYab4tt1l46+dadQDaHw0QNPvOAT3oBFR8l2coot3QRXaC7Za3MB1A?= =?us-ascii?Q?kodYTcaml0KQobBaCcMjz/uwlQbkjcxMJ2jCYzNAD9fZ3rvNjm40rg5R/WXY?= =?us-ascii?Q?mP/owJ7z+uk3VbvI+V+W299ptwO10m60fJzOk1YUVzNJmZZPUBOq3YJK3qbs?= =?us-ascii?Q?wvzETRNnpi92z0gIXrLMpPw8pabXAqb9iXWNsV2lCvhV8HfucJhWYW6kxHDz?= =?us-ascii?Q?QYeg8tj9F9eg5cWrdmk9wzCt62xMIdNTk8L/hYH2wtLXMtcmnn/962Dxprpi?= =?us-ascii?Q?hwRRJWntEZkCm6LmKCa0LXBa/7DYvnD3mgwYZ+UGcqiZX1cXRuF2XzvQZTaz?= =?us-ascii?Q?mnaYouxBxAFGGvWuGvZNY2tCXI22IORqgec7GXOLWWcklOLuHXosbsxuTmbR?= =?us-ascii?Q?xDhKBasbKDMZl1Dm25klpmTWp6eaicoK/CXJ55PWIz521gK/TZ/qK4HIxx6w?= =?us-ascii?Q?Ju/GgF28rZkhuMd4JuyhIvHEvT56U0PsnwmIKk4A7cDEk+r4ixpLKYv8y2Kg?= =?us-ascii?Q?8k6zRehYNTENK+7ImHs8BZSK1Xx5+KsVAGBKNM7+kBSTCkDj2F9VtCEHUwNR?= =?us-ascii?Q?ReTbl49sunLoBFunBTtFRPa3aPqtiuKVtW76G3EqpBc1nb/af3O+HHHQW1tn?= =?us-ascii?Q?mLbmp8jBtSoTdbjZiT106wRxNKYO7W6E9Shg7WSND2L9hTMX2likxR3aZsXY?= =?us-ascii?Q?2g8UqixggyGdZ7mfP3jaWnRx6lcIoYLfqoBbws6PcG62ErMAYxGm0e2IydBP?= =?us-ascii?Q?tGWCucfFTQpxMCC4y5T8xNJyI/C20wzlc1EH7AObgBkxRBm+m90Y2Sjx4z/L?= =?us-ascii?Q?DM0y8dsmzFZoscEKf6uGKN7l/cagMG2pOAxvbhqr4x+UmU42BHErpX5upQU/?= =?us-ascii?Q?raMQ3Id99hrP70LIPkPG3TmBDTydA9AV/YqxNbnuuc2Gp/BO6iyvWc8azKRD?= =?us-ascii?Q?WJ+bY7zHGEgsuEsGfS45Wqy8o/OMP69IJcMI1Fq7P6mwhEahHZR7PZ4DAKgS?= =?us-ascii?Q?anJd6HKsg+O3EaFgF5bd7xvq0Mz0DdZLTTDki8D1d63EvSXpjJ1h7hmf+yFM?= =?us-ascii?Q?3jEpq2WndXdiydM3hmA7omXsW3qhlJ9kALdQP1ypq1cm0cq4+tpVbrP6IND1?= =?us-ascii?Q?BI3kbpPkslDG+R7xExcmlBav90eEbQWtgm8H28K5iWk2gIIELoS2gmmy3i35?= =?us-ascii?Q?+58zu9JU9348RKDa3yqbMw2eM/s90UlGzg80h0l/p0LBZelb6ljKKA=3D=3D?= X-OriginatorOrg: suse.com X-MS-Exchange-CrossTenant-Network-Message-Id: 96071beb-cecd-4ed8-894d-08da0805fb2e X-MS-Exchange-CrossTenant-AuthSource: HE1PR0402MB3497.eurprd04.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 17 Mar 2022 11:05:00.9742 (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: W0tCZcM6ECA/BSbC5ebrOyfpSv+ZfjdkNZHXsNiQfRaBeoFzvDeKbNobWg+KdOSH1j7ByY4AGlJbd4xZ7yt01w== X-MS-Exchange-Transport-CrossTenantHeadersStamped: VI1PR04MB6256 Content-Type: text/plain; charset="utf-8" This patch added struct mptcp_sched_ops. And define the scheduler init, register and find functions. Signed-off-by: Geliang Tang --- include/net/mptcp.h | 13 +++++++ net/mptcp/Makefile | 2 +- net/mptcp/protocol.c | 12 ++++-- net/mptcp/protocol.h | 8 ++++ net/mptcp/sched.c | 89 ++++++++++++++++++++++++++++++++++++++++++++ 5 files changed, 119 insertions(+), 5 deletions(-) create mode 100644 net/mptcp/sched.c diff --git a/include/net/mptcp.h b/include/net/mptcp.h index 2dde95412fc3..bf7f4ba00424 100644 --- a/include/net/mptcp.h +++ b/include/net/mptcp.h @@ -286,4 +286,17 @@ static inline void mptcpv6_handle_mapped(struct sock *= sk, bool mapped) { } =20 #define MPTCP_SCHED_NAME_MAX 16 =20 +struct mptcp_sched_ops { + struct sock * (*get_subflow)(struct mptcp_sock *msk); + + char name[MPTCP_SCHED_NAME_MAX]; + struct module *owner; + struct list_head list; + + /* initialize private data (optional) */ + void (*init)(struct sock *sk); + /* cleanup private data (optional) */ + void (*release)(struct sock *sk); +} ____cacheline_aligned_in_smp; + #endif /* __NET_MPTCP_H */ diff --git a/net/mptcp/Makefile b/net/mptcp/Makefile index 0a0608b6b4b4..aa5c10d1b80a 100644 --- a/net/mptcp/Makefile +++ b/net/mptcp/Makefile @@ -3,7 +3,7 @@ obj-$(CONFIG_MPTCP) +=3D mptcp.o ccflags-y +=3D -DDEBUG =20 mptcp-y :=3D protocol.o subflow.o options.o token.o crypto.o ctrl.o pm.o d= iag.o \ - mib.o pm_netlink.o sockopt.o + mib.o pm_netlink.o sockopt.o sched.o =20 obj-$(CONFIG_SYN_COOKIES) +=3D syncookies.o obj-$(CONFIG_INET_MPTCP_DIAG) +=3D mptcp_diag.o diff --git a/net/mptcp/protocol.c b/net/mptcp/protocol.c index fbb14dfe62b3..2250b1c11e9b 100644 --- a/net/mptcp/protocol.c +++ b/net/mptcp/protocol.c @@ -1424,7 +1424,7 @@ bool mptcp_subflow_active(struct mptcp_subflow_contex= t *subflow) * returns the subflow that will transmit the next DSS * additionally updates the rtx timeout */ -static struct sock *mptcp_subflow_get_send(struct mptcp_sock *msk) +struct sock *mptcp_subflow_get_send(struct mptcp_sock *msk) { struct subflow_send_info send_info[SSK_MODE_MAX]; struct mptcp_subflow_context *subflow; @@ -1567,7 +1567,7 @@ void __mptcp_push_pending(struct sock *sk, unsigned i= nt flags) int ret =3D 0; =20 prev_ssk =3D ssk; - ssk =3D mptcp_subflow_get_send(msk); + ssk =3D mptcp_get_subflow(msk); =20 /* First check. If the ssk has changed since * the last round, release prev_ssk @@ -1634,7 +1634,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_get_subflow(mptcp_sk(sk)); if (!xmit_ssk) goto out; if (xmit_ssk !=3D ssk) { @@ -2609,6 +2609,7 @@ static int mptcp_init_sock(struct sock *sk) * propagate the correct value */ mptcp_ca_reset(sk); + mptcp_sched_data_init(sk); =20 sk_sockets_allocated_inc(sk); sk->sk_rcvbuf =3D sock_net(sk)->ipv4.sysctl_tcp_rmem[1]; @@ -2760,6 +2761,7 @@ static void __mptcp_destroy_sock(struct sock *sk) sk_stop_timer(sk, &msk->sk.icsk_retransmit_timer); sk_stop_timer(sk, &sk->sk_timer); msk->pm.status =3D 0; + msk->sched =3D NULL; =20 /* clears msk->subflow, allowing the following loop to close * even the initial subflow @@ -2933,6 +2935,7 @@ struct sock *mptcp_sk_clone(const struct sock *sk, msk->snd_una =3D msk->write_seq; msk->wnd_end =3D msk->snd_nxt + req->rsk_rcv_wnd; msk->setsockopt_seq =3D mptcp_sk(sk)->setsockopt_seq; + msk->sched =3D mptcp_sk(sk)->sched; =20 if (mp_opt->suboptions & OPTIONS_MPTCP_MPC) { msk->can_ack =3D true; @@ -3070,7 +3073,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_subflow_get_send(mptcp_sk(sk)); + struct sock *xmit_ssk =3D mptcp_get_subflow(mptcp_sk(sk)); =20 if (xmit_ssk =3D=3D ssk) __mptcp_subflow_push_pending(sk, ssk); @@ -3743,6 +3746,7 @@ void __init mptcp_proto_init(void) =20 mptcp_subflow_init(); mptcp_pm_init(); + mptcp_sched_init(); mptcp_token_init(); =20 if (proto_register(&mptcp_prot, MPTCP_USE_SLAB) !=3D 0) diff --git a/net/mptcp/protocol.h b/net/mptcp/protocol.h index c36b9c40c314..33720856bfed 100644 --- a/net/mptcp/protocol.h +++ b/net/mptcp/protocol.h @@ -286,6 +286,7 @@ struct mptcp_sock { struct socket *subflow; /* outgoing connect/listener/!mp_capable */ struct sock *first; struct mptcp_pm_data pm; + struct mptcp_sched_ops *sched; struct { u32 space; /* bytes copied in last measurement window */ u32 copied; /* bytes copied in this measurement window */ @@ -584,6 +585,13 @@ int mptcp_allow_join_id0(const struct net *net); unsigned int mptcp_stale_loss_cnt(const struct net *net); int mptcp_get_pm_type(const struct net *net); char *mptcp_get_scheduler(struct net *net); +int mptcp_register_scheduler(struct mptcp_sched_ops *sched); +void mptcp_unregister_scheduler(struct mptcp_sched_ops *sched); +struct mptcp_sched_ops *mptcp_sched_find(const char *name); +void mptcp_sched_data_init(struct sock *sk); +void mptcp_sched_init(void); +struct sock *mptcp_get_subflow(struct mptcp_sock *msk); +struct sock *mptcp_subflow_get_send(struct mptcp_sock *msk); void mptcp_subflow_fully_established(struct mptcp_subflow_context *subflow, struct mptcp_options_received *mp_opt); bool __mptcp_retransmit_pending_data(struct sock *sk); diff --git a/net/mptcp/sched.c b/net/mptcp/sched.c new file mode 100644 index 000000000000..f1bb3adeb71b --- /dev/null +++ b/net/mptcp/sched.c @@ -0,0 +1,89 @@ +// SPDX-License-Identifier: GPL-2.0 +/* Multipath TCP + * + * Copyright (c) 2022, SUSE. + */ + +#define pr_fmt(fmt) "MPTCP: " fmt + +#include +#include +#include +#include "protocol.h" + +static DEFINE_SPINLOCK(mptcp_sched_list_lock); +static LIST_HEAD(mptcp_sched_list); + +struct mptcp_sched_ops *mptcp_sched_find(const char *name) +{ + struct mptcp_sched_ops *ops; + + list_for_each_entry_rcu(ops, &mptcp_sched_list, list) { + if (!strcmp(ops->name, name)) + return ops; + } + + return NULL; +} + +int mptcp_register_scheduler(struct mptcp_sched_ops *sched) +{ + int ret =3D 0; + + if (!sched->get_subflow) + return -EINVAL; + + spin_lock(&mptcp_sched_list_lock); + if (mptcp_sched_find(sched->name)) { + pr_debug("%s already registered", sched->name); + ret =3D -EEXIST; + } else { + list_add_tail_rcu(&sched->list, &mptcp_sched_list); + pr_debug("%s registered", sched->name); + } + spin_unlock(&mptcp_sched_list_lock); + + return ret; +} + +void mptcp_unregister_scheduler(struct mptcp_sched_ops *sched) +{ + spin_lock(&mptcp_sched_list_lock); + list_del_rcu(&sched->list); + spin_unlock(&mptcp_sched_list_lock); + + synchronize_rcu(); +} + +void mptcp_sched_data_init(struct sock *sk) +{ + struct mptcp_sock *msk =3D mptcp_sk(sk); + struct net *net =3D sock_net(sk); + + msk->sched =3D mptcp_sched_find(mptcp_get_scheduler(net)); + if (!msk->sched) { + pr_debug("sched %s not found", mptcp_get_scheduler(net)); + return; + } + + pr_debug("sched=3D%s", msk->sched->name); + if (msk->sched->init) + msk->sched->init(sk); +} + +static struct mptcp_sched_ops mptcp_sched_default =3D { + .get_subflow =3D mptcp_subflow_get_send, + .name =3D "default", + .owner =3D THIS_MODULE, +}; + +void mptcp_sched_init(void) +{ + mptcp_register_scheduler(&mptcp_sched_default); +} + +struct sock *mptcp_get_subflow(struct mptcp_sock *msk) +{ + return INDIRECT_CALL_INET_1(msk->sched->get_subflow, + mptcp_subflow_get_send, msk); +} --=20 2.34.1 From nobody Sun Apr 28 17:29:10 2024 Delivered-To: wpasupplicant.patchew@gmail.com Received: by 2002:a50:bae3:0:0:0:0:0 with SMTP id x90csp694702ede; Thu, 17 Mar 2022 04:05:16 -0700 (PDT) X-Google-Smtp-Source: ABdhPJy0HjXdXG0jOHOKtIJedNT7AYPIAhoUrFWZNhqYjhprTMnot70liHSVwbjoF8AL9vtOC4Fy X-Received: by 2002:a05:6512:16aa:b0:443:bf59:5a4d with SMTP id bu42-20020a05651216aa00b00443bf595a4dmr2559943lfb.622.1647515116031; Thu, 17 Mar 2022 04:05:16 -0700 (PDT) Return-Path: Received: from ewr.edge.kernel.org (ewr.edge.kernel.org. [147.75.197.195]) by mx.google.com with ESMTPS id v26-20020a2e961a000000b0024921a27045si3788623ljh.583.2022.03.17.04.05.15 for (version=TLS1_2 cipher=ECDHE-ECDSA-AES128-GCM-SHA256 bits=128/128); Thu, 17 Mar 2022 04:05:16 -0700 (PDT) Received-SPF: pass (google.com: domain of mptcp+bounces-4279-wpasupplicant.patchew=gmail.com@lists.linux.dev designates 147.75.197.195 as permitted sender) client-ip=147.75.197.195; Authentication-Results: mx.google.com; dkim=pass header.i=@suse.com header.s=mimecast20200619 header.b=cC5oUJvb; arc=fail (body hash mismatch); spf=pass (google.com: domain of mptcp+bounces-4279-wpasupplicant.patchew=gmail.com@lists.linux.dev designates 147.75.197.195 as permitted sender) smtp.mailfrom="mptcp+bounces-4279-wpasupplicant.patchew=gmail.com@lists.linux.dev"; dmarc=pass (p=QUARANTINE sp=QUARANTINE dis=NONE) header.from=suse.com Received: from smtp.subspace.kernel.org (wormhole.subspace.kernel.org [52.25.139.140]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by ewr.edge.kernel.org (Postfix) with ESMTPS id D402B1C0B3D for ; Thu, 17 Mar 2022 11:05:14 +0000 (UTC) Received: from localhost.localdomain (localhost.localdomain [127.0.0.1]) by smtp.subspace.kernel.org (Postfix) with ESMTP id BA7233FC7; Thu, 17 Mar 2022 11:05:13 +0000 (UTC) X-Original-To: mptcp@lists.linux.dev Received: from de-smtp-delivery-102.mimecast.com (de-smtp-delivery-102.mimecast.com [194.104.111.102]) (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 1601E2F38 for ; Thu, 17 Mar 2022 11:05:11 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=suse.com; s=mimecast20200619; t=1647515110; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=grcdMS2N7Pp41aFBDIXXHigkqVAfXMeFh1AWipxkJaw=; b=cC5oUJvb1iMx3mu6EYEV+ZK80oaxa2dPw+217JetBImr/hclY4RgELQ2KEQLCAEI23jKfV S5hVXubrJl0oa0CAmMaQAjIZo/8+Co/FFwwLHzFx/D7p4+jGicoYud0iNWJTcmDAj0omsT TD/3rfmEphAGCHRshsI84Gz9yHhQ4ME= Received: from EUR05-DB8-obe.outbound.protection.outlook.com (mail-db8eur05lp2112.outbound.protection.outlook.com [104.47.17.112]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id de-mta-38-c4srQp5lPXue7ly5QYrfXg-1; Thu, 17 Mar 2022 12:05:08 +0100 X-MC-Unique: c4srQp5lPXue7ly5QYrfXg-1 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=JiCmd13SAfqK4hgsoh6ZlJI0BYuahq5+uU8pBT9JJ/gwZrmsiXXxQmrpFEJ4EUD7Sc2Pz8CMja3X/tjsMwA39nfuo9erp+FBsPdgalTzYaE/AKafgQISJ3MuUASpOReI2rZV6sv+isyUjFPQnHr5K0NyhMr0ywvImtZhmiwB7FX77+T3wwlCT/A9V4G92ntMqAcox4wrIxvgcFvHIcZLdJAlqwQOPJ15ptXNZyAmTsGSN8Hd8Xl6A0BfbR6Km+7OaKQcOwbWT3OFhyMFtta9Hog3rtfgndBHRHcNhHI/cT+VqX/FPQVofIaM2LQEKjchS9MvWX2ycjQLCxYf1j3Suw== 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=+/G/QSFKdupfUOdH3RmTK+MYz4usRE5bHtUGSTosJdQ=; b=QW/Yd0GNNBg+h0sicUnx+phT3lBiW/81//2GBVPVBpm7DecM24Zup/z6VxoPHPZgkzixU6vC4TeUAjzBGN3reulxcPmZeC7nxvFuMA9YywQHBc2QsUW8KMrdiGKMtmSWJgAFEz3kk/DQET9gFBLl+my4sl+XjLSNyTNDyE8w74H9nK1QCtqoAzWs5yI7tM1mLtr/4qm1iDTePHiwdOQEuCc1/fRt4ZB3zFO46MjXDQ1dOZ1uKXV2P976EskkDuBDW12KJgYMdIFEiiWHg6PQ5OfDOXybFMaaIRUGSSsTllIt+EB3QuRtLsWT/4p/Z0739xRTFRorsg1SR/wkWMPGoQ== 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 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 VI1PR04MB6256.eurprd04.prod.outlook.com (2603:10a6:803:f5::21) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5081.17; Thu, 17 Mar 2022 11:05:07 +0000 Received: from HE1PR0402MB3497.eurprd04.prod.outlook.com ([fe80::b110:cb51:e09f:bb05]) by HE1PR0402MB3497.eurprd04.prod.outlook.com ([fe80::b110:cb51:e09f:bb05%6]) with mapi id 15.20.5081.017; Thu, 17 Mar 2022 11:05:07 +0000 From: Geliang Tang To: mptcp@lists.linux.dev CC: Geliang Tang Subject: [PATCH mptcp-next 3/5] mptcp: add bpf_mptcp_sched_ops Date: Thu, 17 Mar 2022 19:04:44 +0800 Message-ID: <5bbd1d25b99465a8657a5b270eced7c8687cbf1b.1647514852.git.geliang.tang@suse.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: References: Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: HK2PR02CA0160.apcprd02.prod.outlook.com (2603:1096:201:1f::20) 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-Office365-Filtering-Correlation-Id: 98f26515-e185-4daf-e620-08da0805ff0b X-MS-TrafficTypeDiagnostic: VI1PR04MB6256:EE_ X-Microsoft-Antispam-PRVS: X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: oLR49inwzD13KkBHn1WHfQj63ud7nC2wFWW711bT0dZIS4ykm/UWoav8rYEcXI45BtRAoNzlPw8PEB6JLUprxv+L19J2+dHzLVNbTslYmhaL4hHC8/8ISmFTN8R42aI1Twff8XgEjJbpB2JcGRHgyRXQU2Wa7jp4eLOmmC+eX2ma/AxW5StKVWV6W8I+jx/kFSuMhTuJ/1AcSQlKTd86k9x6YH357MhhvCMsNgCSfCg02B1UmrZKFq8Rv1Up3oOmmrMqyh0dpjr2JJc4P14X+ljkxMa2Vi/SeIgiz+BwO95EugONCpo/+ye4EJjFqC9/k5lnscUlyAKKQq9xOw2TB8M6uPjnRbprp8tr7Lq18xfXW3qmUkFj/3By8rIlHTWeVMSyxqv9yiPZgN0RNgkaceINNieGQXKJOdQfFA5rex+IYcIwBr0nCQIltKnqUfWrxtP+F21qygCG8z8OcNFayPhPsb+A5HuHIuIeG3LpS998GRVwt+RObfOdgeQ8iqQmSp68GKBKIDBJ/FFOFjPxsKggGCAqkFXIOU0YKdScRasuYhKWzzFULN/J9UJPS40Aw2tk2oxZhcHRfZlgEtmdB5p7PVMLYrmXLLscbRBaPeYJt8o2kOxieVAibinPVAO2IckFD1zW61KxhCIRJ/vflI2mophyjZ0OjEx3iX/yX36Ew/LsnJbuGvJDXl6/dUzwBXlEw5eo6peYZKEgzuZujQ== 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:(13230001)(366004)(6512007)(316002)(8676002)(2616005)(107886003)(26005)(186003)(38100700002)(4326008)(2906002)(6666004)(6506007)(66476007)(66556008)(6916009)(66946007)(86362001)(44832011)(83380400001)(508600001)(8936002)(36756003)(6486002)(5660300002)(13296009);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?kskzAG3KHx1xP5vUQLmLh9Hw4mjaTtSJYF7vufnkM0gIj2hFFSQTsDe2Ib0U?= =?us-ascii?Q?A929WWNri21iEdXgdTsWDtkw0bYpfl9RzI08A7FbpTgk7W5EssPbn9syx8kA?= =?us-ascii?Q?P+7ddAN+3Pd+g0Y9UkfXMmxBoqD2x+1zIuDKxs+CBntXHl/UknGGHbu4s8Wi?= =?us-ascii?Q?sEJdyns4TCWcLky3EP5IaGvKjN55edAS563Pen5N8sKnp+KY0HAWtpn9YbOr?= =?us-ascii?Q?0yHMb5fKXHb1WfZnN1mWTm9b+0ygcKLMQut7LMDD6TEX6jY89Cb7Chrn7z/+?= =?us-ascii?Q?XMrnwwmplmXv/4BWMEmLDeO8EOwnOFXWh1Ic46wH0f1Xa4U1ga7ECy0kX/dV?= =?us-ascii?Q?Ak99g6jr6fjHx4wpZDvxsHA3vTahxkLNgQ/wTYXU3mEKW74EJ7A20RQki7jk?= =?us-ascii?Q?8ot4SfT36pANIWn7KQpcm/Q3tgKi9JisacAcIh83wV0GNfkOyJ76uXHNnmiC?= =?us-ascii?Q?JUouRH0dGZdRxfEq0l/yh4p/W4vEbcrb1nup+DSVNU0tJ39hLVmG4PT70eD3?= =?us-ascii?Q?BC576S0HqmjYJWbM4sugDU+35ou7y4+mQNKCyNjYGvsKhgbeDuh6nEzxfeSf?= =?us-ascii?Q?fElrk7YpA06aJugnF47pawEVWeBeVVSc1s6dO4YglbwsjEpYygGL0SNli68Z?= =?us-ascii?Q?EzdLZzNH1qWn0NbMxfFc6o5RRmF8pSFIiFbqY/IHnSgjwlzFkVc8F59fnSjb?= =?us-ascii?Q?xbTlCEEVBvyQS0ZsXDjANck8BnzxmQJT7LCcGhCpJ66PT1VLTDQ/mIxLZiY2?= =?us-ascii?Q?aGYyEOrByipDoLfkpSVDeu2g/2QkPKY29m7kI8gepPxbGT4r+WxaIrWtXixW?= =?us-ascii?Q?uvWdAkr8ZhCuRuV8L7K6mOn2B+i03w9HHcor7rgvBsW8HZ818o+FV5fqzuag?= =?us-ascii?Q?TWLckyhYYfQrx0CBIrYwx3dhEmv3YCds5jdWYiE7Eh3KhfJsrz6RYE4NUCnc?= =?us-ascii?Q?UEuBHashtYBOWYuvIOMTszT85xXUN/9aM75RUVvb5ZhMU7axJnl6uy1SsT8V?= =?us-ascii?Q?ta5oSwX6FT2ZyYew6JyhrFMaL+4WsB9OG0McoFZD3s+gkukHZsGyAiOTA0Y8?= =?us-ascii?Q?j8Tx2nQ/lolta+v3vpdK8Yh5wH3F8r8nQ32EnOQLpI4jrAAPV5NjaDgtSOCE?= =?us-ascii?Q?8hp78RldJ53VPnLTXSZBnldkYF3gZ9y1Slnh/1rwip4xX5dYTjN8LfLPe9eo?= =?us-ascii?Q?K8spvJrwCttiHh5s98czck8Kp9VSQJTHw1hhG0b3OWx4TzkKcKMiDQXEeowH?= =?us-ascii?Q?oQ6JRMEkz6cxWYrSEU/SX2oazaBYWGGi+7FnQ4FFEZjVlSB074Mjv5ePcT6/?= =?us-ascii?Q?AoIMq34Xwk91IVa4QoGpgC2fUaP6fEOmyxrEIAHhd5NgI/VbvjQGsa6kGjd0?= =?us-ascii?Q?kY/x/RAfn44jnBo66UHAFCXnTKs9veiD0IZeqJuWr+vQcVFDw+ZrIOxxc2MT?= =?us-ascii?Q?MHwyW7SQQ4UcaGd2MCA23isHY+D+2QhSJNVRQ1rjTdUa9jTPiSKQ+Q=3D=3D?= X-OriginatorOrg: suse.com X-MS-Exchange-CrossTenant-Network-Message-Id: 98f26515-e185-4daf-e620-08da0805ff0b X-MS-Exchange-CrossTenant-AuthSource: HE1PR0402MB3497.eurprd04.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 17 Mar 2022 11:05:07.6612 (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: dFSJ0vb3i1S0OXZAr49h9q7eBc+CEs1L6aDxuz6r3pskR5jcE/mhYNm64U2r/nRmYl7Vw4w5qvsTU5tWR0UgFQ== X-MS-Exchange-Transport-CrossTenantHeadersStamped: VI1PR04MB6256 Content-Type: text/plain; charset="utf-8" This patch implemented a new struct bpf_struct_ops, bpf_mptcp_sched_ops. Register and unregister the mptcp scheduler in .reg and .unreg. Signed-off-by: Geliang Tang --- kernel/bpf/bpf_struct_ops_types.h | 4 ++ net/mptcp/bpf.c | 102 ++++++++++++++++++++++++++++++ 2 files changed, 106 insertions(+) diff --git a/kernel/bpf/bpf_struct_ops_types.h b/kernel/bpf/bpf_struct_ops_= types.h index 5678a9ddf817..5a6b0c0d8d3d 100644 --- a/kernel/bpf/bpf_struct_ops_types.h +++ b/kernel/bpf/bpf_struct_ops_types.h @@ -8,5 +8,9 @@ BPF_STRUCT_OPS_TYPE(bpf_dummy_ops) #ifdef CONFIG_INET #include BPF_STRUCT_OPS_TYPE(tcp_congestion_ops) +#ifdef CONFIG_MPTCP +#include +BPF_STRUCT_OPS_TYPE(mptcp_sched_ops) +#endif #endif #endif diff --git a/net/mptcp/bpf.c b/net/mptcp/bpf.c index da79dae559b2..5f7f9d30ecd4 100644 --- a/net/mptcp/bpf.c +++ b/net/mptcp/bpf.c @@ -8,8 +8,110 @@ */ =20 #include +#include +#include +#include #include "protocol.h" =20 +extern struct bpf_struct_ops bpf_mptcp_sched_ops; +extern struct btf *btf_vmlinux; + +static u32 optional_ops[] =3D { + offsetof(struct mptcp_sched_ops, init), + offsetof(struct mptcp_sched_ops, release), + offsetof(struct mptcp_sched_ops, get_subflow), +}; + +static const struct bpf_func_proto * +bpf_mptcp_sched_get_func_proto(enum bpf_func_id func_id, + const struct bpf_prog *prog) +{ + return bpf_base_func_proto(func_id); +} + +static const struct bpf_verifier_ops bpf_mptcp_sched_verifier_ops =3D { + .get_func_proto =3D bpf_mptcp_sched_get_func_proto, + .is_valid_access =3D btf_ctx_access, + .btf_struct_access =3D btf_struct_access, +}; + +static int bpf_mptcp_sched_reg(void *kdata) +{ + return mptcp_register_scheduler(kdata); +} + +static void bpf_mptcp_sched_unreg(void *kdata) +{ + mptcp_unregister_scheduler(kdata); +} + +static int bpf_mptcp_sched_check_member(const struct btf_type *t, + const struct btf_member *member) +{ + return 0; +} + +static bool is_optional(u32 member_offset) +{ + unsigned int i; + + for (i =3D 0; i < ARRAY_SIZE(optional_ops); i++) { + if (member_offset =3D=3D optional_ops[i]) + return true; + } + + return false; +} + +static int bpf_mptcp_sched_init_member(const struct btf_type *t, + const struct btf_member *member, + void *kdata, const void *udata) +{ + const struct mptcp_sched_ops *usched; + struct mptcp_sched_ops *sched; + int prog_fd; + u32 moff; + + usched =3D (const struct mptcp_sched_ops *)udata; + sched =3D (struct mptcp_sched_ops *)kdata; + + moff =3D __btf_member_bit_offset(t, member) / 8; + switch (moff) { + case offsetof(struct mptcp_sched_ops, name): + if (bpf_obj_name_cpy(sched->name, usched->name, + sizeof(sched->name)) <=3D 0) + return -EINVAL; + if (mptcp_sched_find(usched->name)) + return -EEXIST; + return 1; + } + + if (!btf_type_resolve_func_ptr(btf_vmlinux, member->type, NULL)) + return 0; + + /* Ensure bpf_prog is provided for compulsory func ptr */ + prog_fd =3D (int)(*(unsigned long *)(udata + moff)); + if (!prog_fd && !is_optional(moff)) + return -EINVAL; + + return 0; +} + +static int bpf_mptcp_sched_init(struct btf *btf) +{ + return 0; +} + +struct bpf_struct_ops bpf_mptcp_sched_ops =3D { + .verifier_ops =3D &bpf_mptcp_sched_verifier_ops, + .reg =3D bpf_mptcp_sched_reg, + .unreg =3D bpf_mptcp_sched_unreg, + .check_member =3D bpf_mptcp_sched_check_member, + .init_member =3D bpf_mptcp_sched_init_member, + .init =3D bpf_mptcp_sched_init, + .name =3D "mptcp_sched_ops", +}; + struct mptcp_sock *bpf_mptcp_sock_from_subflow(struct sock *sk) { if (sk && sk_fullsock(sk) && sk->sk_protocol =3D=3D IPPROTO_TCP && sk_is_= mptcp(sk)) --=20 2.34.1 From nobody Sun Apr 28 17:29:10 2024 Delivered-To: wpasupplicant.patchew@gmail.com Received: by 2002:a50:bae3:0:0:0:0:0 with SMTP id x90csp694761ede; Thu, 17 Mar 2022 04:05:22 -0700 (PDT) X-Google-Smtp-Source: ABdhPJwRjz4nnM4MzTRZxEUBUm2C9iMEVs+Jf1d/OqWwe3tqifnx2sl8Y+6Ou2uUZtToQfUS9U1K X-Received: by 2002:a63:f40e:0:b0:380:6a04:4335 with SMTP id g14-20020a63f40e000000b003806a044335mr3207747pgi.523.1647515121844; Thu, 17 Mar 2022 04:05:21 -0700 (PDT) Return-Path: Received: from sjc.edge.kernel.org (sjc.edge.kernel.org. [2604:1380:1000:8100::1]) by mx.google.com with ESMTPS id p14-20020a170902780e00b0014f9f55f9e3si3961039pll.287.2022.03.17.04.05.21 for (version=TLS1_2 cipher=ECDHE-ECDSA-AES128-GCM-SHA256 bits=128/128); Thu, 17 Mar 2022 04:05:21 -0700 (PDT) Received-SPF: pass (google.com: domain of mptcp+bounces-4280-wpasupplicant.patchew=gmail.com@lists.linux.dev designates 2604:1380:1000:8100::1 as permitted sender) client-ip=2604:1380:1000:8100::1; Authentication-Results: mx.google.com; dkim=pass header.i=@suse.com header.s=mimecast20200619 header.b="e8vHgse/"; arc=fail (body hash mismatch); spf=pass (google.com: domain of mptcp+bounces-4280-wpasupplicant.patchew=gmail.com@lists.linux.dev designates 2604:1380:1000:8100::1 as permitted sender) smtp.mailfrom="mptcp+bounces-4280-wpasupplicant.patchew=gmail.com@lists.linux.dev"; dmarc=pass (p=QUARANTINE sp=QUARANTINE dis=NONE) header.from=suse.com Received: from smtp.subspace.kernel.org (wormhole.subspace.kernel.org [52.25.139.140]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by sjc.edge.kernel.org (Postfix) with ESMTPS id 2D6BD3E0F78 for ; Thu, 17 Mar 2022 11:05:21 +0000 (UTC) Received: from localhost.localdomain (localhost.localdomain [127.0.0.1]) by smtp.subspace.kernel.org (Postfix) with ESMTP id 119693FC7; Thu, 17 Mar 2022 11:05:20 +0000 (UTC) X-Original-To: mptcp@lists.linux.dev Received: from de-smtp-delivery-102.mimecast.com (de-smtp-delivery-102.mimecast.com [194.104.111.102]) (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 587642F38 for ; Thu, 17 Mar 2022 11:05:18 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=suse.com; s=mimecast20200619; t=1647515116; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=JJByU1y9lTFfWvuTjz0s/ZNdj7s68LKUZq6/vkbEpJM=; b=e8vHgse/BBWJl3svKjV7aj6gYO+yubIUSsdEy/3onyrzeduGdPNoclo8LYgWELAnhUTkuA NOzjoWesxQGSNcL4LLvgIY9OBe1wTWSRJluyLz5QGifNK2A9MFwc58LFpD+n88gknebS0v JTZL2uA+BM00Y7nazCzYFmRRVJNXkYo= Received: from EUR05-DB8-obe.outbound.protection.outlook.com (mail-db8eur05lp2110.outbound.protection.outlook.com [104.47.17.110]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id de-mta-18-s-cSokZtP0G6I_wv3RI36A-1; Thu, 17 Mar 2022 12:05:15 +0100 X-MC-Unique: s-cSokZtP0G6I_wv3RI36A-1 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=Do1VeSc3XxJ4m43xe6h5WC2pbEYIwQE2oXQ1gh8ElHYgrrP0qs59Ru4nteBOHUcc8ddj8snzUvbuAIMtQ64jTs+l+W84gGHKlfoC9k60e/10T+n5vZ/1qnju1sHTGmgnabOeFGr+fOhCCNCK9r6C6mQRlzZE2PGZRL7B/NSlUeO6jD63cH/H4bJa7ezYaWYgjo3g751FBgVXygKMyPJ0lXo9yWeoK9vGsgBDn/FvuHkSdC3Fcte900vaTYDB1ldShY1Kb/h26zQtG+XPdGfTZVngRlvZm83w+AUTcutGN2vUXU3MQohMDgNJ3O4ze4yrCOYJUwJpANWCuYK1y3V5kw== 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=9Em2ySjHZkmDPytKbR5YlhVFD8xJjmoP68oBRdRFGC8=; b=AVql/2LtUI0xNsaFetitsjGZRJfhuZL3QJt9pCoWH3DTypV+wBs/OHSVeopg32PvlxIu07qpmIR1sCrmT+OpQRBwY5a5lgdOoxi0THCYJFItnvmxMWxqB0e1sPLKRUnwlVcR4s3MXF8neQ4VVHQemPLoC5nw6eY1Q8f1UQHIa0zEdQ9ShJL9HNEmX/ksKqlHsJEnwJAguBU1SbR28a2tdhrPv0ngsFaNBXje2QJQGOx9mwWhpoLKW3CCfYrga87jFHiqswUOrh0MO4mXReLPqrt1JE2eERy/zftTMfLrsqNS2n0aELbmJmyH9fOODvcDr6dQtnNnvQNDBQZukIXQrA== 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 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 VI1PR04MB6256.eurprd04.prod.outlook.com (2603:10a6:803:f5::21) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5081.17; Thu, 17 Mar 2022 11:05:14 +0000 Received: from HE1PR0402MB3497.eurprd04.prod.outlook.com ([fe80::b110:cb51:e09f:bb05]) by HE1PR0402MB3497.eurprd04.prod.outlook.com ([fe80::b110:cb51:e09f:bb05%6]) with mapi id 15.20.5081.017; Thu, 17 Mar 2022 11:05:14 +0000 From: Geliang Tang To: mptcp@lists.linux.dev CC: Geliang Tang Subject: [PATCH mptcp-next 4/5] selftests: bpf: implement bpf_first scheduler Date: Thu, 17 Mar 2022 19:04:45 +0800 Message-ID: <1fa592f2770eca00d33baf2eda3c264acf368cfe.1647514852.git.geliang.tang@suse.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: References: Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: HK2PR02CA0172.apcprd02.prod.outlook.com (2603:1096:201:1f::32) 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-Office365-Filtering-Correlation-Id: 09ff3f95-a635-4897-7b65-08da08060303 X-MS-TrafficTypeDiagnostic: VI1PR04MB6256:EE_ X-Microsoft-Antispam-PRVS: X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: ju68vvT9gr0uaLd+Wpm+MfzhQcykBxM5gc/aIHpOTD7MOlsg50AGnwN7Z6LblDIqTOPz91QUNRgaHuxMSH66nrMXAyYPBTjULioBEE8M/FEjag316uT+WSuHTpVI7xVO1b9QwdXMh6MQwlAPQA1mc/3xZGFoRzO22UKZTn9qS30Vruj3Cud5x4e2JI6KwTBscqYX14eAw20Eumv6KGgNlf2q6D5QqtitVKTzYYPfEpmkD+wyfmIhEKRGIQpIXHpfaqyiqj74fUBllCeP4wKER7SmPIhHHkRLBn8oP/D4D4SvusdX0vk7MI9+FSMdpsAiSlPsro30dFIzD/nWG+k6U4rHmX/4usEz6312tJCyb7WlLoT0yafOTa0s0YOJ681idS+0de9c+tsNjmBMLOgFd0w7CVcaa7oDfKuSIsH08R92yegXuQocIW06bUuqqaScvip3Q7pD+PqfSEMCd5ya+ieR7M/Nl7ZhgiJY5NcG1feRgjy8P6hXtLsethsJ83yikSMszjSQhhkd6ePwWEBv7Lxm/G1CnpgAl5crf6eEMv1bhA/Efm5fw4JWHGXAmXRcmqR2BBoNxgXqVQODSFfBmRrMc+8NBJdFZnFZFla0OSMoW/fn4MVDxNwM7PNthsrNLz31JegqEkRxORVngGyAt5QyFEYrOtAotKEpY0JNpwCUgUO6UKyqXTHk+4YJGge3 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:(13230001)(366004)(6512007)(316002)(8676002)(2616005)(107886003)(26005)(186003)(38100700002)(4326008)(2906002)(6666004)(6506007)(66476007)(66556008)(6916009)(66946007)(86362001)(44832011)(508600001)(8936002)(36756003)(6486002)(5660300002)(13296009);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?N3SU0VYVdMq73tAO9PD+L8i9WtzJLBxiLhc7lGLDIXB5lgXqmyugSMcnuvb9?= =?us-ascii?Q?8Lm+vFIPrUi5LbA/qUEA9s+ARAE1YqfbKybioKUCBNKKEs+pGB05m0VrhiI3?= =?us-ascii?Q?c8SNKAh19HJiZu6tgWjWvotmFslSH2x13ZqwOhmdEsaa4f4WwheNPt3pdB4j?= =?us-ascii?Q?2u8Wh8GsBJqqREC78Kj/THoz9K9yhW0EeCz/weOXMWpkqqDsPBsYKd9lxO7w?= =?us-ascii?Q?QkSg13N8L+MnyfUtnKAS7yJScW6CkZQay6WejJviLDbITWG4pGw7KphvrCX6?= =?us-ascii?Q?YiNU95aBM+POP4glTMGh1aDewvsijLo9CgxKuA3vByko5arHp7AVuVl7wl6n?= =?us-ascii?Q?lomEusjYYarcLLjn3GbJHLO5JhxE9MvQC6eZ3NYRl9r4xMvQ6RHrurB3Mo+4?= =?us-ascii?Q?W/oB7lMdEuppBC7uSAQEBuYNPRAJNIGHXG5xBe1Pm0JDH4KuQ1iKzlXV9Sj0?= =?us-ascii?Q?Qfp+XgX+PRBmueH7kW2//UPQ82zTixVw+BzrCHt/zCkMbjyq3py04mMHhkpY?= =?us-ascii?Q?8juGKyG4ew0pTSjQJjQWfDB5XL7czBbDYOKfvChBBj2E2cmCv088E2K3/0kj?= =?us-ascii?Q?1MpUSTHKB/8ZuCOASKOi2Z1dRuLdAblqiWS/LHsizSaXl+P71dfOCEx/LFih?= =?us-ascii?Q?qvkwBAd5/CchEp2wpyqAgv2SzGgGzRQQUw4w6gR5NoFcVXCbIZLmyqdOhrXj?= =?us-ascii?Q?ENugUPBpxDsDS9YAmG6x/Dwgf0HbPJb7PbttACYgqZ0VJQLs5zvGqdefRPum?= =?us-ascii?Q?36Vt6b1pcKfbUBAoigf8NqF+D+ENV55M/Ed3pLuOD+c4cMsVgA3K6NbD9PFn?= =?us-ascii?Q?MQHczJlXDqSAfi2W1tU+O2LhxREZqEITxEL5hF0PuP+o98IhPaKQy6kcVBQi?= =?us-ascii?Q?7KVz5Mw/C1Yht3i98AJD7G+13LIB5MUoC9IDadAGiD9ryooJVtXBSWKImfTP?= =?us-ascii?Q?tCvP9/VC3Pa0WrSDgOLaqALGsg7mE8VESRXy9u5xVU2yEz6k07dtsx6WKhS2?= =?us-ascii?Q?hAJl17NH8VEeFGU+n7bKT8XH52uLN38neSOoh9QG50hrCwetkytR4cCiXfd+?= =?us-ascii?Q?foy9O7yWeegwbEsQJnNPerGa6viXnhKXuNV6ls5LnDgtqsTCJPBg7oD/RM5f?= =?us-ascii?Q?V+Hzbui1YcX5fg7Jhrp6EECKo/1w2uIbkGfHlAN1ebHtQi0PCRNXreomlg1T?= =?us-ascii?Q?ALBmhGMz3JimluwRqYimouiXf1HQvZGdOaKRRfDydzkMplimdr1yPRkt3q2U?= =?us-ascii?Q?pW+cKXN/Ml4XCauDwRlFLipGxOuy3GV8w0Jz0iakYvIHfRBE6410J1PJmRMJ?= =?us-ascii?Q?dv1QhLU4sMnjLut0SUjH4Uo7T3C5ZXgAGbRgyh3I9cB2aauJUCA0OzRy35CI?= =?us-ascii?Q?ZNnetkGaGoI7kq1XdpNG9WEwFUJvQrjT+hZJO/HO8+k2/TZ6oyIRE4mcrJ52?= =?us-ascii?Q?RzdOZRmdUndq9OmYM7mWWU1a8dsZaBHzxeL3bhDTkhbBvPp9SreU2A=3D=3D?= X-OriginatorOrg: suse.com X-MS-Exchange-CrossTenant-Network-Message-Id: 09ff3f95-a635-4897-7b65-08da08060303 X-MS-Exchange-CrossTenant-AuthSource: HE1PR0402MB3497.eurprd04.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 17 Mar 2022 11:05:14.0982 (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: P7OwgGFamKsII/CcR+zv22lIJaKU7GepyZdS9SZHY05AX9lKkNtBpcXOxjuWgC2IoTvxKb8J891eA37wuW7f5Q== X-MS-Exchange-Transport-CrossTenantHeadersStamped: VI1PR04MB6256 Content-Type: text/plain; charset="utf-8" This patch implemented the simplest MPTCP scheduler, named bpf_first, which always picks the first subflow to send data. Signed-off-by: Geliang Tang --- tools/testing/selftests/bpf/bpf_tcp_helpers.h | 14 +++++++++ tools/testing/selftests/bpf/progs/bpf_first.c | 30 +++++++++++++++++++ 2 files changed, 44 insertions(+) create mode 100644 tools/testing/selftests/bpf/progs/bpf_first.c diff --git a/tools/testing/selftests/bpf/bpf_tcp_helpers.h b/tools/testing/= selftests/bpf/bpf_tcp_helpers.h index f92357597e63..886d6fa100ce 100644 --- a/tools/testing/selftests/bpf/bpf_tcp_helpers.h +++ b/tools/testing/selftests/bpf/bpf_tcp_helpers.h @@ -197,6 +197,20 @@ struct tcp_congestion_ops { void *owner; }; =20 +#define MPTCP_SCHED_NAME_MAX 16 + +struct mptcp_sched_ops { + char name[MPTCP_SCHED_NAME_MAX]; + + /* initialize private data (optional) */ + void (*init)(struct sock *sk); + /* cleanup private data (optional) */ + void (*release)(struct sock *sk); + + struct sock *(*get_subflow)(struct sock *sk); + void *owner; +}; + #define min(a, b) ((a) < (b) ? (a) : (b)) #define max(a, b) ((a) > (b) ? (a) : (b)) #define min_not_zero(x, y) ({ \ diff --git a/tools/testing/selftests/bpf/progs/bpf_first.c b/tools/testing/= selftests/bpf/progs/bpf_first.c new file mode 100644 index 000000000000..c30a7cd3b932 --- /dev/null +++ b/tools/testing/selftests/bpf/progs/bpf_first.c @@ -0,0 +1,30 @@ +// SPDX-License-Identifier: GPL-2.0-only +/* Copyright (c) 2022, SUSE. */ + +#include +#include "bpf_tcp_helpers.h" + +char _license[] SEC("license") =3D "GPL"; + +char fmt[] =3D "%s"; + +/* "struct_ops/" prefix is a requirement */ +SEC("struct_ops/mptcp_sched_first_init") +void BPF_PROG(mptcp_sched_first_init, struct sock *sk) +{ + bpf_trace_printk(fmt, sizeof(fmt), __func__); +} + +struct sock *BPF_STRUCT_OPS(bpf_first_get_subflow, struct sock *sk) +{ + struct mptcp_sock *msk =3D (struct mptcp_sock *)sk; + + return msk->first; +} + +SEC(".struct_ops") +struct mptcp_sched_ops first =3D { + .init =3D (void *)mptcp_sched_first_init, + .get_subflow =3D (void *)bpf_first_get_subflow, + .name =3D "bpf_first", +}; --=20 2.34.1 From nobody Sun Apr 28 17:29:10 2024 Delivered-To: wpasupplicant.patchew@gmail.com Received: by 2002:a50:bae3:0:0:0:0:0 with SMTP id x90csp694806ede; Thu, 17 Mar 2022 04:05:30 -0700 (PDT) X-Google-Smtp-Source: ABdhPJxKkFD4mNs/AzaURB1/dtRohP8TO9/dQ6rDTkNLAYflYcLa3pD07mKS9w9p4kfefA6a1Xm3 X-Received: by 2002:a05:6512:260b:b0:444:18:fce5 with SMTP id bt11-20020a056512260b00b004440018fce5mr2556249lfb.119.1647515129878; Thu, 17 Mar 2022 04:05:29 -0700 (PDT) Return-Path: Received: from ewr.edge.kernel.org (ewr.edge.kernel.org. [147.75.197.195]) by mx.google.com with ESMTPS id p42-20020a05651213aa00b0044897b894a0si3928886lfa.592.2022.03.17.04.05.29 for (version=TLS1_2 cipher=ECDHE-ECDSA-AES128-GCM-SHA256 bits=128/128); Thu, 17 Mar 2022 04:05:29 -0700 (PDT) Received-SPF: pass (google.com: domain of mptcp+bounces-4281-wpasupplicant.patchew=gmail.com@lists.linux.dev designates 147.75.197.195 as permitted sender) client-ip=147.75.197.195; Authentication-Results: mx.google.com; dkim=pass header.i=@suse.com header.s=mimecast20200619 header.b=S9Ds7qoa; arc=fail (body hash mismatch); spf=pass (google.com: domain of mptcp+bounces-4281-wpasupplicant.patchew=gmail.com@lists.linux.dev designates 147.75.197.195 as permitted sender) smtp.mailfrom="mptcp+bounces-4281-wpasupplicant.patchew=gmail.com@lists.linux.dev"; dmarc=pass (p=QUARANTINE sp=QUARANTINE dis=NONE) header.from=suse.com Received: from smtp.subspace.kernel.org (wormhole.subspace.kernel.org [52.25.139.140]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by ewr.edge.kernel.org (Postfix) with ESMTPS id F19831C0C60 for ; Thu, 17 Mar 2022 11:05:27 +0000 (UTC) Received: from localhost.localdomain (localhost.localdomain [127.0.0.1]) by smtp.subspace.kernel.org (Postfix) with ESMTP id 7B93B3FC7; Thu, 17 Mar 2022 11:05:26 +0000 (UTC) X-Original-To: mptcp@lists.linux.dev Received: from de-smtp-delivery-102.mimecast.com (de-smtp-delivery-102.mimecast.com [194.104.111.102]) (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 F05762F38 for ; Thu, 17 Mar 2022 11:05:24 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=suse.com; s=mimecast20200619; t=1647515123; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=+4S7jculaTldcqJjJXmc+XRXuvqmBElCqfCGU7sSGQ8=; b=S9Ds7qoaPEEfmMqapSubfTQH5eXIB8zC2TsELZHOkuvRfw+oK0a5Qq0fw3yBS1jJzJSMpL ze/dkeOZbByIXf02yj7abz2k6qjDvG9K9KGce7tFD3FKlzM37EXO7CDNdsMNrU/KE639f0 53rDb7b94YA5TMmwN5JTjG5lyaAVgi4= Received: from EUR05-DB8-obe.outbound.protection.outlook.com (mail-db8eur05lp2106.outbound.protection.outlook.com [104.47.17.106]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id de-mta-40-L4MBeY0iNUuJXi7IuBwPZg-1; Thu, 17 Mar 2022 12:05:22 +0100 X-MC-Unique: L4MBeY0iNUuJXi7IuBwPZg-1 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=jBNKkXt6diRI/ROILQqp1dDl6fwexoT3NBOrBSNwVWJXXLqU2ZceZRVLBzCcHpZZ6TEmm4XGFkE8YB5QDgX2g242vn7PMm6k4TzeCTwREANlso+9/TgzlvsIJ568HLtnVMFtOUQbni+d4kzdnsUoLkFiv9SL2yeoi91aybtMpliNum7aNyQrvVYWd58qWMp47t9OH8hYpyJq/s4dm30GNgAKfuZckF6Ck2CP1xF0430xzJFMfRcJjINf13oLP8khkK/zy0njr1lsBNWoGLvLy68wa3R4rWKW+4Jaw0oX8ExJDEVnnPortxTnh70jmH7Hsgu96yX6YlWVUFNbyDYDpw== 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=qcohmn6iGS4c9uI5OJVZ0eOmojD99A+NG2U6qzT2nQg=; b=SLCR0a2SFhaDibV4DsD25zZf4kMQBHNGVqpfqMqbSzFyG/BNUYrGfp0LH3IKYa2BFsJ+Z3B2oecQqUSDJavvf2rELiRLer5FIgKHAUVe/wiOikKoMVQL24ugv1E5k7l/86C81aK7m5Hfo8Xcx694qlFONoh1tlzlNkwnqXOlqBzvhr5/S0WC0SDQFA3673lIcHk9hHEfFayp88lUdBRvcveNWeiiF4PGrtFs2gPu7M4dlEgL+sqDvru2UhtgzHpAsaXROlB4l8bue5ya6X7O0UMRbHeZYvE/cQCWJKRdDn0QgX5lDia9CNGfsZOXx7Em9513/DPQxXQgtbPTC1RxvQ== 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 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 VI1PR04MB6256.eurprd04.prod.outlook.com (2603:10a6:803:f5::21) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5081.17; Thu, 17 Mar 2022 11:05:21 +0000 Received: from HE1PR0402MB3497.eurprd04.prod.outlook.com ([fe80::b110:cb51:e09f:bb05]) by HE1PR0402MB3497.eurprd04.prod.outlook.com ([fe80::b110:cb51:e09f:bb05%6]) with mapi id 15.20.5081.017; Thu, 17 Mar 2022 11:05:21 +0000 From: Geliang Tang To: mptcp@lists.linux.dev CC: Geliang Tang Subject: [PATCH mptcp-next 5/5] selftests: bpf: add mptcp sched test Date: Thu, 17 Mar 2022 19:04:46 +0800 Message-ID: <7541fe09cf06706f5de855b0c7b62bd0cf5de444.1647514852.git.geliang.tang@suse.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: References: Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: HK2PR02CA0171.apcprd02.prod.outlook.com (2603:1096:201:1f::31) To HE1PR0402MB3497.eurprd04.prod.outlook.com (2603:10a6:7:83::14) Precedence: bulk X-Mailing-List: mptcp@lists.linux.dev List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: f2876558-68d0-49d3-9587-08da08060704 X-MS-TrafficTypeDiagnostic: VI1PR04MB6256:EE_ X-Microsoft-Antispam-PRVS: X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: RXhsk+9L94OMOFENurkGuO5jzwv5nJ3G5D26mbazMYs+W/CRPRCX4iOpYvET3DgOJ/bJ0I2PEP6t+tu6TzK+KKRzXuvi6svMxEYpOoZNBaRlsNtOj6PxZ/rCEZONbukZ+mneTqFa1RIz1N48vMoU6bUxHcvEVDcMy87V3INujkT/MaXaN1tgaxHF0UpF+RqfmtqtERc+B1iWYXYk6e4wQMICMjGWYWqIOqANWh1OyK2hX0UrzpOfWRkhpXR5K3JdzFQetHn38AzvWCXJw3xgVxJ2LZ5G/36e/eYOc7IzXnh64EgTHyjVP2tzWMM5SXE0L5BmsVv+py+7GMkEfraltjg/Sm708iJpOKKX9FIuRszkLxshgaFIL4dQ61o9lbjqkHcQ05BIDAfBOhKAGVL/38tuXDFLVFAe0O5kKdPaYkDMWKqiqPETLyFy7xC2QQ++rKDlnmYBFUcHRRALdodvUXI2J5R9EtD8GPPuNJtFyXm3KV9IYgaHOsBkAV6AZCSPGWybSY+sIZNEPecMYX4VABhB7OtUd8bfZcvlj+tWs4Li7dRrcVsFXKeKtTqb1T+kIRiwVTWzBHbf4m7LbLs3hVOduegbIBlUXaFZdcn+btAiIhoP2oYHfEje9ansNLnc91BZQ9a0SBTjxh9BJI2jeOChXX/bDPi7qJEWGZo+eopccdif3g2UnKAJ2pNvToMuA5rxSbY4BvhaqfT7R/OyEg== 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:(13230001)(366004)(6512007)(316002)(8676002)(2616005)(107886003)(26005)(186003)(38100700002)(4326008)(2906002)(6666004)(6506007)(66476007)(66556008)(6916009)(66946007)(86362001)(44832011)(83380400001)(508600001)(8936002)(36756003)(6486002)(5660300002)(13296009);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?tDtR1iQLgrbhILSp6pwhbOQE17pnZGVHDo3FOZIdT1pbvwg+N/IBoEFRRdP2?= =?us-ascii?Q?cMNuCrhB/B76AoOrrBiwDIYelYIlSBZhqLPh7dS4VM6ptE03dkTgwRmjiN6h?= =?us-ascii?Q?fXQEx2XXNW4tXqIc9A6KRrTO5q6eEsNJ6QotzA5hGI7b1elsE0/pOqoSs1ZU?= =?us-ascii?Q?24vFKETWZWaTbFnSubNMH5SiJGEKvFma1pFtyY4XKQmfRuXkrUtPgTVFa+ha?= =?us-ascii?Q?X1otgDy5blQVVspuOH68gIQP2n2CbV0EeibW8qIUTZ8Hx19sjhKpjBwex420?= =?us-ascii?Q?OIdh5M8EE61EPry3du0pLC61tv9Ji9Gl2BjmNUI8vaT/l/N3pcggKVn6ouAF?= =?us-ascii?Q?7v6Xw3E/6EsO2qso0tY+7+nFCfilB8epy8J30UBYzQpAuPiRVy8mjTD3bXGQ?= =?us-ascii?Q?9WFzTinkiJcwRtioOppdZfDa8nLYuxttRY4yqj0D6efhwtAWexxghx8L13Tn?= =?us-ascii?Q?ee0WcFCxI09VT15LVm4vx0Yle9n3gz+yBB9YrFBIDJ6F+mI5/Sjcon/XMaJM?= =?us-ascii?Q?sxZ4/Kdb9CXBiRc5a3U6L+rsbJIHuf9DZMsJlP8LEuLsJMeJMS6031mr3eSJ?= =?us-ascii?Q?Fn/6l+wlajQ5+WqsxQAsKrB7zG/1x24WrUUcX0v4Q6mj9HiN8JESLvYWXXD7?= =?us-ascii?Q?gsXIGBb1D10osYRaCuU88V1vkWreuZEeBVe4IA9lFxVh02wxSejWC+Aq/41j?= =?us-ascii?Q?HbD4g0fNKQ4bSGqp3XbeTs2iKF+z54tB+McUwOeuA/comMDSSJ2leOjPPHJW?= =?us-ascii?Q?bo9XAPccvhSQdieAHZOsgXjHjrcL4WbZgWdGDb1g3AkeLGCB37M1UdIeaDvX?= =?us-ascii?Q?uscVwLjE00Q5mxSzkMVfPlejplW6oRGQ+bzCIrSK3sBRdBatooXmPAY67nnZ?= =?us-ascii?Q?lOiVwHcLVQHZpyVc06DydoBVqyOXeYgZEOZWBYykUaI66juSSdwgr1EjaOcG?= =?us-ascii?Q?O/8jW+gSpJCotI2evLzpQlD1OrPCkdrTd9Z18E1P33JmTCWQRJlel4LpaezX?= =?us-ascii?Q?FtNYfIuwVmtgvgVcOCz1iUiXjX1RN+Gy/jRm/eXx61UZ2BVjK6pZunQbej9s?= =?us-ascii?Q?BdcyvR68DTVaK+2y+CjkhuJHCue5zMhf7JywDkb59YoyKuv+Th+GOtcjtwNM?= =?us-ascii?Q?OmMb0kBHLNeyJPy79Xhw+BiGV88EgEWooCC0meWVDbSAOBKT2fdxoiOETX+s?= =?us-ascii?Q?Jchff1CgEvObSoG+Ts8Ie6z6xA2ALac4Rja6WbYLUfksa1qlqhqG77BmUCFT?= =?us-ascii?Q?1BjCq/S92aQuHwaZcJDH59C2agPQ64pUClZsTwqKdFGHzs1PdapGza6nrB4o?= =?us-ascii?Q?3qhb4X19q7PNg1eihOyDjx9kb/Q9gpbwi2pwqjgb5PiHV94MSy/14UJbH7j/?= =?us-ascii?Q?Dw1fZZo0+OZJIWiXne2At4E+v2vAeDD8x7GcotV2Bd1IZrOcZa0cCBi1fSva?= =?us-ascii?Q?86sldKM8KZweVvq1aBa3KSW9psGvc6HxV+wna5fNVGIhM808a1Gwug=3D=3D?= X-OriginatorOrg: suse.com X-MS-Exchange-CrossTenant-Network-Message-Id: f2876558-68d0-49d3-9587-08da08060704 X-MS-Exchange-CrossTenant-AuthSource: HE1PR0402MB3497.eurprd04.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 17 Mar 2022 11:05:21.0194 (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: RfN2oEF485G+RgDMueM2YeT70lIPr+0tpPtCA1Xwbfyn68KSuMEluR0tg4/9j3JaIkDtbGUI7nIjkQRuNB96fw== X-MS-Exchange-Transport-CrossTenantHeadersStamped: VI1PR04MB6256 Content-Type: text/plain; charset="utf-8" This patch added the MPTCP sched testcases. Use sysctl to set net.mptcp.scheduler in the tests. Signed-off-by: Geliang Tang --- .../bpf/prog_tests/bpf_mptcp_sched.c | 158 ++++++++++++++++++ 1 file changed, 158 insertions(+) create mode 100644 tools/testing/selftests/bpf/prog_tests/bpf_mptcp_sched.c diff --git a/tools/testing/selftests/bpf/prog_tests/bpf_mptcp_sched.c b/too= ls/testing/selftests/bpf/prog_tests/bpf_mptcp_sched.c new file mode 100644 index 000000000000..b351ae260903 --- /dev/null +++ b/tools/testing/selftests/bpf/prog_tests/bpf_mptcp_sched.c @@ -0,0 +1,158 @@ +// SPDX-License-Identifier: GPL-2.0 + +#include +#include +#include +#include "network_helpers.h" +#include "bpf_first.skel.h" + +#ifndef IPPROTO_MPTCP +#define IPPROTO_MPTCP 262 +#endif + +#define min(a, b) ((a) < (b) ? (a) : (b)) + +static const unsigned int total_bytes =3D 10 * 1024 * 1024; +static int stop, duration; + +static void *server(void *arg) +{ + int lfd =3D (int)(long)arg, err =3D 0, fd; + ssize_t nr_sent =3D 0, bytes =3D 0; + char batch[1500]; + + fd =3D accept(lfd, NULL, NULL); + while (fd =3D=3D -1) { + if (errno =3D=3D EINTR) + continue; + err =3D -errno; + goto done; + } + + if (settimeo(fd, 0)) { + err =3D -errno; + goto done; + } + + while (bytes < total_bytes && !READ_ONCE(stop)) { + nr_sent =3D send(fd, &batch, + min(total_bytes - bytes, sizeof(batch)), 0); + if (nr_sent =3D=3D -1 && errno =3D=3D EINTR) + continue; + if (nr_sent =3D=3D -1) { + err =3D -errno; + break; + } + bytes +=3D nr_sent; + } + + CHECK(bytes !=3D total_bytes, "send", "%zd !=3D %u nr_sent:%zd errno:%d\n= ", + bytes, total_bytes, nr_sent, errno); + +done: + if (fd >=3D 0) + close(fd); + if (err) { + WRITE_ONCE(stop, 1); + return ERR_PTR(err); + } + return NULL; +} + +static void do_test(const char *mptcp_sched) +{ + struct sockaddr_in6 sa6 =3D {}; + ssize_t nr_recv =3D 0, bytes =3D 0; + int lfd =3D -1, fd =3D -1; + pthread_t srv_thread; + socklen_t addrlen =3D sizeof(sa6); + void *thread_ret; + char batch[1500]; + char cmd[256]; + int err; + + WRITE_ONCE(stop, 0); + + snprintf(cmd, sizeof(cmd), "sysctl -q net.mptcp.scheduler=3D%s", mptcp_sc= hed); + system(cmd); + + lfd =3D socket(AF_INET6, SOCK_STREAM, IPPROTO_MPTCP); + if (CHECK(lfd =3D=3D -1, "socket", "errno:%d\n", errno)) + return; + fd =3D socket(AF_INET6, SOCK_STREAM, IPPROTO_MPTCP); + if (CHECK(fd =3D=3D -1, "socket", "errno:%d\n", errno)) { + close(lfd); + return; + } + + /* bind, listen and start server thread to accept */ + sa6.sin6_family =3D AF_INET6; + sa6.sin6_addr =3D in6addr_loopback; + err =3D bind(lfd, (struct sockaddr *)&sa6, addrlen); + if (CHECK(err =3D=3D -1, "bind", "errno:%d\n", errno)) + goto done; + err =3D getsockname(lfd, (struct sockaddr *)&sa6, &addrlen); + if (CHECK(err =3D=3D -1, "getsockname", "errno:%d\n", errno)) + goto done; + err =3D listen(lfd, 1); + if (CHECK(err =3D=3D -1, "listen", "errno:%d\n", errno)) + goto done; + + /* connect to server */ + err =3D connect(fd, (struct sockaddr *)&sa6, addrlen); + if (CHECK(err =3D=3D -1, "connect", "errno:%d\n", errno)) + goto done; + + err =3D pthread_create(&srv_thread, NULL, server, (void *)(long)lfd); + if (CHECK(err !=3D 0, "pthread_create", "err:%d errno:%d\n", err, errno)) + goto done; + + /* recv total_bytes */ + while (bytes < total_bytes && !READ_ONCE(stop)) { + nr_recv =3D recv(fd, &batch, + min(total_bytes - bytes, sizeof(batch)), 0); + if (nr_recv =3D=3D -1 && errno =3D=3D EINTR) + continue; + if (nr_recv =3D=3D -1) + break; + bytes +=3D nr_recv; + } + + CHECK(bytes !=3D total_bytes, "recv", "%zd !=3D %u nr_recv:%zd errno:%d\n= ", + bytes, total_bytes, nr_recv, errno); + + WRITE_ONCE(stop, 1); + pthread_join(srv_thread, &thread_ret); + CHECK(IS_ERR(thread_ret), "pthread_join", "thread_ret:%ld", + PTR_ERR(thread_ret)); +done: + close(lfd); + close(fd); +} + +static void test_first(void) +{ + struct bpf_first *first_skel; + struct bpf_link *link; + + first_skel =3D bpf_first__open_and_load(); + if (CHECK(!first_skel, "bpf_first__open_and_load", "failed\n")) + return; + + link =3D bpf_map__attach_struct_ops(first_skel->maps.first); + if (!ASSERT_OK_PTR(link, "bpf_map__attach_struct_ops")) { + bpf_first__destroy(first_skel); + return; + } + + do_test("bpf_first"); + + bpf_link__destroy(link); + bpf_first__destroy(first_skel); +} + +void test_bpf_mptcp_sched(void) +{ + if (test__start_subtest("first")) + test_first(); +} --=20 2.34.1