From nobody Thu Sep 18 08:11:42 2025 Delivered-To: wpasupplicant.patchew@gmail.com Received: by 2002:ac4:a898:0:b0:4b1:af33:c52d with SMTP id z24csp234462pid; Fri, 22 Apr 2022 00:43:01 -0700 (PDT) X-Google-Smtp-Source: ABdhPJweGTJKRPfufKJx/Km3nEzkUe/KtBE2oyUtaglHAXgkpc2BOx4SvSvfTVSVDHbNMc3TKn/H X-Received: by 2002:a17:902:d4ce:b0:15b:3832:dc09 with SMTP id o14-20020a170902d4ce00b0015b3832dc09mr3222903plg.168.1650613381184; Fri, 22 Apr 2022 00:43:01 -0700 (PDT) Return-Path: Received: from sv.mirrors.kernel.org (sv.mirrors.kernel.org. [139.178.88.99]) by mx.google.com with ESMTPS id me6-20020a17090b17c600b001d2a0a4f71esi11512777pjb.33.2022.04.22.00.43.01 for (version=TLS1_2 cipher=ECDHE-ECDSA-AES128-GCM-SHA256 bits=128/128); Fri, 22 Apr 2022 00:43:01 -0700 (PDT) Received-SPF: pass (google.com: domain of mptcp+bounces-4846-wpasupplicant.patchew=gmail.com@lists.linux.dev designates 139.178.88.99 as permitted sender) client-ip=139.178.88.99; Authentication-Results: mx.google.com; dkim=pass header.i=@suse.com header.s=mimecast20200619 header.b=DVqw1ugg; arc=fail (body hash mismatch); spf=pass (google.com: domain of mptcp+bounces-4846-wpasupplicant.patchew=gmail.com@lists.linux.dev designates 139.178.88.99 as permitted sender) smtp.mailfrom="mptcp+bounces-4846-wpasupplicant.patchew=gmail.com@lists.linux.dev"; dmarc=pass (p=QUARANTINE sp=QUARANTINE dis=NONE) header.from=suse.com Received: from smtp.subspace.kernel.org (wormhole.subspace.kernel.org [52.25.139.140]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by sv.mirrors.kernel.org (Postfix) with ESMTPS id DE142280AC1 for ; Fri, 22 Apr 2022 07:43:00 +0000 (UTC) Received: from localhost.localdomain (localhost.localdomain [127.0.0.1]) by smtp.subspace.kernel.org (Postfix) with ESMTP id F377223D3; Fri, 22 Apr 2022 07:42:59 +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 106CE23CD for ; Fri, 22 Apr 2022 07:42:57 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=suse.com; s=mimecast20200619; t=1650613376; 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=2v/MNsNuzkVYIEoz5eADDNxkPOm1I9eKIGut1dkIxvs=; b=DVqw1uggu3qA05T+vpuIzvy95+iz4w8N6BgHwh6QMCW8jXNGbiOMlry5SKMax/s3GkPhDu NZLU9y8+RZK+JDIbfcDIu0w8Fgm5RZS6PIC3TixwITw1+LE8W7IjnAEKOH2TaJvLHBhY1q Oo009da95PKg3Jb9paM3wcw4d1Ed8Gw= Received: from EUR05-DB8-obe.outbound.protection.outlook.com (mail-db8eur05lp2112.outbound.protection.outlook.com [104.47.17.112]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id de-mta-8-LuZF-p7TNbyQXseGcQ4pmw-1; Fri, 22 Apr 2022 09:42:55 +0200 X-MC-Unique: LuZF-p7TNbyQXseGcQ4pmw-1 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=GufyAC2FKqbJ7EC5DVO2KrJff+pJshxVTk1sA8KW+k9jg0H/b/wgYLem7RU1DOB9lx85oreHVo83+cgadpmftAwBwq4KoSxwi7iLqz78lpglT/fW0knix1CpHhxEJtgDsB2V7igCpUVodkgtNMVQy47Mxpu+oYo3sFGUxsjqJkbyZW4RS1GIf8kA2SrsMTfhxdfDjtHgpLyKP6b6oIe08rLt9Tj4Du7VKDaLqADWzj8RN3WiJtv/VFmP0Sixz0C8aZhRZ/Do75GCYQbK40ovnR5gCv1nHqS+g3o9RyUsKE68EE/fcOxpPvHa43Ia1h2zEzREBN3p9Dd02FyvM64zLA== 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=wmGNSSj/xLPzQ8uC52/s563mSFa/9dt+8/cqvLnx7CE=; b=W+CAv9gN9C2kR4D+BcX4JIPNj2oB6tZzLOSjbqo9UMzNVuqdxgc2BNt6RzlK4q2CwLvTElP4p5Zrl9RKHDg1Foi/2Q7hx9wYXca+gIlG79KgInHVambNJUa5hmUsW+loWHOsnAEeU4baPZpqmvVf1uavfOnL88NbB0oCVIMVU7A64qxmGPKcm9BVAKc2tAdyjBIDCvXlyWhdYK5fzLQ7utcaxWA54ubHqk4DcMdkvzdd+R2PjR/IkIDz7sSyzDbM7RvgtZdIlgtvKBaywY4QLEZ3x4KnNLKJuuukk/oDH3t/UFW8BW3xCUhXPYqJW4eUaksEKHqk0ohYnM2/UK2KLw== 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 AM8PR04MB7251.eurprd04.prod.outlook.com (2603:10a6:20b:1d2::23) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5186.14; Fri, 22 Apr 2022 07:42:54 +0000 Received: from HE1PR0402MB3497.eurprd04.prod.outlook.com ([fe80::9974:fd5e:e3c0:14dc]) by HE1PR0402MB3497.eurprd04.prod.outlook.com ([fe80::9974:fd5e:e3c0:14dc%3]) with mapi id 15.20.5186.015; Fri, 22 Apr 2022 07:42:54 +0000 From: Geliang Tang To: mptcp@lists.linux.dev CC: Geliang Tang Subject: [PATCH mptcp-next v14 1/8] mptcp: add struct mptcp_sched_ops Date: Fri, 22 Apr 2022 15:42:49 +0800 Message-ID: X-Mailer: git-send-email 2.34.1 In-Reply-To: References: Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: HK2PR04CA0087.apcprd04.prod.outlook.com (2603:1096:202:15::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: a7d54593-29d0-48b2-a0df-08da2433b5fe X-MS-TrafficTypeDiagnostic: AM8PR04MB7251: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: 3cMjnBl4ZdmGcOAgzruJiMcW3uwAN8YC8+jercbX4wUPd5odYctJzHMuC77feHZVzRIvLP+R7pD8UlzZZdlVw6o78GRzIyv2SA5hvOv0XuXl3v3fOvpawbbjLn3XVoBFUleDduG0bIG0JLXA8spFW7oRXLeB0rk4Q3n48WcpR2u4juuFzR/i4mbCsf5+jqM0hKQYEJzvKUTGE8NnTK+b1Oy8EKnWUYpSJhroPhbpZZ3lbPHJfhxfNrbFc+/PoJGBVpz+LHOmXXu8sQMODreq6vgvzy9cW85BnKUdjcBGp4mEPye3et9gnb0aBn93g6Ty4bmW0H/98nS1QIZQ45Fp1sEMvsuWaKW8FOItmf4sqTKxPPOmGjGpV9d6Bt6ZBhbkWDCq/NyrSlzvImHtjRoXBu61R52UGjgnECZGOefNLVLQtxvUM6XCDxOgAIAZ22lrUL15lylXNwdCrRhlhd8WUon/XltPDtUuyWhXGO1wBhIxk4bWPdTUQT28yBJo9wCZjMj63qt06oSTUmIJq1PPJKDq9e/0Dn5ROO60Gupkbw9DMvc3d0xdY5ZWG2BlHUY7ohEPnKewD4Uge44njoC6hmmwVSkR2+SRTw3F/m09IlZ8W2vtepES5IZ3FhkfjNleYWXjGjV7aVPW8WLlk71db0btBD3HgaSo9bgLOPEk4G97fK8S7kfG8c9Yrev0OYfv 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)(316002)(6916009)(86362001)(6512007)(6666004)(2616005)(6486002)(6506007)(508600001)(38100700002)(66946007)(26005)(107886003)(186003)(66556008)(66476007)(83380400001)(2906002)(36756003)(5660300002)(8676002)(4326008)(44832011)(8936002)(13296009);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?o8Nub0B4DtJaOCnsATlwuGsNNyI91zwbS1pY73e0odzaUCluz2zGvhNrq9+H?= =?us-ascii?Q?llKIX0kbRe1XkAZQ4uFbT1dulQER+qTyvcbg3jQj8TrrxoYjJtvavT0PXfbe?= =?us-ascii?Q?bzSv4ZSzlSuiKNwPXCTmjYRsxXCqN3w8WEakQADyWKghinREbHesOPrS08AA?= =?us-ascii?Q?rYfk7w7klv5XTQ+PtPdKjiZXblFFqr1YB4PfSk5qT2Vgm77mstEU9H0hFz4p?= =?us-ascii?Q?PfoCJTXeCotk1etVTMXzP1zvpg9hhcuanWoc09mQoD7dn+PR+iQM/zJt7ATr?= =?us-ascii?Q?sLaWnHjNlRBxdr+ra5jsffJcAAKBqXc8FSqtvTVhsFC/CSECM8hIL9oBD37E?= =?us-ascii?Q?UJWe61bOew9HyK3yiXklJerwEMM8GpbcqjFONJ2sQRtRO3eIL1Xux/zea5tR?= =?us-ascii?Q?ZvpNlQir+I9pyGl2AXouLRBGefk2qyWJU5MkKUV/fmEahmvCo2V0S4H4CEzR?= =?us-ascii?Q?X9/LjJ1GgdVcCVOax6WtNMXBMZXJxZaZIVMKkQqjNehD2iUsapfOuhxGh111?= =?us-ascii?Q?ECZrVUqpAnTXu609QRJQDapfo9gpSLrZt6oYydmStB0md8uYNyv5kjcM+5SY?= =?us-ascii?Q?yQrz1+kOnRVvN9APTGPQTtUbfMacky/LpReNztYUcTvDzaQ2/PUZqQ4gfcwi?= =?us-ascii?Q?c79kFjgC1VcqbWBR+IEJ+tEnGork5rqpQO5fMByzLKYr1hz/9TraUv8CHIGm?= =?us-ascii?Q?5HcNAtd6hxB8tIinXLi0CKfue0uYSEwowouRVM3n3/ESuDgmP8cgh6LscwRl?= =?us-ascii?Q?qn/5tNVb5iLpTDXx0Lw3TBTkjua46laeLpSxO0kf7dRRDuMZr0UO1BXUp2IC?= =?us-ascii?Q?ikRuLVeZ7Kh0neyfV51CAYUmFANC+UKmmppraAxDBvBfAH9ZNr+qM1KYENEH?= =?us-ascii?Q?azhmoG+Vq5wZ+dqKuM5Q7HlQjYu3S/wp4vPrAx0vNTwU8kngOcKI9VvtGZx2?= =?us-ascii?Q?opsnQwNQ5+g3yxWn+Ld5sTf76NBFl/GNqXndIZ6jHg7vkuoY2uU8GIoewntd?= =?us-ascii?Q?1O6a4R3zuCB06YBGGbFy3xrW48lISVpStpwV8q+ECBtZpgdnkJ2Tk/Ljl4l+?= =?us-ascii?Q?qX1R+tlTEHd+c67iYndSYgfBNq6ODohaJaNfgoKY08zKB/RBH5215eiEACYe?= =?us-ascii?Q?qIS5YWg5tghz8sRar/2Xio3jD9Umq6xgR494HXIyM+wMxiNJeMpXI/rMdiDy?= =?us-ascii?Q?hdB4EOotKG5kPUHL68KMZD1QiTsnLOsPPhTLQTanO56Hl+xtIXA1LavhnK90?= =?us-ascii?Q?uFUYWpdk8YVzVjHWg9a05HbDc6bSx5lSIKXGWPAersyQ4hP8wpn/BHCZM7xH?= =?us-ascii?Q?ueVYBioTfXuplhtJFlKE5JsKawEeua7UjPD3ZEkSI/fpZixR2RaZ1uUFjTmf?= =?us-ascii?Q?Smxc9AsOamhjXM7leLfDVu3fAl0wTaUTxVg2WJKhcOi6nGpRfbvkgyN9VJ2l?= =?us-ascii?Q?tSe5Oqh0WPhP8VSxmxmiFLGwPc8naJM7qjihkoUmJ0lXdGJ9ByVp1MZBCSNg?= =?us-ascii?Q?ZSzRXiRKCWixkKVpjq7XhpLUfKQwS/FaLyJ3HyexvoGMN4KDl0n3HhQTpVX5?= =?us-ascii?Q?tfIb4V+yaNxXKOkIxaSqt1rmkxdftKqpuwgOhAgKyX1kXbmeDq+/+lEKXv0H?= =?us-ascii?Q?67ziPxCWAd7QqplDECdrbeOCGSXd20kJLK7irbKNrs9alJIE25gYI17TvGT7?= =?us-ascii?Q?QPWsfsdOE5k9bFaVN+UIRrl/JPzlPJAL1HF5MiYgasz266Xm9+IBzJ3rF97g?= =?us-ascii?Q?FL53KCMZqIuF8mCb1WY+cUK3qWxHT+Q=3D?= X-OriginatorOrg: suse.com X-MS-Exchange-CrossTenant-Network-Message-Id: a7d54593-29d0-48b2-a0df-08da2433b5fe X-MS-Exchange-CrossTenant-AuthSource: HE1PR0402MB3497.eurprd04.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 22 Apr 2022 07:42:54.4297 (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: +STuGXDB5Wc6EXXdIKWIhkeRY4sJ2td0z4XXpAPzBTo81D5zye8Qw49+WloPmIAwGEtqOuq2C3KZB6yCXVqLHg== X-MS-Exchange-Transport-CrossTenantHeadersStamped: AM8PR04MB7251 Content-Type: text/plain; charset="utf-8" This patch defines struct mptcp_sched_ops, which has three struct members, name, owner and list, and three function pointers, init, release and get_subflow. Add the scheduler registering, unregistering and finding functions to add, delete and find a packet scheduler on the global list mptcp_sched_list. For supporting a "redundant" packet scheduler in the future, this patch adds a flag in struct mptcp_sched_data named call_again to indicate that get_subflow() function needs to be called again. Signed-off-by: Geliang Tang --- include/net/mptcp.h | 19 +++++++ net/mptcp/Makefile | 2 +- net/mptcp/protocol.h | 3 + net/mptcp/sched.c | 56 +++++++++++++++++++ .../testing/selftests/bpf/bpf_mptcp_helpers.h | 18 ++++++ 5 files changed, 97 insertions(+), 1 deletion(-) create mode 100644 net/mptcp/sched.c diff --git a/include/net/mptcp.h b/include/net/mptcp.h index 877077b53200..967a3180e657 100644 --- a/include/net/mptcp.h +++ b/include/net/mptcp.h @@ -95,6 +95,25 @@ struct mptcp_out_options { #endif }; =20 +#define MPTCP_SCHED_NAME_MAX 16 + +struct mptcp_sched_data { + struct sock *sock; + bool call_again; +}; + +struct mptcp_sched_ops { + void (*get_subflow)(struct mptcp_sock *msk, bool reinject, + struct mptcp_sched_data *data); + + char name[MPTCP_SCHED_NAME_MAX]; + struct module *owner; + struct list_head list; + + void (*init)(struct mptcp_sock *msk); + void (*release)(struct mptcp_sock *msk); +} ____cacheline_aligned_in_smp; + #ifdef CONFIG_MPTCP extern struct request_sock_ops mptcp_subflow_request_sock_ops; =20 diff --git a/net/mptcp/Makefile b/net/mptcp/Makefile index 4004347db47e..702b86e8ecb0 100644 --- a/net/mptcp/Makefile +++ b/net/mptcp/Makefile @@ -2,7 +2,7 @@ obj-$(CONFIG_MPTCP) +=3D mptcp.o =20 mptcp-y :=3D protocol.o subflow.o options.o token.o crypto.o ctrl.o pm.o d= iag.o \ - mib.o pm_netlink.o sockopt.o pm_userspace.o + mib.o pm_netlink.o sockopt.o pm_userspace.o sched.o =20 obj-$(CONFIG_SYN_COOKIES) +=3D syncookies.o obj-$(CONFIG_INET_MPTCP_DIAG) +=3D mptcp_diag.o diff --git a/net/mptcp/protocol.h b/net/mptcp/protocol.h index f542aeaa5b09..18f8739bbf9c 100644 --- a/net/mptcp/protocol.h +++ b/net/mptcp/protocol.h @@ -621,6 +621,9 @@ int mptcp_subflow_create_socket(struct sock *sk, struct= socket **new_sock); void mptcp_info2sockaddr(const struct mptcp_addr_info *info, struct sockaddr_storage *addr, unsigned short family); +struct mptcp_sched_ops *mptcp_sched_find(const char *name); +int mptcp_register_scheduler(struct mptcp_sched_ops *sched); +void mptcp_unregister_scheduler(struct mptcp_sched_ops *sched); =20 static inline bool __mptcp_subflow_active(struct mptcp_subflow_context *su= bflow) { diff --git a/net/mptcp/sched.c b/net/mptcp/sched.c new file mode 100644 index 000000000000..c5d3bbafba71 --- /dev/null +++ b/net/mptcp/sched.c @@ -0,0 +1,56 @@ +// SPDX-License-Identifier: GPL-2.0 +/* Multipath TCP + * + * Copyright (c) 2022, SUSE. + */ + +#define pr_fmt(fmt) "MPTCP: " fmt + +#include +#include +#include +#include +#include +#include "protocol.h" + +static DEFINE_SPINLOCK(mptcp_sched_list_lock); +static LIST_HEAD(mptcp_sched_list); + +/* Must be called with rcu read lock held */ +struct mptcp_sched_ops *mptcp_sched_find(const char *name) +{ + struct mptcp_sched_ops *sched, *ret =3D NULL; + + list_for_each_entry_rcu(sched, &mptcp_sched_list, list) { + if (!strcmp(sched->name, name)) { + ret =3D sched; + break; + } + } + + return ret; +} + +int mptcp_register_scheduler(struct mptcp_sched_ops *sched) +{ + if (!sched->get_subflow) + return -EINVAL; + + spin_lock(&mptcp_sched_list_lock); + if (mptcp_sched_find(sched->name)) { + spin_unlock(&mptcp_sched_list_lock); + return -EEXIST; + } + list_add_tail_rcu(&sched->list, &mptcp_sched_list); + spin_unlock(&mptcp_sched_list_lock); + + pr_debug("%s registered", sched->name); + return 0; +} + +void mptcp_unregister_scheduler(struct mptcp_sched_ops *sched) +{ + spin_lock(&mptcp_sched_list_lock); + list_del_rcu(&sched->list); + spin_unlock(&mptcp_sched_list_lock); +} diff --git a/tools/testing/selftests/bpf/bpf_mptcp_helpers.h b/tools/testin= g/selftests/bpf/bpf_mptcp_helpers.h index b5a43b108982..de20fbdb6d98 100644 --- a/tools/testing/selftests/bpf/bpf_mptcp_helpers.h +++ b/tools/testing/selftests/bpf/bpf_mptcp_helpers.h @@ -6,6 +6,24 @@ =20 #include "bpf_tcp_helpers.h" =20 +#define MPTCP_SCHED_NAME_MAX 16 + +struct mptcp_sched_data { + struct sock *sock; + bool call_again; +}; + +struct mptcp_sched_ops { + char name[MPTCP_SCHED_NAME_MAX]; + + void (*init)(struct mptcp_sock *msk); + void (*release)(struct mptcp_sock *msk); + + void (*get_subflow)(struct mptcp_sock *msk, bool reinject, + struct mptcp_sched_data *data); + void *owner; +}; + struct mptcp_sock { struct inet_connection_sock sk; =20 --=20 2.34.1 From nobody Thu Sep 18 08:11:42 2025 Delivered-To: wpasupplicant.patchew@gmail.com Received: by 2002:ac4:a898:0:b0:4b1:af33:c52d with SMTP id z24csp234527pid; Fri, 22 Apr 2022 00:43:11 -0700 (PDT) X-Google-Smtp-Source: ABdhPJzaZDhATTQ1oM7PfIxzyuB9F1SlB8g3Eh4J1d+AYv/O46M4ZSewJyNbSNzKnFap95egV3Vi X-Received: by 2002:a05:6512:c21:b0:471:9935:f8f2 with SMTP id z33-20020a0565120c2100b004719935f8f2mr2225898lfu.650.1650613390953; Fri, 22 Apr 2022 00:43:10 -0700 (PDT) Return-Path: Received: from da.mirrors.kernel.org (da.mirrors.kernel.org. [139.178.84.19]) by mx.google.com with ESMTPS id p26-20020a056512329a00b00449fff2828esi6154987lfe.528.2022.04.22.00.43.10 for (version=TLS1_2 cipher=ECDHE-ECDSA-AES128-GCM-SHA256 bits=128/128); Fri, 22 Apr 2022 00:43:10 -0700 (PDT) Received-SPF: pass (google.com: domain of mptcp+bounces-4847-wpasupplicant.patchew=gmail.com@lists.linux.dev designates 139.178.84.19 as permitted sender) client-ip=139.178.84.19; Authentication-Results: mx.google.com; dkim=pass header.i=@suse.com header.s=mimecast20200619 header.b="agGZMy3/"; arc=fail (body hash mismatch); spf=pass (google.com: domain of mptcp+bounces-4847-wpasupplicant.patchew=gmail.com@lists.linux.dev designates 139.178.84.19 as permitted sender) smtp.mailfrom="mptcp+bounces-4847-wpasupplicant.patchew=gmail.com@lists.linux.dev"; dmarc=pass (p=QUARANTINE sp=QUARANTINE dis=NONE) header.from=suse.com Received: from smtp.subspace.kernel.org (wormhole.subspace.kernel.org [52.25.139.140]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by da.mirrors.kernel.org (Postfix) with ESMTPS id 66BBA2E0CD8 for ; Fri, 22 Apr 2022 07:43:09 +0000 (UTC) Received: from localhost.localdomain (localhost.localdomain [127.0.0.1]) by smtp.subspace.kernel.org (Postfix) with ESMTP id EFEED23D3; Fri, 22 Apr 2022 07:43:07 +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 1204A23CD for ; Fri, 22 Apr 2022 07:43:05 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=suse.com; s=mimecast20200619; t=1650613384; 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=+iyedV8b3iohtihKMOBwN9sqoDXzbUxgUG2rxbr9/I4=; b=agGZMy3/a/DCtHp97hRTa3i4ouShyOwMN6tWyZXv/M7BVPLIHnnBETKA3Ngb0wM3OHQWv1 utg0U5inHlXOafHO1ITl4jIBOK1ZRaFmLl6XF39CpktMsMka/P6bHFSjANniqRC1TLlOx8 BlI9MILu30orJ0hMwGrZ723IDQ8S0TM= Received: from EUR05-DB8-obe.outbound.protection.outlook.com (mail-db8eur05lp2111.outbound.protection.outlook.com [104.47.17.111]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id de-mta-37-hdeywMLdPG-ro39ncM7Mug-1; Fri, 22 Apr 2022 09:43:03 +0200 X-MC-Unique: hdeywMLdPG-ro39ncM7Mug-1 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=VqU5M86UuCQ67SVeFszBNvXkRPYspMRj3XnDYzoMPscdmh2BrxBX7MAifRoWo6Iu4Qk4+/Oa0VDTco9gbmSMNGRuihlOLuRYXTWNHL7hhPDFwpp7ehIi+O8J4eIZWYlP9SF6lUU/M/ZZst/IIw2DReFEH22Df/NSRg3YNb+nH7WGBICaTX5zQLLDrQMxvaMf8CnzPEo50bz0OlSphrQuqdK+D3wHkk3IIZxTr6uv41COZhwp1NmGPyMYm0iLN38fXzWISnouZTTu4ga8RCM2oAIAV5wCpYXmh4H0xT8rp7GbXgF5wEH7ELNeb6vPUwqJgtqDhYtiGdcWa3VfOF28CQ== 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=roxgSlYhLfib1/V8Bbc8Ung4U00p4xdnvPFxXpts5hg=; b=KRAML14s2sUw+8lh7UlAxmUqcXbRNBmgDaCOQtxQDT4pqXb1eydDst7t9s0KuJcYTL63m8DNauyN8L8ifMOTz+xj/XwTOKIdEPhgZ0ZRndbOCTObStttfMklcw/kfPA/295lec0x9Ehuhxao+zOZpfcsllIxYQ0cv7tKi/+VlUEYHaEwju0LROEETdfTo2mt9/o132ZAR+yowEqbEapBWQGZgu6a5MqZZ5DK8S0R0mvHi0ZXV4/xlWT1UsAqnT/dnU2kaVxiifAAtYkgoGdMhnP6+CXPX4kwoRs16URNnMWwAYyODU6H/sW6vF/NFMO4sXJ6or11bXlBDEMqmlH9kg== 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 AM8PR04MB7251.eurprd04.prod.outlook.com (2603:10a6:20b:1d2::23) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5186.14; Fri, 22 Apr 2022 07:43:02 +0000 Received: from HE1PR0402MB3497.eurprd04.prod.outlook.com ([fe80::9974:fd5e:e3c0:14dc]) by HE1PR0402MB3497.eurprd04.prod.outlook.com ([fe80::9974:fd5e:e3c0:14dc%3]) with mapi id 15.20.5186.015; Fri, 22 Apr 2022 07:43:02 +0000 From: Geliang Tang To: mptcp@lists.linux.dev CC: Geliang Tang Subject: [PATCH mptcp-next v14 2/8] mptcp: register default scheduler Date: Fri, 22 Apr 2022 15:42:50 +0800 Message-ID: <5ce27e38b2b13bb5ee1f9be265494912a40a7443.1650613135.git.geliang.tang@suse.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: References: Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: HK2PR02CA0186.apcprd02.prod.outlook.com (2603:1096:201:21::22) To HE1PR0402MB3497.eurprd04.prod.outlook.com (2603:10a6:7:83::14) Precedence: bulk X-Mailing-List: mptcp@lists.linux.dev List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: 1dfafec3-f9d3-4c86-8fc8-08da2433ba74 X-MS-TrafficTypeDiagnostic: AM8PR04MB7251: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: Ar0I/O1P0u/3eHXCSWwZWhvuj6WFOKpWdckLYF5jr7/ljxk9wf37vFoPdnm4JpTexGjutkDUaGcDywlJqfCYbY5st+tdl0ju1SXvGZjq4b8NcTDjOVN/4kBQQST0Nzo0m+bjZzrq943XwKofY9AFpdEAdF4yw3zBHfAcINl3qGjr+0p448qhsT6ZHdfszP2d08atecYy+8v4JfNwvY3Wnej9E5Wz9lAYFh8XmPa18PhChGPSp6w5C11hEopQdQkp84aTEqt0I8fLaIDMJn1C+Tf9pUqhY4j1MBgwzH9O5l4BwOQ1XOUrxSEk4xa0VHMyfPBoIq7VmrhB2X8aFgmzRBwdDPuZrjYMiAdPBQkgDdfLAeZ30qSDMetDzztgFRCLstDi9N+FO+/1FD6G14W9fcdnbGT2Mhx80y6PjPnzVHez1ZNo4/a0LPNz9yjt/zLa7rAb70WIw+QTHxgz+fj5aIgFl3+rBxEVOXEENq/s8yCfeNbIqze+zZaOV04wCNDlDLbrH2swKQyrws2si03T/MDJznGkxLzQKh+UgQ8Fs95pYbOIoHWLC/j1Ue5syCN3fZV4HWKRQ7jqGjNdH9eT+qVIGm4uLG4Hd4nK7YGJx9xZ6qCZC91Dsa0zwuAGbZZlgk1VbcTobcXoBOgI+ViCysMmBGM7p+O9NhXnWMEsh7zQ9DZYEn9JHX6FF/mb2F9C 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)(316002)(6916009)(86362001)(6512007)(6666004)(2616005)(6486002)(6506007)(508600001)(38100700002)(66946007)(26005)(107886003)(186003)(66556008)(66476007)(83380400001)(2906002)(36756003)(5660300002)(8676002)(4326008)(44832011)(8936002)(13296009);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?cTuEAKQncKEHoLzHBNIKd3fs2pt3b+cNQDz9I+SkvChkyCxkSxuZVcg6eE/W?= =?us-ascii?Q?kicxOJdiglD+msMEUOwiM7B6qIiPZoC2/C0ULJVghnAevoUZcez4mdjT7rKj?= =?us-ascii?Q?4eG/ZZGWJLqSWfR3X35Xv9aJWJBg6HdqXGlwc7ONVc55kwnALc2OqREXa7I+?= =?us-ascii?Q?lpMWc3rbpfnxeV3quy166XrZnxxagW/jJSPmjuJMgxecHJ+6ojhAdy8Xl6YQ?= =?us-ascii?Q?U0VkcqTixKnzgf1o+4XlADmri/BZiFqlPFBww1xkmKzoUKoOafYbIbZmiyUe?= =?us-ascii?Q?bQjNygNBoHsabR6+MUmQg8wwX51BbkySSknq6zSIMsCCHlIuY11xfl4QAY7M?= =?us-ascii?Q?hC4ub2Or5RdPS6GLCPKXvDQG30AMMnFhQddh3A+1npMDEAzkFQIox/zpE+8H?= =?us-ascii?Q?xl5dyAwhnG9wGm42Llt/UdPDtUjCerIt368zyYpLobvuIbjVu0K8eROXgUOV?= =?us-ascii?Q?kTvafCggNN1dwdszpgcQmC1yMec23Ift3QrdesqHFBc+JepTRmLYmYEzuqpt?= =?us-ascii?Q?j1j+zcCvFE5iDxVGNtplgED5wnyakJF8NFJRyH7WPfccvBk+X/V+p4r5DD9K?= =?us-ascii?Q?8tJyQKWKpbtVWAHUE6fO1LnUFDoL/2R27GoSYml1mFjI1Vh0FFoSyu2aGKk/?= =?us-ascii?Q?p1YYIW0nfTAOkbaJ+2pIjlDNVSWeLqY6YoTA//dZDcQlAD0MJRDFA//eFrBC?= =?us-ascii?Q?pfxWEfxIpXqShqnk9N9VTufCB/ze//SWAZ5An5jdyjR7X9AqrSi/cC9rUXwn?= =?us-ascii?Q?w/MdLxuzQ6HtOSLdHTJSx6I84WDDFbIS8VqaB7Hh/Xb1yjCEULfHw/sI6yec?= =?us-ascii?Q?jGCplFtmugEpEoFN8I4wfYN/V346k3mRai2+wxEcD4FLgoEnc4k1W53YJMKA?= =?us-ascii?Q?fV1sbEsDw7e9f40AvsnAUlDMcJtz+lGcn70sWDLhxBCvRlSX4ar3rLtIBYT9?= =?us-ascii?Q?QAK5k71WtwZRyzi6F9je/DwdPHBIt3knyBoDE9oxxi8iAd5tz/honq9kOe52?= =?us-ascii?Q?/hXqPQpau/HIVpRWkNOukAQ5XA/uNTjLcY0wbjkILGLRefAMizT5277yU/Hg?= =?us-ascii?Q?PnMvQd03Fj868uOU7HzDBEnP4RUO/6KXNwRhaSqXB8YQtqifzj8oqCmiINl6?= =?us-ascii?Q?jq9JnUKaC6uLVmg8RPmZ7EBUEM4sDUzbbIUKd3F3OuF0VGSXAWckuoionj4O?= =?us-ascii?Q?BXD0DQiIU80wL7H5udAkVN9KbK05tG1C9mIVkbcViBlNxNj3m0OS/KJNMypY?= =?us-ascii?Q?XXLzwvNhvvJnOGC4ffrwLQkY8fGeFA0MdMf+kS0ZzAP5aBfV9LkcbxAkYez9?= =?us-ascii?Q?IztyKH0ztK6L1ArPnPSRFYpp/+XjyxuU0hPDHk/EzFPvajXTKO0xpNr/k6DU?= =?us-ascii?Q?w0+EfbCw0M2yvvH4CZiG1p0KdasoY+PblkTWoVbPKo2ATvHD1gpZJVCuXNpL?= =?us-ascii?Q?NNprQHLwmTjgHflNGxlWewJa8kgKArrRlmDneRQCFGBbrPKftayHjqGirO4z?= =?us-ascii?Q?OSLMy5V8RtenR769oHQel+q4ZhNCbp4QkVQsaSxGOrf3D2Vg3ZYa/g2OYYwk?= =?us-ascii?Q?y2rW03SnNnMulDvCO1OTVPTT/m2Rex/oCmT8IsGThYGP/gOzGMnx0RrWuEbl?= =?us-ascii?Q?oFoCsRPNv4u4n9yj37cnwFFVXDzZsySfyKTpJnRAC/Exv35jdCORmBOgLBKF?= =?us-ascii?Q?qP0Tn0J1LeW7IqHzpJJWhleCaAmup9MmvxYUBLydJTJh/JDEMT8ZOSmr/b6n?= =?us-ascii?Q?/BChbTtsNWtCBLKmgXyrpPI/wjSba2I=3D?= X-OriginatorOrg: suse.com X-MS-Exchange-CrossTenant-Network-Message-Id: 1dfafec3-f9d3-4c86-8fc8-08da2433ba74 X-MS-Exchange-CrossTenant-AuthSource: HE1PR0402MB3497.eurprd04.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 22 Apr 2022 07:43:01.9135 (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: 7qvheBQUTO3CEoYD6k+ofNxrIDR7qTTjf9FnWYSeLMlVYqOv98iAGMOFkaZrTdlC/3J+Y7bcY+7is2ixm5lYFA== X-MS-Exchange-Transport-CrossTenantHeadersStamped: AM8PR04MB7251 Content-Type: text/plain; charset="utf-8" This patch defines the default packet scheduler mptcp_sched_default, register it in mptcp_sched_init(), which is invoked in mptcp_proto_init(). Skip deleting this default scheduler in mptcp_unregister_scheduler(). Signed-off-by: Geliang Tang --- net/mptcp/protocol.c | 9 +++++++++ net/mptcp/protocol.h | 3 +++ net/mptcp/sched.c | 14 ++++++++++++++ 3 files changed, 26 insertions(+) diff --git a/net/mptcp/protocol.c b/net/mptcp/protocol.c index 6d59bfdd6bbd..3f2e1f18e970 100644 --- a/net/mptcp/protocol.c +++ b/net/mptcp/protocol.c @@ -2251,6 +2251,14 @@ static struct sock *mptcp_subflow_get_retrans(struct= mptcp_sock *msk) return min_stale_count > 1 ? backup : NULL; } =20 +void mptcp_get_subflow_default(struct mptcp_sock *msk, bool reinject, + struct mptcp_sched_data *data) +{ + data->sock =3D reinject ? mptcp_subflow_get_retrans(msk) : + mptcp_subflow_get_send(msk); + data->call_again =3D 0; +} + static void mptcp_dispose_initial_subflow(struct mptcp_sock *msk) { if (msk->subflow) { @@ -3805,6 +3813,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 18f8739bbf9c..e9736dfb9e27 100644 --- a/net/mptcp/protocol.h +++ b/net/mptcp/protocol.h @@ -624,6 +624,9 @@ void mptcp_info2sockaddr(const struct mptcp_addr_info *= info, struct mptcp_sched_ops *mptcp_sched_find(const char *name); int mptcp_register_scheduler(struct mptcp_sched_ops *sched); void mptcp_unregister_scheduler(struct mptcp_sched_ops *sched); +void mptcp_get_subflow_default(struct mptcp_sock *msk, bool reinject, + struct mptcp_sched_data *data); +void mptcp_sched_init(void); =20 static inline bool __mptcp_subflow_active(struct mptcp_subflow_context *su= bflow) { diff --git a/net/mptcp/sched.c b/net/mptcp/sched.c index c5d3bbafba71..bd0beff8cac8 100644 --- a/net/mptcp/sched.c +++ b/net/mptcp/sched.c @@ -13,6 +13,12 @@ #include #include "protocol.h" =20 +static struct mptcp_sched_ops mptcp_sched_default =3D { + .get_subflow =3D mptcp_get_subflow_default, + .name =3D "default", + .owner =3D THIS_MODULE, +}; + static DEFINE_SPINLOCK(mptcp_sched_list_lock); static LIST_HEAD(mptcp_sched_list); =20 @@ -50,7 +56,15 @@ int mptcp_register_scheduler(struct mptcp_sched_ops *sch= ed) =20 void mptcp_unregister_scheduler(struct mptcp_sched_ops *sched) { + if (sched =3D=3D &mptcp_sched_default) + return; + spin_lock(&mptcp_sched_list_lock); list_del_rcu(&sched->list); spin_unlock(&mptcp_sched_list_lock); } + +void mptcp_sched_init(void) +{ + mptcp_register_scheduler(&mptcp_sched_default); +} --=20 2.34.1 From nobody Thu Sep 18 08:11:42 2025 Delivered-To: wpasupplicant.patchew@gmail.com Received: by 2002:ac4:a898:0:b0:4b1:af33:c52d with SMTP id z24csp234568pid; Fri, 22 Apr 2022 00:43:17 -0700 (PDT) X-Google-Smtp-Source: ABdhPJw2DPT9Ie52kkVC/RHdQQQ8R00s6AuW34Dc866tDfO6cd0LcCqR2typHoVGUkzkDAmoFxsY X-Received: by 2002:a05:6870:4149:b0:e6:8519:94f5 with SMTP id r9-20020a056870414900b000e6851994f5mr1380740oad.48.1650613397125; Fri, 22 Apr 2022 00:43:17 -0700 (PDT) Return-Path: Received: from da.mirrors.kernel.org (da.mirrors.kernel.org. [2604:1380:4040:4f00::1]) by mx.google.com with ESMTPS id q15-20020a05683022cf00b006055453f91dsi4335548otc.188.2022.04.22.00.43.17 for (version=TLS1_2 cipher=ECDHE-ECDSA-AES128-GCM-SHA256 bits=128/128); Fri, 22 Apr 2022 00:43:17 -0700 (PDT) Received-SPF: pass (google.com: domain of mptcp+bounces-4848-wpasupplicant.patchew=gmail.com@lists.linux.dev designates 2604:1380:4040:4f00::1 as permitted sender) client-ip=2604:1380:4040:4f00::1; Authentication-Results: mx.google.com; dkim=pass header.i=@suse.com header.s=mimecast20200619 header.b=hz64x2JL; arc=fail (body hash mismatch); spf=pass (google.com: domain of mptcp+bounces-4848-wpasupplicant.patchew=gmail.com@lists.linux.dev designates 2604:1380:4040:4f00::1 as permitted sender) smtp.mailfrom="mptcp+bounces-4848-wpasupplicant.patchew=gmail.com@lists.linux.dev"; dmarc=pass (p=QUARANTINE sp=QUARANTINE dis=NONE) header.from=suse.com Received: from smtp.subspace.kernel.org (wormhole.subspace.kernel.org [52.25.139.140]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by da.mirrors.kernel.org (Postfix) with ESMTPS id 65E0D2E0CD3 for ; Fri, 22 Apr 2022 07:43:16 +0000 (UTC) Received: from localhost.localdomain (localhost.localdomain [127.0.0.1]) by smtp.subspace.kernel.org (Postfix) with ESMTP id D48C123D3; Fri, 22 Apr 2022 07:43:14 +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 1BFD223CD for ; Fri, 22 Apr 2022 07:43:12 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=suse.com; s=mimecast20200619; t=1650613391; 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=JHCR1gwB/FHq4Vuttp5fTsIGltbWDGqZTP/keHv67Aw=; b=hz64x2JLICJc1A7wPtNUHNkJ1Zxp0uv6BUysUQRdutJxdRr/t19zpRbQ2eWcQHPr2N2Bmi Q+vqmdKGoivva46i1tq3gkuDP2EKOzATMTxIzlpykI3O/TlkVjmtrVyKQYCKl9KA8/Dflt NohS7SiXL9N57zO/qjEQ6zkmOoJAxF8= Received: from EUR01-HE1-obe.outbound.protection.outlook.com (mail-he1eur01lp2059.outbound.protection.outlook.com [104.47.0.59]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id de-mta-8-QPaHyDnDMLaEg__9iy096Q-1; Fri, 22 Apr 2022 09:43:10 +0200 X-MC-Unique: QPaHyDnDMLaEg__9iy096Q-1 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=RYBVrOUpGPDUl21zu9qsbC4L2MEGGA7dIhfApVvbeEijn68deI9MQBVjVrrOjNt/Dra5hde/mJsl5JflnEaiSVeAEObR4XfK6ZSU28V9bP5hK/RenKXyFrwGWedS0pLwG4Zii/JOKuMdtVLyqp2MDXodqfe1XBMLDcLorKLDGFYO4p0rVbVhcnLFqIuiEMa+oBNT41YZEOJLY1C+l3Ku/rpuFbjgDAYQbIyTE8l6JzJT859c8SwWHXksFMeqYueNj9pvlgAATCT5D9Nqh+p4CNA5JuI9F3LKlHXULJi3l/LEJml44rwF6Ow+znntZeaoV9Y+EmUB9yHTUXQyAAeFTQ== 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=Y2AcYBpWzxaxPOyELuqTU+jcmRnPt3BAg6eDmH1PLBI=; b=QjKwlhaJDqbhVkQfgwKgLTd8PRuZMWp5T4z2JfhObcSYwhj54Fqu3Jsm9nd+zSPB47yCC/MuVStBw/5Kp7S6V1PeleAWsqGHFhoBwBwU2vUCNwzK7zsgTyGGICLmrWnCd7pqaMKxt2wvWyRoN5aCS1JHfaefQPO/62dS//dHYAOzQ6jhpSYBIqPGIj3mZvAP3T7rPmmHW+SUJu03cjDyWO+Rj0XIG71fkXAvE0t6XEnApHPByDi3Y7CDuzGyisNQqZh2Z/kqne0af4GrhxQBYXLR4dXHfbmBMKsin8cHhhHSeiCdJe8TdoJA4qKIO/+qZoAuBPeMrDAA6nm1GkSfMQ== 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 AM0PR04MB5876.eurprd04.prod.outlook.com (2603:10a6:208:130::12) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5186.15; Fri, 22 Apr 2022 07:43:09 +0000 Received: from HE1PR0402MB3497.eurprd04.prod.outlook.com ([fe80::9974:fd5e:e3c0:14dc]) by HE1PR0402MB3497.eurprd04.prod.outlook.com ([fe80::9974:fd5e:e3c0:14dc%3]) with mapi id 15.20.5186.015; Fri, 22 Apr 2022 07:43:09 +0000 From: Geliang Tang To: mptcp@lists.linux.dev CC: Geliang Tang Subject: [PATCH mptcp-next v14 3/8] mptcp: add a new sysctl scheduler Date: Fri, 22 Apr 2022 15:42:51 +0800 Message-ID: X-Mailer: git-send-email 2.34.1 In-Reply-To: References: Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: HK2PR0302CA0008.apcprd03.prod.outlook.com (2603:1096:202::18) To HE1PR0402MB3497.eurprd04.prod.outlook.com (2603:10a6:7:83::14) Precedence: bulk X-Mailing-List: mptcp@lists.linux.dev List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: 8d573e0f-26ce-489f-1e82-08da2433bec9 X-MS-TrafficTypeDiagnostic: AM0PR04MB5876: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: GaCI4JQDxpcfxjH4U+uYvmRMLTsIMFaDsDsEE0ZFL53RCNSUh9WHOUU4W10Ogs8DaWOoG3CMz4/URVV57pCQC0gx6cYKjTXCx7t34f6nw/AgapVaMxr2sliYaOWFE97CZh90XaoEkIat/DNgU7LXdprFW4SexwT+A5p0oS75rlQ2sgCZyONv90OAVmrcjJLWpHKyoOcooSbhd4sMzap6+glnCMmFhbJIdSps9OwprR6WkEMqt5mfTyrKClsG7n1GJXFK4GYitqfQtes4Kir1HlYNzcY2feraX+mYnClVUnFoKUBMSqBiDwrsYBA7pVAnvSNbJUCKOlbIe8qrqyOkp4JqrB/IRCvdKsYP5LT7etwEjChtwBPWjvq9hkdqfzkSZy5rc40RM5jp/Bkq8FhbbTadP8rG5WVj4PFGsrlciFDWTSVrmuqF3lzPSLC4NZeuH6wMFTTBDwP45IvWr1HpJJb8qg3txXWgeOrQFJhtZWrSNd/j5dVRiC8HUI1cCiwxWv9iMPImUbqPuQiHqWcLM4RQr3SRyuj+u/wTi9uxjmViOYgDUr+iYLViCpLZwkvjZul7z+9e04iOg9Myb7jE/SK8joJVYYjE/KErbLZp11cajwYLfhGUdqyE91TDPbBwRZUc/RTxrCmEhk3fSHXsV0olA/OBgePns6Hdk8P/PUZiTnevAiMjQ0ixVMPU5QowVLFPrS/DS9vis8PpqjU1HA== 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)(508600001)(316002)(86362001)(5660300002)(6916009)(6666004)(8936002)(6486002)(44832011)(4326008)(38100700002)(186003)(2616005)(2906002)(107886003)(6506007)(6512007)(66476007)(66946007)(66556008)(8676002)(26005)(36756003)(13296009);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?Wc0jsXyvpX5MIW/Vizniy8eSQKIFiQGvmuC61V/lPYZA+MBhET+sp7DGLzba?= =?us-ascii?Q?fkIiML8501AhYot6CiFvK3qYddbqIpFfXBkuXvIP0/tzV5oZ6AlrJYgUc2iQ?= =?us-ascii?Q?Nx5hr3O3L5sqxhEQw+zwMHUoVdOT53IAwKIpge9JMUVZQ6a6xw7DDbW1Vsci?= =?us-ascii?Q?lYFzVTbR2YgNf5BglA8RsX+9dDI8ifb0+p8kGfGOG0aW9eGRi1meXDnsGQmS?= =?us-ascii?Q?NWH336OgftpO7z3enIzH693tufLn00nr3eSOqyWxlI9VXTQuNponQc30ViUz?= =?us-ascii?Q?a4u0MStmFmVbdIvS2yVYasddPxrfGUOz6DfsJlB46lpCFgR1QFMTHMAoaV5i?= =?us-ascii?Q?ZNMiEDWy2kLzaz8czukM6S8CHFMymu4UFQlnWwIN9xzPz8qRM3cXL7eptHeb?= =?us-ascii?Q?1lEjyooDdD3oRxf7DDRB55n6227nZc1s9W7lybo6BsdLgKEqele76l3MjJ76?= =?us-ascii?Q?IGWohKbLcpIJFV7OV0QWExrA6saGEB0x2rbzu547ltS5MoRS1FAULO7esu6W?= =?us-ascii?Q?eUkqg7B0162MzDQXcCob0Rwg6k/Yp/sTwVHlkLh1oDAYyeSf0ezjBNJ00Wg4?= =?us-ascii?Q?jidMuddr2VzG+bJYdEX6zVEBdhQzc67a5oIAeBNAMxcId5qWIzfbudv3D4+j?= =?us-ascii?Q?I07IhqM3Ktf9C/bcINhk8N3g/mipWeQsApyi5x3HaiaSsZnRilKmb95c6qpl?= =?us-ascii?Q?Zbt4Q4p1Koii57HNYgxiyFWXTscP8HC80ps0hnB5Y7Ew1pC9FAMrTDNRBykH?= =?us-ascii?Q?/3gvYbalPCOz6viXOXgVdUXXsl4K7J4Rh2t3/Oei3yPPoDkm87bR81eCTan9?= =?us-ascii?Q?e8LWAXhsUa1ONKlLfZSl8dt3V39ibnCzTa/XcLLky736tlGy9WJMXkHWttOV?= =?us-ascii?Q?nsfKvCSMm0K5uh4gLCa07fDxTfNf1T+0gjqSqwo4E4eIyyu4dFwFqP5hRiS3?= =?us-ascii?Q?OujHchEw+zy7wd5Idgu5hRLZeoDenGHeLJ2YT64i8un7wJ0hm2HTj6OsBIo8?= =?us-ascii?Q?t3VvQLSBFro2JkVjtI1DOiNDs0Sa576IrSxU6jlKt1lC14/PaqV+gYh6syC3?= =?us-ascii?Q?ML9suQbU5nWJ4wEfJxoP22by8fbE5BZRQHPZ5S/Uu5oUajQ8/mi+o4uMc+FZ?= =?us-ascii?Q?1u14+9xcokBPHVRPODSNzOPU9lBDUqFQHNj0fAdhcozxzVc8d7lxFRvXzNWN?= =?us-ascii?Q?zHM/mSnfLEa4Bv+l7dpf7I+SfqCjUhuMWx+p+jpKme1v8xmybFAwdW8dE/qz?= =?us-ascii?Q?wlyvclMebCZGwvtjQmEk0m7unTwHSEkxvBNlhK80ZLF2VxSQ4aqiowOaBI3M?= =?us-ascii?Q?Lr1sINnQnxX8PpZj5T3Edccs+x9ZMmqcEShuFLPaJB6eqbZd+AUroqfIWUEq?= =?us-ascii?Q?iU0Zgg7HNSEHU6s1nkD1hvIJx1vKKQJTAdNKJVPZHhTy+n+AYXw69BdtYvPk?= =?us-ascii?Q?K2b58w+06xhu6NUcnr938crvgMSko4Qjkc8zvqo4VfUuv6ad+hvRQHLzezBx?= =?us-ascii?Q?kL/4WVHmD1pVVBo2oeq4YCJCtxeMRLQTpiahKNGhCiMzzHx/WPgcYYp7k8KJ?= =?us-ascii?Q?D7SgxwJ4r34HVqnXhkTer4mB8fw/RlJcgUP3FdjyIa/AsFSPb+lzA5fVgQZS?= =?us-ascii?Q?TMtpp28nqBEWOaNLbHrhusaTbrJsu72ipg8Y0I4dg8ltxC5mr2TnDXAU225v?= =?us-ascii?Q?0W/vqKIh0PPUvB/GRo7kIOepLtPgPm/neCMigEsCz40tNDa41zLaqE/13X55?= =?us-ascii?Q?LCnv9/7B7V+l6+IcECkq+6zX+dYnxU4=3D?= X-OriginatorOrg: suse.com X-MS-Exchange-CrossTenant-Network-Message-Id: 8d573e0f-26ce-489f-1e82-08da2433bec9 X-MS-Exchange-CrossTenant-AuthSource: HE1PR0402MB3497.eurprd04.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 22 Apr 2022 07:43:09.1942 (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: /pPimH3AAqrcUFOdDQhpV56vG72rlWe2NjE7LbIZke3gSlx/vKbhgGh8Rk2Z7K0ESKYmxacWEsMwbbR/DCh6TQ== X-MS-Exchange-Transport-CrossTenantHeadersStamped: AM0PR04MB5876 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 e9736dfb9e27..0b17b4f7b134 100644 --- a/net/mptcp/protocol.h +++ b/net/mptcp/protocol.h @@ -596,6 +596,7 @@ int mptcp_is_checksum_enabled(const struct net *net); int mptcp_allow_join_id0(const struct net *net); unsigned int mptcp_stale_loss_cnt(const struct net *net); int mptcp_get_pm_type(const struct net *net); +const char *mptcp_get_scheduler(const struct net *net); void mptcp_subflow_fully_established(struct mptcp_subflow_context *subflow, struct mptcp_options_received *mp_opt); bool __mptcp_retransmit_pending_data(struct sock *sk); --=20 2.34.1 From nobody Thu Sep 18 08:11:42 2025 Delivered-To: wpasupplicant.patchew@gmail.com Received: by 2002:ac4:a898:0:b0:4b1:af33:c52d with SMTP id z24csp234678pid; Fri, 22 Apr 2022 00:43:32 -0700 (PDT) X-Google-Smtp-Source: ABdhPJxLDex69mzhUW+R7dR4NcXGF1hT3WPpws8DeO60TjykLtq/Ma2iSoseWybW0H+02DxwXFAs X-Received: by 2002:a05:6808:1719:b0:2f9:ab58:73db with SMTP id bc25-20020a056808171900b002f9ab5873dbmr1594283oib.201.1650613411866; Fri, 22 Apr 2022 00:43:31 -0700 (PDT) Return-Path: Received: from da.mirrors.kernel.org (da.mirrors.kernel.org. [2604:1380:4040:4f00::1]) by mx.google.com with ESMTPS id eh1-20020a056870f58100b000e62d007d9bsi2443051oab.311.2022.04.22.00.43.31 for (version=TLS1_2 cipher=ECDHE-ECDSA-AES128-GCM-SHA256 bits=128/128); Fri, 22 Apr 2022 00:43:31 -0700 (PDT) Received-SPF: pass (google.com: domain of mptcp+bounces-4850-wpasupplicant.patchew=gmail.com@lists.linux.dev designates 2604:1380:4040:4f00::1 as permitted sender) client-ip=2604:1380:4040:4f00::1; Authentication-Results: mx.google.com; dkim=pass header.i=@suse.com header.s=mimecast20200619 header.b="WDopnSz/"; arc=fail (body hash mismatch); spf=pass (google.com: domain of mptcp+bounces-4850-wpasupplicant.patchew=gmail.com@lists.linux.dev designates 2604:1380:4040:4f00::1 as permitted sender) smtp.mailfrom="mptcp+bounces-4850-wpasupplicant.patchew=gmail.com@lists.linux.dev"; dmarc=pass (p=QUARANTINE sp=QUARANTINE dis=NONE) header.from=suse.com Received: from smtp.subspace.kernel.org (wormhole.subspace.kernel.org [52.25.139.140]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by da.mirrors.kernel.org (Postfix) with ESMTPS id AEEE72E0CE7 for ; Fri, 22 Apr 2022 07:43:31 +0000 (UTC) Received: from localhost.localdomain (localhost.localdomain [127.0.0.1]) by smtp.subspace.kernel.org (Postfix) with ESMTP id E820523CD; Fri, 22 Apr 2022 07:43:29 +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 ED17023D3 for ; Fri, 22 Apr 2022 07:43:27 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=suse.com; s=mimecast20200619; t=1650613406; 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=I7/VNQhYVEGiM3jdLT6AudI6n0wpTmGsgD52ocyoOT8=; b=WDopnSz/ffvzO5wRoCghV9vyGxtUP7+09V4o7Ot9u0U21Xi8sXAXYAf/wzxV/Hxt9hzmPH Dn9SfbtdSfLe663fU/zk0tg2ILAE+5vxg9D6nm7K6e3ug187lTsCBnaRNZb5b0jFWaY1rS 99vfeKrJtJZITPZOhYPB0FTnQjsYDn8= Received: from EUR01-HE1-obe.outbound.protection.outlook.com (mail-he1eur01lp2058.outbound.protection.outlook.com [104.47.0.58]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id de-mta-35-FXIrlidxPkCBPD1U0YYbsg-1; Fri, 22 Apr 2022 09:43:17 +0200 X-MC-Unique: FXIrlidxPkCBPD1U0YYbsg-1 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=dfA9SxojGoucDqDidK3uCcLXTR2Ge9hHVNd7+c7IFhvZenwsSAexRvThfFCHuE5ImlkE41R847Wuc0sC+5zIXtjt5OrlEeN9XHFn31+f8jl1W6ZdVY9/OUFN9mYkhZ8l+S9+OTJS55J1sio381QHCvktQ/vX43GYqBX/+sF2kaSVHRY0dv88iiH14AwHAu1kjvPerL8n8BTPiM31aaGmHDyHogw7OWMQyWRGtwfOpbiakf+BiXJETbBO4AtHk+iunxCtgmFWlNGBb6l51t/b7K2ZiTGNm5LGkxjAsHt4OXzgyl7rHh+aeZYu09zg40bUQj197WIAI7W8YfNXSrqoFw== 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=GFZN7JSH5kMW6zV2st8JDT5sF62MTJxt4YFBaeIQNq0=; b=I957j8RaX0sIeXoxxicTxSzuZ+pl+nTcJYq6wyaE4tx5RgdRhdI5FFRNC2FDeaJLorJ/N229slK7jNNtUCKhmKFCV4aS/tO9IC9Ws9cvzI0R3U1CYfqznpsQCV0fL7rYjxwXyU+v+34AcvdlBFWjEPGMC1tMHkN0lWppRe9O8M5pl/pL7h+86Z0ZDdwHzrRBvuFNcs2UECdC+So6n4IT2uHp5s1y+DNTWIRFfMpOU+GUrv+crNdqKBjN6Iuj+ej3SlcPZyaOuTtI/iWatOWlc3oW0RYsO3U+xh3/e7tuEEGJCgmSwJUrHXvHM/py/tWOV+LWPo30vu9WvvfRYfiEzA== 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 AM0PR04MB5876.eurprd04.prod.outlook.com (2603:10a6:208:130::12) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5186.15; Fri, 22 Apr 2022 07:43:16 +0000 Received: from HE1PR0402MB3497.eurprd04.prod.outlook.com ([fe80::9974:fd5e:e3c0:14dc]) by HE1PR0402MB3497.eurprd04.prod.outlook.com ([fe80::9974:fd5e:e3c0:14dc%3]) with mapi id 15.20.5186.015; Fri, 22 Apr 2022 07:43:16 +0000 From: Geliang Tang To: mptcp@lists.linux.dev CC: Geliang Tang Subject: [PATCH mptcp-next v14 4/8] mptcp: add sched in mptcp_sock Date: Fri, 22 Apr 2022 15:42:52 +0800 Message-ID: X-Mailer: git-send-email 2.34.1 In-Reply-To: References: Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: HK2PR0401CA0002.apcprd04.prod.outlook.com (2603:1096:202:2::12) 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: 511fad74-68ce-44c5-fb22-08da2433c32b X-MS-TrafficTypeDiagnostic: AM0PR04MB5876: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: 6U68bIowyNMMuwCK07nWXlNbnDDJcYrv0wGtpCeHioNFGLuT+tFGZ6LkSf6hFuX5zPAFRVf1FLuVfiOnLfKfwWtUUuZAk19Cbcb2OW+UDS3PClJPsvorkQ3298K2b1ahq7h8fq1xt6BzE5RByK1pDBwwhqsngBh+wUb3RqtffMQeqqL/XIaiq6Y+5W+bHiHzCkqyaiaDIeEOGsIq04qJAxmqic8HoqM+/8SsQ4bg2kOduBUaETGt30syEuOQ4+qqS6EJECEGet+erMOGHPo4z+XeqYqTUb52ZHa4zz7i0L51QIojvjtFk2vZ08nWxFmR7yYpHgWwTWKa2cDmkYYooE7pzUo7Vb1WAIrEy0KGRFVAAD2xx+Sgjvwpe9EKAGhZLoIPImh6TaI9xXqC21jIJSbqOtTycMg6AvqqqJ4aKVtC634ewf9Ms/0kPUa4+jL1W/q5LqqlnuMXocXX0jnt/Kra5iL25Zriz5/Vh9R1EfyYpBsWD6+OLG/X0CWDY8Q/OXJAKIXED4QQPyee+FW3C4P1CksBsC7c5ZogdpsN56ecTe2DRKd4oFc66P0RJoeZPROfe9hOsh9KyoOh5QU1WAb2Q/AQU2VjRviTrEIb1Fot4piP3sKfODPYpVzFDnH0P8yeu3oVygQaZkMgbcK5sxrMH70515U3zU3Tz5mUF9rez8hgnePt17U8RLPFV3J1 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)(508600001)(316002)(86362001)(5660300002)(6916009)(6666004)(8936002)(6486002)(44832011)(4326008)(38100700002)(186003)(2616005)(2906002)(107886003)(6506007)(6512007)(66476007)(66946007)(66556008)(8676002)(26005)(36756003)(83380400001)(13296009);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?5pr61Kw0BapAn9OClXjrvHpwoYzkGovcmCWhtw+1ecuAoTYmN1T6FgpxgWDv?= =?us-ascii?Q?7J60ab8gZPWKsSnOcJDqfIJ4aQnXd4eP7Dz1oBbWrGhqlfdpcCqoe502aP5u?= =?us-ascii?Q?8FsrjgHkQJssrd624EeoLEaXXZMEgbC093eM0+VSllf5cKxDEIZ9UzMqY0EG?= =?us-ascii?Q?cFHtk0oIjDUCJcBZkuRJHEM4/oOh4AM8gnmMMcVWwBKEZV/uuBCEo9UeIOOn?= =?us-ascii?Q?aTIDBzGZdnQ5frWoqKwMLAcimKmv9t0+Lo16h2uxXDNDHjN6FWV/X4vwEFCr?= =?us-ascii?Q?Q1g34NMvIjBPaNR8IEqbo2wrtLFwOj1yDdsD2UlGfEtz8WqcWq4Cd5pF6XsS?= =?us-ascii?Q?xIvykzpRMiORsDz18nocnswp0UdIQfXPIboD7JpRxASTlfVgDhRHkTpnGueY?= =?us-ascii?Q?HZfvFYazX5CnJ7D6EKXw3fqGHrNRwekUw8C3MglCtuXNlw8GWdpoK6qhLY+2?= =?us-ascii?Q?Zmwx8oJsBRSyoD3rV8nHMjQ9af8A9joRGdv8qNpbr1ac8dTmPut/V0Sm4BMH?= =?us-ascii?Q?ymNQ1RA2ktj+pKqrYGW+pWqCndR2KelQdbq0px1If/mdcn9dpze42hPiv+71?= =?us-ascii?Q?MkvGks/wMOu/3KZ9/htDKOGRrSx9xhqzCfdQxd9HUKKBrL7vbXhYjFauIQJf?= =?us-ascii?Q?+tbZ/xv5b7FeSOdsjxA4Wb8hgTGXbw7mfG+0t4bGYq8P6U+4xtK/DzTzjCzS?= =?us-ascii?Q?LgKxGK68KUriJIJ8w3a1An706raL7443ANxvmSi5de1zHBNZc8T+dENHLJgp?= =?us-ascii?Q?ZizolxaKgD0yfj1FiQBLZkgGGCiL3S/qWqmX6AeaZWHATmdlVkOPq9TIV9ba?= =?us-ascii?Q?xaRwIizE7nL3Kjd2RZGLf2iBbl+oXJERYEuo76w1XOoaclP1+lb6avrSCm6E?= =?us-ascii?Q?LSOqV7mWUGCeWTOgHE7IUiqkk3Wciqt38gx+tWZl9mFBaiwDg4IxYf9XUsHN?= =?us-ascii?Q?GMn0jOW6TBd1MjdUPnLRwPbJrDpVv5btIShcHQFx3JK8cFXntUDLsR5qsEDE?= =?us-ascii?Q?Btdyagdua+4ctpBurTako0vA62o927lgPZ3PrHSXV7/ivNPhvIk2FvpfZ+eF?= =?us-ascii?Q?oRE1eRIvqMEqqyeocxMQkattJ8WB7R/jN08p0uCiZUuoZcC897v9u6DK/uMc?= =?us-ascii?Q?cq1pwrD9tC33IIhehnR+h85oyEQ018KniyGy4cdOaV7kI19nDz9deSpoPDDh?= =?us-ascii?Q?eI5LPla94TcMAFHwEQ9UkYlWhJiCiyqUbfUoK4mwOUNF8ej6Xw2oHXRpPlw4?= =?us-ascii?Q?9PPDCG4RnrRKIz1rvhJbM32bsCToecyngpetMNkZ19opKvQ0i61hunXP8RbX?= =?us-ascii?Q?eevqa9EytmUUMAFkNdJYa5mnCxr+uzKOk77nNdbX9asYMX4sIeeGISJZjV+h?= =?us-ascii?Q?4g571fN+ldWtYb7etV7WSLSyNl3Zc8ZnMBXoh1KwnU/TvwmznyahMZbAFwoo?= =?us-ascii?Q?SgkYUWbVE5Bo44X3DW+0hUDcFwez8GLAB6aB+ZiKNkbAgWGiHKmL8pdIWzER?= =?us-ascii?Q?CxLxXXAmtBOwduZJVJyKAnF/8jRfT73/JnbQ8quHja/AFHMVJjwGWJlDwIuH?= =?us-ascii?Q?Nyh04kfYPpCz5JetY6YOW4Ekvo3A1I8AKH9jWnEEtd0QWMt+7GaDpB4/g0nL?= =?us-ascii?Q?kpJuZuWrIKSwz2fK6lJyTdm/Hd3lDhrP5E4lIB2n+RRauBWbFl/k0MB7lyBP?= =?us-ascii?Q?A6jIS6X+2OkTF9INq/t2qX0LYU0UQz8BNRwlpo64UM2oFjonnZgjgwSuIm1s?= =?us-ascii?Q?ACSaxn4EG4TqTDySvYBYhJJqHywqNJ0=3D?= X-OriginatorOrg: suse.com X-MS-Exchange-CrossTenant-Network-Message-Id: 511fad74-68ce-44c5-fb22-08da2433c32b X-MS-Exchange-CrossTenant-AuthSource: HE1PR0402MB3497.eurprd04.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 22 Apr 2022 07:43:16.4749 (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: H8uD9VVwgA+VrKNdbPjOyV87sc00NCUAyvEF6VGNhnqGJuBWEflP72Y7bJLASGhQUNh0RN43oymuIPdo0+MLVg== X-MS-Exchange-Transport-CrossTenantHeadersStamped: AM0PR04MB5876 Content-Type: text/plain; charset="utf-8" This patch adds a new struct member sched in struct mptcp_sock. And two helpers mptcp_init_sched() and mptcp_release_sched() to init and release it. Init it with the sysctl scheduler in mptcp_init_sock(), copy the scheduler from the parent in mptcp_sk_clone(), and release it in __mptcp_destroy_sock(). Signed-off-by: Geliang Tang --- net/mptcp/protocol.c | 7 ++++ net/mptcp/protocol.h | 4 +++ net/mptcp/sched.c | 34 +++++++++++++++++++ .../testing/selftests/bpf/bpf_mptcp_helpers.h | 1 + 4 files changed, 46 insertions(+) diff --git a/net/mptcp/protocol.c b/net/mptcp/protocol.c index 3f2e1f18e970..70ba43c18e45 100644 --- a/net/mptcp/protocol.c +++ b/net/mptcp/protocol.c @@ -2665,6 +2665,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 */ @@ -2824,6 +2829,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 @@ -3001,6 +3007,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 0b17b4f7b134..9ded79c942b0 100644 --- a/net/mptcp/protocol.h +++ b/net/mptcp/protocol.h @@ -298,6 +298,7 @@ struct mptcp_sock { struct socket *subflow; /* outgoing connect/listener/!mp_capable */ struct sock *first; struct mptcp_pm_data pm; + struct mptcp_sched_ops *sched; struct { u32 space; /* bytes copied in last measurement window */ u32 copied; /* bytes copied in this measurement window */ @@ -628,6 +629,9 @@ void mptcp_unregister_scheduler(struct mptcp_sched_ops = *sched); void mptcp_get_subflow_default(struct mptcp_sock *msk, bool reinject, struct mptcp_sched_data *data); void mptcp_sched_init(void); +int mptcp_init_sched(struct mptcp_sock *msk, + struct mptcp_sched_ops *sched); +void mptcp_release_sched(struct mptcp_sock *msk); =20 static inline bool __mptcp_subflow_active(struct mptcp_subflow_context *su= bflow) { diff --git a/net/mptcp/sched.c b/net/mptcp/sched.c index bd0beff8cac8..8025dc51fbe9 100644 --- a/net/mptcp/sched.c +++ b/net/mptcp/sched.c @@ -68,3 +68,37 @@ void mptcp_sched_init(void) { mptcp_register_scheduler(&mptcp_sched_default); } + +int mptcp_init_sched(struct mptcp_sock *msk, + struct mptcp_sched_ops *sched) +{ + struct mptcp_sched_ops *sched_init =3D &mptcp_sched_default; + + if (sched) + sched_init =3D sched; + + if (!bpf_try_module_get(sched_init, sched_init->owner)) + return -EBUSY; + + msk->sched =3D sched_init; + if (msk->sched->init) + msk->sched->init(msk); + + pr_debug("sched=3D%s", msk->sched->name); + + return 0; +} + +void mptcp_release_sched(struct mptcp_sock *msk) +{ + struct mptcp_sched_ops *sched =3D msk->sched; + + if (!sched) + return; + + msk->sched =3D NULL; + if (sched->release) + sched->release(msk); + + bpf_module_put(sched, sched->owner); +} diff --git a/tools/testing/selftests/bpf/bpf_mptcp_helpers.h b/tools/testin= g/selftests/bpf/bpf_mptcp_helpers.h index de20fbdb6d98..a0b83fbe8133 100644 --- a/tools/testing/selftests/bpf/bpf_mptcp_helpers.h +++ b/tools/testing/selftests/bpf/bpf_mptcp_helpers.h @@ -29,6 +29,7 @@ struct mptcp_sock { =20 __u32 token; struct sock *first; + struct mptcp_sched_ops *sched; char ca_name[TCP_CA_NAME_MAX]; } __attribute__((preserve_access_index)); =20 --=20 2.34.1 From nobody Thu Sep 18 08:11:42 2025 Delivered-To: wpasupplicant.patchew@gmail.com Received: by 2002:ac4:a898:0:b0:4b1:af33:c52d with SMTP id z24csp234680pid; Fri, 22 Apr 2022 00:43:32 -0700 (PDT) X-Google-Smtp-Source: ABdhPJyNh5nczT0ciMSoF7tfW443aQ8wSSc7Me8zzAi+fc5YeH6hMwGpljiEWrCSuUKb6fVc3r4X X-Received: by 2002:a19:4f5e:0:b0:471:a1dd:e21 with SMTP id a30-20020a194f5e000000b00471a1dd0e21mr2355323lfk.501.1650613412279; Fri, 22 Apr 2022 00:43:32 -0700 (PDT) Return-Path: Received: from da.mirrors.kernel.org (da.mirrors.kernel.org. [139.178.84.19]) by mx.google.com with ESMTPS id g22-20020ac24d96000000b00449fff2826esi5915345lfe.496.2022.04.22.00.43.31 for (version=TLS1_2 cipher=ECDHE-ECDSA-AES128-GCM-SHA256 bits=128/128); Fri, 22 Apr 2022 00:43:32 -0700 (PDT) Received-SPF: pass (google.com: domain of mptcp+bounces-4849-wpasupplicant.patchew=gmail.com@lists.linux.dev designates 139.178.84.19 as permitted sender) client-ip=139.178.84.19; Authentication-Results: mx.google.com; dkim=pass header.i=@suse.com header.s=mimecast20200619 header.b=Hw01jPPi; arc=fail (body hash mismatch); spf=pass (google.com: domain of mptcp+bounces-4849-wpasupplicant.patchew=gmail.com@lists.linux.dev designates 139.178.84.19 as permitted sender) smtp.mailfrom="mptcp+bounces-4849-wpasupplicant.patchew=gmail.com@lists.linux.dev"; dmarc=pass (p=QUARANTINE sp=QUARANTINE dis=NONE) header.from=suse.com Received: from smtp.subspace.kernel.org (wormhole.subspace.kernel.org [52.25.139.140]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by da.mirrors.kernel.org (Postfix) with ESMTPS id BE15C2E0CC6 for ; Fri, 22 Apr 2022 07:43:30 +0000 (UTC) Received: from localhost.localdomain (localhost.localdomain [127.0.0.1]) by smtp.subspace.kernel.org (Postfix) with ESMTP id 6212E23D4; Fri, 22 Apr 2022 07:43:29 +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 BD96723CD for ; Fri, 22 Apr 2022 07:43:27 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=suse.com; s=mimecast20200619; t=1650613406; 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=zUNMRznTaTXJ84QUL7+RFQvrbEJx5PtEXAdD8CpGc+k=; b=Hw01jPPi/mLRx1VAuHtAOgm0AWsx7+QenlxfFKAl5GyWJ3/8OJIpPRMq4XUePX/bW8BOND qHBiDvh06E/K5y9IfqFXNmAqBG+YRDKykQeRmsblbzQI8wQhjhk1mHFvJ1WvZuneA7Euoq NCBOGyXwwG9U1rGwuRUIIVS9Au9lHjE= Received: from EUR01-HE1-obe.outbound.protection.outlook.com (mail-he1eur01lp2051.outbound.protection.outlook.com [104.47.0.51]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id de-mta-13-8AY5ju4KMlmLFHzMIodHlQ-1; Fri, 22 Apr 2022 09:43:25 +0200 X-MC-Unique: 8AY5ju4KMlmLFHzMIodHlQ-1 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=I2b0Zi6J18/VSzTHaW7WQKib1YTvuGJnfApmhP+hl0F5oCPe14uuGNbGj0uZlYMrwqheNN/KeHh+3uSxp6wozKubOgvz1LeppE4A6Nk7o8GJjYTV4wQWwwmqRkQIW7y1GzlZu6m26UIKnDsSRJte55GAa2LgxV0E1LOr6tyAjr9+6oMjsIUlSJ3f7i2KHnBNAoFc7vmPycVZtZ3oEM+4zALAT0c+ga5iTibLieuN6u7zqH+itYdnSE5Qa8ycZRvznN9U+DundQAcQrPv3reEGBHBqJ80BuyCsYJa6dFE7+jKsa563VP9FG4peoQZiI3Ae2FYF5Uu2EMNS9wHNe/hZA== 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=f5CjQmJ372j905gN/1yjb29NTA9tXpx2as+KWYqXzao=; b=lSLSHKksjdLN6V+6zjhC4dJUxWElyTcwzt7eQLBQ6qPawmBz/zMSxYRaVOoJiPx/CivDFZC7eHjDRKzTZ8db35imaEGOEkWilhkOskLtQYz0v7l7ceVo1By2SiSbFobDYYjItMVy28U2AEmX0HVggdGFQY1c7TdpRdK/4MQZYf3C10X5x+tngY1m/4ufm0J4O4MTSO4XsK4UOCFHYtj0Rs9+TxJi1S94qRiVdiCEdJb1AzDLbT6Cp5hxjHNqslmpRTwTP5W5yGrg2bP5wncwXdDpHqqH1kJtlkYlyXoYH/u7ePg8j6Fjsd7RbMqdENEdQ3ic+ndmWgwTQ/Wd4ZTkQg== 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 AM0PR04MB5876.eurprd04.prod.outlook.com (2603:10a6:208:130::12) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5186.15; Fri, 22 Apr 2022 07:43:23 +0000 Received: from HE1PR0402MB3497.eurprd04.prod.outlook.com ([fe80::9974:fd5e:e3c0:14dc]) by HE1PR0402MB3497.eurprd04.prod.outlook.com ([fe80::9974:fd5e:e3c0:14dc%3]) with mapi id 15.20.5186.015; Fri, 22 Apr 2022 07:43:23 +0000 From: Geliang Tang To: mptcp@lists.linux.dev CC: Geliang Tang Subject: [PATCH mptcp-next v14 5/8] mptcp: add get_subflow wrapper Date: Fri, 22 Apr 2022 15:42:53 +0800 Message-ID: X-Mailer: git-send-email 2.34.1 In-Reply-To: References: Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: HK2P15301CA0012.APCP153.PROD.OUTLOOK.COM (2603:1096:202:1::22) To HE1PR0402MB3497.eurprd04.prod.outlook.com (2603:10a6:7:83::14) Precedence: bulk X-Mailing-List: mptcp@lists.linux.dev List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: 461a031c-80dd-4992-89e4-08da2433c780 X-MS-TrafficTypeDiagnostic: AM0PR04MB5876: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: HqsKZzFj8//NCXt4hmWt1bvZ8JswpLM+/jOQrI4AoBChPegF9hlcv6xPNXdSZl+WuDJ/lhG+k+efYrePrFPHUeG5WNekFSwnzK4XN4Zb+FwNUPB3N2JLMsIufQlX4g6qpRymM9Eie6Y/jhd6j5cCmlauTmJDFJ9b8XanTStjvGn2M0lrfOTIW+d7B3R/c3Bl3gxd70NQrIs3PZf3ZzN/Hp3iAqFwfRtJ1zWi1lB8SDD2a9/xPD2XF7PM80QOf5n0abiufAx3qehiB7bt/41EB/Je5GMXtO9gsvWc6OHPFlTOzxaMlVYTwRJSxjJ5FzQRysBaF6mRomEegU6VIfw219uf8x0smzF+5BT6Kiu0n/UtOBsv9ZLe5XSWGZh1XTUuaoNCcWI4ydmMkFOzRGzWn4KeXifZXRfnS8vcK2H4QyOP/BSMmA5ypnDLHgyQd44ostgX1JsIGTjb2E994mdmuLAQN0gODXhMQv/wvgScg4I5vlbh6qG2uxqzBLwJVBA8YbyEsNhGoot/34DsShOOSACBVYduc52aLR1b62tyntCkIPYN3FPpk15uA+mgo9fQe7ADAphVHfgemKIvp9R3dTM2KMBJzK0oeJ9+OMJRD/WiVWMl1Kf5dcUr1q5cY46fr0QAaZdmmpPq3Mx0AcOwQkyMtG+R5VQCsbFljfpr+wfLzTT7XljxV6mUWbj/P1gM 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)(508600001)(316002)(86362001)(5660300002)(6916009)(6666004)(8936002)(6486002)(44832011)(4326008)(38100700002)(186003)(2616005)(2906002)(107886003)(6506007)(6512007)(66476007)(66946007)(66556008)(8676002)(26005)(36756003)(83380400001)(13296009);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?xeqTBlGChbepd4PLogw9/GLmPzmsZEHgOZrkDT3MNnmeF3/tgnpVcwb4xtCG?= =?us-ascii?Q?8TtJGY8x/2ZpUXsc0ybrbPgCPMXUEYa8s+NymQakJnUHBBlC+SP9XAgm2mbJ?= =?us-ascii?Q?CmAIYwyzbNMTmHIGNYJ4+nKk2N4IYjkazelo8ou3/bdTU+t/7tOqM4QUu8u2?= =?us-ascii?Q?/vYhy2TutxCCcPwWD53Sm8Gdw54o5NsS0ZzHTXpJkLXjr23TiRXboiPFRUef?= =?us-ascii?Q?0TCRCI5rSvDvwtuGkU8BOqqBjYDPtB8nDH4HWlueN8PQZdF+ykHtP51h85SA?= =?us-ascii?Q?8AQbbdqpuhnnpZzl/W67oZDkwiLtgnZ5wd2cqKdZv7wPHyaGWpJmegtMUT5I?= =?us-ascii?Q?YCmpDRKjD2Z5gJKrZ98AthAlM+19Kcd3UUnzrUD/wBmrvQmMcMiF7gcg/qus?= =?us-ascii?Q?mstDeLrkMl56Ntt0jZeyRpCAzMSZi7GWWvpjmETySNJhb5/ZzLKY4SbyG9ot?= =?us-ascii?Q?oKGYzO3WKTGJh07qFc3P8/uudsiXmeL7GTSnPXGpM5DVTHkSbI/xi+WJNgmP?= =?us-ascii?Q?aTMvj+2nLJdaZNZCsqzOdD9342a1Dp5T5Zq3mPlxxmbEJ/M7/pWbKgMNY2X8?= =?us-ascii?Q?TJ1SeB6OghZP5RrNNV1hqM8dxjrIUfpLwv2bCqmDN0jEPKxjBwV4tyStNeUQ?= =?us-ascii?Q?uPVJkqhqBoChBqwdFSOShZDgNm03eMHWp50fO6jN4M45zTUrQAZQXaN//rvh?= =?us-ascii?Q?VbZyBdHB6dfu0fL5PRKCVGXY9KeN4oAkcVe5ilfWQsJLA/yVY/h3q6JaI58m?= =?us-ascii?Q?egY7BNP6Hkwk8Qodjcx1+Sy9SReim2QVk5zPsQYSXKWbdMPI+zwhak4Nt/AD?= =?us-ascii?Q?0iUzzeD0OBJN1tbBspVe5/f53zTTDe3GrYmOuAIRF6XbIN8t74Re1DIPP/Di?= =?us-ascii?Q?49WAsYNmUDaYIFxpa9DU7wN+7oefw/CvGAZp1L8yYaejIVbsRGn1+BVoAEKa?= =?us-ascii?Q?WibSEwfkrfqlo7q7PGJT4+RTwitWRVqDwHRi+iomzosW47ieryLAWXewNlNK?= =?us-ascii?Q?fL6+IGvplBIyJa99C+au9jPRFErLNsUKNIjegmTEQitp7bfGGycXGImCDATW?= =?us-ascii?Q?D8lHMIIU1RIfK+IlvkhiMDOEvyBVnC19uQqgSEKY8YYUsXy+Ch8wnZALI6Nj?= =?us-ascii?Q?/RGLJDEplJzgdQa63b8kdeDMzUiZgjWg/dq1AVWXfRtGZwO62zDPL/y9WrBM?= =?us-ascii?Q?2wIUq0Lx9s/wVdFTh85hPaQXjRyvodMLrTHFSXV1CXNrx4eCUmjmELzu4UiS?= =?us-ascii?Q?hyL3jlqIOonnLECNBFE7mZKh0+bFbS1egor48ClLuJ/t9PLpTdmJtCO39QCU?= =?us-ascii?Q?Kf5nO3UHDj5nNn3i+nav6P/6VtfMPLIxP8GNRXYdtJjEMXLUl3syk6mFmmBc?= =?us-ascii?Q?eMqr7zoU3lzrkFZBHS2fcQM99npvyn7TKxMhOuRjRkSGV4y0BrL4zUIfIoxT?= =?us-ascii?Q?sf0M8R5rGAUePIfBA1pGwWapij5MRfQVX53Dqy8lhsbHShnAxrrt1lhCRaj9?= =?us-ascii?Q?05H3DqV0bSiL4N4SvmBfKTnkMLHHP0Sg4P+/AEeHcgn4YDf8ZGR284wV2616?= =?us-ascii?Q?P/L/ZHPkW6pQvhNP5VWt3jE16AQORqOGboXBiGE1rwdn2z4/iCSGDYLC5p5c?= =?us-ascii?Q?svvNYoj6D3ysbEiRNuCRx4U/jNJ1TtuaIyF4odme7sAqhonAt81PvXUWWL7y?= =?us-ascii?Q?SbztSeibAy2Q0M+DGIRv80M1obMemCQS3krQ9BPNIOB8dtoHp6oX7MtP2n+3?= =?us-ascii?Q?d3ZMjJ7YDd4ARuPzPSf/5USMVdjxIqM=3D?= X-OriginatorOrg: suse.com X-MS-Exchange-CrossTenant-Network-Message-Id: 461a031c-80dd-4992-89e4-08da2433c780 X-MS-Exchange-CrossTenant-AuthSource: HE1PR0402MB3497.eurprd04.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 22 Apr 2022 07:43:23.8336 (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: /3pZFqrN3cTcOz+p3rGBr710xQQ4Vp4d3iOlQ5rLux/ouWOet8A2OlLdXHGDbl6fuo3TyzJ1YVYH2YVvfi/tPQ== X-MS-Exchange-Transport-CrossTenantHeadersStamped: AM0PR04MB5876 Content-Type: text/plain; charset="utf-8" This patch defines a new wrapper mptcp_sched_get_subflow(), invoke get_subflow() of msk->sched in it. Use the wrapper instead of using mptcp_subflow_get_send() directly. Signed-off-by: Geliang Tang --- net/mptcp/protocol.c | 9 ++++----- net/mptcp/protocol.h | 16 ++++++++++++++++ 2 files changed, 20 insertions(+), 5 deletions(-) diff --git a/net/mptcp/protocol.c b/net/mptcp/protocol.c index 70ba43c18e45..dd41d1d8d2e6 100644 --- a/net/mptcp/protocol.c +++ b/net/mptcp/protocol.c @@ -1507,7 +1507,6 @@ static struct sock *mptcp_subflow_get_send(struct mpt= cp_sock *msk) subflow->avg_pacing_rate =3D div_u64((u64)subflow->avg_pacing_rate * wmem= + READ_ONCE(ssk->sk_pacing_rate) * burst, burst + wmem); - msk->last_snd =3D ssk; msk->snd_burst =3D burst; return ssk; } @@ -1567,7 +1566,7 @@ void __mptcp_push_pending(struct sock *sk, unsigned i= nt flags) int ret =3D 0; =20 prev_ssk =3D ssk; - ssk =3D mptcp_subflow_get_send(msk); + ssk =3D mptcp_sched_get_subflow(msk, false); =20 /* First check. If the ssk has changed since * the last round, release prev_ssk @@ -1636,7 +1635,7 @@ static void __mptcp_subflow_push_pending(struct sock = *sk, struct sock *ssk) * check for a different subflow usage only after * spooling the first chunk of data */ - xmit_ssk =3D first ? ssk : mptcp_subflow_get_send(mptcp_sk(sk)); + xmit_ssk =3D first ? ssk : mptcp_sched_get_subflow(mptcp_sk(sk), false); if (!xmit_ssk) goto out; if (xmit_ssk !=3D ssk) { @@ -2481,7 +2480,7 @@ static void __mptcp_retrans(struct sock *sk) mptcp_clean_una_wakeup(sk); =20 /* first check ssk: need to kick "stale" logic */ - ssk =3D mptcp_subflow_get_retrans(msk); + ssk =3D mptcp_sched_get_subflow(msk, true); dfrag =3D mptcp_rtx_head(sk); if (!dfrag) { if (mptcp_data_fin_enabled(msk)) { @@ -3146,7 +3145,7 @@ void __mptcp_check_push(struct sock *sk, struct sock = *ssk) return; =20 if (!sock_owned_by_user(sk)) { - struct sock *xmit_ssk =3D mptcp_subflow_get_send(mptcp_sk(sk)); + struct sock *xmit_ssk =3D mptcp_sched_get_subflow(mptcp_sk(sk), false); =20 if (xmit_ssk =3D=3D ssk) __mptcp_subflow_push_pending(sk, ssk); diff --git a/net/mptcp/protocol.h b/net/mptcp/protocol.h index 9ded79c942b0..006914cb78de 100644 --- a/net/mptcp/protocol.h +++ b/net/mptcp/protocol.h @@ -633,6 +633,22 @@ int mptcp_init_sched(struct mptcp_sock *msk, struct mptcp_sched_ops *sched); void mptcp_release_sched(struct mptcp_sock *msk); =20 +static inline struct sock *mptcp_sched_get_subflow(struct mptcp_sock *msk,= bool reinject) +{ + struct mptcp_sched_data data =3D { + .sock =3D msk->first, + .call_again =3D 0, + }; + + msk->sched ? INDIRECT_CALL_INET_1(msk->sched->get_subflow, + mptcp_get_subflow_default, + msk, reinject, &data) : + mptcp_get_subflow_default(msk, reinject, &data); + + msk->last_snd =3D data.sock; + return data.sock; +} + static inline bool __mptcp_subflow_active(struct mptcp_subflow_context *su= bflow) { struct sock *ssk =3D mptcp_subflow_tcp_sock(subflow); --=20 2.34.1 From nobody Thu Sep 18 08:11:42 2025 Delivered-To: wpasupplicant.patchew@gmail.com Received: by 2002:ac4:a898:0:b0:4b1:af33:c52d with SMTP id z24csp234747pid; Fri, 22 Apr 2022 00:43:40 -0700 (PDT) X-Google-Smtp-Source: ABdhPJzYZLDY74Jcc3jZFgiCEWgl9LZ2aEdjHP3WUn5IiuzOnLJODPjc7W2GbP5CnCBYhgcgHnbF X-Received: by 2002:a17:90a:410a:b0:1cb:a279:6679 with SMTP id u10-20020a17090a410a00b001cba2796679mr14672709pjf.211.1650613420505; Fri, 22 Apr 2022 00:43:40 -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 n7-20020a63e047000000b003aa86e73a6csi4936219pgj.541.2022.04.22.00.43.40 for (version=TLS1_2 cipher=ECDHE-ECDSA-AES128-GCM-SHA256 bits=128/128); Fri, 22 Apr 2022 00:43:40 -0700 (PDT) Received-SPF: pass (google.com: domain of mptcp+bounces-4851-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=hS+aslCf; arc=fail (body hash mismatch); spf=pass (google.com: domain of mptcp+bounces-4851-wpasupplicant.patchew=gmail.com@lists.linux.dev designates 2604:1380:1000:8100::1 as permitted sender) smtp.mailfrom="mptcp+bounces-4851-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 3646F3E0F54 for ; Fri, 22 Apr 2022 07:43:40 +0000 (UTC) Received: from localhost.localdomain (localhost.localdomain [127.0.0.1]) by smtp.subspace.kernel.org (Postfix) with ESMTP id 80E1823D3; Fri, 22 Apr 2022 07:43:39 +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 DA72623CD for ; Fri, 22 Apr 2022 07:43:37 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=suse.com; s=mimecast20200619; t=1650613416; 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=DABSxmslrLanyiYWrPdZewHwkVXSaTgZV1PHvlEmlnU=; b=hS+aslCf9g9eOXjFmrrLOUnrKst67ReQuAT+wbJKAC1tbGxHtfzdA51YSGbDMByAXujUxB 6MAuWjl5/I3mPHX6DUVk9kIBFXHNu3alYZsgalRy87tIppUxQY3mJUPXfryIERivTA1+DP mEw579GSMQRUaKEdCUvYS2RsPgZXP/Y= Received: from EUR01-HE1-obe.outbound.protection.outlook.com (mail-he1eur01lp2050.outbound.protection.outlook.com [104.47.0.50]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id de-mta-34-9geqiJuwPQSh7j7GT1dWGA-1; Fri, 22 Apr 2022 09:43:35 +0200 X-MC-Unique: 9geqiJuwPQSh7j7GT1dWGA-1 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=et9vZOZHjgZobYvNgGXsoe8aNv1JBLOL2e2dcjGqpu+PwlRUIR/qwuAm1ibgEkZd3BP079QbSZBrQ/G3Wfs66Rb6XILbzX23tY0g4xI0ZDUc35QOhQD8eg3zD8DIHI9jHgtpEXXPGPCANNwgCIqXaBzHQBOqcAOvcTz5pMdkZaaPhNIi07j3Bw+0cCrAfOv4jJyCkdJyEPDC09E9yZTrronw7K4tME4oia7hTLP+vcFrYzmFKpabrz9Ti95V8NI5YJNxfy48VoTfZxbrL4HRDTSVWBzzoNm+KuhpEE3qpL0hVuGvY7bdOhbG6ODKSvApkao7ykrHSy4grZ0TXuBdcg== 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=SoyYwrWaBS8oqg23iXUsce9U/fWmr0Fc1DD9hF4Kin8=; b=WBmCGGe7K6YQqQKlssXDlPeKdqB4vvWyIVu8UeEw0i9UWwBsimv/CVHB+Md7xCcY7osSHY3/a6bmpCCG0tKa+VgTMqJREoAtdqDg93bj1UL/M3ANFbVFBFJCGPfZcFfomPSrbcXJ4NU2Yg0g5IWazPEJflDfMAPhLHGTQ2qhd5LcKIQJswDmrKrsoochYeN/TiN3s4tK9ZibPC+HY+nAZIzB8k17pnZUGmwqv6BkxSY/6ws7b4ekwsmAHbSMKOJcKa93kwNGnY2DV6ojAcHCJxtmBDqNGvdRnQWbFMNPHXLDxDvFlKDvO1osPhenEZqJC9gBt3mvn59DEDdtID118A== 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 AM0PR04MB5876.eurprd04.prod.outlook.com (2603:10a6:208:130::12) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5186.15; Fri, 22 Apr 2022 07:43:34 +0000 Received: from HE1PR0402MB3497.eurprd04.prod.outlook.com ([fe80::9974:fd5e:e3c0:14dc]) by HE1PR0402MB3497.eurprd04.prod.outlook.com ([fe80::9974:fd5e:e3c0:14dc%3]) with mapi id 15.20.5186.015; Fri, 22 Apr 2022 07:43:34 +0000 From: Geliang Tang To: mptcp@lists.linux.dev CC: Geliang Tang Subject: [PATCH mptcp-next v14 6/8] mptcp: add bpf_mptcp_sched_ops Date: Fri, 22 Apr 2022 15:42:54 +0800 Message-ID: X-Mailer: git-send-email 2.34.1 In-Reply-To: References: Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: TYAPR01CA0101.jpnprd01.prod.outlook.com (2603:1096:404:2a::17) To HE1PR0402MB3497.eurprd04.prod.outlook.com (2603:10a6:7:83::14) Precedence: bulk X-Mailing-List: mptcp@lists.linux.dev List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: 00d3d2af-aa64-4db4-726f-08da2433cd7d X-MS-TrafficTypeDiagnostic: AM0PR04MB5876: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: mo7YdzAin+MYD+a1h2q4911D5E/pNf+63T+DV2IHKOzoQEnZMOCZaFWOU4KB2wnU8m7DG16jzYtlD+TxT8w4mbpA1VCGwDiUfkLmjuHS3yv2VgQir45s2exsVPtqaNVhkMBeJkTe39gTZxv/02z5GAcdR4D0ew7LjVNX4zO/xEAL84saBsjsR6/2I46jQRzShHqjBe00LExcCVPgjy0ht5soaEkBgoxNNcGnXFIdXQvnOS0TIum7q4r627+sTma9ScZIKnvdkgErNedVxrIRGLW2RVzqQy1HsSiP7B2NrCPFcQLZGRvm06ggU3Z9ROuSc2R77JiKee9GMaEjs7F7GrRmovphs7Bw/5AmrmvZr06soP5VIpdM+S/z7aw1RbHVl7tsrKwt1hWmnVfNxKoa9NfAD0KvjouLEz65dUBS8nAh+g7Dsr3mXmMm271Fe9QmiOrOlZ5vGpzoSBVNS3X7Iqazn7AkeupObqw9f8BdlnDDiaWWVW4kPxX2QvbCDoIqr7iOKPJv33oy2GRnfaGvBhyQbDQy1F7lZDL/4ZwvyrEsvFTIMEmCBSR3qPGlqsWdmPrYHjHTCT7vUprRmQU+2JutVz0k7JZaThMFtxWMwBySn02uDte3IFduZL68H6xDz9SzfPnl2Kz4B6zqHeX819u2gbxCzkEdhLzpE22sC1slJpLV/VevfFqpKndKUryMn5EQCgq5I1VMo/bivjA9mA== 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)(508600001)(316002)(86362001)(5660300002)(6916009)(6666004)(8936002)(6486002)(44832011)(4326008)(38100700002)(186003)(2616005)(2906002)(107886003)(6506007)(6512007)(66476007)(66946007)(66556008)(8676002)(26005)(36756003)(83380400001)(13296009);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?H4G3HfRh0lNzbRh1NZNFJj4riOBWQNOkIqhFMG+1gi2OcBiEozM2DhppOGLK?= =?us-ascii?Q?UasPy81q/DF1uUoUKl/U6togVSFtk/bk045d3wp8a41YZFfXC8rbLYZlT39U?= =?us-ascii?Q?cmYg4v27EsWPWYCu5GUu5Qx05Mqf7cOXDBRIrckWMRG7cE/9CoxwwXmobbOW?= =?us-ascii?Q?gTttYy3UkzQ9YyfN+Ydsk/429o7p9NkejhwANKmw0cVLU87innHGiclkRupU?= =?us-ascii?Q?2Wd5z2Fkn7TaO+xaVj/visfVGHQOpDPJAgUsm10RsoFqfBletw7SORtaYOhh?= =?us-ascii?Q?6C9Vu+P4jqr908VRkOnzHKeeBY6yGAFBpdDPM+Oj9RBEyeLYQcGOowb6eOe9?= =?us-ascii?Q?N2ok9Q2YK43dWG5XasxZ6GqzyxNpl/ycBXyNhVI6vFXUfMYniVT8iEm0Trz2?= =?us-ascii?Q?pH0frpsgnmzQ/GCiYqAi6qY0uyIyqdplCnWadRiPjmoK+gmjcGp1iqzAhyAE?= =?us-ascii?Q?OPsZ1IqdSPkVVQ9fBzVt7K1ye8SEx8QWqkUnj+mVseRlEq68JmUyOGNbaJgN?= =?us-ascii?Q?lYsJLvDoqbnoFpJercBj5UJJ+rpCIQONPNYXkcK2wYmO/JXzwB+zcnVIwd4C?= =?us-ascii?Q?WhfdFUZvwd7X8JziK9OgbCJXmC1SN11vKe2Ys5IhIVmcXkpunWt2B9pHZhtw?= =?us-ascii?Q?P6Gauy2plbcvPZhfB17LoohCrkq8VsNdShfkLaRgi0HdQQBeBZS+ntO2X5O3?= =?us-ascii?Q?g3XXk/QgJ0GU71Z6GvTcCPxueWtCr1+c7ewL0AbT/5tUpOQtBa59OLgFJYb3?= =?us-ascii?Q?G9oED4ENDx2BkYjwzk6hwUyt3R0E1xNgzGNV5fN3PkQzR/Z1EhvTM6PZSPel?= =?us-ascii?Q?mXxMsk4ztbV5Q8LKrGG3TeqiHi5a03tO3aNAJ+7zDxoROm0uI8F6G2eCrQ3F?= =?us-ascii?Q?ucGJ1aUoeW6UUV/TnJCMzHq+1mXcTKua5+qonz8NLFAV+z03PHj6s2V1ifuP?= =?us-ascii?Q?y/PGvFNRakCrZs27e0u7InH0jW/+u3H6YXFXINGKGrw2lAmJWcRe12XXLr1Z?= =?us-ascii?Q?NhcTsAAj+FaXVA30QN8o1IZ6KsrAGMIER4NsOOzIHRnkTw843i77udl+UtQN?= =?us-ascii?Q?p9C8jmhwVqhBwit4qax44SgAigy0+IEVHPMAseqnGBhxn3DL8fXToMKvrC8T?= =?us-ascii?Q?bcCVj/qIoEq1bxOV4xPnDnKIe45KmR5vpGlcHWfl81yQ9V+A6x3Dus7Q/jLq?= =?us-ascii?Q?V8x871DCJZ5ZNwVMT9mKSYgO3n5GZbZ4b445c4VutgeePoWmj8CMopBcBITt?= =?us-ascii?Q?LHgTuFYGAd64U3AU2agvda/v+iV1vO29dFLSVj9r+hkC2r7opwc3AFPkUZOM?= =?us-ascii?Q?r2hatEGM+SVUSigaBe+evRnHwWrKudYApOyiD4v65C5Kjjp2AHZovhfd6boF?= =?us-ascii?Q?ccTjqU3JU+ERZdGDXyNbER1arUdPXXAm6ZoiyMoz+U8udqvXum2V3MzYDazX?= =?us-ascii?Q?qZtojfsr0mhBfvmmdDrVsZJJskL+oNAktyrvGJJLsl8aak1lV9OIygH13nkZ?= =?us-ascii?Q?qrcRZmd+YWBck/YjLi+kl2vqVJVtnoyAv8KClahm92b95MMVCs2nYhHhwVHT?= =?us-ascii?Q?a6DomVzRHvv8aGrrp7Wy7j26cu4cq2FaRj5TiRJQ5eJrxT7HrlpC/U6DbftE?= =?us-ascii?Q?ZmDdwq+7fLNvOSv1yCOGx9/5oKe5JMNxyuPTG46Q7GOD7jftRm0F5HebEKp3?= =?us-ascii?Q?J4OD4faBeThvTDRjhu40awpOpwB56jz3jutJF3YTNdD/OSCuS2FZnRvuu4c+?= =?us-ascii?Q?uRW+hzUlJdnF+Mes3qduZhRKE2ShXUI=3D?= X-OriginatorOrg: suse.com X-MS-Exchange-CrossTenant-Network-Message-Id: 00d3d2af-aa64-4db4-726f-08da2433cd7d X-MS-Exchange-CrossTenant-AuthSource: HE1PR0402MB3497.eurprd04.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 22 Apr 2022 07:43:33.9110 (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: eDXFQoMHgZmCS7rG4fI9vfUZrB9gvXC8h8DjnyRvf9svRr6N1Rt7OgOPOPTAnoP4uaXJ6NdgJwDTAQSE00qnGg== X-MS-Exchange-Transport-CrossTenantHeadersStamped: AM0PR04MB5876 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 | 148 ++++++++++++++++++++++++++++++ 2 files changed, 152 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..6c01f6b959a3 100644 --- a/net/mptcp/bpf.c +++ b/net/mptcp/bpf.c @@ -10,8 +10,156 @@ #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; + size_t end; + + 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_sched_data", BTF_KIND_STRUC= T); + if (type_id < 0) + return -EINVAL; + + state =3D btf_type_by_id(btf, type_id); + if (t !=3D state) { + bpf_log(log, "only access to mptcp_sched_data is supported\n"); + return -EACCES; + } + + switch (off) { + case offsetof(struct mptcp_sched_data, sock): + end =3D offsetofend(struct mptcp_sched_data, sock); + break; + case offsetof(struct mptcp_sched_data, call_again): + end =3D offsetofend(struct mptcp_sched_data, call_again); + break; + default: + bpf_log(log, "no write support to mptcp_sched_data at off %d\n", off); + return -EACCES; + } + + if (off + size > end) { + bpf_log(log, "access beyond mptcp_sched_data at off %u size %u ended at = %zu", + off, size, end); + return -EACCES; + } + + return NOT_INIT; +} + +static const struct bpf_verifier_ops bpf_mptcp_sched_verifier_ops =3D { + .get_func_proto =3D bpf_mptcp_sched_get_func_proto, + .is_valid_access =3D bpf_tracing_btf_ctx_access, + .btf_struct_access =3D bpf_mptcp_sched_btf_struct_access, +}; + +static int bpf_mptcp_sched_reg(void *kdata) +{ + return mptcp_register_scheduler(kdata); +} + +static void bpf_mptcp_sched_unreg(void *kdata) +{ + mptcp_unregister_scheduler(kdata); +} + +static int bpf_mptcp_sched_check_member(const struct btf_type *t, + const struct btf_member *member) +{ + return 0; +} + +static bool is_optional(u32 member_offset) +{ + unsigned int i; + + for (i =3D 0; i < ARRAY_SIZE(optional_ops); i++) { + if (member_offset =3D=3D optional_ops[i]) + return true; + } + + return false; +} + +static int bpf_mptcp_sched_init_member(const struct btf_type *t, + const struct btf_member *member, + void *kdata, const void *udata) +{ + const struct mptcp_sched_ops *usched; + struct mptcp_sched_ops *sched; + int prog_fd; + u32 moff; + + usched =3D (const struct mptcp_sched_ops *)udata; + sched =3D (struct mptcp_sched_ops *)kdata; + + moff =3D __btf_member_bit_offset(t, member) / 8; + switch (moff) { + case offsetof(struct mptcp_sched_ops, name): + if (bpf_obj_name_cpy(sched->name, usched->name, + sizeof(sched->name)) <=3D 0) + return -EINVAL; + if (mptcp_sched_find(usched->name)) + return -EEXIST; + return 1; + } + + if (!btf_type_resolve_func_ptr(btf_vmlinux, member->type, NULL)) + return 0; + + /* Ensure bpf_prog is provided for compulsory func ptr */ + prog_fd =3D (int)(*(unsigned long *)(udata + moff)); + if (!prog_fd && !is_optional(moff)) + return -EINVAL; + + return 0; +} + +static int bpf_mptcp_sched_init(struct btf *btf) +{ + return 0; +} + +struct bpf_struct_ops bpf_mptcp_sched_ops =3D { + .verifier_ops =3D &bpf_mptcp_sched_verifier_ops, + .reg =3D bpf_mptcp_sched_reg, + .unreg =3D bpf_mptcp_sched_unreg, + .check_member =3D bpf_mptcp_sched_check_member, + .init_member =3D bpf_mptcp_sched_init_member, + .init =3D bpf_mptcp_sched_init, + .name =3D "mptcp_sched_ops", +}; + struct mptcp_sock *bpf_mptcp_sock_from_subflow(struct sock *sk) { if (sk && sk_fullsock(sk) && sk->sk_protocol =3D=3D IPPROTO_TCP && sk_is_= mptcp(sk)) --=20 2.34.1 From nobody Thu Sep 18 08:11:42 2025 Delivered-To: wpasupplicant.patchew@gmail.com Received: by 2002:ac4:a898:0:b0:4b1:af33:c52d with SMTP id z24csp234814pid; Fri, 22 Apr 2022 00:43:50 -0700 (PDT) X-Google-Smtp-Source: ABdhPJzYMkCqbVnbZSM8XqULLzvOFG/AatMePLDoLLRpYwIjJsvfkxrIX8KZncBJJS4pG94ZjieH X-Received: by 2002:a17:90a:6c64:b0:1cb:a150:52d with SMTP id x91-20020a17090a6c6400b001cba150052dmr3848324pjj.111.1650613430253; Fri, 22 Apr 2022 00:43:50 -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 u10-20020a170902a60a00b0015898ae35d0si7213124plq.119.2022.04.22.00.43.50 for (version=TLS1_2 cipher=ECDHE-ECDSA-AES128-GCM-SHA256 bits=128/128); Fri, 22 Apr 2022 00:43:50 -0700 (PDT) Received-SPF: pass (google.com: domain of mptcp+bounces-4852-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=PfWLoBBP; arc=fail (body hash mismatch); spf=pass (google.com: domain of mptcp+bounces-4852-wpasupplicant.patchew=gmail.com@lists.linux.dev designates 2604:1380:1000:8100::1 as permitted sender) smtp.mailfrom="mptcp+bounces-4852-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 008503E0F44 for ; Fri, 22 Apr 2022 07:43:50 +0000 (UTC) Received: from localhost.localdomain (localhost.localdomain [127.0.0.1]) by smtp.subspace.kernel.org (Postfix) with ESMTP id 352C323D3; Fri, 22 Apr 2022 07:43:49 +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 C3CE923CD for ; Fri, 22 Apr 2022 07:43:47 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=suse.com; s=mimecast20200619; t=1650613426; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=/RDlydWiAwHZ3O0hxyi4E5TKaVuJH+Dk8t/1KIGdEMI=; b=PfWLoBBPbL4XzEebqjvGKTriFZ+YKq5ZKmguerl3gl89NlQix+1p8Jr7nlu6ZvH+aUqRfg LSiL7d06MyihpPCZZfdiblLZ9umAQuw1aSRu+7DstlQIG+bdF96y2j25j2FFTfqiRaCxL1 HQP6r0Wm3IIxHTlqlfrd+k12Yr24N30= Received: from EUR05-DB8-obe.outbound.protection.outlook.com (mail-db8eur05lp2105.outbound.protection.outlook.com [104.47.17.105]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id de-mta-18-aooNH5UyPeib6xvbGpfC-Q-1; Fri, 22 Apr 2022 09:43:44 +0200 X-MC-Unique: aooNH5UyPeib6xvbGpfC-Q-1 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=U9D2+PXqUaKVHIVP3vrgjL+UuXB9pyYfEAL+ZvhFFR2AJJR+k6qbWjywpNSNfSK2ts2i/4Q6ENt3ug1AFXY8sOO/AQuNCbDJNltyb/1p4b38qdzX7C/Emx0kuLZkvF5ihiHlsDv6gFu2FFHmkJmm7fg8UiaTTPtQnJRb7V2DFSQCHtR+rwN0oxwN7jVF0pu3HXZEJewVEV3pyEsAQi0SV9M7iM4KDmvHthooSe0UkqW7qIEJgZnfXDnBYcWsg62J1K8ROuJhz6lDkcSzhWhNDSpYVhFJGzeoQzmS93xUSYXyd88a1RsrU5vv5Q89HiSxBHyirdauSh9eXR553SqnJA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=z2K1eTcXjHmFeX1syZLtPL8603gz/hgxgKtqjwkUSFk=; b=e45SZ23ZIzFvSIpuIRvF3oQq7pLP9tq2A+YXcZ/7jnL02kAAMCjm30fBuwa14YNJRLpdsULX/tia8hPb2cPrviqwhZUsH4oF3PJCIOgjPb+HuqHSU6khU7inoHYV09+5G5CccET4nlml3I/+2bdF89viSJOwwgh2Sw7mWf3clRDPdR72zomBaiEt2eaGza6MX5PtteBvgphIQuJweS4cA98oteAJd/Tey2GhbMkITGHutwDlcPFqxZ+CaqD2ApYumR/03lOtND7hgGKSi2xIQfo9vxug3dmT7QI0e4kCZ/yxrIGysMpoDd+KVaXDRBFC5JIQ1VGiQO0SbjI0TabE/Q== 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 AM0PR04MB5876.eurprd04.prod.outlook.com (2603:10a6:208:130::12) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5186.15; Fri, 22 Apr 2022 07:43:44 +0000 Received: from HE1PR0402MB3497.eurprd04.prod.outlook.com ([fe80::9974:fd5e:e3c0:14dc]) by HE1PR0402MB3497.eurprd04.prod.outlook.com ([fe80::9974:fd5e:e3c0:14dc%3]) with mapi id 15.20.5186.015; Fri, 22 Apr 2022 07:43:44 +0000 From: Geliang Tang To: mptcp@lists.linux.dev CC: Geliang Tang Subject: [PATCH mptcp-next v14 7/8] selftests: bpf: add bpf_first scheduler Date: Fri, 22 Apr 2022 15:42:55 +0800 Message-ID: X-Mailer: git-send-email 2.34.1 In-Reply-To: References: Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: TYBP286CA0043.JPNP286.PROD.OUTLOOK.COM (2603:1096:404:10a::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: 2fd58ffa-653c-4bbe-bb4c-08da2433d39b X-MS-TrafficTypeDiagnostic: AM0PR04MB5876: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: xkLuLFo23+xl+476xYJcNH1wKdv5Chj2/TUHifSKBy4upNoGtKTiE0deC7nDfPVXLXpiPZ94L8tdemS7pIHYjX6PwX7zuu8ONzfiuk8uK70xLtY5L5m8XZNHl0pOceJgny1ayDtJW7zKvmKXnUlxHdBIpFLnBy92czbWkBVUN+vbMtsOWVGDGAdydOlfO+/FAhTW4cU6E+mCFMfwrV2SJBjp+hdMyCJrc3cMWpzIrkbcHKcx0/DDVs9WOnFZS8MolVTJRHwYyWbTEERN0GGsLP+SaLjs3V74TtIjnuOa46WFhVg1j4T3u6RPtGbowQsa75R1Njs2u2AyYf7yHjQv7UhMH8RyMWAllCwdwxBcQdmRn2U8NigEbznzvKQBAETySXLi0AJsvxiRBiagP8UOfY/dBVNxXX3HQONPXhduKEnpwgEi1GO+tsFISYVgU/RGPgX242ZfF1vnngDMC3WodHT6kMMNKvBZghEhBoNOwswidxOJEe4X+DDpR6jpgbHr9JFvRj7HZLvjTBOBP/r3wHt9B97wdOHbYxgr+T+AyjyRKIO9CvCc2/UfNquIRnYJM4GR1LNp3jL02QuYmshm/yzrs8f9Nrui+WLr+ej20Uf6b5IKG5ob/xvsPmz+kJ/95t8cryblorPqEcGXR77t17f4Nk57p8uSAOnGRjw++lzhhvYMN9DZUPjVqqPfi/z5u7oOMxocFeBm9Y130ZBKaA== 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)(508600001)(316002)(86362001)(5660300002)(6916009)(6666004)(8936002)(6486002)(44832011)(4326008)(38100700002)(186003)(2616005)(2906002)(107886003)(6506007)(6512007)(66476007)(66946007)(66556008)(8676002)(26005)(36756003)(13296009);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?XnsJLOHgl4Ugg81n2hVvTko4D65R062fRfdJ8rpmhSThMjPtc1bVv8y1XYvO?= =?us-ascii?Q?JMYqgEE6XUMiionOAga2dPm+GCghQnm+9H2/+MlkqkcqjE8TAX2RKWrTzqXZ?= =?us-ascii?Q?uqX55nqqsotODlr42yy+n/u158Y2LHjWRMXTURi9P3PUB9fmWq6uU37UargP?= =?us-ascii?Q?CfAIydocbnKxycGPKKgNrFLPX4m+fYGrvIsqciZ28cJDnTV+wHD3nhkM/0j9?= =?us-ascii?Q?qMFatzNhrSPANuyEu8FXJsBXHmOBqZyFQYrQcmcMbKFwT5BJmEnOI2RQDl14?= =?us-ascii?Q?2miib4KvlwHOctcvymh712qc//VbWRVYJqKXzhJKv/qd7vgBtfgTxv0ROnQm?= =?us-ascii?Q?0+8ahV7JcUumz9YlM0hFQigdkr3eEcopNSWlE4CVNMIO/coteB0agnCwSUNU?= =?us-ascii?Q?njYjIE32a0jdqFXSrvj/iADvg8Sn0ts88j0neYaXjNn9BwYnm6bRuHKJ8Y8T?= =?us-ascii?Q?KJRYlirB3gncDJu3z2SCH1Gupr6szNTVAF8l8sGxmBCh3h+ZcLWu/2pZIo0e?= =?us-ascii?Q?fziCxJ1qf7M4ShNwnDzWPDS71Wi5AVA2pLwBzT3pM+td5GALYP7B6Bner6sj?= =?us-ascii?Q?Arde3SfyoCVpSGIJLPWI+1LDDoE4xM/4KW9a0MZTiKsDr/XGfOd/i53l7t8h?= =?us-ascii?Q?H0VtwXUSYP30wSec7eqJT1Pdgj9FlfdjBBrL5vlpoNAdH9yBWOmheLaZ7bfU?= =?us-ascii?Q?TQ8PkMCRyWY7i3och2Aj9WDze4aZZFuAFILsVPRS6ZIeNYK/fcEK9fvtF0LY?= =?us-ascii?Q?N/rmlInrfrtEXtgAZENNiq8iGazAjMNrWtejvwZWSJaCnDz1b3sZHhlJIokk?= =?us-ascii?Q?2RRXFzUVIwPs6eeFA5oUAsAolyViPsFU+YxYKNlUQIkM8ShkX4OzXPOfMsLU?= =?us-ascii?Q?668F+PCn1H6GhH+ySFgkyoppAcbbV3Iwc6atw0S0ffDTmhxMpvpPwLcDteyo?= =?us-ascii?Q?6fUC2bdzeiNaOXJipL3dbBsDU4LmXw7aKSEDFUTdIk7K9/qqA6gm1Bvkiq2+?= =?us-ascii?Q?c02dKrXgBtbteJIjYvmlykCW9AkHdbZeELs6+jcJnRoPWvbyuCVT1IS3b+Cq?= =?us-ascii?Q?wzUkWbUZd+aJsPozw3tdHoxvjuGb6YYMDCx4olHr6MIRKbDTPv8iZJlg6DL3?= =?us-ascii?Q?IROZXUHXEJkoxeGgIwNEzqzJe8qX915wN2SMjSlAAqSjD9p4EEJllUReIk7u?= =?us-ascii?Q?mnrwbMi6WnobE7NoO5c4SbfAkozqa3iq9L8U8QdYJvLYFkqN5br7M8M/GRwC?= =?us-ascii?Q?j2dLZuRk9GWqrLTm1Z1S9a3N7JItHmy6aYL7bJJh7/SXCyflOWLjjZan96aY?= =?us-ascii?Q?yP0hZtHvdydLFIr/Qd+wBqn7lMMhfzrd3Iz+PA6zsiZgCrcJJTFtzYm0JEpW?= =?us-ascii?Q?9LfWRthH7Bu68aiQBb4tqF8+HUAS+e8dHU4z4yoODRDxy5ZmW3p+p7E3GxV1?= =?us-ascii?Q?cYsdcLTZ40Br1IvWC7/Hk4dWqR5DyVoFeG7WqvboE8adm0V+6citNp1oPJKs?= =?us-ascii?Q?7iFtg7O9V1sqe2CWr/NSPk+NT9zx0yJ4zyaF/4m+0uITHWntDuKVOrJlw+Dz?= =?us-ascii?Q?4UorQ8/Mfh4msz2/qUWYSGQULV7oCkzelC0rMTl/r8Uq4kqJGH+dv14IpCIJ?= =?us-ascii?Q?6SHLOR6cDM4e8HiI++bWjjjCZrHiPeDRGgYy4ReOyuHTpAMnfu2cZgaKVzji?= =?us-ascii?Q?3eqw0KEr3zEDZHDsey3YlF53dN6PvG8UPe+8KHg3PjZYuCueLHFzIhf9KVUA?= =?us-ascii?Q?xXBAza28fshNEzRBtDHWD7gMfmvHiIA=3D?= X-OriginatorOrg: suse.com X-MS-Exchange-CrossTenant-Network-Message-Id: 2fd58ffa-653c-4bbe-bb4c-08da2433d39b X-MS-Exchange-CrossTenant-AuthSource: HE1PR0402MB3497.eurprd04.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 22 Apr 2022 07:43:43.9414 (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: YrgrpajtmwMzpuWtBJKNJdka0dSZaC7f7ei416b7tBAqQaoQEHK/fzdU5qwmw0ZPSNXcnu/aPm7/aZqVG8LJXQ== X-MS-Exchange-Transport-CrossTenantHeadersStamped: AM0PR04MB5876 Content-Type: text/plain; charset="utf-8" This patch implements the simplest MPTCP scheduler, named bpf_first, which always picks the first subflow to send data. It's a sample of MPTCP BPF scheduler implementations. Signed-off-by: Geliang Tang --- .../selftests/bpf/progs/mptcp_bpf_first.c | 32 +++++++++++++++++++ 1 file changed, 32 insertions(+) create mode 100644 tools/testing/selftests/bpf/progs/mptcp_bpf_first.c diff --git a/tools/testing/selftests/bpf/progs/mptcp_bpf_first.c b/tools/te= sting/selftests/bpf/progs/mptcp_bpf_first.c new file mode 100644 index 000000000000..0ca9754c078d --- /dev/null +++ b/tools/testing/selftests/bpf/progs/mptcp_bpf_first.c @@ -0,0 +1,32 @@ +// SPDX-License-Identifier: GPL-2.0 +/* Copyright (c) 2022, SUSE. */ + +#include +#include "bpf_mptcp_helpers.h" + +char _license[] SEC("license") =3D "GPL"; + +SEC("struct_ops/mptcp_sched_first_init") +void BPF_PROG(mptcp_sched_first_init, struct mptcp_sock *msk) +{ +} + +SEC("struct_ops/mptcp_sched_first_release") +void BPF_PROG(mptcp_sched_first_release, struct mptcp_sock *msk) +{ +} + +void BPF_STRUCT_OPS(bpf_first_get_subflow, struct mptcp_sock *msk, + bool reinject, struct mptcp_sched_data *data) +{ + data->sock =3D msk->first; + data->call_again =3D 0; +} + +SEC(".struct_ops") +struct mptcp_sched_ops first =3D { + .init =3D (void *)mptcp_sched_first_init, + .release =3D (void *)mptcp_sched_first_release, + .get_subflow =3D (void *)bpf_first_get_subflow, + .name =3D "bpf_first", +}; --=20 2.34.1 From nobody Thu Sep 18 08:11:42 2025 Delivered-To: wpasupplicant.patchew@gmail.com Received: by 2002:ac4:a898:0:b0:4b1:af33:c52d with SMTP id z24csp234872pid; Fri, 22 Apr 2022 00:43:59 -0700 (PDT) X-Google-Smtp-Source: ABdhPJxEZwnRiY2C2rznDEfdJzQzEdJjIggF+D2p7Mi0o3iNqudr3nsukzrHDfnnvunEdXnU3b/W X-Received: by 2002:a17:902:6bc2:b0:158:a26b:5884 with SMTP id m2-20020a1709026bc200b00158a26b5884mr3112857plt.38.1650613439403; Fri, 22 Apr 2022 00:43:59 -0700 (PDT) Return-Path: Received: from sv.mirrors.kernel.org (sv.mirrors.kernel.org. [2604:1380:45e3:2400::1]) by mx.google.com with ESMTPS id w24-20020a63af18000000b003aa93eb4440si3622078pge.562.2022.04.22.00.43.59 for (version=TLS1_2 cipher=ECDHE-ECDSA-AES128-GCM-SHA256 bits=128/128); Fri, 22 Apr 2022 00:43:59 -0700 (PDT) Received-SPF: pass (google.com: domain of mptcp+bounces-4853-wpasupplicant.patchew=gmail.com@lists.linux.dev designates 2604:1380:45e3:2400::1 as permitted sender) client-ip=2604:1380:45e3:2400::1; Authentication-Results: mx.google.com; dkim=pass header.i=@suse.com header.s=mimecast20200619 header.b=WnLcf+cX; arc=fail (body hash mismatch); spf=pass (google.com: domain of mptcp+bounces-4853-wpasupplicant.patchew=gmail.com@lists.linux.dev designates 2604:1380:45e3:2400::1 as permitted sender) smtp.mailfrom="mptcp+bounces-4853-wpasupplicant.patchew=gmail.com@lists.linux.dev"; dmarc=pass (p=QUARANTINE sp=QUARANTINE dis=NONE) header.from=suse.com Received: from smtp.subspace.kernel.org (wormhole.subspace.kernel.org [52.25.139.140]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by sv.mirrors.kernel.org (Postfix) with ESMTPS id CB2AE280C0F for ; Fri, 22 Apr 2022 07:43:58 +0000 (UTC) Received: from localhost.localdomain (localhost.localdomain [127.0.0.1]) by smtp.subspace.kernel.org (Postfix) with ESMTP id 267E223D3; Fri, 22 Apr 2022 07:43:58 +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 9708E23CD for ; Fri, 22 Apr 2022 07:43:56 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=suse.com; s=mimecast20200619; t=1650613435; 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=WnLcf+cXJjLfbnTg7ID6kFhxEjSwe0PT41DKEbGREJSaQ9Yvv3vdLZSEBHh98kVL7lq40b d1gZg/9NKF2Ccrd8CagcOcUaw2SvaNV253ijLfQ31Uoj+ntCUNwux1cpoU5e8IYWY694kY YaFuvr63crBtBDJXa9lL7ndO+k8PxBU= Received: from EUR01-HE1-obe.outbound.protection.outlook.com (mail-he1eur01lp2056.outbound.protection.outlook.com [104.47.0.56]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id de-mta-6-F4Bj9IETNqCAVuTLqXFZKg-1; Fri, 22 Apr 2022 09:43:54 +0200 X-MC-Unique: F4Bj9IETNqCAVuTLqXFZKg-1 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=kW8xhxLMGBDxhgYanFt0H0WCYvopKpnrQ/NJ7yqT4WnFAhWn5AVZ5BjtDcRJDIpMqrEXHvVP1XFEEsvIm/qGI0hGnWwD1s/iNATurYauSDmbGyGd37S7K0hRam/KAaWAOluPfFNun0bJbqYTU6cAinZMdtCIbndGevv7mxwzih47e/azbIXiYvxf77OpZFdPVT1VE1bs8NcFKg2II4/HgkmZal7s18Xc++cD9qrggs995nXzFShOoU0A2Ugtc3bbRfxo8T3RAWfBhRyXKq6bmK1FhxpMMwMrr4M6JQCeM/JG9zVk5WopQN+kAgfldpkk0IWrBSEHM42Ep6k07JgZPQ== 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=hlmM9P5CsZBxv4gWch1fK8NEE0obR2oKpoL/ZAS024EkNfiBerPvDqkoKuMNhGqdFMFtA54MQRX02hTuJzV59aGdxPPQ9qf07mD6oGugTfEjMH0TQwttp9rOCv+sQVzszY16nKUvDA9MgJueFAI5PQomlBXrSppjG+snxNn6Rti8ztjNKPqEJd2Ax9Fu+ngJC2bF68JXnEkYHzd2AnOuLW+DCn55O6KaBgQtiD0sBOodxYIVgEjvwkP+2unQwqtqj2Ru0XARpzIjtdmnuHIAjla2tMFP1zCTbwMj4f/VpHa5rZSwrHd4DY8GGy+8Ub8Iudc9yhhIGnVuYdTkpHc68g== 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 AM0PR04MB5876.eurprd04.prod.outlook.com (2603:10a6:208:130::12) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5186.15; Fri, 22 Apr 2022 07:43:53 +0000 Received: from HE1PR0402MB3497.eurprd04.prod.outlook.com ([fe80::9974:fd5e:e3c0:14dc]) by HE1PR0402MB3497.eurprd04.prod.outlook.com ([fe80::9974:fd5e:e3c0:14dc%3]) with mapi id 15.20.5186.015; Fri, 22 Apr 2022 07:43:52 +0000 From: Geliang Tang To: mptcp@lists.linux.dev CC: Geliang Tang Subject: [PATCH mptcp-next v14 8/8] selftests: bpf: add bpf_first test Date: Fri, 22 Apr 2022 15:42:56 +0800 Message-ID: <2032cab8c752d0258ee16a6b9b2825ef21b51d0e.1650613135.git.geliang.tang@suse.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: References: Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: TYXPR01CA0055.jpnprd01.prod.outlook.com (2603:1096:403:a::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: df2c2b9c-fc0e-4aef-397d-08da2433d8e8 X-MS-TrafficTypeDiagnostic: AM0PR04MB5876: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: 6GbuDtNIkm+yWxtFn5tONUNozSoHp1VFnXPSimfKhD/ZpoRJGnsZfUiQ2l5zAUlYEijiG64ImsbdQ/wyF6eH+nGg/iZB9JpPbz1lK8eR6LFaop6K9yk284niE4oxp798rlEvaarmLrJYW2hFfxVEzAz1p9cvgshCUP8/9gEbfuhsnpTMsk3SAIewhHwaAfZzcpNoS7XP5xAlkoVM5TRg7/+PYzL1S3oCu0T2hVYzZdUBPYkGIgjPF0QpewDA3GmCCwm3+HLqACo4YskpFEapPoAiK2mklFKkvuBIc/0adDo/agwVaSTu6BGGI2oZ54TmP4m7RxtpqW76biMP12ICzzrGp4N30Ut8dSOuCCL88Yp5373Fn9eIiEl/OySy4okET3FEZlygQ/q9BrphTTeFupe2cbQad+wFg1ZPOjyxHS6MQ5pRB7dURcDqUD+KAt3I7HxlhCvJtMVA1hXRXIs95p+XZ4l/BOEOxzJcx7eBmWNtKghKG44E1o+3rygjXtkFdIZHoEgP6FxQCS9+8LpkvYnloo8zsSnecoW9snMQ2KMOQhXrLIZ4dPYa5JjYMibuiEGBeyE7KqN02drLP68QgTMpZ8peBjq0NLsDL2zGbkHiGobajWs7pWW8mIdR3HxvVIVpgul9orfiZyY7h1ohgLf9K+3qeixVKJiTsxJ5aXM88Rs4Zaoe4ez/7DGhj9Us 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)(508600001)(316002)(86362001)(5660300002)(6916009)(8936002)(6486002)(44832011)(4326008)(38100700002)(186003)(2616005)(2906002)(107886003)(6506007)(6512007)(66476007)(66946007)(66556008)(8676002)(26005)(36756003)(83380400001)(13296009);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?V6icdSdVrdqmkq2Kz1aufoSwDxtQv0SmAZ2ALLlt5AynMb2BIgrm3nnzLaer?= =?us-ascii?Q?tG3xdyQslHzGTkyDb+iEtkK6IgRB7dnLZsiw/bdiROopWwf8PPA9wqdu+hjV?= =?us-ascii?Q?mAeVlQdpd8cuUWmexOI6HRWZgV/VpfHCrBRKdRtgas10ZLEQ7FFG6ynada8M?= =?us-ascii?Q?zwGkbMHiGu6c/dQdxhkFMzvCyJLoqtFvXUPJxulyumkE59VerqDiooF/Ym2/?= =?us-ascii?Q?S6MmKnhZ03xOqYKJJBexExeCCbi1qQrdfduXoofEtU9RNwjDGh9QTx7UlCPt?= =?us-ascii?Q?UKGDnR9SH8vLxuOb4rOx9nqyRk8IxYvS9+JIgiZpu41CB5BTXQR0PWroDLhV?= =?us-ascii?Q?Vb+REbsEHW3z0hHd388mHSkaM3vteYmsCb3MIIcURi+oIVFGcVcKF0uHx2o8?= =?us-ascii?Q?98DurlGJ4cEhIHo7w1LPNeC2q06xQPBpTwvJxtg9qIjeYfznnmIoZt9zfN3Y?= =?us-ascii?Q?M4NxqH6fzibFzebUkT7O+vd/vrkfbdfnKlFsk1CIklpm0vN4W9RXSDsKNCcn?= =?us-ascii?Q?DlFW8lkIbTHc2B+V9+mbJ3DI+73PDpyYDQU5GfdRYi8BmRTvZnHJq3dLP2to?= =?us-ascii?Q?u/H0ktQpfsBnKGBfvPUV39D1jbT9o8X9zancNT8A+ySHXtVSSblf+rKwAvqj?= =?us-ascii?Q?gHSlSTfG5wYLoX8jdIIJ/OBGFDYdyfkVS/iB0qgw06n459DjrFfRuNnFbSZo?= =?us-ascii?Q?+nmjyemekYXn2ZGKdCPkgeiXixK6ZF1UkBB0SlGyDpLu/eqt3dbXlORnHRL5?= =?us-ascii?Q?Cg4bOXiDuooSaAG/veer6oS4t35EsjUrr93zNpklx1zWhaOonqrIAD39C2LC?= =?us-ascii?Q?0rjMG3kH0htj0c4bBR2SLassIJ/KTdoR+XZgSLHmJySwYm9uR2UTXeEgJ6FH?= =?us-ascii?Q?h1r6C9cjsP+BeM9Sd989vxcDp/Viz6TD0L+M64iEigJ4ygpzrouwkiOFgXU6?= =?us-ascii?Q?Xw8UtcXAnxcNEP3VYW5s8eg3aZTZ+nI8sV+5IXGeRw/VJZuJk0c216bmgT22?= =?us-ascii?Q?0z8mFDaWcjIgZgf7Ay9LMBMBBP61a47m70dM7/yXfn8qYdUtz+ewl0Wb15Di?= =?us-ascii?Q?QrxvFkim7sUeDO74/g4fPm9DhOAIxyONZHgX9hqYHumKJsdEvC2uT0oDRIwp?= =?us-ascii?Q?i6Z9qdsHTbHqyArNC+vaaMmA9hTsHLnlrJp1owc+Kt/TSgLTAx5B62ciCcFJ?= =?us-ascii?Q?63mKKJajRQg0iHvFUw4xlo71fSsBisXY+T5GvMLqsFkMo9g7OHZ1R2AMLmqp?= =?us-ascii?Q?QGUMjbTm3QUtw9C/AJnfYFUCHjDLPFh90Wn3nJhJi1PENY7Gp0UScg8RCPhJ?= =?us-ascii?Q?J4wvGx7UGVi7Aan/kR6kWh05425V3sq2sfaxk5d/VNls8xQRjMob3ZNQMKc3?= =?us-ascii?Q?L+bVc1+BBtZp1VvSVXFfelG3dYw6ABFh7dTY/3MMpcris0vI6RK+ZgrrdJUJ?= =?us-ascii?Q?CWaFKBs+z8dLRzSKSGuIzG5sjDn65SdqNsg4pshtLKrrCOej+0dA+qEW8Wj6?= =?us-ascii?Q?w3Jx1ZPtL9oqwnRWbMU5YaN4belVQjvqzpT8tKDcnLgv5h25N1Su8fMOuyc1?= =?us-ascii?Q?RnorDNK7aJAq/wXc/Z4OksWKj5pitpSbY3X0jHdkTaqLiB6mOxqhGr7yD7F/?= =?us-ascii?Q?65xqXTYuEt5IkKX8RSsxj8we5EwkLkSqMqZL8eiEBx5PlFT/9XhVUJFT3hle?= =?us-ascii?Q?gpYm73sWC4b/hvU7VrfmQoqnda3njuKP5Fwr3ontlRLZedMSYe9n4Hmqu2/5?= =?us-ascii?Q?zmIFHddaeYyVQlhuFiDJ+4SfU/ozJQ4=3D?= X-OriginatorOrg: suse.com X-MS-Exchange-CrossTenant-Network-Message-Id: df2c2b9c-fc0e-4aef-397d-08da2433d8e8 X-MS-Exchange-CrossTenant-AuthSource: HE1PR0402MB3497.eurprd04.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 22 Apr 2022 07:43:52.8938 (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: ++Jc4hhVQAHNdmatNoDpc9+YQrWwt4N21bwKaE5Ciu1RwUQ93D7PWOI1BKWc8Z5pbVT/nO8NTlG7pj820LTa2A== X-MS-Exchange-Transport-CrossTenantHeadersStamped: AM0PR04MB5876 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