From nobody Thu May 2 09:29:02 2024 Delivered-To: wpasupplicant.patchew@gmail.com Received: by 2002:a17:907:7811:b0:6d8:2910:9a8 with SMTP id la17csp4036346ejc; Mon, 28 Mar 2022 02:38:18 -0700 (PDT) X-Google-Smtp-Source: ABdhPJzXK7C/uyDtsp3HFXySI1tYVItfhfzs66698Kf/Uo4JDEqDbFnN27QQYv0N3LzczzWkB+Ge X-Received: by 2002:a17:907:7e92:b0:6e0:8c4f:b5a with SMTP id qb18-20020a1709077e9200b006e08c4f0b5amr22370643ejc.572.1648460298689; Mon, 28 Mar 2022 02:38:18 -0700 (PDT) Return-Path: Received: from ewr.edge.kernel.org (ewr.edge.kernel.org. [2604:1380:1:3600::1]) by mx.google.com with ESMTPS id y11-20020a056402358b00b00418c2b5be8fsi5041464edc.369.2022.03.28.02.38.18 for (version=TLS1_2 cipher=ECDHE-ECDSA-AES128-GCM-SHA256 bits=128/128); Mon, 28 Mar 2022 02:38:18 -0700 (PDT) Received-SPF: pass (google.com: domain of mptcp+bounces-4465-wpasupplicant.patchew=gmail.com@lists.linux.dev designates 2604:1380:1:3600::1 as permitted sender) client-ip=2604:1380:1:3600::1; Authentication-Results: mx.google.com; dkim=pass header.i=@suse.com header.s=mimecast20200619 header.b=Mbd8c4oS; arc=fail (body hash mismatch); spf=pass (google.com: domain of mptcp+bounces-4465-wpasupplicant.patchew=gmail.com@lists.linux.dev designates 2604:1380:1:3600::1 as permitted sender) smtp.mailfrom="mptcp+bounces-4465-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 678E41C08F4 for ; Mon, 28 Mar 2022 09:38:17 +0000 (UTC) Received: from localhost.localdomain (localhost.localdomain [127.0.0.1]) by smtp.subspace.kernel.org (Postfix) with ESMTP id E3EC8434E; Mon, 28 Mar 2022 09:38:15 +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 049647C for ; Mon, 28 Mar 2022 09:38:13 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=suse.com; s=mimecast20200619; t=1648460292; 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=ipKVpT9hrIVVLgKmd+X5LCOueQ+XogEiK0+IjHCDLJ0=; b=Mbd8c4oSPmJZXDZ1epQo9hijcv0bLz5YCZ51BZfpmenkdjlxVVMTJjeg/C4xppOMZKT4ZP zhnm9wVxJS+c8CNlPveWXwZyzpRMTrqfvikcQut910gQ01Y4tYV5C7+qB9JtOfAV2bZIlh 60vyNoZ9KqmFC5ixK4R35F69MhfD67Y= Received: from EUR03-VE1-obe.outbound.protection.outlook.com (mail-ve1eur03lp2056.outbound.protection.outlook.com [104.47.9.56]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id de-mta-2-YISizmcKM2iYdymrMQmUdA-1; Mon, 28 Mar 2022 11:38:10 +0200 X-MC-Unique: YISizmcKM2iYdymrMQmUdA-1 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=mryLCe0laU8wfkSBLGuRRkT+85fAdkhRTJLRLBsWKTMNHL1iddW9Wc6c4+7GF5NpoOT7RdK/Nbr7oMQGs1rocKnp5CqW0YGZa4WOFnyi6GE0vB8r4UkcoNgRTD8zqxq/Izla02w2+8Ba5y04lhOIIC3/RyqDskxduIYy66iauzFUStKftyk7RJjAXnBPXgwuvWTD8YyVjpdELYHppE/bs224h4jHiU+7vxZeT+z67WoUJXfI8A5BvVUfacyqkb67MVjoOTJVir+QST2BVLPJQBGNMn7hWWGDFHGY7oRb5ocxvykQ//3rM/FsgDf0bYzAqvK/gaMi/sGuPMtZzIkO3w== 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=S8KsHw3NqjXFXBGvmVIOevvssRs9c8FS3p2k71bKNok=; b=JkpYnOC5tEF3iNhEue79y4J+vPjeTOeg6UVfjLOjJ+VsDVwVhn8YYYiQvYGe/B163dmq7V6mqOpNtRroP/5yC76QtqUqZwiAwyAfjK0Z5+XnysoqXYAgvJHu28tMRIXxsfFFCUE4iY3DUGmBtZvj6F4kxyZNFSMBcQ9CMxFSOEJInzyVJWw7PSYuXL2SW9MnfnPECU6AZOyK8ENgunximLaM63+LZZ0Hcjyou7IjOkB6H+8nVRzv/9sLZKztbEAwK9wu/ZtPQT7YUHC/ylr8FVROjTuTPgMI3TtRxLBFfG68Fs1fJX6xmXc3xF4RAZ0MjkAlMvQrbi6Pe2urOPt64g== 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 DB7PR04MB5067.eurprd04.prod.outlook.com (2603:10a6:10:1a::28) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5102.22; Mon, 28 Mar 2022 09:38:09 +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.5102.022; Mon, 28 Mar 2022 09:38:09 +0000 From: Geliang Tang To: mptcp@lists.linux.dev CC: Geliang Tang , Florian Westphal Subject: [PATCH mptcp-next v7 1/8] mptcp: add struct mptcp_sched_ops Date: Mon, 28 Mar 2022 17:37:55 +0800 Message-ID: <033f8762a38a1d4a838bc737104c609d86fec8cf.1648459865.git.geliang.tang@suse.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: References: Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: HK0PR01CA0066.apcprd01.prod.exchangelabs.com (2603:1096:203:a6::30) 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: 3e1473bc-2ea5-4f57-18ad-08da109eab3d X-MS-TrafficTypeDiagnostic: DB7PR04MB5067: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: 2tG0NJ2mqegbX5Jz1M+TDLGMsJ1CUa39QGbhwdAVhPoy+5S433IoVQFJHuB87xky3HU6FKYY9x2A8LNOvoJHGfaeqwAU6NE0byAUmRiJztOC8+RYpPaQBBAx2aEa9uDQf4zWa4m9/wv9DyjEwArB8j9NfGOa1nIRZN1SJ66g1FdSI8mA/w4/VbddbWAa1irT43IQnYRXxGvki0fDEHgMEe/IVgRlBLY5Kya2eQiasrbc/laa0zf41D/ZdtRGma3rXRgMByD4JlJ20zYtEmpqhXRk4NZtILZAHqL8HjAhxbU8hGv2XGk7+3tkm75ZutMgnQAjXEN686kWY+JrZPJ+kC7O0vYnbZ3TxxLlj+4AlgSzNQuO8w58do8U50x4IskhNP14HB90rNSo7eo7wLLXlOKRlbacLCZKZo6EwtArCsUJJ/Gj+tk2iynbIwYtzgwApiiTYD+OuCidwjYOVNPc8fz+FYNAppNXpy89kpwjliay1nP/+Yw/jpUJ09k2ZzriQH+bnQfmWiQhWKgDJoxNFU7K3/j+2iPgVRtELBe7PATPrgvcaWdZTH8r1l6GPuIhK8DPPhNrgN86vyWR3c88c5EFGA1DCAZTc8oK4bJMC/KHjm1u3JobZoQbzlp0lA85iYLhB/5ZpR9wasfIVV+q9zmzZFwtO9Iam1jJVB6sDQmeOrTKVXUMbRl1O8TKaVhX 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)(6916009)(54906003)(66476007)(66556008)(38100700002)(66946007)(2906002)(8936002)(86362001)(316002)(44832011)(5660300002)(6486002)(83380400001)(8676002)(4326008)(6506007)(6512007)(508600001)(2616005)(186003)(26005)(6666004)(36756003)(13296009);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?42xm1eFPKqBlvbYNzsSxdGO0jc9Osa/Cize1MKmkls0aQEzSWt2YrpFeL/nt?= =?us-ascii?Q?Vcm8yLyoV3XEGEM2cxo7O+HrDPcvzjaqs0LCMq4VzizW1FZyUuFSmdxCbaPx?= =?us-ascii?Q?HhGwrGNqMG9saqllYUD+WXH+5h2B21fUH3sY9fo5hx2G29z9fj3C7v19SIVo?= =?us-ascii?Q?U1VV07JpSW72ZYrNmr+2tuqnomOpkiZdwB1sjbnzBpESznChTrKO/YeGilOE?= =?us-ascii?Q?dGAT0nOya7cSG08ztsZTEDNy+Oal4VzjTfaMy7D4NUpf5Emhz2tnpeLwxiHz?= =?us-ascii?Q?D2SzsEOBrJFDRWWVwK0PNnSSdFv5VVIo8St/9e6TgyNvDFo7a5jcYSvb+noQ?= =?us-ascii?Q?t0GwrxKFw6pgHen5mqh33MCcYEjcxjHnZ1C7rejozW8WGaXiBGQ7umBuLglE?= =?us-ascii?Q?ubqxpNNRfM+PUh+rUm/0wraRpIDrJtmLYkn0kDP3KGqGL59i8hAzBc1dh08y?= =?us-ascii?Q?/70UgkLNGzwOhzm1P1LFbs6eT5EJfWaPA/NKfqbfUZ8MQGW9B9nbWUBoXsMD?= =?us-ascii?Q?4+YdOPy8+AQMwg/JLfefi4xs8RoYf54AnuoORXjHjPGa5rrBgRwmVeKo/x7Z?= =?us-ascii?Q?H861g8yw0Hc2jb2GkSNXoYixB2ApAqB7cPLAh9q1Sq1y1PjeQyUTjbgBGueG?= =?us-ascii?Q?K9bavhz1soZyQ1cC9ELciWQeCF/3LLWYFN3Sz5v1OnvGznSMaLcQq7XgyiwS?= =?us-ascii?Q?ctvOan0ZSj2Yf7d2uPi7BlOqSZUoeyRXTIIYPFTof4kgXTq6BPF2ayMc4aq3?= =?us-ascii?Q?lSm/d8jmhzXOh43b/MbJLQbIz+GYstoRBlUs8uNnd0pwPuggC46bylkXYywA?= =?us-ascii?Q?B6TMyEB6jf+bM271ZryY9oV3V/cBlIy1Z6ADMQF3ebPpYotuyGkJz9ptwsLV?= =?us-ascii?Q?t3807K2GC67etwhURGNMSZtqExifWXlBaePwYMwYCLWK5OuVyluBivk1XnSH?= =?us-ascii?Q?d18rN7SgRNqMEtBKAtAYO3DQnZirAFQ3XNlaNz3jDYjvnOD8SiczJJtT1LUQ?= =?us-ascii?Q?cBtjKSHZw+aD6VmXygDFP9DIQQqMvbZQLUKhipASqzGXpzOZW5pFqGcsIxfO?= =?us-ascii?Q?V5uQj0QUnQKJL/s+oylVZe2Hofh+ASyg1JfZJzNglVcZy4O6yFnU06DgmcRb?= =?us-ascii?Q?oWIqSdTsA6LeBQj4UqJyYh17HS4IsbuaLoaW7UGw4OxxH4V1nlm9TKk9Ne4E?= =?us-ascii?Q?Xezf+0zp4pSXl8jA+dmlYku8ro6+K53VPl1vt/zRLEKXAiFucWbViXB9Hz3A?= =?us-ascii?Q?4elvICKAUcM2xxE3tkRx4TPzPwzVRWSO/EPDpMMVKEaiCfMGJf5Dpe3PImSc?= =?us-ascii?Q?xqEdW5nSFQlyh1A9OQbuOClB5eSqoAPAwRByrBqFwf55OsVC7IXCAhb2UYQo?= =?us-ascii?Q?sugDEMAPS2aAYlEdfshdbD4d1qhSMfoc0LLTaAzC35Xe/wj5bcYiMJt6YcFG?= =?us-ascii?Q?gLytsuf16GNf09aCeQlumX66eJ1SYVAmYHlV+HipI7CYOhw/Z44Xo3xSapo6?= =?us-ascii?Q?MSFd0u9lZVpyGNUGRQE80qOrCNMHuEDzPtAIcI+nVLzScd4aGBEhhuKs4lZu?= =?us-ascii?Q?3tiSLZrArVZ7QdjlMJzU6JZ1nk7McaBfPKTpeuTY7LF2E5B/KliUsaCVJ7Qr?= =?us-ascii?Q?VhUL1FV8mTz/qG85lxRVDruuXA1OqoIBA8vf64qhYAsvKDhIeI/3hp7o/7hR?= =?us-ascii?Q?/vbKcfVj2F+dlEbUwcW6nF+qURk2Dm2Fyax/iGjUAtgkqnsBy/+dHhDyZ++B?= =?us-ascii?Q?MAV4SvtqdEB9s3GmZRyRYPUrH9r8PwU=3D?= X-OriginatorOrg: suse.com X-MS-Exchange-CrossTenant-Network-Message-Id: 3e1473bc-2ea5-4f57-18ad-08da109eab3d X-MS-Exchange-CrossTenant-AuthSource: HE1PR0402MB3497.eurprd04.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 28 Mar 2022 09:38:09.2943 (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: 7grn8qnQnMUsoKGpJuZKwabj3E+VGU3owA0MeTVCDwM8dSZn0bH6t/MJIC1y/pbBJPmnBe3uNnAwwxQT9k/JnQ== X-MS-Exchange-Transport-CrossTenantHeadersStamped: DB7PR04MB5067 Content-Type: text/plain; charset="utf-8" This patch defines struct mptcp_sched_ops, which has three struct members, name, owner and list, and three function pointers, init, release and get_subflow. Add the scheduler registering, unregistering and finding functions to add or delete or find a packet scheduler on the pernet sched_list. Suggested-by: Florian Westphal Signed-off-by: Geliang Tang --- include/net/mptcp.h | 13 +++++ net/mptcp/Makefile | 2 +- net/mptcp/protocol.c | 1 + net/mptcp/protocol.h | 7 +++ net/mptcp/sched.c | 113 +++++++++++++++++++++++++++++++++++++++++++ 5 files changed, 135 insertions(+), 1 deletion(-) create mode 100644 net/mptcp/sched.c diff --git a/include/net/mptcp.h b/include/net/mptcp.h index 8b1afd6f5cc4..e3a0baa8dbd7 100644 --- a/include/net/mptcp.h +++ b/include/net/mptcp.h @@ -95,6 +95,19 @@ struct mptcp_out_options { #endif }; =20 +#define MPTCP_SCHED_NAME_MAX 16 + +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; + + void (*init)(struct mptcp_sock *msk); + void (*release)(struct mptcp_sock *msk); +} ____cacheline_aligned_in_smp; + #ifdef CONFIG_MPTCP extern struct request_sock_ops mptcp_subflow_request_sock_ops; =20 diff --git a/net/mptcp/Makefile b/net/mptcp/Makefile index 168c55d1c917..a37330760b0c 100644 --- a/net/mptcp/Makefile +++ b/net/mptcp/Makefile @@ -2,7 +2,7 @@ obj-$(CONFIG_MPTCP) +=3D mptcp.o =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 d3887f628b54..b1d7c8b0c112 100644 --- a/net/mptcp/protocol.c +++ b/net/mptcp/protocol.c @@ -3807,6 +3807,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 fd82fd113113..3258b740c8ee 100644 --- a/net/mptcp/protocol.h +++ b/net/mptcp/protocol.h @@ -608,6 +608,13 @@ int mptcp_subflow_create_socket(struct sock *sk, struc= t socket **new_sock); void mptcp_info2sockaddr(const struct mptcp_addr_info *info, struct sockaddr_storage *addr, unsigned short family); +struct mptcp_sched_ops *mptcp_sched_find(const struct net *net, + const char *name); +int mptcp_register_scheduler(const struct net *net, + struct mptcp_sched_ops *sched); +void mptcp_unregister_scheduler(const struct net *net, + struct mptcp_sched_ops *sched); +void mptcp_sched_init(void); =20 static inline bool __mptcp_subflow_active(struct mptcp_subflow_context *su= bflow) { diff --git a/net/mptcp/sched.c b/net/mptcp/sched.c new file mode 100644 index 000000000000..ae1956b6de92 --- /dev/null +++ b/net/mptcp/sched.c @@ -0,0 +1,113 @@ +// SPDX-License-Identifier: GPL-2.0 +/* Multipath TCP + * + * Copyright (c) 2022, SUSE. + */ + +#define pr_fmt(fmt) "MPTCP: " fmt + +#include +#include +#include +#include +#include +#include +#include +#include "protocol.h" + +static int sched_pernet_id; + +struct sched_pernet { + /* protects pernet updates */ + spinlock_t lock; + struct list_head sched_list; +}; + +static struct sched_pernet *sched_get_pernet(const struct net *net) +{ + return net_generic(net, sched_pernet_id); +} + +struct mptcp_sched_ops *mptcp_sched_find(const struct net *net, + const char *name) +{ + struct sched_pernet *pernet =3D sched_get_pernet(net); + struct mptcp_sched_ops *sched, *ret =3D NULL; + + rcu_read_lock(); + list_for_each_entry_rcu(sched, &pernet->sched_list, list) { + if (!strcmp(sched->name, name)) { + ret =3D sched; + break; + } + } + rcu_read_unlock(); + + return ret; +} + +int mptcp_register_scheduler(const struct net *net, + struct mptcp_sched_ops *sched) +{ + struct sched_pernet *pernet =3D sched_get_pernet(net); + + if (!sched->get_subflow) + return -EINVAL; + + if (mptcp_sched_find(net, sched->name)) + return -EEXIST; + + spin_lock(&pernet->lock); + list_add_tail_rcu(&sched->list, &pernet->sched_list); + spin_unlock(&pernet->lock); + + pr_debug("%s registered", sched->name); + return 0; +} + +void mptcp_unregister_scheduler(const struct net *net, + struct mptcp_sched_ops *sched) +{ + struct sched_pernet *pernet =3D sched_get_pernet(net); + + spin_lock(&pernet->lock); + list_del_rcu(&sched->list); + spin_unlock(&pernet->lock); + + /* avoid workqueue lockup */ + synchronize_rcu(); +} + +static int __net_init sched_init_net(struct net *net) +{ + struct sched_pernet *pernet =3D sched_get_pernet(net); + + INIT_LIST_HEAD_RCU(&pernet->sched_list); + spin_lock_init(&pernet->lock); + + return 0; +} + +static void __net_exit sched_exit_net(struct net *net) +{ + struct sched_pernet *pernet =3D sched_get_pernet(net); + struct mptcp_sched_ops *sched; + + spin_lock(&pernet->lock); + list_for_each_entry_rcu(sched, &pernet->sched_list, list) + list_del_rcu(&sched->list); + spin_unlock(&pernet->lock); +} + +static struct pernet_operations mptcp_sched_pernet_ops =3D { + .init =3D sched_init_net, + .exit =3D sched_exit_net, + .id =3D &sched_pernet_id, + .size =3D sizeof(struct sched_pernet), +}; + +void mptcp_sched_init(void) +{ + if (register_pernet_subsys(&mptcp_sched_pernet_ops) < 0) + panic("Failed to register MPTCP sched pernet subsystem.\n"); +} --=20 2.34.1 From nobody Thu May 2 09:29:02 2024 Delivered-To: wpasupplicant.patchew@gmail.com Received: by 2002:a17:907:7811:b0:6d8:2910:9a8 with SMTP id la17csp4036378ejc; Mon, 28 Mar 2022 02:38:23 -0700 (PDT) X-Google-Smtp-Source: ABdhPJz/DM5o6mEfx8TqdQ747RZH+JcJWdSwBTEoVDDAJU1mmQ5jE9k2M8e6YXqWksM+4xquVkRD X-Received: by 2002:a17:903:2351:b0:154:5ab7:8724 with SMTP id c17-20020a170903235100b001545ab78724mr25024032plh.22.1648460302779; Mon, 28 Mar 2022 02:38:22 -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 3-20020a170902c20300b00153b2d16625si11244100pll.557.2022.03.28.02.38.22 for (version=TLS1_2 cipher=ECDHE-ECDSA-AES128-GCM-SHA256 bits=128/128); Mon, 28 Mar 2022 02:38:22 -0700 (PDT) Received-SPF: pass (google.com: domain of mptcp+bounces-4466-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=KJqhl8tv; arc=fail (body hash mismatch); spf=pass (google.com: domain of mptcp+bounces-4466-wpasupplicant.patchew=gmail.com@lists.linux.dev designates 2604:1380:1000:8100::1 as permitted sender) smtp.mailfrom="mptcp+bounces-4466-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 276B63E0E69 for ; Mon, 28 Mar 2022 09:38:22 +0000 (UTC) Received: from localhost.localdomain (localhost.localdomain [127.0.0.1]) by smtp.subspace.kernel.org (Postfix) with ESMTP id 30952434E; Mon, 28 Mar 2022 09:38:21 +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 711B27C for ; Mon, 28 Mar 2022 09:38:19 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=suse.com; s=mimecast20200619; t=1648460297; 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=07Mi45gdW29fyVfCL+cyHQvOF5SHeGenyDmapEHikUo=; b=KJqhl8tvymEBUm5Tj9EXEAEg9PD7Q2fTUczP8TxfnEmUmOBMP3t5tcbJd8nGQpmdyOD5Y6 JHNdsz7VKsY3+vNHerLF6asc2/ataj2lZMQJoz+xIIx2MIHktHJUAqVKfMAmX8hhesxvwt kHoK8XvV0TVLx+kRwsjPJfD6GYsI7zw= Received: from EUR03-VE1-obe.outbound.protection.outlook.com (mail-ve1eur03lp2055.outbound.protection.outlook.com [104.47.9.55]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id de-mta-16-Huh1p26XMyS8frfSQKkzqA-1; Mon, 28 Mar 2022 11:38:16 +0200 X-MC-Unique: Huh1p26XMyS8frfSQKkzqA-1 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=Fn2GqOiyWqfMUgYeOdGA9IGgASQ9/Jy9cYTvokKmzM2XGNP3DYCaRrMd99uSG7OCqD83uovJ0Vy0a+uNaSxFjFnWt84bCtGscR1/cx+l1NtRluvP8mxjqqyEYNKivnRBfROMnQBrJNMNhqJFREIPYNu4Ew+/ujwBLst88N9p+ScnERh6mUymje5iFbf5FpOZkHXeJ0B/5L6ly/06G7IFkaHRtlsZEhH8VzZkZUPduFFdbxdZn6qS6CaKq/GNjC6L3+b6gQwXsciaFBXKuvnjtOS/VaLk6sETGywSMkL/pytcy3WKzmfy2/Ai6Gkuyo+I9xjURD6Zq1d7qH25rbxYeQ== 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=8lN7S5TalWS4+INezh4rB/xrUvt7NA9yhW6E7t2b5ng=; b=J8E5LhMgrWskSi3D7Jm1g4rNnDp3fEVhTIOkS7lh3dogC+WyGZAVTs5dSBtsf5KckZWZlHrCOxYvpbgId6NVWvJ+yByMvmIz2g7O6szFxNDzbxYvGo5TEmLjsgve2fPeEuPB3WFEaycLLbVl2N6QoUaE2IBTYlTUUE6IYxfpZ3/5GFRVnH++pL2ueSq4ILWFK0CP1C5lR427y3lc18cBc9kLLkxlCLroRfzZgCTPFD9WFicYCfIbAPHuFmNIuSLNKFQVkaAcqAPw1WwgEu2K3+XtIx7wzzkaKqxkDBdb0n5z5i53oTdd6XfarlLZNcpqUTWFFyY1mw6x57/tcWjhGg== 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 DB7PR04MB5067.eurprd04.prod.outlook.com (2603:10a6:10:1a::28) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5102.22; Mon, 28 Mar 2022 09:38:15 +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.5102.022; Mon, 28 Mar 2022 09:38:15 +0000 From: Geliang Tang To: mptcp@lists.linux.dev CC: Geliang Tang Subject: [PATCH mptcp-next v7 2/8] mptcp: register default scheduler Date: Mon, 28 Mar 2022 17:37:56 +0800 Message-ID: <729cf003fe9aaadc03b2a9a4cc7328425804031e.1648459865.git.geliang.tang@suse.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: References: Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: HK0PR01CA0066.apcprd01.prod.exchangelabs.com (2603:1096:203:a6::30) 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: a293fa06-d756-42ef-76df-08da109eaefb X-MS-TrafficTypeDiagnostic: DB7PR04MB5067: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: UiTRHLcsOwhyhduF0+yRPQhMRGb4zfBsZ44XD2iIwGFh2l5+SRYfwzUBGqUEXW/ODpw6qebfgBMjm/ErjA4QsKMvm28vBC017bPRE75/xUVBWk6f1d6gNvBSedY1jgAoxuOG/T92WsD//wDh9KDBnPJid/uaL9VxA3E3geguCfG2cxXMf3XT5SXijyNsph2++Ek/4U/T9/6JO8XbU1QNE3DiYhW3UqrAr+vIxiljNi/NYccH1mXUT6+56ttLyMl+AC4hCOCOUPRv4TJe2BJ26E/eTZeKzRJdp0x9MBoJiZIKVLuSUBBR63NKsZFU5JNSj9hbAV8R18zvsAMbEkwoylcMfoP4uJUaTpkzeHJDD8gWq+14Uf6PhM0fU+iUiTPhfsUIPhxpnegDYT7JzYUKL0/+UCO7W6FQ1UoXjrMs0SZIFrx6KA2owGqQcQ8Gd5OwapUClrEZvfRDKmt91nX1x6Iv+pVATaq9/wMcQEoBbnnt0RyQ9Wx9NTFD1wkgZZknEg1skYeb60hAg2YHCwOtRjDrhIiOogZtu5PTTiJ0PHsfrbjj6o8OTMBxeYrESYijsn0ThTddsT5dBQTL6tR918BiIpjLcGdsxRJCSkaE9h4OElVljrpCP6j4kiJED46auRgyg2tks9fpFWNIAx6wvmynfEi0s+XagUzUo9eHc6Luo7ZTtFlKfu85ko5VXuIFZTK3FumQgEBdub5maZCcPA== 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)(6916009)(66476007)(66556008)(38100700002)(66946007)(2906002)(8936002)(86362001)(316002)(44832011)(5660300002)(6486002)(83380400001)(8676002)(4326008)(6506007)(6512007)(508600001)(107886003)(2616005)(186003)(26005)(6666004)(36756003)(13296009);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?EFypAgmk0VNvG3mWL/w4+8BTY41FRwop/9Asino7SR/TROg2nB8zk5yrg0cb?= =?us-ascii?Q?0MXkBOjWEMSYbi8S7QddV9gA25eQyKC93u2jjnLkBhqpT9rJhJS5CCzNtyep?= =?us-ascii?Q?Em/p9CJNA0EslQRTA+8GNckFlmTc/G1wBOigDzBNsnNmnBxAxHwB6eafhzgz?= =?us-ascii?Q?4Nzt+sOxmtiDuN7WmmPMS7tvkWe7Q7OVYrSGtGu+mwtEial/S834F+iIleYN?= =?us-ascii?Q?M1zSE4EIAF2B8cMIklnHb64U5pXCOAKiQuOtEmCakQiJFKfGUGWmO15w+qxR?= =?us-ascii?Q?T71EaTPE3OqtjkrAlOzmNvAJxvh94/T+I1r+hyG6IkmJHMR+69asoYJQiswo?= =?us-ascii?Q?+dC0EsDhDPoRwMjzJrPc4Bi3i7671/fx3rbvPcP4B2bnZLaOTw/Q6A3w8J+R?= =?us-ascii?Q?hitki3rW/xpf2EP9Q3oXy0engtztsurlT45/jeQbtvL6LaXkWvOLv7UW5G3K?= =?us-ascii?Q?xjFIpuIV6Vuq+91nBdedwyrmMwDFK3+kDQ7mRsxJnsOlFH7bxyfeGdgeeAF3?= =?us-ascii?Q?L/nHB9ZFXp7yG8AirsLgUFlhT3CyF9XUILdwyTDkv0FYqXkdVxhXlXobEQxe?= =?us-ascii?Q?HhDEAZBuzNCdxsIqpfyvGq3Ds9lNlon3fpLznkmBpQnnI4AN5ZLaSCcimJpe?= =?us-ascii?Q?rw/ODaykS9A8wJa9XzRjkuCCej7DJ6Kc9ldRdveFYc0WlT8rURaV2QuDklI6?= =?us-ascii?Q?newsQ91Rc9ONozP4cq1rPQSjynEt1/opZSFdKiFsFqsxTwZtExirxC1wXBag?= =?us-ascii?Q?dZsWRnMm8W9bzOUEQjw9BkCqnj1iyF3DhAMog0MA8ZpUOkbVV4gvJVvZgZNY?= =?us-ascii?Q?O/LzsNU48pb/xkscOX/rjtrdvVKJJSMwuGUUO2rrXnexQRjiYUQFaMJd7h0V?= =?us-ascii?Q?4W0wHi9GqsrhIaiU5K6DK3CAFhUrOqJJ41gP/EhnKcbdXOjxk6FThcr6JxOj?= =?us-ascii?Q?RbPzkC9FRxfDXaHjC5LtFmkXEuHWmybM+FHsjUzWD4nCUEujOebU7n70/36d?= =?us-ascii?Q?yCyxRseuQ5jS/EAJc0nLO7MNajs6MAnMFuV6giLb1Pyr1mNMQP5zACgFksWg?= =?us-ascii?Q?CuiSTfcSvi/wRTueZBCWMFCN+ZGvmPvvVrVNx77tcz3ozcgVG52Tgh8C14GX?= =?us-ascii?Q?jmhVcgcuHeq7Pxspumqa7aiuYefxifu3V+glJtSmJ8MlqITK7IqpLWFTZLk9?= =?us-ascii?Q?cBjdplmggI0rKSXMbDhN8lPksCnUNgAk3V46BgioLN/PkuYzoKe110ujgOZE?= =?us-ascii?Q?z5wAbok67ROUrujNcCygfVfPkWQ/Lb9BXSxq60yDldPX0v3FOZOLJVXWZj4J?= =?us-ascii?Q?pcgLV3sntvr+t2T91bi8+YenWpkC3VW1WGS7W1SPzCBor71Ju/1fiMappSbh?= =?us-ascii?Q?O/S5kzu79L6+NqGahAI7/4reOIurRvzXYQ5dvqsPSCA8lByLUb2Pua0f5xEA?= =?us-ascii?Q?uRyST42V7DXD4ySu9a3iKI4H09PL32i84/oZ0EYVZ19bKQxZSmP2P1chF/2a?= =?us-ascii?Q?Nc53Qe1xx6JRCWSxlFf4NJmyU1WppPM/IhxzOAD590cDwoO5aUh15b3q3hnX?= =?us-ascii?Q?VnkF7yhOc1u3MecmDRAgdvIrt2ik3bOarnfJ3sIV0Hntjo+RuNmoZ9nSXQag?= =?us-ascii?Q?5y9USkxSrJ9JKAbyKBU8itlaxZmvKA6vNPwsNhOu2V6f8Pn8APQhMqyihqv1?= =?us-ascii?Q?AkZ4IESsKXnooURVDEkEirW5MFhnr/SKjzjivjzxWCn5V+oRyRtbOvcc8vpF?= =?us-ascii?Q?+tzyK0sNJamEbrUD1fhiVXLjfb5iY0k=3D?= X-OriginatorOrg: suse.com X-MS-Exchange-CrossTenant-Network-Message-Id: a293fa06-d756-42ef-76df-08da109eaefb X-MS-Exchange-CrossTenant-AuthSource: HE1PR0402MB3497.eurprd04.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 28 Mar 2022 09:38:15.3876 (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: nWc10jwqyHjrBXMl24YL5g1Z+XpIiEq+Cy23Tfrfh4y8xc4jdcwW2ddWjt58a1rFZS+sSAzB8iTZqu+DWIu9RA== X-MS-Exchange-Transport-CrossTenantHeadersStamped: DB7PR04MB5067 Content-Type: text/plain; charset="utf-8" This patch defines the default packet scheduler mptcp_sched_default, registers it in mptcp_sched_data_init(). Skip deleting this default scheduler in mptcp_unregister_scheduler. Signed-off-by: Geliang Tang --- net/mptcp/protocol.c | 3 ++- net/mptcp/protocol.h | 2 ++ net/mptcp/sched.c | 14 ++++++++++++++ 3 files changed, 18 insertions(+), 1 deletion(-) diff --git a/net/mptcp/protocol.c b/net/mptcp/protocol.c index b1d7c8b0c112..2c684034fe7a 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; @@ -2614,6 +2614,7 @@ static int __mptcp_init_sock(struct sock *sk) msk->recovery =3D false; =20 mptcp_pm_data_init(msk); + mptcp_sched_data_init(sk); =20 /* re-use the csk retrans timer for MPTCP-level retrans */ timer_setup(&msk->sk.icsk_retransmit_timer, mptcp_retransmit_timer, 0); diff --git a/net/mptcp/protocol.h b/net/mptcp/protocol.h index 3258b740c8ee..4c0a3c39e897 100644 --- a/net/mptcp/protocol.h +++ b/net/mptcp/protocol.h @@ -615,6 +615,8 @@ int mptcp_register_scheduler(const struct net *net, void mptcp_unregister_scheduler(const struct net *net, struct mptcp_sched_ops *sched); void mptcp_sched_init(void); +struct sock *mptcp_subflow_get_send(struct mptcp_sock *msk); +void mptcp_sched_data_init(struct sock *sk); =20 static inline bool __mptcp_subflow_active(struct mptcp_subflow_context *su= bflow) { diff --git a/net/mptcp/sched.c b/net/mptcp/sched.c index ae1956b6de92..1fb3dd24d6ff 100644 --- a/net/mptcp/sched.c +++ b/net/mptcp/sched.c @@ -23,6 +23,12 @@ struct sched_pernet { struct list_head sched_list; }; =20 +static struct mptcp_sched_ops mptcp_sched_default =3D { + .get_subflow =3D mptcp_subflow_get_send, + .name =3D "default", + .owner =3D THIS_MODULE, +}; + static struct sched_pernet *sched_get_pernet(const struct net *net) { return net_generic(net, sched_pernet_id); @@ -70,6 +76,9 @@ void mptcp_unregister_scheduler(const struct net *net, { struct sched_pernet *pernet =3D sched_get_pernet(net); =20 + if (sched =3D=3D &mptcp_sched_default) + return; + spin_lock(&pernet->lock); list_del_rcu(&sched->list); spin_unlock(&pernet->lock); @@ -111,3 +120,8 @@ void mptcp_sched_init(void) if (register_pernet_subsys(&mptcp_sched_pernet_ops) < 0) panic("Failed to register MPTCP sched pernet subsystem.\n"); } + +void mptcp_sched_data_init(struct sock *sk) +{ + mptcp_register_scheduler(sock_net(sk), &mptcp_sched_default); +} --=20 2.34.1 From nobody Thu May 2 09:29:02 2024 Delivered-To: wpasupplicant.patchew@gmail.com Received: by 2002:a17:907:7811:b0:6d8:2910:9a8 with SMTP id la17csp4036437ejc; Mon, 28 Mar 2022 02:38:31 -0700 (PDT) X-Google-Smtp-Source: ABdhPJy7oz/3oMb/5W5n7Oxu5eDncszVvWJYulh2FczMAHAlreo3V14iJg6sGsGWWMh1mxd7aaCP X-Received: by 2002:a05:6402:2748:b0:419:25fd:1197 with SMTP id z8-20020a056402274800b0041925fd1197mr15006615edd.170.1648460311617; Mon, 28 Mar 2022 02:38:31 -0700 (PDT) Return-Path: Received: from ewr.edge.kernel.org (ewr.edge.kernel.org. [2604:1380:1:3600::1]) by mx.google.com with ESMTPS id s11-20020a1709060c0b00b006df76385d54si12339285ejf.500.2022.03.28.02.38.31 for (version=TLS1_2 cipher=ECDHE-ECDSA-AES128-GCM-SHA256 bits=128/128); Mon, 28 Mar 2022 02:38:31 -0700 (PDT) Received-SPF: pass (google.com: domain of mptcp+bounces-4467-wpasupplicant.patchew=gmail.com@lists.linux.dev designates 2604:1380:1:3600::1 as permitted sender) client-ip=2604:1380:1:3600::1; Authentication-Results: mx.google.com; dkim=pass header.i=@suse.com header.s=mimecast20200619 header.b=EaT+0HB0; arc=fail (body hash mismatch); spf=pass (google.com: domain of mptcp+bounces-4467-wpasupplicant.patchew=gmail.com@lists.linux.dev designates 2604:1380:1:3600::1 as permitted sender) smtp.mailfrom="mptcp+bounces-4467-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 225431C09E4 for ; Mon, 28 Mar 2022 09:38:30 +0000 (UTC) Received: from localhost.localdomain (localhost.localdomain [127.0.0.1]) by smtp.subspace.kernel.org (Postfix) with ESMTP id D5F8A434E; Mon, 28 Mar 2022 09:38:28 +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 9CA787C for ; Mon, 28 Mar 2022 09:38:26 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=suse.com; s=mimecast20200619; t=1648460304; 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=fPrB6yogrCyWuPsHL1J1F7VvcBWI0liLJZj/j0V5SMI=; b=EaT+0HB0CEquhZ5Tk50AX/xx7lzWTEAsfosfObIJkLgXWuEspU7MbCTRTz7Qn3b5I/2xMA 6R7zWa6n9YYuv5wMGVXUEMZ3KF/30pRkiz57jd9hiu/USArdM9PQHJCd/pFCLzlagoGTKx YXtCU+UmRCZSq9sOahBmvK4V3RSXScg= Received: from EUR03-VE1-obe.outbound.protection.outlook.com (mail-ve1eur03lp2052.outbound.protection.outlook.com [104.47.9.52]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id de-mta-4-vLStwb5qN_WpQgkX-cPKAg-1; Mon, 28 Mar 2022 11:38:23 +0200 X-MC-Unique: vLStwb5qN_WpQgkX-cPKAg-1 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=fJ00QR7waCwBhRjhMsNJBRBRJoNLNh1M2gMxq/v5UReeM1xVOqtHM75pbBfW4CrhmMa4KYa+ueF9biq1ocT2Vhcncf2RsHlzvraZ70uJCZl14Wy4yileqPk7AqFO6goMwnmKUFQNhCbDr2dt1zCNZtbbTyfKksHgXddXkDRvPPWiSsB5US/7lvVGd2/f94uGtFHQv8rpHvpRvGhnRPRwtS4HYQf9qyWrYcjyJ+gHlNsFTfBiDIfZQgz1hUXX95HRljkbAU7/I782garsWtTG8raxpjpXrTW2iNymclhYmz3ZdkI64cGSVtXkEAID9/MPE1mjNYKtqo9OiZJ5U3i6GQ== 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=K3batoZYvviKMA8nJY0rJvoR016zww+Mj2NP1dhJd8I=; b=mwP7kthQBfr/fsApWEcubByaVQFDoijF6gYDewrUze7rq3SVrLHUd5qjDXHgVgQrogFiVxFb7PcDNLKP5dzAakQnXmYpQ9r5IRnl/IFmxZ5O2nvTuEK33YhhAuLhPgU0rBVg63CRpw/7vFFBMWT/p9Q/SR8fAzwpjlzZp+qoFj6LKiWc0dH/lQwXW6ejF89W2JNInF/KIjH3ztbGqSlvubWKLhr3Wmh9vRWsza4kJq5AK4cwt9mVZG+C61FGhq1nvoSbtILz6XvFYTUud3TViYI8YgjomFY2B/QZ9+u7AGVWCA8rV27gGYb44Zi0OYrDjm9ZqPYeVXWmD2PKmxTZVQ== 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 DB7PR04MB5067.eurprd04.prod.outlook.com (2603:10a6:10:1a::28) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5102.22; Mon, 28 Mar 2022 09:38:22 +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.5102.022; Mon, 28 Mar 2022 09:38:22 +0000 From: Geliang Tang To: mptcp@lists.linux.dev CC: Geliang Tang Subject: [PATCH mptcp-next v7 3/8] mptcp: add a new sysctl scheduler Date: Mon, 28 Mar 2022 17:37:57 +0800 Message-ID: <1672f52dfd1ca08871554f6e934569e7d4fa9dcb.1648459865.git.geliang.tang@suse.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: References: Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: HK0PR01CA0062.apcprd01.prod.exchangelabs.com (2603:1096:203:a6::26) 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: 14f369fa-825d-4cd5-47c0-08da109eb2ee X-MS-TrafficTypeDiagnostic: DB7PR04MB5067: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: yq+jUzTNNmynlGPQLUzJPhho6EDYmaGAXj8Td64uZnGfi9v29jyE2ymwG48yTGeRyLHYhZ/l92C2vPspaM8ATX8Tfrr4epFqGYhe9no4nJ8YB93T544jFa1JZ9pxQvi7odC2+eFUGozlQbRlbSjZ/6AiBho7jZ+67BDyLNYfXXNkP1n4R+ZL6k1CW2I2o8/ve2etgPRS8dghCqQrnGUorUi8VvTShTD+Rb19CWRR8qKck4EqLxT489AwYFHJhkO0fXD3ggd4DddVWHqum8T6MHy4YNicYLHxcoGgV5qgfYUX7BfKyYNy1sj3o3ttfG6iJSWE5tXdXVb58ou9YQtFvzU6qIpVuW9WShUSbHPnqNtzAxvnR7qpqn+9dAFfmpumRYdx7baI8V9ug86PwVPjbK3s9OBbs8pjdsszFTQE8mN0fG8zAHxZS0y1xOoCGNoPfvyFf6Hoxr3iQPI6pxq+yDPM5KQsL7k7PPOWbpefPIZNVvpFRo65VRA0u45QiYWFgjhZ5FCfDUyWUlGVAgk3tG0/cZShIO5bnksCQ6fBWTiRfDMZ4bQJAZnKPWpV5QCP9SviUtuOdk3hWqKi5D6J8B/uLhwVUIbd0D79l1H5sl5/El8EYFKnXN78j1eXanPk6AtpuhITkw2dcJLY5RyBWlJ/Y0KOdWZBNtgbJCmxQJOq8QX7IFBbjbESN3oA9z2UISRWZvxPmKnteHR2uOx6qw== 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)(6916009)(66476007)(66556008)(38100700002)(66946007)(2906002)(8936002)(86362001)(316002)(44832011)(5660300002)(6486002)(8676002)(4326008)(6506007)(6512007)(508600001)(107886003)(2616005)(186003)(26005)(6666004)(36756003)(13296009);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?vMWfIR0QgFKpSI5E4fJB0RtlE39OThEo93+6jMuSngxETpNxI6xV2HPwxrV3?= =?us-ascii?Q?fqjVmxemXCE+alXgKWHAQVElrrYFasQHwYLdPK9URZ/Rtu8+aWwiL4oupIOr?= =?us-ascii?Q?ZF4j/HDOw5EMIzQcEJugyiCGQlyaq15oaHrzLW/8Pg4h+iHzV4huWCGGIPSZ?= =?us-ascii?Q?oG6yuN7eReF8b31oO6wxLpWaKOJmVgPG+EtYAw6c4EYfipHRXNLuT/uGmyuX?= =?us-ascii?Q?4R0r/0f4Ms4NO7FbZdLAb+E3u0HLLbaKkwqJloxSPseucBCAZQJmorRHqyos?= =?us-ascii?Q?c/p6IqoQ2EvVfKm9+/CQmdjik4s3ZNEoA0BDGpXyLnJNLdJPScKm33eOJho7?= =?us-ascii?Q?S8+OOw+elO8uxISGNUPG2s3/bnVkrNNzuJBr61nLZJma9Jh/a+aa7IFHUE2a?= =?us-ascii?Q?Li4gq8GgZ+SQGJjDW6/Yv2Q2OiIr7wUchG25/7XbyOGQAliM/W2/onUiu1l5?= =?us-ascii?Q?NEwzea9U4NdRx+NjrgweIfFoqLtCuxU5/ehW7oshc6WVESRU/QN76vAaQIk8?= =?us-ascii?Q?SnLyRI/gc4zwWwqdjQo4ZzHomyveZiHddKiI5nS2xnKDBGvVUcit9HFPbXiq?= =?us-ascii?Q?wXLRcKmowz3fNKdRa/3ix+foCuoMlK6pImDLaM9cNwuKSiU1nXCwqViL76la?= =?us-ascii?Q?U++ILqeRyOkaQWqBvUhpwfqBLNiIQiCVeOwdewUkBa89QKh0cX0hBID3S8IC?= =?us-ascii?Q?HOsiqoIyyMaz8ndFXSOBnnEDEjKGjmJ/M4ib5N/K8WYeJGH9OHx4odDsZSGl?= =?us-ascii?Q?AB4TX9XOi7t4V6EsOPYB8BSxTnyXRzMLLhm+oXrCMpvH86EleSAIvV3SW5XR?= =?us-ascii?Q?smecSMGz1ko2D7v+zipnSF3fZ9KTA90Xtma8iTr/XRzJN/zZnKk0gb8GupXH?= =?us-ascii?Q?YNAbs4Zsufsw4f7I+f6SeKUtjvxUwtrRR/SJ+/qpDt8gV4yZ1SqGye3lO33f?= =?us-ascii?Q?wI/Kd2nwa0/23bIk64mgGaV1fVs578MyFTALYoZhK6WyB8aB8rM26Q48tuw2?= =?us-ascii?Q?S7gZSM6hpaDBReplE+mYyRaPvOAJtWMZ4NzTQmWNTz/hw03GFSs4FWEyKE3V?= =?us-ascii?Q?AV/1rxsm7ukVwscA9zd0K85F0T0Gap6zvkBiB8e5mQT9MOns95uqm2YU0hbn?= =?us-ascii?Q?XkpOnVE6XF3Zw7U/wCC/4r2egds2OJjXWTeV4Y8kY4PzYH/riNNLqIW0mKxp?= =?us-ascii?Q?Bb6dlryVI054xT/zSYk9pYbu0ik1SJwMB/ZYOe6UeZ4j3DIyjO6w1MbAeglY?= =?us-ascii?Q?FYPKzYhlqzy00t8UIzbFNODv38CD2ybsnYk0bLXvIAeijeVSJC475gYdIZTN?= =?us-ascii?Q?4CS72wC9dCGIkUNsjHIqrCxnzPmwdaAWLirkD4rRZDL/wUPoRbhgDOZfyD7q?= =?us-ascii?Q?I1lOp14/thIdpz6kjbVf3EwbSq1Ccy2Qhh46X3x7POBaVMuYuT/t3ddYluBI?= =?us-ascii?Q?h89QPSdkZ45Rwhcl3DceAZAYbhaecDCV/QdpBllpnqKinyM+A+JIeDOcI/bm?= =?us-ascii?Q?CJeDRvVzGL0TIlPD8ezJz4+tDmOnf6liSdhjXqmrchZqh3Zs7nneet0Y3Stn?= =?us-ascii?Q?YZY74pHtPXHquJGkTB6i0r7W4+sVw7GfdiR9v6uYNpz6OD0maWE6tSbx8qAH?= =?us-ascii?Q?PFAJeBbw8isrTzgoYhTEc6ch1bxmfp3am0PL0nr8UJP7D80xui3+hD3JpgrC?= =?us-ascii?Q?eZD+UjmXiNe6tERZDOe14jAtrihkM4SuZTkdVQWse878pn0R7CW6HEmca1fW?= =?us-ascii?Q?drZytq5guK5eI0wOqT64qi7eBQQhEYg=3D?= X-OriginatorOrg: suse.com X-MS-Exchange-CrossTenant-Network-Message-Id: 14f369fa-825d-4cd5-47c0-08da109eb2ee X-MS-Exchange-CrossTenant-AuthSource: HE1PR0402MB3497.eurprd04.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 28 Mar 2022 09:38:22.2308 (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: mSh6TdBrMzrJNXcY+oD4367Zm6FSsFPNrwOym4NgP0h6YIRWS47p9P/ko3M/4u1S+nZ81ei5d3s8tgK3JC8c4w== X-MS-Exchange-Transport-CrossTenantHeadersStamped: DB7PR04MB5067 Content-Type: text/plain; charset="utf-8" This patch adds a new sysctl, named scheduler, to support for selection of different schedulers. Export mptcp_get_scheduler helper to get this sysctl. Signed-off-by: Geliang Tang --- Documentation/networking/mptcp-sysctl.rst | 8 ++++++++ net/mptcp/ctrl.c | 14 ++++++++++++++ net/mptcp/protocol.h | 1 + 3 files changed, 23 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/net/mptcp/ctrl.c b/net/mptcp/ctrl.c index ae20b7d92e28..c46c22a84d23 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 +const char *mptcp_get_scheduler(const 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 4c0a3c39e897..dd4a2afdb38b 100644 --- a/net/mptcp/protocol.h +++ b/net/mptcp/protocol.h @@ -586,6 +586,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); +const char *mptcp_get_scheduler(const 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 Thu May 2 09:29:02 2024 Delivered-To: wpasupplicant.patchew@gmail.com Received: by 2002:a17:907:7811:b0:6d8:2910:9a8 with SMTP id la17csp4036480ejc; Mon, 28 Mar 2022 02:38:38 -0700 (PDT) X-Google-Smtp-Source: ABdhPJyZw0Yk4sDEe/UYuMggydZLq1iakyeI7wwAruuKCU9YnC8LNsnBB+tYhsceVfMebE2Qvrgy X-Received: by 2002:a17:907:6294:b0:6e1:ea4:74a3 with SMTP id nd20-20020a170907629400b006e10ea474a3mr5197398ejc.168.1648460317977; Mon, 28 Mar 2022 02:38:37 -0700 (PDT) Return-Path: Received: from ewr.edge.kernel.org (ewr.edge.kernel.org. [2604:1380:1:3600::1]) by mx.google.com with ESMTPS id ja19-20020a170907989300b006e0db091514si8313669ejc.769.2022.03.28.02.38.37 for (version=TLS1_2 cipher=ECDHE-ECDSA-AES128-GCM-SHA256 bits=128/128); Mon, 28 Mar 2022 02:38:37 -0700 (PDT) Received-SPF: pass (google.com: domain of mptcp+bounces-4468-wpasupplicant.patchew=gmail.com@lists.linux.dev designates 2604:1380:1:3600::1 as permitted sender) client-ip=2604:1380:1:3600::1; Authentication-Results: mx.google.com; dkim=pass header.i=@suse.com header.s=mimecast20200619 header.b="mjWL/kzI"; arc=fail (body hash mismatch); spf=pass (google.com: domain of mptcp+bounces-4468-wpasupplicant.patchew=gmail.com@lists.linux.dev designates 2604:1380:1:3600::1 as permitted sender) smtp.mailfrom="mptcp+bounces-4468-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 6996E1C0A64 for ; Mon, 28 Mar 2022 09:38:36 +0000 (UTC) Received: from localhost.localdomain (localhost.localdomain [127.0.0.1]) by smtp.subspace.kernel.org (Postfix) with ESMTP id 2BBAA434E; Mon, 28 Mar 2022 09:38:35 +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 1A6487C for ; Mon, 28 Mar 2022 09:38:32 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=suse.com; s=mimecast20200619; t=1648460311; 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=u2w01P4Zk1W9NsyM37E8rvHAw8MwKMsuJF3zjIdqssM=; b=mjWL/kzIYFl+h4Uzk0R4EPtBfFz5PJWFWiz3b7Cq/saQ7jlkproZgbVJDnV6olj7/0kky7 PVzwHIzJ+mN5oS28d1skW9MoVNfCSXXoJ5SUD2wIzoLHcYW88RlkcDBjdyI9U/ZUxZSaPR VkXiWd6s76OrzKnHR8h9+ahrmjiEGu4= Received: from EUR03-VE1-obe.outbound.protection.outlook.com (mail-ve1eur03lp2056.outbound.protection.outlook.com [104.47.9.56]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id de-mta-24-wDBX-yOkMSaoUpsfUrc5Kw-1; Mon, 28 Mar 2022 11:38:29 +0200 X-MC-Unique: wDBX-yOkMSaoUpsfUrc5Kw-1 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=O99fuQBNgVlCfzbXZl7Pfk5FIDQb/ZbSHggsEPT/UYkV70uN4MHU9gLRC1tzbsdGxUCAbiiRTHO9+T9eEU7GX2xeq7HbBV82RnZsehqK2Zv9aHOY3vWPb3fDJyx5aCXuAT1gm7YXHW7vGtSob+QgRvwWax+45xgVOYNoWtFfCFR/yfURbhg7kQgmgnLN1bHnd+KwLk9eBJ65rGKZrUUHo9VZkvUB8G5Ojb/uvetdaCP8OUg+85FKVgyAJ53gZqvkCVGaBxhYuWY32ZE8cB98wrGyprBFzAoM1HXO41aTDBv5kvaryvXNyO1SG2HaA8V/lerf1G7i5nSMnkCiAMvffA== 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=oLoodUEu3QQnqSIAdFgmDyTem0wHMvlACazYP90bCNs=; b=AyeNpQV8fdxXoedf2zmo5LNcWFJK0Tq2jB0ZXdJKGUOfZi6g/gLPozx3A+4TgZOAcYUOr2gbpqTkPSRxqYVAkSz8RuFPl6sRc6j4nRxTApTu1hbTbb8zx8WAAMfnq17uxnpKZcwFS2nmvWkJ53/N3mJJS3ElN/iaUjeNFH0Ctz23xffPTp2IsTc+cQqgUyh/ursae3izs5wpD6Fyl4VgcFXPR7eKKdEQ4zXdIjrMue4LusgKmhF/c6fKFMYKuMZos42NxVLJvkIyaAXgB4/462CZ2XLy/sbJDYYiU6CmvhIZDjexf+GMcTN7VL0V96XAZ9qcyoLTYVlXPiJjCNB/1g== 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 DB7PR04MB5067.eurprd04.prod.outlook.com (2603:10a6:10:1a::28) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5102.22; Mon, 28 Mar 2022 09:38:28 +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.5102.022; Mon, 28 Mar 2022 09:38:28 +0000 From: Geliang Tang To: mptcp@lists.linux.dev CC: Geliang Tang Subject: [PATCH mptcp-next v7 4/8] mptcp: add sched in mptcp_sock Date: Mon, 28 Mar 2022 17:37:58 +0800 Message-ID: <2812381119c23048dadbf5372293c724ff4b7970.1648459865.git.geliang.tang@suse.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: References: Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: HK0PR01CA0050.apcprd01.prod.exchangelabs.com (2603:1096:203:a6::14) To HE1PR0402MB3497.eurprd04.prod.outlook.com (2603:10a6:7:83::14) Precedence: bulk X-Mailing-List: mptcp@lists.linux.dev List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: 62a181e5-6efc-4ff2-7cf5-08da109eb6c4 X-MS-TrafficTypeDiagnostic: DB7PR04MB5067: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: WP/S+GxNO2SbzFung1ZJzqNmWdDyMxXJIvgDpJdqJYZOzXY6suldXPHn4estdzQSgMFBENp6sshgsZmt0l2bZwju5i0sL3D84qd8vd21DYhWgU2d+cpb/EeHHevP7vkrJ/MmwiLp5l7y83ZpB/eO3KWH7BEjYx7QP6sK8b/qtKR2e5OG54vrmOCcKwiPZ/pyFq+6GCEzrh/uMgW5vROwUfBAx/1W66SOSUf4o6hRPS/nizx1nkTc2PM45Tewm/pWoairgCaMuBfpSJeq4tW76kvbqN+jTAl0sIu36um2t/ZSg6yn48evrhPi6V214ZhI6AFsZDD6XzQdWDeGVZS+yvcVy726qlVebN4yCcO5fOWRIxMc95FQxBk1ujPQDi1ytPwncwLunDpCN5Wmz4mIq56Za+J5QLFPd4KAuqnsU/YRV4/C2Z1te7Wmf+mRVoLNob1nLJLiYRZQJv1AHVwQJOrP14keAu+vUFrudGcbaRCJkz5G2Pzp3r534Fz+0m754WYzQbytIVTszi5wQdDWXHJeP20TdFcwEwLfeYfpOnVQRBbtPpF+pFUzeO/pmpksJ8lyTX7EGVG9W3N1JdmWgjaXwoqKJJ9MkGGfqhu8YeDLcwlLd54DH2JnMGB70HgqFJLkxh8l6n7yAHTt77n94mTV/hsnTVufX9zvxbX5ecgQOLYogN3CyCLuIS2p8M3g8lZT4V6xbGtMjNjVmzHqaA== 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)(6916009)(66476007)(66556008)(38100700002)(66946007)(2906002)(8936002)(86362001)(316002)(44832011)(5660300002)(6486002)(83380400001)(8676002)(4326008)(6506007)(6512007)(508600001)(107886003)(2616005)(186003)(26005)(6666004)(36756003)(13296009);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?UXxQTsHWG/rR/vwrJdN0Q1UWlpqjnL7pwUyhlZACCcL89gD4KHJQYscpQNl8?= =?us-ascii?Q?f5Cgk31Z5Ky97AaXvpJ7dSK86NyqODms7tauqO0NERw/Y/qcDMN5xxqTJ3R4?= =?us-ascii?Q?p2v57Ini6WYhYJwBjnP4rOazTKKHRJ+TmpBIYZGmquPdAHVAzCNYjSctr9YC?= =?us-ascii?Q?dZLVLkyMosK3WxQ6dIBLAMjurslajox6qE8+npai0hOS1BSpmYBmLayMbE9l?= =?us-ascii?Q?fxw+WhM/bBjvRVCfhP++Zz3IdY1wmvmyG5+27rPjXs2wgd71V7Q1KSLPeAji?= =?us-ascii?Q?EYZimC9uSAIwaa5VDwP3vAH3o+/kHu6pe7zSwhAz1bLPJ6r+RAwoSWCksILM?= =?us-ascii?Q?FsDdieY1Y3qK+Qp2D2ixB+3opMUNTcFQxImSqP600C8QmYW5+Fr0DP7tj15S?= =?us-ascii?Q?RcNMIwWmsx78FULlYu/LvWBgI+rkdlTuYeZAbHTmj22Vn3E7EslaCW7N0a8t?= =?us-ascii?Q?mKeah24D56RwwMb0NVxHzgHOXGx5/3vt+yPi4vXKBPU9IxI+qMEBNxZBZ0bj?= =?us-ascii?Q?bN+DnKljCz28s2Nf2De5IyqLsHZrQRnZi/jhFbjkfcCYonBHUiktzoxlCX57?= =?us-ascii?Q?rWLE+nopi2WIh82aMtRqhdj1WslFPFP31fWnxtLl+eid7P9rzz8TCbP7puYC?= =?us-ascii?Q?jRkZ4IQNNKEAZcv7Nojgu+9eR5I9ppYEgIPILaRmg8QBAEyyg1rrVtWwL7Kt?= =?us-ascii?Q?JYSuh11ohR8Cq6pDP5SFIUkkerkRxwCtGof9GsZzhQKZYYly0ZjvUnO6TJln?= =?us-ascii?Q?ZGD4AqJ0dxW3IUj1aLIHSSaVxGSeJvTVgnbed35oszY1jcMmQGVDFW6ttPXL?= =?us-ascii?Q?qwXaqvsX0C5V1LqujfNKFkDJMo/rdVOX6ZqcklwziYM+XFkwCAnw0Se6Ngqz?= =?us-ascii?Q?AZALabAh67tsbM3XayOb7KnkN+rEJWhZimLuxEtcMJj+jqC2a++kE7NHSu/o?= =?us-ascii?Q?IwtZPdqwKQVgvPns0eyap3bk0eBTOsoDwLnIkpmxgi9yrGMbCM/m6cIo4SEi?= =?us-ascii?Q?kMXiMZYqN8Ak049TwP6URweQ34w5WT9kdLQXR8lHfVGiz3905n8955VYvLp8?= =?us-ascii?Q?Wq+PTDklHjfcIAYoQMTxt+qimVaYKDO2i2KDdssS9bQnnebrcyQZOCCnUySG?= =?us-ascii?Q?QE8MpLQkLE7CZXB6VN72VW8+VWuFvpC7pwqaeMHNBC3DcG9Ik5IKN76QEE18?= =?us-ascii?Q?/kSqfYv+vMs9NZUWP7TuC71tY41wcLiNi7mlYjH8fDOEEoUuvEUJ/tPrrU81?= =?us-ascii?Q?x8fkbUqA0m8+ZMqOD3K2e2NNJwo/sshnXtxrpJrXjMzNmbjQYWhFjyVRmQ3L?= =?us-ascii?Q?U2R1rE+YNim1TZvM1yPzBDSRzRfnAAqXSaDcRmnxV8vZaRjyyD7+xh9rtMSo?= =?us-ascii?Q?IuF9wqJruSLluThUZPKm3Lykl9zA1XgDqJLbqeJ0aKz/2dd5qYLBL7nngx6Q?= =?us-ascii?Q?1AWnlTNmt6hc3SV5SAh5NVp4q51QauGSLX2sK2UC4sOEQhrotu76B87ElS7F?= =?us-ascii?Q?3uVWgbCbnQ/umvgasCtmQwSy1J2zzDwI+q4ga+t9y3+iu0ywBBVanC/WUvQd?= =?us-ascii?Q?twk4utPHkz7d3qDPA4LLnD1q3ivMb0xd/yGTtnGPiMeKbK2FOGffwDI7gywO?= =?us-ascii?Q?xwcerdE20x4VpjmikR8saScfxb7o8qxbYwgks1MFlmin+ZIlICqVZRPVkji4?= =?us-ascii?Q?IKx8CB18H5D7/+iN1uv2tAqd1xa1b/qzd3j5sFHIemIbwG3PK5exmg9B53Mi?= =?us-ascii?Q?H0ITuzLV4lS7kjpwApJ18U8lUtFQjsU=3D?= X-OriginatorOrg: suse.com X-MS-Exchange-CrossTenant-Network-Message-Id: 62a181e5-6efc-4ff2-7cf5-08da109eb6c4 X-MS-Exchange-CrossTenant-AuthSource: HE1PR0402MB3497.eurprd04.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 28 Mar 2022 09:38:28.6835 (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: QMNoXMr/nRW84D+n77aFvx3+na6EE8alfuZn1n0ENGpmgD5BZC9jUp5G1i7wGnmoEq7GjBmHGxBSPwnjndYEnw== X-MS-Exchange-Transport-CrossTenantHeadersStamped: DB7PR04MB5067 Content-Type: text/plain; charset="utf-8" This patch adds a new struct member sched in struct mptcp_sock. And two helpers mptcp_init_sched() and mptcp_release_sched() to init and release it. Init it with the sysctl scheduler in mptcp_init_sock(), copy the scheduler from the parent in mptcp_sk_clone(), and release it in __mptcp_destroy_sock(). Signed-off-by: Geliang Tang --- net/mptcp/protocol.c | 4 ++++ net/mptcp/protocol.h | 4 ++++ net/mptcp/sched.c | 27 +++++++++++++++++++++++++++ 3 files changed, 35 insertions(+) diff --git a/net/mptcp/protocol.c b/net/mptcp/protocol.c index 2c684034fe7a..82b3846147a6 100644 --- a/net/mptcp/protocol.c +++ b/net/mptcp/protocol.c @@ -2662,6 +2662,8 @@ static int mptcp_init_sock(struct sock *sk) * propagate the correct value */ mptcp_ca_reset(sk); + mptcp_init_sched(mptcp_sk(sk), + mptcp_sched_find(net, mptcp_get_scheduler(net))); =20 sk_sockets_allocated_inc(sk); sk->sk_rcvbuf =3D sock_net(sk)->ipv4.sysctl_tcp_rmem[1]; @@ -2817,6 +2819,7 @@ static void __mptcp_destroy_sock(struct sock *sk) sk_stop_timer(sk, &sk->sk_timer); mptcp_data_unlock(sk); msk->pm.status =3D 0; + mptcp_release_sched(msk); =20 /* clears msk->subflow, allowing the following loop to close * even the initial subflow @@ -2994,6 +2997,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; + mptcp_init_sched(msk, mptcp_sk(sk)->sched); =20 if (mp_opt->suboptions & OPTIONS_MPTCP_MPC) { msk->can_ack =3D true; diff --git a/net/mptcp/protocol.h b/net/mptcp/protocol.h index dd4a2afdb38b..81c35af7ade5 100644 --- a/net/mptcp/protocol.h +++ b/net/mptcp/protocol.h @@ -288,6 +288,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 */ @@ -618,6 +619,9 @@ void mptcp_unregister_scheduler(const struct net *net, void mptcp_sched_init(void); struct sock *mptcp_subflow_get_send(struct mptcp_sock *msk); void mptcp_sched_data_init(struct sock *sk); +int mptcp_init_sched(struct mptcp_sock *msk, + struct mptcp_sched_ops *sched); +void mptcp_release_sched(struct mptcp_sock *msk); =20 static inline bool __mptcp_subflow_active(struct mptcp_subflow_context *su= bflow) { diff --git a/net/mptcp/sched.c b/net/mptcp/sched.c index 1fb3dd24d6ff..9b3a3157111d 100644 --- a/net/mptcp/sched.c +++ b/net/mptcp/sched.c @@ -125,3 +125,30 @@ void mptcp_sched_data_init(struct sock *sk) { mptcp_register_scheduler(sock_net(sk), &mptcp_sched_default); } + +int mptcp_init_sched(struct mptcp_sock *msk, + struct mptcp_sched_ops *sched) +{ + if (!sched) + msk->sched =3D &mptcp_sched_default; + else + msk->sched =3D sched; + + if (!bpf_try_module_get(msk->sched, msk->sched->owner)) + return -EBUSY; + + if (msk->sched->init) + msk->sched->init(msk); + + pr_debug("sched=3D%s", msk->sched->name); + + return 0; +} + +void mptcp_release_sched(struct mptcp_sock *msk) +{ + if (msk->sched && msk->sched->release) + msk->sched->release(msk); + bpf_module_put(msk->sched, msk->sched->owner); + msk->sched =3D NULL; +} --=20 2.34.1 From nobody Thu May 2 09:29:02 2024 Delivered-To: wpasupplicant.patchew@gmail.com Received: by 2002:a17:907:7811:b0:6d8:2910:9a8 with SMTP id la17csp4036520ejc; Mon, 28 Mar 2022 02:38:46 -0700 (PDT) X-Google-Smtp-Source: ABdhPJy31jdvqe5TJiuvhwAe4SswMAMQLyMyepyoj7kgx6lU5ViwMQUuZVJKzfKFFoLvGtgs+9Dj X-Received: by 2002:a63:6e43:0:b0:386:4801:13a6 with SMTP id j64-20020a636e43000000b00386480113a6mr9686923pgc.403.1648460326403; Mon, 28 Mar 2022 02:38:46 -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 r5-20020a654985000000b003827526d429si11313361pgs.267.2022.03.28.02.38.46 for (version=TLS1_2 cipher=ECDHE-ECDSA-AES128-GCM-SHA256 bits=128/128); Mon, 28 Mar 2022 02:38:46 -0700 (PDT) Received-SPF: pass (google.com: domain of mptcp+bounces-4469-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=K92jpCL4; arc=fail (body hash mismatch); spf=pass (google.com: domain of mptcp+bounces-4469-wpasupplicant.patchew=gmail.com@lists.linux.dev designates 2604:1380:1000:8100::1 as permitted sender) smtp.mailfrom="mptcp+bounces-4469-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 DC86A3E0EAA for ; Mon, 28 Mar 2022 09:38:45 +0000 (UTC) Received: from localhost.localdomain (localhost.localdomain [127.0.0.1]) by smtp.subspace.kernel.org (Postfix) with ESMTP id CFAC2434E; Mon, 28 Mar 2022 09:38:44 +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 2EA867C for ; Mon, 28 Mar 2022 09:38:43 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=suse.com; s=mimecast20200619; t=1648460321; 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=7oKutPvnMzM3swtNNeFaTLnrh1cmPsDkeCuk5p70ObA=; b=K92jpCL4m1Yjh5R5VE3CKN/5QKm9SdZD8hbWfUhFxyhVg27tORLP8WxZBWZZdGChAWO/js 9xFBGbfN1dVfeImTs7QqE79anmkmt9s+shEd/ddyTm8EsrLXB/PCMGiISmd5TT+KGfW+pn TAFf5H5AVORBWhfrCBSWIhXOu706h/Q= Received: from EUR03-VE1-obe.outbound.protection.outlook.com (mail-ve1eur03lp2050.outbound.protection.outlook.com [104.47.9.50]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id de-mta-20-Z56jht4bOs2PJMaAANRyYw-1; Mon, 28 Mar 2022 11:38:40 +0200 X-MC-Unique: Z56jht4bOs2PJMaAANRyYw-1 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=Y0g0aa0MaVFTdBczbr0msFDCUydjnfOvwfb2U5fKCnjIHcrfj+0+O4GiHeuyFYd2ms/+mxJoNWWB7e/6YZomAaGO8Ho9R/uBSnyWbwJva0xha6fJXm1+gTogP5pudE3+iO2h5l2larBT8mIfbb8Tppuethuzt51yOuc4A5fsQBdT/79DKCqG51DJklaoQW2+Nm3iIEMh/Qk6GhRuXrmmZwq4oBbclFsVf2XSY+Jp+QGCqrsLkV7ME6p0I5HTit+AAwi0XxS3kvZKpyT/yx0xxJBOS6+M4/o7vgQmDWO3ryb8733iKyzsjBs+PTLvKtjdhD1HV7FOMmQ9L5Svi80mMw== 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=kY6MF4M9CX8TK0ALy/ifSnr1BGXIGefGh+XzM7fnKbQ=; b=TI2zYkLSOnjwkjngfkieR4XLwOH2hh6LMbmClV3iJKejhjayYSD1wBmoP40Ru6pBM9C0YjiYE2AiY5TZ71EUrfau2TYOhV+xMHsUA/B5/dIzAes02ncdYqwXaB4LBUOxvSNq0JFoie/xL+3LTVQse6U3f3Nz7PCme8sEzMmeVEKKbCtB3TPJTuJRZaDGRZEaCEeKNpPkQOFFNk0aNQpjZKk8d1iCuoPdRCMcZ4ddmFe/x+IgJVm9/iU2XL8TAgTX1sdSJ5ReGx0IEnXlQSmlGXfTs+wmE8tyoiL+URJRSCIdL7shrRmo5R2a4kXt8HKdwcqXERNWdaG3rlO+9Xdk6g== 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 DB7PR04MB5067.eurprd04.prod.outlook.com (2603:10a6:10:1a::28) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5102.22; Mon, 28 Mar 2022 09:38:38 +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.5102.022; Mon, 28 Mar 2022 09:38:38 +0000 From: Geliang Tang To: mptcp@lists.linux.dev CC: Geliang Tang Subject: [PATCH mptcp-next v7 5/8] mptcp: add get_subflow wrapper Date: Mon, 28 Mar 2022 17:37:59 +0800 Message-ID: X-Mailer: git-send-email 2.34.1 In-Reply-To: References: Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: HK0PR01CA0067.apcprd01.prod.exchangelabs.com (2603:1096:203:a6::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: d75a7272-5c2a-41a2-db0b-08da109ebcd6 X-MS-TrafficTypeDiagnostic: DB7PR04MB5067: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: m5FbTrwKq/zdRz1Lqi8HjS4u1XmFi+uCiAT/pHWl+hwZvXuBATaHYzGShXaMCmWw+CCIK6G2aZ9vOj0+GbdBOz1VexLnVnyRBx9uWP09G2/ueRRfFMxV/KVjCfcBswRntmqtT57GBQBeftJQzd1Bp3RKHuFIxLtZKZmomiomLqZgIkUr6CRcH+6b8KVnCLJ+ERDYvlY6JtO2oYMQPsnGkTMM5G54ql7Atm4pH1QugPYRyE5+Pt8gehAVgmVc+DrqZRdYp+SgIwp1YKZomazfXxhKsBE4KATKhgg3dh2yVFoeVINIU1o9N/AS4aUcD/+LYSVjqcc7G/rCfs+kNCXihuMxtqF5dPCgiDGwvTknMP7dyf4BVXU8naN7SC56vEYPKi7I5OVbxtbUXbUMHzepry+vgtFzmTPA0ythfub9t1DDr/rqObAKANNmBEbPgGVQN5TeG0qjMyS1nnxaxUdcioRH+vVlMbQRTVhaCTdJe/Gls8k7vP8ZXIbwrmM8H/ax3am3LXuAQDGfGq17YdU22q2+ovJNwdONw59yyKaKsk8Wa3CNq0YWNaoCk9JlVhH7qZeO4bfJhsWJRI//z6SeXEEp+FL4fklsacRLQ4rIwbrDOv+HpZHEfm4v4JfwLNOsAZS/AaNLuhm9gIlGBFhnTvUreLjZx20UAN9FrPcaNVATmM2sr4dGbaSkfILR86xIJCijyO1hPedD9p1nQK+lbA== 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)(6916009)(66476007)(66556008)(38100700002)(66946007)(2906002)(8936002)(86362001)(316002)(44832011)(5660300002)(6486002)(83380400001)(8676002)(4326008)(6506007)(6512007)(508600001)(107886003)(2616005)(186003)(26005)(6666004)(36756003)(13296009);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?4tjc0tydP7kr8k4n0cAcTVXjbRkE3Nzv23UeeeELosPaXJNcJkqK3GlzNFry?= =?us-ascii?Q?Fq4t4ttDI0+aijHncnHBAKqh04zRhDNf9wnsUriASalMQOpHODzJzpvyUI8T?= =?us-ascii?Q?PcWIgXqq6UMJynU9r3u67PESMorL5UDUSEnK4uCIqbOvGCAeGKqoWJsaIJy4?= =?us-ascii?Q?Z0iXy7souTA5kA6HWTl85YAtMWWaxHi0DYaOEqk07ptlPoN4wG4I1XduA757?= =?us-ascii?Q?7aPPa7mSPAAqQrBjxzIuCmNjRBCKVSR7BFRfjuXdeFRzpn3TsTeJHQBvWonp?= =?us-ascii?Q?IWnRrcXzQ+0dACjGYa/dpmGWRLiBioviMXZJXCWy+d29XUQQyEKlIvYNrkMu?= =?us-ascii?Q?2LqJFrJJxUR249Zq2RbLiUNxT9Ut2YBES3s7jhPsGQWroxtpZhzh87qiqLFz?= =?us-ascii?Q?tGRP+1m0INVT0ZMtMfXgnwO50UWgphPfvspxL2iYG1D8PmXa1GkBpN3xrw5O?= =?us-ascii?Q?CJmgeSeC4Uxd72MsZuEcPl6ShqhqnYAkxt1vzU34OxWuIDiwbph0fdjhzTkZ?= =?us-ascii?Q?njTcqkVpClCpyOeCzs0IJHYQCO013FYBGUyAOoegfiEEZsT8cpdaaq/Iieau?= =?us-ascii?Q?3ODKLOSnoxLpboLgqT9GluAUjumOqZ/2seLL/8Utu0UM5QWHjcCrVcZzRjoN?= =?us-ascii?Q?epViyCv4Mm61i/sw/dvT4U8jPQdhnbSeBhZNXds16WsmpIqeI59oo5gP8uNe?= =?us-ascii?Q?BIa8dvJAEMAmNYukvGAWIRMyzDWG+RtKXpmEdlEpz+wfcsHdU3h0TjE6D3qp?= =?us-ascii?Q?UiikHGixywVpTPrOT/Jktd8eQbNnvzFW5cSRpR+q2GcFOkFj/LIJz/rrRaZD?= =?us-ascii?Q?ZtxVlXOlqpQaC74gZgqSMI6mfCvOSV9YVPUyuy1C5QKs2Hn6uestxZEUhjGT?= =?us-ascii?Q?jHreGj2zUU/rT4efTnkR4COmllY7lWxEBWE3xvvKncqjZ+mp3jFNOOw6Sr2d?= =?us-ascii?Q?+fBGyjYeNmtGjzKin4dOT/L04tjz8X/E/Hb8/VwUqlZIw8rJPOOKU3yszPT3?= =?us-ascii?Q?lAsUqkZL6RG7nXCJmg3noWK3CRiT4dPNIk8xzh3iq+l6RR7/Ixv9yGZ4e80r?= =?us-ascii?Q?TofOfAhGULMboW6cKQgCVQpxsreDJnF8D3IuRtCvF8iEYkszP11NRJfadE05?= =?us-ascii?Q?DyWqtCNz6R/PaxY35/Ek1yTyHGEBtMkNowuG4++2FxLSCe7I7M9rncFZb6KZ?= =?us-ascii?Q?v9LRfDo5TKA9QGQLkeXd+zGn/a6nEKG2GKmh8GnObXyP2riO43bne8rtmzBF?= =?us-ascii?Q?reXQH1DFWAuvQB6ETCYoqb65sxfc90xinpceaTG7p1YZwqJGKvC7j0FVE9dg?= =?us-ascii?Q?U0l9YDj7aQBuGQhlL0kX/komvG5ChZwJLx65w4SBpFMEozUy/m5c+9/n7VH0?= =?us-ascii?Q?15pgs+4/IMAARBvB9nyDfeVxTP2XojAsLSeFTn034BbdnIX9bSBoh8y7I4ke?= =?us-ascii?Q?6pECWtLQVBP8rdiil8ryqzkKf4gGuYdcI96oAbbu36VAnwLjQEKFoFdtObzw?= =?us-ascii?Q?Fq909Obt2k/BDsQ+99g/W/z1ieA5uJFMoXHtxaRSNOXoQizX/s+ZrgLK7coj?= =?us-ascii?Q?nvy8qZ7SVvg5yiDA2H8V13F3P7p+vY7PgEqeW8gpW9FxA3qfo/3zBHTWf+LV?= =?us-ascii?Q?rucCmyjonOLVh/PkF4ZS15NDfH53UL4Nfji3+kGyzxx/oD3mgRdhRHbQIRvE?= =?us-ascii?Q?Kulh+EyQ1EzgZWlzfpTkEu2L+/wfHfD8XWZZ37FysAH3POyARcR2ulnAwzKp?= =?us-ascii?Q?LJSb7SPDzUf0mF0WkwHmczKlkb3NQXs=3D?= X-OriginatorOrg: suse.com X-MS-Exchange-CrossTenant-Network-Message-Id: d75a7272-5c2a-41a2-db0b-08da109ebcd6 X-MS-Exchange-CrossTenant-AuthSource: HE1PR0402MB3497.eurprd04.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 28 Mar 2022 09:38:38.8077 (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: /fOQwYVdCClE94MaExATSuq2BkSKBbeW28qDOPOFOEBAdbMMNSdwCnEu4ua0/pMhXL7WOyOG6Z8K0/yjBURxIg== X-MS-Exchange-Transport-CrossTenantHeadersStamped: DB7PR04MB5067 Content-Type: text/plain; charset="utf-8" This patch defines a new wrapper mptcp_sched_get_subflow(), invoke get_subflow of msk->sched in it. Use the wrapper instead of using mptcp_subflow_get_send() directly. Signed-off-by: Geliang Tang --- net/mptcp/protocol.c | 6 +++--- net/mptcp/protocol.h | 6 ++++++ 2 files changed, 9 insertions(+), 3 deletions(-) diff --git a/net/mptcp/protocol.c b/net/mptcp/protocol.c index 82b3846147a6..7bc7768f63e8 100644 --- a/net/mptcp/protocol.c +++ b/net/mptcp/protocol.c @@ -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_sched_get_subflow(msk); =20 /* First check. If the ssk has changed since * the last round, release prev_ssk @@ -1636,7 +1636,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_sched_get_subflow(mptcp_sk(sk)); if (!xmit_ssk) goto out; if (xmit_ssk !=3D ssk) { @@ -3135,7 +3135,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_sched_get_subflow(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 81c35af7ade5..31845b43242f 100644 --- a/net/mptcp/protocol.h +++ b/net/mptcp/protocol.h @@ -623,6 +623,12 @@ int mptcp_init_sched(struct mptcp_sock *msk, struct mptcp_sched_ops *sched); void mptcp_release_sched(struct mptcp_sock *msk); =20 +static inline struct sock *mptcp_sched_get_subflow(struct mptcp_sock *msk) +{ + return INDIRECT_CALL_INET_1(msk->sched->get_subflow, + mptcp_subflow_get_send, msk); +} + static inline bool __mptcp_subflow_active(struct mptcp_subflow_context *su= bflow) { struct sock *ssk =3D mptcp_subflow_tcp_sock(subflow); --=20 2.34.1 From nobody Thu May 2 09:29:02 2024 Delivered-To: wpasupplicant.patchew@gmail.com Received: by 2002:a17:907:7811:b0:6d8:2910:9a8 with SMTP id la17csp4036560ejc; Mon, 28 Mar 2022 02:38:54 -0700 (PDT) X-Google-Smtp-Source: ABdhPJzXxImM11oXsbB2W5cam0DF2++tyjlcDVqJUUZQPLpLJ9fmZlAzznxc9RuW2/9gwca/Kapd X-Received: by 2002:a17:906:3a18:b0:6cd:ba45:995f with SMTP id z24-20020a1709063a1800b006cdba45995fmr27170926eje.328.1648460333870; Mon, 28 Mar 2022 02:38:53 -0700 (PDT) Return-Path: Received: from ewr.edge.kernel.org (ewr.edge.kernel.org. [2604:1380:1:3600::1]) by mx.google.com with ESMTPS id o5-20020a170906768500b006df76385de7si13918942ejm.647.2022.03.28.02.38.53 for (version=TLS1_2 cipher=ECDHE-ECDSA-AES128-GCM-SHA256 bits=128/128); Mon, 28 Mar 2022 02:38:53 -0700 (PDT) Received-SPF: pass (google.com: domain of mptcp+bounces-4470-wpasupplicant.patchew=gmail.com@lists.linux.dev designates 2604:1380:1:3600::1 as permitted sender) client-ip=2604:1380:1:3600::1; Authentication-Results: mx.google.com; dkim=pass header.i=@suse.com header.s=mimecast20200619 header.b=ATvdHAWP; arc=fail (body hash mismatch); spf=pass (google.com: domain of mptcp+bounces-4470-wpasupplicant.patchew=gmail.com@lists.linux.dev designates 2604:1380:1:3600::1 as permitted sender) smtp.mailfrom="mptcp+bounces-4470-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 907341C0B3D for ; Mon, 28 Mar 2022 09:38:52 +0000 (UTC) Received: from localhost.localdomain (localhost.localdomain [127.0.0.1]) by smtp.subspace.kernel.org (Postfix) with ESMTP id 15990434E; Mon, 28 Mar 2022 09:38:51 +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 125B87C for ; Mon, 28 Mar 2022 09:38:48 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=suse.com; s=mimecast20200619; t=1648460327; 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=syfExDS5vYYs20MW6KE2HpDJqbWLuqde2PWvs9BHibY=; b=ATvdHAWPtGKixha2PPRiBqHqdDebFqnvBPeQZlhTS3wC/hXW5ILyxLYcfh2F6/VmiFbC3j XdsjzWMArmAZobssGdIKD8O/WVgStCll6RgImcj/WzHpQ4/vfpn/e+h7zN/Oknss9ky0vX 4GORSqNElb4zapKw/qSg7hGX1cwPdvI= Received: from EUR03-VE1-obe.outbound.protection.outlook.com (mail-ve1eur03lp2057.outbound.protection.outlook.com [104.47.9.57]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id de-mta-34-SwOZCNoIP1Wh6Z7JZ6eYyw-1; Mon, 28 Mar 2022 11:38:46 +0200 X-MC-Unique: SwOZCNoIP1Wh6Z7JZ6eYyw-1 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=jMT4NMHPPGJPomJ2VMGe2g1PKiBAUz5w92dxWYlUMYkwxDi4CVv4xepci+clMqTXbdDjKhStYggax9FO/QtvltB/SRF172dtMPDJxvf1y0x8qGUXeC1r0fKVBCoHi+fb4tiIuc0w0LVMJiuM9oFWrMwijxA9MakhO1RtFfsClro91VE/p1xHz9dxPS+3gXd+61SlrQvtEMlWbZhvWPjQVx33QfSm3mxxpZ0RP+0PqJ1NfKR9agJCIGv9BOm0JELBT8DqJSLQ+f7X5UoUp50cAD8OZLgkuMHBvuY5tWv/6Miyp2QZ2dSJprtZzrogNunAzG0dkaxVHcGY7VnEF9Gp0g== 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=2r2ti1IOhF4bKfidtHssnFOlzOyeT4Gj7f2kCmZJEco=; b=I1Oih28CnWdcZktUoEXDjI6DP0/w8El584/LqFHqbmJloYAaWeTMA5E3XLl+jaIiH0kTU7kGUqKJve7zOL1Xh5vdXJ3D83LE6L+x9duZWhczHbgJuU0mVN/Zui56KlNXN8XejwHs4xmHuC41MindYEJaX1i+Ze5ytKFCI/5Oz/mAMrUPnPO78Xt+hcHzj/PoWlQ4KtDFTebjme3oVnTCSPENnuQo3WjDOR1DQSv40WXRH98YCCtUmh9yLinZRqOvfN2fMRUs9iifpFKFJVWaDiGqTRlHM+dw2z2bWSM8IuE133x4+oKQhm/M7iKP3gi96OWwKwKp8OA6yGR7wy8wQw== 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 DB7PR04MB5067.eurprd04.prod.outlook.com (2603:10a6:10:1a::28) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5102.22; Mon, 28 Mar 2022 09:38:45 +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.5102.022; Mon, 28 Mar 2022 09:38:45 +0000 From: Geliang Tang To: mptcp@lists.linux.dev CC: Geliang Tang Subject: [PATCH mptcp-next v7 6/8] mptcp: add bpf_mptcp_sched_ops Date: Mon, 28 Mar 2022 17:38:00 +0800 Message-ID: <0b8f587de5c7f9a2bac48792414433c99ec9dca1.1648459865.git.geliang.tang@suse.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: References: Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: HK0PR01CA0056.apcprd01.prod.exchangelabs.com (2603:1096:203:a6::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: b45446eb-87d1-4bcd-4daf-08da109ec089 X-MS-TrafficTypeDiagnostic: DB7PR04MB5067: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: yeuznD7tgOCNz19+WeU/H3TMHsfqSe6f677G8bSxD6flJhXcPgK+ETxGqJQs4M74944ITIY+K8g4cCJCXMrsJMFkVvy1LqylSp9wEMY7cacRc84oT6p9QMQ3qZ7Yxl8cLwoTzK/tx6h03Cc0OPjTrn4n8d9niqQWZ6GUrHMAsJfyQ8SUT20hWSjsSwrE23spC2VHjTUPmbc7bLIoXL9DNcgFtXKOepozf7jGM/8sK3Elcv2kOdGp4CSfWImYDh3QwI4gBlyeR9xG7LDfisMOgbEZIIKaJywyIN8m6Hgqx5PB7r00rIb/8MYteeVoqShIqQhNIy1CSCaVbTl6hI6iXOLV2lRFD75UMs50iXlVlkHkBJzW2hvx9vYA2QE+wACe5AqWrJFWC/mz7uCY1VRRZ8TcArw8i4QZi4nf/LuV1P0LQXSZGXTS6bGt6R5cACgHuKX5Ze9WprlOdB1FnedeNZ6NqslJyGQKH9GmQ0798kdkfxgCDSbuTx17/lJDZRU/gFLuplFFjtN/ffFxOx0OfLmbiYrxgkxSEee+S0gDzI+WL8ybwhjl0pKFy0TJd9B56mSub6skR0cEXZ6msOY1RwC3yfaKFeRuTc08X/HZeT5qx1HWE1fEZ6bU9QKa/S6KsyTgFpiF6aMRIMOeej6DMyJWaBW4E2TnmJFO6nZ6qVoCuORT3sUo6wSi2wsvvoduPyBNCvQQ+c7N5KqFZIqcSw== 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)(6916009)(66476007)(66556008)(38100700002)(66946007)(2906002)(8936002)(86362001)(316002)(44832011)(5660300002)(6486002)(83380400001)(8676002)(4326008)(6506007)(6512007)(508600001)(107886003)(2616005)(186003)(26005)(6666004)(36756003)(13296009);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?SZ6AsGiynN/5mkawS0nrSh29ukDEXkkUWCXOZlami2mQZqsM2+SVZGJFCPFA?= =?us-ascii?Q?mcHsevSu1h30gO77NIbRI3EH6UMYOE8uw93QF6darpChuJTabacBcqKhyIV6?= =?us-ascii?Q?Eqvz2BBd/5wMyWqCJpgGjvFWAXKjvk8rZLi9F+dywu5q/yrUMirzWafn/6Hp?= =?us-ascii?Q?2+jUltLFSX/TJhCQwQsUkJzDJfKGI1nDyOwtmIpd/M56zKfBKHdqMZxnl3Or?= =?us-ascii?Q?U8V6TsSdAQXeflg28o3c1Cq4Z8KDYeGduNlJJR5UdFR8oxZO5FVb2mVTlJXH?= =?us-ascii?Q?q/KYzv6O4SZVaMgkekaWoMQaora1i4KRazi23rzPLZrJSIy4KvbzCNhDIUJX?= =?us-ascii?Q?bMW1ZEkyXoBGlZlO8mcjJqwK1VPLjfLimlZgVYPIOLAQK6okfr/QvzZ8KXQJ?= =?us-ascii?Q?N50gYjEb5yH3MO9JmGGLQlw8Yd6LcIXMwEnvFq8HpmZWtkX+tWARQiOXD1+A?= =?us-ascii?Q?Kdxmr/LEFHX0jpp61v9fBWf6p2W1KUqTWoAacIcXrU8SNx8UqsbS2CH/Zzcv?= =?us-ascii?Q?UfWucKvQPXs19QqiqYaL9rIYtlXISPymkVvnRsXYWbhW6U6skosVPvTOp4WL?= =?us-ascii?Q?SmS06eout+tmvhQaZs3Kme87nlB55doHZN2KYX9CqT9rypiiKgcSRTo1AALX?= =?us-ascii?Q?8cDUJcRuYuzcA/5YgKnsxrESxDjlY7eitgBr8eCAd9skJNENERSBkkutl1EV?= =?us-ascii?Q?vn7zv/Vg06DWcvcmAJMVFNG2EkdfiaqZuhA/c4y3klDcTU4jQmD8CALyZw6q?= =?us-ascii?Q?zw0YlNKpMrsIFnXuHK4Z/hxrn98ssglKWGu8pSXYA1re7u4t9k0uNBbWic2l?= =?us-ascii?Q?pNx9hXH9ew3Utrsm9xjyjR3AEQdh0lYNcJVKoUYGi4yjGPsKoz/QtEn7RSCn?= =?us-ascii?Q?y4aswtysfP+KRgbHcYuAL3bEHdPs2DWGVvHJcr3fjLJHpVLpx5hAmQYee1Fr?= =?us-ascii?Q?+fIAD9hI+NGmHPirQNbOm02e4XCAivxIZcc1sLqEx4YpnclEzYe5hKFVnP0M?= =?us-ascii?Q?a3jmIAyymmiWWPGF1klIG04GDy5fS/wXRKprbBivcs/a/ZJ+svxFY77hpvpS?= =?us-ascii?Q?OVLeBzXveAodzxgZHDnqGHiefFz3AKlGdeJMyN2aUnHkvnDHznQHK3+/7GjT?= =?us-ascii?Q?+SE4l2pWRF/b99J3Gr+cTScCqeaA1Y7+AISCi9rC+/v0f0133yIg21MzIN91?= =?us-ascii?Q?YZopd2iwZ8v3WCOacTPs32xhiF9Ewhy7k9tMh3cFYSQNWgak85K/1f4d+Gx7?= =?us-ascii?Q?HzVrn6Ihd2YO1NApWWsrwERQW7QGEGPAixIIXJ6HypGnLszeTToIANqLuRsG?= =?us-ascii?Q?7Wks950IdilKlyaFwfcjXvMfwLVXvvbufbyUcGqRCa+bknvsB8KzrDH7OgoL?= =?us-ascii?Q?uVBFX8zYCwMbyf0AicJ/zZPATqOAAQRpZVuhiOos4qb5L1OkpezUI+/HWVPl?= =?us-ascii?Q?sVJcDEMv2r7Mxag9idc1UIMoNq3be29krpkDMhY7/AvXKusxOHWVPJ2px9c5?= =?us-ascii?Q?7jL6rElx8nx/Cm6dQh9eoSfodGLz3gQXk7+W7VsGnvbICMiFOMRNX91Xqk8/?= =?us-ascii?Q?DxdZDPWlb1JujyjqPNWXZcLjrx2Xsu4Tn1VSZiFRK6APn5p+Qv+olhRmtYDy?= =?us-ascii?Q?5vz7cOjayp6iDDnArft6L3uDsSZy//kB52PPQh206/MxuFMiwiXPDFAPBmlS?= =?us-ascii?Q?Jw6Pi16i5/J7fd2fymjW4Uxhj3G3D2acUCLk9iQDebYUAZmzvrRMtMnb68ax?= =?us-ascii?Q?/W1QgkTtzFz5QMeZEYLCdvsa1OJQzTg=3D?= X-OriginatorOrg: suse.com X-MS-Exchange-CrossTenant-Network-Message-Id: b45446eb-87d1-4bcd-4daf-08da109ec089 X-MS-Exchange-CrossTenant-AuthSource: HE1PR0402MB3497.eurprd04.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 28 Mar 2022 09:38:45.0416 (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: 6EHvwpyHaGdP16IG4Lyl604Td5xkjVEcysmTngIZkFUnfysPOG+WoNxy1Uu/hVvUAD1sHyjuo10GG4uRESYJzQ== X-MS-Exchange-Transport-CrossTenantHeadersStamped: DB7PR04MB5067 Content-Type: text/plain; charset="utf-8" This patch implements a new struct bpf_struct_ops, bpf_mptcp_sched_ops. Register and unregister the bpf scheduler in .reg and .unreg. This implementation is similar to BPF TCP CC. And some code in this patch is from bpf_tcp_ca.c Signed-off-by: Geliang Tang --- kernel/bpf/bpf_struct_ops_types.h | 4 ++ net/mptcp/bpf.c | 103 ++++++++++++++++++++++++++++++ 2 files changed, 107 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 535602ba2582..be809438c5d2 100644 --- a/net/mptcp/bpf.c +++ b/net/mptcp/bpf.c @@ -10,8 +10,111 @@ #define pr_fmt(fmt) "MPTCP: " fmt =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(current->nsproxy->net_ns, kdata); +} + +static void bpf_mptcp_sched_unreg(void *kdata) +{ + mptcp_unregister_scheduler(current->nsproxy->net_ns, 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(current->nsproxy->net_ns, + 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 Thu May 2 09:29:02 2024 Delivered-To: wpasupplicant.patchew@gmail.com Received: by 2002:a17:907:7811:b0:6d8:2910:9a8 with SMTP id la17csp4036601ejc; Mon, 28 Mar 2022 02:38:58 -0700 (PDT) X-Google-Smtp-Source: ABdhPJzyh2+2Tvsiu0KxEphJ9kCPfyeXA6mbfkab9o/FghxTtISjtlIl+P/o0HNCfYEF6mJxuZMK X-Received: by 2002:a05:6a00:1786:b0:4fb:266f:b184 with SMTP id s6-20020a056a00178600b004fb266fb184mr12434714pfg.10.1648460338679; Mon, 28 Mar 2022 02:38:58 -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 i9-20020a636d09000000b003816043f12fsi12531816pgc.804.2022.03.28.02.38.58 for (version=TLS1_2 cipher=ECDHE-ECDSA-AES128-GCM-SHA256 bits=128/128); Mon, 28 Mar 2022 02:38:58 -0700 (PDT) Received-SPF: pass (google.com: domain of mptcp+bounces-4471-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=XHlsIrwT; arc=fail (body hash mismatch); spf=pass (google.com: domain of mptcp+bounces-4471-wpasupplicant.patchew=gmail.com@lists.linux.dev designates 2604:1380:1000:8100::1 as permitted sender) smtp.mailfrom="mptcp+bounces-4471-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 1302E3E0F00 for ; Mon, 28 Mar 2022 09:38:58 +0000 (UTC) Received: from localhost.localdomain (localhost.localdomain [127.0.0.1]) by smtp.subspace.kernel.org (Postfix) with ESMTP id 02605434E; Mon, 28 Mar 2022 09:38:57 +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 2F70A7C for ; Mon, 28 Mar 2022 09:38:55 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=suse.com; s=mimecast20200619; t=1648460333; 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=+c5no2u9hSCHgi/+8GDvgIgvTXaalZ5cYGU636goZTg=; b=XHlsIrwTtzUOfJRFRs7+XkVPvHLKgQQIoHhl8PtAvuL8ahDQAKIHqtlbn9hFNlxtcOo3Zx 8I5otkpq0a0A5YI7EdUmvV9IJpt7IfGzwSNBPhnJh0keelSae/n1g/ayaCHShM5zWOiKIK Yts7N7y5biRMHuAGMUzjMnIu7ryOg44= Received: from EUR03-VE1-obe.outbound.protection.outlook.com (mail-ve1eur03lp2053.outbound.protection.outlook.com [104.47.9.53]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id de-mta-12-Ayx64HEzOzmgFTNoj8kJ1A-1; Mon, 28 Mar 2022 11:38:52 +0200 X-MC-Unique: Ayx64HEzOzmgFTNoj8kJ1A-1 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=a1lYKIGIaQqxl4i2cFcBtzzejz2ANasndbpJU0E0+a6UF7iE9sTwyi4JbuB8H4dD96ToGz3b1Pi6ULxiEENqfCCEOk+ls6dQHn5Y96PG2gFCLrwP7imsOZxIaA+pcyj2oXdGL68oDs25b8PlWqkLpIyAHbqGV+LKp5s3zEZ74qFIK0o7Hm+G1EIa+PE3SpIurlhWpZEur874ohjyzbZ6zD8lHhtoqv9VKDKxhrEF+2Ua036akg/ptsXKzCO6euU9K0KxogqAJGUX2ly3u54J5RLridf0whe9psY/9DdPakonvqzJJnBNdWhA0AmnOsIa/LBdwDWeWy1mTXKXy12qeQ== 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=15pvy6re1E9cvLf8VPgX7BMY/saIjVcz0po1hc1OmDY=; b=IA7I+8vCBdHipNmKSC1d/hLu0GJg+e9imC+bUJxANQvstinimtbDlIJX9XHCWMwkmw10MwbYzSXwOvQb3QU/qTERfs+8Xq/9aHFD4dTFumxY+CAX8NeX8tfSeM3qM13T53p9A2VSfVncy2RNBytbt7bZfRJGvaZBpGGt9B0RTuwSO4iRnc0F6+ipyOUsQFtRV+sv5pHz+KCUs2fOzpGyYEioQ12EwOKLyyLMjly1Mp6POPCbFDEpiB6XJoRf4BLDz6keghOn2bd2zSbQ6h6w9dcv/xzdqK63FH/pgMaZnX3BsgW7HgOansbdgtQ4+NyeHHO3jMy/AYux2VSk24YJ/w== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=suse.com; dmarc=pass action=none header.from=suse.com; dkim=pass header.d=suse.com; arc=none 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 DB7PR04MB5067.eurprd04.prod.outlook.com (2603:10a6:10:1a::28) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5102.22; Mon, 28 Mar 2022 09:38:51 +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.5102.022; Mon, 28 Mar 2022 09:38:51 +0000 From: Geliang Tang To: mptcp@lists.linux.dev CC: Geliang Tang Subject: [PATCH mptcp-next v7 7/8] selftests: bpf: add mptcp_bpf_first scheduler Date: Mon, 28 Mar 2022 17:38:01 +0800 Message-ID: X-Mailer: git-send-email 2.34.1 In-Reply-To: References: Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: HK0PR01CA0050.apcprd01.prod.exchangelabs.com (2603:1096:203:a6::14) To HE1PR0402MB3497.eurprd04.prod.outlook.com (2603:10a6:7:83::14) Precedence: bulk X-Mailing-List: mptcp@lists.linux.dev List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: bf4a7cae-bfa9-46ef-e946-08da109ec423 X-MS-TrafficTypeDiagnostic: DB7PR04MB5067: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: EbmG4o8Xnw/UfeVJyeb9/9phbaSZxN8SLR+KP6bWdKQjwa8Ae4O8g97slP6HMna6RnC8ekOoD/7NFXJD9VBPXWHyhW6WtA8P/tiZmOq9nA5K7eAcmkpu0sjVd/D/TgGUufwRSaXw0yVK9r8i/6v7xdzyrZXf7x3MDHWnJkK/F5Jaj3vvdRb1igLDGD0CCxfbht2zdHEdpaRDtV6hoJWg7jgFo1R/OHmXcoZssOF0pu5Cwslv30eRd5o2i6qclXV6rx3vbVyte8hkHICpEr6O6OOB97B6MLRhBSYqy05A0Ta65QfnDHbqG/UVLfpBLsvYZLSGEpS1ImF9ZcErR7DioctPc7mHZu2HBh6OOtausevyP8j77bw7e5jHjdccJUP+qP3EdCPiGRsl1ok5hBB1wJguNrAPHDw7+aGfrsN2f9y720FwkN0Hbcrp/BRfSp6CqaxiKu40pSbrZozkgMy/RbBfA4O6VHeB6oSImIIggu4mUR/RJjHEf4ytP67jyf5JHCFHD02VXnnPNe+Z+Yrv70GPI3LVZkDmNStm8J9NnM7o070FDQM6VYhuWRSteZ4xxtE9t0P+ZHqSj5/BtlxtjX5I8Lw+h24Ss4fYa9dqRU/8cInCZNVWkmCAySmubu5jS4N5KLzcoX3IZWb9fmOVi6yYm591nbvZqdXI19eUDM7Oev2YFHhWqEPHTBbG7l2W+X64/iF39nPj9+omxIBjKA== 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)(6916009)(66476007)(66556008)(38100700002)(66946007)(2906002)(8936002)(86362001)(316002)(44832011)(5660300002)(6486002)(8676002)(4326008)(6506007)(6512007)(508600001)(107886003)(2616005)(186003)(26005)(6666004)(36756003)(13296009);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?GlbipZLyjhV4ojpzlrbhZLUdB39R2I2cmn5jz2yWXJxegYue56ShIjjByx8W?= =?us-ascii?Q?J2gG+QZQHTCTzCPYwdluGIQwVZPLbueWqQ4Oz/xINYRpmMEm0IVskngSn2JI?= =?us-ascii?Q?92AlX9NEAHOILe5lTZmQNe/alBjP6ptk44yFnNmo220nIeUSK8ZY+A0rcS2i?= =?us-ascii?Q?zmHOori9ROl0jAJwBEcM7cCpS66c5dT8kZC/ZQ6cRUwgXMOWv0hopqbUBwwh?= =?us-ascii?Q?l2yRF9rfhoMIgen+MurAaL1Iby/u3NXeILRpQt124ZRPRb97iPglhlfG7xVN?= =?us-ascii?Q?zp4pMlVG5keSRt6UVXN0K7GvbP1g8pneCN1oJHMuMDU699hLJ25IbkbRAPsC?= =?us-ascii?Q?iYkk8mTB4PfWq/0vqsXiE8Zr0ae8PyzpC5OhmBwDLXfxKQZzk+ShfQKIT3Eo?= =?us-ascii?Q?NWuD2t5G0bKAl+lP9gozFy1lRVaZjP1Q+2L/xknueg/pBDF6o2BuqPXeLq9T?= =?us-ascii?Q?YAzNAy7R5c9he9lAcOS4K2aKLuFZPZawM2Hk8t9BkTIfPvw7rzjkIOckKJRN?= =?us-ascii?Q?FALiXxajf6QdUtqskea7uDATLmUa5UuzdZHBE6VF2M3pDg7Plhcc6aKwHVgh?= =?us-ascii?Q?/defurEwCMpZxsPxBWcqAO6YM6H86aMj5y9EKsOLgUYLK9LhiFwANqMqKerj?= =?us-ascii?Q?mJRv4Rg/9JtqiFzOFTAobpUj65XnRnnWJX5sgcfSUBGhHiFcJeqUQd3y69EF?= =?us-ascii?Q?Uu27Y7ly13fNbI7eNAFL3IL2mIY346GZnvAOjXNGA2o89hafNHU9BraIGtfG?= =?us-ascii?Q?i15dSdWieck1V0DGd9KuHGxc5jYQ7tBiAVSMRI/PgLSgBxFap4BUXVD6yllS?= =?us-ascii?Q?j580MKShPv6BWLJAHhhRl4gmSaVHdWza6rA4w6k2Zm/PVzS2JqTX7vT0DNhK?= =?us-ascii?Q?jyOmI36YRlhYViqskJd68TIYDQeJygKQQfo6itoEQfz2JlZpDt36Yucjl3JN?= =?us-ascii?Q?Kx6jATfPjxnqkXmq4D79K1WRQPTxtmlzag9oByLitAHD9M0KdnJ1RvUacyrD?= =?us-ascii?Q?cegYKABPitU0cALFgSlAnKOEIC2RXt+C88EeTOufWUMso7fTdezNDZG2C17e?= =?us-ascii?Q?wuMx+hihvyV3v0ZU3sLlft76fu49ug0kqbxj/yzPnyx8lr8x0YjOZifnxpWe?= =?us-ascii?Q?aY1xAP6ZWMJh9E/gh5+rBskb70DyRY0h0FUOz9t9u4fqP1fg+6xmlAFHuAPL?= =?us-ascii?Q?g4eU1bp8w1vZiUROgCqMbDlHVjp1N0N47ZwSQ1qMawwsyoqIKGgF1rzzdXU/?= =?us-ascii?Q?LZj26POeVTZFdt6sp1avGMbL+pk37chPfvLCCz3QLs2Bm7k/gqIrfqkVZaiP?= =?us-ascii?Q?GKiVLgmtPt1YG8saveUPHR3bsJeQZ68/OLMv3G5ewtj/DLcN9XBl/ZuPnqo1?= =?us-ascii?Q?gnX62ynFcL+s2HkfMKn8k+ps4FvDaViIZ3bMvJ/dJLAlY4PeJwYSVt9sRQm6?= =?us-ascii?Q?y1jMMvrVAagXu/ueyi1jht8eO8xNfAfiX1Lo5f48FjJg9Rqf8x+V3dVfrNqf?= =?us-ascii?Q?TYzykTjq0uKBYC/Vgwyv4g693D2bdY/GC7exeV5qYJ6JeBSglpUvhZ0mEcOw?= =?us-ascii?Q?bnNCcvQTJkCGgpUC6ihZr3EI+BOtf/NfX8JXRFOglCRUwEM63epo7dD/0XA2?= =?us-ascii?Q?KJJMOpEEPPbSaXSYvkIjFyYLw2+KtJeix4JhZhhpmf9651oCLQYXQaPnj0MZ?= =?us-ascii?Q?83IqbAE1c33n/s8+hL43MFDDKR5fbL/SgLCjYqUjG8Ec4Sid73DLaHJjGx17?= =?us-ascii?Q?yTApwKjHcZkY9cB9hshVRl4wMEedhbs=3D?= X-OriginatorOrg: suse.com X-MS-Exchange-CrossTenant-Network-Message-Id: bf4a7cae-bfa9-46ef-e946-08da109ec423 X-MS-Exchange-CrossTenant-AuthSource: HE1PR0402MB3497.eurprd04.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 28 Mar 2022 09:38:51.1036 (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: /mb0qtPkxYGoMmw9ZR/q35Dh5ZfReGuJrYE3iHvkaZt2hXKRgseIJwH0fK4jcKXUPqaXCXTcp7TdTX4eny4+Aw== X-MS-Exchange-Transport-CrossTenantHeadersStamped: DB7PR04MB5067 Content-Type: text/plain; charset="utf-8" This patch implements the simplest MPTCP scheduler, named mptcp_bpf_first, which always picks the first subflow to send data. It's a sample of MPTCP BPF scheduler implementation. Signed-off-by: Geliang Tang --- tools/testing/selftests/bpf/bpf_tcp_helpers.h | 12 ++++++++ .../selftests/bpf/progs/mptcp_bpf_first.c | 30 +++++++++++++++++++ 2 files changed, 42 insertions(+) create mode 100644 tools/testing/selftests/bpf/progs/mptcp_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..5bb21b24231f 100644 --- a/tools/testing/selftests/bpf/bpf_tcp_helpers.h +++ b/tools/testing/selftests/bpf/bpf_tcp_helpers.h @@ -197,6 +197,18 @@ struct tcp_congestion_ops { void *owner; }; =20 +#define MPTCP_SCHED_NAME_MAX 16 + +struct mptcp_sched_ops { + char name[MPTCP_SCHED_NAME_MAX]; + + void (*init)(struct mptcp_sock *msk); + void (*release)(struct mptcp_sock *msk); + + struct sock * (*get_subflow)(struct mptcp_sock *msk); + 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/mptcp_bpf_first.c b/tools/te= sting/selftests/bpf/progs/mptcp_bpf_first.c new file mode 100644 index 000000000000..3ae5c1eab5f5 --- /dev/null +++ b/tools/testing/selftests/bpf/progs/mptcp_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"; + +SEC("struct_ops/mptcp_sched_first_init") +void BPF_PROG(mptcp_sched_first_init, struct mptcp_sock *msk) +{ +} + +SEC("struct_ops/mptcp_sched_first_release") +void BPF_PROG(mptcp_sched_first_release, struct mptcp_sock *msk) +{ +} + +struct sock *BPF_STRUCT_OPS(bpf_first_get_subflow, struct mptcp_sock *msk) +{ + return msk->first; +} + +SEC(".struct_ops") +struct mptcp_sched_ops first =3D { + .init =3D (void *)mptcp_sched_first_init, + .release =3D (void *)mptcp_sched_first_release, + .get_subflow =3D (void *)bpf_first_get_subflow, + .name =3D "bpf_first", +}; --=20 2.34.1 From nobody Thu May 2 09:29:02 2024 Delivered-To: wpasupplicant.patchew@gmail.com Received: by 2002:a17:907:7811:b0:6d8:2910:9a8 with SMTP id la17csp4036642ejc; Mon, 28 Mar 2022 02:39:05 -0700 (PDT) X-Google-Smtp-Source: ABdhPJwrN2m6DyWAvmlyx3y9J9QIBV9DkFIz3Mid2+7GulvBZk1QUN+BnlxA45Y8hzyHALcm10XC X-Received: by 2002:a63:5756:0:b0:36c:67bc:7f3f with SMTP id h22-20020a635756000000b0036c67bc7f3fmr9815602pgm.389.1648460345297; Mon, 28 Mar 2022 02:39:05 -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 n22-20020a635c56000000b003816043efe8si12828298pgm.477.2022.03.28.02.39.05 for (version=TLS1_2 cipher=ECDHE-ECDSA-AES128-GCM-SHA256 bits=128/128); Mon, 28 Mar 2022 02:39:05 -0700 (PDT) Received-SPF: pass (google.com: domain of mptcp+bounces-4472-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=gmAW+lyN; arc=fail (body hash mismatch); spf=pass (google.com: domain of mptcp+bounces-4472-wpasupplicant.patchew=gmail.com@lists.linux.dev designates 2604:1380:1000:8100::1 as permitted sender) smtp.mailfrom="mptcp+bounces-4472-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 B40303E0F18 for ; Mon, 28 Mar 2022 09:39:04 +0000 (UTC) Received: from localhost.localdomain (localhost.localdomain [127.0.0.1]) by smtp.subspace.kernel.org (Postfix) with ESMTP id CD1F2434E; Mon, 28 Mar 2022 09:39:03 +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 3CF137C for ; Mon, 28 Mar 2022 09:39:02 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=suse.com; s=mimecast20200619; t=1648460340; 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=mp3DvHKr1YnoFZXp43wUEVWm6yQsUizr0cfKmKs3fBo=; b=gmAW+lyN9OJqSM6avejyJK/n/I2otIAtRgMqk3lqpotDdcEbusxxuYqBhyl/VOGVqeeKmx 9n+x2drZcW/j7wSNJme5XL/QrHZtM1ocyWz1QoNXK9F669KQFoHljFcElDZBLWnwTl3qBa 1r+u0ny5knC5z3AafaxQfk+lD26IgJU= Received: from EUR02-VE1-obe.outbound.protection.outlook.com (mail-ve1eur02lp2058.outbound.protection.outlook.com [104.47.6.58]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id de-mta-37-OfgX_SgCNkKFvUCop0v0FQ-1; Mon, 28 Mar 2022 11:38:59 +0200 X-MC-Unique: OfgX_SgCNkKFvUCop0v0FQ-1 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=BqZvAMKeShfQ7aTYyprSwC65UmrfNt8JKvXyN/H3gKBMuD837G1Y+HThmziscsvvnC4Z6QGEOPrk+ZOK8qyl5wRpW18qiggPdUMjL+PclusMy9HmASkomg7uvZdbNUJtIWvmpETbYtIuxYtvXqoWQE0vupyNPk06i9MKI8uzuLy3/zT2c99i17afD6Tn84UJt3HSSv6uSYUxEuOIanIK/J23OPqe4H0qT6OWC/+G9qCB0sGBrAujHdK/hps0lE3/AlpdKU5vyjUh4EqSxjsNhCf1vbP0sH5GpmvdT6WbWv4zEgfDJZE5o8ng2UzS0MxQvhLfl6+J6OxxEtsK8SsN/A== 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=bPyRmGgyd+/dawP1lqQdRu/CL4HcFe1NMm2lSTx/SVE=; b=Mx65cQS2mdSUc+8yVPd6U66fQYi6yg+36VDEN6h0NolnXjeBAka9E/9awfKNOC47TJj/gAH1YrpCibOBT3N1ldzZ2SF4PIc3YQ3SLZisD7Si1Kj7ZEIwMzRS2fbl+B9eRCfvHD7qVHHN2p7inUvBX5xcHf75Npxr/ykfAQF8Lx6b+pD8MOi/041Yd0Hul1yxL3D2wdsfjFGogZ3wOcpdbQgITtJToHs87zoCMDJmnUtsxmXajOVkZ0VQx3xiaOpSBmhtxYRI4iYdWiXNxR+bdjxNUiQEXDX5Nj/ofZ52saV+jKiU8VJ+NcwuSaYofKAMnLCiTDi0AqVTt691PNGqjA== 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 DB7PR04MB5067.eurprd04.prod.outlook.com (2603:10a6:10:1a::28) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5102.22; Mon, 28 Mar 2022 09:38:58 +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.5102.022; Mon, 28 Mar 2022 09:38:58 +0000 From: Geliang Tang To: mptcp@lists.linux.dev CC: Geliang Tang Subject: [PATCH mptcp-next v7 8/8] selftests: bpf: add mptcp_bpf_first test Date: Mon, 28 Mar 2022 17:38:02 +0800 Message-ID: <50798e945994585b9c9c5443ce991ceb3dbc662f.1648459866.git.geliang.tang@suse.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: References: Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: HK0PR01CA0061.apcprd01.prod.exchangelabs.com (2603:1096:203:a6::25) 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: f9cb97de-4b15-4ca0-7887-08da109ec878 X-MS-TrafficTypeDiagnostic: DB7PR04MB5067: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: fbQTlRzMFMFs16tMPkwoJo5qK3ylb3IZcJ/ukSOhhLIfSA9sTwAlW3w90BZ2nbKzJnRuv5PRlTGrzc6EBX1acaM5nVaywugVbgltqW5VWoI02kRWyZ+vQR6TyAvMGlt0chO+oXDJC1p2zM88fbBBjSRoixwjr7rbyVddnvdzZJUZpWeJ5qiSjeYo+dzB+0MQs6eAsDbpY0IBtC++sWsCBIxcnykJmN2rNeJ7jBkOH8dE8OqQymoR1q0bg8sUwLiX25roQyaL00W1Uaux7PXrtrTM2eS3DrfrOH//7Y8EaovW0GiM3KhbH7jqZOaHpoqs8LnqJNgj07PHrib+5Ip9NnCO/mnJk+fkeCX5kIQiBbAUeRN+jBGmUeG/Bhce2Hs8/izfPuTXkR/+25VYv5lnXJi2nRj9VePXce/0e+EmOp63owHbVdOd3G+2ulPTXOqgKQkyWt7fNl76nBwxUsslZ2MQzFsgaEyJZNaz1y4nRdojTdKxDLJHcSubBPf+TIyY9eR04GErgHSQLAs0IjVNOofIcZplNHwpFD2qQ38xCcjg1kpi8CqM+Bm/iUumdNNceG2zeB6XUyyMtHJ/0wn5myjvCqxf7KgYkPHAdCZtcMuQfvMvIQZXhs5+7K/21w9jivf/GHMolVtoBnj5VHNvvhqKMEjFCbRw0Yb2rey6G7/B61D9H2XjqMhvPhKbiTzb 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)(6916009)(66476007)(66556008)(38100700002)(66946007)(2906002)(8936002)(86362001)(316002)(44832011)(5660300002)(6486002)(83380400001)(8676002)(4326008)(6506007)(6512007)(508600001)(107886003)(2616005)(186003)(26005)(6666004)(36756003)(13296009);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?PqrpLYbgVLLEmofuopaF+ut1uyoNvUchGYS5iIGMk+qgDUsyuY9Xq2MNGeUA?= =?us-ascii?Q?JNf26pjvlL+aT7LPbP2jimwgtG2iXNCoGkcmV5T4DmqTD4BuGR8WKjvSzPKH?= =?us-ascii?Q?y3MneCd0WB4MewH8vzdGXdq/kn6q+sj8u52I7jwB4F6/M7ehL/NG1ST52dhJ?= =?us-ascii?Q?sErDh2kp4vEBKiGey2ZpNeFtQUK7ySrAaZ12ox9n678yanc3WvPd/G87CjkT?= =?us-ascii?Q?TtsMMAYlI9MKLkX+cJCUjKhIx2LcxPkKUYSwYftu+JZFxyhBBX5v7MEE+1wJ?= =?us-ascii?Q?uYxuADY7k17jUesCwQpH1JNwAumzLEZY/Q5jjNEFHWHJybaku6LYU0FI02p/?= =?us-ascii?Q?97ogwnzOKJikqVgVOyOGlt0bHskY1FE8FDLZMk08i0pj0o8Z9c+Q7KyI4Mhb?= =?us-ascii?Q?3RkauywmOTwG0SI9pSn+NCYoEjT+JZ3DPzzDcdL5vnUt82/EUrqzOAsVQf9d?= =?us-ascii?Q?j6NzUuWb27S5Oya0diYyprrAf6ev2jY0MaKvsIh95TkM6kClTphAxvnO8+Pa?= =?us-ascii?Q?Cqi+7nnrd9KwD1NOtrd0+fdsG4S+HgZspYxPh4m4OiaweGMka/CHbNmV9iEh?= =?us-ascii?Q?GuDVKEmnB08YfXw0uiejZk2u+7rZOC6AtJTMiaoS4NfC4HVmJaiiXN6ZYReU?= =?us-ascii?Q?GiZiB72U6isTXrivGutbj1zL29U+oLeqqbgZfmRqobrmgOzGEWONpFQBapHf?= =?us-ascii?Q?tcEq/PO0eCsbO67dZr15dGsxCdPTJNlPuQmuBWe+2lrloIYXSoY6cdG7e0CK?= =?us-ascii?Q?RvV8a3lVMoJCdbeN3CyIpEGiob1i9YRenh++gjlJXCXuXbWfvPF2pfFWEm9n?= =?us-ascii?Q?kpHrj+zwpKaNBnrppzNzfXE23KRF0qtQcOaeZdY0yunBdm0aV6dy7ZyCgNcw?= =?us-ascii?Q?eQPIXZXNyifUiatz/uEdkIezEohol3m8rEaZKMu3Ffx9248czYEkavtZS8Cx?= =?us-ascii?Q?zUaXevE2yIiPOderOwuIp3MUXKp28Tzpb0xkzICQQKobXpVg/S71sABgDuH/?= =?us-ascii?Q?WL84/tnqOzxL+9XXPFOX3hszvr1Qr8kRC5wyC93HfW/wj+Lr0L8tCzZuzSyg?= =?us-ascii?Q?qUOzZjAvT5n4PSLA/ZXIxnaOvhm5r+Qg4b21n+GNUsQ4s2peOlpVZY00kWob?= =?us-ascii?Q?1eAMI2udnyHscStbtK8IqMRddhTIeVd+ZDhdJGIsYqgQUHdz+PzvYxdAbqUi?= =?us-ascii?Q?1KQ8Kx2q56kf/1BAo9VgDoyUXaQPRYYlDzeg3QS/qivSnmnClUJ1V8vAn2Gn?= =?us-ascii?Q?NYEZTRuiMO0DJjf9Xw+UvIJWqr8bpXR9RlJFi/MripZoPVA0pZavHW8RWqyw?= =?us-ascii?Q?qHYJzgCIK+2BAATaoVYBQQ/XaGClmDCxJB84Q06hn7sJuB5vvA2Imh/eWxwm?= =?us-ascii?Q?IENllGuoH5u7ypIfE6+LiCQ9JRg7xjvuqWdkhS2RTCbRh786f5Jbox2L85Rh?= =?us-ascii?Q?lCKpRzpnO2DmYxRremXZ3thuUXNcH8rd59zGx9ceVJCdhgRC109yJkWt56pf?= =?us-ascii?Q?7cKLdev8XqtvTszlA4XpFD/E5lln47VE81CaaxpQQpviyXx4ZtyK74vkD2vS?= =?us-ascii?Q?WWK4xjal46z6E/GRs37NPh7ntTt0BzhV+6KVHPwkxTZx9GwdUbeK7EJG0eci?= =?us-ascii?Q?OOzQJWeL7P/0sSbQ7j5Jke/n46yFqxF3MwN5OAKMxotRbsKngwoJAh8gYCqW?= =?us-ascii?Q?3Wjux3ehrB6rvJlXgCM1zBuPBi0MT6lCmRIObLfw/pp7kt6WvHZ5XHi19CZo?= =?us-ascii?Q?db4V2/UUeLNXh8dN14UecMYC9YHn8vg=3D?= X-OriginatorOrg: suse.com X-MS-Exchange-CrossTenant-Network-Message-Id: f9cb97de-4b15-4ca0-7887-08da109ec878 X-MS-Exchange-CrossTenant-AuthSource: HE1PR0402MB3497.eurprd04.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 28 Mar 2022 09:38:58.1655 (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: Y7r+FYxvk9pYlSY8NAgJWgcdKMEbHylYMAzGMEKmQnMtb7miIjLAkP4KBAH6YpFnDSUCx7zz1TyJaxlNraMlOQ== X-MS-Exchange-Transport-CrossTenantHeadersStamped: DB7PR04MB5067 Content-Type: text/plain; charset="utf-8" This patch expends the MPTCP test base to support MPTCP packet scheduler tests. Add the mptcp_bpf_first scheduler test in it. Use sysctl to set net.mptcp.scheduler to use this sched. Some code in send_data() is from bpf_tcp_ca.c. Signed-off-by: Geliang Tang --- .../testing/selftests/bpf/prog_tests/mptcp.c | 114 ++++++++++++++++++ 1 file changed, 114 insertions(+) diff --git a/tools/testing/selftests/bpf/prog_tests/mptcp.c b/tools/testing= /selftests/bpf/prog_tests/mptcp.c index 9b73ef62ee74..e5b6f2f4a52d 100644 --- a/tools/testing/selftests/bpf/prog_tests/mptcp.c +++ b/tools/testing/selftests/bpf/prog_tests/mptcp.c @@ -4,6 +4,9 @@ #include #include "cgroup_helpers.h" #include "network_helpers.h" +#include "bpf_first.skel.h" + +#define min(a, b) ((a) < (b) ? (a) : (b)) =20 #ifndef TCP_CA_NAME_MAX #define TCP_CA_NAME_MAX 16 @@ -19,6 +22,8 @@ struct mptcp_storage { }; =20 static char monitor_log_path[64]; +static const unsigned int total_bytes =3D 10 * 1024 * 1024; +static int stop, duration; =20 static int verify_tsk(int map_fd, int client_fd) { @@ -251,8 +256,117 @@ void test_base(void) close(cgroup_fd); } =20 +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 send_data(int lfd, int fd) +{ + ssize_t nr_recv =3D 0, bytes =3D 0; + pthread_t srv_thread; + void *thread_ret; + char batch[1500]; + int err; + + WRITE_ONCE(stop, 0); + + 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)) + return; + + /* 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)); +} + +static void test_first(void) +{ + struct bpf_first *first_skel; + int server_fd, client_fd; + 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; + } + + system("sysctl -q net.mptcp.scheduler=3Dmptcp_bpf_first"); + server_fd =3D start_mptcp_server(AF_INET, NULL, 0, 0); + client_fd =3D connect_to_mptcp_fd(server_fd, 0); + + send_data(server_fd, client_fd); + + close(client_fd); + close(server_fd); + bpf_link__destroy(link); + bpf_first__destroy(first_skel); +} + void test_mptcp(void) { if (test__start_subtest("base")) test_base(); + if (test__start_subtest("first")) + test_first(); } --=20 2.34.1