From nobody Thu May 2 15:53:45 2024 Delivered-To: wpasupplicant.patchew@gmail.com Received: by 2002:a05:6a06:1788:b0:4ac:5e5b:1ad1 with SMTP id y8csp1163764piq; Wed, 6 Apr 2022 21:03:32 -0700 (PDT) X-Google-Smtp-Source: ABdhPJxf2HASnyW5x8JHGi7955zlyq/ZGXf106yVwMsBt66TXZPhqmAsQJwMVyAnYZey+Ca3OqLS X-Received: by 2002:a63:6a88:0:b0:398:54fb:85ba with SMTP id f130-20020a636a88000000b0039854fb85bamr9831674pgc.88.1649304212638; Wed, 06 Apr 2022 21:03:32 -0700 (PDT) Return-Path: Received: from sjc.edge.kernel.org (sjc.edge.kernel.org. [147.75.69.165]) by mx.google.com with ESMTPS id a12-20020a056a000c8c00b004fa3a8dff62si18630498pfv.25.2022.04.06.21.03.32 for (version=TLS1_2 cipher=ECDHE-ECDSA-AES128-GCM-SHA256 bits=128/128); Wed, 06 Apr 2022 21:03:32 -0700 (PDT) Received-SPF: pass (google.com: domain of mptcp+bounces-4635-wpasupplicant.patchew=gmail.com@lists.linux.dev designates 147.75.69.165 as permitted sender) client-ip=147.75.69.165; Authentication-Results: mx.google.com; dkim=pass header.i=@suse.com header.s=mimecast20200619 header.b=l5bmtRcs; arc=fail (body hash mismatch); spf=pass (google.com: domain of mptcp+bounces-4635-wpasupplicant.patchew=gmail.com@lists.linux.dev designates 147.75.69.165 as permitted sender) smtp.mailfrom="mptcp+bounces-4635-wpasupplicant.patchew=gmail.com@lists.linux.dev"; dmarc=pass (p=QUARANTINE sp=QUARANTINE dis=NONE) header.from=suse.com Received: from smtp.subspace.kernel.org (wormhole.subspace.kernel.org [52.25.139.140]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by sjc.edge.kernel.org (Postfix) with ESMTPS id 385D43E0E7A for ; Thu, 7 Apr 2022 04:03:32 +0000 (UTC) Received: from localhost.localdomain (localhost.localdomain [127.0.0.1]) by smtp.subspace.kernel.org (Postfix) with ESMTP id 221C720F2; Thu, 7 Apr 2022 04:03:31 +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 22F4F20EA for ; Thu, 7 Apr 2022 04:03:28 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=suse.com; s=mimecast20200619; t=1649304207; 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=73ozOgrfWsfxESILQ1NxiwrvKugMDlo58jmJs+BxxiY=; b=l5bmtRcse6ETdKV79KIMi8tAYFWkY9eIhOv4T41WTNC+5hDIQBzo9sNI3hcGzttel01gBv 66HwmiV9Nz0vjOKS/7hZrj26fPCSCB6KyToQ/jhe1EzqwmIY1TWRLm2iWxjX9mbs8nZ6yC lDiWMxcND3sDO8mtx0DrOErV2galL2I= Received: from EUR03-VE1-obe.outbound.protection.outlook.com (mail-ve1eur03lp2055.outbound.protection.outlook.com [104.47.9.55]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id de-mta-13-tRnJ4-8pOuml6CaNTUU1GA-1; Thu, 07 Apr 2022 06:03:26 +0200 X-MC-Unique: tRnJ4-8pOuml6CaNTUU1GA-1 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=YXAX6HWHVnnX9kIAf8TG6t816KRAPN8d2SjeO9n0Mw7JT1iPsMs0vDjrWMKYIrZRUArSplTW1oG4UJWf/r7lbsdlZsA8gXbCxFwKzQA2fQtpz9z2FzdRRY25VRhJy3spWbcLU1YEpWouSVM77VXUp7lVtyLehpGF9+K/KuQ81m0c51RkiH+wHI5Xpwo6mK4EYCUeiuP0hI5IazXafxseCBWGc/z95A2S71cvNJSnCyTg4UgZRPFBbHNt581gZUn+WiUGryTHVA5aCYq10X8+UjuKfw9dx3k+1Kqdp1vVa+pPsvuqnJqmI5xsNiCcbfElxV0zb2xGYQOtNd02d0BW+g== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=Gx1yjbrtd8F8t9UdxNkGcHayV4PzO459DIDdCQVThRg=; b=QnkVGdz2mHdcyVjHFjxSj/kjPvCX0/pPpGhhIJZys9Dz27pmBarFfwLMrhooJ1UAo4JEo6vFzWRZbCueZ8m+c35+7W5tTuKPdZMdJRZ/SO1CJEU7NFK7kl48Jdr4U+EO105jCLAkeDhBMNpWBjFvBxcbZEOVhiDV+GIw40iUoRS6MLkX8htoEh/dxrHRoHhPbfrFW1zwig3KGhmpmlT1XpZ1WVwD+Kr3vDsfVPVDz7Xou17iNKHhJ4Km7gLFEHVYfog9RXvGICtETTaGHwYlQWrvViZA+DHnIemKq6uZKDJcK8hp+WDHyDYHAvwB3mvXuOOr0aEC0ekhL4DLuZkb8g== 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 AS8PR04MB8818.eurprd04.prod.outlook.com (2603:10a6:20b:42d::10) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5144.21; Thu, 7 Apr 2022 04:03:25 +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.5123.031; Thu, 7 Apr 2022 04:03:25 +0000 From: Geliang Tang To: mptcp@lists.linux.dev CC: Geliang Tang Subject: [PATCH mptcp-next v10 1/8] mptcp: add struct mptcp_sched_ops Date: Thu, 7 Apr 2022 12:03:13 +0800 Message-ID: <76be47e5ac562b6909a7e899ce7be4d4649fbe97.1649303876.git.geliang.tang@suse.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: References: Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: TYAPR03CA0012.apcprd03.prod.outlook.com (2603:1096:404:14::24) To HE1PR0402MB3497.eurprd04.prod.outlook.com (2603:10a6:7:83::14) Precedence: bulk X-Mailing-List: mptcp@lists.linux.dev List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: 55f78b5e-3924-431f-3506-08da184b9067 X-MS-TrafficTypeDiagnostic: AS8PR04MB8818: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: 4oKU7yLcH74zZFhp2O+3/BDrkHS40a2JvS+JO5NAljACzShwe/kY9vOWufgS7psBg0FKwsH7s3Oju9YNAkLhl+x43azedkQHLhGP6rsSXnFBykUo1JxnHL/9PBsduGcPanROuWebM7yhB7KFT/jrJYQkUoK9U62i59hKCx6riJtGxPtiXoRY57vIj0vRqeADauooaZuHAXQWmHRuz4i4XjHc3T+kYELgEQzDtuJ1MFCEHmsNTlUwg6+2mpI9S4RnnW918GHdM2Tasc7CgP74/vNayK4DERAx+H5ZDx5aOxUxfG+MsbYH7IEblcMwjgGQ7aq7SwyW+OUjGFpUwp3xZAfH0lVRQC86xziNWQ6ay99FPOkhZ9fs9jO1ZVkmws348N18+QR+72BAMa4X1AkGmOez1+Aexd7CidAWg0O6S6PD+6Il0bqzxSVhRZs1PUvarQK4O5Oi63A6gZSKj0fqcrNHuC8SEdCN0DhbNrjlHdh7pksi6mbakaPaWCOqefHLbR9Iski+7gq1Y9HuCpUNMr4sAlg+9ReRu1kCy/Nxk6+mPcfFCZg+swSjni8TXOeO7k9Uh5BNV2hgLdBseyIfFfFa6WM8zfgj10YcZtc+S3dEpZfPUxgbeCuhltMttkyDXaH62KeeZPQzm5UXZVCDT0tUmqfBiOpe/1C4El8CHwpDpmEKxS3fc7Cz/BaFEYnr 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)(5660300002)(6666004)(6506007)(508600001)(8936002)(6512007)(6916009)(2906002)(4326008)(316002)(36756003)(6486002)(8676002)(107886003)(66556008)(66476007)(26005)(66946007)(2616005)(83380400001)(44832011)(38100700002)(186003)(86362001)(13296009);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?H8pjcA2jgN/MV1eyj5TlWnAiT0UHW3QhCJWEq3gvyy1lHsXVwvZlMup53Atz?= =?us-ascii?Q?8CHloZJxJguTlBCvCY9kzOiDEF0hgqummFUjwR5NeGLIE7tOlpR1O70HVrWS?= =?us-ascii?Q?FRKUkaEL0srW/yYRd1shLmtCOX0VrQ1ViDSnI7xT292ifN7wwPZl6JdqMTd9?= =?us-ascii?Q?BG2u6p1PLIg1h0HPRG+PGAT2cjOHDVQokScPsgA4D9c/OLO9HIJ5LmwmXmk1?= =?us-ascii?Q?BUwPGv28GL81JfmY0PJWX8qpj5Y9ke3Fgt+mjuhsXdbjBtH3ZB+pp1iZNIuY?= =?us-ascii?Q?hDdCJdDGxO8J7rG/kT7cI3rzwLbHrd7Bv9NkMGL093p5OMvqfK8e3UAE7+53?= =?us-ascii?Q?A9T6lYxZ8OCQTxcrcDoDyqKPf6MPeUUL2OEhdwiChTexukwIPIdvJcg9UNmo?= =?us-ascii?Q?UiLbqvfPxJTxtYj8zy6q6izAHkB+k6Z13hQMfiPJ/4IIyu3Fugu5DG6WXS/G?= =?us-ascii?Q?bW/vCOradZMUEQXfgmEr+PgYt+KBLO/+2lc8ywBlsKQqSvJeqIC8Vre6j73q?= =?us-ascii?Q?eis2HZf+QtWKxEm/itS6VjSyQ2OWbFeENKnJlBS92FwfrVkG4iAmPSjBm0Ce?= =?us-ascii?Q?X950cWmD5T3/WEqtY8OUqJfGT4j54S/5JMxPmCUeCindAK/cswsfW8mqEONr?= =?us-ascii?Q?wssLd5u06PGbrMW/E7vmgC7CmkU3QUgGIsYhXnCnyLwVXBxh6fLPtQ0e+YuT?= =?us-ascii?Q?M0vu5Eskpvk/ZaEaff0QupgfYFQAKAv7nYll+EQ2NZ02zzyARYkQeV1xwRDB?= =?us-ascii?Q?dtxPHYq6+Z3ThRUWnI7CJsBLLp3UCCdr/MvUFvcfbEdA06WiTKbTZIRKCAcm?= =?us-ascii?Q?xHoyKNjRRCMp2x+XNXvNQ1e9JTxj+MKiK4mqq5k/nJ7v+goeDHJAAKJ03rhB?= =?us-ascii?Q?/n9fbb8iV2n5YA9CYUephVHn/Esystbbhog1voR5ehlNuwWPlSDN5Cq3Axho?= =?us-ascii?Q?uwPuow1j6tcSihdibG3pHpGz5hf6LD2oZI83Q7LYcxx7ODM7HsaSyKe1jtge?= =?us-ascii?Q?9NOqMhSU1TleLXWhY8e9X+Hz5kO/bwdZmUhQt9RfnpUazuM8lE+PscHI6j+d?= =?us-ascii?Q?SWu6RK+Sim55Aue/MQoRyt/hZ0wmbA3zlRymlAaseV3jecuwJxMKk5OeSG0R?= =?us-ascii?Q?i2KSO2L9RR+AJuBZQR1HpnkI56Ds7ri29s/gerZQgFDJADrSwVDX7tF9Wott?= =?us-ascii?Q?hzV95nzRdFFh5/gwtmZ7E7m9ON0nTIAqz9HBYSCN8dafY/D9EaPQz4PdPhDE?= =?us-ascii?Q?xbKbrdwBrlCX68hVWjCt7WzXLxZn+nCgFC1ubPCaR1EMP2Qw1Wk5ypKDMFkT?= =?us-ascii?Q?Blrb0kDc0Td1b/5yeOnP9yl8CpiB1eelqqiwqeZchkIf+LGAf/+pZX/gvBC1?= =?us-ascii?Q?cL/B8cSLvjk7Nf9VdXIsgHawn97lMzDOyqHx7UtyyNmkV4psY5a+RX0mh79B?= =?us-ascii?Q?7mdnzj+SbI5ZO3PD8/BBlOx7nfJmGC2WQPqpCnbdNEt5hG/p9JY1iPO/+EkF?= =?us-ascii?Q?dky5zY4iGPFsy3d6olPo6m+6f087anEMVXvCaYG+4egKNUowlOBIE5E2oVkl?= =?us-ascii?Q?ak2ItLIuNnHzTMRlEunHHzUXSwSTfJY6XZdb8jsJER1MTrKy+2D5CO+wc+8P?= =?us-ascii?Q?61GWQ9dnkAPvjAzn4JAkbuYBN7/Cmr1zZtHi5gOM+k+KZsUI2c/v4R08veO+?= =?us-ascii?Q?Y/K9fDYDOWUOpdbQvXtDGEDmfgyu4J1LcrbrAWOerWE9h2dxL3+qIelbJ5dH?= =?us-ascii?Q?wFp7Y6DJ9LWYK8vz+e1RZbXHpYQerPs=3D?= X-OriginatorOrg: suse.com X-MS-Exchange-CrossTenant-Network-Message-Id: 55f78b5e-3924-431f-3506-08da184b9067 X-MS-Exchange-CrossTenant-AuthSource: HE1PR0402MB3497.eurprd04.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 07 Apr 2022 04:03:25.3924 (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: pRPOCEyZokZ+k1UuR6bCfa9Y6l8a9dqFahNRKhr0C9AWU17G1SRnJlmefx6Fmvbns1KT3F5BGwxTbIGzz/fvgg== X-MS-Exchange-Transport-CrossTenantHeadersStamped: AS8PR04MB8818 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. Signed-off-by: Geliang Tang --- include/net/mptcp.h | 13 ++++++++++ net/mptcp/Makefile | 2 +- net/mptcp/protocol.h | 3 +++ net/mptcp/sched.c | 56 ++++++++++++++++++++++++++++++++++++++++++++ 4 files changed, 73 insertions(+), 1 deletion(-) create mode 100644 net/mptcp/sched.c diff --git a/include/net/mptcp.h b/include/net/mptcp.h index 877077b53200..aea7ed9a2250 100644 --- a/include/net/mptcp.h +++ b/include/net/mptcp.h @@ -95,6 +95,19 @@ struct mptcp_out_options { #endif }; =20 +#define MPTCP_SCHED_NAME_MAX 16 + +struct mptcp_sched_ops { + struct sock * (*get_subflow)(struct mptcp_sock *msk); + + char name[MPTCP_SCHED_NAME_MAX]; + struct module *owner; + struct list_head list; + + void (*init)(struct mptcp_sock *msk); + void (*release)(struct mptcp_sock *msk); +} ____cacheline_aligned_in_smp; + #ifdef CONFIG_MPTCP extern struct request_sock_ops mptcp_subflow_request_sock_ops; =20 diff --git a/net/mptcp/Makefile b/net/mptcp/Makefile index 168c55d1c917..a37330760b0c 100644 --- a/net/mptcp/Makefile +++ b/net/mptcp/Makefile @@ -2,7 +2,7 @@ obj-$(CONFIG_MPTCP) +=3D mptcp.o =20 mptcp-y :=3D protocol.o subflow.o options.o token.o crypto.o ctrl.o pm.o d= iag.o \ - mib.o pm_netlink.o sockopt.o + mib.o pm_netlink.o sockopt.o sched.o =20 obj-$(CONFIG_SYN_COOKIES) +=3D syncookies.o obj-$(CONFIG_INET_MPTCP_DIAG) +=3D mptcp_diag.o diff --git a/net/mptcp/protocol.h b/net/mptcp/protocol.h index 187c932deef0..7cd2c1c3d25c 100644 --- a/net/mptcp/protocol.h +++ b/net/mptcp/protocol.h @@ -608,6 +608,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); +} --=20 2.34.1 From nobody Thu May 2 15:53:45 2024 Delivered-To: wpasupplicant.patchew@gmail.com Received: by 2002:a05:6a06:1788:b0:4ac:5e5b:1ad1 with SMTP id y8csp1163831piq; Wed, 6 Apr 2022 21:03:43 -0700 (PDT) X-Google-Smtp-Source: ABdhPJyH9PVikW4KOHgE/7bAV3fqEwIenLNPzYSz+L+zpKpYgWf1j0ZRUCQyyXpDEuYYEKz1FCL3 X-Received: by 2002:a05:6a00:1ca1:b0:4fa:7e80:6957 with SMTP id y33-20020a056a001ca100b004fa7e806957mr12249100pfw.33.1649304223316; Wed, 06 Apr 2022 21:03:43 -0700 (PDT) Return-Path: Received: from sjc.edge.kernel.org (sjc.edge.kernel.org. [2604:1380:1000:8100::1]) by mx.google.com with ESMTPS id r7-20020a635147000000b003864fd74329si18115764pgl.80.2022.04.06.21.03.43 for (version=TLS1_2 cipher=ECDHE-ECDSA-AES128-GCM-SHA256 bits=128/128); Wed, 06 Apr 2022 21:03:43 -0700 (PDT) Received-SPF: pass (google.com: domain of mptcp+bounces-4636-wpasupplicant.patchew=gmail.com@lists.linux.dev designates 2604:1380:1000:8100::1 as permitted sender) client-ip=2604:1380:1000:8100::1; Authentication-Results: mx.google.com; dkim=pass header.i=@suse.com header.s=mimecast20200619 header.b=n8R9NLXX; arc=fail (body hash mismatch); spf=pass (google.com: domain of mptcp+bounces-4636-wpasupplicant.patchew=gmail.com@lists.linux.dev designates 2604:1380:1000:8100::1 as permitted sender) smtp.mailfrom="mptcp+bounces-4636-wpasupplicant.patchew=gmail.com@lists.linux.dev"; dmarc=pass (p=QUARANTINE sp=QUARANTINE dis=NONE) header.from=suse.com Received: from smtp.subspace.kernel.org (wormhole.subspace.kernel.org [52.25.139.140]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by sjc.edge.kernel.org (Postfix) with ESMTPS id 86D2A3E0E7A for ; Thu, 7 Apr 2022 04:03:42 +0000 (UTC) Received: from localhost.localdomain (localhost.localdomain [127.0.0.1]) by smtp.subspace.kernel.org (Postfix) with ESMTP id 7010D20F2; Thu, 7 Apr 2022 04:03:41 +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 72A2420EA for ; Thu, 7 Apr 2022 04:03:39 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=suse.com; s=mimecast20200619; t=1649304217; 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=z9bKNns0WKPtoPGR1Yav8hetGtaj7+evRF/dqMYzWuA=; b=n8R9NLXXPM43GZMoq/oW7OkYIBoTaRl3lVIET6cSXkdeVwxi/L+KSMOSmda2XjhCOWHLEG 2jXZuNe/GR5RjB4wFIuH3XQYh85lfapBA5VyXRnaYsU4J54RVPHtlpqZRwtQvN6PLL+tFT 0eDI+Ym+KiWXW7uxL/sckmoAIgWpuIw= Received: from EUR03-VE1-obe.outbound.protection.outlook.com (mail-ve1eur03lp2057.outbound.protection.outlook.com [104.47.9.57]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id de-mta-4-yKPy07wNNzyHaKQis6RhcQ-2; Thu, 07 Apr 2022 06:03:36 +0200 X-MC-Unique: yKPy07wNNzyHaKQis6RhcQ-2 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=Jq1aJkDicpYrwyxTZw+39/zLOXOrbpnNR79/iEdkYfUdYpJ0QoFxv5nlrva55mlhEty+RYnTyDMKcV6gPly2Xv+UFkLiNXe6Tetii8LdUC6kJMrgDcLuhlKC41gG7VDidUqqx5xpboMt0+R1QEYzSYgEh6amq+gf5G8UnPGlZPL9iqWQlgjY3FyQ3ROXuAJo4+eNEO/U11XKj5LIl2bWZ+Gxdo46Xw2HMl6hegC8Buzv6urcLGzjSXrjm8Jz2gC3foRER3HCJXLnlBbX2DqQ6d7NgcCXbOZqX92iHf79XMzssKYNk+zzJKVKLa7EwzP4ac6zU0un/xqKcTwKPwI8YQ== 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=zDimTEZvw0pFT5GFgXHly73uwPmnpfTzyITsok+hkpM=; b=FcnDhV2kHz7GW5nePZ2PZPxhkH8QtUv+EZ3098DXW6D4LQfppSONPVsb8OL3y1i6QDsCsO62uLcAjlRgXYR2EKpvxYKMeCcCZ+tYNRt6sW22m9ePgw2FQDFigPTrW9WAnExyBPfdzz0zpRDH8xAlN5p17faqOcd+fLM/svqlax5X/itOjQcyh2rK/+HsMRd7Q6w7EnD2Geq/Z6Oez95nRr6vliqzIafg5qAgbxAAo4GU3FEfpU48qnD8e/dNu7Wbs5+WgyXfau075X/EL6zpQ/vVzLARyxhHl14SxY3voTq0vDTsCbn1oH/eU4TZMYjnNoIewOXe+7BrKwwAiyQJSA== 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 AS8PR04MB8818.eurprd04.prod.outlook.com (2603:10a6:20b:42d::10) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5144.21; Thu, 7 Apr 2022 04:03:35 +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.5123.031; Thu, 7 Apr 2022 04:03:35 +0000 From: Geliang Tang To: mptcp@lists.linux.dev CC: Geliang Tang Subject: [PATCH mptcp-next v10 2/8] mptcp: register default scheduler Date: Thu, 7 Apr 2022 12:03:14 +0800 Message-ID: <58abb17417c3cac4054bb022b1ec0d8c72f79792.1649303876.git.geliang.tang@suse.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: References: Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: TYAPR03CA0011.apcprd03.prod.outlook.com (2603:1096:404:14::23) To HE1PR0402MB3497.eurprd04.prod.outlook.com (2603:10a6:7:83::14) Precedence: bulk X-Mailing-List: mptcp@lists.linux.dev List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: 62428441-f483-4aba-6916-08da184b9691 X-MS-TrafficTypeDiagnostic: AS8PR04MB8818: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: T343i4q9FzKJC5GzKOnW5vpq+RkP6hXelaFS6vpbmnrqhZLQeT8BM9VzuHrC0obgsZfr0XeaBkzFizBy1VYbmvyo3Sf208BnRo0bw5CeLEbdEZ7WPOnv8ARyY20DkD8L9hgAeVICkh0N6j6sQP9OSBWb+eXBGhYhWlf/KXviG+fwS7JiB3lfibdR0rJWO4puSt4TptFczxH1dZl+uJA5ZJ7FN4hzt4ny+FLEg0ZhXK+ClI+/u42hsVerEKYwJfhqa4JbjxlCWj3dUEOaYq0XO0s6ORQ6+i4FmVnzMqVLjohVktGrSppcR9i+6xiwEG+KoxL2IV/AwP+uJvqDROZ76bXwtfAmi+Ggf/7hm60MsRr+kOz5kEq2cFrhYkz8sUMvI0tHCaVN7MEXFZoIzNXFEOg/fFG+eAN/H1dAehtCqyR+XWynwb70YyZM4llYTzIwpqKkl12xcDbYaRnbU8P5RrrvprNbzyi6fzRxMmn7gpDVvdMH/2DY5vN5hv430WvLCiRAF0Hc0GKk998q/cW5YalzMtTv7S9ZIIzsmeAPvmSijQXFFvq9+OBGkQWryH2bOyLgmOr6mQ4bYgb4GwR9q0fKDnJjy3ZB33Dp3hgaTqhzbrsVyUdsgqj9VRue8MGrnZDOFS57ntBkRUI2Y7Cj/MOJE+FAFC2S4Eqo/Ci0ui+Dsl30OmUyKfSn5ZAeydRf 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)(5660300002)(6666004)(6506007)(508600001)(8936002)(6512007)(6916009)(2906002)(4326008)(316002)(36756003)(6486002)(8676002)(107886003)(66556008)(66476007)(26005)(66946007)(2616005)(83380400001)(44832011)(38100700002)(186003)(86362001)(13296009);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?FIKUQ1xuW4JlS6mDZCbSaS7H7vTNsx4zkRam5Dysxa404mYjwfs59y/RNX0U?= =?us-ascii?Q?Qru9OlzVInKnmVrIH7WqW3pwzxzVhXlHN4RK0/NEwFppk1X79GkNzy0iwT2H?= =?us-ascii?Q?ob3jmrUg/fyui89D+WbphNDka/2cU9jqFLBKkWVO9ClL3cuCvqdpLrGbtJbc?= =?us-ascii?Q?XNkJpL7IhT8IoYmpyKEDRCvc4mGV+oxwdjR0eG3AIiqNhDUiJpvmrxpLMcwU?= =?us-ascii?Q?2Vhgem+cTgg6UMeBhyAXiOsppjmvFFw2BJmY4SIFZ3o23BL4JE4HdB/VlNOL?= =?us-ascii?Q?VBsI72gXPEfKmVdH9Mk9A8iJAyMvWK8REB/bejzUoFqkcOgL2ovcDmV5hu1C?= =?us-ascii?Q?TS/Vh7jq/BC1XP20OzyLzdiDsftnNbLauutVK8sqzNYVOHRHL3S8boRXS1o1?= =?us-ascii?Q?bP2MMJypYgrskujPFNNenrW4X8pjZVlvHVZzZTeRa+X6UMnbQzk3Q8Utvpoe?= =?us-ascii?Q?BCRMvZTzJmkpgiWH8kxLKa2zzWOqYIT3hHMK5O0+ONS8x5CuBcPdNe6zPI2h?= =?us-ascii?Q?UsTGHehsvNmBF2lssirWYKZMUmWmpCC1Me4fOMl3siR1wYu+Tfq5Pluy1cXx?= =?us-ascii?Q?anHBCeHo0BKwfHAZW4zLcSMIeSCCQ83FiAyzznAybYt9Uj+OntWZJKOJXcVx?= =?us-ascii?Q?1B46DqVZPbUm1nFxb2hmlxP8Jgk9Nf7XaAnQwObJQgEQC6AbEGxuVs+W7BvV?= =?us-ascii?Q?Ox0yznhkpaaSB8Hzru1eBt0r2TVjDY6NDeeK5qAm1nuJcxL4qWTrTG4cCh1v?= =?us-ascii?Q?bL0FuX+92cbHy3v+Xu0Hx39P1Ns3V3cUUw+Qwrc3f/5FIoSpDWj8N81kh9ol?= =?us-ascii?Q?ve5/8960Q0VHTIW9wJsAT9OmeGQv0qMG3lOKt4GwLirA9y8qqbcciOSZoc95?= =?us-ascii?Q?0LCu71kv9Go9KmZZ8FTYl1iHiA7U9rSWAcbkPjdbmKDGvkEJ4SkdKjKepvwS?= =?us-ascii?Q?E1SPU9o03A9QEQqgQ1OJQD67EvUCCVAbV+y4UToIS1c2acmL0K3fN6zrxNFB?= =?us-ascii?Q?STppXb4KSpoELiaVrqmBCCd0qYORFlma/6M2X3Mp3IzrjBVUIlBeJ8KjmDKc?= =?us-ascii?Q?IKBobDfAoFEbkfS9LsQwETTQDOQgoLoY/Qd1iKYNhGd/qcz2QaMZY2zT3Tz3?= =?us-ascii?Q?n8W/0QUuaDeKy4QBj+tskK4oFbMFvS/zJhsexhmhjx1hLYgpyytRGPRJf7PZ?= =?us-ascii?Q?KRPOn2u3M9cO5oVMKwACNhx4qJUN6XTjeNjyCBkvmzElPRdNtWosVtFBrHR0?= =?us-ascii?Q?82LaLttsMFZy2j6Adr4rNdG6yfwJpGVL8dKREotZyqRz4UdW4ZVRCbonO5sj?= =?us-ascii?Q?B8UrlwosZABTsS2EGuq+r1pz87Vg4W9AccKphb4DElbB5K4a+HKIdUTA31Gl?= =?us-ascii?Q?uCpwboMc8f/phOex0m8KPhq4jVC1DVgVArfKoVTBhyJGj/o1OozVuO10gifw?= =?us-ascii?Q?tYYVb0ygtRa0UCcX59SRs33PcRubdlab7o2EcurthiG8gmqfFmh+aFBdLZnL?= =?us-ascii?Q?AMPCPiEUjj9+cuAGu0MI/HsOiQ+VUnu5xn6Bs2sXm+FOuScgcPpMETG/9hY2?= =?us-ascii?Q?o2OJUkuSU2RfK38+66DG0dJPRPUZcTNQi0OV+NFaDGvPAIbdL40i1Pmgn75c?= =?us-ascii?Q?NCGwI0vp4MO/bDjkOs+ScTvykDKJ5tuedRL232YB3ds+hhOhzo/X3gg++9fs?= =?us-ascii?Q?R04nVEqoBuVWVKYMo7N8wpzPoRbmWtn+vFHcCadfwoYkvXYS6LPQgzaknVVz?= =?us-ascii?Q?oN/XbWS8ig2ocuA1zxFKjy9b10iEhcI=3D?= X-OriginatorOrg: suse.com X-MS-Exchange-CrossTenant-Network-Message-Id: 62428441-f483-4aba-6916-08da184b9691 X-MS-Exchange-CrossTenant-AuthSource: HE1PR0402MB3497.eurprd04.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 07 Apr 2022 04:03:35.7040 (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: HCqP+Or/zeA0VmkNwswtY2Yc8k6GVMYaNFxjOlf0NsYxoSWMzkjk5Y7OOip4fEit9pnJWWu1NmLIuYXa2C4WSA== X-MS-Exchange-Transport-CrossTenantHeadersStamped: AS8PR04MB8818 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 | 3 ++- net/mptcp/protocol.h | 2 ++ net/mptcp/sched.c | 14 ++++++++++++++ 3 files changed, 18 insertions(+), 1 deletion(-) diff --git a/net/mptcp/protocol.c b/net/mptcp/protocol.c index b2c654992de0..8f0e71c38336 100644 --- a/net/mptcp/protocol.c +++ b/net/mptcp/protocol.c @@ -1424,7 +1424,7 @@ bool mptcp_subflow_active(struct mptcp_subflow_contex= t *subflow) * returns the subflow that will transmit the next DSS * additionally updates the rtx timeout */ -static struct sock *mptcp_subflow_get_send(struct mptcp_sock *msk) +struct sock *mptcp_subflow_get_send(struct mptcp_sock *msk) { struct subflow_send_info send_info[SSK_MODE_MAX]; struct mptcp_subflow_context *subflow; @@ -3804,6 +3804,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 7cd2c1c3d25c..a264964f8d95 100644 --- a/net/mptcp/protocol.h +++ b/net/mptcp/protocol.h @@ -611,6 +611,8 @@ 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); +struct sock *mptcp_subflow_get_send(struct mptcp_sock *msk); +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..52828eb741c0 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_subflow_get_send, + .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 May 2 15:53:45 2024 Delivered-To: wpasupplicant.patchew@gmail.com Received: by 2002:a05:6a06:1788:b0:4ac:5e5b:1ad1 with SMTP id y8csp1163889piq; Wed, 6 Apr 2022 21:03:53 -0700 (PDT) X-Google-Smtp-Source: ABdhPJwlVjvtMSrDUo+otYSR8Vqms1iLXdX6nm2PCmc974SinaLBx63wnxM/MKf0g3mPO/s+O9m0 X-Received: by 2002:a17:907:9482:b0:6da:a24e:e767 with SMTP id dm2-20020a170907948200b006daa24ee767mr11542716ejc.479.1649304233198; Wed, 06 Apr 2022 21:03:53 -0700 (PDT) Return-Path: Received: from ewr.edge.kernel.org (ewr.edge.kernel.org. [147.75.197.195]) by mx.google.com with ESMTPS id 5-20020a508e45000000b00418edac76afsi15542928edx.280.2022.04.06.21.03.52 for (version=TLS1_2 cipher=ECDHE-ECDSA-AES128-GCM-SHA256 bits=128/128); Wed, 06 Apr 2022 21:03:53 -0700 (PDT) Received-SPF: pass (google.com: domain of mptcp+bounces-4637-wpasupplicant.patchew=gmail.com@lists.linux.dev designates 147.75.197.195 as permitted sender) client-ip=147.75.197.195; Authentication-Results: mx.google.com; dkim=pass header.i=@suse.com header.s=mimecast20200619 header.b=H28RzqEF; arc=fail (body hash mismatch); spf=pass (google.com: domain of mptcp+bounces-4637-wpasupplicant.patchew=gmail.com@lists.linux.dev designates 147.75.197.195 as permitted sender) smtp.mailfrom="mptcp+bounces-4637-wpasupplicant.patchew=gmail.com@lists.linux.dev"; dmarc=pass (p=QUARANTINE sp=QUARANTINE dis=NONE) header.from=suse.com Received: from smtp.subspace.kernel.org (wormhole.subspace.kernel.org [52.25.139.140]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by ewr.edge.kernel.org (Postfix) with ESMTPS id 885EB1C0AF4 for ; Thu, 7 Apr 2022 04:03:51 +0000 (UTC) Received: from localhost.localdomain (localhost.localdomain [127.0.0.1]) by smtp.subspace.kernel.org (Postfix) with ESMTP id 1C41F20F2; Thu, 7 Apr 2022 04:03:50 +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 7153820EA for ; Thu, 7 Apr 2022 04:03:48 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=suse.com; s=mimecast20200619; t=1649304226; 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=XqtNdeTbKx05B16qyCBV/WQRsi3qZu6i02p1PT8BtLY=; b=H28RzqEFGTcnWZfhD2XsXLcWjQzyG6Bkx0pxTN79JRZsXKcaifFYV0elLwJP+DtUs2Wkvu r5z9Oz93bti5ek6KCJ3amqLxfL4f7zgPyA6F2ZYi9mhxcqqfigDfG6+b6rB+qSC8Yrw2rJ bprsrQ9omP0AhTLel0YyZ99x/ysFcX4= Received: from EUR03-VE1-obe.outbound.protection.outlook.com (mail-ve1eur03lp2057.outbound.protection.outlook.com [104.47.9.57]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id de-mta-39-249zUDGBPdqrEWbjKb3eQA-1; Thu, 07 Apr 2022 06:03:45 +0200 X-MC-Unique: 249zUDGBPdqrEWbjKb3eQA-1 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=hL+YpbP/DZtGQpQ31qElIi1BoF0VMO6j8x+ur2y3YqFzXtbZyIqzs4b3BgwSYLWeErUDrpYoMTli3pWKnixRkefxLfzWlECTiUh6E5opEjibsVsMsf2VELdWoDwjWvWuEXULmiUqOtAibrn6w6CzXfasn3BiHHq2ftF/hJm6hdqDglwkzLJdJAA1yPTRkf/efE/oEELSxMf7akUdcYFUsiSNcEPEQCI4B8SDzyyss3zQtxU1qoUwMw5puofxZ8xF+JtyNTpPnnhPUK82ccyWJJ/6zFa24JucKcXUmpviEZnkapl5xVJVdbnt+d0qHCahqL/vItaV2sA8Y/YCSukn7w== 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=yjrP1fDKs1mwyLd2rW3BcpPVxO/VBYXmWE9yhmeHxcQ=; b=l3qEfUZFqHSe6BJrzLnp0E/h4x5NFwYyVQVXs6ld4D8uaGvTF3CMRln7zRVbT7b/CwqSn+JWnmGnfgyUOGFrzUdrhEmJ1rSu3+m2yGl63z6s6uYIs/cCgS9209KYM3p2DXZCWQPet60+e9DMlhcQvcutMv8xz40V+F2bnASr+digkZ+7N48x2YvAAGiDsrjrMnk/KQApcHUYt4UM5RbKgd8rjRPdXXd0wQPmO2BknUQbliSFn4fDdNUdxIMUpsc4NOjQT/d0zfKoVPcYrluUJtxRIFqOmwqfV/6yoDdVPP+UNlwjMdJVJ6eyWo968JQbOBpNj13l5ApHS/1RurkD4w== 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 AS8PR04MB8818.eurprd04.prod.outlook.com (2603:10a6:20b:42d::10) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5144.21; Thu, 7 Apr 2022 04:03:45 +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.5123.031; Thu, 7 Apr 2022 04:03:45 +0000 From: Geliang Tang To: mptcp@lists.linux.dev CC: Geliang Tang Subject: [PATCH mptcp-next v10 3/8] mptcp: add a new sysctl scheduler Date: Thu, 7 Apr 2022 12:03:15 +0800 Message-ID: <4a4f94f9ebf18bfafca5224ecb36a1747a956f84.1649303876.git.geliang.tang@suse.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: References: Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: TYAPR03CA0013.apcprd03.prod.outlook.com (2603:1096:404:14::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: 5f587a17-1669-4b81-910c-08da184b9c4b X-MS-TrafficTypeDiagnostic: AS8PR04MB8818: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: BWFwxYkxSGCgMpJzDbjlA7zQBq/WToxR4lbm54hq9af9H5hG6FHaZEXMLi7ZK0FpJhvhGQNBilw8Z2UShVmkkg4jRjMnUv2rVEwgYoHCpgfmpdaLcZjHHERDUcBAkyxXL0Py1jc3wqa++Nor+7wd5FrlaY47D6wl+Ne87D+mUX3TsKowGh538+d+fcG9PPmpwc3agOjFs/QSLynN0+Gv5XAbg5kasILscjIj+xusdhGDo2TF7BLXAQJ/UILOjSDNfTBASlZAoRVuu76JRdo+Sv3qNkw+KOc9CSnPQrg0yJjYTEUaf1HUr14RqBcFX63pzkrlnJQ4TQsG2Ax4Lll268TbUNLxH3r/wpM/tKncRlTV4UiQwVGXaKHn/ZDVznSc96gA+GhidDSS0IuYJFI8bMcIk9jBXpXjaA+5nXNzBnMT/WIgEhX4k0p+xF4Yi9fpVFa4RR87bOumndN+CYM32yYjsmLkRRh1x5+akADAgBeZvpz6jWBJtLwg9pBfqTxFb6qlArIasNJULWHZ2E+VMSglctoHr0NvgP4QufjUD4TCMfe7jZR3gi5/ybkV487sx+fF/fsynZ915Avjfek7bjctNsgQi58ij5GRG9JD9eIewVP5bMrN9oPWOY3XsIwDBLDUgNkJhBw1fS0UwF9gXSwkFFd7eBxFmtGiFDlJKyGnldhdKw3L9An0hjITQNsHuEjNykt7P3RqpbkTWekZeg== 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)(5660300002)(6666004)(6506007)(508600001)(8936002)(6512007)(6916009)(2906002)(4326008)(316002)(36756003)(6486002)(8676002)(107886003)(66556008)(66476007)(26005)(66946007)(2616005)(44832011)(38100700002)(186003)(86362001)(13296009);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?o6+F0BpzE45yYpMJ8QqkWSXh8YZ3ve4FkotWDry7f19lfQ1sp9cWmX5vHtL1?= =?us-ascii?Q?UTZxi3+YUs1nq8CdjH9fvrg1r1OCOYWvx6lQYKzNb2L1lqJ2t5/RwB/OTE/V?= =?us-ascii?Q?lpBsD9Vukp75WZ5tUCeWhtHerteu755BXyfCj9M4/0m51QLAUPfMAS1S43EZ?= =?us-ascii?Q?TtmAELlFViHSUa2xQLKd0BQ8iHS+CtOnBE+QOqavPUwHfU8d6RHeC2we03H3?= =?us-ascii?Q?68sZJZZD0RKUIUENzozv/3HJ4vPs9RqJIGJ10uLdEYedLS+VfNw9hoGYQgP8?= =?us-ascii?Q?KNq99lIM1xmC/UqjWwuhza7ZO2kd7jpJJaHFav+vQ20ongBFJd93+7TafvfO?= =?us-ascii?Q?g6qdxa9a0+YxlgXKu080/NcZZIt8/VIRUuPvw2XZrGWIja/diQtFk46tRTKd?= =?us-ascii?Q?Cwi/3VJ9U2vR8D1dQDfBelMudp/c3pwHaGGE/XVAE7hxumYbV2u7lEdnNlfU?= =?us-ascii?Q?4aWtj8DZqfLjsjh6+10LQM40me2+m9mg0oLW8uGFT2jlNrceTQteAplb48RF?= =?us-ascii?Q?E54aouI/4Prv1/GTiDMfMefC7TAgIPlsALMA5za69UO7Qdtaf30Sg90OTJF3?= =?us-ascii?Q?90l+L4cw/6qjkK2++NyiZeYNAHjYKnqa/bbE6rh7mrEMHagtWFoLl5tnRLrU?= =?us-ascii?Q?oHMp5JnM7xgKh5C1lM5RKs6OwgjCI5qaYis6artnW8uJk5Bykr25kNwdInWF?= =?us-ascii?Q?xFrGfpbtqIlKoTel3R982nSGsPW97GMYV6C8He4jyRmIUJdepPcWgzcBdwS1?= =?us-ascii?Q?iQkIWuUuzYy2utxN5+z64MYOHX6/s167IHJZP4Z84Yltsz+6q1Acgf4nIfZk?= =?us-ascii?Q?IkPOxsx3miT6P0cg2akdtbPMs1BZExlyN3+Q16D1D81Yd6EeMEBNsPSoYoT4?= =?us-ascii?Q?8sd39DRn1g3XkhowfOHdHktTKhOQMgoQjl/Vv18Qgc9xZo99gTWytOzFXfV1?= =?us-ascii?Q?p9DOwofhqsTh6CMLKYg1gqN6wIapk4h31fHcQizglXJ5VMUiC2HSrZCryZsD?= =?us-ascii?Q?ubd0jkd/9afER1FdaPQrgkU+VIaewoBZdK2o7j96VSw8DE/3n3gH4qAaFdvh?= =?us-ascii?Q?atx3slIi4t1Thvv7t4BxmbA7DpuOplR/J9osdfWrK2Dgo2JaHHGEo1DL4D8z?= =?us-ascii?Q?2IZpcOWU0ryf40L3aZ8DiVITJZ1dSIAwqXNZrXKtOyNesj3CKkT9lpZtz8Cc?= =?us-ascii?Q?dV3I9xB0YqlswF6ez1tk0LzGWIAmMelBymuVEsq+aKyb61cttwAkl8N41RmQ?= =?us-ascii?Q?uwwgy5CMNsOnLlZgF1jezGzYe5C6/eS1X9EfvPxKp9mkxd1+FoQlJyYDOzKT?= =?us-ascii?Q?chiZkqscpJB//2bPVpOt27PSPJibc6zGHFg2xDbl++37FJ7hBagKNwO9jsMy?= =?us-ascii?Q?gpkBIx8wvO9qau1NsnzD68CxIg+yAIzVL+Wc0lnFF3ABCVL40dfsaLgQ3CaS?= =?us-ascii?Q?a9fuzTa6qhegfb0mIW+gxxm17C/g8Ue+hWtdh0pMHk2P1gMrHAMEb3sS2uH4?= =?us-ascii?Q?I19sAzkXhEk/0fUMyE6X3zgNCp6qHQw0MvY4pTIyEjLOtPLg+kHu0bJSmJuL?= =?us-ascii?Q?6pcbB1hB8JlhfsjSh7IjSo0PZ5TaAFLtPXOL9kD0jXPls1jXG8K4EzFLfSnG?= =?us-ascii?Q?rs9T2CgCfQ+bMBIdxRtA1D/4ONHMeo2UqYDvEdSml5oeFL+TUA/maXSk1Cfh?= =?us-ascii?Q?UxIkCvnoWElI/T4AoqY0FPDKkZfpmPld70Mqr6pywlm6z1p4Slzq33pUQlC0?= =?us-ascii?Q?r/QXXIuQ10PF+1lFvbfc1Zc3JjkUrpg=3D?= X-OriginatorOrg: suse.com X-MS-Exchange-CrossTenant-Network-Message-Id: 5f587a17-1669-4b81-910c-08da184b9c4b X-MS-Exchange-CrossTenant-AuthSource: HE1PR0402MB3497.eurprd04.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 07 Apr 2022 04:03:45.0939 (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: HZMsVhUUdgl70KdszTUTWslBXs/kr2u/8kDZQCY5CcQkAjA3lh6E/JJ6MtCSXZU4/TAjGid+f0ZwUfRdy3ZKWQ== X-MS-Exchange-Transport-CrossTenantHeadersStamped: AS8PR04MB8818 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 a264964f8d95..65a08110268d 100644 --- a/net/mptcp/protocol.h +++ b/net/mptcp/protocol.h @@ -586,6 +586,7 @@ int mptcp_is_checksum_enabled(const struct net *net); int mptcp_allow_join_id0(const struct net *net); unsigned int mptcp_stale_loss_cnt(const struct net *net); int mptcp_get_pm_type(const struct net *net); +const char *mptcp_get_scheduler(const struct net *net); void mptcp_subflow_fully_established(struct mptcp_subflow_context *subflow, struct mptcp_options_received *mp_opt); bool __mptcp_retransmit_pending_data(struct sock *sk); --=20 2.34.1 From nobody Thu May 2 15:53:45 2024 Delivered-To: wpasupplicant.patchew@gmail.com Received: by 2002:a05:6a06:1788:b0:4ac:5e5b:1ad1 with SMTP id y8csp1163929piq; Wed, 6 Apr 2022 21:04:00 -0700 (PDT) X-Google-Smtp-Source: ABdhPJw+9qwap/5QAuuDZ81Py4iHRRk1XUonEWeyQ+XlJZOJcdlsf9pSuPmky2xo+sB3aySukBHh X-Received: by 2002:a17:907:9493:b0:6e0:59f5:6705 with SMTP id dm19-20020a170907949300b006e059f56705mr11884799ejc.289.1649304240388; Wed, 06 Apr 2022 21:04:00 -0700 (PDT) Return-Path: Received: from ewr.edge.kernel.org (ewr.edge.kernel.org. [147.75.197.195]) by mx.google.com with ESMTPS id f18-20020a056402355200b00418c2b5be7fsi13865877edd.353.2022.04.06.21.04.00 for (version=TLS1_2 cipher=ECDHE-ECDSA-AES128-GCM-SHA256 bits=128/128); Wed, 06 Apr 2022 21:04:00 -0700 (PDT) Received-SPF: pass (google.com: domain of mptcp+bounces-4638-wpasupplicant.patchew=gmail.com@lists.linux.dev designates 147.75.197.195 as permitted sender) client-ip=147.75.197.195; Authentication-Results: mx.google.com; dkim=pass header.i=@suse.com header.s=mimecast20200619 header.b=SvhvF0K9; arc=fail (body hash mismatch); spf=pass (google.com: domain of mptcp+bounces-4638-wpasupplicant.patchew=gmail.com@lists.linux.dev designates 147.75.197.195 as permitted sender) smtp.mailfrom="mptcp+bounces-4638-wpasupplicant.patchew=gmail.com@lists.linux.dev"; dmarc=pass (p=QUARANTINE sp=QUARANTINE dis=NONE) header.from=suse.com Received: from smtp.subspace.kernel.org (wormhole.subspace.kernel.org [52.25.139.140]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by ewr.edge.kernel.org (Postfix) with ESMTPS id C65431C0A9D for ; Thu, 7 Apr 2022 04:03:58 +0000 (UTC) Received: from localhost.localdomain (localhost.localdomain [127.0.0.1]) by smtp.subspace.kernel.org (Postfix) with ESMTP id B643420F2; Thu, 7 Apr 2022 04:03:57 +0000 (UTC) X-Original-To: mptcp@lists.linux.dev Received: from de-smtp-delivery-102.mimecast.com (de-smtp-delivery-102.mimecast.com [194.104.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 2C25A20EA for ; Thu, 7 Apr 2022 04:03:56 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=suse.com; s=mimecast20200619; t=1649304234; 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=WxjZ7pdD83y1hS4EYdAGlaPJc1LSgR709t2FR5yS/zU=; b=SvhvF0K9vrHMOlDvam8sZzjg2iH74v2nHD76p0Py0rTZvVxL5kxPLzQPKtqgAoaCeQN+l9 r8P99rh2WgaROCz5OWZa0SaNxAb6HytlgvuuHZgLWg+d2/A+49QZCowWP3T1LuDwpPNg+b 8SfJUE+ass4Aq0Aa+Q6E3WptJfdHD2g= Received: from EUR03-VE1-obe.outbound.protection.outlook.com (mail-ve1eur03lp2057.outbound.protection.outlook.com [104.47.9.57]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id de-mta-5-ouM0BFotOtedFmnXZX4VlA-1; Thu, 07 Apr 2022 06:03:53 +0200 X-MC-Unique: ouM0BFotOtedFmnXZX4VlA-1 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=l2AYTCfZQI/iX6ASbo4U/KnV1GgytKVkSamfriI29F4KtL0hGeEIqDpvckenOWEP1mL99cz8wotuK8gm2ZXi68RGCCp9ZtaGCyjxtM9tW7NAjBcYNrQTl4QL4PtTEsdFfYbf+JEn0pnSWbZ0+4fStSF7N9QrG0psJx05IKYpssQ+VWN0xcdewZ1FhvdxN2dbaVtjZzbjRS4Cu+UIGQIlzpK8wkZGEQggi24cvfAm42vCSGULe3x6VuNKkicnStPC2KIBiortzSzNsuPJMjjVs8bCGIUEs/AwPLglDpII2c/ANxPtB33ZRg2vSni2eJ9H+yuXkZi4aBLt3FSOFuVhwA== 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=cIFj6RPpzflxj77/1/bXfH0GhShReIWDWHFRc2L5qRw=; b=ltCcYZ312oI8maZDVb1G4l33tI9ItOJrQjkLy/NA6Ok968ScXsNE/t/N3bGL6QqoH55+F09oo/dIBt9O2H+wPl6Fwu0iZ3XmhbeJjvi08pLUI7c/qB8ULvbm0/VJvwW8/3sD/2RcmvLHLejxiXV608SqY9gKBHXoX5BrP6laTYLlLf8XjWl2IXrx+IoE3NwTn0Sd13wYjMbcnv/TaKeM57nDo93r+zAwdFLyR+BPbvTJwOYbk4TCGiE6sDQPAZBG7jT5VMa6AxCp69NJkDrZ6XVYYwS+fVPvSupv0txGthr/emDTx6kRwObwqjhmU2Ar4LLPdlroi+RKHgeaq3zHlw== 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 AS8PR04MB8818.eurprd04.prod.outlook.com (2603:10a6:20b:42d::10) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5144.21; Thu, 7 Apr 2022 04:03:52 +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.5123.031; Thu, 7 Apr 2022 04:03:52 +0000 From: Geliang Tang To: mptcp@lists.linux.dev CC: Geliang Tang Subject: [PATCH mptcp-next v10 4/8] mptcp: add sched in mptcp_sock Date: Thu, 7 Apr 2022 12:03:16 +0800 Message-ID: X-Mailer: git-send-email 2.34.1 In-Reply-To: References: Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: TYAPR03CA0012.apcprd03.prod.outlook.com (2603:1096:404:14::24) To HE1PR0402MB3497.eurprd04.prod.outlook.com (2603:10a6:7:83::14) Precedence: bulk X-Mailing-List: mptcp@lists.linux.dev List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: 7395bd19-ffb8-4f79-9669-08da184ba096 X-MS-TrafficTypeDiagnostic: AS8PR04MB8818: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: gqpKfq4MRS/i27yiSaxzMzJ8Cc+2KWNP3/PwQkLpIQu2ucXXBiOFE8IY4fl/rvsycrrdo+zLe4JLHY6uj183h8iTwEwSt6cuY/c84fizMKdhS27KCkpajxsS50kmGe86+12HbdeTcwOTT0ro9W0QGIYb6iGb1k86YO/tXut+KnvRHDcum418Bi9K2RM6AL9uTBcOOwQUBqptGRnXaCoK5/OqbRRR9FtjV+la7OOCh99sV8SpAFEmA++VawoXp55G5ybH4YJ3PMJA2l2sWOlH8oAjz2E42KzJWSQi8ST7llfVf8tZPLjDzGW+J2HS9sGIab5JPQy0u/K+82Si3vkgIMtj+mD3wDFsm9ViFwobmZqawD+X4ybGLmKjB14ZEIhNJkjIfmvVFv7fn2rjXxp7bYCgSs3kmF2kSysvu+76UIT2qNlk0aYA6RAauEDprNXm0+0Unp/hHf+FRpXD/l+4ojtJQhA/Z+K5xHjnEGK2LLRNnvgqC8JxbIn4gpCA0f7KD18dO6ssoMXFv5Crr8uXw1SLsfV/CD4W2DzqzdwA855Z6a1ynd1qIwyJ/DwQlxR61BKds4qVxCJS1ercOgk4oe0kofgY5UZYsVnsypmRfCrMiCN58HSB87m4v/k8TmrCAe6KrReXBIrrdSKXwvSrXY1FNCHmvYwMNuSV/mFk2LyWBkxvqOhqdANZyh/I9P5g 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)(5660300002)(6666004)(6506007)(508600001)(8936002)(6512007)(6916009)(2906002)(4326008)(316002)(36756003)(6486002)(8676002)(107886003)(66556008)(66476007)(26005)(66946007)(2616005)(83380400001)(44832011)(38100700002)(186003)(86362001)(13296009);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?aWma+K9bftSJLq+iMS20AqFPTLEdd5gJ/v2cImqM6FRkXxJ45QizSUkC29zN?= =?us-ascii?Q?RM0bV72x0MZU7I03D/uSmuadQI11e8JdFjWAOBQaHZbnkz+XTQne5v368adz?= =?us-ascii?Q?ZOmAThucrKxQLjweVszSsqdLF5qTQTPfsEpZjlbWkjzgml6nHXa6JRbBsfnt?= =?us-ascii?Q?9UOUUx48ov22Ry1S1HVDTjq4b8qnjpdaqQg3U7ScFELovZLrE2hhSERhoNA0?= =?us-ascii?Q?zM1E2gvBx8KmUBcrSIpiI7fNDqKfJ51yA+EbC7i8oz3PJ/oPS8NqLL/A4BFv?= =?us-ascii?Q?oQ3LOsO3F4IX68kx1+SANZgPVBp5QRi7FrUv85K3WPueSpgHQ7l+49URnEXs?= =?us-ascii?Q?12xadPaA70PbzI4c7z0IqlVfwVpzuZ3PKWQL0E2QyDQ3MvZAHBS8Kd+tmtMX?= =?us-ascii?Q?j17TKGw/8Ix1Kqn4eo5S6Pbvhg4/mR47fYaGsdcV3xAfjlaKmB7HVnXDnAUF?= =?us-ascii?Q?Un1wK4NYXVqpnHUDstwc1fnjqmlYXzMgOfuI7HbcsLNuBfw6izplChtHgmJx?= =?us-ascii?Q?BUOVxnRvGtXeSharYiw+tGbwwuwNUH4TJUZAJXERMnO4/93dfH6ap1dEUUFB?= =?us-ascii?Q?72hlhMU9okFruKoGEWos7DNoP+eZr9J9YbQFQWykxhaDyhnBofu7uuUf09/v?= =?us-ascii?Q?izxaUaZfLR76pTzRvltRpdhd2VPXgXy2wakEzEiPrOQk9L+cslg39jwGnARS?= =?us-ascii?Q?bLfKTeFgVHItwhZXXAACX9uyF4JGXx3gGUs0BtepIaOCaNhnZBWLRBptV1lP?= =?us-ascii?Q?W9hJSASNQJ8Xsic0SZ7uparlx8s101CzNMVsSwTTDXMqfrs8tr+f6xXekHD5?= =?us-ascii?Q?WiL9x32tr++aJIjVQhaHy2VKIiaT8ys4iMRXCJ3WG23t7CLH2MMc1yEXPvi5?= =?us-ascii?Q?MpEaDUclovyoVA7L3iAy9RSyBqy4MDFZT+a11jzRmbvtAPJE8fbzVm3gU5gu?= =?us-ascii?Q?BvZ6obpWyZ9SXfeqeA+DGOJ3Yn2i59I+Wj/gKAr52VeFUubz8jfR1Tc8HiBq?= =?us-ascii?Q?rXgJhkJP9b22X+HXFFYmidTlHg6lVhLeOkP2ejClsJmUMo3/6yym21c6VAiU?= =?us-ascii?Q?35n72Xp0awctQdEU+OOT6lrBN3VtFGA8gQsYh20cYGIuMHuXOvKSDOU6WR83?= =?us-ascii?Q?89Nb5ngMbbXyKZFi6oDQEG23sCdqm+nFcoTp04pN65eCkySE27VkA2WZmrZB?= =?us-ascii?Q?lTeL2zXU4yjKO9SAM1tv2StawCZ/p9B41OzjG++1pcx7RRsI+qgrsdSSmWGC?= =?us-ascii?Q?oH8DOs9+DRZ5TT3rwAQms0xlUL3uMIKM37SSDSUUYm1YAOUwNToSF6Rat17H?= =?us-ascii?Q?zLOkiRPhlnOCDZY7rLJSrZcndUn8Q+lCWPzJ4FfhUWmiXIHZvT8OfqDLGPfW?= =?us-ascii?Q?rLNRsRHIzbwUsKweWWwUMi6N3dLQ5+XHOv/yuDrJV2Zep8GpjAnxqmeLxiv2?= =?us-ascii?Q?7IEPjRIHWN2MFUEvMTTK4/oyIe8QbimH3vm+Bdjngh5/IYbU4QhVBCaCRkvK?= =?us-ascii?Q?QRH+gnqNbKI60dM3EjA4R/y8eiBSLlBIQ1T9GXURYJre3wAjf6miCj7xWf1c?= =?us-ascii?Q?zpjCrECgi1Y+/blRH5TAp9apfoKACuapF5AIySPQM19ZmizNpKjmXstuPgor?= =?us-ascii?Q?QNTz+/tHj+Z41bZAgTiZC9HKz+e2QlbrJfBGTro3xy3VYlDPE+U5hlT91Gsh?= =?us-ascii?Q?YOU2RJxi3IpLKQ2sR370rkjWTam7iccyy8Qeqqh4qsNgs+Lc1v57HEq2ZtqH?= =?us-ascii?Q?dLnQCFi5H15tIBDdmy7atv09hkB3MEY=3D?= X-OriginatorOrg: suse.com X-MS-Exchange-CrossTenant-Network-Message-Id: 7395bd19-ffb8-4f79-9669-08da184ba096 X-MS-Exchange-CrossTenant-AuthSource: HE1PR0402MB3497.eurprd04.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 07 Apr 2022 04:03:52.5308 (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: 6XdNGpKs+DQ2wWl1lVo2XIIdoPwXBrnjk7tTzu99pstLaZCm8Jym4SkJvcZztd8KqOFe/Wn1cjio0CDOCxLy8Q== X-MS-Exchange-Transport-CrossTenantHeadersStamped: AS8PR04MB8818 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 ++++++++++++++++++++++++++++++++++ 3 files changed, 45 insertions(+) diff --git a/net/mptcp/protocol.c b/net/mptcp/protocol.c index 8f0e71c38336..37f4f6f3661d 100644 --- a/net/mptcp/protocol.c +++ b/net/mptcp/protocol.c @@ -2657,6 +2657,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 */ @@ -2816,6 +2821,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 @@ -2993,6 +2999,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 65a08110268d..1016dac065c8 100644 --- a/net/mptcp/protocol.h +++ b/net/mptcp/protocol.h @@ -288,6 +288,7 @@ struct mptcp_sock { struct socket *subflow; /* outgoing connect/listener/!mp_capable */ struct sock *first; struct mptcp_pm_data pm; + struct mptcp_sched_ops *sched; struct { u32 space; /* bytes copied in last measurement window */ u32 copied; /* bytes copied in this measurement window */ @@ -614,6 +615,9 @@ int mptcp_register_scheduler(struct mptcp_sched_ops *sc= hed); void mptcp_unregister_scheduler(struct mptcp_sched_ops *sched); struct sock *mptcp_subflow_get_send(struct mptcp_sock *msk); 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 52828eb741c0..5d20d252088f 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); +} --=20 2.34.1 From nobody Thu May 2 15:53:45 2024 Delivered-To: wpasupplicant.patchew@gmail.com Received: by 2002:a05:6a06:1788:b0:4ac:5e5b:1ad1 with SMTP id y8csp1163996piq; Wed, 6 Apr 2022 21:04:11 -0700 (PDT) X-Google-Smtp-Source: ABdhPJxLfZeR2b54tns/o/C4klHRD8A9vQbV+29puAMeKiVEsM3qWLEiDXY/4PBKtqDtbaZLoTkU X-Received: by 2002:a17:907:6d12:b0:6e4:cd9b:c7f0 with SMTP id sa18-20020a1709076d1200b006e4cd9bc7f0mr11241845ejc.628.1649304251562; Wed, 06 Apr 2022 21:04:11 -0700 (PDT) Return-Path: Received: from ewr.edge.kernel.org (ewr.edge.kernel.org. [2604:1380:1:3600::1]) by mx.google.com with ESMTPS id i12-20020a170906264c00b006df76385e20si11751728ejc.704.2022.04.06.21.04.11 for (version=TLS1_2 cipher=ECDHE-ECDSA-AES128-GCM-SHA256 bits=128/128); Wed, 06 Apr 2022 21:04:11 -0700 (PDT) Received-SPF: pass (google.com: domain of mptcp+bounces-4639-wpasupplicant.patchew=gmail.com@lists.linux.dev designates 2604:1380:1:3600::1 as permitted sender) client-ip=2604:1380:1:3600::1; Authentication-Results: mx.google.com; dkim=pass header.i=@suse.com header.s=mimecast20200619 header.b="AzjfjMg/"; arc=fail (body hash mismatch); spf=pass (google.com: domain of mptcp+bounces-4639-wpasupplicant.patchew=gmail.com@lists.linux.dev designates 2604:1380:1:3600::1 as permitted sender) smtp.mailfrom="mptcp+bounces-4639-wpasupplicant.patchew=gmail.com@lists.linux.dev"; dmarc=pass (p=QUARANTINE sp=QUARANTINE dis=NONE) header.from=suse.com Received: from smtp.subspace.kernel.org (wormhole.subspace.kernel.org [52.25.139.140]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by ewr.edge.kernel.org (Postfix) with ESMTPS id BDAE51C0AB4 for ; Thu, 7 Apr 2022 04:04:09 +0000 (UTC) Received: from localhost.localdomain (localhost.localdomain [127.0.0.1]) by smtp.subspace.kernel.org (Postfix) with ESMTP id A9B8920F2; Thu, 7 Apr 2022 04:04:08 +0000 (UTC) X-Original-To: mptcp@lists.linux.dev Received: from de-smtp-delivery-102.mimecast.com (de-smtp-delivery-102.mimecast.com [194.104.111.102]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 923E620EA for ; Thu, 7 Apr 2022 04:04:06 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=suse.com; s=mimecast20200619; t=1649304244; 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=gJUAQANvCHKv4ySEsdBuYEQHlPtRhU6GRfbLN1x5PEc=; b=AzjfjMg/fA9kJZA4eduPL+nNRO3R4AakGQhrwuaABAgvrjN7nurmHafQRKoAsfCI3VSZyk k3DLAqhZYGXWhz+2HhiOYjN1GjMBHDkw7O+CYDt1ziAEfSvDAA+HPVjFMHFucJ+O+vpZaU +EECifwXwY/JkteCFT7pTEUV+52FB4Y= Received: from EUR03-VE1-obe.outbound.protection.outlook.com (mail-ve1eur03lp2052.outbound.protection.outlook.com [104.47.9.52]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id de-mta-32-ZzGAfuceNBmZlWpCJn_xTw-1; Thu, 07 Apr 2022 06:04:03 +0200 X-MC-Unique: ZzGAfuceNBmZlWpCJn_xTw-1 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=P5gZb57D+jPguF5HQm4upSSH6CyIhMXlj1+S35ZVSM7kJzLsT33H4qUZZqYZyZZ4njShiR+q9phwHndylOtttIgWwpHJMGH25H2nBM+QXJp5P0uMPPuiblt8pEcUjb9OG4EuGDOXz0Waxsqr8f9n9ip+0ZTVp+B6gO7zyD7M7u5SLOMWc/Rjg4jSlbzGwn/+xsqDqI6pZSOYBVyCe4Pt5yUDlpWveqPhJ45ty9qlKLbw6RRFGKq77oxkxEqDVaLBUr7Xc3/FxBE7OXSnLItC5DXOhstBL3rib5xgdonnw4A5eVoxT/+SKz2p2YI1LAAnJiSJVHgup7ARRizWANb5bQ== 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=nG8vck48mPd76laoT/V6HnY98I3IdUIZ/QVucfkqh0M=; b=EbfLWW7zxmFj4m3b+5N84A/NhIYheYgSj4zrQx5bNgvhTmwSiVraWkdI+7vFduD9+owCrCCgw52bMSx7Elz2I1CeECr/qbQfnLMiYBIPfC/BQya8J8Jje4ZVj5UoOZL4+Ce6Vg+CwnaEsLp007P6x3UB2E7q7BEOBsNE4Y1ZScdlHmB3Ku6gJ9bQ8IMpceDbKljwzRHwIQbNlkZbrZ9AlBrkfYUL8yosJnQupHKKwGydaLEiQjpM+fes/YECtKpgKRDIvzTlz3NGXqhCHTiNhFVzlrpeI5CLOV0eDPJcf+G9gsyK8/1xa6jVLOfuDNEBzXVLUBGPqXGQUGwLWPzEcQ== 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 AS8PR04MB8818.eurprd04.prod.outlook.com (2603:10a6:20b:42d::10) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5144.21; Thu, 7 Apr 2022 04:04:03 +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.5123.031; Thu, 7 Apr 2022 04:04:03 +0000 From: Geliang Tang To: mptcp@lists.linux.dev CC: Geliang Tang Subject: [PATCH mptcp-next v10 5/8] mptcp: add get_subflow wrapper Date: Thu, 7 Apr 2022 12:03:17 +0800 Message-ID: X-Mailer: git-send-email 2.34.1 In-Reply-To: References: Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: TYAPR03CA0022.apcprd03.prod.outlook.com (2603:1096:404:14::34) To HE1PR0402MB3497.eurprd04.prod.outlook.com (2603:10a6:7:83::14) Precedence: bulk X-Mailing-List: mptcp@lists.linux.dev List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: 01261194-5a9e-4a1c-01dd-08da184ba6fa X-MS-TrafficTypeDiagnostic: AS8PR04MB8818: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: j/j8COF147IfzQikYlEVFoEF0P/3A9ZjWXz/lRAUvmq+19b6EsXTRB2io6J+N0uD0cB2eAW1Lz2vGHA0SCzp5xR2QcL/vau0AF3u3T/HtZxL1aOcRhXgM2eJBtbIEO+4jCY35qYf3vQJLd1p1/TxKV/TvupMGieHsBb7TRqeKHh07IG+UP3XAlc3SRdY5+d3NBy1EuxTzWZlXFw2b8abp4sMk+1sbhx8ZS0QL0koHj8sBHJiNPJYk8QDCtBMGiVbM/7Q+atET7TcHqwjUwkiNSXpA3Xki8oaDkvOEGCKS/f7kZwmodveNn43izKzXccUY+K88gJi0pNmRkBGW/jy7S/C0ilacOcgVnfgRbYBTABMFgw+UJy0IJLGZEewT5TeFECRuJs6MX/cwFGDdCtGlOjBh9FuLA4ZRD/IE3cMXE5hTIcJERU6+376480or7i6Ni5H0sHfF7kLQNQD/Bw+9P+VSV0pZ6c5Au09HLvvKiztb23hdxvgPsnFVrHfyZayflKSnRYq7L33eLPCpxSJHBKhzYqqQuoX+r7a4xAK2tfGppm91RdMnJAHkgWS2gXfyt871MUHU/gQamOvA33nLJUT46dRFIFdvF0m9CjV6jkUrWWoPEnSiBiRo1qOXyklBaqsugde5Qe+Q/ErLKDeZAIKufX13oO9jpMTtWPqepL0+c88eAeAxcEPpsMl5Cjy 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)(5660300002)(6666004)(6506007)(508600001)(8936002)(6512007)(6916009)(2906002)(4326008)(316002)(36756003)(6486002)(8676002)(107886003)(66556008)(66476007)(26005)(66946007)(2616005)(83380400001)(44832011)(38100700002)(186003)(86362001)(13296009);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?mJDdTHtcv694e4QE2nE4Qzc9iIgF/QAgYozv5D+t2U8JrO4vQE7iFdxgowVj?= =?us-ascii?Q?NSVSyo+NcyY3WRDU2KGk5Zc9eohW12JjU7+mEEeNcm1vp/WI1RHEapOJOB0G?= =?us-ascii?Q?Tf5OtQhKFl2FjuE7+Md7Dj+deCqzDrzFUJ03p6FPtEav7o756icgh3+ZYdcD?= =?us-ascii?Q?spoQDz7Hhtqpc8RBQTtJwnwpAsgnbdIyjDXNtmP5ZPhu6C659ydD9Y6e9BgF?= =?us-ascii?Q?K+lzCvoVR+xkDNRJp8ttpPfOIK6zL/LeKF2asergTHyLpp8NQlbw2QpYjW7W?= =?us-ascii?Q?J8uxj978OcjhVCe17KKDeIjrgW3tK91R+nAQgu2tCiitOMIRK8De0o0Jvypp?= =?us-ascii?Q?Aqz8Ea2rt+3JS1bxmnDDHp9sWxKiiQTCEvTBosGU7pqgBKHwz4zHsmPJl4hx?= =?us-ascii?Q?/3Dq+Khh0Z0OeNyz6yoMO87FYDfQfF+K7FOrWMQe4M+If6qziJz4L3AIOrlb?= =?us-ascii?Q?PDy1g6QSp1Ode9sILQxZDQK283v7fLUH3SvJB/kyaCRN8t5xXFSgHBD5QMiI?= =?us-ascii?Q?wIrTpBqFBjnFz/gvXXKCkWoA14HnCSP2zZfcV7c+j00hgOzt3p0S21i1udEa?= =?us-ascii?Q?E778W2vHTOXyfgdFOYYceQYrLWI9C1/hlq/iiE2QQwUrinFZG/X2lX+m9F4f?= =?us-ascii?Q?ooJnjrbGQZSpOFVC3gqcLPK7OELasY7FTPKj5XHB9GIEm5V75JSyVmYveFtm?= =?us-ascii?Q?Ke36uaKMfIkr9PWb94I4w7ttUcvmV5E+2tFsG7MI2DKJPbyHvtCYKrElIE9O?= =?us-ascii?Q?pwa50fRTlh+4ZOQE6KAQJ3dTC22p5URrjX3vVq54UPBXMD1ajj41XmgpnNMi?= =?us-ascii?Q?y93dONKf0OZ0HQzzsw2kINcjAme7qhgSheTvSRq6xjF4d/9JHASFg1BcxTYs?= =?us-ascii?Q?+l6lAJpU2Vg+43Lq5WAGqQgxN7lUVoADhh6TjLT43CZ4ncy+54CAiym4rR0V?= =?us-ascii?Q?j873MBudMldilU315C+c7jFpm3X2kMFv6N4d3MOKdrDgvhlDPPjSIZinw7jk?= =?us-ascii?Q?P8Z6930H0KSzmvEtQHEJZhzd59IxsrooGKFxxkA+WGmNcnLWkfK7GokZGiO5?= =?us-ascii?Q?cnheNb4gjxR2RC7i/DzKKAK8ZNj7k94QuUHkoS/TZszjcQ+ZRst04wwLeMpf?= =?us-ascii?Q?sWA56fON3KIGHcskBTbrY76TR1e960QihfUZE1TFa3oLs8Ac6ZPpLdOzzaMr?= =?us-ascii?Q?JAEDMLBnhaIK6+Atn9Gzu5o8Ic/DJEMZey1y3wI+J5gNUa8zcHKOM53C+7d1?= =?us-ascii?Q?aOSnn2wKG46SJGitHrdxNlhUpUI+UAl0v7e5hskNJvPGiuh0YL7WRDelKW5X?= =?us-ascii?Q?XULfOIzcZJenSuedHMH7vhWDCsQH6EDSQqkxUeSuvrk+OYIxN+Vzd2ShrPVb?= =?us-ascii?Q?qPnEbgrZahEIxJhBRjhYIHNBMwWiUXGJ0KQ1MLehB1SHNzW5KDhmMZ9xMJmV?= =?us-ascii?Q?iQk7SytzxASSH3+nr+En3liCetrT3qVexkPrVFKPXAeY1DhOuG0San/oqXcI?= =?us-ascii?Q?dLigyESL2dWhHpd7IDa3m2WuT+ke4xSjmDHYw7+EdE2K7jLsWQdxvJv248QF?= =?us-ascii?Q?4uBzKHoZUTwmRnieVx1RMHutS1FI72oumoq0slO9rvfFjqczYNXcRajUmZgq?= =?us-ascii?Q?bpLkx++TwusNvCb706/mn1a4QVqb2a6wPxSyqZWk4SAijkfEcfMHP5UmKTg0?= =?us-ascii?Q?G1zqHmJ2vAAUwCNYa5nUW30eLIvMi5SfjyAtsaYdMkIRR3l0kDW6G2CiA/5+?= =?us-ascii?Q?USTmYSkiwQJ6i/tboE6eIoGqpYtEqUM=3D?= X-OriginatorOrg: suse.com X-MS-Exchange-CrossTenant-Network-Message-Id: 01261194-5a9e-4a1c-01dd-08da184ba6fa X-MS-Exchange-CrossTenant-AuthSource: HE1PR0402MB3497.eurprd04.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 07 Apr 2022 04:04:02.9987 (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: fo3KvjSaYjm5Mj56A2UcapZBmYpBmjZr+OWqi6t6YMFGNCsvwWakbgv6o4Zly/TI2eG7cae5oRjwLCqqs1WUag== X-MS-Exchange-Transport-CrossTenantHeadersStamped: AS8PR04MB8818 Content-Type: text/plain; charset="utf-8" This patch defines a new wrapper mptcp_sched_get_subflow(), invoke get_subflow() of msk->sched in it. Use the wrapper instead of using mptcp_subflow_get_send() directly. Signed-off-by: Geliang Tang --- net/mptcp/protocol.c | 6 +++--- net/mptcp/protocol.h | 6 ++++++ 2 files changed, 9 insertions(+), 3 deletions(-) diff --git a/net/mptcp/protocol.c b/net/mptcp/protocol.c index 37f4f6f3661d..91d8a6f2c38b 100644 --- a/net/mptcp/protocol.c +++ b/net/mptcp/protocol.c @@ -1567,7 +1567,7 @@ void __mptcp_push_pending(struct sock *sk, unsigned i= nt flags) int ret =3D 0; =20 prev_ssk =3D ssk; - ssk =3D mptcp_subflow_get_send(msk); + ssk =3D mptcp_sched_get_subflow(msk); =20 /* First check. If the ssk has changed since * the last round, release prev_ssk @@ -1636,7 +1636,7 @@ static void __mptcp_subflow_push_pending(struct sock = *sk, struct sock *ssk) * check for a different subflow usage only after * spooling the first chunk of data */ - xmit_ssk =3D first ? ssk : mptcp_subflow_get_send(mptcp_sk(sk)); + xmit_ssk =3D first ? ssk : mptcp_sched_get_subflow(mptcp_sk(sk)); if (!xmit_ssk) goto out; if (xmit_ssk !=3D ssk) { @@ -3137,7 +3137,7 @@ void __mptcp_check_push(struct sock *sk, struct sock = *ssk) return; =20 if (!sock_owned_by_user(sk)) { - struct sock *xmit_ssk =3D mptcp_subflow_get_send(mptcp_sk(sk)); + struct sock *xmit_ssk =3D mptcp_sched_get_subflow(mptcp_sk(sk)); =20 if (xmit_ssk =3D=3D ssk) __mptcp_subflow_push_pending(sk, ssk); diff --git a/net/mptcp/protocol.h b/net/mptcp/protocol.h index 1016dac065c8..60d6ee54a899 100644 --- a/net/mptcp/protocol.h +++ b/net/mptcp/protocol.h @@ -619,6 +619,12 @@ int mptcp_init_sched(struct mptcp_sock *msk, struct mptcp_sched_ops *sched); void mptcp_release_sched(struct mptcp_sock *msk); =20 +static inline struct sock *mptcp_sched_get_subflow(struct mptcp_sock *msk) +{ + return INDIRECT_CALL_INET_1(msk->sched->get_subflow, + mptcp_subflow_get_send, msk); +} + static inline bool __mptcp_subflow_active(struct mptcp_subflow_context *su= bflow) { struct sock *ssk =3D mptcp_subflow_tcp_sock(subflow); --=20 2.34.1 From nobody Thu May 2 15:53:45 2024 Delivered-To: wpasupplicant.patchew@gmail.com Received: by 2002:a05:6a06:1788:b0:4ac:5e5b:1ad1 with SMTP id y8csp1164080piq; Wed, 6 Apr 2022 21:04:22 -0700 (PDT) X-Google-Smtp-Source: ABdhPJwDsftlwmBko0t7A/9BkLA3uqSYpj8wSxOj9AaBvQ+RjO558T/A16oFU/PLoP7RVWAcYTBs X-Received: by 2002:a17:907:dab:b0:6df:e51a:b990 with SMTP id go43-20020a1709070dab00b006dfe51ab990mr11040959ejc.573.1649304261903; Wed, 06 Apr 2022 21:04:21 -0700 (PDT) Return-Path: Received: from ewr.edge.kernel.org (ewr.edge.kernel.org. [147.75.197.195]) by mx.google.com with ESMTPS id o22-20020a17090637d600b006e6faf50b7csi10129491ejc.939.2022.04.06.21.04.21 for (version=TLS1_2 cipher=ECDHE-ECDSA-AES128-GCM-SHA256 bits=128/128); Wed, 06 Apr 2022 21:04:21 -0700 (PDT) Received-SPF: pass (google.com: domain of mptcp+bounces-4640-wpasupplicant.patchew=gmail.com@lists.linux.dev designates 147.75.197.195 as permitted sender) client-ip=147.75.197.195; Authentication-Results: mx.google.com; dkim=pass header.i=@suse.com header.s=mimecast20200619 header.b=KbUKsRNV; arc=fail (body hash mismatch); spf=pass (google.com: domain of mptcp+bounces-4640-wpasupplicant.patchew=gmail.com@lists.linux.dev designates 147.75.197.195 as permitted sender) smtp.mailfrom="mptcp+bounces-4640-wpasupplicant.patchew=gmail.com@lists.linux.dev"; dmarc=pass (p=QUARANTINE sp=QUARANTINE dis=NONE) header.from=suse.com Received: from smtp.subspace.kernel.org (wormhole.subspace.kernel.org [52.25.139.140]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by ewr.edge.kernel.org (Postfix) with ESMTPS id 648AC1C0B19 for ; Thu, 7 Apr 2022 04:04:20 +0000 (UTC) Received: from localhost.localdomain (localhost.localdomain [127.0.0.1]) by smtp.subspace.kernel.org (Postfix) with ESMTP id 147E720F2; Thu, 7 Apr 2022 04:04:19 +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 1245420EA for ; Thu, 7 Apr 2022 04:04:16 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=suse.com; s=mimecast20200619; t=1649304255; 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=0hvgizazLSVqB/vatjqRkjg0r7EonKFUfE/VaWeXCr0=; b=KbUKsRNVR7IFOEjGh0RLOo1NwTME3xyTXVtmLBN8Z05j63MvoLCV76F7PsrrRigmeMdYfX 814cwL1EyVXzjg8HXLJ/ENJcrpyxTmIT4SQAaEXdZ7VkJWbSZqk6EI+AggTAyI5KkYDoSj IR79qqGy8D7rrxrSEjDI/3gKyRzWa1s= Received: from EUR05-AM6-obe.outbound.protection.outlook.com (mail-am6eur05lp2107.outbound.protection.outlook.com [104.47.18.107]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id de-mta-8-k-MkVWj6MRapcb5Fitdr4A-1; Thu, 07 Apr 2022 06:04:14 +0200 X-MC-Unique: k-MkVWj6MRapcb5Fitdr4A-1 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=LnR0BP3n2RI/WsVbq//q1gwOWOUhuS58al84dzOjCWTtKutyMDt+xlu8Dp3YuBcRrW8Ssgba0odptbt4upc67xrGJ1JT009znFL15lP5voyzPRtZK3QYGuFSNUNmUbZd1vOBF46i2MPxgKKPDGZG1DB3HUQ53CqA2kZ3AVfxgt+tDjf4eJNMAc/c8sZnFEAAviel6E95DDAWSvxMFv51c0agy/cn8HbDdaZM+IW7vmjZPaL+kBWBNhVB0Tn6di++BCEF2VWbn3oW1R5a2x5nl0VOT9gSoqZ0hg0tdKrgug1+YeX5iVEeXS82abDlWYC7GdHtjppIA7xSX3CY+DFMWA== 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=i/QGFqUTVH0QlTuFZqXcDHVQX6mvFPq1GybMAx2rAjk=; b=hMwLoG5uoQWTpHJtT0sWT4zVmSX979NebpraJNvbeg40StNF4vcTKeiOtu5uoYGIVAYG6RU7PGM2rL6mKq6J0fdBtOzIm1zwqf6qGJD+xJLUTldO8g18AY3Km8CrhffrG9kyEd+EvalQRYVOB+eO7SehPwrIm1NVJeRMVLFcx+ofIY39zu3GEAwGVtZlkSRf8SU8b1xjv8Frz+ANxz3sv9QmDIgKH+C/TJnHwDE50yOuJ4t5ZXYtOKg/Xeqh1H7iJXeqbLC9G/25HVgWOZg3qhGfiiUp5gugEs8Apdg+bhGr4P2Q1dkUTAHIdNFcF7nOqKjrykURyiqA5m68q06XfA== 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 HE1PR0402MB3354.eurprd04.prod.outlook.com (2603:10a6:7:85::23) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5123.31; Thu, 7 Apr 2022 04:04:12 +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.5123.031; Thu, 7 Apr 2022 04:04:12 +0000 From: Geliang Tang To: mptcp@lists.linux.dev CC: Geliang Tang Subject: [PATCH mptcp-next v10 6/8] mptcp: add bpf_mptcp_sched_ops Date: Thu, 7 Apr 2022 12:03:18 +0800 Message-ID: <2d711ffb3e01fa3e88ed6f32f7c334387e8f98ba.1649303876.git.geliang.tang@suse.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: References: Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: TYAPR03CA0019.apcprd03.prod.outlook.com (2603:1096:404:14::31) To HE1PR0402MB3497.eurprd04.prod.outlook.com (2603:10a6:7:83::14) Precedence: bulk X-Mailing-List: mptcp@lists.linux.dev List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: a6d120f4-a3bf-4d78-f6af-08da184bac3c X-MS-TrafficTypeDiagnostic: HE1PR0402MB3354: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: cjgbeO9ABvLbYDSSRcD78YKLYVWMTF1cfvcyj2NQC1XgWqtwX29QspD6US1Zs6Oy6SPBXf8dHcuFDy/aeGphcmuw5JIepRBsd9slu8Cu26qFGCPu80fp1B6inMWsiueWstiqYx3L4TDU5cMHjOHCECQ4RHBkCkjtuCHR+TzlpV3AjLYsWXdE9vYX3Qtvu5MPYow2ymRViuIBvs73t5B/ueTx4aHh1Oc4WWPdSiUkH7lqHNBB1yXRi5LVzgnMiLpM2v8s+Vjwt/8maJbah0wbBHpK+dkbCP8u73x22bi8XySWZ1PAAMYjX/ns2kugFUdW3LZM/9FhgFmQmKvtzOMuJfO0H2rgPUU8TwfE54kSWTkXWqGkq+pWtiM8zZkyyKHgQnEjOISL7+eLQ/ZiKVuqz43gzBXmhRDumcooo16R1cMfHNahe5xqLpRzHh+ghJ7OriihHs+pFSzjznu2KCXslewEn6H4cVwo6SIC4kMriucdi66stlZBoE7YHNYQqQ5UMMdX7lA4r4NyeFTiuoUO6vurPs7d1LYJynl/ex2iKDB/a9UJfD74hkGSXXV03YI2Lrh32MUPs2nrGfczZyRO1n954y4NtQDAIQK43ZAJnSKYzDuwq5EAq9stAEDNx7RfZHP9+hFzykpRn1dnsoppvKNzM+4UFuzyBsSyiYaHucGerIC7UZLbPcCYY7wBf00PHuW2Q7TqspmqvREIMh+9Lw== 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)(2906002)(5660300002)(38100700002)(6486002)(36756003)(44832011)(508600001)(8936002)(83380400001)(8676002)(66476007)(2616005)(6512007)(6916009)(107886003)(66946007)(186003)(66556008)(26005)(4326008)(6506007)(86362001)(316002)(13296009);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?UUKlwAvhbBXScgXg9GsNfg/8l7WC6McOtkkELp8dpDfnb9KNZLGkm3cDngYR?= =?us-ascii?Q?2k8Zuk8dC/a8O2J5F79SZ/8VtoozqFOcqLXAZHUF61XclqayRHCvQvdV/S8H?= =?us-ascii?Q?fiSyMB/rZ5TFvrIsgTs9Cmzt1uIyZpwkhTlwC2/dHbNq3KsfUVU0ChEiKLd8?= =?us-ascii?Q?2QgYuyIpnnY3DFRsRf5sDbLDYVLsJw93A0W0p8U+8iKDVxrhcIRwAQ0qHFKg?= =?us-ascii?Q?enfIJ9Ek88OandDmXrGcAUmJf43wSOsRn3V8em2xvlG3r1MgE+sjLxEaoB64?= =?us-ascii?Q?aza5KJEtEsLVXXL0qUdlggDFU9+mQHBgaGXp21NBzJukPhvOdJlCa/n3Bsf1?= =?us-ascii?Q?IU46JLbSME7cm4RlduMZlh0L+uI3sVcKrhb+yV0oPH0M5aO71A5e5zXB7IBD?= =?us-ascii?Q?/Z8kzD9MloIfq+cARuUQ9U+RPo0yhef31NxG09AhaRMPAqDKtuo4n/6ogSxB?= =?us-ascii?Q?pzzj2lenyUOzJOgJPaFVooSHYTJ1BQRv94QCSNaCgLV7UdgaxL76ezQKrmxC?= =?us-ascii?Q?4grPBGPP19KhIzZCjyq+3VhNhPVLjWYNOt+z0FG7yhjQ/Vv9Mnae4LjV/403?= =?us-ascii?Q?tqIPNv3Pk3oDy33CZ70dJs9svVo65EtOax2lzIgMbR+1Btt0GsU6ppRYzbDA?= =?us-ascii?Q?gEKNNqH7NlgdLDEKAkQQeJXn/fOXT5lq1adTHKA6xWvPAcdfC8CoNQUWK0JY?= =?us-ascii?Q?wr5CwdhGEXu8aRp4bAxdjmhtc8L4rSq/+3C1ZGTlaphk1MAkUFHzGLO8bbfB?= =?us-ascii?Q?WceLbQ9kr8nC+fwgGdVs9Aajsc7NFLAxciH1au7gp94RM8gnXKRhOTb87jU+?= =?us-ascii?Q?Qdf2ZC098j6szmYeiscB42WJe6RRpFfnxxTBtEqZ76rADo+/mrmnYT0BoblR?= =?us-ascii?Q?ecMkMZnePHdNThGDtJDpU4r7/QJdixjUUAf24oZZ1RC7eMX/cjBkpZ2/BHYR?= =?us-ascii?Q?BW93CY8OgjTWhtqCZsgC7P0Fd49s4DfkXVSYM1Z6DEoPgIpDIipmtwyXJC21?= =?us-ascii?Q?9PL88DXY1wD2t61oCA8ngyOo4WDsoVRCO2MIE876ZeOSXmiZvzdtJ6egCDAB?= =?us-ascii?Q?V69G/Zbpj/nOd+a/xxnJXytJV9twZc+0dqWTg/FR9hOhMS4RKh1cOxLvivvi?= =?us-ascii?Q?9x7pz79/6XaW5j7uAF1OrWaSIy9ivDb4oJJGWOUJhm3kMrlljXeHMMMTaVE/?= =?us-ascii?Q?gSWM40g7grzqN/LGPQ30zP1dQYVsSrEuQDCJKADOVQFt+tBtErZYZ5c5i975?= =?us-ascii?Q?SBvDC84nnorL26c6ELoR4mqm/cNQC4U+ondzKSPEP99jRtKAqdNKhZgxtJHv?= =?us-ascii?Q?6jpjwe63af3jxd0NdcsqDbN0lR+/ZJYg02yYKx/y/r3u05sSNlHXn+jj2GHl?= =?us-ascii?Q?anfPcoZk47/MODA8f4P7Xbu60RVjUBg5OECpRVSKcWFVIT+TTL4SuI46l1/T?= =?us-ascii?Q?eFJLlXhtpaLe8X/VMum+hLx2RIvpQGzvpsBEk5IMABjJ3rWozozIbqB7uCMy?= =?us-ascii?Q?ux3jpTok18fujvU4FUvZcgaDdyYVTovrmvsAL/97kc48D3sBze8sBBd3NFuL?= =?us-ascii?Q?njJVDzymiff9gkuO3rJk90aDPQ1sGoI/kgcaIU8IHdxAF32OJyOw4+wXsRtp?= =?us-ascii?Q?aSey/Eq4iSybOYc0q85pAo4dBjpvdmKsL4Dk047HQH2f+yo6mrLpi7lZ1QN2?= =?us-ascii?Q?tzStHWKHf4HH6CcPG4U+GiwQLLhPrKSrS2NBBqsqjw1KuNh4Gg81Q3n/OYI7?= =?us-ascii?Q?9QOyRWcxnGQVxCAgAIqA9C4kLO4q5gc=3D?= X-OriginatorOrg: suse.com X-MS-Exchange-CrossTenant-Network-Message-Id: a6d120f4-a3bf-4d78-f6af-08da184bac3c X-MS-Exchange-CrossTenant-AuthSource: HE1PR0402MB3497.eurprd04.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 07 Apr 2022 04:04:12.0605 (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: bz785D1zxgfb7rDKonIQrKrjzftcmctyhoq9bHCjktCErU1zki9LhpRtt5xbq6YPZFV83JyjiP2aZx8JczDVvA== X-MS-Exchange-Transport-CrossTenantHeadersStamped: HE1PR0402MB3354 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 --- kernel/bpf/bpf_struct_ops_types.h | 4 + net/mptcp/bpf.c | 129 ++++++++++++++++++++++++++++++ 2 files changed, 133 insertions(+) diff --git a/kernel/bpf/bpf_struct_ops_types.h b/kernel/bpf/bpf_struct_ops_= types.h index 5678a9ddf817..5a6b0c0d8d3d 100644 --- a/kernel/bpf/bpf_struct_ops_types.h +++ b/kernel/bpf/bpf_struct_ops_types.h @@ -8,5 +8,9 @@ BPF_STRUCT_OPS_TYPE(bpf_dummy_ops) #ifdef CONFIG_INET #include BPF_STRUCT_OPS_TYPE(tcp_congestion_ops) +#ifdef CONFIG_MPTCP +#include +BPF_STRUCT_OPS_TYPE(mptcp_sched_ops) +#endif #endif #endif diff --git a/net/mptcp/bpf.c b/net/mptcp/bpf.c index 535602ba2582..e849fc3fb6c5 100644 --- a/net/mptcp/bpf.c +++ b/net/mptcp/bpf.c @@ -10,8 +10,137 @@ #define pr_fmt(fmt) "MPTCP: " fmt =20 #include +#include +#include +#include #include "protocol.h" =20 +extern struct bpf_struct_ops bpf_mptcp_sched_ops; +extern struct btf *btf_vmlinux; + +static u32 optional_ops[] =3D { + offsetof(struct mptcp_sched_ops, init), + offsetof(struct mptcp_sched_ops, release), + offsetof(struct mptcp_sched_ops, get_subflow), +}; + +static const struct bpf_func_proto * +bpf_mptcp_sched_get_func_proto(enum bpf_func_id func_id, + const struct bpf_prog *prog) +{ + return bpf_base_func_proto(func_id); +} + +static 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) +{ + const struct btf_type *state; + u32 type_id; + + if (atype =3D=3D BPF_READ) + return btf_struct_access(log, btf, t, off, size, atype, + next_btf_id, flag); + + type_id =3D btf_find_by_name_kind(btf, "mptcp_sock", BTF_KIND_STRUCT); + if (type_id < 0) + return -EINVAL; + + state =3D btf_type_by_id(btf, type_id); + if (t !=3D state) { + bpf_log(log, "only read is supported\n"); + 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) +{ + return 0; +} + +struct bpf_struct_ops bpf_mptcp_sched_ops =3D { + .verifier_ops =3D &bpf_mptcp_sched_verifier_ops, + .reg =3D bpf_mptcp_sched_reg, + .unreg =3D bpf_mptcp_sched_unreg, + .check_member =3D bpf_mptcp_sched_check_member, + .init_member =3D bpf_mptcp_sched_init_member, + .init =3D bpf_mptcp_sched_init, + .name =3D "mptcp_sched_ops", +}; + struct mptcp_sock *bpf_mptcp_sock_from_subflow(struct sock *sk) { if (sk && sk_fullsock(sk) && sk->sk_protocol =3D=3D IPPROTO_TCP && sk_is_= mptcp(sk)) --=20 2.34.1 From nobody Thu May 2 15:53:45 2024 Delivered-To: wpasupplicant.patchew@gmail.com Received: by 2002:a05:6a06:1788:b0:4ac:5e5b:1ad1 with SMTP id y8csp1164200piq; Wed, 6 Apr 2022 21:04:35 -0700 (PDT) X-Google-Smtp-Source: ABdhPJxcl20u6Bdpijyt9ui4sNN3HwYBBicLPLBNVYi5+dFBrRnMhh5FxhAJwF/20YT/d0R4yAUS X-Received: by 2002:a17:906:e4b:b0:6e4:8d29:6793 with SMTP id q11-20020a1709060e4b00b006e48d296793mr12171471eji.655.1649304275292; Wed, 06 Apr 2022 21:04:35 -0700 (PDT) Return-Path: Received: from ewr.edge.kernel.org (ewr.edge.kernel.org. [147.75.197.195]) by mx.google.com with ESMTPS id n9-20020a05640205c900b00419d1d0307asi15284149edx.19.2022.04.06.21.04.34 for (version=TLS1_2 cipher=ECDHE-ECDSA-AES128-GCM-SHA256 bits=128/128); Wed, 06 Apr 2022 21:04:35 -0700 (PDT) Received-SPF: pass (google.com: domain of mptcp+bounces-4641-wpasupplicant.patchew=gmail.com@lists.linux.dev designates 147.75.197.195 as permitted sender) client-ip=147.75.197.195; Authentication-Results: mx.google.com; dkim=pass header.i=@suse.com header.s=mimecast20200619 header.b=OfZWvOl4; arc=fail (body hash mismatch); spf=pass (google.com: domain of mptcp+bounces-4641-wpasupplicant.patchew=gmail.com@lists.linux.dev designates 147.75.197.195 as permitted sender) smtp.mailfrom="mptcp+bounces-4641-wpasupplicant.patchew=gmail.com@lists.linux.dev"; dmarc=pass (p=QUARANTINE sp=QUARANTINE dis=NONE) header.from=suse.com Received: from smtp.subspace.kernel.org (wormhole.subspace.kernel.org [52.25.139.140]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by ewr.edge.kernel.org (Postfix) with ESMTPS id B52721C0B5C for ; Thu, 7 Apr 2022 04:04:33 +0000 (UTC) Received: from localhost.localdomain (localhost.localdomain [127.0.0.1]) by smtp.subspace.kernel.org (Postfix) with ESMTP id 3DEC420F2; Thu, 7 Apr 2022 04:04:32 +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 A91EE20EA for ; Thu, 7 Apr 2022 04:04:30 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=suse.com; s=mimecast20200619; t=1649304268; 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=ZDvjfr6t0NbK4YhcT42Fap6bstjQt15B5MhjeBWAJ00=; b=OfZWvOl4tDEFgR1Nf/DbvmF2pGWoNaMQ629hejJ/55zcjmtI1vBxQg4zVbKvVlWbMgLc3k 6RLB+VOqbG/wEFbg3EXag7hmTqMbVj66kBGTDCW4Y7dpmdS74tszhrUcYXzoRuQa4xKaRK vcHnb8YpFo6d+jodY4vBUWBPvBR/rBo= Received: from EUR05-DB8-obe.outbound.protection.outlook.com (mail-db8eur05lp2109.outbound.protection.outlook.com [104.47.17.109]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id de-mta-7-LYmqT8bVOGiLUiuwjOb5lQ-1; Thu, 07 Apr 2022 06:04:27 +0200 X-MC-Unique: LYmqT8bVOGiLUiuwjOb5lQ-1 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=oJOQlxDhfbLWvcxuXCdh8xeduixahLTKGO6shdyKC2HtaSFLF7wQcIbU1yGVvW+P6O0lzE10/h8bSzH5ldNuyEfX6MsMhkEWPBEUUcpSlg/xsSMc2MYDHkYa6YPIbkN047yr1//7qo+5NmgNeZ1/95HF2tuz0/h4tLGERjXKdV/gNtQHapo0tDnVIXtwJ+RV3G1VfuuUtaaFG6SYfzrPp3JyACTl8c/XDhSGufuxdJ7mSIdHL0BNuJHbItH5/dcVMqa/9PVaiSHM570lO6hIkUNUVY2l/FcdTkD2W5iRFjO/4/a7Hq27hroz9+XgaJicym9VUxAfyuSZuVMkBNMPoQ== 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=KOdAuin0+WlJ0xJtAwnzP1+4kZRvBP31SVfaLs0bnZc=; b=BxEyHrxaP4SjQH8u54sDqdZbt1IefrLFstkYnW2pBsuaGN6DHr7N5CymS/+S2MgE07mEGAJa4SG9DqbxqwMbCGm+WDC38P649iuScdRhbCpWLv19/FPG7EChIqlexoP6xF8+jktrtVwG/u5Lb3N/DnLQ4CieiP8gjAVVcDq+3ra5zwFdjr83UTsi9YqXrwUaB3Mn5gGgTfNoWTPCo1++S51pVqWr5RBmc4lP3WKHFVz1TW3RAYzCfZsdI9ZxZgfasDVFaBmvrAbOxo50i+b9i3WpW4epO8vEFM6Cv55gBScEZOCAAXK26/sKA7nGvJW0b7bpNqU4pe53QQoZL23HCw== 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 HE1PR0402MB3354.eurprd04.prod.outlook.com (2603:10a6:7:85::23) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5123.31; Thu, 7 Apr 2022 04:04:26 +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.5123.031; Thu, 7 Apr 2022 04:04:26 +0000 From: Geliang Tang To: mptcp@lists.linux.dev CC: Geliang Tang Subject: [PATCH mptcp-next v10 7/8] selftests: bpf: add bpf_first scheduler Date: Thu, 7 Apr 2022 12:03:19 +0800 Message-ID: <2ff358a960acc528e430c5826ad8150028a8ee95.1649303876.git.geliang.tang@suse.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: References: Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: TY1PR01CA0203.jpnprd01.prod.outlook.com (2603:1096:403::33) 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: 846d9047-fecd-4a69-4b31-08da184bb51f X-MS-TrafficTypeDiagnostic: HE1PR0402MB3354: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: aUlGk+c25e5iw8ThrsxJ7SAGZx7aRoWlwobRFm9rL9oO6bUzcCVXwQ790LC+rTVGiEE1ZOB36AJpy5Kw8OjzVHaDy7tx+r8ATxHxGzutW1cKhaUKPQ9Gw69FbdYtTuUCENlL+jMd1HnA4YKqPUuccH0NUDvVtJNOcB86U+JGLuSF5+CNrmIfhbbQ0rFSjP6leP5G00uvttN87ki2S0bpGMqVtS7rmivPv977/1rPGIrCMU/I4Y++wd8wbFqUHQIGxV6K7dZ3ZiECSb6ug5co00I+nl14NzURfvw6pgmmKrlfbOa8elTC0J4qgyOEfDJDe8mBr+8kuy8OSGKitGgdlBFp7KKehIsvgI1Zuhg95Y+llTbFWY2zkhEBK8MxAyM2enb1ihNcDGuvLLkEjq8KjKR17YsPaFPVX0HtihJ+MPNMGkFgNY8MmiilMnO8nO3WtXvL67lPeHgmujrTAcNzZVAsc57/zTIoGoE7cgoxi8/u1foeolst6ZLbnt9DbXkXjAxxBaZsKHM8X2K4e8W0cjPbpibBj2rE7tfeEaRecDANhDNM7d2JwEn02XgNj/wKtuRFInl9hhcplqllKYYzughbX1tSG7vBoinqd3rTDdb1nktkAEueLgsnG1dyCmP4Ls7aIImvaHcHOXMJqDvIRKhocAt4J+646DfK8hWofkIPsxrXYaBwsgewBM4fqF2RwvmBPoDFyWGVIfcltxx8DQ== 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)(2906002)(5660300002)(38100700002)(6486002)(36756003)(44832011)(508600001)(8936002)(83380400001)(8676002)(66476007)(6666004)(2616005)(6512007)(6916009)(107886003)(66946007)(186003)(66556008)(26005)(4326008)(6506007)(86362001)(316002)(13296009);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?uWVjw0OezMGxJQORIgLCfo1OwuENA7dd3A2B6hFD/5g+Fu8376VjiK0z2mAb?= =?us-ascii?Q?E8U3/krvbBYXq9cjJ/v+PJDGooLpj1qzT+GCXcnH/IXVfFb31jenfwxKCauD?= =?us-ascii?Q?F8JSoVXng+HxrHPNd/JeBEwM6AQtJnZr57zMxYeP+BxqsEkTX6BUrUMtqO9b?= =?us-ascii?Q?bg4gX/s6mdGzeK1f+0xRMVx0PFhztyly6Xvzmvu4HconZo4p0cwK/cP0oPrU?= =?us-ascii?Q?dZJoVNQT3L3tTo5S47yJZp6dQYD1k55eHzqotP0nZLfy9csQ6do+XwMsNeM+?= =?us-ascii?Q?J8rFrrlHOi8y6Ne83EkNtHu11zNIfggPAACqUlAGbcy0QPay6F9NbDA92eJr?= =?us-ascii?Q?Q4xnAe2LQbkQUI0Oc+NSJ18acEv2FevHc8QN0azcQy+MwEbYaiQrU6f0tz1B?= =?us-ascii?Q?dnDOdYELofEYsrpbUF1pRprHmp85UbTG5y8tNOX2PBHoGaIupoUTYBqHzGRs?= =?us-ascii?Q?C1bGBj+sTVVRX8813BLnvVmTcNdhuXxiOZ/szVPP/Bl/fiBDSb0IYqI4hZdY?= =?us-ascii?Q?qaCVWFqgdye1BbVic87IDX1FAhproHyJSWzprmVKFJb5HvzB0FBlTTIU8Dxm?= =?us-ascii?Q?1/s3T1IHA5g6WAQ5ImrdbQJJizC7zNIZkxhJoj3V7aUEACGTx2P22jLkE8ya?= =?us-ascii?Q?z5K13FgSHI7AY7g0WgDa6HqAez+KCbXbjhfdJzUoX+UWyx2ERPpxoJJJp7zX?= =?us-ascii?Q?h9CoZQX+OpEh9cm+fCYVCqzg+Mu7q99EpPuuO0JtTVkwX43DlTersmWxt2PJ?= =?us-ascii?Q?4HAtwSexAA3SiibF+kf698Xv5jRRK35KzitBbKQkc1THoaO/61siCxXpOrMR?= =?us-ascii?Q?iCq3wBd3ogmDf40qHPJ+zSGhCVXTBJUvO7u7b9/HLFPYmDVCa3r1mBrVaGvU?= =?us-ascii?Q?xNnjI5E7u8mlMtS6xtIYB+mRRVCMwUylpmlsKtyRm7qW2paJCBuHFxpiUDLq?= =?us-ascii?Q?7McZWiiYtq4m3qcCl4E5qX2OGmPshohGu5SQ7oAzB+TKXE4Xz3ltjwqWkMM9?= =?us-ascii?Q?EYYS9wy2CgWV468bt9qLHckX9OKlIgLMbPt/3a3sZXL+R7g3UsgfZ2tA4+e7?= =?us-ascii?Q?cUMBnk7A+eD88Ut69y+eIMJTLdGK4Pdw7l3oparVV6+Ms8J/5nWl/QBQne2Y?= =?us-ascii?Q?Mb7jUDeOvVUXkPdQTWhTdnd8bQAe5cEYEYRjwB2DAjUxZpmZjdkqoxRitUFl?= =?us-ascii?Q?uMsrf6OpBCXnVY9fIJb2l7Q3T3NKDqV+QspZwQkMqlMyXvKWoICW6ZfYTOjY?= =?us-ascii?Q?lRhh4IfnXS1Aqg+c+VDzEV+dH9CShAKjsTkl6Umvp+7gUxiXfIbnNvX+CE5n?= =?us-ascii?Q?Drf9yGNde45yFLWaazanEks4Vw/X452dFnPjnH+6beP8ziC3+7Qsiz8rHp2o?= =?us-ascii?Q?0A03dlAhYcb+jkZ2V7Oiyc2y4AcUJ3IaLRa1HYYbqFzY2YobigYpNbDqWM7K?= =?us-ascii?Q?LjyDyllhGDDgEaTJKtVhV4FzAhkFTEvw0l0eRwUg8tNw1bQ0MBkgvtHbpRXk?= =?us-ascii?Q?9XgTSePMrv5+Hhjo8y+189LmHCTsLc/0th0wvIYicFo9IM58cp6UimmNXmQc?= =?us-ascii?Q?2RqeuHz2uWiQpvEfuBbO5elk9QqA/aFtbX6XqFPosEJPDHC6gic5fNdhXl41?= =?us-ascii?Q?SOKGOu5ZyAw2KZERGzUDksQ3Jq9WjRuqLP1qKhQCOHK2daZ324k6ABXVA6Kc?= =?us-ascii?Q?Sx7i92JY/naIrlR6yRwHjiUQ+VIqart/wYJ9gJtEbIPXYAlRRHI8YO5etzyt?= =?us-ascii?Q?F0oD6uqDXHbRhCZNveXN77xrsvKJJfo=3D?= X-OriginatorOrg: suse.com X-MS-Exchange-CrossTenant-Network-Message-Id: 846d9047-fecd-4a69-4b31-08da184bb51f X-MS-Exchange-CrossTenant-AuthSource: HE1PR0402MB3497.eurprd04.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 07 Apr 2022 04:04:26.7312 (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: HkTc7dgdFjF3whXuJ3aYr2JCKv5ih4gRJuhMF5V/IzglSz5Ywgg/QwsNNpWdqLv9EjzEWOz0MVcnRj8QOYkBew== X-MS-Exchange-Transport-CrossTenantHeadersStamped: HE1PR0402MB3354 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 --- .../testing/selftests/bpf/bpf_mptcp_helpers.h | 12 ++++++++ .../selftests/bpf/progs/mptcp_bpf_first.c | 30 +++++++++++++++++++ 2 files changed, 42 insertions(+) create mode 100644 tools/testing/selftests/bpf/progs/mptcp_bpf_first.c diff --git a/tools/testing/selftests/bpf/bpf_mptcp_helpers.h b/tools/testin= g/selftests/bpf/bpf_mptcp_helpers.h index b5a43b108982..5135eb6710e8 100644 --- a/tools/testing/selftests/bpf/bpf_mptcp_helpers.h +++ b/tools/testing/selftests/bpf/bpf_mptcp_helpers.h @@ -14,4 +14,16 @@ struct mptcp_sock { char ca_name[TCP_CA_NAME_MAX]; } __attribute__((preserve_access_index)); =20 +#define MPTCP_SCHED_NAME_MAX 16 + +struct mptcp_sched_ops { + char name[MPTCP_SCHED_NAME_MAX]; + + void (*init)(struct mptcp_sock *msk); + void (*release)(struct mptcp_sock *msk); + + struct sock * (*get_subflow)(struct mptcp_sock *msk); + void *owner; +}; + #endif 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..b1f9a376ab75 --- /dev/null +++ b/tools/testing/selftests/bpf/progs/mptcp_bpf_first.c @@ -0,0 +1,30 @@ +// 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) +{ +} + +struct sock *BPF_STRUCT_OPS(bpf_first_get_subflow, struct mptcp_sock *msk) +{ + return msk->first; +} + +SEC(".struct_ops") +struct mptcp_sched_ops first =3D { + .init =3D (void *)mptcp_sched_first_init, + .release =3D (void *)mptcp_sched_first_release, + .get_subflow =3D (void *)bpf_first_get_subflow, + .name =3D "bpf_first", +}; --=20 2.34.1 From nobody Thu May 2 15:53:45 2024 Delivered-To: wpasupplicant.patchew@gmail.com Received: by 2002:a05:6a06:1788:b0:4ac:5e5b:1ad1 with SMTP id y8csp1164262piq; Wed, 6 Apr 2022 21:04:46 -0700 (PDT) X-Google-Smtp-Source: ABdhPJwsntXyb7Jm8CtwwPP2GUExruIZUDzcZeKYE1WPsMLLwHjW2nAfgzL3Ar17t41FS1Oh8Sjp X-Received: by 2002:a17:907:d89:b0:6df:e54d:2462 with SMTP id go9-20020a1709070d8900b006dfe54d2462mr11525040ejc.97.1649304286428; Wed, 06 Apr 2022 21:04:46 -0700 (PDT) Return-Path: Received: from ewr.edge.kernel.org (ewr.edge.kernel.org. [2604:1380:1:3600::1]) by mx.google.com with ESMTPS id bq16-20020a170906d0d000b006df76385d39si165680ejb.473.2022.04.06.21.04.46 for (version=TLS1_2 cipher=ECDHE-ECDSA-AES128-GCM-SHA256 bits=128/128); Wed, 06 Apr 2022 21:04:46 -0700 (PDT) Received-SPF: pass (google.com: domain of mptcp+bounces-4642-wpasupplicant.patchew=gmail.com@lists.linux.dev designates 2604:1380:1:3600::1 as permitted sender) client-ip=2604:1380:1:3600::1; Authentication-Results: mx.google.com; dkim=pass header.i=@suse.com header.s=mimecast20200619 header.b="BrAv9k//"; arc=fail (body hash mismatch); spf=pass (google.com: domain of mptcp+bounces-4642-wpasupplicant.patchew=gmail.com@lists.linux.dev designates 2604:1380:1:3600::1 as permitted sender) smtp.mailfrom="mptcp+bounces-4642-wpasupplicant.patchew=gmail.com@lists.linux.dev"; dmarc=pass (p=QUARANTINE sp=QUARANTINE dis=NONE) header.from=suse.com Received: from smtp.subspace.kernel.org (wormhole.subspace.kernel.org [52.25.139.140]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by ewr.edge.kernel.org (Postfix) with ESMTPS id A90B21C0C4E for ; Thu, 7 Apr 2022 04:04:44 +0000 (UTC) Received: from localhost.localdomain (localhost.localdomain [127.0.0.1]) by smtp.subspace.kernel.org (Postfix) with ESMTP id 3B45720F2; Thu, 7 Apr 2022 04:04: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.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 AA0EE20EA for ; Thu, 7 Apr 2022 04:04:41 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=suse.com; s=mimecast20200619; t=1649304280; 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=GNG8iEtpzdkuvq6LDqfwpmKo3DfQ3gomG42xVqw+Nco=; b=BrAv9k//yGeoGIbMAsgIIv7/3LwFC6BDdpkPKw9xEVoLM4obvRSQyacpyM1sTEaMJoMN8d yzB8eNSFb+t2hBfj+W6g2Kmoj0Md2+B7XaP+fwuR2o8cnIwJywp6eeRNiGSo48T6iwyxNJ ZRTnEYQkW/zvlFoALi9Sx7if/zducfU= Received: from EUR05-DB8-obe.outbound.protection.outlook.com (mail-db8eur05lp2109.outbound.protection.outlook.com [104.47.17.109]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id de-mta-27-qJOHdt6nM7G43X14u_9jKg-1; Thu, 07 Apr 2022 06:04:38 +0200 X-MC-Unique: qJOHdt6nM7G43X14u_9jKg-1 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=gF41fzpf0PebX7bMWdBaWILNxxS0L7jlUL2eQWqG4wBqnJYi/kXWsqWfrMpv317vGuIWyimuy2eLrVGltBnpzMKr7KSrPBQy1GZ2r2YAPEUl4qfrvgSuqRQQoMW/0ufu4bQw50JbsYgJcqXbiWGUKRrUzAZIDFMue6LgqMuWBrCwq29KLQyWW+mWIbW2itdO5kgK8JP/EnHEidEj60RfdkiHiOQYctDUUkeCF+8Ty7nIYzx/bcawsbDQAsQ1NpdhYcpu0BOE5Ek+98pK/fSCw2nD2jQtRUsn11VdS+j8g/5NV1OJsHvO/IuhEnGAMkaANQpW5xBcoTI7OGrSqskPsg== 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=YZK0VfxUK4qsR2ROUjpij6j46M5w2ZGToJAXYcwSeKA=; b=Kil7SH2sofzEBiRLONX/MYibK0Y3z7WsrTTadfEE2HupQJI924q909vQ/CbOQj7zPVUzTZY9TmHEIlElfwr/9x4q0ARP2Idxs3lULR+ZBeqxGp7fj1MFRPFdqNDhm0Bq9owyGDqWnEPoZ+RjjFWAz1I71UbeZf/NG6S3U70JH4XvyZJKLJd1LodxcKzvGV083OLXrGbkgBa3vnE4SXmzx6JV9Psnf51LEKzEKyeW+VKoHliYldTY7w7m46Z2nk1XnHFQl5Q927/jQTjapS7G6LgtnrMBeYkaXv+Z9pzTTQwYd5u03yT8qadHd9tL67rraghjv2XS2mvn8xwJCNZNAg== 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 HE1PR0402MB3354.eurprd04.prod.outlook.com (2603:10a6:7:85::23) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5123.31; Thu, 7 Apr 2022 04:04:37 +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.5123.031; Thu, 7 Apr 2022 04:04:37 +0000 From: Geliang Tang To: mptcp@lists.linux.dev CC: Geliang Tang Subject: [PATCH mptcp-next v10 8/8] selftests: bpf: add bpf_first test Date: Thu, 7 Apr 2022 12:03:20 +0800 Message-ID: X-Mailer: git-send-email 2.34.1 In-Reply-To: References: Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: TY1PR01CA0196.jpnprd01.prod.outlook.com (2603:1096:403::26) To HE1PR0402MB3497.eurprd04.prod.outlook.com (2603:10a6:7:83::14) Precedence: bulk X-Mailing-List: mptcp@lists.linux.dev List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: 86000af5-6371-4cf5-a227-08da184bbb8e X-MS-TrafficTypeDiagnostic: HE1PR0402MB3354: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: XdVGLLRG5CEqjomYPkvlRHb2znUaL0dYy2TbG45lXSKe9C+6OnqYcckilLka54AqvtiT5OjVvvPxeWshh2aC5wwNxQgVwxORLT89POAvFzjSGNdqk00WYjIRYQVG65a0UmExNO84uIwqad4rAn+SKH5pWp6QDbSVrzJvI/FL9ywWkBdhFfPDpoaijjZ8L3EkA4/51vapF7q9AUHbd6aIZIBbzuCZI/b8dlBq6iBjvXYnVjJ4cKH6Xs7MYQgonXtsNOIvrHS0x6MWVzXP49yFXjgutxZL3hHV7/d7h9slQXiAnXFQ3vvxsfj/KasK1Oi3WI5relBb7LlG5eBfR7vNPudbv441TYc0LLm/hpTlGCE+ysNemPlY7dRAjhaPH/YVNfpi9WF3K3bbpwRvigl76jZ/MpmaymkFLZg2v2HDjozft54tpt/v31GY4yphw+6pULGnbuP5QcagPrj4YkrdOjuYZ4EMFHBMOD7PULMMH6bel8Uo9J/AKCCfgUiqOjuYFonae6aw/BVQNJUJSzL0bn6HFI/tscYH9XksC/KXR1kDZhxmtXmFKfjhDVQXNcDUJ+TnbwCQ2CT0Aqg6NCbABU8ow7yhO5pBjuRkAWt8LuSGzBmHgnDg0Hbds/SGF3lirZwfDsuVICwy2BiEUjZtg7MhQ1fFmCIg1TLoZU9y6tsgFcvlvM679lv9mNLIgjYq 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)(2906002)(5660300002)(38100700002)(6486002)(36756003)(44832011)(508600001)(8936002)(83380400001)(8676002)(66476007)(6666004)(2616005)(6512007)(6916009)(107886003)(66946007)(186003)(66556008)(26005)(4326008)(6506007)(86362001)(316002)(13296009);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?blo3LqqkFPndt0SA4rEGaVsIW2MZjh0YJLSjjcLGcCzzYKnB5Hi2mkCzugxQ?= =?us-ascii?Q?g+/enN9GvvGjMYq08IkSJnD295w5eS+sgM6ylbuFynfAbQnxGI7ANkAtgR+W?= =?us-ascii?Q?H62fd8GzsugxLz7UV54ja4+bLTqD6DrxvS5JfS2nJE/rZfLoew+8R0CvfOOO?= =?us-ascii?Q?SLX0D95uiLvmXWp8SG+zyYl0cvzEZ2zFaQor3ztHJphQjFjw1JfWmnKFYa6s?= =?us-ascii?Q?WxxU5TfeDL1zh4w3/iLD4S35bRfIOP/7ViCnk4+bBEdDnPfE1NOc0lFBdFh2?= =?us-ascii?Q?jCHp9W88AZKuGeP+fZ9TV+X6Ykr5p8CZeINoy8et6bvPgPUx6E1r23hrn50I?= =?us-ascii?Q?ioYiL8Q4m77Yv1ibfoLOxOWIQoDAIFkcHzxn7V+PngIAz7eWr95rMU56gZ/T?= =?us-ascii?Q?aRSP//kOGO3v6wPUjpm1jNjAXX6R8FX7sJHMvrI7RemzbwcdFCTsugR2nZo4?= =?us-ascii?Q?9aVQJe3jpasB5MZUNIlUf9LrYnzV5Wu58vhN22ovZtngLGLdPBHhpdSi7JbC?= =?us-ascii?Q?KoNeSuhTfuPByY5FK+Kc9XekSh3iwRvd0OziEsC2LCVPQMiSPtqy48OQ2OuV?= =?us-ascii?Q?Z5Thi9VLuucqwJfdgXzwT7d5yqpvANmlDeppH+tsRf7+bv+FB0SoIZoONSqg?= =?us-ascii?Q?QN5Akl84AF7nO9zfE8TOWPfl5O1Xi9PRVGRLMgYCOyVxDqFptz5Xy8pPLD+d?= =?us-ascii?Q?DeeRJ1YBoSRXprwvUQwIKiEBEFI4zN7jhYVByNjTCkN3vQRZX6OuWKhNQ/30?= =?us-ascii?Q?MEfLVh5TxvpmUYZwkSuPbZXFm8bE7rHkrpydCgYUJxPv8RFNcvBGv3cWeL3g?= =?us-ascii?Q?nr9Wy1vwfCnbWvIdu8kbVmGncHw2XWjEtOmPV9ccl6FzHz+WAwKpxlJMUNNn?= =?us-ascii?Q?ng5U5NqAdcZpkR6ta3AawCqiTNc1KF1SKkpbQsdzLRA/jnqCBM+j2bOBwXJw?= =?us-ascii?Q?e0siqGKWvtdT3gz1/TWMWau0t27gY5+B56nUfpgAc08bh2I4KqxQ/6mNwSlZ?= =?us-ascii?Q?KzZfVPM7lDEJ+PAVlkSDONvsjqA2EE/MKZRXu3KTcKnPWNNvGCgskHAT9mxM?= =?us-ascii?Q?a1Zbr5TDBumj5CAkv64RpNVFdE0ReCQsxexVV752WcSQsh+WDgywAVLl2axx?= =?us-ascii?Q?WavgnOFLARclC7ec5bhykpKgYMb+lMWXYgbrFJc7UC8tbgXGW1heQvN+vHdE?= =?us-ascii?Q?EuR6XhYdenT7s5fpyj8t9AXm11xgg9NEAXCmApAt9qP2vJKIsC8zqTp5aBo6?= =?us-ascii?Q?E/QQIBaMKGthAprKYiPxNgwXjxS9c8/8NZnUTNo/gyyLZN/ljFKV+cM/fzHQ?= =?us-ascii?Q?c5fhgg/krhrZibv8fr0gcpmVeYXR/iGeTRX5PfBAXmYmCrX0om3yShdYN1vw?= =?us-ascii?Q?YBW0GbWCS8NAV5wet2OGBP5TAVFdsHJ59dop2fJd3wbV/0iT+3YBLG+UVLqM?= =?us-ascii?Q?kb5AOCgxk9D4Tm+Rg3MimLiH9uzQEIGh1i5NgLSfqNKT1ODJeAnJbRx3o3Sr?= =?us-ascii?Q?nEqIbWkqv7FFDuVZ23cvdYXIFNivZXkZPGhg/gPtYu5KtqxZ6HeKWA8PLDpZ?= =?us-ascii?Q?4bkVG7DVSaZ5icTuIDjMnyr0FZ175NuWwLc0zQSoxxNwypQ1CdTT71BZ1Xm5?= =?us-ascii?Q?bEIU2cf7hiaBMMMQd9uthJFs5enW+/SUTVCWaNCit6D/9Q+DPc4v/oSEFP9d?= =?us-ascii?Q?jKtEVW6kG4RcP59BRCh9Dzdkr8iZ+B5blrXCCMOeKY+JMwe4zHmp2Uka33im?= =?us-ascii?Q?WvbhqqXP5oS3WLoAxSgRS9pApmacL5o=3D?= X-OriginatorOrg: suse.com X-MS-Exchange-CrossTenant-Network-Message-Id: 86000af5-6371-4cf5-a227-08da184bbb8e X-MS-Exchange-CrossTenant-AuthSource: HE1PR0402MB3497.eurprd04.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 07 Apr 2022 04:04:37.7772 (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: xwAQglWtPVLvMhRauKtBcDqJ9Nj8xNcItjXZg77sdZGyn1CM/dsflEbRWk/Mhz8RAVMCybYtzi4jBgz1KHLq8A== X-MS-Exchange-Transport-CrossTenantHeadersStamped: HE1PR0402MB3354 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 | 113 ++++++++++++++++++ 1 file changed, 113 insertions(+) diff --git a/tools/testing/selftests/bpf/prog_tests/mptcp.c b/tools/testing= /selftests/bpf/prog_tests/mptcp.c index 7e704f5aab05..377ebc0fbcbe 100644 --- a/tools/testing/selftests/bpf/prog_tests/mptcp.c +++ b/tools/testing/selftests/bpf/prog_tests/mptcp.c @@ -1,9 +1,11 @@ // SPDX-License-Identifier: GPL-2.0 /* Copyright (c) 2020, Tessares SA. */ =20 +#include #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 +21,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 +255,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