From nobody Thu Sep 18 06:42:54 2025 Delivered-To: wpasupplicant.patchew@gmail.com Received: by 2002:a05:6a06:869:b0:4b8:7781:bd2f with SMTP id d41csp1464252pis; Wed, 27 Apr 2022 22:23:35 -0700 (PDT) X-Google-Smtp-Source: ABdhPJybkPH09lK36Loh3dOzWS0dvLJ3ZG4yoxpt/LO+uIxQJJHu0+0wpPKoeRyEVEC03mHYsDBH X-Received: by 2002:a17:90b:17ca:b0:1d9:a666:b02c with SMTP id me10-20020a17090b17ca00b001d9a666b02cmr14955254pjb.219.1651123414959; Wed, 27 Apr 2022 22:23:34 -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 i184-20020a6387c1000000b003c17253e66asi1463123pge.829.2022.04.27.22.23.34 for (version=TLS1_2 cipher=ECDHE-ECDSA-AES128-GCM-SHA256 bits=128/128); Wed, 27 Apr 2022 22:23:34 -0700 (PDT) Received-SPF: pass (google.com: domain of mptcp+bounces-4944-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=jpn5tHpj; arc=fail (body hash mismatch); spf=pass (google.com: domain of mptcp+bounces-4944-wpasupplicant.patchew=gmail.com@lists.linux.dev designates 2604:1380:45e3:2400::1 as permitted sender) smtp.mailfrom="mptcp+bounces-4944-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 3B5EE280A8E for ; Thu, 28 Apr 2022 05:23:34 +0000 (UTC) Received: from localhost.localdomain (localhost.localdomain [127.0.0.1]) by smtp.subspace.kernel.org (Postfix) with ESMTP id 4F5C2A5F; Thu, 28 Apr 2022 05:23:33 +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 445877B for ; Thu, 28 Apr 2022 05:23:31 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=suse.com; s=mimecast20200619; t=1651123409; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=nZ1EoAt/ZeVfyTsL+JuePBVq/k6t0m2m2CH6eYEln1U=; b=jpn5tHpjxxXOJwS3Ik02zOb163YZcoBQcBJV6pFon+kiMKw7gNotxmD4wjyVNgNMwGIE+p 541dYtibOHGroi13yLCqgHhkuhQTr5q1WJB3er4UVB77kXC80xzEQemAscB7BwSVevwww2 peoxuaBNstGF4uWHcLRtunh/1zxMBxw= Received: from EUR03-AM5-obe.outbound.protection.outlook.com (mail-am5eur03lp2051.outbound.protection.outlook.com [104.47.8.51]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id de-mta-19-_0O61YjlP7ajQaq0zyy3dA-1; Thu, 28 Apr 2022 07:23:28 +0200 X-MC-Unique: _0O61YjlP7ajQaq0zyy3dA-1 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=ErJ1NX3DEJnDTz2d6Vd+T0m3zGGLjmrTGW1+DoKFJQnFswfi+9jHrFDIvNwOGTQvKCzkIWw8aK8Akcpl8SUrVwa3/XCglOfYFd9ONNHtb4dEk+NNaej9NZUAZtrqAN23DrXrdXWiJRpwVAN7TecM6hb52+q+xdqq+XIjaTbxlOrKS4QqrWtUQJA7BZ8wzyp+jxKXj6bRPCgxbPCd+9N7B+yXLDPQqGqUHK9DabsAAhj/MkIHIXrLdLxphrYfETuW9m0pl6y052qShRvj2eyDFNjQ7fqFOoZPbd7ITAZHOQMfUJ1lGWCmVcPEG0Qqf/Rh/bAWpxlStujsx/BFDw/0nA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=QEjn6iEVZ+w/+dyplNuWhzUfwIx1yEX9TzuaJzMTzqU=; b=A0hk0jD06uctCzqhz1lwqgCKsFENah0N+X7vENObRlhIciiO6najuqt7jDFaWvNmSMaqgg8eR7NZlzbn71hHkwpEwZuu9RBGLX+NxxnV59BPh9c3R+nbFUdAAC1v0t4hTjq+LiofiZAw7hoqdm0uE/fQBmbb3IZjaFNlfaegCwMYQDkMXN6ISwMGtgt20GUkD0fgincOPJl0lZpFYr0w5Gw0hRBkGSWEAydGeLh17PkrxeuSAyWeEx92gomb8DeEdvcSaO7Bq7BsHLDIvJzNjToPKHtaTMr4vUVnjXSpStHr8GdEnE0XFuCLySnMIXTcZOLub/+LvPxrPY8uM3rn1g== 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 AM6PR04MB5653.eurprd04.prod.outlook.com (2603:10a6:20b:a6::13) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5206.13; Thu, 28 Apr 2022 05:23:27 +0000 Received: from HE1PR0402MB3497.eurprd04.prod.outlook.com ([fe80::9974:fd5e:e3c0:14dc]) by HE1PR0402MB3497.eurprd04.prod.outlook.com ([fe80::9974:fd5e:e3c0:14dc%3]) with mapi id 15.20.5186.021; Thu, 28 Apr 2022 05:23:27 +0000 From: Geliang Tang To: mptcp@lists.linux.dev CC: Geliang Tang Subject: [PATCH mptcp-next v17 1/8] mptcp: add struct mptcp_sched_ops Date: Thu, 28 Apr 2022 13:23:28 +0800 Message-ID: <22c172814ef2369523d9bf57803fda829ec97ef8.1651123078.git.geliang.tang@suse.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: References: Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: HK2PR03CA0064.apcprd03.prod.outlook.com (2603:1096:202:17::34) To HE1PR0402MB3497.eurprd04.prod.outlook.com (2603:10a6:7:83::14) Precedence: bulk X-Mailing-List: mptcp@lists.linux.dev List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: 5d8eeccf-4116-4dab-e3bb-08da28d7396e X-MS-TrafficTypeDiagnostic: AM6PR04MB5653: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: fmpobAICrsoPdVZqTTsNdLIglxKb6fro1PUewvNK7583L0TWCgisHHkvO1zSpnFEma+kzh/tZIVzx58TMF7N5BVG7bRZR92aUmoEdQMydlEI8pa0uW6yHLXvGdoy6hiUU6tkfa9EhgdsYv0n3CW6GZA5BBLBBoaYbYPa844/e+a3bJLYzSpZt7BZyVqRURzzOTPp0xiZczfCne6A9wmEVvqhMKwdFRJbLNJG1+f5wHHUBCeFQOWWtdwq7R/aQ8VGYY6pTEj7yjbvIoS/1Ekz4KJ5pr8jVe+Yn+eF/TgcquzIfnya5cln31k7D5xoLKfEFFbX7bXnBfgGECQ8W+H/QWhlqTj3hbt7AqJcP8p7CNDp6ksIH2iRXQkJoQrdGPUrXhTfz3BQEDc6lkwrLazSBSepV8Wwk9dgKfCNC49CvlFyjkmyhdz8TPDwbDvlOC3qRsLrI0rI3ezcqxlFXkv8CpNIY6YLRqJ8spw7i7inUENzb85whlIs+lH7yIL9qO0mHkhY1nD4BMz1cgO9yxPaLHvKsz+fLDJb/MCFCqlj/pmNtboOvM1IJn6Cuv9BY5VbhdjEVdIoNU35ZXBZEDsB+N8XsP5MEJqNPEdxHf+e/hN9NGvev7xHJthtuBnH/mDrunSmLFDylAhU+VnODwFUO/AamuO7DhIe66tLeNXyS2VBsPqdOBTD/8zEBXR+FAea X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:HE1PR0402MB3497.eurprd04.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230001)(366004)(2906002)(8676002)(66556008)(4326008)(66946007)(66476007)(6506007)(38100700002)(5660300002)(86362001)(44832011)(8936002)(508600001)(2616005)(83380400001)(26005)(6512007)(6486002)(6916009)(107886003)(316002)(36756003)(186003)(13296009);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?+GoE+LNaAEmxnZglEz4x5OT7FeLLzUT54miexE6RUkvvcLWvTC15mPoK1bMb?= =?us-ascii?Q?XriD/qXWPqHXUdCOlIVUdfr2+xd527F4jy4tVL7F1M2oT1gYH2G6l+TU0zVp?= =?us-ascii?Q?DOFT1XOHfYf6sSRWkUcL9jqdVLXhSaAEAlww2OXyDQodHZFYBqRdxrImMneM?= =?us-ascii?Q?WKJsCz7CkFlM0euFlexhJtqVmcTpzpbOBjE4yXrf5w7dghwhDtYCzPIbBciJ?= =?us-ascii?Q?O04JZDiO3P6iUppPP0jMFcg9BpVrp0FvJp3f1kHKKzqPyuGSyEFb+wEE74pK?= =?us-ascii?Q?v5xQ7y/lMs+kEKrjhmsUKlEKJZF5gJCpHYy3a91SB5GJ3mb1vBYlhpfJ7CFi?= =?us-ascii?Q?4qV1Fn/qRt+zgNCnxsrbjSRMFaZWE5ppss5PM3Ebj50cAT4IUP2emeFWr31C?= =?us-ascii?Q?WWNx1fr5EcCX9DziUXwNd72PSUJmCUgihhdy5m4awxEnbzXMEIQsdMHz0WPE?= =?us-ascii?Q?HrtX7Fe1TRmP9twkVvJ0ZcLSpN7mUmhpJYCPOWCNjK5MVdEyWIfpbZnNQq/a?= =?us-ascii?Q?65p8fkgZdJQvTZUqP2CkGNtq8capy8ycriCWRAMqLpmqoapTh76oct4eP99Q?= =?us-ascii?Q?beFeRi6iXmFligzWf6lRdcyqsnWtmliPCx4d1S5Z4rONubMQLrT+Oy2Pl6Cz?= =?us-ascii?Q?c+Mqni5xjYAcBkYPRMBuNcls7pMygITLL8z4hOC4sf6FQyFYtKwin+Q42wMF?= =?us-ascii?Q?jZgx2wu3IXzDoI/9leRejbIlKzFgXL6YAjJamvd0ftpfVVtm5twG/n+McEsg?= =?us-ascii?Q?dsvJo8eGd+YWRNqbqAVsTs4ZRiGPZ1KZcWed+WkvhLjc9MS/lyZ4o1jYSct8?= =?us-ascii?Q?bwA1Txz5bFbK6Y2Jub7EfmTc95SnF8ulofImMD6kpKI91j8FYQ+wgm+7qSf7?= =?us-ascii?Q?kUP45AfTgxW0hrE2XQIleJJ9Jj560sZrRDinmaj/i+bd+VYdgQiC17XveeYX?= =?us-ascii?Q?Nffp8iR5PL0+hXMXkgfDdRp11SLCUDdVaE7HzH9kBkuX3/WxuDixoOOXLG92?= =?us-ascii?Q?MkaZSHcKkmY/QqtgyPvNYqWdL3d1cSMnsm5bgbrtKImA60yQ8YiUWGNJCPwf?= =?us-ascii?Q?3KBW/xkoh7rp85V1m/AgxjDhF/4pETJum5W1wiXF1RttIXoPGSrWeaZr2VH8?= =?us-ascii?Q?gfdBNXzQ8Jj9chH1pNehVltkC27xubiWFLWQcI5zKnIkw2HG35a3Dx3va5j/?= =?us-ascii?Q?Lra2H3hXF+8ZBe4I6/QK7q7Qh8VB45coeAgL4LJ7Czlt18zFby+zfjeGHGEx?= =?us-ascii?Q?gGJGQJm8JGnJ3TwYWFxi+gRZcuklqsZl7w9rRtrGOI0LM0wvyod/HkwKPT9z?= =?us-ascii?Q?BcdM7EqAwVx9C0oU0KWQz+S0iuYAo+CfBemkxEKoUy0m1hgaKXQt+l0qVTM0?= =?us-ascii?Q?ddpZDFjvWT4zqIMBHfFvQ1geVvkccA5ZtcvdiH8sDRmBjOGpiOtGPR4Y83zn?= =?us-ascii?Q?IeTpQ24KIk4P2s06Rm7XcWHgwdQwOpCQvD2M4mtuhRkfddVImD1TQOZR8ZGw?= =?us-ascii?Q?AnIYmEXTk7wtV0ZxwtF9m7riI+1niPrASqYipl4MnTSak/QXZMERsXyJjTA8?= =?us-ascii?Q?dYZmN6s0m3rrNUjP/sLK8n/RAoajseKTwV4aD0i3W0nca0zxtplE3YWZNbD8?= =?us-ascii?Q?QUBfOiPtnGYnZs+/LhKXs7ry5HyZDqWGCI+BCa9FlaI+tNWW0iAHXcmJ/bpw?= =?us-ascii?Q?rdILix2z41g6qq+7CqRAnO/D5SAgwuPeTBWDe/qGmjaeqGUv+FXsydx94KIc?= =?us-ascii?Q?Agtpz5QGkQNXl8kcHXpu90v2N5K6/4k=3D?= X-OriginatorOrg: suse.com X-MS-Exchange-CrossTenant-Network-Message-Id: 5d8eeccf-4116-4dab-e3bb-08da28d7396e X-MS-Exchange-CrossTenant-AuthSource: HE1PR0402MB3497.eurprd04.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 28 Apr 2022 05:23:27.5182 (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: tEpVmZXteJwTAWC8z9NjLa5F/FWpcnm6n087i3NJNTkJEM3mJT9JUVdWGOXff6IaJ5YfBmNqJ+m9K+oMaJgmbQ== X-MS-Exchange-Transport-CrossTenantHeadersStamped: AM6PR04MB5653 Content-Type: text/plain; charset="utf-8" This patch defines struct mptcp_sched_ops, which has three struct members, name, owner and list, and three function pointers, init, release and get_subflow. Add the scheduler registering, unregistering and finding functions to add, delete and find a packet scheduler on the global list mptcp_sched_list. For supporting a "redundant" packet scheduler in the future, this patch adds a flag in struct mptcp_sched_data named call_again to indicate that get_subflow() function needs to be called again. Signed-off-by: Geliang Tang --- include/net/mptcp.h | 19 +++++++ net/mptcp/Makefile | 2 +- net/mptcp/protocol.h | 3 + net/mptcp/sched.c | 56 +++++++++++++++++++ .../testing/selftests/bpf/bpf_mptcp_helpers.h | 18 ++++++ 5 files changed, 97 insertions(+), 1 deletion(-) create mode 100644 net/mptcp/sched.c diff --git a/include/net/mptcp.h b/include/net/mptcp.h index 4d761ad530c9..dd4ee7a77567 100644 --- a/include/net/mptcp.h +++ b/include/net/mptcp.h @@ -95,6 +95,25 @@ struct mptcp_out_options { #endif }; =20 +#define MPTCP_SCHED_NAME_MAX 16 + +struct mptcp_sched_data { + struct sock *sock; + bool call_again; +}; + +struct mptcp_sched_ops { + void (*get_subflow)(struct mptcp_sock *msk, bool reinject, + struct mptcp_sched_data *data); + + char name[MPTCP_SCHED_NAME_MAX]; + struct module *owner; + struct list_head list; + + void (*init)(struct mptcp_sock *msk); + void (*release)(struct mptcp_sock *msk); +} ____cacheline_aligned_in_smp; + #ifdef CONFIG_MPTCP extern struct request_sock_ops mptcp_subflow_request_sock_ops; =20 diff --git a/net/mptcp/Makefile b/net/mptcp/Makefile index 6e7df47c9584..8a7f68efa35f 100644 --- a/net/mptcp/Makefile +++ b/net/mptcp/Makefile @@ -2,7 +2,7 @@ obj-$(CONFIG_MPTCP) +=3D mptcp.o =20 mptcp-y :=3D protocol.o subflow.o options.o token.o crypto.o ctrl.o pm.o d= iag.o \ - mib.o pm_netlink.o sockopt.o pm_userspace.o + mib.o pm_netlink.o sockopt.o pm_userspace.o sched.o =20 obj-$(CONFIG_SYN_COOKIES) +=3D syncookies.o obj-$(CONFIG_INET_MPTCP_DIAG) +=3D mptcp_diag.o diff --git a/net/mptcp/protocol.h b/net/mptcp/protocol.h index 4672901d0dfe..221bb6b9860e 100644 --- a/net/mptcp/protocol.h +++ b/net/mptcp/protocol.h @@ -621,6 +621,9 @@ int mptcp_subflow_create_socket(struct sock *sk, struct= socket **new_sock); void mptcp_info2sockaddr(const struct mptcp_addr_info *info, struct sockaddr_storage *addr, unsigned short family); +struct mptcp_sched_ops *mptcp_sched_find(const char *name); +int mptcp_register_scheduler(struct mptcp_sched_ops *sched); +void mptcp_unregister_scheduler(struct mptcp_sched_ops *sched); =20 static inline bool __mptcp_subflow_active(struct mptcp_subflow_context *su= bflow) { diff --git a/net/mptcp/sched.c b/net/mptcp/sched.c new file mode 100644 index 000000000000..c5d3bbafba71 --- /dev/null +++ b/net/mptcp/sched.c @@ -0,0 +1,56 @@ +// SPDX-License-Identifier: GPL-2.0 +/* Multipath TCP + * + * Copyright (c) 2022, SUSE. + */ + +#define pr_fmt(fmt) "MPTCP: " fmt + +#include +#include +#include +#include +#include +#include "protocol.h" + +static DEFINE_SPINLOCK(mptcp_sched_list_lock); +static LIST_HEAD(mptcp_sched_list); + +/* Must be called with rcu read lock held */ +struct mptcp_sched_ops *mptcp_sched_find(const char *name) +{ + struct mptcp_sched_ops *sched, *ret =3D NULL; + + list_for_each_entry_rcu(sched, &mptcp_sched_list, list) { + if (!strcmp(sched->name, name)) { + ret =3D sched; + break; + } + } + + return ret; +} + +int mptcp_register_scheduler(struct mptcp_sched_ops *sched) +{ + if (!sched->get_subflow) + return -EINVAL; + + spin_lock(&mptcp_sched_list_lock); + if (mptcp_sched_find(sched->name)) { + spin_unlock(&mptcp_sched_list_lock); + return -EEXIST; + } + list_add_tail_rcu(&sched->list, &mptcp_sched_list); + spin_unlock(&mptcp_sched_list_lock); + + pr_debug("%s registered", sched->name); + return 0; +} + +void mptcp_unregister_scheduler(struct mptcp_sched_ops *sched) +{ + spin_lock(&mptcp_sched_list_lock); + list_del_rcu(&sched->list); + spin_unlock(&mptcp_sched_list_lock); +} diff --git a/tools/testing/selftests/bpf/bpf_mptcp_helpers.h b/tools/testin= g/selftests/bpf/bpf_mptcp_helpers.h index b5a43b108982..de20fbdb6d98 100644 --- a/tools/testing/selftests/bpf/bpf_mptcp_helpers.h +++ b/tools/testing/selftests/bpf/bpf_mptcp_helpers.h @@ -6,6 +6,24 @@ =20 #include "bpf_tcp_helpers.h" =20 +#define MPTCP_SCHED_NAME_MAX 16 + +struct mptcp_sched_data { + struct sock *sock; + bool call_again; +}; + +struct mptcp_sched_ops { + char name[MPTCP_SCHED_NAME_MAX]; + + void (*init)(struct mptcp_sock *msk); + void (*release)(struct mptcp_sock *msk); + + void (*get_subflow)(struct mptcp_sock *msk, bool reinject, + struct mptcp_sched_data *data); + void *owner; +}; + struct mptcp_sock { struct inet_connection_sock sk; =20 --=20 2.34.1 From nobody Thu Sep 18 06:42:54 2025 Delivered-To: wpasupplicant.patchew@gmail.com Received: by 2002:a05:6a06:869:b0:4b8:7781:bd2f with SMTP id d41csp1464303pis; Wed, 27 Apr 2022 22:23:43 -0700 (PDT) X-Google-Smtp-Source: ABdhPJyxLvMXwzcS5oUxoXTvoRG4a36jDF2tfi3/n0iFIefVoodcTjvunFeiGbA9qSkpr7XOoeFy X-Received: by 2002:a17:902:ef46:b0:153:81f7:7fc2 with SMTP id e6-20020a170902ef4600b0015381f77fc2mr32175259plx.26.1651123422916; Wed, 27 Apr 2022 22:23:42 -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 g11-20020a17090a708b00b001d2abcdbe50si3417967pjk.162.2022.04.27.22.23.42 for (version=TLS1_2 cipher=ECDHE-ECDSA-AES128-GCM-SHA256 bits=128/128); Wed, 27 Apr 2022 22:23:42 -0700 (PDT) Received-SPF: pass (google.com: domain of mptcp+bounces-4945-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="F/vJzmN0"; arc=fail (body hash mismatch); spf=pass (google.com: domain of mptcp+bounces-4945-wpasupplicant.patchew=gmail.com@lists.linux.dev designates 2604:1380:45e3:2400::1 as permitted sender) smtp.mailfrom="mptcp+bounces-4945-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 2E77A280A9F for ; Thu, 28 Apr 2022 05:23:42 +0000 (UTC) Received: from localhost.localdomain (localhost.localdomain [127.0.0.1]) by smtp.subspace.kernel.org (Postfix) with ESMTP id 44034A5F; Thu, 28 Apr 2022 05:23:41 +0000 (UTC) X-Original-To: mptcp@lists.linux.dev Received: from de-smtp-delivery-102.mimecast.com (de-smtp-delivery-102.mimecast.com [194.104.111.102]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 8F59A7B for ; Thu, 28 Apr 2022 05:23:39 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=suse.com; s=mimecast20200619; t=1651123417; 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=lOBPTlxkFMbhTt8Y3ecj3/tlLaNOgrV1Zy4XMF5XwHI=; b=F/vJzmN0RyjERGgo5QdGjZ7zJxFcLNEbGijgafy0PWZ60hLHZazsrd0ZiD0/32YB86aSVe 1PxMML+kosOtw2h2D9ZCX2L0gn85UPaXbb1z5Qftzu30PCXZkMxXEwdkEkM71Go5wNKnMI n45oBg/4al2PEtnLA8GjePVITlYAiGc= Received: from EUR03-AM5-obe.outbound.protection.outlook.com (mail-am5eur03lp2051.outbound.protection.outlook.com [104.47.8.51]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id de-mta-12-YRfkfJgXPUi-dpXXwbCE5g-1; Thu, 28 Apr 2022 07:23:36 +0200 X-MC-Unique: YRfkfJgXPUi-dpXXwbCE5g-1 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=SPbMIj4MKZ7Z4QK4d4iG2XsVlby2eHX/g5kBqL8to7tml3wOu3Aa+omzovy2u04vs7m4hRIBWAWoBFJX5jp0MArv/5RpKfmTneKk8mBycDOEjFksp+6Oy+PnFR52XQ4TtvYa3wsft2I19otlS8VEbNVi4CGREwXuXB6ZhYSEXmElpUdDcKA74bCpWavbfcpNsVkgUni2TNNh3NDiofUPgh6E1uFoeBPneyS74jLQrNqVYRFuZ8x6GtnaCmAmnGIfUFqveQ9F/YmubQjGOwhrCKlY2Sv332T9WsbAfH+qxVFhINaNjS6BgVvJ0enCDiB/1mWClUy0lbeDdKnC0YSnFw== 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=K/cvUEig5hCjDu+8NI9C954+fFyJjJZoqC9JDKuPeRo=; b=a1FOZIlX7ZAgXkn58ylccyhxJSmMNCkX3pUZKAE45YNIeLMSE8E7dE29RPkJBifv4cMSwXdf+i0/8kuYJ5NbQlCi72ISy6aszJa50Ji2wu0hZ4Nwzy84TOyphfUfg90haKc0dLOv53Y5l/Pcxm5dLCjx04weWOtFg0HrFXf60FlvQXIKWs2atgVlexNGMft2K3PUT6EM1eZK6a0WHdhuHUhr6+xF3v+SkTnqjf1PcCeMNN6ca35PGMPpTgVyVz3eRcv65ib/Eg22OO5ExCG+RLcIpHn1AKZtbTBmlK0dv5hNz9u1Cyi/WK8eg0Kx/8ValLttN1mrHZrU9q4TXeW8Tw== 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 AM6PR04MB5653.eurprd04.prod.outlook.com (2603:10a6:20b:a6::13) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5206.13; Thu, 28 Apr 2022 05:23: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.021; Thu, 28 Apr 2022 05:23:34 +0000 From: Geliang Tang To: mptcp@lists.linux.dev CC: Geliang Tang Subject: [PATCH mptcp-next v17 2/8] mptcp: add a new sysctl scheduler Date: Thu, 28 Apr 2022 13:23:29 +0800 Message-ID: <54cf9081326d816824d2a96ce72bcc2cb5e28c06.1651123078.git.geliang.tang@suse.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: References: Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: HK2PR03CA0047.apcprd03.prod.outlook.com (2603:1096:202:17::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: 7c6c73a5-04aa-446f-5fea-08da28d73db0 X-MS-TrafficTypeDiagnostic: AM6PR04MB5653: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: Q8WgpdYeHP5TxbQkPNpnUEOKe8JmX/o3aLPLhPM3gvlCJjd55v4wEIlBsHSS4fYK0j6jU1lGvsT5YxQILZtHzX8tTS5N9IScyPRk7kFa+oKSL8OwQFfOSAQkTl9wgKFYj9SFgzGv1fqg/ZiIKbGrIr7IcIuTnDBLXsmMxdraMrEDN1OoksuJf9hjUKn+YH+EH9LQ3NxMMzonmeTIuPHZvZezLHAGDUpAg6E8EpoYEUlMW2Lmm5iMYfKIqk7KMPUn6g1Y5CkW86p9rXBQwPo0xtg9sdT5qQ6WzDKxXCA2lHMwH0OY2O8ZW8WwZWYbn5MRAqrDIBXsaEH2tMn+PaZHHoQ9kk0p3wqMTmPtUFEq/9OQKS5jMHDhEwi/PmpnLksUAeSCAUQt0ug7s+pijLjA7DhxQ619bzE1QOocLh9fWeKWt7XkWQIHPq1/l7BxqtA52oTsHERroClljUCTvEdsP//9B6IfE0qlm2DmD04rSrFn8C6S3Sw2BYD9mZ4F6D9VMiC1h1E34pSvqRjaYtMdT93suAdzoTRnz6DECjK3SNVU+JWw1viZSYHg5wLX1XHjgsR/+zCFydnt+zbXNBtJ38PnXJ+37v6AcIpkkmrs2fVXFL2LzQcKxwPmzRidON3Ubfag4YJ6WPReymPbxBtu8DuJZXvAqVy08xcvWbB5xjPxzoDZsHteiucik2ZYn1hGtYvGQpGa61VzdjIIUWZ3uQ== 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)(6666004)(2906002)(8676002)(66556008)(4326008)(66946007)(66476007)(6506007)(38100700002)(5660300002)(86362001)(44832011)(8936002)(508600001)(2616005)(26005)(6512007)(6486002)(6916009)(107886003)(316002)(36756003)(186003)(13296009);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?sJzy5lEoZmtE4Nu2ep6wuhhHqQLAq/99fNgz/fI9sD+QgrdJK9OCQA38/LOW?= =?us-ascii?Q?wgTDgFj1Y8UICwjC+9WQ8u2IPEmLM+YkrbagpQi/G7CHCXcuXHeDr/A5o7Aw?= =?us-ascii?Q?sYq3vF3MVfoiM1k431sJf23iIcKM92bQz7nFWb3Kq8Vf1G6/hDVV/P9M7I/Z?= =?us-ascii?Q?dGxqX7nyvcWcyp8IPlgZ1Jb5/35zOVf8rljVo0XAqsYj9iHSN5hbrFw/w7TO?= =?us-ascii?Q?qfa44d2W+O35NyE+b0BMlwr1A46Myo5gfZcCBbb29Jv8aG39p0mEGHTGXmfe?= =?us-ascii?Q?ZIwDZt9FwyrSrJl8aO0/O1b/EusB+6eH7gIEf0BE0/HF8PaRudNHskoeqAxQ?= =?us-ascii?Q?chJKLcSjCSwinGNvjiY1JvF3NEMpmn6JMAE4RtHtRrhu4FFJySMjThcJ3X90?= =?us-ascii?Q?qcWTLwb06tadOyE4y6CVF3lfg8FI1HwpMx5Zgw6XB6tZ3GeN7QdCKKH13a9Y?= =?us-ascii?Q?FCCOOvODL9RnOLrTWLW9OCcVHVjIYzWpFpT4fFCT3+/A8RNrT4iW1GZ/h3QX?= =?us-ascii?Q?9q93EokZual0f80fBFGVnJ8E8mY6MsLs48W98FmhlxQx2pHXmhTfs+2/uwIA?= =?us-ascii?Q?/vz6tFCBhwZEZ0b65OifxrO6642LI3MVaTCoQA3br2BzadyhPC+lry8nBNoK?= =?us-ascii?Q?/vtLY1FDribSkvZmYyeV0rWCgE2UY+zIVlQ13CPxslOWJonZTmkBIMFJU8EB?= =?us-ascii?Q?t+NzXT/96CL/3IfPw/GDGTUq3Mh/AhH0OsPdTJ5cVuSeGGofqtJ19BZP9f8z?= =?us-ascii?Q?VwJlErRkY/5g6mNSONbKaRBFvJQTB+3tumXge1zkeAhX6a3nptXsfpJZXIks?= =?us-ascii?Q?MG4dVZfUwz8WUgIW7INcaocwn3IC/AYD2DFoWjoGVEWmfTQaRX/gwXW7Vjmv?= =?us-ascii?Q?zI76sFpmS+EFerJrTgqSmfTzCs/lsLfeHb2r+ypKFS7hZnlnEtU++ORv+4lQ?= =?us-ascii?Q?6FqTr5Q50qhj1Bn73SoV7oRLzi+iOeGnRbPJkl1caD+TB2eOdeO1ujxTJAjo?= =?us-ascii?Q?stVgqvRHDID7arRzS4B5yHDmbInpE2mWN3auidBsfbDcwM+sdih0XyEltkc0?= =?us-ascii?Q?RkhX+EQ++WVTL5u6xEGeOsCqJvuSor6A2LpMBAjxi7fnq9KIaFwFvc1uRx4e?= =?us-ascii?Q?Opt/ZBfVt62qe5FWMJoq+wcQorY/IRwLZMZqtfCkGmjdQ8Il9PSR4zXw0Qvm?= =?us-ascii?Q?vLT5Nj+BVrCVXLyyyEyv8thCV0YV7gXtIvNVZ1R/JtNcE1X6/D5O9+lF9Gcb?= =?us-ascii?Q?7Frjb4pBUKRcFUn2Bl2Npapa1PHbjObMAzjSlqhzHDMh2PRSgl2VZ/22dnIf?= =?us-ascii?Q?YT2dQ2FdmAt7f8TsBIHOmQ82A5aJq6B62WQtoiqeZI0mxZqr8yK9/YdwgFl7?= =?us-ascii?Q?/Nn4zVQMJiwqUQQo336EwWVBfWXACR7TiiLitvjNWhKTIK62bx8UI0SMEh5/?= =?us-ascii?Q?O2Oe2lhbcLj3nG+ayCUwqDvgqeHSHFN1JP7xX3ZfVMSDVLO89hmob7+6R0Hj?= =?us-ascii?Q?U0f2MYQHqXPrbJ2gSWBPcU8Y3nnoLU3KyxVt7n46jG42lFMgjNZ7yCpKBBB8?= =?us-ascii?Q?7LlPIDX7KXfg6UkFGqKKyz1lca/q4z/DXJH0GUmGESBqQbeLn0FDABT2CFCF?= =?us-ascii?Q?hx0n27m2yRDp1elgNKz1jtJmHsg0MMzKe2P5pPwcBGa+knAt5MFkIuDes0uc?= =?us-ascii?Q?TMIuUixEadS3wreJGi0h0esKHYZTZbDa2MocSdswpQE/ueLOJwaCtm//SmJN?= =?us-ascii?Q?Iz1yxC9ZcZLb/a1B9fF5pP8yfmkzxbg=3D?= X-OriginatorOrg: suse.com X-MS-Exchange-CrossTenant-Network-Message-Id: 7c6c73a5-04aa-446f-5fea-08da28d73db0 X-MS-Exchange-CrossTenant-AuthSource: HE1PR0402MB3497.eurprd04.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 28 Apr 2022 05:23:34.7051 (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: +trL5IT2CRIU6YmZqwLxU9+w/gfIXGx+G8ypqMRLTbQczuGVBslK3iutqxOAa42ZPl7OX19nmGYbK8ZU737RrQ== X-MS-Exchange-Transport-CrossTenantHeadersStamped: AM6PR04MB5653 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 221bb6b9860e..2f5ad12601cf 100644 --- a/net/mptcp/protocol.h +++ b/net/mptcp/protocol.h @@ -596,6 +596,7 @@ int mptcp_is_checksum_enabled(const struct net *net); int mptcp_allow_join_id0(const struct net *net); unsigned int mptcp_stale_loss_cnt(const struct net *net); int mptcp_get_pm_type(const struct net *net); +const char *mptcp_get_scheduler(const struct net *net); void mptcp_subflow_fully_established(struct mptcp_subflow_context *subflow, struct mptcp_options_received *mp_opt); bool __mptcp_retransmit_pending_data(struct sock *sk); --=20 2.34.1 From nobody Thu Sep 18 06:42:54 2025 Delivered-To: wpasupplicant.patchew@gmail.com Received: by 2002:a05:6a06:869:b0:4b8:7781:bd2f with SMTP id d41csp1464376pis; Wed, 27 Apr 2022 22:23:54 -0700 (PDT) X-Google-Smtp-Source: ABdhPJyiDJ1S3c0DGdFUHbyGXUvYv7Fb50HDmgwLSsVn7o7iaMuyPDut/pKzPZaQwKu4nwy8MQZH X-Received: by 2002:a17:906:2bd7:b0:6ce:698b:7531 with SMTP id n23-20020a1709062bd700b006ce698b7531mr28892977ejg.146.1651123433903; Wed, 27 Apr 2022 22:23:53 -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 q22-20020a1709064c9600b006e8be18a965si2894522eju.306.2022.04.27.22.23.53 for (version=TLS1_2 cipher=ECDHE-ECDSA-AES128-GCM-SHA256 bits=128/128); Wed, 27 Apr 2022 22:23:53 -0700 (PDT) Received-SPF: pass (google.com: domain of mptcp+bounces-4946-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=PrYIEqFV; arc=fail (body hash mismatch); spf=pass (google.com: domain of mptcp+bounces-4946-wpasupplicant.patchew=gmail.com@lists.linux.dev designates 139.178.84.19 as permitted sender) smtp.mailfrom="mptcp+bounces-4946-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 416F52E09A1 for ; Thu, 28 Apr 2022 05:23:51 +0000 (UTC) Received: from localhost.localdomain (localhost.localdomain [127.0.0.1]) by smtp.subspace.kernel.org (Postfix) with ESMTP id 6358BA5F; Thu, 28 Apr 2022 05:23: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.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 832DF7B for ; Thu, 28 Apr 2022 05:23:47 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=suse.com; s=mimecast20200619; t=1651123425; 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=yq2JfT5nk8OB7W21oSjURxVuNW6ex/ve5XNpf/rJBgg=; b=PrYIEqFVA5xHJkM9WaiWI/geIm+TzJONT5M/2G8AYof30Fg0oTeGoGIW3hqa2wfMj52Eqy 4K6zmeVVmy4fAIZKK36xVNWpb7tlDjB0jL3vy2sXHxL6T8OxgJbRpyFsBle5eN3NkEMkmK 6B+ZycRuGbgc7tAI67OtmUHIPCIARHc= Received: from EUR03-AM5-obe.outbound.protection.outlook.com (mail-am5eur03lp2059.outbound.protection.outlook.com [104.47.8.59]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id de-mta-33-gUZdTCoZNCOhAk2NF6nH1Q-1; Thu, 28 Apr 2022 07:23:44 +0200 X-MC-Unique: gUZdTCoZNCOhAk2NF6nH1Q-1 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=HbSS6HHU+Qf0bEUW5Dc9Zd6sRDZmLC/zdygfi01B3WdiMSmEI/vrGZAFFzY+G2X6j3MBsNcXSgMbr5HMu+agDCqi/1YombJwV51NPd2wBsfkovke264fkRrNLq/CRGeSAlUiBR2SUkWYihBneYZlM6qhWEHNlWpO1UBYTiFKTNbCYj1VCo9IxRT1GeGl4uUZdeaYs5wrhybrI4Zo1/S6WlpKshHBlJEUcYtCEZ76XHf4/dCp4gaPCL+0pMqlFYAf+vjvOFfOMqf/xl5nB+Kf51fS+xlbJy3X5C4khuzFis25YZJXikCtfHhE13SGOuGNdFSQBfbdgiURzmVIDFDRUA== 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=xUdSSIarwe/cjQWplVBsLsOF94GMvWL1e6fcj1kULxY=; b=VENeB9VTdRAmh9nunM0SDz0BUwKhVYQzC1j/nkbU/PQpDWOX3rLkkuAPoGVg8maNLE9gVCkDplSFzZpaMWFgH11big7ezInOBq0Z/5NCVWFdnjYv64nj5D2IXTvHxz+1bkxi1RrCi1FkxHhmT4nO2ATDiZX5kTxcsdAOEYzaJgg/Bkt2871dtphyltj/Rwx9UBx96vdODPAfmkTcv9mMlCgQ1Oqsxqm8FqjhcAmNi4YCMmLGiVL2S/z82UCMb7G7o1Zym8NO20Zi66GPr5aM8S9z119gXlslgx7ULctw9IJL9gZ71S7hGd8gKptaKp2fsvwAnE26+U8afZt8c74tHA== 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 AM6PR04MB5653.eurprd04.prod.outlook.com (2603:10a6:20b:a6::13) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5206.13; Thu, 28 Apr 2022 05:23:43 +0000 Received: from HE1PR0402MB3497.eurprd04.prod.outlook.com ([fe80::9974:fd5e:e3c0:14dc]) by HE1PR0402MB3497.eurprd04.prod.outlook.com ([fe80::9974:fd5e:e3c0:14dc%3]) with mapi id 15.20.5186.021; Thu, 28 Apr 2022 05:23:43 +0000 From: Geliang Tang To: mptcp@lists.linux.dev CC: Geliang Tang Subject: [PATCH mptcp-next v17 3/8] mptcp: add sched in mptcp_sock Date: Thu, 28 Apr 2022 13:23:30 +0800 Message-ID: <01d9e01005e1697bd14ee1114222306d44883691.1651123078.git.geliang.tang@suse.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: References: Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: HK0PR03CA0103.apcprd03.prod.outlook.com (2603:1096:203:b0::19) 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: 37c2b7d0-d911-4a12-a6bb-08da28d742c3 X-MS-TrafficTypeDiagnostic: AM6PR04MB5653: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: 9hlRMi04zTY052tWy3LnvqIVEQVJwIDxFpZj5jlPB0Apb8r6apOwXUxZtPjJQ+Q/msbgRUmmrUcDe2jKENQs657i6kczmyJ03ACXw1Ng8Ixa58iPUFgiwib01RU43bJ1xdHQxSB3fu5Bg/nwE7xTMz9GVQ0v6aIVGzcmolJhBLz/llppnVzLZEzG5i9xJUGvULdmxfPW9RgkgCqHhokOP+rV+xH1oaM9kX3jbQCJ8+H1lYdA/2xb0oNtnd+rAU/M/D0QkrzoR8D/p8quA/o3vMrTLDrD3kmorc+9vVKAVdqgb20341aySQroACwWbEvhMjmpp1UNvOh3heolknrPx0z56/UvS2WscG1HsPqtNL+6EtWuCAcm/n+2GavFul1LGBoYY5Zj1GsVQjd9eBJzIwQoSJHM4Y62Rd/KpaWOC6A3nXdSFTFOjiXoei9YEXHNLPmDOzkJaAkFciAFCclfeiKEkKzq7ZSEJaXn4QvSmWsMjrZKSWapu1rYamVcMOm2ZaZFDZYv69N9DC0UZ3vB0MvxuKcDVvqgfSOuwpfqIaPKCWECYJ451ufSJg27sZ8NwirIQ/9ZVO93yTKoDMeXSS0zrZhj+m0V8grBb5neUhoUxtnLnC4l1/HrAhyrtFvUtkLa+Dr1AmhSJl/1OjDQPCwZfLBTrfL6TLBZci42j2vtzjRnCEajEt1wip/XPLxXH0UwOyosW4YgeafyTmEW9A== 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)(6666004)(2906002)(8676002)(66556008)(4326008)(66946007)(66476007)(6506007)(38100700002)(5660300002)(86362001)(44832011)(8936002)(508600001)(2616005)(83380400001)(26005)(6512007)(6486002)(6916009)(107886003)(316002)(36756003)(186003)(13296009);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?Ttumj+/FiSY9qJa1SR70/lEuMx5+6kZbd5KEW7G8UN+taZwcDU8bKgJ296vt?= =?us-ascii?Q?Bgz4pmFPKEt3kSpfXsza2vNMgZSX4BkTuqx24mh5/X2EARryFSfqHWfrLi6v?= =?us-ascii?Q?Xrb9nY9T6/+Atyb26b+TZlF31sm5/AHMgl4/MVUpd4yxan1rTdENI4uNljIy?= =?us-ascii?Q?66cJ1v0c6USv+gK3BdWABMbxQGhigWmAeu4RclcgQtAdVU7MrydVAxmpHWak?= =?us-ascii?Q?GdULWtRq/VXg7Uf5xwSLkhLVH+OLVC2DqgO3oV6cvp4Ai5dU1H2QRbfRVm/Y?= =?us-ascii?Q?hyQ7O3rGSo8bA1K8W0cRgRuKLfHqN1Nu8NPyURh+ftSZIVh8q0N1nPb0ebeu?= =?us-ascii?Q?gtLMOZnJYkSRKEvt2wguLTgJhDpNySiqwye3tEA9t0t7PcClwTjbjv5txqca?= =?us-ascii?Q?qVn0hGrZ6XRcQHc6kIW+2SCOJ5RrWvOid2i9tzXm4UOVmOkuR+DO+/XCrje0?= =?us-ascii?Q?FPfu60coZSfmPSkj0qqjf72hZ+Fv0xSOo8KV3XEMEBbPBoVPU01n3AC/kPD3?= =?us-ascii?Q?wbdAin6HTYvnF2zkmVazO0XTaeq48G/adL5Qn1DRuQw78w7rB3URfbkZzg9f?= =?us-ascii?Q?7wDkYzoEY3qpTdiXLHLxaLOp5JiyJR+DoDrM6Fec3pu5jonop4dveBWTIFsS?= =?us-ascii?Q?gPyTOaRfVPWjuwlt59Y5SroVi+scdDz4y/7gGWLHMc9WvX5Tf6Z8vD/cSzAs?= =?us-ascii?Q?d7+IeL20X4ld8tB2FipvA5pnA5UycunI+GstDG5XvU0AwTW2ob0OAzj1AVtz?= =?us-ascii?Q?wJN+GY6Hr7DVPuSBd05A+sVyBDIEVBMNJdEFKjsNJfs7NcFwhSk0fNK8Rj1c?= =?us-ascii?Q?JjDw1JbPRL4pW7aJ1RWNOg/dEOOZfyHNW5TNbJ9LY6OsGFRuewBmcnFzle2k?= =?us-ascii?Q?9XIQPXoGwCEpVBv9ZG9aQjeYSPQ0dFmOUFIaDMLDF1ARekVL4PnZKLc3WCu8?= =?us-ascii?Q?TPCnK1iw1AcZc5A+KSRRQe/Ecr3xLRvWr3gR8nxEG4p2g1uE0mGPQ76c1XS/?= =?us-ascii?Q?+bRVUYagOWz49snaWrTPjedi1MCdT/JBjHkpd+AdH8KFoM3hdGJsTIgKyFeX?= =?us-ascii?Q?FDjQn7H8BGBz7C7unad+5zNVxWwbZapNR4ORWYaMgqzR1KsWb/eCZEguYSw9?= =?us-ascii?Q?rbuPirUljbclimSzrp33pmA5qbwcIo+6OMElb4kM3DrKByK+WVz8rMKLEm6p?= =?us-ascii?Q?i/Oy3BWeRGtcbV504D63Jx6NnzZkiZfN9uSoW1UbB41vFSrwCGpK2lEC25MV?= =?us-ascii?Q?PfY9GwmmovKK3BTypHIHIkFPsj/FTPNdBpw0yR3ZBqCG9+rTnPXK0U7Od8hX?= =?us-ascii?Q?SICfwGj44RVbT9Cm6P964DUyw0cRjQCUIXK2dit4remnnhE/cttr/8axmSin?= =?us-ascii?Q?3aGCQzRB8ye/XorqqhNpUuAkd89KFAKF/vEhyaVrYX+/lLQmZijkivc8Xfa/?= =?us-ascii?Q?ZBJ+6foOTmw7wWceQjYScXJUoEIUtK562o4XAQ8M96kctTNYECYKAdoh1OmY?= =?us-ascii?Q?2heC0AmJCaEFsEyrWNq4bIq7mLzRdo2rGqV76cmrTf8U+LNPD0h0ZR2J5ulF?= =?us-ascii?Q?+z+e/bI1d8gOFmT0stMjUAkZgueaJVPmepBqw+5BDNYc1gArb0KBgVTBNhtN?= =?us-ascii?Q?pPNlXezDiqQzQxFJAwb5Htf0u0iwjjUtc7qZMOCEEb7qVmwr/HVBPZin9j1J?= =?us-ascii?Q?ScTuc2M+Rozf/NY4xR/0Izl9XKmcm8KjO9kGf2rEFCf7LEFK42UDPUw3KS6r?= =?us-ascii?Q?CXFhfOfmQaBHWzIaEO4JYX9+C5n7K2k=3D?= X-OriginatorOrg: suse.com X-MS-Exchange-CrossTenant-Network-Message-Id: 37c2b7d0-d911-4a12-a6bb-08da28d742c3 X-MS-Exchange-CrossTenant-AuthSource: HE1PR0402MB3497.eurprd04.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 28 Apr 2022 05:23:43.1263 (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: G8sNwg8ejHZZ1i0uOkgc/7V1sdCqFibP6+/5mkU1Tp56hJStpLW4TKE//RHvcvruBrit0VSE4gIAvzeY6k3Nug== X-MS-Exchange-Transport-CrossTenantHeadersStamped: AM6PR04MB5653 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 | 33 +++++++++++++++++++ .../testing/selftests/bpf/bpf_mptcp_helpers.h | 1 + 4 files changed, 45 insertions(+) diff --git a/net/mptcp/protocol.c b/net/mptcp/protocol.c index 653757ea0aca..f599b702415e 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 2f5ad12601cf..723141a888f4 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 */ @@ -625,6 +626,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); +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 c5d3bbafba71..53773668b5ee 100644 --- a/net/mptcp/sched.c +++ b/net/mptcp/sched.c @@ -54,3 +54,36 @@ void mptcp_unregister_scheduler(struct mptcp_sched_ops *= sched) list_del_rcu(&sched->list); spin_unlock(&mptcp_sched_list_lock); } + +int mptcp_init_sched(struct mptcp_sock *msk, + struct mptcp_sched_ops *sched) +{ + if (!sched) + goto out; + + if (!bpf_try_module_get(sched, sched->owner)) + return -EBUSY; + + msk->sched =3D sched; + if (msk->sched->init) + msk->sched->init(msk); + + pr_debug("sched=3D%s", msk->sched->name); + +out: + return 0; +} + +void mptcp_release_sched(struct mptcp_sock *msk) +{ + struct mptcp_sched_ops *sched =3D msk->sched; + + if (!sched) + return; + + msk->sched =3D NULL; + if (sched->release) + sched->release(msk); + + bpf_module_put(sched, sched->owner); +} diff --git a/tools/testing/selftests/bpf/bpf_mptcp_helpers.h b/tools/testin= g/selftests/bpf/bpf_mptcp_helpers.h index de20fbdb6d98..a0b83fbe8133 100644 --- a/tools/testing/selftests/bpf/bpf_mptcp_helpers.h +++ b/tools/testing/selftests/bpf/bpf_mptcp_helpers.h @@ -29,6 +29,7 @@ struct mptcp_sock { =20 __u32 token; struct sock *first; + struct mptcp_sched_ops *sched; char ca_name[TCP_CA_NAME_MAX]; } __attribute__((preserve_access_index)); =20 --=20 2.34.1 From nobody Thu Sep 18 06:42:54 2025 Delivered-To: wpasupplicant.patchew@gmail.com Received: by 2002:a05:6a06:869:b0:4b8:7781:bd2f with SMTP id d41csp1464408pis; Wed, 27 Apr 2022 22:24:00 -0700 (PDT) X-Google-Smtp-Source: ABdhPJyhEVM6GhHh313YByMDd/Jo7wL2TAryErWCv9pY1eHcSla7MdzX9d2xs9KMDYTWE1je4EXb X-Received: by 2002:a17:906:58c9:b0:6f3:966a:7d5c with SMTP id e9-20020a17090658c900b006f3966a7d5cmr17702929ejs.728.1651123440126; Wed, 27 Apr 2022 22:24:00 -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 t25-20020aa7d719000000b0041d70e3a2b0si3042518edq.55.2022.04.27.22.23.59 for (version=TLS1_2 cipher=ECDHE-ECDSA-AES128-GCM-SHA256 bits=128/128); Wed, 27 Apr 2022 22:24:00 -0700 (PDT) Received-SPF: pass (google.com: domain of mptcp+bounces-4947-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=NINyrdoK; arc=fail (body hash mismatch); spf=pass (google.com: domain of mptcp+bounces-4947-wpasupplicant.patchew=gmail.com@lists.linux.dev designates 139.178.84.19 as permitted sender) smtp.mailfrom="mptcp+bounces-4947-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 9DF152E09AD for ; Thu, 28 Apr 2022 05:23:57 +0000 (UTC) Received: from localhost.localdomain (localhost.localdomain [127.0.0.1]) by smtp.subspace.kernel.org (Postfix) with ESMTP id 46F1AA5F; Thu, 28 Apr 2022 05:23:56 +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 637EE7B for ; Thu, 28 Apr 2022 05:23:54 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=suse.com; s=mimecast20200619; t=1651123432; 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=s2IN8PdJgpIrFFcCJE++X1b9h/mEkXrwblNsOzoZFFI=; b=NINyrdoKGBe+oyg2Pe/g+pBFQKGXhDtGtldpbfh/cE9zx3ZwStGc38yWiwHsBBaf77E1wq 95Sb088d51UVgv2LZjgpzV5ZF/mfB6XI5fTyEj767eTEMa/TF2/cJyblxlAqp6Zkp4EkS/ D6z7cBHzT7vnjE+lhkSJ2vTFuunOnyo= Received: from EUR05-DB8-obe.outbound.protection.outlook.com (mail-db8eur05lp2108.outbound.protection.outlook.com [104.47.17.108]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id de-mta-41-ggx-9kwTNPS5fBb4ffUcFw-1; Thu, 28 Apr 2022 07:23:51 +0200 X-MC-Unique: ggx-9kwTNPS5fBb4ffUcFw-1 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=HvPLiD7kEf8cY/lgzfpcfZRJ5TFXJ+LdUBMCT+BNLrzlDbiYPxb8V92uIV73QHF7I9QzefV3WVbex/O1rrwQFCG2JzflUCEM5vK0Xc/zGDuoB0ScHHNLVZV11d5NY6e62p6V1wFhx9YnMM3pC1ClMMyAU2qZPvRzOGirjMq1+2JJ8lSk9/pK8mNluNjAUSDpNIoX/IXgJuYmWM2yCmndlNlR0i5s7mB2dqweChTmZFChi0BDbZyGczBQzg1jNQHvByzLB9/ZuwscJaLzf0chpcXi0f5Y0ywiUmfj+U2GjZSb2KwZIaaY8tmIufpplhIDoKy3LgqpKmdYzQGkx2EExQ== 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=BGQrazxrWuL850zDT70PZmLeTqh6FxbXzFSIVv2WEXQ=; b=iLhnvqokAKm9Gsmf+ws86IEoRvI35D6tI3DH2ARX4bID7a3pBynODCzxglTyhuyzmtmunejrNHR6XzdibJ9hiE4Rs3TVFz1hOH+jcqlSxGTnuVyCH16QW4K/emrdcwVwo59etwA7h9O9wTex1bRdpv/RNTvWDbsQqEPNPn9HGpyK3bSa5y/sTJuRuu5wD5+7Qt+8GmIH2TisWsY3kqO45n/edmt8ENyT5lkMRKxY4EQrhIfia6gN+XF2V/bAU2oV3TiaCaQhIPYfOaZ41T/S6d+vgC4fodMiYWK0m7n5f5usk5OiX8SsVy80VynqPX57dHFD8TQEerMAxMtk/fTzEQ== 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 AM6PR04MB5653.eurprd04.prod.outlook.com (2603:10a6:20b:a6::13) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5206.13; Thu, 28 Apr 2022 05:23:50 +0000 Received: from HE1PR0402MB3497.eurprd04.prod.outlook.com ([fe80::9974:fd5e:e3c0:14dc]) by HE1PR0402MB3497.eurprd04.prod.outlook.com ([fe80::9974:fd5e:e3c0:14dc%3]) with mapi id 15.20.5186.021; Thu, 28 Apr 2022 05:23:50 +0000 From: Geliang Tang To: mptcp@lists.linux.dev CC: Geliang Tang Subject: [PATCH mptcp-next v17 4/8] mptcp: add get_subflow wrappers Date: Thu, 28 Apr 2022 13:23:31 +0800 Message-ID: <4244e3e9db5b34b5c7ea5809933aed847bc2d523.1651123078.git.geliang.tang@suse.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: References: Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: HK2PR06CA0006.apcprd06.prod.outlook.com (2603:1096:202:2e::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: 7119207a-c213-4a8c-3766-08da28d746f9 X-MS-TrafficTypeDiagnostic: AM6PR04MB5653: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: r3wNDgPyLiOyw+SkZHc8AYMvbDCdiyd0s1P5uyO0zHqqJ2BtDxBIa2Rpqlx1ce6DFehDDiBz7C7pGnmAk21N9thnEOVYxYhap8nUJGhXVXOLDrZifmT+lBmmyISm6DXuq2rEyD+Z+Y65CYOVv4CpeRBpZlDohLcRgpJpKKoPZ2aLbGyKSUP9ydFaw64LWP5uOh5+M8VFgqsDCbsJ0s6ICaYN7xAWP09nFEivL8+wTFNAKo31Vx/tpL2GEwhBqk0ZIdl0nwvUw7HwgPd8ZBuws/SzhzNW+LdY8ohVcXvS18I7HNSqw/O/3LCJgYk1mNu3IXejCZcJBZytnLKsJvukbhsj+zQfM0P3Ee1g+VuRg6VkgPlizoYQwVmf+MQb/Mn8DRdzFYDs044RKC7vmziasd3S+Vkec5ZB1WjLA8YWPtTviAsLzJDWRN4ah7WvStxjjUQnUK3nsBqgBB+sQbOa29epgolmziNeiHt0MsbdiUU43WhZ9NfpTF/8xAOhnmUsubgEogdZPYTkB1cSzQawCzFZBNIqMFV4WoNPmaYEJUctrwQBZqZgBTDsdDWQSfowhTDJIrwHdvqjq5fTCwGC3usth13EKAoSn4Aa9SO2ZMqpXjjATqNAgVzemcv9erhi7dM4V4BKC2IWMOT0f+R+0GQfHdo5dZ8O11NFHXzZL6Nc1pf5jn9Ux3FLJXbqg6kZ 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)(6666004)(2906002)(8676002)(66556008)(4326008)(66946007)(66476007)(6506007)(38100700002)(5660300002)(86362001)(44832011)(8936002)(508600001)(2616005)(83380400001)(26005)(6512007)(6486002)(6916009)(107886003)(316002)(36756003)(186003)(13296009);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?RbR+3WNMFQSQ+36ozu+Xw5lHx3WC/Mr/okI98r+vA4YC9LGlKF9VPymeXWHO?= =?us-ascii?Q?yKsM/DUuPb3wUiDCCFKml28jR4unvr2RqIev7Z27UXQK7YB27tN0veZeapYR?= =?us-ascii?Q?Qm5ZBuMdNQZ3rujK5iyfhtqIdusreryysz2Niy30R4bu4C+sH87FxG1Bry+U?= =?us-ascii?Q?labnxaY80F0OO96ToSgt13/d78YJ1qq8OMVxelzFMPRdyJNKkYhQIpTQuspK?= =?us-ascii?Q?eEj8XLvgnML2IEKP8ji2uE0JK6q5BZ5kGYArZ2b1luqNEJacqSiu0OnTvJeG?= =?us-ascii?Q?wlviHLfcrroBMFTk04EW3uj3yS4dRKzuJBZbvLB7GTx3drnBCLE1RinArshW?= =?us-ascii?Q?z/BZXVuXe9HkuolGTntF4hy08fBkyBUaAENMW/VO+4eEO3Rn+1g6lahpY2+1?= =?us-ascii?Q?gQMbJ+QYvFpp4ynzj1R/4ZNwV2HGkbROBSfAdkr7LGUDV5eoVIvekbnd5rBh?= =?us-ascii?Q?HRuVgsQjWDwJbRuAlpumRv3ZgVOvv27rfyTnXjhpyGSmNrKfkZUxhNfEcvGl?= =?us-ascii?Q?rJ9gWchVNMWWusazgks3Kb4JmRtZV/eLfaqgx8sxHAi9DDNsKGgQiQQpETSw?= =?us-ascii?Q?IXIBo7i5nUKKtFBBYa+tcQCLvZmKbp1aC1cvLCyr/effMiPcVXKNhdscP7F2?= =?us-ascii?Q?qQIFE5HgKVGWD7L+oVLQSFS5+ysCe4NxiYyF8rmvAKF/pSBG26g0ROP0+p1o?= =?us-ascii?Q?TCZeFM04ATk65p/pgdnQlNYYozuDwcnBhPI4HeTg+BSKFQypTps1PNT6yVkU?= =?us-ascii?Q?qS8WwqEd3HqkCeQSH8Flv2Ebx6T9tBQIBAbnyBcEl6+gzJjE1oEHgzOa2Mfy?= =?us-ascii?Q?0wOOXs4dEPqviYPC4wtGCMJHOA+BxnY0snPzCIgVL3QUIbcbPp49jG1KJrK8?= =?us-ascii?Q?N7+0vWP55uydkKAZS2EGfI8SQjSLvu8Jjxh5Wo2eg48Zlp2Ta2T5vttAzmcH?= =?us-ascii?Q?jMaP+jN7Y4sdW57Raj+X/m++yNAP6nR67Ia33oJ534fMFGp/rxbsXxrAvXGA?= =?us-ascii?Q?GnFIL1RFQTapAXJafQLdgVxcpSGL406Ms2hvq1jmkfTHJa5JsJXNot16YPy9?= =?us-ascii?Q?tFoelrsHbAZHvjYHEAv8s6LQQFJzsWi3FUqFWT9mtl19sn4J/jBrDFhW5iHD?= =?us-ascii?Q?KYTvMZ8WFWANA1GKdz5jC1l2PSH4fzazbnCgA/8C0kThcSp31eh/WItvRWPL?= =?us-ascii?Q?s9+ObyFYHYNfq66pl3dXgnYC329HkWfhPT68LKjI6zh+V/OF0fIu1/yd4orl?= =?us-ascii?Q?bwUJHUroIKwUxcm1rNuCp6b1KuRbBdvLWt/SbHTU4DLWxbg21TEGyMp3/c7E?= =?us-ascii?Q?i6WKQr4zT2h56o0EttvhL9Q8ImuFT088Lz20rfbxjYccQX2Bm//rcbKDrpmD?= =?us-ascii?Q?I7I3J1B2VsUduMxAy9EgFQkcUT98rdl3wg5Ivhz23sCy11OGgeUgKb89qyr5?= =?us-ascii?Q?jg9UnRCBSaTe5RMqn+9Mmm43bJTgTtOqpkK/0j+fZ3btzI1qYmTzedEESkDk?= =?us-ascii?Q?x87RebZ6/Nw6cbu9bS7pcSFVnhB2nRf87YZIDGrRnFys4dYW+IKFWULCiw/Z?= =?us-ascii?Q?di5qk8+JpDC9TIQqmM+phTSgGXQ8d62a/b78rF6PyNJE1mSzDmQiXdFdsWG2?= =?us-ascii?Q?LJl9WPuTyIiWekHXq+ziL87y9aMVXOLRxy7whX9O0aNxG2vHf5B+yO6BauRq?= =?us-ascii?Q?+3jbvoyf3E1T6cMeneekLMMtItW5D4gV0me8mnD9jFzPe7Sb4qkJm6OcNX1X?= =?us-ascii?Q?z8/haSIxgSUOOLQI6hAh7uK7mKPsEGE=3D?= X-OriginatorOrg: suse.com X-MS-Exchange-CrossTenant-Network-Message-Id: 7119207a-c213-4a8c-3766-08da28d746f9 X-MS-Exchange-CrossTenant-AuthSource: HE1PR0402MB3497.eurprd04.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 28 Apr 2022 05:23:50.2038 (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: UMVDXSXEoukSFOphvUlsby8mAQUB01ok8PNbcQdRryUyVM6351qdBIyaGz1OznimnZJpVQddN2WyZYqPa3IArw== X-MS-Exchange-Transport-CrossTenantHeadersStamped: AM6PR04MB5653 Content-Type: text/plain; charset="utf-8" This patch defines two new wrappers mptcp_sched_get_send() and mptcp_sched_get_retrans(), invoke get_subflow() of msk->sched in them. Use them instead of using mptcp_subflow_get_send() or mptcp_subflow_get_retrans() directly. Signed-off-by: Geliang Tang --- net/mptcp/protocol.c | 25 ++++++------------------- net/mptcp/protocol.h | 42 ++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 48 insertions(+), 19 deletions(-) diff --git a/net/mptcp/protocol.c b/net/mptcp/protocol.c index f599b702415e..5243c58789a4 100644 --- a/net/mptcp/protocol.c +++ b/net/mptcp/protocol.c @@ -1427,7 +1427,7 @@ bool mptcp_subflow_active(struct mptcp_subflow_contex= t *subflow) * returns the subflow that will transmit the next DSS * additionally updates the rtx timeout */ -static struct sock *mptcp_subflow_get_send(struct mptcp_sock *msk) +struct sock *mptcp_subflow_get_send(struct mptcp_sock *msk) { struct subflow_send_info send_info[SSK_MODE_MAX]; struct mptcp_subflow_context *subflow; @@ -1438,14 +1438,6 @@ static struct sock *mptcp_subflow_get_send(struct mp= tcp_sock *msk) u64 linger_time; long tout =3D 0; =20 - sock_owned_by_me(sk); - - if (__mptcp_check_fallback(msk)) { - if (!msk->first) - return NULL; - return sk_stream_memory_free(msk->first) ? msk->first : NULL; - } - /* re-use last subflow, if the burst allow that */ if (msk->last_snd && msk->snd_burst > 0 && sk_stream_memory_free(msk->last_snd) && @@ -1575,7 +1567,7 @@ void __mptcp_push_pending(struct sock *sk, unsigned i= nt flags) int ret =3D 0; =20 prev_ssk =3D ssk; - ssk =3D mptcp_subflow_get_send(msk); + ssk =3D mptcp_sched_get_send(msk); =20 /* First check. If the ssk has changed since * the last round, release prev_ssk @@ -1644,7 +1636,7 @@ static void __mptcp_subflow_push_pending(struct sock = *sk, struct sock *ssk) * check for a different subflow usage only after * spooling the first chunk of data */ - xmit_ssk =3D first ? ssk : mptcp_subflow_get_send(mptcp_sk(sk)); + xmit_ssk =3D first ? ssk : mptcp_sched_get_send(mptcp_sk(sk)); if (!xmit_ssk) goto out; if (xmit_ssk !=3D ssk) { @@ -2218,17 +2210,12 @@ static void mptcp_timeout_timer(struct timer_list *= t) * * A backup subflow is returned only if that is the only kind available. */ -static struct sock *mptcp_subflow_get_retrans(struct mptcp_sock *msk) +struct sock *mptcp_subflow_get_retrans(struct mptcp_sock *msk) { struct sock *backup =3D NULL, *pick =3D NULL; struct mptcp_subflow_context *subflow; int min_stale_count =3D INT_MAX; =20 - sock_owned_by_me((const struct sock *)msk); - - if (__mptcp_check_fallback(msk)) - return NULL; - mptcp_for_each_subflow(msk, subflow) { struct sock *ssk =3D mptcp_subflow_tcp_sock(subflow); =20 @@ -2481,7 +2468,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_retrans(msk); dfrag =3D mptcp_rtx_head(sk); if (!dfrag) { if (mptcp_data_fin_enabled(msk)) { @@ -3146,7 +3133,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_send(mptcp_sk(sk)); =20 if (xmit_ssk =3D=3D ssk) __mptcp_subflow_push_pending(sk, ssk); diff --git a/net/mptcp/protocol.h b/net/mptcp/protocol.h index 723141a888f4..0da2a91ad197 100644 --- a/net/mptcp/protocol.h +++ b/net/mptcp/protocol.h @@ -988,4 +988,46 @@ mptcp_token_join_cookie_init_state(struct mptcp_subflo= w_request_sock *subflow_re static inline void mptcp_join_cookie_init(void) {} #endif =20 +struct sock *mptcp_subflow_get_send(struct mptcp_sock *msk); +struct sock *mptcp_subflow_get_retrans(struct mptcp_sock *msk); + +static inline struct sock *mptcp_sched_get_send(struct mptcp_sock *msk) +{ + struct mptcp_sched_data data; + + sock_owned_by_me((struct sock *)msk); + + /* the following check is moved out of mptcp_subflow_get_send */ + if (__mptcp_check_fallback(msk)) { + if (!msk->first) + return NULL; + return sk_stream_memory_free(msk->first) ? msk->first : NULL; + } + + if (!msk->sched) + return mptcp_subflow_get_send(msk); + + msk->sched->get_subflow(msk, false, &data); + + return data.sock; +} + +static inline struct sock *mptcp_sched_get_retrans(struct mptcp_sock *msk) +{ + struct mptcp_sched_data data; + + sock_owned_by_me((const struct sock *)msk); + + /* the following check is moved out of mptcp_subflow_get_retrans */ + if (__mptcp_check_fallback(msk)) + return NULL; + + if (!msk->sched) + return mptcp_subflow_get_retrans(msk); + + msk->sched->get_subflow(msk, true, &data); + + return data.sock; +} + #endif /* __MPTCP_PROTOCOL_H */ --=20 2.34.1 From nobody Thu Sep 18 06:42:54 2025 Delivered-To: wpasupplicant.patchew@gmail.com Received: by 2002:a05:6a06:869:b0:4b8:7781:bd2f with SMTP id d41csp1464484pis; Wed, 27 Apr 2022 22:24:09 -0700 (PDT) X-Google-Smtp-Source: ABdhPJygDUEtVSJ9naGeNd2JZA+REUpLrKAWiU4pJFrJQk340RhehJBnapp3+FTRo4Vf60mTkyy3 X-Received: by 2002:a17:907:1b0a:b0:6f0:e3d:1f5d with SMTP id mp10-20020a1709071b0a00b006f00e3d1f5dmr29410140ejc.418.1651123449321; Wed, 27 Apr 2022 22:24:09 -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 x10-20020a05640226ca00b00425fdabc3b2si3778829edd.1.2022.04.27.22.24.08 for (version=TLS1_2 cipher=ECDHE-ECDSA-AES128-GCM-SHA256 bits=128/128); Wed, 27 Apr 2022 22:24:09 -0700 (PDT) Received-SPF: pass (google.com: domain of mptcp+bounces-4948-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=U9GgI4ZV; arc=fail (body hash mismatch); spf=pass (google.com: domain of mptcp+bounces-4948-wpasupplicant.patchew=gmail.com@lists.linux.dev designates 2604:1380:4040:4f00::1 as permitted sender) smtp.mailfrom="mptcp+bounces-4948-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 A830B2E09AB for ; Thu, 28 Apr 2022 05:24:06 +0000 (UTC) Received: from localhost.localdomain (localhost.localdomain [127.0.0.1]) by smtp.subspace.kernel.org (Postfix) with ESMTP id 3B564A5F; Thu, 28 Apr 2022 05:24:05 +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 1A6DD7B for ; Thu, 28 Apr 2022 05:24:02 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=suse.com; s=mimecast20200619; t=1651123441; 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=/XUaqkaLV9dssjVhaNabkHHBXZGLvOQ0xODMALR+WY8=; b=U9GgI4ZVFdpIP5RXYWZcN55MY5D0CKy5vPulzCJIOjQAnv2wGpcNu04q7i77QxjoD9Uuna guF9ZtCKe16Nq67ZBkeh2p8hvRNJ2sL2xwbR9U2wce9pD6Sm9vg9eHs9moM7cmcTFpjO8w 4GFDsrpLisgKskxRdDT//ZnUtwUzKis= Received: from EUR04-HE1-obe.outbound.protection.outlook.com (mail-he1eur04lp2053.outbound.protection.outlook.com [104.47.13.53]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id de-mta-11-4hTNS4n1MnqAc8b_doGJNQ-1; Thu, 28 Apr 2022 07:24:00 +0200 X-MC-Unique: 4hTNS4n1MnqAc8b_doGJNQ-1 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=hmHvj3Mzw1voFjj5+cSm4fGsfTjpMhddhTCMq/u9K9wo5uoENToG2gtjgdEczIbwyL/3sS/dFt+X/YnQO5ub77xu99CEN+o30S+Uuga1EnZO7GQp0snUcXXeQMDl8fH+oDIHpyNi0eDgLcsrGXumHjLHiYyLOTEdg4kFQXO/nS7ym4HwHB4q6cLv+nRCCWheMPjE5e0izCCw5G4PbSpSz0dICkkb7OGAJj+qH6owgUVQBAlYdJVZqoWZ8e+LL0TTJ6AS9FyBnXzahd2g2ZzBfMxNoBhOknXrvjP4F4R4esNsMy9b6sB9/K4q0yp6e8nnn19Q+e92F8JyODN75gWU7g== 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=HcjvrzqE7oE277VLeXMPk4vh1SUz28rwGb4o5sigZXE=; b=gWs7EIBxesHCDk3CRkh1Djpgo6yv6PA7NpcmHKJHzxZYUFm31VX1nzwgZ5su19MRbUPVZJZuUFJUzxN69nNxWIeBK3ZKHILHKpOIbiEKoECpbunLz+2LANkV5FUPZjZEwGgzlgJhWzJBR6hiMCSJi1waSCBSoWLzCzMaNddU3ciWMd1NqjryQMFAOpQ6P63gAM7rcfjzaZ1b2HsOSNQ7L+nsxWIg2EFA6zwJW18WPIenFYfpyAz/sLZK5RbRnFFh3mfw1Cj/WEaGkt/UUpiUs7je/gQizdRRGJVJpjAXp9ZZWfdb85XfWOyFfPCF35WQOthk7BJNYfyK6sNkStFYAQ== 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 VE1PR04MB7422.eurprd04.prod.outlook.com (2603:10a6:800:1af::5) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5206.14; Thu, 28 Apr 2022 05:23:58 +0000 Received: from HE1PR0402MB3497.eurprd04.prod.outlook.com ([fe80::9974:fd5e:e3c0:14dc]) by HE1PR0402MB3497.eurprd04.prod.outlook.com ([fe80::9974:fd5e:e3c0:14dc%3]) with mapi id 15.20.5186.021; Thu, 28 Apr 2022 05:23:57 +0000 From: Geliang Tang To: mptcp@lists.linux.dev CC: Geliang Tang Subject: [PATCH mptcp-next v17 5/8] mptcp: add bpf_mptcp_sched_ops Date: Thu, 28 Apr 2022 13:23:32 +0800 Message-ID: <1209dce7d8a44586c9348a5029b8e12f1e3df68f.1651123078.git.geliang.tang@suse.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: References: Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: HKAPR04CA0012.apcprd04.prod.outlook.com (2603:1096:203:d0::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: 07cb4b28-452a-4da0-ef04-08da28d74b35 X-MS-TrafficTypeDiagnostic: VE1PR04MB7422: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: 1LdlbWeKuw6ych4VqRi83/tc2knigAdiG3NaGFO6/QdZx0GAw8ajh5vZtSVmS1xMwTZtCz77M8UkOibjY7gNDwjvdFxQaiJDzsU/2mxPMe/Be1voxIorZdSHt85S0/Nr0MHrMXhGBg7nNLwJJjSPFwNfMyTwNLZ4RYOKPEcXo26kMsXu9f5JogAgZARMAdWmTVpc+IcySaium9kv2HE8MkogRpdOn2qPkI/+2NUxKarDXMEOi8D5RlKwQsSVbeT89ihOfxp1RW+TVvDL+15WQVcMrXnebuBKC94pBAQ7yDSBCpswretSSnNl0QT0bN7tBjUpSeNxeSgfVzKgrqTDff2EcV1+SZaP6QE5uoAPfbstEpfWZRK3SCfivhuR0r81DqjGarvFozsX1m/Izq/Bzyc6S4n78C5nvX4G1KvvK58usaW4nqxjA6CbhEl+ByGQHlV15DbAgm4uJrL+Lm6/J9EIyGLQP3oEHGOX6VIbCphUhhpx77VhMeAzrAyFYb8NwqkFB2XhjEbZ292Xh2YtyEfhHYpsQGrj6XEe/N9GE9Fkgd/bWEZinR0MJV/1MI+4T3ehZ6zWFSPk47KXdwkB+/bkRoZnpCJF7/6/Sg8VXmoSGC4V3mqgatFPlhOoPLANgTR0d4f05swWBNA8sUep5FksBsr4r+AxvkdsmczNFq3f4jm/lQ3Ks8sv0dDS/2SUp4O3qSgQZLKEjqfmMhdYOQ== 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)(44832011)(316002)(6512007)(4326008)(26005)(2616005)(86362001)(6486002)(508600001)(5660300002)(6916009)(107886003)(38100700002)(8936002)(6506007)(6666004)(36756003)(186003)(83380400001)(8676002)(66476007)(66556008)(2906002)(66946007)(13296009);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?BL16bnddThDOA3AiD7V0CagixoddEdj1U22JfeddGvR1SWRABVldD2LHLUct?= =?us-ascii?Q?XmSzOQg+kaZhi6Of3aAczakeRR7vEwCS6nN4MoxcePIgrdaz725Z/6DW3qFO?= =?us-ascii?Q?VEBDFtJOOjpth/huLifzuUyFS86xg07tOC84NrGL1BI8N97pUYL3HzV/b1bF?= =?us-ascii?Q?lKKYG+0FtIH0l1W+hgifkfmb09B0b/lGcN3G+KV2loJdAOVomNNGQ2tUXtp1?= =?us-ascii?Q?UUz4X09DjOHTEP4X4U1CwsEhTLyITjahpSCCc1opdSBYqCJMZ8Sp3VTr5B9F?= =?us-ascii?Q?6QnWTX+25B6lqkK85/cJ+HCHNAWHN4p8cjBrmW6VLfo1OhnEA3g2By7iaemh?= =?us-ascii?Q?ilv+wKOy3LTwCk+Fp4U1HK6/nTIJNI6qXbPmSwVyWMMQeNvGGVHX2mk+cVLF?= =?us-ascii?Q?XmrhKMmdp6dr5HVb1mJ8goouy1h6DGVG2GQ8KjAYLO4ioX05sSFfKdFLCXfl?= =?us-ascii?Q?auDkoHb63QBq56jCbx+S7+4ywd/iZE/OLNE3aDxlAMgUXeqpFk2dfi9tEn5z?= =?us-ascii?Q?8nI8QmZQRb2o9vzmMiV8i/tvGBWxZc9678FNODcFs6jRRBZbVQDCxQElo8f+?= =?us-ascii?Q?sBUXT5nz0YVuu/2Tz3kV2HEEOHMsRIM1ZdxSBoThk2Lqr3b8Hmojv4khzL71?= =?us-ascii?Q?TW/ndzz+MOWEDo4NrsOW9wlxzGcqacUOvJ/2dyyK7+VgCcB2BPvWc7JKeXwp?= =?us-ascii?Q?twRmH7EEybAkWwTlerwNARt81ei+0G53wH5+9f7mvYQ8dENe9IzBLQsJeFsm?= =?us-ascii?Q?ZVHufPQ6QrMTbffefFvmLaBUYMRc2MpX9x7vPmTRgfOPG3HeMoVHZgAwGRzv?= =?us-ascii?Q?D3DHeWY0ntr5zrA01aMGuODzE7ZT6/qh8BVLp22myRcwURIE2SiaDAeWgYn/?= =?us-ascii?Q?q2YSYNRk5xhOT/m/BPvkpUlqdSDcYsxQFvgOszjfEpHHVlxnhiE6QXbbGFqI?= =?us-ascii?Q?ZLEKAoo9WhHAgjlSpqx8BgcA93FQ+apHSmevLsizE//TQajx/AP9mazF3GDk?= =?us-ascii?Q?Vdo52o6AaypYEjb/H30868ScYfAenwPwTQCr9HfedLe3vVZTR9tS/zv1Rzvd?= =?us-ascii?Q?cDMEBQ6sfbEu1NSOzQLmgUm/q/6hs5eXcJglJQIHJGsDIUJ4wfvtwxlrt73j?= =?us-ascii?Q?u8AMryw8C6ymu65K14Ufkp79SunSkM1zV0FkYtSYpoO+PU+JCDZs12frlFYl?= =?us-ascii?Q?YciIIgarXuvqa/a2u2scLY/9YcIBNAAEsCbe277audEtOFVgmf0ARgApNbCD?= =?us-ascii?Q?1WLxDxmvWRVmASIb69476kC8k4cXw/9TCfnd/eeU9hYLJZbAUvulanWvhGDe?= =?us-ascii?Q?7uJfql1m8EszLjOCEY21IiqICq+y4nwBW2bRagxXtOanHixwMaz3HIzDG3X5?= =?us-ascii?Q?bsSNzSr7lTCwcZGwtkhtggv58Nc1dhzQ0pl1LFHnLOeyDpoM9HoxactxGwRk?= =?us-ascii?Q?Myx5C/eViGFZ7Usr+K7loh5B2m5aKdJrsB6bc2/DylSibGMyWJjB1TZAWsoO?= =?us-ascii?Q?z2ifOhPsHDp165nsP6xJ2J186JN8KomWjE8heqdNN9YauXpdQlRusag83LZM?= =?us-ascii?Q?mRl+WK1YKHjar235UxDqbuG/RcQ4RJZ3JNY8t4OMSYoQWk/yAj5gdBf26zbZ?= =?us-ascii?Q?eTpfdCPSp/9YlOYLrOUD5p/eo9zrPGZgcf+zVPa+N0d7ojnW8RTjgOPJ3ahV?= =?us-ascii?Q?BAdTvhSCBGrgeXbuXBvTSxcFjHrehG5K6RCuk0Nv5bkfGqvwQl5/IzXtcKP2?= =?us-ascii?Q?PGOShZspYXWgyKi4FtlCdo0T7C3dbqA=3D?= X-OriginatorOrg: suse.com X-MS-Exchange-CrossTenant-Network-Message-Id: 07cb4b28-452a-4da0-ef04-08da28d74b35 X-MS-Exchange-CrossTenant-AuthSource: HE1PR0402MB3497.eurprd04.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 28 Apr 2022 05:23:57.6564 (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: HJ+pBbcQieYvP0BbeJi2FnAqFOb55oPy6uw2EAeiNoW+wHHe7q5r0EKYqtb/XOJ+S8S+4X6prDQ999RTlbZL7w== X-MS-Exchange-Transport-CrossTenantHeadersStamped: VE1PR04MB7422 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 | 154 ++++++++++++++++++++++++++++++ 2 files changed, 158 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..a085c72fe695 100644 --- a/net/mptcp/bpf.c +++ b/net/mptcp/bpf.c @@ -10,8 +10,162 @@ #define pr_fmt(fmt) "MPTCP: " fmt =20 #include +#include +#include +#include #include "protocol.h" =20 +#ifdef CONFIG_BPF_JIT +extern struct bpf_struct_ops bpf_mptcp_sched_ops; +extern struct btf *btf_vmlinux; +static const struct btf_type *mptcp_sched_type __read_mostly; +static u32 mptcp_sched_id; + +static u32 optional_ops[] =3D { + offsetof(struct mptcp_sched_ops, init), + offsetof(struct mptcp_sched_ops, release), + offsetof(struct mptcp_sched_ops, get_subflow), +}; + +static const struct bpf_func_proto * +bpf_mptcp_sched_get_func_proto(enum bpf_func_id func_id, + const struct bpf_prog *prog) +{ + return bpf_base_func_proto(func_id); +} + +static int bpf_mptcp_sched_btf_struct_access(struct bpf_verifier_log *log, + const struct btf *btf, + const struct btf_type *t, int off, + int size, enum bpf_access_type atype, + u32 *next_btf_id, + enum bpf_type_flag *flag) +{ + size_t end; + + if (atype =3D=3D BPF_READ) + return btf_struct_access(log, btf, t, off, size, atype, + next_btf_id, flag); + + if (t !=3D mptcp_sched_type) { + bpf_log(log, "only access to mptcp_sched 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 at off %d\n", off); + return -EACCES; + } + + if (off + size > end) { + bpf_log(log, "access beyond mptcp_sched 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) +{ + s32 type_id; + + type_id =3D btf_find_by_name_kind(btf, "mptcp_sched_data", + BTF_KIND_STRUCT); + if (type_id < 0) + return -EINVAL; + mptcp_sched_id =3D type_id; + mptcp_sched_type =3D btf_type_by_id(btf, mptcp_sched_id); + + return 0; +} + +struct bpf_struct_ops bpf_mptcp_sched_ops =3D { + .verifier_ops =3D &bpf_mptcp_sched_verifier_ops, + .reg =3D bpf_mptcp_sched_reg, + .unreg =3D bpf_mptcp_sched_unreg, + .check_member =3D bpf_mptcp_sched_check_member, + .init_member =3D bpf_mptcp_sched_init_member, + .init =3D bpf_mptcp_sched_init, + .name =3D "mptcp_sched_ops", +}; +#endif /* CONFIG_BPF_JIT */ + struct mptcp_sock *bpf_mptcp_sock_from_subflow(struct sock *sk) { if (sk && sk_fullsock(sk) && sk->sk_protocol =3D=3D IPPROTO_TCP && sk_is_= mptcp(sk)) --=20 2.34.1 From nobody Thu Sep 18 06:42:54 2025 Delivered-To: wpasupplicant.patchew@gmail.com Received: by 2002:a05:6a06:869:b0:4b8:7781:bd2f with SMTP id d41csp1464515pis; Wed, 27 Apr 2022 22:24:16 -0700 (PDT) X-Google-Smtp-Source: ABdhPJwZ9GRxuDh5j2PcNXCBNWZ3hIemBA7ARg18G//I4KrTHKj3qdtc7o9F3VSPLeNo+g/nhF7J X-Received: by 2002:a05:6a02:18b:b0:399:365e:f09c with SMTP id bj11-20020a056a02018b00b00399365ef09cmr27327193pgb.238.1651123456326; Wed, 27 Apr 2022 22:24:16 -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 i18-20020a170902cf1200b00158695aa2efsi3509740plg.200.2022.04.27.22.24.16 for (version=TLS1_2 cipher=ECDHE-ECDSA-AES128-GCM-SHA256 bits=128/128); Wed, 27 Apr 2022 22:24:16 -0700 (PDT) Received-SPF: pass (google.com: domain of mptcp+bounces-4949-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=FpuqXNS8; arc=fail (body hash mismatch); spf=pass (google.com: domain of mptcp+bounces-4949-wpasupplicant.patchew=gmail.com@lists.linux.dev designates 139.178.88.99 as permitted sender) smtp.mailfrom="mptcp+bounces-4949-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 207C3280A8D for ; Thu, 28 Apr 2022 05:24:15 +0000 (UTC) Received: from localhost.localdomain (localhost.localdomain [127.0.0.1]) by smtp.subspace.kernel.org (Postfix) with ESMTP id D1A00A5F; Thu, 28 Apr 2022 05:24:13 +0000 (UTC) X-Original-To: mptcp@lists.linux.dev Received: from de-smtp-delivery-102.mimecast.com (de-smtp-delivery-102.mimecast.com [194.104.111.102]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 6A0077B for ; Thu, 28 Apr 2022 05:24:12 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=suse.com; s=mimecast20200619; t=1651123450; 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=o0hsbGgT8rkplV/zoZyrj5uV7DMkRXDlcBuTiXXD+Y8=; b=FpuqXNS8bQN/FBXs87dP1awh5LUeHvn80uNo7ukWVtZFwPW/XvYg/R4AR9ZE8sCpJIst5S yHUgmMNHfhRIprOwmHSyXTinGQwOje4f8QUngfJWnptD1LA7kqrUmRD94fbGObMW6HvUCW DZCtyrmKeycMgrBcQheOVNqvISXt5Bo= Received: from EUR05-AM6-obe.outbound.protection.outlook.com (mail-am6eur05lp2112.outbound.protection.outlook.com [104.47.18.112]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id de-mta-12-yl_nhbbMPBebmK9U7RlnzQ-1; Thu, 28 Apr 2022 07:24:09 +0200 X-MC-Unique: yl_nhbbMPBebmK9U7RlnzQ-1 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=ftlfjrljlBGkOZzAX0E0X7uaoyWeGih+M4Xu+cdMgDwnXhnxsGO7GzR/MvHq1fHk/e3U4iPjlwOskxc5pKKSfu2CMBDgU4N3H5X5npqwegPOEop4xt9f8rv1Sf1N86G+9xn+zHKd5C8XiK9mqexp0nPoIBafBYHkhRVgXA+486zfRkhhPTz/XbtckLBquIdS1iHYFrM+478OtY8el7ULqrwSHWKc7yGTsvXlLw7MGBL2neHnbl4yqyRFruMnY1A2rqIfKqNUei36RRWtY9L+eK4T/rGjAEUn1LhI0Zs6tf5jatYxaNcaZK/Ar4pPEkWyaZNPTKnYrQ6GelmDeaY7pQ== 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=C0HdrBSaF8k3CJ9iUhGS4gwCNDjkhfE9Kgoo4PloB/I=; b=iFEdDd5EWC6ZPFiLvKVuvOsAZwecS4cRnXNUGJNnT7TOQPaVM60x9VzQoI/F7mqhEouVbjd66O0TUlo5eFX14r0LNgbffqpOHr+ReUzGoN9rwMh6UQB930VvVR2wHp42QiiPYfvhVT88N+Ruq6ot2h5aetGKNw1fx7HgI9qSYv9u54ZrqdEmBwneWKaYAsCHrjAqsLQG17dn0ABr+o4uPBe8Qk3qFVBLcNvU6tDy5Tm3URNqqVYUX146sdTH2W9Gl552UZP0DyXGUgb/CapgD03OmNeo/7lxhPUs+iu9H6WQc5aUOcYbbPqFfJLrSxbgbc/ykhCIDY6zXH3pyKeQdg== 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 DB6PR0402MB2885.eurprd04.prod.outlook.com (2603:10a6:4:a2::13) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5186.21; Thu, 28 Apr 2022 05:24:05 +0000 Received: from HE1PR0402MB3497.eurprd04.prod.outlook.com ([fe80::9974:fd5e:e3c0:14dc]) by HE1PR0402MB3497.eurprd04.prod.outlook.com ([fe80::9974:fd5e:e3c0:14dc%3]) with mapi id 15.20.5186.021; Thu, 28 Apr 2022 05:24:04 +0000 From: Geliang Tang To: mptcp@lists.linux.dev CC: Geliang Tang Subject: [PATCH mptcp-next v17 6/8] mptcp: add last_snd write access Date: Thu, 28 Apr 2022 13:23:33 +0800 Message-ID: <60a9490aa49e64c1db357ad2096d321d7c54713a.1651123078.git.geliang.tang@suse.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: References: Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: HKAPR04CA0013.apcprd04.prod.outlook.com (2603:1096:203:d0::23) To HE1PR0402MB3497.eurprd04.prod.outlook.com (2603:10a6:7:83::14) Precedence: bulk X-Mailing-List: mptcp@lists.linux.dev List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: aeaaac07-b81a-48c5-b90b-08da28d74f85 X-MS-TrafficTypeDiagnostic: DB6PR0402MB2885: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: o9KEWS9MV22ljljNCeO9o8MPIDrwsmxOPfvsg3aLsr5Xn9E1uM8eKXEigcHelUg8UMOviUh9jiSCGtETCwsDkxNTTnZBZTOwFMTrpkYStVU/tEud/52UwQyUHSB7UyljoWGXTglRgSpaZCFpRmVIaq3Cap2Byexn9k72rswwZPr03zH57HB4l9JpirsESm6TYE7cuhS6UT9qmfYlWVwofPmSb4C1czxCeTNIWxgdAx69pXvJemtIp7V1Twr9t9eQeXSCacQPtc9KkNhalcfpoWCd+LcAS4BGuteqVRVF8jEwjhDachG/N+jfLXAxCdlbfLtH/f80zw2CEFkQ995sW5ydXDi4Mplx3wKkkPlpU5m79ibEJtaIq5Fbc7rMPT5LjVOX65xNuP5R2mDRNviBxhV/ewEj9plSF4t7ILsPhpf6rqhk6H7vjO6aGVIcgNLdNt+mWTbd+/X5CMNXu20PWFxh9Do9awmbKpuADelvGz3pXtzZdmumbBvth2pgW8KqRBzCXo7M8b1Bv3aG8Cm1thsDLwNmSG4mxnd0hvLoCuuqvCVWWAmmWAP0Cg9E3GgFt4sVtm9ZJLa4gTNzW4t6RwQR5zHk+2dE/1ASE89NOJ5S0pkGflugd0oxH/cD37u8vLUb30Uk/PkzGPO8fUGSSpugHOOodFERdK2pZPNANmx5j5BKbTmc2pE/GRL54GgU 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)(38100700002)(6512007)(5660300002)(36756003)(2616005)(8936002)(6666004)(6506007)(66556008)(186003)(26005)(6486002)(44832011)(66476007)(8676002)(4326008)(508600001)(6916009)(83380400001)(86362001)(2906002)(66946007)(107886003)(13296009);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?oEnCl/ZCB69QYB+5lkg1DjGq5Ad9WroWuPlUfnzdsocmBjfPRgfXZJ+gSkyD?= =?us-ascii?Q?G3lCGNQZrL4zh4EcvJy702Ehb1OXA11exJtbgIDzqNYySG0vttbmJB0TmRyE?= =?us-ascii?Q?mzCYSEhHI63g+0epd4NknAr2wV2SE5eY9XLCw7ItdEySMsnlZkyhIHEMzB2X?= =?us-ascii?Q?O11dpNH3W+ltab+CM5Ls+Z/Vs9qLFzlFXktrCkAcCXLYonpNU5HCE/a4z54c?= =?us-ascii?Q?fpu/WNDqSAn65z8N2UBFBEEFGTwIj5lD+Yo5hkDt43B+mWG7fpnWsk0a1SiG?= =?us-ascii?Q?E7TOZUgmX/cYZBdOd3TTikXwYVE6KGbNeBcWCLM4fVOUyn6/9VjkYLx9df/y?= =?us-ascii?Q?y2nqIw00X7aXmSCLYFd4+Qf6bGCdl25XgHfJW7G2tsf+hbznApo+73WaoqG1?= =?us-ascii?Q?fvMGOqBn+AGSZ+6kLeE5pJwG/h5d+kR670O7VY5ghEhdzhiQD0g1/rbg3Txq?= =?us-ascii?Q?+tm8Y60MO87qdk0Ssi1qR8BrKN6KrR4BX0dZs+67PTXU8ljUPudxnV8nfNz+?= =?us-ascii?Q?9kPlf3v9NMjqgyOXAhj6q1Mc6twIpsn4ZIO0pmD4gX1HlYyfkpIz8p0oxrHs?= =?us-ascii?Q?Ga78vL0xEvR4DvJfx55zTP8oT+wsxEVIIx5zdxYRNhd9VptfKaTvGpiO54U1?= =?us-ascii?Q?r07/QVUpxKTCBTA375EcYoBl37iRZ6AxvQ+GzHnI9cCS5W6mNt9C69KHYQHb?= =?us-ascii?Q?bwa0e5mpWzZ8683dgg0AG4g9Qk1fn6Qq3bKIzW1wHJiRGW9jdRpSdftDb+LV?= =?us-ascii?Q?xZputEL+vASVOvORKeQ+y3IQd9Zk3b5KmAWG9XbSVVnN7ZDpVWja/c7F/Sq2?= =?us-ascii?Q?0JTgSsq1Dc/Tx96+rkU5JT8eskxCvJvkEKLyqEAFeW3FhaYxJsuNTUDouEpn?= =?us-ascii?Q?EI0kxQulyFRlKcFTlZS5MqUMOQ+Ijfoq7zgZ197Pmxr3ZpjkVWYXxsJoNKp7?= =?us-ascii?Q?LRgOTGp/q4c/bFBRTkMBFAw07O6zhF6Glf31PMOmt6cmg2GxiKR+caFyd93K?= =?us-ascii?Q?rrVySH5qfRAIP7YrB70Gbo7d7rlLVyO3JV/inu9ku1Atx8sdGGxlB6a/CZoi?= =?us-ascii?Q?85Z7+SUvLshsP9FIWYH1dRp6osQDuYmH5serZz1wKCVFloS1xiWaIBS/eDsz?= =?us-ascii?Q?8huwzXtwklk9nhToipm5/sO2LiqRi6cPYd7Wo8ueI1DRCH90Ns6GRwEmXnEh?= =?us-ascii?Q?oUyr/5UScepHgCu8Y2VMuGU2edQU5n7abNASzusFWSZVVuZMmpjwnQW/kuoN?= =?us-ascii?Q?y8DNDfGtYitlsttxQA7G8jN9oGcOGl83TnzFQGt6OCRhUPu1AlOewnPPztyK?= =?us-ascii?Q?EWcB88o6txjz4Hll6XDrZGVrJm/mqxwl8oJDs9K0HBnzzmuSUyEGoDiSypJx?= =?us-ascii?Q?MhBeqLmW5ncSV49v+/3QaC3ajTsqFmbL/zCaJueunAfjyZIJMFKu4w0Nr1dR?= =?us-ascii?Q?Z25/52uNZf5RCEFDqLYmBC+Rj4QkYi9dlVuyvXx+W9G6DGZ4ZjPWNWoKSkD6?= =?us-ascii?Q?oCtJ6vfAcUfNZXItbDbzMACuVxaIsnXDwluIs1HAZ/tlpkS7D7GDR0iQYXY+?= =?us-ascii?Q?PMJSqKj9YCR1/VwnL5rHqomsVxPVZL2Y/x2Ph7J5F01RXqIMETw61G+TtBMf?= =?us-ascii?Q?dzFLdocw9GvnJOkLkNrXLmfcIT8SWDLxY2C/eM4JfuL3H7ttqgjQcWE8JsCQ?= =?us-ascii?Q?HI8+Iyon+7+ciMqaXQD2mgnGgiqjj5IBb3iudAlBnVb6rni7hzsMxSRCUTnM?= =?us-ascii?Q?6NUzgxhqP/cGr69hvnMMoGhGklOVxLc=3D?= X-OriginatorOrg: suse.com X-MS-Exchange-CrossTenant-Network-Message-Id: aeaaac07-b81a-48c5-b90b-08da28d74f85 X-MS-Exchange-CrossTenant-AuthSource: HE1PR0402MB3497.eurprd04.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 28 Apr 2022 05:24:04.6402 (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: WTByOactkfNEvZhO2GjSkSlc6IUYbcsTPy8EMXkeVdZnG7kOrnggLTnTqCth2DrfiArclFvbUom2j5j4F1EAXQ== X-MS-Exchange-Transport-CrossTenantHeadersStamped: DB6PR0402MB2885 Content-Type: text/plain; charset="utf-8" This patch exports the member last_snd of struct mptcp_sock in bpf_mptcp_helpers.h, and adds BPF write access to it. Signed-off-by: Geliang Tang --- net/mptcp/bpf.c | 15 ++++++++++++--- tools/testing/selftests/bpf/bpf_mptcp_helpers.h | 1 + 2 files changed, 13 insertions(+), 3 deletions(-) diff --git a/net/mptcp/bpf.c b/net/mptcp/bpf.c index a085c72fe695..300493f9a2b6 100644 --- a/net/mptcp/bpf.c +++ b/net/mptcp/bpf.c @@ -18,8 +18,8 @@ #ifdef CONFIG_BPF_JIT extern struct bpf_struct_ops bpf_mptcp_sched_ops; extern struct btf *btf_vmlinux; -static const struct btf_type *mptcp_sched_type __read_mostly; -static u32 mptcp_sched_id; +static const struct btf_type *mptcp_sock_type, *mptcp_sched_type __read_mo= stly; +static u32 mptcp_sock_id, mptcp_sched_id; =20 static u32 optional_ops[] =3D { offsetof(struct mptcp_sched_ops, init), @@ -47,12 +47,15 @@ static int bpf_mptcp_sched_btf_struct_access(struct bpf= _verifier_log *log, return btf_struct_access(log, btf, t, off, size, atype, next_btf_id, flag); =20 - if (t !=3D mptcp_sched_type) { + if (t !=3D mptcp_sock_type && t !=3D mptcp_sched_type) { bpf_log(log, "only access to mptcp_sched is supported\n"); return -EACCES; } =20 switch (off) { + case offsetof(struct mptcp_sock, last_snd): + end =3D offsetofend(struct mptcp_sock, last_snd); + break; case offsetof(struct mptcp_sched_data, sock): end =3D offsetofend(struct mptcp_sched_data, sock); break; @@ -145,6 +148,12 @@ static int bpf_mptcp_sched_init(struct btf *btf) { s32 type_id; =20 + type_id =3D btf_find_by_name_kind(btf, "mptcp_sock", BTF_KIND_STRUCT); + if (type_id < 0) + return -EINVAL; + mptcp_sock_id =3D type_id; + mptcp_sock_type =3D btf_type_by_id(btf, mptcp_sock_id); + type_id =3D btf_find_by_name_kind(btf, "mptcp_sched_data", BTF_KIND_STRUCT); if (type_id < 0) diff --git a/tools/testing/selftests/bpf/bpf_mptcp_helpers.h b/tools/testin= g/selftests/bpf/bpf_mptcp_helpers.h index a0b83fbe8133..79a16636400b 100644 --- a/tools/testing/selftests/bpf/bpf_mptcp_helpers.h +++ b/tools/testing/selftests/bpf/bpf_mptcp_helpers.h @@ -27,6 +27,7 @@ struct mptcp_sched_ops { struct mptcp_sock { struct inet_connection_sock sk; =20 + struct sock *last_snd; __u32 token; struct sock *first; struct mptcp_sched_ops *sched; --=20 2.34.1 From nobody Thu Sep 18 06:42:54 2025 Delivered-To: wpasupplicant.patchew@gmail.com Received: by 2002:a05:6a06:869:b0:4b8:7781:bd2f with SMTP id d41csp1464533pis; Wed, 27 Apr 2022 22:24:21 -0700 (PDT) X-Google-Smtp-Source: ABdhPJwrPaxgIsEMxTJA1p8j87FQIe7j/t4YPG6jqGN0NQgfyJa9VBr7bJzxHunhDPTMln/BiXcR X-Received: by 2002:a17:907:3f82:b0:6df:919c:97a with SMTP id hr2-20020a1709073f8200b006df919c097amr29591985ejc.19.1651123461207; Wed, 27 Apr 2022 22:24:21 -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 s10-20020a508d0a000000b00425ed90e6acsi3090150eds.513.2022.04.27.22.24.20 for (version=TLS1_2 cipher=ECDHE-ECDSA-AES128-GCM-SHA256 bits=128/128); Wed, 27 Apr 2022 22:24:21 -0700 (PDT) Received-SPF: pass (google.com: domain of mptcp+bounces-4950-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=et0EON+j; arc=fail (body hash mismatch); spf=pass (google.com: domain of mptcp+bounces-4950-wpasupplicant.patchew=gmail.com@lists.linux.dev designates 2604:1380:4040:4f00::1 as permitted sender) smtp.mailfrom="mptcp+bounces-4950-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 AB48B2E09D3 for ; Thu, 28 Apr 2022 05:24:18 +0000 (UTC) Received: from localhost.localdomain (localhost.localdomain [127.0.0.1]) by smtp.subspace.kernel.org (Postfix) with ESMTP id 3FD5DA5F; Thu, 28 Apr 2022 05:24:17 +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 98DBF7B for ; Thu, 28 Apr 2022 05:24:15 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=suse.com; s=mimecast20200619; t=1651123454; 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=jV8KpKQhTKoXw/ECUgbrlqE1/LWL5bWdyV6o+JDusO8=; b=et0EON+jt+EbhqT+eaYmfESZWmKgY+uEsyPpTfBDnyZZ2d5BfS2CqyMsjK6vZmnNFWVwRe xrg3tnXSHjP8u2CbnLw61WKNrh83qud5EQJ2PybRTgALwqbt0pk8U3ITYcdyOrVD1mWOZY XmKXJ5IMjHmTjlgpWfoaKK95kL3ckG0= Received: from EUR05-AM6-obe.outbound.protection.outlook.com (mail-am6eur05lp2111.outbound.protection.outlook.com [104.47.18.111]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id de-mta-20-SPHhwM4KPxG-OhnJaPMuKg-1; Thu, 28 Apr 2022 07:24:12 +0200 X-MC-Unique: SPHhwM4KPxG-OhnJaPMuKg-1 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=XisWcKJ+OIHXRvZY1PhcuvTnV8ay9Pn4YjNqIcT0ukKfz9M+3cp8X8BEUq+b8PBE9AvQRVQGd0tw/1/kUI2O8rZXPt0aJFXaJPFW1eKPnGrxpwPa7pCxPD3eztBPVgpWR82DMsLR+yU2gjKIiUmZfyT9Ja8C+82JbsydGF6JJm5LR1TRSJ5Mx1vW3YbQz31TtFPHrbJ8CgwatnUbHFURT0jdWKRauWQF4o4NXtO8+/rHMj8snc/ZLWXm4Xp3hJqhJwMb/LVoq6cDIfmnDlx2F3az3byfJKziUv82FyVr6IgRXZ/KVXK4MA8+twAnV5/sBWhZjxEX36EW5KDFUJnvNg== 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=P/ykRk0FLAi9zZKdyacd6h6WXu4JmoNG3+DmvOYNzlY=; b=dtImqRVZhqlvkQr0t6UZQhHG9UB25I/Nqdd16FDn/MX1Oaly9BrMgBX8L7M4ClzR9VGTBKEwdEi2D+w7Z42oosO+Evcg85j+Y1DMXZvbij1y28Yl8LmoYrzNRNM2dpC2YAwejiZn5n5b8Wkucig1LHcROiWPrcWyZQU9Yivji2tK1wimNVTOH+k0ACVvaBtye1sEc3Q08uJAmxJSMy78LyqUrdfG4rQes9IZhymfKs+okRnFzMpOygXARqmWI3p8dcBtmvE2FCDqY8awC1fctsB4B6RCW6k3MtGY9+vQhot6jQ1RSicCYOD+/Pell/RDGMNLuSBesY54WPn3UPlKLw== 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 DB6PR0402MB2885.eurprd04.prod.outlook.com (2603:10a6:4:a2::13) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5186.21; Thu, 28 Apr 2022 05:24:11 +0000 Received: from HE1PR0402MB3497.eurprd04.prod.outlook.com ([fe80::9974:fd5e:e3c0:14dc]) by HE1PR0402MB3497.eurprd04.prod.outlook.com ([fe80::9974:fd5e:e3c0:14dc%3]) with mapi id 15.20.5186.021; Thu, 28 Apr 2022 05:24:11 +0000 From: Geliang Tang To: mptcp@lists.linux.dev CC: Geliang Tang Subject: [PATCH mptcp-next v17 7/8] selftests: bpf: add bpf_first scheduler Date: Thu, 28 Apr 2022 13:23:34 +0800 Message-ID: <9167bff943811710c24d8aa5f629912875110595.1651123078.git.geliang.tang@suse.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: References: Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: HK2PR03CA0066.apcprd03.prod.outlook.com (2603:1096:202:17::36) 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: b7391e74-2b53-462c-c092-08da28d753b1 X-MS-TrafficTypeDiagnostic: DB6PR0402MB2885: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: ZwiCIUZnmqd3D5NtmxxXLNflrp/p2iJqIIgMbCS1MHUkvf6q0J6SAjGWL8nv7DaTB3/CAxgPWwrafEKvLvFmWhuhADzU2gx52kQlqdwDNBQZRh2jh/Fxkqr9ZycGLfqQPoJbx7coT3DxZBfaAr79RB4HTvDw2sz4HcOpz7yqznNXFKpzMKKD2hijHiK6hc8z3A6BRKJMVcYVYNC3f0RIf+EVnQwW+Wkpk50BxnJ3vuf+TZXuLon1XIwXecpgdOaxIG1lYIomUgBk0nIGsV6SQ94yoaqmuk0R7kgIydpvzdPmaqtziZI6PVHXRqyCh9uTQ30Jw9xgxpmYeb0nNE8i1Xi6Lk88ZBsPobvmCbbdP7WhKY59F8s18YWJnWnl4B8tAQC/C8rUmdKZaNwd7XkK5l5O3JPYc8Dm+2gAeADBub3YiQDdToA+5d+C4eW1kBFDtA1OYWxLFkj81VvsaZxcIk/Uu4hH8LmkH0fdWo9FS6/13L2wfGnD+rI/QF0UO+swVLxeaUb1Lif3RSlPCjYAAQMnlgIUF1WDOLU/zgYegIwRqbaMkf2DSBErur3s0m4uVpyJKZ7rWIwQy9467yve0IU3+VHR2ZggdRW5OB6C2wgMlvYNoBUWgTJsxAnhV06BqSF4hzaEQtwxYODoSnBV7YEAacIybiV5JIHHdMzhV/FOhuqsUVfUz1iBk+2EqvOgFDah5tC/4a/Y9I14Zqs9OQ== 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)(38100700002)(6512007)(5660300002)(36756003)(2616005)(8936002)(6666004)(6506007)(66556008)(186003)(26005)(6486002)(44832011)(66476007)(8676002)(4326008)(508600001)(6916009)(86362001)(2906002)(66946007)(107886003)(13296009);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?QH/09oRQYwRG1JNrGwQGmPc+sk1Rxl8po9Df/jLwrOxDlStdxL/xgcLvC1pr?= =?us-ascii?Q?DBt5H804+pb3F09ZPabtsSiXlujUoR4hL7fKHhAOLBYV/gFFZpm/ZihqSsW2?= =?us-ascii?Q?S45sBElFIHli9p5JWBLscrKKkeVQw0G+bwfhlyZrmzely2AlOm6olbJDsD5i?= =?us-ascii?Q?m4mHNwDeSPzceUroq/wmFEduBSevVBEe0TsK0ARfBSdl4pTTYfq9b1Q53x9y?= =?us-ascii?Q?jsHS/8crHQzHvC9oyInjUQOimD51IfpgQiv1/ErebNZ982lzQvwRIW6a925i?= =?us-ascii?Q?ozrvgRZfMNeFaPxgHrf3O8o1gZ3rvnATynyCqM9uIskgj4EsyYpUMiVve0eU?= =?us-ascii?Q?jcBsxbcIMzpk+k9UiiMbzOb9/XYEQS2DgtJeqDInixQO1bIvsLpA48NxUsoH?= =?us-ascii?Q?MPEtbrZCtlgSpqlplUQmZy98Wp4bYZobTlBOKB3aBosr5T6hjJL/nUqiq2FJ?= =?us-ascii?Q?TU+kipPcJZbr3W08Y/cq5PUEezrgqkHQFBHNgcbxjkB/ZhPeBzIML/Ofos5g?= =?us-ascii?Q?pQuT89F4k8i/jA1YAkXOfbC+IYseDsGQMuQtVo9unUbna7gHcOs5zOfBHUR3?= =?us-ascii?Q?tDN1LQqSCvNdwdySMuNTnV0a/l3tgSZEdQyksbu5h7BHB+GjoBbbMgypxaqC?= =?us-ascii?Q?lK7g2SIj055hN5eDnV14uEbp9N1kYP14sC8arNZp/XVfeH/bHjdycGPpCmyV?= =?us-ascii?Q?k4qnXg89iZor0+C7fizbb9+XNNmjoBfBFRhdnIY6nIZ+m2ZHwizy44mXhu52?= =?us-ascii?Q?mr+V69k0Dv+JHnSgloqQISHf+jGuTDXvA/YIsrxw0C52dggvf5im5q2OTxWC?= =?us-ascii?Q?6hA9/pu/rC4QY29j8P/tS2CvVqExHtLHDucBL873Z1HuNwYhVvvyIoP98Etb?= =?us-ascii?Q?txycUjyYisrECPyk1J+nD7sp1l0k9nQJ306O3WCf8i+ofiThJqoxfpsDF4Ci?= =?us-ascii?Q?FElpPNGM1jf6+PDq3xUhLYUzecmzFITPfMjliEyQP2vFmS/xfw/6D6dA65hA?= =?us-ascii?Q?vDHbObVvkWIceo/0e26j5tDqPu9kJBHKNzYtiSy91RTeFcnPGxTHxCNG35eU?= =?us-ascii?Q?5BP3vPVxV0I6GrIQ48qaD3Vv0goEDgo/LpjgjqbWGc9q0OR1EWjYx5Gi55lO?= =?us-ascii?Q?XlvrSLQcDNkfLlAFDo8oj3ylJJtQpfImNqF9HCZtXsaNSJk4F7/tzKxD9WtV?= =?us-ascii?Q?4ORtT8TG6xc9xxCEAByMDMc5QWfcBB9fJLFCRto0jPzgOil9oE5UFcRt/W9m?= =?us-ascii?Q?3qov9WA4feasp16FNPYZtqoz9Nk2rIvwzTMHUCR3syRCTxrOAXtqexoQ96oP?= =?us-ascii?Q?Vn+dQqatvorxik3TOc+4YNwekP0968KjzYA3Y4O6MIneDTs0/Xue4e+WRsLa?= =?us-ascii?Q?YDLmXA3TzOvSN77Ui1L5uACD4f6RLKL3Ji4lOh1l3A7Degs5MktMEQC7lnsA?= =?us-ascii?Q?Vy4kiylvS2jUhhR7duDaNmno6qIFe4E3b8cFgcXc3McLcqtsh1wW4d9hF65E?= =?us-ascii?Q?R1scsZNMi9ZKLRnsg2v776P6F+J1RTNnwvfQek31FG7SRHF3xfJeb24xG/XD?= =?us-ascii?Q?rCgFopXz9zGTXAumjFaWFF+oe3r/V9r0BEyHHsXpogu/X3vbkLrs0dLLdZ0s?= =?us-ascii?Q?kIzNtiI2V78123dyJRc5ZiWiaMFARfErDpvEQmInYcL9Sv8g3ZrIjAJw6D3n?= =?us-ascii?Q?rLcznWm7nGgkJaw4pfE9X5O86TA1cBsDCOi+iKJey5s9kAD+mHMU8AEccdk+?= =?us-ascii?Q?CwDqRDswF4H4Ip0lWQiNK/mxPvryCwo=3D?= X-OriginatorOrg: suse.com X-MS-Exchange-CrossTenant-Network-Message-Id: b7391e74-2b53-462c-c092-08da28d753b1 X-MS-Exchange-CrossTenant-AuthSource: HE1PR0402MB3497.eurprd04.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 28 Apr 2022 05:24:11.6396 (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: 9iifyT4l2dCQC1ITIMQqntYvm8Ziz7JS9pknpKNBmjhgJOB7ZzyAVlNRZBvH0avZevLEbUfnGdk0WES9/N6CPw== X-MS-Exchange-Transport-CrossTenantHeadersStamped: DB6PR0402MB2885 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 | 35 +++++++++++++++++++ 1 file changed, 35 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..9d3cfc422366 --- /dev/null +++ b/tools/testing/selftests/bpf/progs/mptcp_bpf_first.c @@ -0,0 +1,35 @@ +// 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) +{ + struct sock *ssk =3D msk->first; + + msk->last_snd =3D ssk; + data->sock =3D ssk; + data->call_again =3D 0; +} + +SEC(".struct_ops") +struct mptcp_sched_ops first =3D { + .init =3D (void *)mptcp_sched_first_init, + .release =3D (void *)mptcp_sched_first_release, + .get_subflow =3D (void *)bpf_first_get_subflow, + .name =3D "bpf_first", +}; --=20 2.34.1 From nobody Thu Sep 18 06:42:54 2025 Delivered-To: wpasupplicant.patchew@gmail.com Received: by 2002:a05:6a06:869:b0:4b8:7781:bd2f with SMTP id d41csp1464591pis; Wed, 27 Apr 2022 22:24:28 -0700 (PDT) X-Google-Smtp-Source: ABdhPJzrksFwfm7tKhh/2CqQD3XhKpYnPPoYJ/H3cX/4MlnGPqVnAGfpxdGLUqRbd36cL4iueSH8 X-Received: by 2002:a17:907:62a2:b0:6e0:e201:b94e with SMTP id nd34-20020a17090762a200b006e0e201b94emr30074476ejc.730.1651123468834; Wed, 27 Apr 2022 22:24:28 -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 a27-20020a056402237b00b0041ceaed91f5si3119836eda.496.2022.04.27.22.24.28 for (version=TLS1_2 cipher=ECDHE-ECDSA-AES128-GCM-SHA256 bits=128/128); Wed, 27 Apr 2022 22:24:28 -0700 (PDT) Received-SPF: pass (google.com: domain of mptcp+bounces-4951-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="E5FHo/B0"; arc=fail (body hash mismatch); spf=pass (google.com: domain of mptcp+bounces-4951-wpasupplicant.patchew=gmail.com@lists.linux.dev designates 2604:1380:4040:4f00::1 as permitted sender) smtp.mailfrom="mptcp+bounces-4951-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 7B5962E09CE for ; Thu, 28 Apr 2022 05:24:27 +0000 (UTC) Received: from localhost.localdomain (localhost.localdomain [127.0.0.1]) by smtp.subspace.kernel.org (Postfix) with ESMTP id D44FDA5F; Thu, 28 Apr 2022 05:24:25 +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 02F4B7B for ; Thu, 28 Apr 2022 05:24:23 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=suse.com; s=mimecast20200619; t=1651123462; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=WnSV5a1EwgO3RknI2V5ujKmVZVa0WBBQfbw9D8tOT7g=; b=E5FHo/B0hauasPDMMLcjWM9r7UwQ4VzCHGL/bqG+dDCbLjZ2SYwWsW1nBYcUlusPo8q3nH cCPwXkz4MMOx7BBs4KHmpJwRMob4a6MeGBqoeJQxe5liv0+68LeqzuACjDt7FKsOjfJg3Q 7xDkxMp4Nnfd3D0qG0v7Q7a9XBvU5fg= Received: from EUR04-DB3-obe.outbound.protection.outlook.com (mail-db3eur04lp2055.outbound.protection.outlook.com [104.47.12.55]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id de-mta-37-qVo5oHEANt-sQyu23k1W_g-1; Thu, 28 Apr 2022 07:24:21 +0200 X-MC-Unique: qVo5oHEANt-sQyu23k1W_g-1 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=bepudcCxFit8468Rjf4byhU0E7KTg7lr7/Vx82WBbZmKF08yOSUF9vKrV0L1Trhtmi6qNpFSzyonyiZaW0GKE3wIFPkSoqjydxS+CvCFnPADqoFMsNUhIbDPKkTy9H2nKsF7SgC9xGTZx1j3nio2pgOoCbm6HUuaNh33NjwwX9qtgA/BbrhmDwojkqEU6nQbTMcm0L1FYdCcPIrlTZD0561Wlp/s5MYNecEI5ToO/z/JmHHj2pVeHxR58WrG211YhYcayhrEOBvpKBhEPCkSEnPsUcutZ5IysWjNlH6sAIb9A+6CMtan39ejzeyiZ5muVoMM0KmxOTV0wRmBqKphiQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=XaWAbkqCo4kB2a2vFZa9GAp/RL8+LsScjAc1pLDDwLg=; b=dS1KseMGBGC5wLSLJ8/wu74uSANQKSyqXLYCIFoCmCRH/Ar5iNqJjJv1yrEds42PDTHz0hPm9209Q4UWkVrmj+wt7QtlbLs9pjRSrAlbtIqDB0qaXAu9e/TBkQuOJuYttr8dLPozxWffL+tdT6Odg99BH0rAstSxZ3ML04j4ughshQwrpELO7MLPRkTZ2xUaSKoUvrYKLJhCsa8EvvQsvr8y4RB4J/mCrxow8UO5P6JxBvXR2H/m8vQnUvbncy7c3ApyyKMJLkxcAW1D7r5sYxZ5ie+BP9fL9KuDqeBeKkrzg9asRTxAvXZKMuF9l/RQsZ4jNjKQDconVHN9z6kqJg== 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 DB6PR0402MB2885.eurprd04.prod.outlook.com (2603:10a6:4:a2::13) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5186.21; Thu, 28 Apr 2022 05:24:20 +0000 Received: from HE1PR0402MB3497.eurprd04.prod.outlook.com ([fe80::9974:fd5e:e3c0:14dc]) by HE1PR0402MB3497.eurprd04.prod.outlook.com ([fe80::9974:fd5e:e3c0:14dc%3]) with mapi id 15.20.5186.021; Thu, 28 Apr 2022 05:24:20 +0000 From: Geliang Tang To: mptcp@lists.linux.dev CC: Geliang Tang Subject: [PATCH mptcp-next v17 8/8] selftests: bpf: add bpf_first test Date: Thu, 28 Apr 2022 13:23:35 +0800 Message-ID: <81c493815ed6f4d50b8178323771b97d27fad1f8.1651123078.git.geliang.tang@suse.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: References: Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: HK0PR01CA0061.apcprd01.prod.exchangelabs.com (2603:1096:203:a6::25) To HE1PR0402MB3497.eurprd04.prod.outlook.com (2603:10a6:7:83::14) Precedence: bulk X-Mailing-List: mptcp@lists.linux.dev List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: b41d78e1-3fa7-40a4-42c6-08da28d758c0 X-MS-TrafficTypeDiagnostic: DB6PR0402MB2885: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: rlk/HYaN1TD9KmB8eZTa2xh0jurxTT3e6NCwktiTvrmQ/qz3aoV1iTQ2Nk8r7uoYjo7kYrJJ92aY5baqBcDkn00fv1tpO4dQ6CGFfFuJXBBEYxnYNNForiA/6+2fHhE9IIkTazbv98KOpau4H/QW0CA1fHNopBcsZIWkruIK1EVuyspadcF/dNdFt0Za26Zng4HrwQnUHu2A12K1PgOW/r8rphXLqKYVBeem9uy/vmbMczvWYT+AnisL6ZUI8GMIZAeMp44R3sVYXeXCInsi9fsr2lOvXQwcdZa4LLbj88CVyabVVVRe+gK0bJ5/q2bAdQqMpG4xjLPxjWbhSTWrI7oz0TWlw9xYW34ovkJKpRjNjElV9WpYawSfroKF08kkmt/e5bpekGTPpXO3G3ESUBvA21aw+tsa9epZcFw8JBVYcIii+ihSkp0amARaeV7U7BZAAy14GiXcTodYtqM92h8rr7XznXfZIbuewRxslSjSVVE2tgsOdlbj10s9dOfbjoYsUp4s+xol3CPDf07UwgYZbhLXnbkqqvPNSIm1VhFyJ9wCYsPEkflOhtMc2Tw92LSrfepRsAk3aBPZIwWF1yjHp4+foLtjUhRNMuqCUG8UxWVP9jKjf0ojQtANtX0lNwspFt4fXUfjYZk8ko8HBZPVPDyngsJGeAAlBsu/d61W797xXIGgOiTqOxs5S2IF 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)(38100700002)(6512007)(5660300002)(36756003)(2616005)(8936002)(6666004)(6506007)(66556008)(186003)(26005)(6486002)(44832011)(66476007)(8676002)(4326008)(508600001)(6916009)(83380400001)(86362001)(2906002)(66946007)(107886003)(13296009);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?/nVUMNTituqUZCNNIfWPmeZTDXPIxypI4i9kKEHLtopu+pBpFiDXh9Mprw1b?= =?us-ascii?Q?rwLG3TZkfNAR2+OBuDK2SGvJ54hCahV1vRP4WQeetGp+4fKkAYSltbpWNXiY?= =?us-ascii?Q?p2VaZprxZOAm7X71dcRfmx806WbSNxySd51nL6rRQp8qShpMEc7w6AmUnzAF?= =?us-ascii?Q?NaWPfwcl1Eq6/v8EYr/3nwlADOin4huupG4Wkx/nlkKYJXQHzF26/HUIOVp+?= =?us-ascii?Q?XCE/MnPA17VzoacoPa7VK7EM9xW3FR8xLkPZYkciTGRL9ucd/Mm4FM8ntYSb?= =?us-ascii?Q?TjTr7ybQw4MgF/x1RJs4m1ivqxG4zi+WpoAP2bXisVxb1NH9PHM/hl2Mi3Zx?= =?us-ascii?Q?fHgxwKKbUP5BCy+d6d8TB3gTlB/rRXCSVYFFWXwkDIDeNppJkgJEnDfCXvi4?= =?us-ascii?Q?ZDms8T0zRRl5ZCitb7spQiL6L3He8UeRiXzWXRDtYjU7KqtU3duZ0TCs7MGn?= =?us-ascii?Q?paR0n38yeKhfi9K0ZnOavAhYME8/qDziDWYrCzrYPtKxpFYs6rl1RvtGGJme?= =?us-ascii?Q?Bu2swpPOzD4TONM5ZtDTR5+b2QruNywtB/poa5/7HAgfxuxY6158WIf5toUI?= =?us-ascii?Q?Kme5jj7Cvn/kFAIzDFU6k8NXWWKMoqhjdPFoAy4Q99sbHFKDfMelmIcMRe/o?= =?us-ascii?Q?IRNVPaI42hbhomxTbvHNu5BODy7vLs2ioTDy1U/FhKiQnYhCkDaL7oc2ZgfE?= =?us-ascii?Q?h66cfHWpdu5Zihdcfjf/KurNp7WV5LMhtpaspUMxxsDs3wBf64o4WNXSYddk?= =?us-ascii?Q?tmvIvULSwqtJNQ+5BR8BBjPqPoCchGjrtod48OI2mBWX7r490o09Nh5HqqU/?= =?us-ascii?Q?sZNRmnPzvQV1+tq92ICUVSW+/bByfqCFrDEAbnXr+LzYQ2qkeZtFRxsL5KIX?= =?us-ascii?Q?7+iDEGVUV5ILux2EJ8G6eYcbqABWKlV8S88+4C9luRLIkZgshR9g9wk/pQUp?= =?us-ascii?Q?K15Bqg9nVu6cxoaHNLJ0DwEybJj2C8jueRInqNPOjT4bcDYIOOhD4axoaZQU?= =?us-ascii?Q?sxoZrHl8LKH5eRnXhN43EVetvefEbji+/fqSPiWRhuXsSKvchK7vqFS+gYOt?= =?us-ascii?Q?kgbvJxdOeEIY2NvROyh+cPgPNYXLisfJwNaGTLYHWlA0R0OvfRFYo76sUt5v?= =?us-ascii?Q?VpbCRTIVfAs7qPkZyzGlB4MmE4Y2qP2f3ZV3umGMb+RK00CF4tistZTBWBlN?= =?us-ascii?Q?33qnxu7FC5r96Yeyv1zVDU/mbizBbY5L7XYFfdO/F9aaywCpoRVQMNxo0jJM?= =?us-ascii?Q?StLsZRMhrN8z/r/SCKoawuKZ+z+ow87rC/6/S5eK45T+nwkzgJpQb1e3H09+?= =?us-ascii?Q?el8kdYVcSGXXBQt0eqNecZIx97LNd4yOjFdE1G1Fry61G1S/hV98CW4y683x?= =?us-ascii?Q?GmsEQXJVzOZx6j4xLBJLUPwh4qUFOFo+zCVxOMZz6INXCBs8SSma+T3r5D1p?= =?us-ascii?Q?P8KciAlJJ5oGs/f7K4RozYCgsdUeZ0pAZq20iUO0iAziHj51S4eytgIElXl3?= =?us-ascii?Q?EXdPkQmkydBaIBDlbqlxbSWsQ8w2EG548/zw7lpYmaaJ36RAZKZ0VBSV9/tw?= =?us-ascii?Q?t4Hr8H7hmAJFMfEMi5lNZkAShUv0a/A3eOKpteaV9Tj3oCxkRQBRBEXElt8u?= =?us-ascii?Q?7IgNoKpB+HpwaIDWaNYqPOxd/km0PECinyOV5VWIIBa9Ol0cj5aE17owwmrY?= =?us-ascii?Q?rN7VF8sKp15r5RFkRhOLNDZ98eD1bElCLYFupYzJ0FoqvAZFgUMG3YJ4tyi6?= =?us-ascii?Q?+Tzfeg7YowYzc6V/FZ3pB/QZcj0y1oY=3D?= X-OriginatorOrg: suse.com X-MS-Exchange-CrossTenant-Network-Message-Id: b41d78e1-3fa7-40a4-42c6-08da28d758c0 X-MS-Exchange-CrossTenant-AuthSource: HE1PR0402MB3497.eurprd04.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 28 Apr 2022 05:24:20.0139 (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: HRR3+6lYBCbORhjy/cjBVt3/jUK34+saEuOY0+Zyz0++sqURe1PPYbxUSXqC4HhjJf3ycQMIpaiDakc3FDHTEQ== X-MS-Exchange-Transport-CrossTenantHeadersStamped: DB6PR0402MB2885 Content-Type: text/plain; charset="utf-8" This patch expends the MPTCP test base to support MPTCP packet scheduler tests. Add the bpf_first scheduler test in it. Use sysctl to set net.mptcp.scheduler to use this sched. Some code in send_data() is from prog_tests/bpf_tcp_ca.c. Signed-off-by: Geliang Tang --- .../testing/selftests/bpf/prog_tests/mptcp.c | 112 ++++++++++++++++++ 1 file changed, 112 insertions(+) diff --git a/tools/testing/selftests/bpf/prog_tests/mptcp.c b/tools/testing= /selftests/bpf/prog_tests/mptcp.c index 7e704f5aab05..44484a63e62a 100644 --- a/tools/testing/selftests/bpf/prog_tests/mptcp.c +++ b/tools/testing/selftests/bpf/prog_tests/mptcp.c @@ -4,6 +4,7 @@ #include #include "cgroup_helpers.h" #include "network_helpers.h" +#include "mptcp_bpf_first.skel.h" =20 #ifndef TCP_CA_NAME_MAX #define TCP_CA_NAME_MAX 16 @@ -19,6 +20,8 @@ struct mptcp_storage { }; =20 static char monitor_log_path[64]; +static const unsigned int total_bytes =3D 10 * 1024 * 1024; +static int stop, duration; =20 static int verify_tsk(int map_fd, int client_fd) { @@ -251,8 +254,117 @@ void test_base(void) close(cgroup_fd); } =20 +static void *server(void *arg) +{ + int lfd =3D (int)(long)arg, err =3D 0, fd; + ssize_t nr_sent =3D 0, bytes =3D 0; + char batch[1500]; + + fd =3D accept(lfd, NULL, NULL); + while (fd =3D=3D -1) { + if (errno =3D=3D EINTR) + continue; + err =3D -errno; + goto done; + } + + if (settimeo(fd, 0)) { + err =3D -errno; + goto done; + } + + while (bytes < total_bytes && !READ_ONCE(stop)) { + nr_sent =3D send(fd, &batch, + MIN(total_bytes - bytes, sizeof(batch)), 0); + if (nr_sent =3D=3D -1 && errno =3D=3D EINTR) + continue; + if (nr_sent =3D=3D -1) { + err =3D -errno; + break; + } + bytes +=3D nr_sent; + } + + CHECK(bytes !=3D total_bytes, "send", "%zd !=3D %u nr_sent:%zd errno:%d\n= ", + bytes, total_bytes, nr_sent, errno); + +done: + if (fd >=3D 0) + close(fd); + if (err) { + WRITE_ONCE(stop, 1); + return ERR_PTR(err); + } + return NULL; +} + +static void send_data(int lfd, int fd) +{ + ssize_t nr_recv =3D 0, bytes =3D 0; + pthread_t srv_thread; + void *thread_ret; + char batch[1500]; + int err; + + WRITE_ONCE(stop, 0); + + err =3D pthread_create(&srv_thread, NULL, server, (void *)(long)lfd); + if (CHECK(err !=3D 0, "pthread_create", "err:%d errno:%d\n", err, errno)) + return; + + /* recv total_bytes */ + while (bytes < total_bytes && !READ_ONCE(stop)) { + nr_recv =3D recv(fd, &batch, + MIN(total_bytes - bytes, sizeof(batch)), 0); + if (nr_recv =3D=3D -1 && errno =3D=3D EINTR) + continue; + if (nr_recv =3D=3D -1) + break; + bytes +=3D nr_recv; + } + + CHECK(bytes !=3D total_bytes, "recv", "%zd !=3D %u nr_recv:%zd errno:%d\n= ", + bytes, total_bytes, nr_recv, errno); + + WRITE_ONCE(stop, 1); + + pthread_join(srv_thread, &thread_ret); + CHECK(IS_ERR(thread_ret), "pthread_join", "thread_ret:%ld", + PTR_ERR(thread_ret)); +} + +static void test_first(void) +{ + struct mptcp_bpf_first *first_skel; + int server_fd, client_fd; + struct bpf_link *link; + + first_skel =3D mptcp_bpf_first__open_and_load(); + if (CHECK(!first_skel, "bpf_first__open_and_load", "failed\n")) + return; + + link =3D bpf_map__attach_struct_ops(first_skel->maps.first); + if (!ASSERT_OK_PTR(link, "bpf_map__attach_struct_ops")) { + mptcp_bpf_first__destroy(first_skel); + return; + } + + system("sysctl -q net.mptcp.scheduler=3Dbpf_first"); + server_fd =3D start_mptcp_server(AF_INET, NULL, 0, 0); + client_fd =3D connect_to_mptcp_fd(server_fd, 0); + + send_data(server_fd, client_fd); + + close(client_fd); + close(server_fd); + bpf_link__destroy(link); + mptcp_bpf_first__destroy(first_skel); +} + void test_mptcp(void) { if (test__start_subtest("base")) test_base(); + if (test__start_subtest("first")) + test_first(); } --=20 2.34.1