From nobody Thu Sep 18 06:43:39 2025 Delivered-To: wpasupplicant.patchew@gmail.com Received: by 2002:a05:6a06:869:b0:4b8:7781:bd2f with SMTP id d41csp465982pis; Tue, 26 Apr 2022 07:01:07 -0700 (PDT) X-Google-Smtp-Source: ABdhPJz51rJbi/9t/LwFS7iKaGnQ43lMnIRYCCrbD/Lz7Dlq8B4Mn2dwcXXgqzYVuYSs1noxM7/p X-Received: by 2002:a19:4f02:0:b0:471:fcc4:b403 with SMTP id d2-20020a194f02000000b00471fcc4b403mr10868474lfb.401.1650981667300; Tue, 26 Apr 2022 07:01:07 -0700 (PDT) Return-Path: Received: from da.mirrors.kernel.org (da.mirrors.kernel.org. [2604:1380:4040:4f00::1]) by mx.google.com with ESMTPS id e2-20020a05651c150200b0024ee0791c28si21245147ljf.27.2022.04.26.07.01.06 for (version=TLS1_2 cipher=ECDHE-ECDSA-AES128-GCM-SHA256 bits=128/128); Tue, 26 Apr 2022 07:01:07 -0700 (PDT) Received-SPF: pass (google.com: domain of mptcp+bounces-4891-wpasupplicant.patchew=gmail.com@lists.linux.dev designates 2604:1380:4040:4f00::1 as permitted sender) client-ip=2604:1380:4040:4f00::1; Authentication-Results: mx.google.com; dkim=pass header.i=@suse.com header.s=mimecast20200619 header.b=DCWV+3KQ; arc=fail (body hash mismatch); spf=pass (google.com: domain of mptcp+bounces-4891-wpasupplicant.patchew=gmail.com@lists.linux.dev designates 2604:1380:4040:4f00::1 as permitted sender) smtp.mailfrom="mptcp+bounces-4891-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 da.mirrors.kernel.org (Postfix) with ESMTPS id 6712D2E09CE for ; Tue, 26 Apr 2022 14:01:03 +0000 (UTC) Received: from localhost.localdomain (localhost.localdomain [127.0.0.1]) by smtp.subspace.kernel.org (Postfix) with ESMTP id 30A3A645; Tue, 26 Apr 2022 14:01:02 +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 E50DB7E for ; Tue, 26 Apr 2022 14:00:59 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=suse.com; s=mimecast20200619; t=1650981657; 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=nZ1EoAt/ZeVfyTsL+JuePBVq/k6t0m2m2CH6eYEln1U=; b=DCWV+3KQm8gubVGstrNB89dtIwNV+E3srK8hQIDtxRMZG7aFjjN3P4tPO0x0aF26hWxVkJ Q8TimcN0y8RZxEnG6Y1cUYJ1EYiiUAgyHbK2EVw4jUVqO+6BND+mGfYtckKUUKTPDQATI6 INV93Wr+6Dv4mg73aOYPu3GWxHkd9+s= Received: from EUR01-HE1-obe.outbound.protection.outlook.com (mail-he1eur01lp2053.outbound.protection.outlook.com [104.47.0.53]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id de-mta-31-IwNqjK6fPl6L28WN8GUu_w-1; Tue, 26 Apr 2022 16:00:56 +0200 X-MC-Unique: IwNqjK6fPl6L28WN8GUu_w-1 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=MXB36fxiT4rnNH89CYcRtqK78flhIovjF2S/lYWCvMhD40cx1rHFeJRh209MHaFdHrE3Uq6Yrjvyqvj4kW+QMu5ghR0WtH9gvAZR3qHx3Ib6AH0yD1qWCJsMHmDlqQopJ1I0B8Wmt/C45DVp9XkMYbTHO5dak5bliQxoevtPAFjcHGUFOMIeIaLClx1dGeGu3cSAmPwmBgAJCfnb48cOa+qwn1TaXoxsFt4fcB6pKRh5srJkFavNQDEokapK/Z14r5tbFcvBjhPUR4s3Hwqpf4KFTxSn+9DrKfwEPU/qiZV/N3T9XlqTDNzmj8WBBP0jaBUH+UiLTV8R4mmHyYsFTg== 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=QEjn6iEVZ+w/+dyplNuWhzUfwIx1yEX9TzuaJzMTzqU=; b=RlaK264Gb26w7SJ8p3Lay1jPmLbnfqszKn08WN4/hp584HgNUaWQ3pGVfk3Os9vYGp5hIPqzh+eOuRNRCWqyiDkW7NH/58nOyi1N4wop7ZGqhrSaNijFVQT9UdakPeZafqlaN28FGjdLuqxy7q5LRDRe+9qeKYu+RGZas5R940Og7rz28/s8NJDMcmYS+Qztnh8UT9BywK+WYCHBb09eP+gCOZZmoxHyDryyqo1T9bWb1+9FMwlq9SNmHRNjH8LriUiIsFgP3VT7AK1eP1luf1eW+fXheRdrbKI/x4SMY8JG1IHgsoO5m7tb7nsJkyLl/Z2Pq7Cjp4RmBcJfilUD8Q== 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 VI1PR04MB5182.eurprd04.prod.outlook.com (2603:10a6:803:53::10) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5186.21; Tue, 26 Apr 2022 14:00:54 +0000 Received: from HE1PR0402MB3497.eurprd04.prod.outlook.com ([fe80::9974:fd5e:e3c0:14dc]) by HE1PR0402MB3497.eurprd04.prod.outlook.com ([fe80::9974:fd5e:e3c0:14dc%3]) with mapi id 15.20.5186.021; Tue, 26 Apr 2022 14:00:54 +0000 From: Geliang Tang To: mptcp@lists.linux.dev CC: Geliang Tang Subject: [PATCH mptcp-next v15 1/8] mptcp: add struct mptcp_sched_ops Date: Tue, 26 Apr 2022 22:00:52 +0800 Message-ID: X-Mailer: git-send-email 2.34.1 In-Reply-To: References: Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: HK2P15301CA0019.APCP153.PROD.OUTLOOK.COM (2603:1096:202:1::29) To HE1PR0402MB3497.eurprd04.prod.outlook.com (2603:10a6:7:83::14) Precedence: bulk X-Mailing-List: mptcp@lists.linux.dev List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: 6ed5495d-c42e-4952-c8ad-08da278d2dc9 X-MS-TrafficTypeDiagnostic: VI1PR04MB5182: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: xTNxjAKvYLtqj2Mto4cv60fEwcj2kO0ITv+54PVhs9mgx5zqYIUOLbNe6KrRG6WFc+2WA8kRWUe9tyGIh6hvGGBwfp92VIKx9w6rbxHopWbEuw1SQXXholFbEMlTWc/jIhg/cQDdecR4ItQEdOp7N2bt3ueRB6eZaBfntStcRYjUepKWkaUxk5QjOqdy2DQOpflLKgyPecyIEgXICDz60pkWPxcknRZUauGiHSlCYnYhprnESzKAyWMk0puC56QOMTrlLKhYqTL3egOTT+F5kkLrvkM4KOWxrOSN8HCBjewjF/QEiZX91SG3b6woJMHaqPbSSmnNAFDSmkvkDFK+NLRQrhffxK5QxuTjify/W2uayk6XArr+TVI/+W+heQdgAj0/FGFakrAUgTVkUobz7eTEdj2msUIVQPHvU3SRtup7TNXkepnhR7ehBJZul2BotPV91MAoTo0eI44+SjeHU/J/M7XbcmsN6KmhPOV5498Zbra3gYc3X20NWdmjPYHEFosuodWRr/byHILBiDcCj+uxZCICYjbbibKbINPWvoe8+E/LdCsB0EviuAYba8aNKv5KEAbvg7Je3onOgz9It1nDyfkJ7u0nzPV0bnfJPflLS6xUP71G5BZOqDI7iLVBd5H+0vRNK9KUB/omrNRTaCv4NPWSBd7WxKjTFH4P4awoVjQr5O4wM2PFFrx9DFad X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:HE1PR0402MB3497.eurprd04.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230001)(366004)(6512007)(6506007)(107886003)(186003)(83380400001)(2616005)(2906002)(508600001)(316002)(6916009)(86362001)(36756003)(6486002)(5660300002)(44832011)(4326008)(26005)(8936002)(38100700002)(66556008)(8676002)(66476007)(66946007)(13296009);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?idJ/vGBLZh9IGerC9E7aHuD2N2VWjIUxMIjP+VYZDqfrRZg3EF8gO84lfH3h?= =?us-ascii?Q?zZ+CzWXCf516T+/qW6jMm4QikqjtvvcgnjlnnpQYH2yW30MKGEgAz/aE4hlP?= =?us-ascii?Q?C7zgWq/iSoihVhvrIpzPy4HwWNh0s4+hTXdyQMlCVRc/pfywXKLyElQw4B5l?= =?us-ascii?Q?jSnOfFpij8s0CMJin7vFiVTBRM7aWELsSHFARulzpc0RwlHY092coCvK8XEx?= =?us-ascii?Q?azFJvQwYn29iTP83L7sX0BHtW1QrD6XjTRmireuoEXkSXhUPlOFw0pYUQYJM?= =?us-ascii?Q?Jf9OW65sUf1lOVbDtOVTFVx1u5RSTx+TodyQPxjC7cWxqDfKwzJ34tYoIRZV?= =?us-ascii?Q?Q5aC4vnDxsCun+3HkCiMdlUoYN4We06AZo8rjt5FUD3ep8rKo7cKGhj04W1/?= =?us-ascii?Q?p6uOiDQXMTnfdwv7yi4uxvmTahXm++Za3L1Wv7csqPqAPzIsnV1RQLJh5g77?= =?us-ascii?Q?4b9GuVhkV7nocX4jfmR+Yd/P9rDpQBlqPM83+XJhZ1PJvicE6npm1GsoysW8?= =?us-ascii?Q?WDapiGP//bVlHmb2brE8/wKZP8CAJBGzYTm3Dj72UlebNs2vOKXZVUEsi07P?= =?us-ascii?Q?XdL7Lx8MSMb5WHKSYJTsrRfU819SZ65LsU3dqXFEaooWy9PD/y3rlEsMJW9S?= =?us-ascii?Q?jjUiz1gmVmswg44f2h6eK+1uhBEmKTDFSW3qqk1KaI5F0oBr8Th7cKSfpHa5?= =?us-ascii?Q?4MO+nh1hYbpSMMStPzFQM+6RFzlVxITCYN4WFCDrlzdB5OxhM++4/SQX7JmA?= =?us-ascii?Q?FCDo73mh5CEp5/XG1XBp87aiMFq39Kw7v3foIPTE/pbZ2Eqxbo9rixdQZ746?= =?us-ascii?Q?/Z/xLEpEAwONIgQAerMgYAQU1HyaRac+uVoL9Q1F/xA1MsPYVeuePvjY9NfM?= =?us-ascii?Q?/CcwSVMQ99Av0/jCzRJylGYxaBGHXb2UWZRZPJ68s1AedDX754RY5zcUyenr?= =?us-ascii?Q?xFTn0c4wi7MkvF/fABQmcFGlK9OLdXsEgVhETUmRUXDWHGs6TGRVS4ivbW9d?= =?us-ascii?Q?JHv9AEprSsrrWTY8iUBCa6EcPnOatvDgsxowQ7TkWwiwGX0+tduJ8LUFHM95?= =?us-ascii?Q?+mlkru5WyM603LNMiDy+nxvhnU36eXySGVkAuCFFSeeokxMGGdZX+VFoqeOF?= =?us-ascii?Q?c8bo+QpkV2Zd9D+OiJlJI4prbiM9lQBrFv0xKCfMEQi81mKkX7sbPqN4K8MG?= =?us-ascii?Q?728VPC/+/VzSSSAtvMsBE4sH9GthUgpPorRFG7POdvH1zF3WeFIZi9Yxd4qA?= =?us-ascii?Q?EmjeKqnDWR+dfps+yqZQntilu/cRNLR9Pg69NSI+jwZb89KyaIxHGQb+8j+Q?= =?us-ascii?Q?mJBgWyDf9aiz+vZU2wduPbGjrcHtXKLx/4J7mystUrycSCnGucSj3NaihvvZ?= =?us-ascii?Q?EVPNgB3x6DpjUvXipzX1oTEB5DVz1c18mC6KKiTY0lASqGytuWbKZ9npgu0S?= =?us-ascii?Q?2gsLUJx1dRI7Bx5KMMvR5scV7Jvro3qGpRPfKseO4jgzKCekPU51SPf6ICQ8?= =?us-ascii?Q?zvwyyqkIHsAxDIRljlchq8EIoUB0ub1SbtAJz37mE8n+yf1xQc+UbmHq7F9u?= =?us-ascii?Q?unynqi1rPs7gqX1nvH7cFsMELgudJ/48D94vNFiL9OqmBBUVKLg5UevKUFP2?= =?us-ascii?Q?S0exR0HZ8dKBznszLigTfuJKptiZNVGs6aL8FQjL6cRY04YErJVQF0NtnH3P?= =?us-ascii?Q?3DSZjCduihz6vF3L9cZVw+z+im3N+q5B64edNGSPlrCPKDZ5VvBHqHSJa4/5?= =?us-ascii?Q?ifBVz2VzM0x4mHxp+K1LO3JAdT0lVr0=3D?= X-OriginatorOrg: suse.com X-MS-Exchange-CrossTenant-Network-Message-Id: 6ed5495d-c42e-4952-c8ad-08da278d2dc9 X-MS-Exchange-CrossTenant-AuthSource: HE1PR0402MB3497.eurprd04.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 26 Apr 2022 14:00:54.1385 (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: UIWIMBJVt+tjnYL08u2y7c5TgCjIyZZA4e+6fJJJOqLY0lnD3VTEUIuQpac3nA5M5IvkxjSjoLoYNvx0y1O8wA== X-MS-Exchange-Transport-CrossTenantHeadersStamped: VI1PR04MB5182 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, delete and find a packet scheduler on the global list mptcp_sched_list. For supporting a "redundant" packet scheduler in the future, this patch adds a flag in struct mptcp_sched_data named call_again to indicate that get_subflow() function needs to be called again. Signed-off-by: Geliang Tang --- include/net/mptcp.h | 19 +++++++ net/mptcp/Makefile | 2 +- net/mptcp/protocol.h | 3 + net/mptcp/sched.c | 56 +++++++++++++++++++ .../testing/selftests/bpf/bpf_mptcp_helpers.h | 18 ++++++ 5 files changed, 97 insertions(+), 1 deletion(-) create mode 100644 net/mptcp/sched.c diff --git a/include/net/mptcp.h b/include/net/mptcp.h index 4d761ad530c9..dd4ee7a77567 100644 --- a/include/net/mptcp.h +++ b/include/net/mptcp.h @@ -95,6 +95,25 @@ struct mptcp_out_options { #endif }; =20 +#define MPTCP_SCHED_NAME_MAX 16 + +struct mptcp_sched_data { + struct sock *sock; + bool call_again; +}; + +struct mptcp_sched_ops { + void (*get_subflow)(struct mptcp_sock *msk, bool reinject, + struct mptcp_sched_data *data); + + 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 6e7df47c9584..8a7f68efa35f 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 pm_userspace.o + mib.o pm_netlink.o sockopt.o pm_userspace.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.h b/net/mptcp/protocol.h index 4672901d0dfe..221bb6b9860e 100644 --- a/net/mptcp/protocol.h +++ b/net/mptcp/protocol.h @@ -621,6 +621,9 @@ int mptcp_subflow_create_socket(struct sock *sk, struct= 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 char *name); +int mptcp_register_scheduler(struct mptcp_sched_ops *sched); +void mptcp_unregister_scheduler(struct mptcp_sched_ops *sched); =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..c5d3bbafba71 --- /dev/null +++ b/net/mptcp/sched.c @@ -0,0 +1,56 @@ +// SPDX-License-Identifier: GPL-2.0 +/* Multipath TCP + * + * Copyright (c) 2022, SUSE. + */ + +#define pr_fmt(fmt) "MPTCP: " fmt + +#include +#include +#include +#include +#include +#include "protocol.h" + +static DEFINE_SPINLOCK(mptcp_sched_list_lock); +static LIST_HEAD(mptcp_sched_list); + +/* Must be called with rcu read lock held */ +struct mptcp_sched_ops *mptcp_sched_find(const char *name) +{ + struct mptcp_sched_ops *sched, *ret =3D NULL; + + list_for_each_entry_rcu(sched, &mptcp_sched_list, list) { + if (!strcmp(sched->name, name)) { + ret =3D sched; + break; + } + } + + return ret; +} + +int mptcp_register_scheduler(struct mptcp_sched_ops *sched) +{ + if (!sched->get_subflow) + return -EINVAL; + + spin_lock(&mptcp_sched_list_lock); + if (mptcp_sched_find(sched->name)) { + spin_unlock(&mptcp_sched_list_lock); + return -EEXIST; + } + list_add_tail_rcu(&sched->list, &mptcp_sched_list); + spin_unlock(&mptcp_sched_list_lock); + + pr_debug("%s registered", sched->name); + return 0; +} + +void mptcp_unregister_scheduler(struct mptcp_sched_ops *sched) +{ + spin_lock(&mptcp_sched_list_lock); + list_del_rcu(&sched->list); + spin_unlock(&mptcp_sched_list_lock); +} diff --git a/tools/testing/selftests/bpf/bpf_mptcp_helpers.h b/tools/testin= g/selftests/bpf/bpf_mptcp_helpers.h index b5a43b108982..de20fbdb6d98 100644 --- a/tools/testing/selftests/bpf/bpf_mptcp_helpers.h +++ b/tools/testing/selftests/bpf/bpf_mptcp_helpers.h @@ -6,6 +6,24 @@ =20 #include "bpf_tcp_helpers.h" =20 +#define MPTCP_SCHED_NAME_MAX 16 + +struct mptcp_sched_data { + struct sock *sock; + bool call_again; +}; + +struct mptcp_sched_ops { + char name[MPTCP_SCHED_NAME_MAX]; + + void (*init)(struct mptcp_sock *msk); + void (*release)(struct mptcp_sock *msk); + + void (*get_subflow)(struct mptcp_sock *msk, bool reinject, + struct mptcp_sched_data *data); + void *owner; +}; + struct mptcp_sock { struct inet_connection_sock sk; =20 --=20 2.34.1 From nobody Thu Sep 18 06:43:39 2025 Delivered-To: wpasupplicant.patchew@gmail.com Received: by 2002:a05:6a06:869:b0:4b8:7781:bd2f with SMTP id d41csp466042pis; Tue, 26 Apr 2022 07:01:12 -0700 (PDT) X-Google-Smtp-Source: ABdhPJw+MBkHqvf4i2zwK2x96edYxbK7zXnd9iTLbclS7BmigPgvowx+Qvkfi4DFKXeLtmvHvq6N X-Received: by 2002:a2e:9e13:0:b0:247:e32a:ddce with SMTP id e19-20020a2e9e13000000b00247e32addcemr15043376ljk.9.1650981671785; Tue, 26 Apr 2022 07:01:11 -0700 (PDT) Return-Path: Received: from da.mirrors.kernel.org (da.mirrors.kernel.org. [139.178.84.19]) by mx.google.com with ESMTPS id e4-20020a196744000000b0044a6930eddesi18206827lfj.493.2022.04.26.07.01.11 for (version=TLS1_2 cipher=ECDHE-ECDSA-AES128-GCM-SHA256 bits=128/128); Tue, 26 Apr 2022 07:01:11 -0700 (PDT) Received-SPF: pass (google.com: domain of mptcp+bounces-4892-wpasupplicant.patchew=gmail.com@lists.linux.dev designates 139.178.84.19 as permitted sender) client-ip=139.178.84.19; Authentication-Results: mx.google.com; dkim=pass header.i=@suse.com header.s=mimecast20200619 header.b=VgHNvJ69; arc=fail (body hash mismatch); spf=pass (google.com: domain of mptcp+bounces-4892-wpasupplicant.patchew=gmail.com@lists.linux.dev designates 139.178.84.19 as permitted sender) smtp.mailfrom="mptcp+bounces-4892-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 da.mirrors.kernel.org (Postfix) with ESMTPS id 424472E09CC for ; Tue, 26 Apr 2022 14:01:10 +0000 (UTC) Received: from localhost.localdomain (localhost.localdomain [127.0.0.1]) by smtp.subspace.kernel.org (Postfix) with ESMTP id 03E29645; Tue, 26 Apr 2022 14:01:09 +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 7E16F7E for ; Tue, 26 Apr 2022 14:01:06 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=suse.com; s=mimecast20200619; t=1650981664; 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=hvvbsvegrT5AxOmxgn8ZnJ8aX41EgSZK+9yoTkUuqUY=; b=VgHNvJ69j+vnRS3OvDZes9D1TO3nQZQUCkbLVjqWlcpZhB6f2dw2t2xfzZ+WgMinzbr624 aLcd5vp5Ey/Fk5aamfdoFrWY6sgwM8q4jl8WLI7Gyx0s6hWqPpS7J21yzy1JoS0HGuhMMk vGaJLW37DBq9Oax7E1OF6F6iCGfQ/pg= Received: from EUR01-DB5-obe.outbound.protection.outlook.com (mail-db5eur01lp2057.outbound.protection.outlook.com [104.47.2.57]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id de-mta-15-sa0no3VoOfCXiiaQXojh5Q-1; Tue, 26 Apr 2022 16:01:03 +0200 X-MC-Unique: sa0no3VoOfCXiiaQXojh5Q-1 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=RLMu4m4pWe/ZTR8+sKIUIvmw/A53SYvXdPcISdVlHGuMbDHBn3hgK1VDgcK4jfsCnP3MGdY8grHMs9C+3M+EbapGdoqpUpJH9KHROKoCIeUyFVtXaQQrQRXH84Hi3QtiGecZOims1OAbuWrgPtlQZvojRnImD6FJ7jzOr8f3yYKAU7xftIE3P+7zFyN5fMfH4yXBGSKPG/314WH2/bJ0JPSxKmoJwbrOkPyLeWAKVMsJDs26ftS95S5hZbq1eiMJJTRrxlGKQQHKIXIAChbH55ETAnnaOxH0uaCudPwbZ8VuCSDeGMP1RZrBJCGZdqUo2I8IcRqA0IxKdTiSavw10A== 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=S5IMNB/Ob+mif/9GAdi4MrvdeD5EMOBSGJjiuM5U208=; b=Wat86DaH8jIUlm74ttaUbs6QYKiEXwNVag6u7DYnIl/HoVsO8ksgRBNUqoQZt6yUtfUERf6iLVdLa7d5eQN9QI4qzDacmSoJ20Ai0fU3W/KrvOwZ0rpJvg0tErS/QX5WyyWY2kzyRsRcQjBg6hP+TKkTZTpjsZ5p56p0H1sOO1spRb9kKIMk3Bfi3f7Utca5R5u4Rk+W5os7IXWwFix/y63tjs0IHU3TliGsW9PRe4ni9QHy4XYr4EFP1DXCtyuljeuHm/vwHllagcgtFUjy0TR9edwuhF79ll1B9EreKjc7/ZlkeWEnMbfuHfWdq5DD67ufz4sC8DKv0+5PF9yTpA== 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 PAXPR04MB8816.eurprd04.prod.outlook.com (2603:10a6:102:20f::7) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5186.21; Tue, 26 Apr 2022 14:01:02 +0000 Received: from HE1PR0402MB3497.eurprd04.prod.outlook.com ([fe80::9974:fd5e:e3c0:14dc]) by HE1PR0402MB3497.eurprd04.prod.outlook.com ([fe80::9974:fd5e:e3c0:14dc%3]) with mapi id 15.20.5186.021; Tue, 26 Apr 2022 14:01:02 +0000 From: Geliang Tang To: mptcp@lists.linux.dev CC: Geliang Tang Subject: [PATCH mptcp-next v15 2/8] mptcp: register default scheduler Date: Tue, 26 Apr 2022 22:00:53 +0800 Message-ID: X-Mailer: git-send-email 2.34.1 In-Reply-To: References: Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: HK2PR06CA0017.apcprd06.prod.outlook.com (2603:1096:202:2e::29) To HE1PR0402MB3497.eurprd04.prod.outlook.com (2603:10a6:7:83::14) Precedence: bulk X-Mailing-List: mptcp@lists.linux.dev List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: d1e24bc7-f9b8-4ede-c85c-08da278d3271 X-MS-TrafficTypeDiagnostic: PAXPR04MB8816: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: /TDRj6wfYvhu4YrnumfDBKGcQpriFS5TF7Akz7aB+1dgPk2tN0qd9yItmjwx0VfiBG6ISldpAwQaW5NDTvGDfFAiW92QnOpBf1Rm5TR9D7Dtq9s48hPrHkNOc0cinvb5qvQP34hOcdHU87lQ8MFEXQ+SHU2nyFFQZhfVa/lPHm6Pxm4T4kYw0Y/5e7H7I9gaM/kKO7+nY+MYMxkD4PaRX66FbTyj54If+IthFv1hvJZuy6OAE8IdVxJubYIyxSxXSTXapAxCwuBT9IgGzI00TtRFLZXR7sTkWJRXzzqG2s0RsFEtZtd3SchHdL/tOcf9NFhUVAkfAs3ms4cAMD4JbG9FaQ9DPoOcyJE7uzlR9isNV0rPLCO9J+cavqm3ZwtEcZeDHPzwE63HmI9Ngr2QnIaJd5L0RO43isCK9+DrxITcUuEouSbA7i+kCCZWlZt8Z150USy7U4VusZL1BWs1BFM0tuSGxg7hlE6hdPNP80Cc2i3des2DtwQuXgbjNDbcss5Npt3eHc291R7jiuxmOFjahI9Q+bB2Kj+lUx2CFo9krkiEtezUklVJgsUEv/zM/uavhTTxZ2rSgk/OT10Pu7nZ5YPitUziFq6xN6GqhNdzCNMQIV93rKX6muT5SnPXSIJRbTyc3xBq4NHcPgHSD++k2cGWHgWbr50GwQ4Y+bvnE+iKT2ecw3czogknp/qJ 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)(66476007)(66946007)(8676002)(4326008)(83380400001)(107886003)(2616005)(316002)(6916009)(86362001)(186003)(508600001)(6486002)(6512007)(66556008)(6666004)(6506007)(26005)(38100700002)(8936002)(5660300002)(36756003)(44832011)(2906002)(13296009);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?Unbqgw3Pd2BfQ8Y0NSU/6nQoiP9fu8+906wVgoS0A4Zhj47xTaKJjedYyh47?= =?us-ascii?Q?OUxESO0JoYi5kF3HPlVC7Ovp3k0Dxq4FPsZVqCB38sSs7DKpFIKFdepxF3ep?= =?us-ascii?Q?TaLwnijf+mWvmh7ykrl74f/250c9FWR6eRIND3p9l9CYtFQHC1S/eDERnf1l?= =?us-ascii?Q?L3S5AjgP/Wh2dsT7orU8VWCRvDDu1mnOShqORLwYhw8YkPX/W6iKUy+eR5rp?= =?us-ascii?Q?BI1zpOzpvUoxaJvnPmDDjOLBWWfSRnExmo1d7szFUZkfbR12dWln+idpnAjR?= =?us-ascii?Q?iZqjgjRdsBDr109VezQSgVyXbDUW8j4BeVsaGwqj+MkIYGLfzPgNQ5iElMRs?= =?us-ascii?Q?NMkS3RExfd4UWCVj4Sl0VaDGHDQfA98kzpCCNv4SudoXi8BnamQD4MpZNUUX?= =?us-ascii?Q?3KNjkj/yeWJS0oWzMvy3mDGtOxin61MZwVwBuh88ydtQB0K995H6w7zzn+VN?= =?us-ascii?Q?QAtRMxmasjCIbi3WV+QyL+bJSHc5+J/JbCv1YM4tVfrqDT7sY8NNLYcL8xQQ?= =?us-ascii?Q?RUj0+m1vFuqcgmiAHFafuXow+ljw5LYFbuEcKjYdM72HHWeHzBz+2MNGhA3a?= =?us-ascii?Q?bOgW3TeCf+lPty4VxkYgYIUY379SglDxpcVrEGlJ1qQ4VNuGppamHQL7Bfgc?= =?us-ascii?Q?GBYYz7f9HapUFET/RzrWv6uybGWkkCGj0LxhKyZsUC2HBUquuDcTxV6hvGI2?= =?us-ascii?Q?0nfFJygzo4RUYlrDGDldbQamOdDDedB+6uASXg7XS+VsyQeCdumi3tzZz1vU?= =?us-ascii?Q?XkEhf+pCs9XBYRDbDSFW011o7DWc7UZYBS+0EGHQvlJfHNWfmLsPx/UPTBB5?= =?us-ascii?Q?SHFGZKNMdAlK9Iu+9lj/YG4Hs3a1ElLXXt8bgMBAV9kU2RrmlATijfSS+9tg?= =?us-ascii?Q?S3M5KnDVXxJ/HUTA4abUQpDH95G2gp1oZNdCrQ9VrwPQlmZ2V6vQ3cpLCdgX?= =?us-ascii?Q?JJ13uyRZfijSe/WN1yeIy2mI1iypJ3F1xfAdIRCimGKdESqCuLVK/fpMvDaI?= =?us-ascii?Q?Ap4ZGLF2Y+duxX2XSi/VWwUoRrKgmaIjwzxtY7lk61sXUPY4BshjfZcUbRAD?= =?us-ascii?Q?eLUAkZ0iaX1wl9nSayOwQo/DnftJ/iQeLTGaHVB5Lp3H+aEzllxjGneuSwoc?= =?us-ascii?Q?rWoI1syBHbD9Uy+wfeMaqcUo6ZxsEhV/7ZMxjMOSakKwyoxuu9RJldbS+kzg?= =?us-ascii?Q?OnQNW+xG5d6nII+yskBIlN3CJQ7eVifqF4vLhZLs9V4Bauv3kbSwjzhizOX7?= =?us-ascii?Q?r1HHXKCMRkW50s6hK0lNA5bT/vOIm+lb1XSZNPABF+QYx2rbPsbOm0jeXm0F?= =?us-ascii?Q?V7LHqgxRSo7ZkrbY/JyNZLo7FnoRZm420Z54LhkbYBm3YWvPdcKeT+DkrQ7m?= =?us-ascii?Q?9nmZPVdo1Y1susbd1Izq9pNc1ZmyETtgvoALWA0YfinKOtAor3/XB5mJKj9s?= =?us-ascii?Q?QXSBA0WRw3lZpe8toLL6Z2fLERIi3KyNFyM+OiguP41QA6CdKp6YQgU4K1hq?= =?us-ascii?Q?HDkFKFehBAVjjq4CkhpJsj7JTNFETeyYTl+5Tel2Oc3SV1DCgkxQOB3vnJeK?= =?us-ascii?Q?nlPVRtdqA07jl9SVuTwUuMd0hpM4un9GV8WqBTs1nAb1V5DND5bYs7bxCi9H?= =?us-ascii?Q?Iin93eqiqoppb4srWc2PKOJ5/N9zq/GYpS+Ns33wuQYsKVSlltI/MDiB4fEO?= =?us-ascii?Q?IVcXk4bEJdJ9rir+YDeV0kWdzTmDDcMPLh8LLtqZ5sgqBL+pQIqxdSL29lBY?= =?us-ascii?Q?Es7XTJQt0eN9sfNRVOEs2l+1Aa61BkI=3D?= X-OriginatorOrg: suse.com X-MS-Exchange-CrossTenant-Network-Message-Id: d1e24bc7-f9b8-4ede-c85c-08da278d3271 X-MS-Exchange-CrossTenant-AuthSource: HE1PR0402MB3497.eurprd04.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 26 Apr 2022 14:01:01.9660 (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: 4MaI37/sbVmaId7QcM+UkTisnA8tj2YeXSNTnddjo/ijGCwTPx3SS+Oe93y2AszK+d3cWe8Gak65Vh/sCzHxaQ== X-MS-Exchange-Transport-CrossTenantHeadersStamped: PAXPR04MB8816 Content-Type: text/plain; charset="utf-8" This patch defines the default packet scheduler mptcp_sched_default, register it in mptcp_sched_init(), which is invoked in mptcp_proto_init(). Skip deleting this default scheduler in mptcp_unregister_scheduler(). Signed-off-by: Geliang Tang --- net/mptcp/protocol.c | 9 +++++++++ net/mptcp/protocol.h | 3 +++ net/mptcp/sched.c | 14 ++++++++++++++ 3 files changed, 26 insertions(+) diff --git a/net/mptcp/protocol.c b/net/mptcp/protocol.c index 653757ea0aca..bf9d5bd8dfa6 100644 --- a/net/mptcp/protocol.c +++ b/net/mptcp/protocol.c @@ -2259,6 +2259,14 @@ static struct sock *mptcp_subflow_get_retrans(struct= mptcp_sock *msk) return min_stale_count > 1 ? backup : NULL; } =20 +void mptcp_get_subflow_default(struct mptcp_sock *msk, bool reinject, + struct mptcp_sched_data *data) +{ + data->sock =3D reinject ? mptcp_subflow_get_retrans(msk) : + mptcp_subflow_get_send(msk); + data->call_again =3D 0; +} + static void mptcp_dispose_initial_subflow(struct mptcp_sock *msk) { if (msk->subflow) { @@ -3813,6 +3821,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 221bb6b9860e..65a765c8d2be 100644 --- a/net/mptcp/protocol.h +++ b/net/mptcp/protocol.h @@ -624,6 +624,9 @@ void mptcp_info2sockaddr(const struct mptcp_addr_info *= info, struct mptcp_sched_ops *mptcp_sched_find(const char *name); int mptcp_register_scheduler(struct mptcp_sched_ops *sched); void mptcp_unregister_scheduler(struct mptcp_sched_ops *sched); +void mptcp_get_subflow_default(struct mptcp_sock *msk, bool reinject, + struct mptcp_sched_data *data); +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 index c5d3bbafba71..bd0beff8cac8 100644 --- a/net/mptcp/sched.c +++ b/net/mptcp/sched.c @@ -13,6 +13,12 @@ #include #include "protocol.h" =20 +static struct mptcp_sched_ops mptcp_sched_default =3D { + .get_subflow =3D mptcp_get_subflow_default, + .name =3D "default", + .owner =3D THIS_MODULE, +}; + static DEFINE_SPINLOCK(mptcp_sched_list_lock); static LIST_HEAD(mptcp_sched_list); =20 @@ -50,7 +56,15 @@ int mptcp_register_scheduler(struct mptcp_sched_ops *sch= ed) =20 void mptcp_unregister_scheduler(struct mptcp_sched_ops *sched) { + if (sched =3D=3D &mptcp_sched_default) + return; + spin_lock(&mptcp_sched_list_lock); list_del_rcu(&sched->list); spin_unlock(&mptcp_sched_list_lock); } + +void mptcp_sched_init(void) +{ + mptcp_register_scheduler(&mptcp_sched_default); +} --=20 2.34.1 From nobody Thu Sep 18 06:43:39 2025 Delivered-To: wpasupplicant.patchew@gmail.com Received: by 2002:a05:6a06:869:b0:4b8:7781:bd2f with SMTP id d41csp466102pis; Tue, 26 Apr 2022 07:01:17 -0700 (PDT) X-Google-Smtp-Source: ABdhPJwUy9ZJ8MTek1WrqsI+pT3ho5SyhRaBaVbRyJVPDGtaCMLPw836xjdd9IjmZQqW2xZP5UCi X-Received: by 2002:a05:6e02:1e08:b0:2cc:4b66:1984 with SMTP id g8-20020a056e021e0800b002cc4b661984mr9148319ila.266.1650981677653; Tue, 26 Apr 2022 07:01:17 -0700 (PDT) Return-Path: Received: from sv.mirrors.kernel.org (sv.mirrors.kernel.org. [2604:1380:45e3:2400::1]) by mx.google.com with ESMTPS id l13-20020a056638144d00b0032b06dc40f5si816284jad.6.2022.04.26.07.01.17 for (version=TLS1_2 cipher=ECDHE-ECDSA-AES128-GCM-SHA256 bits=128/128); Tue, 26 Apr 2022 07:01:17 -0700 (PDT) Received-SPF: pass (google.com: domain of mptcp+bounces-4893-wpasupplicant.patchew=gmail.com@lists.linux.dev designates 2604:1380:45e3:2400::1 as permitted sender) client-ip=2604:1380:45e3:2400::1; Authentication-Results: mx.google.com; dkim=pass header.i=@suse.com header.s=mimecast20200619 header.b=CYpRotNw; arc=fail (body hash mismatch); spf=pass (google.com: domain of mptcp+bounces-4893-wpasupplicant.patchew=gmail.com@lists.linux.dev designates 2604:1380:45e3:2400::1 as permitted sender) smtp.mailfrom="mptcp+bounces-4893-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 sv.mirrors.kernel.org (Postfix) with ESMTPS id B331E280AB2 for ; Tue, 26 Apr 2022 14:01:16 +0000 (UTC) Received: from localhost.localdomain (localhost.localdomain [127.0.0.1]) by smtp.subspace.kernel.org (Postfix) with ESMTP id CF641645; Tue, 26 Apr 2022 14:01: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.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 EB2217E for ; Tue, 26 Apr 2022 14:01:13 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=suse.com; s=mimecast20200619; t=1650981672; 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=0wdiQG+LBgIrcJUzlt8SoaY9hoqvSGM7TtHPg0XxN68=; b=CYpRotNwjOMp//+9ssdTlWiggQVPzInS8tSNsBbqkm3F7Bp6z2eQoOK2CLkvpNaO4qZZ4X gfGmWNbopiJ29qjnHt+9Bp/2md3Q1G/GTivRETMS2AH6PwOz1pPd/zyMrOt3NvIpz0kJdj 1jFdj/0yd/PkFWpzHE1aiCiaOEH8pQk= Received: from EUR01-DB5-obe.outbound.protection.outlook.com (mail-db5eur01lp2059.outbound.protection.outlook.com [104.47.2.59]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id de-mta-19-H-a7WOgQPmG4GZ_nqYOm5A-1; Tue, 26 Apr 2022 16:01:10 +0200 X-MC-Unique: H-a7WOgQPmG4GZ_nqYOm5A-1 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=grdNmf9Wd2eUeLcY9ZjNFhq/C3FUn+vqi4Cx4LXpJ8Y6tTPN8/DsHoYzmjvwzQKxwHcQkdOnHNCGaGKlvCXCD0oL9r9+ggUvuh2ez/vs+bft+mTOBZ5+MwFjyNe2QjG/czHG+bEcqyCAVvBXJQZWZuhZfyp62oXADIPKqtCBoCTAhrXB5Az4rEVyE9F1GJ+5h1k955G+LbQ8dMSrwGW05Dt6Zegsme0oycuwKATFDsjf8Uv0dg+9yeowOWPKeC4kfLdMzXNIrdH162qJQUNUgdVA3sTxvRVANvarY4yTUZnSOWRc9iUMz935Az06eWfg0jyvB6KgZyAk+GssKaQqcA== 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=v8lC6GT89JCk8TLpLGMc+iHrXZ9DltZZTYA46dBTO30=; b=nTdyMWu00CeREKEV4Qy6ofeAmEIQhNq8Y9+xjFNaCaGKOED3uzho1b73WRvICJprEfV9lwfdgAALgl4y8XLGKxFb7RvmlKuSb1ITS3T7QwrniQgAWO/BkGEc7aEsb8nseZu3D/KFs/AaFzQxLLNropF4HaYalK3RjnA8znZtDoT2kUW4t5iBa85b4O8rfhO9PccnAhrvBbEK7MlylYUu8GeXY9OGXCwPKySnG0haQkDXCC8Tss7BYsMEtKOZ48OSkAAp32Ql1IfBgQcR3q97wkG7xtis+ogEZ9T10gZCq8vRaKS1flygBRHdo/ltoKUL15f8xC3ainvKliCDwkiBWw== 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 PAXPR04MB8816.eurprd04.prod.outlook.com (2603:10a6:102:20f::7) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5186.21; Tue, 26 Apr 2022 14:01:09 +0000 Received: from HE1PR0402MB3497.eurprd04.prod.outlook.com ([fe80::9974:fd5e:e3c0:14dc]) by HE1PR0402MB3497.eurprd04.prod.outlook.com ([fe80::9974:fd5e:e3c0:14dc%3]) with mapi id 15.20.5186.021; Tue, 26 Apr 2022 14:01:09 +0000 From: Geliang Tang To: mptcp@lists.linux.dev CC: Geliang Tang Subject: [PATCH mptcp-next v15 3/8] mptcp: add a new sysctl scheduler Date: Tue, 26 Apr 2022 22:00:54 +0800 Message-ID: X-Mailer: git-send-email 2.34.1 In-Reply-To: References: Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: HK2PR02CA0167.apcprd02.prod.outlook.com (2603:1096:201:1f::27) 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: f5db8f5f-30cd-4bc8-a330-08da278d36f3 X-MS-TrafficTypeDiagnostic: PAXPR04MB8816: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: 3pFmFCSeLhqhyoPGxsUZ6OdFOE5Vlz3BAPty3Us1OHNc3spq3nAtem8yXHxCeESnZyNH1GXPDwHP8xD2541+bUppN8KIDbL8Bs6SZhoTPhQCbVLPhedl8DHpuYl4//H8YDH5h6I7pvZYI9DsYEb02CU9HDI9Qrn3/cYEIq90xKNyfTaCK0bA1fhpU+AAt1bSYdv4r0AuWg+676q2bjdsTuYqheSPvCLz5x4MZdtFh3cC40SuVL+HOFBfANd0Dy0n3Lv1sW4jR3nXqYqV4qHp/JdYil77nLfda3YboVOfCEkY8+l8z3PQCb2DC+xYgzELh20divP+94ayKVA5fmKJtua6vQkXZoHSUlK47b/x9AeDl6xIPXx5nVXoXIl22xbQYLM92uuykC/F9bECmKo/3szjys+JqVO5/qhomh7kZ2JE6rtK/rGiGjo1DY8Dd/LmBw0hFWFwJDgU39OhjtekqbTrYSyiU7VO8RcJARMCCb2LYF5PeQ/J2LTcciPKeD2DDp5j6bvQKXO/AAZJ6mPdp7/riXrNm6lBS5k7GOfR8MRmQXQysaXiiVc4Y/l1FJqABwaRnG4HzHQ0ge7L5bcCYnxM+59FSb8QmM/wtfBkD/uASCa/wICz3XQu/1xf/LZpxyYWdVXWcmCe6mwrc6xuIwmerRPLmXpbYvBlABOk9WXiHGN8o/n09ESA3kAjLAO+2zKsVXKguZwfVxr32JgetQ== 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)(66476007)(66946007)(8676002)(4326008)(107886003)(2616005)(316002)(6916009)(86362001)(186003)(508600001)(6486002)(6512007)(66556008)(6666004)(6506007)(26005)(38100700002)(8936002)(5660300002)(36756003)(44832011)(2906002)(13296009);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?WkhBLjX8jcWWwFbGJfgy9O8OtnMxx5Cm/eKEQ4y47zhUTjBVEq3V7rN0kio4?= =?us-ascii?Q?9UybLIku47Nom3oysbYB9TI95uVWGniSKOcqZ/mAKeu7o1lBfRLuxRW70J2F?= =?us-ascii?Q?PwSA1vvzxfS6cHo/cmpop/Akfp/qB1Du+iIeYYu/gPeBX99kH9BLuyaCQac+?= =?us-ascii?Q?ptjf+Z+ZdfpAS+QxwU8Wf5Jn1X1LjUCkQVdzZ/KZj1nDUluB75FibrAbFS5J?= =?us-ascii?Q?P94f5ZPdL5zSYPgowetVR+PSN4HS8lmgGK7laidINzkmEbjMKrDeFwaFkOjy?= =?us-ascii?Q?TjHvutSWiazQ252IoXdImlKODOEuCm/Dn+wI7RlG/xnelW9uKNGfeN+57u4q?= =?us-ascii?Q?kXAxiMmN+RmlIl8JodZlf5oOAy6uxml/esZy995jrQvIebJggOA/FNv4rKrE?= =?us-ascii?Q?3zeb/l7NVTTVlx8ShrM5e4M0bhCJ8dA15SvdJdxboSB1Euycy/dyHbVWWzkY?= =?us-ascii?Q?zP6jqcHJPVYs1CnD/5z7CncJruVhU2Rj2obmaTrkOzHnai055ATixsuWWX8z?= =?us-ascii?Q?5mBSpkaWmLvtCPi8w07q9CbPfLtiWW4v/6SLWZNKRkgc7ETkrLEbV5fAnARk?= =?us-ascii?Q?qSrQ8S2ge2zVHwc+TzHcrJqDvhPiIWhuPyRiOo2zhWpKlyYLtYLd1q2EWhcS?= =?us-ascii?Q?XNhlCualpmHGo9S7tdoLp1OF7YfmvGlDWC+WqJc0u24K1ohTT/7w0hlWZ0lC?= =?us-ascii?Q?+ocZV/yqVjgbi1Ndtu7hPgPHblybx+m6wxvpptmpcdnGEK2aZ3f3jfG/Bmxq?= =?us-ascii?Q?YlebY3Wl2Lhjo6h+qxWT/B5+e3T6mpBa15RrLMr4+97wPFBcyopMJU4lOf+/?= =?us-ascii?Q?VzXb8xnFa7PyGAnukEWJpPbwPlYbfBY60xO5x0eMsw5TsO490p5UDcuEYq6t?= =?us-ascii?Q?Gh3W30OBn2K9PMzAq6qnLhrx4TVjJF73PH1yfYqAVNcCD8xMtYMfSHvm1nZx?= =?us-ascii?Q?JrfrP/9Y7NmKRiv6M6xg/pUXZWzYVAXGVrces8si9iaXRxoe3/9WU63zBays?= =?us-ascii?Q?+8x4+JlmBVbk44QBHgfwcZ+NElcj80vPgHwRGP6ahty3fjHWF7ccTk0ZBNQ0?= =?us-ascii?Q?W6jhsBMoFWQbosClwwjEYn8unhspupdoi0ulnBqrSv4C+DwferLI2Kw3YEwQ?= =?us-ascii?Q?ooh6j7bk3cO9YnhKESALe6SoQd2rMx4Ikbw/mopQP0PaY3vTAcOBQ/2ZL65M?= =?us-ascii?Q?PGGRKyEpaja7ntdwc6XsnizKfJyygX9+UdQriGuxc0vpYl4LpAa1ctfJpajo?= =?us-ascii?Q?xNxO9D/pCKG4wqT5yzkNwGYpvE4qq1YDMvy8wwQ1Zawsl5qz45Dno2KfPniU?= =?us-ascii?Q?K8gPnAuh5lH0nO3AKQUhOm4d9Z4zMORsjf9sK5zLE2uYc976C83LyE2d/ZHS?= =?us-ascii?Q?xe378MAkzvq5tzq2T0ous/6p7ED44IfoR/709+drBeRZfZUh6TU41xFr9Byp?= =?us-ascii?Q?VIqSwzNonbLkBhUguO/SwBWRQz3suTGRNAKr9V3uzEXyjDtpfSbLLXehpMsy?= =?us-ascii?Q?tABHGMnKz0198LLzoUrySq1NY4gtESyqx9pybSK+LOljYQwmsf/KQ4AzaT25?= =?us-ascii?Q?LZvksEQj/DGP9IAZ7UBs9p0M+6MJHTKVkEfMzQLwyDn6ljoVH7sHUwKkTPlh?= =?us-ascii?Q?5Rd0Z3YGXzTQBOToEjwoSDXtvKZZV3D59KLlREGmpYlr5ju5CFLpNKkmsDpB?= =?us-ascii?Q?8CM0u9mDIMagBdLL+n9w6R4YSt8mnWjEAn4vzziw3xCfhAmskmhPXXUXIQqR?= =?us-ascii?Q?DWCvaQgBfml2yBj7Pnqp+nMysqq2Lps=3D?= X-OriginatorOrg: suse.com X-MS-Exchange-CrossTenant-Network-Message-Id: f5db8f5f-30cd-4bc8-a330-08da278d36f3 X-MS-Exchange-CrossTenant-AuthSource: HE1PR0402MB3497.eurprd04.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 26 Apr 2022 14:01:09.5123 (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: pilsDB/c7tFZdKY+K7aYZczAlY6JeQc8umGfvoaemJV69CNInpxTpbld7ICFg7Dg+IIFJPYobKWjQSnsawFHKA== X-MS-Exchange-Transport-CrossTenantHeadersStamped: PAXPR04MB8816 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 65a765c8d2be..4842a28f34c2 100644 --- a/net/mptcp/protocol.h +++ b/net/mptcp/protocol.h @@ -596,6 +596,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 Sep 18 06:43:39 2025 Delivered-To: wpasupplicant.patchew@gmail.com Received: by 2002:a05:6a06:869:b0:4b8:7781:bd2f with SMTP id d41csp466207pis; Tue, 26 Apr 2022 07:01:25 -0700 (PDT) X-Google-Smtp-Source: ABdhPJxv3Qd6l6tvv8Ufg6RXZ9KhFtWIB/TB4XyhDSWpvOsAX0DF/FXw4Tp1hp2x4Ens5nn/RL1y X-Received: by 2002:a63:9d8a:0:b0:3ab:6ae4:fc25 with SMTP id i132-20020a639d8a000000b003ab6ae4fc25mr6244680pgd.496.1650981684666; Tue, 26 Apr 2022 07:01:24 -0700 (PDT) Return-Path: Received: from sv.mirrors.kernel.org (sv.mirrors.kernel.org. [139.178.88.99]) by mx.google.com with ESMTPS id d19-20020a056a0024d300b0050ce8f701adsi14843574pfv.296.2022.04.26.07.01.24 for (version=TLS1_2 cipher=ECDHE-ECDSA-AES128-GCM-SHA256 bits=128/128); Tue, 26 Apr 2022 07:01:24 -0700 (PDT) Received-SPF: pass (google.com: domain of mptcp+bounces-4894-wpasupplicant.patchew=gmail.com@lists.linux.dev designates 139.178.88.99 as permitted sender) client-ip=139.178.88.99; Authentication-Results: mx.google.com; dkim=pass header.i=@suse.com header.s=mimecast20200619 header.b=ea+KJdJM; arc=fail (body hash mismatch); spf=pass (google.com: domain of mptcp+bounces-4894-wpasupplicant.patchew=gmail.com@lists.linux.dev designates 139.178.88.99 as permitted sender) smtp.mailfrom="mptcp+bounces-4894-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 sv.mirrors.kernel.org (Postfix) with ESMTPS id E4AED280AAE for ; Tue, 26 Apr 2022 14:01:23 +0000 (UTC) Received: from localhost.localdomain (localhost.localdomain [127.0.0.1]) by smtp.subspace.kernel.org (Postfix) with ESMTP id 0B254645; Tue, 26 Apr 2022 14:01:23 +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 1CB267E for ; Tue, 26 Apr 2022 14:01:20 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=suse.com; s=mimecast20200619; t=1650981679; 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=7IQbAaZuItqGn45zdY0b7mjJfFznzVRLGHb6Y1LCFzQ=; b=ea+KJdJMO8Wia5i8EzIm96Nakse5p56Ag8DwOjGdGrSkUr6nFq+A45sTJHcEoGhCrtLj4C PzlBwFrWzB9l1/vljQmXKJU7svkurqdo8VMzB7XbFd9Ul4+UmFyD26T00bqr2CL8vxIfJ8 WwOefieNQ7Fq8rhu2CZSOSWQGY07UA4= Received: from EUR01-DB5-obe.outbound.protection.outlook.com (mail-db5eur01lp2055.outbound.protection.outlook.com [104.47.2.55]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id de-mta-11-kZonh_ciMJe1PZRxXEt0oQ-1; Tue, 26 Apr 2022 16:01:18 +0200 X-MC-Unique: kZonh_ciMJe1PZRxXEt0oQ-1 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=YJcVdLg5Se96IaaMcCOeidbsH4F/2TUb4cA7SI9i4B5VNMJ0So4rTVAhjafcyoMlJl8EED+RzHcYsfQo8fpwz7/wZoSS20Yq415QmfWbFf3JBS5rch6zHPH4k326mJmWveGp8gqZ65+pA74Mu4IJNyCv92pAAHHmiga7ilwpOI+c1+gUv3DzsEzUplobeGIaz4a+SYSYLo+fzZQwXqfAAamRc1Fwe2HU3bEMOGJki/6mHjjL925M+SkjxIThtpd5vs9DtRui1K/iWdxmOeLMmWrC4iBypfYg1KSJKst+PYu2KCk4PPmFs9qRHyKgAk9T4cLkdPLj5KmWPirNCi9qyw== 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=oTvD3U+uuqWmxLTaY2GW03e01TiRVRGWjWeI4F6geis=; b=Pi0FsauW2raodhkoypyiyiGJ2aymFJKf/Vun8IeVurJth6X8zB5bjLYuh4erGA3x+EBIppte8d1vkdpocCFLcJ5y0H+r4luC8DiIQZn1uzG53TRXhEHbrC6ui64Je6HTWKpoMUKC7QabohoDDM5kmT67AX5JLXzTGnIOLnEhc09mLPvBWu6g8sQLkINtJEHZf6zzMTCbspF2Lb33mUTC4XgndLH6y1hpH0A9S4uxtx0+4W0ezHSvSvOx11pzcOgpI0/G4eJthRaqJ1kMJKBXm/BdDGFaQ8gfnYyGUxv/uN/9yFDrcGaMinnaYPr5KsYbdL6/vV+RiZrq4u/zhuWyWg== 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 PAXPR04MB8816.eurprd04.prod.outlook.com (2603:10a6:102:20f::7) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5186.21; Tue, 26 Apr 2022 14:01:16 +0000 Received: from HE1PR0402MB3497.eurprd04.prod.outlook.com ([fe80::9974:fd5e:e3c0:14dc]) by HE1PR0402MB3497.eurprd04.prod.outlook.com ([fe80::9974:fd5e:e3c0:14dc%3]) with mapi id 15.20.5186.021; Tue, 26 Apr 2022 14:01:16 +0000 From: Geliang Tang To: mptcp@lists.linux.dev CC: Geliang Tang Subject: [PATCH mptcp-next v15 4/8] mptcp: add sched in mptcp_sock Date: Tue, 26 Apr 2022 22:00:55 +0800 Message-ID: <50efb6a21637218d86e1e9a990a6bb6a42f3f5d8.1650981078.git.geliang.tang@suse.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: References: Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: HKAPR04CA0010.apcprd04.prod.outlook.com (2603:1096:203:d0::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: 8294ac0e-662b-497e-cdec-08da278d3b64 X-MS-TrafficTypeDiagnostic: PAXPR04MB8816: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: 34LXH2ZrOZ/kRqct8LfxQKj/p0AyRRmlMbiw0jTEpViHTcigvx56ohxdUrTWBbnQOqtE82JiVIeaRvxg+a+KEGvkBLTs7kmMNlBJqFfHjP8eY8Cotk9KRLtpQwFD70AjDJgA1jyaX543CFdwoRPrVuiYd2hpTqTq3HUvmjZBeMfGznGZNwE2ncJ5kseU7RdUpGhP73jOAifLEHo+LKm+6GQ+63MAClXyTXsIlnhvNdyIZdSWgEP1taQtFpdKY+vezx1PJ4FrnzB79tfxfV2OjiwegX7lcI1YVbZ+L5QarJLxoUZQ2acNZKh9B8D5ae04K3VwAcLPvDpMR/Oj97Pt/dyZ2tKQuKTj2kdhW6MbtX9nKXTVDM6yIl4UiGmIdsnDuKOU1W0gsTCmDvXXI9tKf7Alq/ainkvccwdCsQdIBojgONzfiYOuoxQ2h4N1TyzwnMjQrOUwCRftM8NkjNAAhTlG3Tt0R6cnVxKLE/hXJFYDkBWteAr1JIJGsFRk1MD1PJZyHRjh7LPt3SxiGgSl+/x474xJzrEgGZpqaVKmmNHX/cz7271LlGvNepwkXPKHIowXMQ5eb+9O8lScFmI2diJV3J9WGM9QFG+DFDbhYqKmAVexcSScgSZ80WM0VHGNFWC2YS+LxnntQWeojP11Rm3c/AFmjizM43IsIP6HmmSrMxOHbXxcp3cwCiARmE0p 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)(66476007)(66946007)(8676002)(4326008)(83380400001)(107886003)(2616005)(316002)(6916009)(86362001)(186003)(508600001)(6486002)(6512007)(66556008)(6666004)(6506007)(26005)(38100700002)(8936002)(5660300002)(36756003)(44832011)(2906002)(13296009);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?9DnjjSnkwLNd2tm1UUxdlQihydf/QYkYrDrnyzOTAJHnHUGhL6sDZkHcGWEL?= =?us-ascii?Q?ihezlA2em6f6WKntx38hoW3CS+BWdeWMY29deqC2VVOC6tl2Z5SJFg81gLAu?= =?us-ascii?Q?dwvG8R2KTCHOf0R4ufSV7OgPaxpiYfpscsayDL6Wrsy9O6rkPKrU0qMYci6f?= =?us-ascii?Q?AgDQDGlSTbFg7A1VhyVPbRVx9a37X7OT1XeP+Aq1PYZYAAGveUyBVT8iWvNG?= =?us-ascii?Q?NgaCygAfn1ATGdKaTExmW9DBmuYXrjPxFKVVP7TEPqMGZde0xQcAYVMWvjz+?= =?us-ascii?Q?VjFsURpMv8rHJL4AxU6HR1Lvi18EUrAwh6DMg0VhO1AfOgOLnX3JRt/wtR3c?= =?us-ascii?Q?9yHy7ye2hGnDmKlf1c3uxt6LfBSk0kKAd0wUzwRutSes9yXYF9lqPSBTSwWJ?= =?us-ascii?Q?avWJFuQP4LAROG8eVkrQwCqWy/e7iPXTZhY27zsWZwssAUnWXPcTRftfe2mj?= =?us-ascii?Q?xv6Mg/iLU0xmWsGb8aJ0Cda+8FgqASOmNgcbERMVvKcL55iMYnQQ/MEN+ozo?= =?us-ascii?Q?D0PrtvjlyWVHHjLYcTFk88iAhQMHBLi9c9I3HHKgch/tqdG5YznPibE9ckKP?= =?us-ascii?Q?5Xfk0cBN8q/5MhZMCfOvlRD/X0EjZg6BpbzG2ecTlajb0SwmNf/RVIPV6PO5?= =?us-ascii?Q?UpFwDtGyzaOE7Qo9CmLdhi+nOgLCKPew2iKBBxA+9CPiKAwApKeCcnn0lQoc?= =?us-ascii?Q?/KYYRUgzb0Wqi7g6NuJ3ZfG4H9E7Gmjv7waIz0lDOgB0KJBd8apJKml3FzgY?= =?us-ascii?Q?QlWojPxuOyy89XXouMDAkmaQzaE3JWWSdxn84Innlo2IiNCxGrJn9e+FNjri?= =?us-ascii?Q?1kMDgQUAK/XFUMMTaRhcUxELrPH39x9mMrqMVPyP7cA8IR555kz6dtx5S7ea?= =?us-ascii?Q?IOdsmEOsDnHwHhYnZo6pTIe+gZwvxT+qI6MsMgc65xzS8VH9DSmdoB5Pf4gB?= =?us-ascii?Q?c/U6tvWaUtranl+Sw7SaRhTYhITqLxHzvynZmSzbdu+U65kA3SIBVOtCDpyZ?= =?us-ascii?Q?/pz7M96zdYP0luupqnZp7tvOt1NXsfHmzSFXuPhlDdWfCWo0cV2Yv5VT/rOx?= =?us-ascii?Q?vi4faGZqLbXM/HeYgel9Z1bgdCLBgGxreC5XehQTOXiWrRgjMkuYOOCp4y5o?= =?us-ascii?Q?/u0mHfPlNhRD+LhyGaNp2trKBQ0/emIoxAKhd2s/rio46fSaQTYRuizWy2Yn?= =?us-ascii?Q?jn4+Eh3fYHs3wUdF4xPZTrlhwQlTWR6vV9r/YSBvgvSVZdgL7nLMz+BCyKCZ?= =?us-ascii?Q?hiENpCGRN53EPVDJU/oFezX32soMullgz3hb8YBRTJtzyOXj8kIsS8fOIfzl?= =?us-ascii?Q?kumObPv8JxbDM9RVEIM0eHawsCta3FXb+qy6KhB5E+ojxI3qV9ploRIJy1bt?= =?us-ascii?Q?iakmfjjzFi6jfw5nc0lPkUJyeE7+Se7j8DlegrraE+wr55enhBvchOFZ3mwH?= =?us-ascii?Q?U4SU0m1C5pdZm1tCD1YEDtCNfmnWiEe0ioFGWdJZCutLCiGmrkxoEiRkso7A?= =?us-ascii?Q?MHvhG87/kVwEwf0EWp/v/S4IRhIaRfZ1Vi4JGTO3XwbAJQFtEB2ZEhiSjC7z?= =?us-ascii?Q?FJmpetBd8f+Iqf4SAtyurcTTgppWEahvZjAxXrfZpZsWU/+9pbrFZZuc8EVs?= =?us-ascii?Q?X8b3F5uI0Xv9ay4TItJaOiIG3KtFb7PRHjbixDv7J7jWVmkWc7TwqVmyDMPl?= =?us-ascii?Q?A6fHFyslc/C68eAe0Hre9nWR5FsA5vP/NpvoLrNevl+jBtkEawFZNGd/z7Tq?= =?us-ascii?Q?F3L192LpATVrMIFQ1QPSehqEQ42tpKQ=3D?= X-OriginatorOrg: suse.com X-MS-Exchange-CrossTenant-Network-Message-Id: 8294ac0e-662b-497e-cdec-08da278d3b64 X-MS-Exchange-CrossTenant-AuthSource: HE1PR0402MB3497.eurprd04.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 26 Apr 2022 14:01:16.8867 (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: RMSeL6yxt7rgSff76OjRbiCXFW4OrSqJ3RbshtJ8uv5ayCPOlFaddiad2OarIxZyeKNd31gvy2yrBAr/uAszTA== X-MS-Exchange-Transport-CrossTenantHeadersStamped: PAXPR04MB8816 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 | 7 ++++ net/mptcp/protocol.h | 4 +++ net/mptcp/sched.c | 34 +++++++++++++++++++ .../testing/selftests/bpf/bpf_mptcp_helpers.h | 1 + 4 files changed, 46 insertions(+) diff --git a/net/mptcp/protocol.c b/net/mptcp/protocol.c index bf9d5bd8dfa6..7590e2d29f39 100644 --- a/net/mptcp/protocol.c +++ b/net/mptcp/protocol.c @@ -2673,6 +2673,11 @@ static int mptcp_init_sock(struct sock *sk) if (ret) return ret; =20 + ret =3D mptcp_init_sched(mptcp_sk(sk), + mptcp_sched_find(mptcp_get_scheduler(net))); + if (ret) + return ret; + /* fetch the ca name; do it outside __mptcp_init_sock(), so that clone wi= ll * propagate the correct value */ @@ -2832,6 +2837,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 @@ -3009,6 +3015,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 4842a28f34c2..22f3f41e1e32 100644 --- a/net/mptcp/protocol.h +++ b/net/mptcp/protocol.h @@ -298,6 +298,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 */ @@ -628,6 +629,9 @@ void mptcp_unregister_scheduler(struct mptcp_sched_ops = *sched); void mptcp_get_subflow_default(struct mptcp_sock *msk, bool reinject, struct mptcp_sched_data *data); void mptcp_sched_init(void); +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 bd0beff8cac8..8025dc51fbe9 100644 --- a/net/mptcp/sched.c +++ b/net/mptcp/sched.c @@ -68,3 +68,37 @@ void mptcp_sched_init(void) { mptcp_register_scheduler(&mptcp_sched_default); } + +int mptcp_init_sched(struct mptcp_sock *msk, + struct mptcp_sched_ops *sched) +{ + struct mptcp_sched_ops *sched_init =3D &mptcp_sched_default; + + if (sched) + sched_init =3D sched; + + if (!bpf_try_module_get(sched_init, sched_init->owner)) + return -EBUSY; + + msk->sched =3D sched_init; + 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) +{ + struct mptcp_sched_ops *sched =3D msk->sched; + + if (!sched) + return; + + msk->sched =3D NULL; + if (sched->release) + sched->release(msk); + + bpf_module_put(sched, sched->owner); +} diff --git a/tools/testing/selftests/bpf/bpf_mptcp_helpers.h b/tools/testin= g/selftests/bpf/bpf_mptcp_helpers.h index de20fbdb6d98..a0b83fbe8133 100644 --- a/tools/testing/selftests/bpf/bpf_mptcp_helpers.h +++ b/tools/testing/selftests/bpf/bpf_mptcp_helpers.h @@ -29,6 +29,7 @@ struct mptcp_sock { =20 __u32 token; struct sock *first; + struct mptcp_sched_ops *sched; char ca_name[TCP_CA_NAME_MAX]; } __attribute__((preserve_access_index)); =20 --=20 2.34.1 From nobody Thu Sep 18 06:43:39 2025 Delivered-To: wpasupplicant.patchew@gmail.com Received: by 2002:a05:6a06:869:b0:4b8:7781:bd2f with SMTP id d41csp466329pis; Tue, 26 Apr 2022 07:01:34 -0700 (PDT) X-Google-Smtp-Source: ABdhPJy4m6/r6iloaURoMjygd4BF76ombNNGD4mXU+Dqv0VtCYJ4cBIENdA5dbLhBIPplJkw8K3C X-Received: by 2002:a2e:bf22:0:b0:247:da0b:e091 with SMTP id c34-20020a2ebf22000000b00247da0be091mr14494134ljr.489.1650981694291; Tue, 26 Apr 2022 07:01:34 -0700 (PDT) Return-Path: Received: from da.mirrors.kernel.org (da.mirrors.kernel.org. [139.178.84.19]) by mx.google.com with ESMTPS id p11-20020a2e740b000000b0024f166713d2si3085679ljc.296.2022.04.26.07.01.33 for (version=TLS1_2 cipher=ECDHE-ECDSA-AES128-GCM-SHA256 bits=128/128); Tue, 26 Apr 2022 07:01:34 -0700 (PDT) Received-SPF: pass (google.com: domain of mptcp+bounces-4895-wpasupplicant.patchew=gmail.com@lists.linux.dev designates 139.178.84.19 as permitted sender) client-ip=139.178.84.19; Authentication-Results: mx.google.com; dkim=pass header.i=@suse.com header.s=mimecast20200619 header.b=bHL8n6ca; arc=fail (body hash mismatch); spf=pass (google.com: domain of mptcp+bounces-4895-wpasupplicant.patchew=gmail.com@lists.linux.dev designates 139.178.84.19 as permitted sender) smtp.mailfrom="mptcp+bounces-4895-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 da.mirrors.kernel.org (Postfix) with ESMTPS id 822302E09DA for ; Tue, 26 Apr 2022 14:01:31 +0000 (UTC) Received: from localhost.localdomain (localhost.localdomain [127.0.0.1]) by smtp.subspace.kernel.org (Postfix) with ESMTP id 42644645; Tue, 26 Apr 2022 14:01:30 +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 122CC7E for ; Tue, 26 Apr 2022 14:01:27 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=suse.com; s=mimecast20200619; t=1650981686; 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=HMCvNiFSVB1qO9513VU374v2BjAUVA7DsJxQhsYS7J8=; b=bHL8n6caT0hC2f1onCQinL2pb6D8nG7yySTzeeXDIC0xzF65l7dOONx8afYCEu00a8DWxX nB/LUIEb+RgeAKZwhwARKyhTWAMtso0r0u+tsaqdhbn5XemAa1BQsBY57HsnrQQh36OVkE iGtugzMQHtF993BKQRHkKIh3dxGrNgY= Received: from EUR01-DB5-obe.outbound.protection.outlook.com (mail-db5eur01lp2054.outbound.protection.outlook.com [104.47.2.54]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id de-mta-7-C_FLEcXgOZOREI8iRX8qRg-1; Tue, 26 Apr 2022 16:01:25 +0200 X-MC-Unique: C_FLEcXgOZOREI8iRX8qRg-1 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=bU9tSRisL3hoJu6ilTSsAbkNQN9oNiu03/7d+0naoVsiWijQHOPVp57rufECiieQPofTWemoRFs7MCfj2pCIz5WifWKlN9m3jTp0bb1yMhjH+nQxAlHI1V/0C69QXUsyyufGN8meNR+br35HPo0069g5YOEJwNdmUEbyW4dWI+mzSrZhfLdkcYs3wQJYRllGi/RmpFz+DkjmCcr1lREFLTUYnkXK4iIiaOiefC6M4lETEoik5VkIKz44YjcmFJ+2pt1rCvcCfUpgzSB0jz5evuuiREMni62V8KovcN2y/hNz2tTdfzeUcG/atu1ueIjSoszvQEb2h8qsBD8cxMQ0+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=57g3mAueaU3NZoSF+1FZeXzAaLHaeBhQ8ohe3aw6CHc=; b=A8+qOwX9fou4WH+PP/zhXXHz2huZLa17ZelNcMQSlr20ZWH3VuSRc/7hCrdaZbPLtli54uXd9ZBPQoaCxu5b+Al5pmEvheM46EWCe90h07gFSoKaY8nSk5YDHb4XO07C9CwMy8J4FLMABRzCAVCu1pf7EbRoEkhQBnFHgHP4XwYpFxWRJ1BcQ1nCOMQMUS3nxKse8x3Js2TVZVUAnpqzeCgvqi1PQBoJmYj0dNMU2un1wnsJXLTgbvbrU0ww+XFBa6vA7AvDIDQA05F49Ln/COgbof7IjSuaS87XmmZkY0kUZVjCzdOPtBrOkRCJt9wihQU///05tqQXIwoX6bPlSQ== 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 PAXPR04MB8816.eurprd04.prod.outlook.com (2603:10a6:102:20f::7) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5186.21; Tue, 26 Apr 2022 14:01:24 +0000 Received: from HE1PR0402MB3497.eurprd04.prod.outlook.com ([fe80::9974:fd5e:e3c0:14dc]) by HE1PR0402MB3497.eurprd04.prod.outlook.com ([fe80::9974:fd5e:e3c0:14dc%3]) with mapi id 15.20.5186.021; Tue, 26 Apr 2022 14:01:24 +0000 From: Geliang Tang To: mptcp@lists.linux.dev CC: Geliang Tang Subject: [PATCH mptcp-next v15 5/8] mptcp: add get_subflow wrapper Date: Tue, 26 Apr 2022 22:00:56 +0800 Message-ID: <498e71bccb513727e889e4720841c112bef074ad.1650981078.git.geliang.tang@suse.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: References: Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: HK2PR06CA0001.apcprd06.prod.outlook.com (2603:1096:202:2e::13) To HE1PR0402MB3497.eurprd04.prod.outlook.com (2603:10a6:7:83::14) Precedence: bulk X-Mailing-List: mptcp@lists.linux.dev List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: 5050c8c4-ada7-4f82-aad2-08da278d3fc7 X-MS-TrafficTypeDiagnostic: PAXPR04MB8816: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: 1c2BnPquh6AGOFjMj9cK7enfeym7iJLE7Nd7o8WN0n5cPSpN1F5L7SrFHB6sCvadsse5SfxLOnVi4L/8hKFMhzZdRINkBfgX82ynrKaMQRRTxth7Op/CajpsGPJ76Tx+2O8wGxYtw9etTvtqQtqrr0qtfhZ8TSQdiz2psORg4HdyiidXs450rZgmJ6fJfhfZdJpn5DQOb75GxPMn1e3zHJ6zhKRydXxVKW5LNVsHVZ4+jVpWtOLKBprJqcY9Xuh86cvdKObMFa04w2t3gv98eKfaPTmQPVSXhSiIZRvNjzjTKwmN1bgNFYXzZL1TByAZuGTRsJCj1XYUK0IFvh8fItSB6impSJQhH+5gJJ21e3W4GODiGcI+vdl9C/yLbEiJ+G2PeXNHkUik2garHeVNTbtuK8MpWLBedFs5nPzxirZaR3NznEkFr7hDAHo3tm/LwB/eCsqT3heL57A6w780rjZb1Rkixd6gyKtdKTJzEL9EIV9BVK/jvhsQ8CATWbK4jOmqk6gbW47omJXYNFzUJU8mzi9GG5Vkx2vzdAGLEwvS9b1m6FP5SYUh4MnaoYtSRmuUY/CVW2uzY0sCjC6cSGbZiPjMlUYFIpMhHI3ORcUS892nyfa/mOiGnYXGUpj6+ATo9JOOg/v+gtEXdSgd3oCLwtQgux3/CVCO7a3GZlAQVWhy7fBEVWXoyfI/3qbD 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)(66476007)(66946007)(8676002)(4326008)(83380400001)(107886003)(2616005)(316002)(6916009)(86362001)(186003)(508600001)(6486002)(6512007)(66556008)(6666004)(6506007)(26005)(38100700002)(8936002)(5660300002)(36756003)(44832011)(2906002)(13296009);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?TFQGGyYuAuHerqJGhzizmlHlf6aSntP81qh8XqSi92cAmHSePep0RN4q9Xcw?= =?us-ascii?Q?IcGm3pPwlXkwHCampLBmKT0MSEP8OEnwHtM5ab5JEQbr3K+uFvA4IPHhWGZB?= =?us-ascii?Q?BpSEF8fg3PmSMHV9tz1FfIOuONpxA/+skZwSF3iEB8qB9z46p6T7GeiDKQvF?= =?us-ascii?Q?BAgYJnhIcagswoXN//O/ZOz7fKWgVtG0MgLvf5pzT2lSjCPGR3MYjZdkkrAo?= =?us-ascii?Q?+r2f2DuxZEm5mK2bcD7Z2QCxvyT041pNWBOX13/ogT7lIZ4I8Z75/Ofs0TVK?= =?us-ascii?Q?8ifZy66sJRpGN5IvwpE1Aqbqj3Vq7oCszBBDarNzl4njcN6izAhgF0kHrR9S?= =?us-ascii?Q?lJIRdPXRNV7kMeXiyg2sPqpx7fAQeiiiZ9ZGMKjJX29KFUw+ivdl0Xc+lmn0?= =?us-ascii?Q?rcnlDJ2UNM2wgvM+Z69LjSVQsumekfLVM6yV2jYthm6bpgRVm8TPfm7HiWc2?= =?us-ascii?Q?IFJa+meh9pmsQhD54y8pW5bpLGT15CmmtHtcQs7pis/HTFlP9GLjPXJo45gd?= =?us-ascii?Q?21GLAYn9rERabtHiN82EVPISQ+GA6oj9nDmj+3cHw4aFFVV/ycjoBlQWeQMD?= =?us-ascii?Q?+zViBFow248QsS6EvKfp2ORb5YzKyUOt8cxl88W+gFFCD/shxE4mPo+tXnmJ?= =?us-ascii?Q?fKdHmJh4wdaL2abMSPaQbvjErRxQxvWvB76apCv+9Vr5UB4aXMIG6TZT69wU?= =?us-ascii?Q?u0KGKBz0JSP8hGPcjFM6SIiKqxWh++f28yNxGjcJx4fw8bK4b8CZM8srxMoe?= =?us-ascii?Q?c3ZWwrbIc44WFIeuGadNkisqdolMsRM/6MbFTl6Aod+iItdu1WrYoYHhnlOR?= =?us-ascii?Q?oryKdYSwEAUbJb9BgTczPgHCOhG25KFWlu4Gyp5DJXEbCUW9D2SOrwa0fuIy?= =?us-ascii?Q?q8xRyPu1ZBHsB9pY+bVqA1Dp4V8uEgrd5YKh38B9Ios88A0urfQcKsZWYjr6?= =?us-ascii?Q?jsGGsqbYiNvYjGd2zI39CRunV2477apyKvUMxDGLqJ6/vc0lcw0VZ3VUUKfk?= =?us-ascii?Q?0qAz50rNg+Y9+9KjwQdSsqUueP1PMfBNjfKzq2VP03BCIdIvTh3WEdpBjaO1?= =?us-ascii?Q?p4JU7oFxn1BJghatGNYDMJjc8EdVQR5BL78/RmefjyKytFA7+6JiShdrh06O?= =?us-ascii?Q?twz5bOdEV3ozwycFg4XaemI3odfTn4VUduxRalUUcyyEWI5sF5Dpe3vJeqQi?= =?us-ascii?Q?0pkiZbF3xSjPA6qd8YpjnwUkgqj3WsGx+KEilkGHPWW6X4ghgW33j0buNHPr?= =?us-ascii?Q?35D476lRatrfqMBEP9sBH2NVFevQdy1AzsvUpyhY9BpTp6vVbge3arY5wLQC?= =?us-ascii?Q?esrENWVL4T3VTzrrlDGf/cviXw0ZAFtKowom61B6vSXa2CLsh6XEmzA0P3Yx?= =?us-ascii?Q?djBiy+HFmYDZ3L9sHYNDmMEByzlPXFo1VEqf5Kynwg/xG2/2mPY5I6fyyaDw?= =?us-ascii?Q?kNmmGfQOsdAM6o1Ux0yIobTF39JF7hRfGpzMjAdrmGux67wuqPlu3dbqUqhd?= =?us-ascii?Q?pGa0C37AvEVHpCMLsaJYNAXvaii/5wmUd5k+CENs+bqOqnC4b78FPQGFf/OZ?= =?us-ascii?Q?noIXtPEAKcVvN52U+AaeQTzhWZ33MOL4/FwLACZ+uUhXeETCGl8JY4+DQNUk?= =?us-ascii?Q?D8gdCnLPJ7QccU13kogPAylxXeELVfs+XvbRGTYhJwYp6x0z33gkASdx3Bhi?= =?us-ascii?Q?lc2IyTaPj/sXn1RdpbE6ZzkKuvJ3NYCorRoChV/KyZbTwxh14FLu8eqvjz3k?= =?us-ascii?Q?m4QW3DYs420KOtURkz4Kf/H6leGVdsY=3D?= X-OriginatorOrg: suse.com X-MS-Exchange-CrossTenant-Network-Message-Id: 5050c8c4-ada7-4f82-aad2-08da278d3fc7 X-MS-Exchange-CrossTenant-AuthSource: HE1PR0402MB3497.eurprd04.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 26 Apr 2022 14:01:24.2143 (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: chrFY6CYJM0JaOKervsTX1GFKnVVxaacC8RAbrmsN1nF+rYrZBhIdMF4Xab/ISn67bJ9zsM5CRRttxhhBMKMJQ== X-MS-Exchange-Transport-CrossTenantHeadersStamped: PAXPR04MB8816 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 | 9 ++++----- net/mptcp/protocol.h | 16 ++++++++++++++++ 2 files changed, 20 insertions(+), 5 deletions(-) diff --git a/net/mptcp/protocol.c b/net/mptcp/protocol.c index 7590e2d29f39..c6e963848b18 100644 --- a/net/mptcp/protocol.c +++ b/net/mptcp/protocol.c @@ -1515,7 +1515,6 @@ static struct sock *mptcp_subflow_get_send(struct mpt= cp_sock *msk) subflow->avg_pacing_rate =3D div_u64((u64)subflow->avg_pacing_rate * wmem= + READ_ONCE(ssk->sk_pacing_rate) * burst, burst + wmem); - msk->last_snd =3D ssk; msk->snd_burst =3D burst; return ssk; } @@ -1575,7 +1574,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, false); =20 /* First check. If the ssk has changed since * the last round, release prev_ssk @@ -1644,7 +1643,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), false); if (!xmit_ssk) goto out; if (xmit_ssk !=3D ssk) { @@ -2489,7 +2488,7 @@ static void __mptcp_retrans(struct sock *sk) mptcp_clean_una_wakeup(sk); =20 /* first check ssk: need to kick "stale" logic */ - ssk =3D mptcp_subflow_get_retrans(msk); + ssk =3D mptcp_sched_get_subflow(msk, true); dfrag =3D mptcp_rtx_head(sk); if (!dfrag) { if (mptcp_data_fin_enabled(msk)) { @@ -3154,7 +3153,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), false); =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 22f3f41e1e32..91512fc25128 100644 --- a/net/mptcp/protocol.h +++ b/net/mptcp/protocol.h @@ -633,6 +633,22 @@ 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,= bool reinject) +{ + struct mptcp_sched_data data =3D { + .sock =3D msk->first, + .call_again =3D 0, + }; + + msk->sched ? INDIRECT_CALL_INET_1(msk->sched->get_subflow, + mptcp_get_subflow_default, + msk, reinject, &data) : + mptcp_get_subflow_default(msk, reinject, &data); + + msk->last_snd =3D data.sock; + return data.sock; +} + 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 Sep 18 06:43:39 2025 Delivered-To: wpasupplicant.patchew@gmail.com Received: by 2002:a05:6a06:869:b0:4b8:7781:bd2f with SMTP id d41csp466405pis; Tue, 26 Apr 2022 07:01:41 -0700 (PDT) X-Google-Smtp-Source: ABdhPJyicKGYs3hcaacILIG1f/IghfHofs1W1cGDSMSOEgNal7XnRkkS6UqE9c0N5p+SAQb71+Hz X-Received: by 2002:ac2:52b4:0:b0:445:ba75:7513 with SMTP id r20-20020ac252b4000000b00445ba757513mr16955382lfm.248.1650981701178; Tue, 26 Apr 2022 07:01:41 -0700 (PDT) Return-Path: Received: from da.mirrors.kernel.org (da.mirrors.kernel.org. [139.178.84.19]) by mx.google.com with ESMTPS id k5-20020a05651c0a0500b0024d9cd6081esi23614948ljq.331.2022.04.26.07.01.40 for (version=TLS1_2 cipher=ECDHE-ECDSA-AES128-GCM-SHA256 bits=128/128); Tue, 26 Apr 2022 07:01:41 -0700 (PDT) Received-SPF: pass (google.com: domain of mptcp+bounces-4896-wpasupplicant.patchew=gmail.com@lists.linux.dev designates 139.178.84.19 as permitted sender) client-ip=139.178.84.19; Authentication-Results: mx.google.com; dkim=pass header.i=@suse.com header.s=mimecast20200619 header.b=lqjuMeFZ; arc=fail (body hash mismatch); spf=pass (google.com: domain of mptcp+bounces-4896-wpasupplicant.patchew=gmail.com@lists.linux.dev designates 139.178.84.19 as permitted sender) smtp.mailfrom="mptcp+bounces-4896-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 da.mirrors.kernel.org (Postfix) with ESMTPS id 37D612E09DB for ; Tue, 26 Apr 2022 14:01:38 +0000 (UTC) Received: from localhost.localdomain (localhost.localdomain [127.0.0.1]) by smtp.subspace.kernel.org (Postfix) with ESMTP id EE3E7645; Tue, 26 Apr 2022 14:01:36 +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 19C5A7E for ; Tue, 26 Apr 2022 14:01:34 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=suse.com; s=mimecast20200619; t=1650981693; 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=rkdLTKrr6yRA4B2tHMkPjOv436b3GVPz7FQ0kIZ96Vs=; b=lqjuMeFZdZweeoNgRPwqv1iCQL/cSKjri09VvENTZV3AXPONsL2UWlz75TkqddzK8/3DHf 1jTwSs9K2fAmQMM+hhfIiDhMqwBrp8Sj2oYNp4pnaTHh5FqXUwOLnty1fZsktAlUfsPFep lQnCgc0E9gSFN04uVGafHwBVOlxfzoA= Received: from EUR04-VI1-obe.outbound.protection.outlook.com (mail-vi1eur04lp2059.outbound.protection.outlook.com [104.47.14.59]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id de-mta-22-PZ1miG6pPuWyAXz_PKABXA-1; Tue, 26 Apr 2022 16:01:32 +0200 X-MC-Unique: PZ1miG6pPuWyAXz_PKABXA-1 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=eadPCv64AnK0l0uRAYb2QwFBA+ZE6XhYVFxVhTyGi7QLvbmlPSwcSXwoRy7xy1lkm4GCcFKg5z/rJa3EBZ9MejALwKtL6uEFTwLeET3wXu5wihs6gr8Ly7gKjlVUUHCQrqKguc6WZnpyJXe00v8YKfTZPVQFvUC919v+kw7JAXOO52PE231yUro8I6byllr2yFKfjo/MGyvoEdwhnUXNIde255nLVWP19MDEUZRE//RSAgcM0a3ziNJhwaF5gvz8WgOteixo4eA+ZpclXCNiXGwNsQU+rIGpi91LhsbxydkdYNq+GBM+6MAiFiv8zawwreUGDiVHaYd8sxWLpaaaCg== 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=Ah1XvubJA3TAzcVhU2tOI6+18DpbBFr3VZ7d19aYouU=; b=USW1CuNs7RIazG5IUNKnoZFi2qBwRch775EiqWI6SEr8H+qSO+rrHDseNTHala6yyfm6hvJ3afor6SKQVCq2UucpOyLrPgYFdc8qAXowN4hJlAI/n8oHg8wY+I9yIIYj3juvA1G/kqu6dX9S5OBng6+/IdQ+2JUSzIxgNXjvX/8mta2kXmTFnXQR59z2fxFCdmdu/VXqYXt0aseUk/pyLlqsIxwIYNf2HOs8oBtQ7BJYl1sN/hWaIQV2TG2nECBED9E1L8EC9rtMc3Qa9GeWuCydNbnfWyQGOTfG4RTd3IbuyLfKmNaFsD7DheuEufLxmFWbun3bdh/gAw5cuKhLOA== 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 PAXPR04MB8816.eurprd04.prod.outlook.com (2603:10a6:102:20f::7) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5186.21; Tue, 26 Apr 2022 14:01:31 +0000 Received: from HE1PR0402MB3497.eurprd04.prod.outlook.com ([fe80::9974:fd5e:e3c0:14dc]) by HE1PR0402MB3497.eurprd04.prod.outlook.com ([fe80::9974:fd5e:e3c0:14dc%3]) with mapi id 15.20.5186.021; Tue, 26 Apr 2022 14:01:31 +0000 From: Geliang Tang To: mptcp@lists.linux.dev CC: Geliang Tang Subject: [PATCH mptcp-next v15 6/8] mptcp: add bpf_mptcp_sched_ops Date: Tue, 26 Apr 2022 22:00:57 +0800 Message-ID: <475b55fee1b3010c4f91682de154c408e65028e5.1650981078.git.geliang.tang@suse.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: References: Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: HK2PR03CA0065.apcprd03.prod.outlook.com (2603:1096:202:17::35) To HE1PR0402MB3497.eurprd04.prod.outlook.com (2603:10a6:7:83::14) Precedence: bulk X-Mailing-List: mptcp@lists.linux.dev List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: 1fa5adb2-4129-43ff-b2c2-08da278d43f3 X-MS-TrafficTypeDiagnostic: PAXPR04MB8816: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: pUM5r2ljOgR6MScSorSHxdrhm98kf8C1KZpxepR54T8fMYoDTbkicJU0002rRAyUIvqTkW22Ro4EGXAvMOFDJul8yco5bdnI6E2/AszydO6Nh6WfwfMsHt0qdTtinsbg/h4zPeb2cShtTOyjgYSlfsNpuW/ncfMrQhsHCBQzGPAIui1imtosrPNyvC/aRResTHkDV/1BLgvQ0KxRO8fqFBN3MJ+RgjZ3vRXXSY+uz3npxoPVC9/CapjjozaD1wJc6X57b7wpM5OXdR052+2XOrZ/SSrA+UtmDQSKFuQsjpfslZbzJnLtFesLBR0SuTDH3Jua//rci7tgWl0cGUQl/GfBejqdAPqIOjEIHm0Ee+/mEXwydh0AyydfWjgoha4fyiK+2rt3/8hfXMwmnVE8xa9kWjyJLCKJBj7rwrp58d8GKtjQiFd/rJx45MTTUrXhk6c90UkTJbMNjoOyn7oiDuoUZTouPVIi6bguZdiO7cioWpQ44edrgRYnAwnUAS+5fyp1yuCTQGxU1MBS/8pL7QKYT2pz3quPYm6ShSDGDAWIRVMLW4HT5fsYYmcs1/wugeXxOYl9lHGV5F9hGl/4wPylvjTSO5Uz8aMKtieQqvSxjqc+bm38Igukb+sl+W5o6L4RfLuJAerSyln5olidfv5tg/DQ5TcWkRIV0effQOTSmQD6X/FIp24CwUVjpG5QrwiApWcBoEOrzGy+lmmEtw== 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)(66476007)(66946007)(8676002)(4326008)(83380400001)(107886003)(2616005)(316002)(6916009)(86362001)(186003)(508600001)(6486002)(6512007)(66556008)(6666004)(6506007)(26005)(38100700002)(8936002)(5660300002)(36756003)(44832011)(2906002)(13296009);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?m70KABbTrbCi7EgWNhswrbzcQXKsMW3mfv7dFDF64BBB3xgP8lwz555kzpgY?= =?us-ascii?Q?n5jvTmMjD9OQ4taYdVO4PcNdzCUW9lY/jnOYXQIHoiWdBZxUSXfCyIntS78g?= =?us-ascii?Q?EGAySebYQCcpXedLkoHR5nxHwXghDSgtXkvlcmiJlOZY7nFda6fg7jVahlQc?= =?us-ascii?Q?ncFIa/wIRYnEDDCrVIvKl2qdG6q2gyQvptvFD7mv+XhsAnozdMfTIphCU8Ak?= =?us-ascii?Q?Uj5SGVv33+/oyCol73OYRPYcuPZ3tKRzE5TdOi3K3MSaHvYk38G5VxQxNy5E?= =?us-ascii?Q?9Z3OZjRhwLgrRFfTE0LuP5GcscZjVJ/9SY5LizsZ8TOlKXX5UtwCL3nSCB9b?= =?us-ascii?Q?L/BG+Whe8iJJpCRw3xW/t0VamvW4kGOYpH04KcKyAjeehOG9p1PpmJlBl/An?= =?us-ascii?Q?WEjL8A1dzxOKkKJF4W0YwPy//S7uvGgHlGHVjOEwwmLbjiefJRBw6Ydtsck7?= =?us-ascii?Q?H9hl7bG9ysAGK8GFu4Sj7bS8MGGLP7M791sPAJJHiO6pc86LNP7SAdoPEck4?= =?us-ascii?Q?ewFeSOGlr37liZHpO53vSJA6efUvl65TjJJxowlTzic3nYP1MkAUTnBeGGbV?= =?us-ascii?Q?nbe2aabQgBOjFAWURmGVNju5rLVOXKa/nLkF04G7dXpYHOLjjgAk/qT+ojE/?= =?us-ascii?Q?nqtGN710LAIiW6ZRTdthkpZxUWcn8JFJNx+bNA5UwP7QE4Wcsdh1grM4rQGu?= =?us-ascii?Q?5KOWTpZ/k6g0dGuI/PVe7xZBCSYe7mKweeIiCxzL/4fDTj2gt6zT4/gzPpGN?= =?us-ascii?Q?ecTK2HclLpZxc9OxoEwj5soGrk0lj/vqqmSIz8t+NkIuNTaoFR9NjPuRTlRf?= =?us-ascii?Q?qpChsHIacQ7a0ihJBvCekTw2GzGVsDBF1RCgCYKZCzh9V2tLEXHy4Sqd7hHA?= =?us-ascii?Q?9nwSjre8cX1lZI/5OJryO/8nDfH2dMJpzontbKC1QBR4dHUXTtvVxsQqACVg?= =?us-ascii?Q?Tc7AIBTI+HP6FeV6BgSuU4Qh5ECBTlI9B4hHlb4SNRlVdEAxkwsUInQemN7s?= =?us-ascii?Q?xyG2kOM0gx14EwKNzrW5qqe8ESNnlyBehXOAUUnxC3+ZTZ0qvKye4A1ZloxU?= =?us-ascii?Q?0WZW1rv85n9bMoYoIktP0T63eb5LlodSfb5H1KaL+74epKoVeZFcWbd+NqHi?= =?us-ascii?Q?o6tEH0UVNQ7548ZkoWfSNLTjTUDXbtTZzezwSzebIJUnUYahh/zDCqlK+Ubc?= =?us-ascii?Q?oDU4FTS1zhPrC6RX+sXhAZTxU9URmX4NL0GwKx8NntYI7PqljYYQo5EknTxD?= =?us-ascii?Q?m7bR4/uh7XUdxIJ2A76QB//aB8XokG3pPvwJR/cKT3xOh+K28npz1IAB69Lb?= =?us-ascii?Q?Lty9K7N/Aj/xpuTpkdsuz1CE9ymSUTM8PBQmx5lqUQAz1Ds/Lg1BCYd4OnE1?= =?us-ascii?Q?jVq/8onzcCkusuBYLmepLt02zeaUEfNutPmDMlYfqqUytsYZj6NP5xrF5r8i?= =?us-ascii?Q?J3tl4r9plldzt6xDmb3yrIyyhkUAVMZeZAFl5DI0KHHSJBgKswWhgHRe8gG5?= =?us-ascii?Q?s7ETgzOHTuRBZ5+584dJu03zZNCL7rDQGEcJgh4mO/5ZF6sLU69Dh72aMX0M?= =?us-ascii?Q?AOnMnpeDTtDZGVcKpnBJ7Kt1xanAPu+K9EF/zPSnIgYB+FHO4TdG0X50oTqm?= =?us-ascii?Q?IE9TetOIzU3N9riRPlE/WD0lZdY55ZqG/J606Iqv1AASq8uoeWwmO1U+Ljxz?= =?us-ascii?Q?kOvCAYsqH3XB0oYrPBm8dYsAkba4WGmCp+PeqnhNTmIZDBs6j312SW7IUZv0?= =?us-ascii?Q?mZkZRsR0yb3wQLYzsYATM6k1dg0uejg=3D?= X-OriginatorOrg: suse.com X-MS-Exchange-CrossTenant-Network-Message-Id: 1fa5adb2-4129-43ff-b2c2-08da278d43f3 X-MS-Exchange-CrossTenant-AuthSource: HE1PR0402MB3497.eurprd04.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 26 Apr 2022 14:01:31.3075 (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: 5nncNlMUAV4IKylngqMTbcXeNkd1xM2u3xgHtNJeCUe+PgBDxFe9h65iHjS+2x+EEs7wW0GE5zh1VB/TviQw0A== X-MS-Exchange-Transport-CrossTenantHeadersStamped: PAXPR04MB8816 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 MPTCP BPF scheduler implementation is similar to BPF TCP CC. And net/ipv4/bpf_tcp_ca.c is a frame of reference for this patch. Signed-off-by: Geliang Tang --- include/net/mptcp.h | 2 +- kernel/bpf/bpf_struct_ops_types.h | 4 + net/mptcp/Makefile | 2 + net/mptcp/bpf.c | 149 ++++++++++++++++++++++++++++++ 4 files changed, 156 insertions(+), 1 deletion(-) diff --git a/include/net/mptcp.h b/include/net/mptcp.h index dd4ee7a77567..4d777db0a3de 100644 --- a/include/net/mptcp.h +++ b/include/net/mptcp.h @@ -303,7 +303,7 @@ static inline int mptcpv6_init(void) { return 0; } static inline void mptcpv6_handle_mapped(struct sock *sk, bool mapped) { } #endif =20 -#if defined(CONFIG_MPTCP) && defined(CONFIG_BPF_SYSCALL) +#if defined(CONFIG_MPTCP) && defined(CONFIG_BPF_JIT) && defined(CONFIG_BPF= _SYSCALL) struct mptcp_sock *bpf_mptcp_sock_from_subflow(struct sock *sk); #else static inline struct mptcp_sock *bpf_mptcp_sock_from_subflow(struct sock *= sk) { return NULL; } 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/Makefile b/net/mptcp/Makefile index 8a7f68efa35f..702b86e8ecb0 100644 --- a/net/mptcp/Makefile +++ b/net/mptcp/Makefile @@ -11,4 +11,6 @@ mptcp_crypto_test-objs :=3D crypto_test.o mptcp_token_test-objs :=3D token_test.o obj-$(CONFIG_MPTCP_KUNIT_TEST) +=3D mptcp_crypto_test.o mptcp_token_test.o =20 +ifeq ($(CONFIG_BPF_JIT),y) obj-$(CONFIG_BPF_SYSCALL) +=3D bpf.o +endif diff --git a/net/mptcp/bpf.c b/net/mptcp/bpf.c index 535602ba2582..dff1ab26a608 100644 --- a/net/mptcp/bpf.c +++ b/net/mptcp/bpf.c @@ -10,8 +10,157 @@ #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 const struct btf_type *mptcp_sched_type __read_mostly; +static u32 mptcp_sched_id; + +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 int bpf_mptcp_sched_btf_struct_access(struct bpf_verifier_log *log, + const struct btf *btf, + const struct btf_type *t, int off, + int size, enum bpf_access_type atype, + u32 *next_btf_id, + enum bpf_type_flag *flag) +{ + size_t end; + + if (atype =3D=3D BPF_READ) + return btf_struct_access(log, btf, t, off, size, atype, + next_btf_id, flag); + + if (t !=3D mptcp_sched_type) { + bpf_log(log, "only access to mptcp_sched_data is supported\n"); + return -EACCES; + } + + switch (off) { + case offsetof(struct mptcp_sched_data, sock): + end =3D offsetofend(struct mptcp_sched_data, sock); + break; + case offsetof(struct mptcp_sched_data, call_again): + end =3D offsetofend(struct mptcp_sched_data, call_again); + break; + default: + bpf_log(log, "no write support to mptcp_sched_data at off %d\n", off); + return -EACCES; + } + + if (off + size > end) { + bpf_log(log, "access beyond mptcp_sched_data at off %u size %u ended at = %zu", + off, size, end); + return -EACCES; + } + + return NOT_INIT; +} + +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 bpf_tracing_btf_ctx_access, + .btf_struct_access =3D bpf_mptcp_sched_btf_struct_access, +}; + +static int bpf_mptcp_sched_reg(void *kdata) +{ + return mptcp_register_scheduler(kdata); +} + +static void bpf_mptcp_sched_unreg(void *kdata) +{ + mptcp_unregister_scheduler(kdata); +} + +static int bpf_mptcp_sched_check_member(const struct btf_type *t, + const struct btf_member *member) +{ + return 0; +} + +static bool is_optional(u32 member_offset) +{ + unsigned int i; + + for (i =3D 0; i < ARRAY_SIZE(optional_ops); i++) { + if (member_offset =3D=3D optional_ops[i]) + return true; + } + + return false; +} + +static int bpf_mptcp_sched_init_member(const struct btf_type *t, + const struct btf_member *member, + void *kdata, const void *udata) +{ + const struct mptcp_sched_ops *usched; + struct mptcp_sched_ops *sched; + int prog_fd; + u32 moff; + + usched =3D (const struct mptcp_sched_ops *)udata; + sched =3D (struct mptcp_sched_ops *)kdata; + + moff =3D __btf_member_bit_offset(t, member) / 8; + switch (moff) { + case offsetof(struct mptcp_sched_ops, name): + if (bpf_obj_name_cpy(sched->name, usched->name, + sizeof(sched->name)) <=3D 0) + return -EINVAL; + if (mptcp_sched_find(usched->name)) + return -EEXIST; + return 1; + } + + if (!btf_type_resolve_func_ptr(btf_vmlinux, member->type, NULL)) + return 0; + + /* Ensure bpf_prog is provided for compulsory func ptr */ + prog_fd =3D (int)(*(unsigned long *)(udata + moff)); + if (!prog_fd && !is_optional(moff)) + return -EINVAL; + + return 0; +} + +static int bpf_mptcp_sched_init(struct btf *btf) +{ + mptcp_sched_id =3D btf_find_by_name_kind(btf, "mptcp_sched_data", + BTF_KIND_STRUCT); + if (mptcp_sched_id < 0) + return -EINVAL; + mptcp_sched_type =3D btf_type_by_id(btf, mptcp_sched_id); + + 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 Sep 18 06:43:39 2025 Delivered-To: wpasupplicant.patchew@gmail.com Received: by 2002:a05:6a06:869:b0:4b8:7781:bd2f with SMTP id d41csp466492pis; Tue, 26 Apr 2022 07:01:48 -0700 (PDT) X-Google-Smtp-Source: ABdhPJzFBKVsaOcREd6T6gIaJHyr2aNSLiJiWBL5um0v6qGerZd4LQiM6zASTunSFbKnGKxPPU9G X-Received: by 2002:a05:6512:c01:b0:448:6aec:65c5 with SMTP id z1-20020a0565120c0100b004486aec65c5mr17222600lfu.193.1650981707961; Tue, 26 Apr 2022 07:01:47 -0700 (PDT) Return-Path: Received: from da.mirrors.kernel.org (da.mirrors.kernel.org. [139.178.84.19]) by mx.google.com with ESMTPS id i10-20020a056512318a00b0046bb5076697si19712095lfe.604.2022.04.26.07.01.47 for (version=TLS1_2 cipher=ECDHE-ECDSA-AES128-GCM-SHA256 bits=128/128); Tue, 26 Apr 2022 07:01:47 -0700 (PDT) Received-SPF: pass (google.com: domain of mptcp+bounces-4897-wpasupplicant.patchew=gmail.com@lists.linux.dev designates 139.178.84.19 as permitted sender) client-ip=139.178.84.19; Authentication-Results: mx.google.com; dkim=pass header.i=@suse.com header.s=mimecast20200619 header.b=E6mhOvwV; arc=fail (body hash mismatch); spf=pass (google.com: domain of mptcp+bounces-4897-wpasupplicant.patchew=gmail.com@lists.linux.dev designates 139.178.84.19 as permitted sender) smtp.mailfrom="mptcp+bounces-4897-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 da.mirrors.kernel.org (Postfix) with ESMTPS id 3597C2E09D2 for ; Tue, 26 Apr 2022 14:01:45 +0000 (UTC) Received: from localhost.localdomain (localhost.localdomain [127.0.0.1]) by smtp.subspace.kernel.org (Postfix) with ESMTP id EC65E645; Tue, 26 Apr 2022 14:01:43 +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 579A57E for ; Tue, 26 Apr 2022 14:01:42 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=suse.com; s=mimecast20200619; t=1650981700; 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=/RDlydWiAwHZ3O0hxyi4E5TKaVuJH+Dk8t/1KIGdEMI=; b=E6mhOvwVls8NN/CbHbYtiFvEjFyra6SBRtsgumT1FmtepYUrxXYW3XITFVj4kwgJ96acb9 FqP2HgxRA1eoz7RQdyFYVnVyNVqByCcJFcZhJ872vvpwjr2xXKCf2XGdG1Dx6Vr7L1pq4A 1v9I0DEFnMxMZywcP8xIaYj0ztpDPbk= Received: from EUR04-VI1-obe.outbound.protection.outlook.com (mail-vi1eur04lp2051.outbound.protection.outlook.com [104.47.14.51]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id de-mta-12-h5ib9KwGMD-v8zxB-5YBCQ-1; Tue, 26 Apr 2022 16:01:39 +0200 X-MC-Unique: h5ib9KwGMD-v8zxB-5YBCQ-1 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=QzssoXtjK+/AlQ5s6qcmFDcP1V/0auYwDPE+GSTIR2/YRG7HQSDgJa3ZwPCq5YyLdUidIpX/MoJULItxQ0otiiEBRyX/AsHIzMMhkiGENWJqY9vK1+silCp45Wh9z7KRcwZ4dwKjehcSKSjyDxxxlFjfEVAKP7SX+GkOoU0tcU7DB7LHrcNf5sOenedWVqZASxd7y5BvzqXkmwcZcG5O2LjKG0nDTVEhU74dJ/t7x0UENC3yU4FuILp9+dikJ36gVvXjwoKZGTWUyUtFwH758C5iNaQe7yD53izwTxT5MxoiFUzWXC10Hlz0BF5YcGzNTOdTzf97OTFoq9iOMT5R3A== 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=z2K1eTcXjHmFeX1syZLtPL8603gz/hgxgKtqjwkUSFk=; b=NxYNrsIUT3t/EzKyAAVy7MMyEEQQxqCq0qPSpSiuzSP2Vx5557dBGJXg0KPsfrYXQ2RptzcreTDkqlnp4a1391dnwxP9Yaqebee2R7cac+x6IRlEFajYOggF+Fu/DnkjDpua3oldm+hT2x8xI1Y5/97xvp0GSLwabGjWaX1gXt/zfMrYQQY0V4C3i1jvDYDXCQRPpTjJj/2BToX2kzhUVbiei7b4Zg64oFqicbLHvdZ4EeYt9JeUADy/gib7EOl3q67IPZSkEKqTzr7P9bJitnSvtCvQVuD4/tcTclpLm86lDauhGMn9DAzhmSNWhxLU883WKW6OalgygHVwk/b71A== 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 PAXPR04MB8816.eurprd04.prod.outlook.com (2603:10a6:102:20f::7) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5186.21; Tue, 26 Apr 2022 14:01:38 +0000 Received: from HE1PR0402MB3497.eurprd04.prod.outlook.com ([fe80::9974:fd5e:e3c0:14dc]) by HE1PR0402MB3497.eurprd04.prod.outlook.com ([fe80::9974:fd5e:e3c0:14dc%3]) with mapi id 15.20.5186.021; Tue, 26 Apr 2022 14:01:38 +0000 From: Geliang Tang To: mptcp@lists.linux.dev CC: Geliang Tang Subject: [PATCH mptcp-next v15 7/8] selftests: bpf: add bpf_first scheduler Date: Tue, 26 Apr 2022 22:00:58 +0800 Message-ID: X-Mailer: git-send-email 2.34.1 In-Reply-To: References: Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: HKAPR04CA0015.apcprd04.prod.outlook.com (2603:1096:203:d0::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: 1f79847d-2e90-445c-544d-08da278d485b X-MS-TrafficTypeDiagnostic: PAXPR04MB8816: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: JJaXrWtH6jJHWGG9rBnDizqBw5Jspea7M3Psp6MrZ9mHzNrvknmrBiAxBVOj+VmlTjO7JiEu8CdvnfpmrPQjM9d6ZMbuRiHEQfhgc4lZDu/owwxAuxlxera3hNw8niEQ+zq6rDADGt6s6iNJ173vXUbVD6wUvkyJKe4bSmB3Z/aOWwwy3Cx2IWp59tvkbFKMka+IhiasXhqmuw2fIAHzZ/BgFLvemt/Krzp3Unj8fciLnj+0rQFVFc+Bw9s2POLcW8jtS7c0aQQIxHBoaipiresuOwmd0DCsZ1fGO4A5JyAeS1t5PePom43xhvmLqUSUUdkF2tNUxiYLvaA+K5JAm48h6KC1kRTeigcSepbC8QBzpPCAXw6qE9mUJbEM+XN9v9rEWjHsdFVIdH7aqqQAMtpcFmoxGfH3bdZtKy3Asolkb2HprqG5I8/BJs8+CBidhKyr/ncmjtnq0uBIKhEbpgpFFmFItG+mItRG8S6IaYEfCAfOO08WICY6HTs66hKCAMkgC4vxDMrllDRUvPVBob9CxMI+koSKSHRfhJoSWSANz1oASqBa1iIpaf22gM6jxJ89NFxh/qae3jCP7DFN7HZvZGmtI7JzMeU+t4T0SSpTUSkqihbNrXnB6W0fpFLDwPI7HdwbLTNei8XRzdpa/RGHsV1TawjG73Uk5BPQg+Xol8oXdNkONm+qrcEUAPQALDHsAdTaIOKeKDRplw4UIg== 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)(66476007)(66946007)(8676002)(4326008)(107886003)(2616005)(316002)(6916009)(86362001)(186003)(508600001)(6486002)(6512007)(66556008)(6666004)(6506007)(26005)(38100700002)(8936002)(5660300002)(36756003)(44832011)(2906002)(13296009);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?L1u1Rbs35yhI5HmsAt6JbTc8dWUGomiosJlddN3sbxI2FrRzZGkFIom7f21l?= =?us-ascii?Q?11mvtwq3+xwKGkr4YBWIezluqhkBCSlSwOMMkrOPc4HLovczUvR0IlGRHuMr?= =?us-ascii?Q?KqwXrGsfUT6sr9ufJ5r9vRu06MtQ/FDv6KxoiaU/brG1YBOySbdmPRF46ZmS?= =?us-ascii?Q?rBpAsmyzqQ4e70cA6PzA28Oag5qYOpTw3f4FMSUPjRe+AdA2B5jPjYayDKeU?= =?us-ascii?Q?aZdULxqZS/FzFzenpiL0lP1QLMiSsmEp72h7C6MZPN+aV8oUQmDhPIbJE5PF?= =?us-ascii?Q?4JgROtNP4ny392v911l15+yqa6zVjD5fflpN0FIHV4Lcgv0ALylcYq8Le3wH?= =?us-ascii?Q?puNtmgCtg97eiD3to12OybUAj1O0znHUTTf1vG9Q81N93mtg3heXlQbPcbyi?= =?us-ascii?Q?GN9ywnrXsNPWmAG3jK/x7GGyEoR/SqaTKkdryrkYZ0o4uiXvZAA29qjgay5M?= =?us-ascii?Q?KtpEW7g8Mk+aZeVUL5/i1lm4mEzrEfubCFzKYkg2StmX8lEB1KuAZqngbXYx?= =?us-ascii?Q?itHpiXRWVfkyFGgKQR4ln26NT3d3mA9R1FSEGfrJ3vFy0uNLVOyypwkQoTEy?= =?us-ascii?Q?2aOoAC21N/7+dP+T6jx79wvPdad6Z1+Su9svwtRiuCglMCDSUFjIe2D5ptRV?= =?us-ascii?Q?GB3N1oR9Bgyd5RsDQV680lv6lNLByOh6z1lcTC8J5vTaPM7WBHH/qMUVJi+1?= =?us-ascii?Q?nWUitrr6MHuyVuLzBCAHPcd12cKkbUWrEvwVVCkdR9BM8xCAkRUby95FV+PE?= =?us-ascii?Q?hvHhz9Q1CC/iQPOYwadfkb3lLUTiqonDiGLOu+qojSfcTY0Pan+uB6t8ctpV?= =?us-ascii?Q?XNRtDGIyMNjLKBNriScBAYILBSBZlb2l5X3LSDIRLsq4barL/8khluBs9I9q?= =?us-ascii?Q?GpvkyXkmIkwAR5NNRmNTJg3Bl/HTkTe89K0Chrz5YmHhQSFcfa5GdMHr1lCy?= =?us-ascii?Q?t7ayUA2J8oQLlztiPzUws48ypU97Oox0AT+rOZbxz0LE4sFkxMs8Fba/REx3?= =?us-ascii?Q?fD+x6dlZzseKjClhmJn+7f9wKAN/wE8Rmv7wdz3ZU74e/UXAGSUEVxc8aBvH?= =?us-ascii?Q?XgaJmyEep/BaEabs/SV7/NbS6aMn0UBMUfMngvuJ5R3cRUQxxa3FtMV6kzxu?= =?us-ascii?Q?0soTcRP6rFFXalOcW4GQSewrsR7dbxWgNm2nEy8j02vqlSeZ5hnDFkbm/fBY?= =?us-ascii?Q?UzlkDxrqFlKAI8rY0Ey9STY9Fsj4VBiccB08HOsqNxVnPWNQKx+4UceMuy+i?= =?us-ascii?Q?kdaDnx4StaHgE9moEZzh2nYTweiOD9ViBZ0z4+LmbsfA9iy/G126j+DnbYkH?= =?us-ascii?Q?2UYdbaxBWFniqj6OpXkhBdchdr0oTdBef6xQUtHEuCkouD1vTnIJh3jqV2mt?= =?us-ascii?Q?Y2Ka7HHrE35vD58epKnQ4GmhpSfUDjMw7XAJ/M48MRKijPs6qYfWr5tkwf4B?= =?us-ascii?Q?/0v/sgE8q1hsm3cUlFJmxAPXtwvhtrzDxm6hDY/Pn8Velcc4lQ4bVz62XdPD?= =?us-ascii?Q?ODMO7I65RT9k8PGbbDTEfNmz+F7a19TUnh8Gc9PMSv5XxNWjxtPjO6rtg5Z5?= =?us-ascii?Q?VQWNLzgZfj1w+khake4eWycrIDuvsI4hcP3Hm8xLnYepoRfb5bRA7f4hKTsT?= =?us-ascii?Q?ZLQQo0MShEGPdXF0iYl7kf2dLcVWpEB3q8b3l092cBQXfKKlOGs7zq8PeB0N?= =?us-ascii?Q?gG+OxRdid2KaEFxVbdov93EXUW0JcRYlvz3iLfUzfOEu2B/kBxWnYW1T/u5l?= =?us-ascii?Q?4/YFW45/4X4FBOUNDHM9fydvBQL3DZQ=3D?= X-OriginatorOrg: suse.com X-MS-Exchange-CrossTenant-Network-Message-Id: 1f79847d-2e90-445c-544d-08da278d485b X-MS-Exchange-CrossTenant-AuthSource: HE1PR0402MB3497.eurprd04.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 26 Apr 2022 14:01:38.4788 (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: UzSXYzaCnJMgxD1DFO/j2kFzasn7/x6WpWUm+NQ37htnWqFEGJYnOCNdjdKUt3Qtl3sPJOcK1U2r2n6eFeSolQ== X-MS-Exchange-Transport-CrossTenantHeadersStamped: PAXPR04MB8816 Content-Type: text/plain; charset="utf-8" This patch implements the simplest MPTCP scheduler, named bpf_first, which always picks the first subflow to send data. It's a sample of MPTCP BPF scheduler implementations. Signed-off-by: Geliang Tang --- .../selftests/bpf/progs/mptcp_bpf_first.c | 32 +++++++++++++++++++ 1 file changed, 32 insertions(+) create mode 100644 tools/testing/selftests/bpf/progs/mptcp_bpf_first.c 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..0ca9754c078d --- /dev/null +++ b/tools/testing/selftests/bpf/progs/mptcp_bpf_first.c @@ -0,0 +1,32 @@ +// SPDX-License-Identifier: GPL-2.0 +/* Copyright (c) 2022, SUSE. */ + +#include +#include "bpf_mptcp_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) +{ +} + +void BPF_STRUCT_OPS(bpf_first_get_subflow, struct mptcp_sock *msk, + bool reinject, struct mptcp_sched_data *data) +{ + data->sock =3D msk->first; + data->call_again =3D 0; +} + +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 Sep 18 06:43:39 2025 Delivered-To: wpasupplicant.patchew@gmail.com Received: by 2002:a05:6a06:869:b0:4b8:7781:bd2f with SMTP id d41csp466591pis; Tue, 26 Apr 2022 07:01:56 -0700 (PDT) X-Google-Smtp-Source: ABdhPJzwsmnuVPoHI465/Wd0+0R30AKV5Aoz2WPoEWFHHT8ncb+6Xpm06FfjeAfRUQYad0Z8O2CK X-Received: by 2002:ac2:5f4d:0:b0:448:7d37:5838 with SMTP id 13-20020ac25f4d000000b004487d375838mr16944101lfz.419.1650981716271; Tue, 26 Apr 2022 07:01:56 -0700 (PDT) Return-Path: Received: from da.mirrors.kernel.org (da.mirrors.kernel.org. [139.178.84.19]) by mx.google.com with ESMTPS id j3-20020a2ea903000000b0024f09d55b2fsi8420822ljq.370.2022.04.26.07.01.55 for (version=TLS1_2 cipher=ECDHE-ECDSA-AES128-GCM-SHA256 bits=128/128); Tue, 26 Apr 2022 07:01:56 -0700 (PDT) Received-SPF: pass (google.com: domain of mptcp+bounces-4898-wpasupplicant.patchew=gmail.com@lists.linux.dev designates 139.178.84.19 as permitted sender) client-ip=139.178.84.19; Authentication-Results: mx.google.com; dkim=pass header.i=@suse.com header.s=mimecast20200619 header.b=AXCXRaUx; arc=fail (body hash mismatch); spf=pass (google.com: domain of mptcp+bounces-4898-wpasupplicant.patchew=gmail.com@lists.linux.dev designates 139.178.84.19 as permitted sender) smtp.mailfrom="mptcp+bounces-4898-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 da.mirrors.kernel.org (Postfix) with ESMTPS id 8DF9A2E09DD for ; Tue, 26 Apr 2022 14:01:53 +0000 (UTC) Received: from localhost.localdomain (localhost.localdomain [127.0.0.1]) by smtp.subspace.kernel.org (Postfix) with ESMTP id 57F6D645; Tue, 26 Apr 2022 14:01:52 +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 77BB87E for ; Tue, 26 Apr 2022 14:01:50 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=suse.com; s=mimecast20200619; t=1650981708; 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=WnSV5a1EwgO3RknI2V5ujKmVZVa0WBBQfbw9D8tOT7g=; b=AXCXRaUxBDK0NgWw2wZtsrksRIr2R39jJgmVFB1QEvmJUtfRR5G6hSoppvHB9z/De0AOhK a+FRkeesXLgNyQpem/fds+U5I58wmtvJRhSZiol6ntCiD4H2qECyRN0x9NpSa0/VRpc10t PRq58lEJzB3lAms57ByB0+rgMqG/P7U= Received: from EUR04-VI1-obe.outbound.protection.outlook.com (mail-vi1eur04lp2056.outbound.protection.outlook.com [104.47.14.56]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id de-mta-14-xWCb_sZZODOkDrxY9AzWag-1; Tue, 26 Apr 2022 16:01:47 +0200 X-MC-Unique: xWCb_sZZODOkDrxY9AzWag-1 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=Mg+c3wBp/Q00RB9+KvjtLyXupEGgv+RaAKKVBkntaW60EEUeZNf/I4qn/PB65IUr6bSj6JV6DhKvgye7dtvObT0vAiQ8bWDVbcEgir7v7MLYKJDk2yvLqzckcXoWLJMz1urRBUkJXpPBAFy5o8S8HRO/kH9XQx81KTRuNsjy9yEm++Gw1/25Ikdi/Qt5QoREOZ8r2bktvlv1cYaJm2Puf7tRI7dBaypUpKx2+hYjDaqd9ugaz8PNsIt/Y3MU/fnJShUzlcgL65dq5UUK2VEHlDbOPLHY8m13RpayZyoqtXji6VDQ+9BrIgzMnIdPEj428rcDJIsOFY1SRMx8zMs2Vg== 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=XaWAbkqCo4kB2a2vFZa9GAp/RL8+LsScjAc1pLDDwLg=; b=AfVU4WTGEhmuej0DxoZu+9OgrFFsE5Z+bfu0QcGJ0/oc6/JiAXfLXVqB6TFXveCZEc3OLkKqRfnBvbN9nz1KhQs5Bvds/HIXJ2/Dd+GXN4UCzTaDLhn2BLl/BCRSQ/I0ODZ1Rc9/4vIqRkpUyk/BWXOuImc8SGCrEc8rcg4PtKbpMjRVK4Z/dGTWGSeJGPLIthuaXoqlYVEm0kCeRZRlVrIAfIc0GHP0kHjJJKfrWkSxw3l3Dp4dBzN3iIRnhu5ngZMec5ANSvf2BOJT79MTpJBUrlgBJmH9BtwHcydtG6KxTx/kzDQK+iLDOaL1bao6F7eab4YenwMagvNs9e3sfw== 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 PAXPR04MB8816.eurprd04.prod.outlook.com (2603:10a6:102:20f::7) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5186.21; Tue, 26 Apr 2022 14:01:46 +0000 Received: from HE1PR0402MB3497.eurprd04.prod.outlook.com ([fe80::9974:fd5e:e3c0:14dc]) by HE1PR0402MB3497.eurprd04.prod.outlook.com ([fe80::9974:fd5e:e3c0:14dc%3]) with mapi id 15.20.5186.021; Tue, 26 Apr 2022 14:01:46 +0000 From: Geliang Tang To: mptcp@lists.linux.dev CC: Geliang Tang Subject: [PATCH mptcp-next v15 8/8] selftests: bpf: add bpf_first test Date: Tue, 26 Apr 2022 22:00:59 +0800 Message-ID: <291525366820384758d3a125465e008b95aa1142.1650981078.git.geliang.tang@suse.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: References: Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: HK2PR02CA0136.apcprd02.prod.outlook.com (2603:1096:202:16::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: 3b30baa0-1da1-46d3-2b14-08da278d4d1b X-MS-TrafficTypeDiagnostic: PAXPR04MB8816: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: ZzUz2oAgCKv1YR1Lay+Jzqs60QQeCiW54jIGJwRtASf9HQ2oWONa2mACc2XorJFSc+iTqexad/UuK8sW1i5mHoKWVUpzi3M6LhnwAgrYIoFHMIa4XmVJRxGR1QobdNjlxjQRohrP7hPTZl2op/Xn8cta2m5TY4FjaVfXmWRLzR771mPn+nunf+MqTc7FBoBzZgLU8rjQAiMEWfanEse8bH5UPKMirx/ocAPAt3tZh1yKIacrKvqXDwx4PWtOrTme22Z76cXiyte/SZrLNlw0Up8xX8RxDOEnVkQalD4Ea9ldVQC7MoQqo7no9rxb2EzbFs6dfGJAe/3EyOI5NJW3cH63jUw1k5tYf1zYcz6H1gpNw0pSPwyLiY2qKhXiK3t6CW8HYzJbJXhwnGFf4o9JEdugK79E+P43+iEhaRVIHM4Fq5mQtB2vdYV2y2Mgf6eUpNe7i9g6XvPhLp5M7Y9FGb73wnuIoXOOxvHVSiLkXy5aVrFEvhcEEACYEdnvj5l+vf6+cTCniLEjYb68IBNgpujCFnctuOy4kVK5Dblj+kynYGd96us+F97v3LDIUtvwz1a05KMIuGn8j8cTOrymtW+E2wWZjt6JemusQwwcBI/fWwmZdfCYbqsOWGMinQiUSalqqs9N9Ceyes1voj1/EDB04wmczDWCHWoSZqiVp/Ldq6b5v3Lha5zpJntzgQBM 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)(66476007)(66946007)(8676002)(4326008)(83380400001)(107886003)(2616005)(316002)(6916009)(86362001)(186003)(508600001)(6486002)(6512007)(66556008)(6666004)(6506007)(26005)(38100700002)(8936002)(5660300002)(36756003)(44832011)(2906002)(13296009);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?cl77Xa96IMms4mLdUpYyayq7oSPh0nMhMz/qNEsSx/0fI6WDfgCtyGG7xU8p?= =?us-ascii?Q?2C5R1WIOfVEWsY6iZWHumjH2M3dNxy9icKxVghMh4n++xYKPWZToJ5mLoW36?= =?us-ascii?Q?tSWgvoFfGZnRK6k1WCWyJrdLUkL6E/CJNdNUoFIfPvi0oW5KDUE6AdwbmH5N?= =?us-ascii?Q?HFU3lHI8zuvqnhXmfTzj5mmnwH7sjpumtu/DR95UVaVoi/Jb3/Y2Om6XAJUM?= =?us-ascii?Q?hltiWOEMeePjRBKoQPIBAeC9tJITFXq+aGdXejvvNAFJszSIejhBGXpUhEDV?= =?us-ascii?Q?HZxKdSIB06z8baBfJNy4j2O7NHBNmvC0TZPk8kog/VyeoEgxUvsEIr4vZhXd?= =?us-ascii?Q?3mmgCLct8xoQj9YOEuONXf8F1tPBbi5cLT0pdqSc/cALN8Un3ZKh618Npgum?= =?us-ascii?Q?WPg44EEG/r7jP5mW6WuRbs7hT/oJoT9IYYSjZLtgMO0011IaLmPKg4Rbr/G8?= =?us-ascii?Q?KPUgpyi7SVgPcn0VYoB2R58fMHnMVzDIMYmIW3C+f2YCSFKfd//vMJxGT+pb?= =?us-ascii?Q?RWWSQ+Z0thcoTEsWTeZ0TloxDbaEsxompa1wxj/g3/aGd4/RVHW7J2TgCwcX?= =?us-ascii?Q?gwMmy/q1TOznA+Vd8vyI3EAzoHBfDfmzaPvby1KYA4xRvigeENO/DXqlWLXV?= =?us-ascii?Q?oe+g4rqFjevvrjlgXZWNedwHpttb6/AsMs0GL1Q6/wgZfOe1rPcNgaolZ1Fg?= =?us-ascii?Q?d33+f6l+9gnRz9u53u/qSQp8JRnG0ga+mmgX69QCdmE5a/YCLUsbkZMQiDm9?= =?us-ascii?Q?5uHQm7YZvjbpYK4GND7Va68DNFPnmMnqhJJiG5A4L8OEtWNOhwLNvAikHoD9?= =?us-ascii?Q?Lv33RoEdNwDUaShPM9XpUPlN8V9apXps9bp/mxFxKiADbePY9JITjhgALfAh?= =?us-ascii?Q?e07zGaMBpGoGtk7sP4fPFmXCkn0kVWwJCysk/Q3lfmLYpbvOHnf22ruSZy2T?= =?us-ascii?Q?c0du1Tgyae3O/BOlOBzy4oeSYYLUViy3RuH3WR6INnojb9ZclXJfHwG/cv3t?= =?us-ascii?Q?pvrPbOpoD1VohVHHMFWVCteTttB50LOHXyiVwPv3CR1VpTwri9Nhu/eFngdi?= =?us-ascii?Q?b4SNgx/qSOJsQEv0JLExvgG2JGChtsu8JIj7Cp7hhPzAH08PoVCzL1njZq/f?= =?us-ascii?Q?BxY130yWU9SX1Za9wsEqvyndkyuRNwBey2FVjIGY/vLihiR2eHJLcM3JYAoM?= =?us-ascii?Q?PCp+oG6YNU88e+Jw5Y+/FdEpAVCtjMoZva2NeQYs03HiogypnhUHR4gUrFXT?= =?us-ascii?Q?zwvGU+HmuNurFM9rY45eI+Uq33lq7SIIAlNFN2EYBk8iXsucONcWdNYnO2uz?= =?us-ascii?Q?F1qGXbnWHiajiN5sm4CPqvr2y3rCHjMqt3WiNVXSF6ccGugmGn+jTvba7DdH?= =?us-ascii?Q?Y+Nedt7uyphW83Wg9Iz9zwCeqs9Wh3vJo1LB7aJaaWHI5Zy2Bw/fbe3H6fJ6?= =?us-ascii?Q?aTbsHw8OIbm1hv0m/BpxArvpXn4o62QOt+Nhpm0+5yXmeHsTXyASPLbsKWPN?= =?us-ascii?Q?sS/FQB6y9VwZssgcfg0Wxgx+2Efpfic5aYfSduvktdhtb/jV+v53EVspv5GG?= =?us-ascii?Q?P8JzO4cp/X7VnwuxyOiLdLddLQmHFMxx2eRNN1W4o4K2iT24buxOFdBWmcRY?= =?us-ascii?Q?Xy9V5UWKK9T3Ov9FK7wUBXUGP8DlwNYpYgITKYvtNz4VFH/P0ysP23NMBI3h?= =?us-ascii?Q?QYPcWymWsWHAD8LijSxleNet8xOIEwUfWwBsSUyv2fYmo6vRkfZgypJNWrlT?= =?us-ascii?Q?uZ+bI0B5Gfj2fRgILWG9PGX28odRtpc=3D?= X-OriginatorOrg: suse.com X-MS-Exchange-CrossTenant-Network-Message-Id: 3b30baa0-1da1-46d3-2b14-08da278d4d1b X-MS-Exchange-CrossTenant-AuthSource: HE1PR0402MB3497.eurprd04.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 26 Apr 2022 14:01:46.6188 (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: HqYLEYbiXRaHI6TNgZ2XduAbWkn7IHuSo0llRy91IVG0XkWldBts27viR8XUURrUcZtcWMuHSt9ED0SySKYy/Q== X-MS-Exchange-Transport-CrossTenantHeadersStamped: PAXPR04MB8816 Content-Type: text/plain; charset="utf-8" This patch expends the MPTCP test base to support MPTCP packet scheduler tests. Add the bpf_first scheduler test in it. Use sysctl to set net.mptcp.scheduler to use this sched. Some code in send_data() is from prog_tests/bpf_tcp_ca.c. Signed-off-by: Geliang Tang --- .../testing/selftests/bpf/prog_tests/mptcp.c | 112 ++++++++++++++++++ 1 file changed, 112 insertions(+) diff --git a/tools/testing/selftests/bpf/prog_tests/mptcp.c b/tools/testing= /selftests/bpf/prog_tests/mptcp.c index 7e704f5aab05..44484a63e62a 100644 --- a/tools/testing/selftests/bpf/prog_tests/mptcp.c +++ b/tools/testing/selftests/bpf/prog_tests/mptcp.c @@ -4,6 +4,7 @@ #include #include "cgroup_helpers.h" #include "network_helpers.h" +#include "mptcp_bpf_first.skel.h" =20 #ifndef TCP_CA_NAME_MAX #define TCP_CA_NAME_MAX 16 @@ -19,6 +20,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 +254,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 mptcp_bpf_first *first_skel; + int server_fd, client_fd; + struct bpf_link *link; + + first_skel =3D mptcp_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")) { + mptcp_bpf_first__destroy(first_skel); + return; + } + + system("sysctl -q net.mptcp.scheduler=3Dbpf_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); + mptcp_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