From nobody Tue May 7 04:33:15 2024 Delivered-To: wpasupplicant.patchew@gmail.com Received: by 2002:a05:6a06:869:b0:4b8:7781:bd2f with SMTP id d41csp3443973pis; Sun, 1 May 2022 06:49:25 -0700 (PDT) X-Google-Smtp-Source: ABdhPJzZDqhTlSC9kTPARugONSh3Uf6VFa8mTj+u0h8xkt7/Zw0QZpb/owkc8plG7NfMDWOGyU5J X-Received: by 2002:a05:6870:b60e:b0:e9:35aa:3cb8 with SMTP id cm14-20020a056870b60e00b000e935aa3cb8mr2867013oab.249.1651412965093; Sun, 01 May 2022 06:49:25 -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 n23-20020a056870559700b000e5cdd123edsi9009830oao.211.2022.05.01.06.49.25 for (version=TLS1_2 cipher=ECDHE-ECDSA-AES128-GCM-SHA256 bits=128/128); Sun, 01 May 2022 06:49:25 -0700 (PDT) Received-SPF: pass (google.com: domain of mptcp+bounces-4997-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=J3JZNo7E; arc=fail (body hash mismatch); spf=pass (google.com: domain of mptcp+bounces-4997-wpasupplicant.patchew=gmail.com@lists.linux.dev designates 139.178.84.19 as permitted sender) smtp.mailfrom="mptcp+bounces-4997-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 DA3F62E09B9 for ; Sun, 1 May 2022 13:49:24 +0000 (UTC) Received: from localhost.localdomain (localhost.localdomain [127.0.0.1]) by smtp.subspace.kernel.org (Postfix) with ESMTP id A191128F1; Sun, 1 May 2022 13:49:23 +0000 (UTC) X-Original-To: mptcp@lists.linux.dev Received: from de-smtp-delivery-102.mimecast.com (de-smtp-delivery-102.mimecast.com [194.104.109.102]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id BC88828EB for ; Sun, 1 May 2022 13:49:21 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=suse.com; s=mimecast20200619; t=1651412960; 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=/oovb+ZHHC+dYdEbAU+x4rLJDmPAeMOH/dTgCE0EfGU=; b=J3JZNo7EyzjlHassyNNqmcyxTKfvc8KwVSfhmaY6kcmOIMhOlFSzAzXsCUNh/CufVbqtTf 38nVwLxT6uBqaS1ScAmiZpeBwqkz3jNM9zfL812dibBqr2iaMWbJ8MTYC51V8z4R24x9fB 6pkUvJ+0AyrsrFrF4Ax4CJCUaFt2hvE= Received: from EUR05-VI1-obe.outbound.protection.outlook.com (mail-vi1eur05lp2171.outbound.protection.outlook.com [104.47.17.171]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id de-mta-31--JenxPC8MGyvbCvXn2Uubw-1; Sun, 01 May 2022 15:49:11 +0200 X-MC-Unique: -JenxPC8MGyvbCvXn2Uubw-1 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=QQ42F82zxR8SItB80IxgKRobIVchOIExbBj1CpSYxYEK1hQBDvX1fFyzYXw58+6gOmn/KaPNch6buRNTKve2zKnLfb7gsasltfq1ssO/HY7SBIMXSSB2kmwNxHGi10lqEi+x8zIT5F0AycgeO7cOkz4Gmc+pNkVKLn7xVo9wtxQUqaHAleaJtPCwglB3W+er6rj7xH/tPEBVWBuS5SS3LjMAy2Bt4CMSnJXS0uJk2s0ZFmayCZ1EQhh2UlIOGfd+N/La8zZ2Z+cK1mbpjtanSu17gRcaA3S1/u+gf0XGho6utvjWDoQkZPRVrbdAmVVOk3htSJmnthfk4lEBQCODxw== 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=EjxaVLgKBGQww/ySwgmhoftg47xFbCxbplz9+bc0/kk=; b=fUFHKrCwZCYBK4kcRwB+NYYIn1bekIoPh+K0LJZljP7mX429Y3nc7sH7xKcFcdUbLbtr0Hj3ioDjDe/2k9SJsaoNQcQcHzl44GsVMFwBI1oSXB+bV+QzbGfrJfZbCMTKe0V6DgrB81V+G1heA6OrjxnF8CP5gPJPeSyvLGxD9A8qYBc9OP/dNh61+Tya7JTMNlCdxL1G3fPclpe05qLMy0+KnEZ35wiRfIff0EXV0xU7/3/QUR6SCh4eJvL4hEPmS+jPa2pX2r/bH+Kez+Sz2YfbUcfINYrrTkUYihyges9hlOOm6m8unICg54sKB5Hx8MTBW8YpSJQTcM/NN6EzLg== 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 DBBPR04MB6283.eurprd04.prod.outlook.com (2603:10a6:10:d0::11) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5186.28; Sun, 1 May 2022 13:49:10 +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.028; Sun, 1 May 2022 13:49:10 +0000 From: Geliang Tang To: mptcp@lists.linux.dev CC: Geliang Tang Subject: [PATCH mptcp-next v18 1/7] mptcp: add struct mptcp_sched_ops Date: Sun, 1 May 2022 21:48:44 +0800 Message-ID: <69edcb553754c9be998f21e3596ceee69e3e813c.1651412613.git.geliang.tang@suse.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: References: Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: HK2PR0401CA0008.apcprd04.prod.outlook.com (2603:1096:202:2::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: d92255f6-92ed-4a1d-d35a-08da2b795e9b X-MS-TrafficTypeDiagnostic: DBBPR04MB6283: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: pqMI5ECeEZkyyx4RjhqcEgW9ypUwaF4Sv7WnZzs9n6/9KqkO5iJJtwmqYRlLfkJ7jaVeHpItn285lhrxFqvyETA8Ec6vDEhDiDB9jC9atEHMs/93C5QmrFx7I7ntIsNr7RYeBwrUrmTWkBeE0ZUVp6baQpeMQBLnnqvQFYGJjLzkfLICQ+w4uIJVPRk+zxufzkIuPA5hCFfsSSU3qrzh//VageKjXwK3fUXW6h+1NXSNNb6NFMQ/dnrSc4tkMWmUDqJ/7+tHc0HAY7Uez9JbdTFm7Lt9i6G3DYu+9aNd+qtF0MaxOuf0UXvAJ5KMtYntxKFvWpjJ03/P6uKgyowuqQEc9COKAhEo3Zy74LQ7Kea7DiL7hz0jnOInQm2NlFY0xRPO0YGBduPPJndRVg8/paifv09FIpcl+X3xDv9wKRK5SRNn6b8mUv/CVhvZhv5cy7znv22BUe9wgKHpTZWHiImX8AHxLwfdKt2AKJpcfmiBDLkIyZ8vm/6byHKBb+pe7/43WLctIOPMNvXETVeA450ch5QS1eq75VTbdVtLMUwyq5YfYQ7b1QbwA6xBS7Rq2wys5DjJBJiQsIRVOTobw5D6JIua0zDpYinoCerV6qn4vI4aG/a3wogvRl426K8MbrVaRr/ZzZ4EiyMIIbJkWTbu76pnCegO+FcvoafIQ0n6wXkLmK/FFsUxomN50utD X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:HE1PR0402MB3497.eurprd04.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230001)(366004)(508600001)(6512007)(5660300002)(186003)(26005)(2616005)(316002)(4326008)(66476007)(66946007)(8676002)(66556008)(6506007)(2906002)(107886003)(86362001)(38100700002)(8936002)(6916009)(44832011)(36756003)(6486002)(6666004)(83380400001)(13296009);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?6DETmIq8pm+ugTha+CZPrvqsbMW6pB8jZqA3PDWJTpZmkSa5R4SbWuVbdDN5?= =?us-ascii?Q?h2+4FUcfgqx9b2LmXXs5pjeV2n4OtsHJFzrdq72modAs9acoYBCrlMSiYq1C?= =?us-ascii?Q?QBNU6MI04YX00GxhzlDfKg8d6yZY6gM861xFeueRXy8rHNKeo9FTi0CPMEhZ?= =?us-ascii?Q?F1JYTJWaGPqG/owM5qCWfPdzfWprG8MGKC9OSZYFWr7apbfndUPyNGjjI4xK?= =?us-ascii?Q?S3l9T/lNg04rQ+V2Jv92ZfpC2nZ1/+SAlNey41A4OPO69D74UgA5F2ZH15Bc?= =?us-ascii?Q?GYbmlAZHmP/VO1/cBgN+PsoP8k9FDpu8BhmJmrOuEv8XG3aHcgZu0FZfW5vX?= =?us-ascii?Q?raR6uKa0l1eF7wuEa3K0fUT9S4fsRL234zRdkpBH37GAEq6DpSwLulQXi15G?= =?us-ascii?Q?hNZpV4wRrGoOMSpk84+8nWYYaWdlcXTcNUYEfbfEBqVMHxE+Cwif/lt6ooeC?= =?us-ascii?Q?4HnYiNu8VSHGOWQPatSR50ToYDrqDiwRcl8Vmh/Ez9ESN9M1SWXwqhOx1/Ad?= =?us-ascii?Q?iwXMnLLTrysbHBg8C+mbEOM6dkI2X+JnJuyMJewpx6DR7Zn4JTAC+ENiHyhW?= =?us-ascii?Q?S+M3JUM3d+4itDfy5V+uwZxxqlZaUP/Kdko+Jd+qp5ElX2jtR3J8T9ipQXuz?= =?us-ascii?Q?sRqx1t1ZaZJyNXgyZ6UlARF0uuQA3xk0rMEKA4utJdoLBTDmCGXu5s/QiRAz?= =?us-ascii?Q?AjrYSGb7CNU79LjRUCPQ49jl0iWhE0V1fQiK34rj40Ntj7rlZWfjJFVUIVaJ?= =?us-ascii?Q?Mmnx8W0GUb2Kp0ymtorq9na4vFtERbaZOVtswS5Q6cKK4zCLbjX45v2CLgbo?= =?us-ascii?Q?EvCFkyhPCGzzlPa95F2veaKop8JGvZVyzxs3NWSdv+PS1O3o+d8pzKGunc4C?= =?us-ascii?Q?7JaczpKa41jrAV9PYWHnU/PsLaAkbAGt2uCoUrwJEpcXkTWuxLg1Fuz6gBbC?= =?us-ascii?Q?ZW3uf+dEvHBKSM+MHiMfBiHvYNPKp325+EkDh4dtntQmyI1VUlZCZNEb1/0Q?= =?us-ascii?Q?H0H9tfUMv4gIW1BzFNq6YN0aP3Qb/DANrqeLljtvN6ESUmNzM/s25cAJgbAn?= =?us-ascii?Q?WTsUfw5FvvtH/b7l9Mc0DKnhucjCuyuj5tNJIH/YbOKMPEGsicfiDYOtEZvX?= =?us-ascii?Q?pLQAHwyHpkCXQKXa1dJDKXbox5TMtU/Ltj8XoUMWDJTnzId0Con7xRE0W/GI?= =?us-ascii?Q?FrwLaNx1o2XF9w+MGQUz1lnMvP5d8l/oVwn7PJwHMBMXqfS1RhRCB6DctfnD?= =?us-ascii?Q?FJBmhiA+ukZw7RDlbgKMrKCVAKfOISN4zvUFI2WltMQdridpKhVoZntVG2yE?= =?us-ascii?Q?FrlwMeLDhvA6tYrQgK05P2qSJ7c0uUyMmPKosievD64KiEpaEvGMHMcymy9F?= =?us-ascii?Q?80/V8We2ZJQm090UUI/YJMrVFcaIVQK866XckJdF/LluqpV84Pycr1wvetI0?= =?us-ascii?Q?RkSt06XMEuxAe7uBIW/QmJzGVLvpJ7POtVqLz3eMu/FlQ2MVOf4u3uEK7p32?= =?us-ascii?Q?sX7paQjnSgVWN2MO1Tgb7btsP7wBgVdAplj4drnS7UlSERMWkDSlgSeDL5Qi?= =?us-ascii?Q?JdEqGoQwBgpEw2uR0MbgSjlbFLnD7jVGDuLEVUmVyL+1dhtVMISiWRuizZUq?= =?us-ascii?Q?Wn2XQPX4KipEdJIEPgfVqjw93VcInatVVjn491D64GpxMb9lmR23A2f3ntPv?= =?us-ascii?Q?SdAFVyZaGAXv7Lrqy/H4e/yrBOYBTy3J472sYlz02kpJ4M1GWwhYb+XG4nAH?= =?us-ascii?Q?hGZLTxH4xEACpWCSIrVFCqyqMVIXDXI=3D?= X-OriginatorOrg: suse.com X-MS-Exchange-CrossTenant-Network-Message-Id: d92255f6-92ed-4a1d-d35a-08da2b795e9b X-MS-Exchange-CrossTenant-AuthSource: HE1PR0402MB3497.eurprd04.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 01 May 2022 13:49:10.7622 (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: oy2jTouVO8BFtqVupHFPrMFOeBHNazM/mnhFqsJFyI+cfiSnXTlFLPiTxzZELXJFCBT2GnlLKq+xt3hH3X2D3w== X-MS-Exchange-Transport-CrossTenantHeadersStamped: DBBPR04MB6283 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..bea7608d72d3 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..5b8eef4f1b4e 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 Tue May 7 04:33:15 2024 Delivered-To: wpasupplicant.patchew@gmail.com Received: by 2002:a05:6a06:869:b0:4b8:7781:bd2f with SMTP id d41csp3443984pis; Sun, 1 May 2022 06:49:27 -0700 (PDT) X-Google-Smtp-Source: ABdhPJxWD9SiORPjAVY12ynq1od2Y5vgx8qwdUN8M0gZrSjPfo5VtCTkaFkloeFTy+TjycpqqaLN X-Received: by 2002:a63:a515:0:b0:3b4:e71:efc6 with SMTP id n21-20020a63a515000000b003b40e71efc6mr6118955pgf.183.1651412967444; Sun, 01 May 2022 06:49:27 -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 g25-20020a635659000000b003ab2131c72csi11692861pgm.304.2022.05.01.06.49.27 for (version=TLS1_2 cipher=ECDHE-ECDSA-AES128-GCM-SHA256 bits=128/128); Sun, 01 May 2022 06:49:27 -0700 (PDT) Received-SPF: pass (google.com: domain of mptcp+bounces-4998-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=TPii1GRR; arc=fail (body hash mismatch); spf=pass (google.com: domain of mptcp+bounces-4998-wpasupplicant.patchew=gmail.com@lists.linux.dev designates 139.178.88.99 as permitted sender) smtp.mailfrom="mptcp+bounces-4998-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 BF0AB280AB8 for ; Sun, 1 May 2022 13:49:26 +0000 (UTC) Received: from localhost.localdomain (localhost.localdomain [127.0.0.1]) by smtp.subspace.kernel.org (Postfix) with ESMTP id C0D6728F1; Sun, 1 May 2022 13:49: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.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 0D33328EB for ; Sun, 1 May 2022 13:49:23 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=suse.com; s=mimecast20200619; t=1651412962; 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=TPii1GRR5Hkya9X7uSb9XWU24hRaaJCv9lYCiDzX40cxLLOHmQ98OPfauel85VCCoV1Q/a C3u77HgyF859RIOOVBkvxBXvMtTfc3ORv+kOCIyKxtma/K/l/SVS1l9kVnRCUEY6+WUzDG 9ROdnmi5QHqNJOMzV3BT7MHViC9Vtis= Received: from EUR05-VI1-obe.outbound.protection.outlook.com (mail-vi1eur05lp2174.outbound.protection.outlook.com [104.47.17.174]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id de-mta-40-UAawF5CvMFmTyIxYrstHVg-1; Sun, 01 May 2022 15:49:21 +0200 X-MC-Unique: UAawF5CvMFmTyIxYrstHVg-1 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=keGLPrG/s69IPz7Jm/slGoovq5+Avv9XDzT8k/YwI+KvaT0rgXiD3th3PmzahmLRzJXNRBDLof3I6QeG42O15cpuHuiQs7xIRim1VqPkBoVR7fRjCTWJgzLT5chWIUqLo2UBWlFN81Pqqz3dhwM++p81fiiq0sXIMaaR9nyjifI9lAcmvlaqtgpDMJiJrR/oaLSzec+QrEwnMS5FzHexYGnQJ0wdek4tOdFUh4kCnyULKZwaVvqRaVdvp/kHxa7GCt6QvtXtiqoWFlS9uUT63rCXt/PmqCENme9PZq2A8LNBfBSjK9mcqyrzdateseb6epEsAbnFKdeFIXi8Tv/mIQ== 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=CcBwsVT8VDDZYSnu/qd322JSa2B00n+k+AFU+JPwV5424fFyp5kXVDv0KKZ2YdWLUYFNvHfQvM0eGO0fdoYYTdhJqsHkUBQCkht2m3jNJjZz8JkMmbi9fEPucHMZyBHcJs7gbw2h9Sw2lFpre4vdo0d/1oxT2YkvnLnzr2zqnNRmxaxsWFHwYzxPxlJhNNOJGM6XHEb/Cv7S4BzdEEZE348qUQRqMZzowrU1C1v4Unlsxb+VmwHlNZOI/3aHeCtOKOCQ6ebr9qXTPIAG+i8znYJg57VZEqdlOhfI+tHJqO+uGjlYaRoZE0gayH1Lz/ZhLR3FgANR6vkTPvOuFh+Xuw== 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 DBBPR04MB6283.eurprd04.prod.outlook.com (2603:10a6:10:d0::11) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5186.28; Sun, 1 May 2022 13:49: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.028; Sun, 1 May 2022 13:49:20 +0000 From: Geliang Tang To: mptcp@lists.linux.dev CC: Geliang Tang Subject: [PATCH mptcp-next v18 2/7] mptcp: add a new sysctl scheduler Date: Sun, 1 May 2022 21:48:45 +0800 Message-ID: <257048ed1df634f47ca5efb71bfe0a7fcb8814de.1651412613.git.geliang.tang@suse.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: References: Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: HK0PR01CA0050.apcprd01.prod.exchangelabs.com (2603:1096:203:a6::14) To HE1PR0402MB3497.eurprd04.prod.outlook.com (2603:10a6:7:83::14) Precedence: bulk X-Mailing-List: mptcp@lists.linux.dev List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: b2f989b5-4d26-4a1c-c453-08da2b79641c X-MS-TrafficTypeDiagnostic: DBBPR04MB6283: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: YoZVp7632WYb7OU/OT10OLkJk7x0ukwyCfNEQPkuZCwuu8foMpJvLfVItelWV4GL2O/uZLbD26P4Ytm3Ssq4Zn5Bz0/qZMpdfaKvF4dQ09uIl4OfEfyhT2DsqX0J2bnSpaUwLv35eKlTPyUT6gPILamVZ+hjKDRIyBeImlDUHASLNxfOjGWOp1glK7XaalJjCUcF9NVoNLDiLGkHTYQez66/0O4sOR4xnwxzzZe3c/ScaVf6IU6W77coVmx0r6BEGsc93Hh3wIeK9NAic2169UThSB21Er0k0AXSLqAOc+MaTehMZnTOO1juckGHFHn6kkA2FgPLbfXd4o121FplZnqsykOzLJxRKNCZylvhi9kcC753o6O8lhTrsj3+4Df/e+dXfXaRxwiLZhsZehGg4MmpGtSOSQgNx32pHcGnacPiuEgZqqhOK097HPX8ux42ueUFqlZPsmNCzLIIO/7K1Va1ZflqG7pDDlzFothSIKGkysRE/MCzKyPJ1k4M0ArWoaq0w6dCU8gKwguAE7jrr4MhrCtUSkmao4OsONwNrnT070zVeSwSiIES/srk3v+r3se0UkOlfjzNvo6S3o3oroHjOsRCcPyRBQwodJzKJ3359KeSX2K5k2w6cwalCbxeFXx7pkBF3nsIb7nHzr8SZgH37TzZZJB73dbYvjnLbNXo3W36Zv3PzyrlcLapqDTGIPRfjBc4Ih1sOegZWK2fRg== X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:HE1PR0402MB3497.eurprd04.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230001)(366004)(508600001)(6512007)(5660300002)(186003)(26005)(2616005)(316002)(4326008)(66476007)(66946007)(8676002)(66556008)(6506007)(2906002)(107886003)(86362001)(38100700002)(8936002)(6916009)(44832011)(36756003)(6486002)(6666004)(13296009);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?6WkdnMzWV6VH70jBV4PYfifqxN4NyNQnum1uD2Ei6Tm+Q1yGSTiALQTl1UFQ?= =?us-ascii?Q?xrbqIVAcj7FxZXLZt2Z8b0IG+Q/0cv4jeCFOx0VK8Sx1T2023gy8uG6NeNgP?= =?us-ascii?Q?XRCGj5WIveJcJcwnBr1lBAr/ccVfrFcB9k+kvwwt/u8q6vMU9xye8XvW/VdX?= =?us-ascii?Q?lgD58JnLXm0Q0KiyTYXGFhQ/556jBszy524Mha6SYhkZ6oPDpb56f2oIXDpC?= =?us-ascii?Q?mCtEOHIwNPX4nSH70UrSPVHnhuzWkgmedBjNOgyxSNgU4Z4WkMyIfIPCEN2k?= =?us-ascii?Q?vVcD+jwFDGBA7Sp8sYoL4lX5/w+XfMuZ/nuOhEAngDrGtvp9rTbyCnni5Aay?= =?us-ascii?Q?bZwTTiFQBemu6lnNQpwwMWS5G+Go4wJDT0eZCgN3eoBXE91esFW6+SmxRVbf?= =?us-ascii?Q?4T9VcUFmmJwSdHelMsFQmbdke0w827xtunozbTmYbWTVzu6LG7HnjfqaEOcv?= =?us-ascii?Q?FVlCDdkRPUtUeOBfrTx7ebEmNyYPMBW+t4Tqu35CEXHqKBONK4ntiyhRCIrq?= =?us-ascii?Q?80CCIvd2wRMhg/qNq1qW7aGtM3a8ow6ranM0Nbe48yQkZLh4KD1JDAymjpK4?= =?us-ascii?Q?Mp8tgF3MXc3K8o8J6wfPJZIFOYIHTY4nYz64B1IpSaZNpVo4LH3lv7ZeWcIN?= =?us-ascii?Q?6eysjAdnPYCCYfAKIkCzYU2KZWmLRk7reHhYOANJ/HRFUeFVwXBpC9Yy8/QQ?= =?us-ascii?Q?dAni5z+oM8DY+92aISS4BsV3DJ2XarxihWvR9WBItqsyBe00TTqGg1ufEhNm?= =?us-ascii?Q?kqF2jIzUNBGnXd3TtLleiGSKM8HVS2yV7iRjAouiLPD4GcLpC1NQu+6LGVFl?= =?us-ascii?Q?/6AHHiCaFE435oh5lQZik8FukogbhdXiJx+qoizxNjHTP8+peMWNNx6sxEsl?= =?us-ascii?Q?5UnX2Aufs+efn1iioj9wzpFDO7uHkyXTRF3jJFxfkz2/p95WiWMLpxK6bOSB?= =?us-ascii?Q?Idhu+quGs9qCIAIQi1afxHueh5DJQAym/ALz9u+FQP2Dd9n/Gj8ozs9Yeaq4?= =?us-ascii?Q?FyL60ZwMdaWKTdz7KZdyVXPy83p3WjvTxa+hgkYOksRZe2FJcwcxTe7fAbG6?= =?us-ascii?Q?wq2GWtYJINEBihwS03/YayCWcThMMgouXzOI3OYvup2707wBtvqUw3dUH6SS?= =?us-ascii?Q?KICzwxXile32PS1mj7x3CiGit9UTsVO0nFKYHnjzsocRWsooBQXQnbyJL0Of?= =?us-ascii?Q?+1X6mVQCn19lO+sZwOwuJm/9FDum4irlTCKCoXl8q+rBllQIX1drKq08JgOE?= =?us-ascii?Q?ue1jw8pbNG8tmMIzK19pSx1qkvcnESi7Y9+O51KNmw46Vi/9O5DgYlqIarlE?= =?us-ascii?Q?FvmAUZaJPyNNpH8jDOgHyi7+8SX6/G8drmfu9SgoHyR5N2+8Yp1H33jVSl/r?= =?us-ascii?Q?yBFsJ3WolALlWCL5vOTTXJP38sFEv46jW8Li0Fiqi95vMsTrboJ+gORqPQCl?= =?us-ascii?Q?93oth4lT2yrN101+vayZMiz6dMxj+XYJzJ8kuHaSCMrKghTNWLY/UdElQaLw?= =?us-ascii?Q?ud6ZgfkCh8jZjpNmvi9ktzBtLFyCD4rpTtd4OgtEb14K9RUzgkVRyiYbsfc8?= =?us-ascii?Q?cSt7abcP14ssPUO6UQ6eBJbw8jLEEiqk+pw88C4sIk1kabVWf1yW1237ThLM?= =?us-ascii?Q?+cjC0Aoda+/QBgBZ7bUA2RMcVq9PdtRQj6HNuc69sdvJG4oy45XHR0fCZnKa?= =?us-ascii?Q?clquvS0HPkXCOG8YJVOh4AIpqjWwFDdmAwSnF0jKCtNWv3JmUSSRNUrlXnm+?= =?us-ascii?Q?Z0lRlTIuoL68cLxcwiN44eV+72y/Lt0=3D?= X-OriginatorOrg: suse.com X-MS-Exchange-CrossTenant-Network-Message-Id: b2f989b5-4d26-4a1c-c453-08da2b79641c X-MS-Exchange-CrossTenant-AuthSource: HE1PR0402MB3497.eurprd04.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 01 May 2022 13:49:20.0271 (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: WYWBhkXXzTuInv0MnrVQCi0czsF6NMM2Bb3TxrafVF3YLqPHF3LNTw5l6fGVKfcxfTiBxoT3w9MEdAXi2AArdg== X-MS-Exchange-Transport-CrossTenantHeadersStamped: DBBPR04MB6283 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 Tue May 7 04:33:15 2024 Delivered-To: wpasupplicant.patchew@gmail.com Received: by 2002:a05:6a06:869:b0:4b8:7781:bd2f with SMTP id d41csp3444028pis; Sun, 1 May 2022 06:49:35 -0700 (PDT) X-Google-Smtp-Source: ABdhPJyUu1630vBHxppSs9qkmVe+XS5C3i83asjWf4rZDK25WqkxUVZ18yuhmNIaqUsVYsCdD5Vj X-Received: by 2002:a05:6808:138b:b0:325:6523:12cb with SMTP id c11-20020a056808138b00b00325652312cbmr5303509oiw.202.1651412975189; Sun, 01 May 2022 06:49:35 -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 fl6-20020a056870494600b000e210c51699si7722190oab.81.2022.05.01.06.49.35 for (version=TLS1_2 cipher=ECDHE-ECDSA-AES128-GCM-SHA256 bits=128/128); Sun, 01 May 2022 06:49:35 -0700 (PDT) Received-SPF: pass (google.com: domain of mptcp+bounces-4999-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=k3PbONaF; arc=fail (body hash mismatch); spf=pass (google.com: domain of mptcp+bounces-4999-wpasupplicant.patchew=gmail.com@lists.linux.dev designates 2604:1380:4040:4f00::1 as permitted sender) smtp.mailfrom="mptcp+bounces-4999-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 F2FC52E09C4 for ; Sun, 1 May 2022 13:49:34 +0000 (UTC) Received: from localhost.localdomain (localhost.localdomain [127.0.0.1]) by smtp.subspace.kernel.org (Postfix) with ESMTP id 9560A28F1; Sun, 1 May 2022 13:49: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.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 DD79C28EB for ; Sun, 1 May 2022 13:49:31 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=suse.com; s=mimecast20200619; t=1651412970; 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=fEpGrAjMtxqHrtuTTAyKYAfOCuK7cT/SCV38U4bD0kA=; b=k3PbONaFNqpU+I57rsHzAAFwX0ES5lQ027v/1bM7SvUHe1GQTqRwFd+sXASZWdwBhui4En x3RYWeUSmj/0iUyBZcVs+YfBr+5znDsZnfO4x/3rb+lbwHhVmViCkRDXAJob0E7X9bbm3Q slbYfX0Y/dp8PZgMxFh8cCB/+QYSZQ8= Received: from EUR05-VI1-obe.outbound.protection.outlook.com (mail-vi1eur05lp2173.outbound.protection.outlook.com [104.47.17.173]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id de-mta-4-PhMFno99N96MDY3R9xJPvg-1; Sun, 01 May 2022 15:49:29 +0200 X-MC-Unique: PhMFno99N96MDY3R9xJPvg-1 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=bJBPCwKS5aS1Ff1AIbkBfAxOGIVnelh4460cbtcNHCEvROkrOLj1Vp1NqwrtgEZh3WoeQPAlzXThRDKdqpJeEVwqr0nF15Fev4GmquIuXtkyd7HwFfC8lL7d6BITsNyQH6elKMckceYAyAs0Q6F1linpZ0PNMH5GfYmrA2hIhW/jMVeZuxyK5yRnXJke4lXMC7TQeKhmQZTXCEWk3YgBLd/w5Tj4+YMpD8nFFMjJL9Ic9x37Vqodqfe3SU3PJPdmweryGs0GgjxmmqagJxqi4oo6s4n3sTPgi18ixVMjtMv06eYEQsnljr759SD7v84pETT94zPHWMy4PMWEiPdv/w== 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=UVDObk04ZRDC97g2yFptpU3LNsYJq6mFr1DqHctTNrw=; b=RxVWIq6f6GOq0AzvC9BZWcUvHakkpOY2ELGcJSazDo2xU21Jvrz7L5N2cG4MDMWQo5ey5Tuprx0xxUE6MOuZPKSHdpBnxtdOLJQNrEgXhqvvEmgOIgN8YfBTfR+76NvuOmkmGbvAj3MLnB+Uja0ziDt4/UOuDUV2QGJb/ExvskvmxXvSTYolnhbLpEwH8tCAva/2IFZu3wCa3/ssFS/4WG/Ly+4eHoV86+SvbWBk5kljzqL+J4vKRPz/KvuYt5FX/l7WuBWW1Dhmrra4gtD0ZcvEguOY5vQYSaL8WshdFs8o5+pvmMcu3WcxF/G3/TiLB1PBKgrcpUTbX1A7QVzatw== 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 DBBPR04MB6283.eurprd04.prod.outlook.com (2603:10a6:10:d0::11) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5186.28; Sun, 1 May 2022 13:49:28 +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.028; Sun, 1 May 2022 13:49:28 +0000 From: Geliang Tang To: mptcp@lists.linux.dev CC: Geliang Tang Subject: [PATCH mptcp-next v18 3/7] mptcp: add sched in mptcp_sock Date: Sun, 1 May 2022 21:48:46 +0800 Message-ID: X-Mailer: git-send-email 2.34.1 In-Reply-To: References: Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: HK0PR01CA0066.apcprd01.prod.exchangelabs.com (2603:1096:203:a6::30) To HE1PR0402MB3497.eurprd04.prod.outlook.com (2603:10a6:7:83::14) Precedence: bulk X-Mailing-List: mptcp@lists.linux.dev List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: 64232d36-bc45-44a5-bfc1-08da2b796902 X-MS-TrafficTypeDiagnostic: DBBPR04MB6283: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: h1f73lV6nfoWqho1hhuYkYYh4PC2RMmWDucYOBUAG5E+JhAYKqifokhaeADMoYdEKgowSskGWtbQ1KPvQ/ltNsTXULY8Xs//c9PRd73FApLcdUsmf1g2tg/EHErb8gjKNb32udTgvA+VQmPqFwFW+XdnWb4rBiZYGA/FtZqYQatj7hTiyGPdcGYOHQ21XkJy144pQIYBm/SfFZiZDvnj2vE+4+wF1P6RIsXo4z5PUolcC1A3bDqVeELIvcbh4pQ3ct4U0JmwMyawmSfRBBRRKwB2wdmsCT6b6uZPJ7EdYmYAQq2vemJgCVM/rOHbynlri63zjfbef7NIFvF0/rYgMl/c6ZhHCDw+9KRRgQp1UkHbddwUWMwGtT+hSjnfoR05TEQnOq1jYb8H5h2KbxtmDbNAxb4qYkoJG6iTDprDc++MfO+Z09jzxDXlkZh5+xncbuKHTz5BdK1aU9AQbPnHT237z+e9vMlyuoVSg9wjJfvJfFGXThXN+moHYgjtYM7qO9wEcNS9Mpokdf9WDK6G7Bzwrzmlju020H+cnJqIifppWhG725tvhDZJoA5zKFrkT1RJifm0DbsPRAE79Uq9ufxDpMppz/rx0K7qftBli0yyepmA/pSAuUANLxkzxDhieNX3Jl3iWUfu2UiVih7YdPESc4zq14r+rFSx+8xchaxNpXRIzAgzp/CuhySJRLEa3PXs6WbjFr1WraWgII8uPA== X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:HE1PR0402MB3497.eurprd04.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230001)(366004)(508600001)(6512007)(5660300002)(186003)(26005)(2616005)(316002)(4326008)(66476007)(66946007)(8676002)(66556008)(6506007)(2906002)(107886003)(86362001)(38100700002)(8936002)(6916009)(44832011)(36756003)(6486002)(6666004)(83380400001)(13296009);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?nYh9aFSVhM5XI3NM2uC0gve3hAyO6872sdunUy4TE8mbxhgXk9TRe6lbLmL/?= =?us-ascii?Q?0UiB27ej3u/1s+FPaAyGOoRsX3slis5/WYarLRYd+GAvGNNWR0GZCb/vvvPa?= =?us-ascii?Q?YMB1pN1iRD/y1uLFArxPQxn/JK8unERPAEjFN7eS4rOPBBeyBXPzTEemjpKl?= =?us-ascii?Q?3cVgFT32O1b0Cpp2RcIIqg9zfPDYhhVf+qwQtbfV5KukLCJOIaYPyv3TFhvB?= =?us-ascii?Q?Q1A4qGc6qGDN3+wWtWI2vU9UBqStvaMc4G0Hw4/HeOXSSchWKtlt8/aCiLZ4?= =?us-ascii?Q?nZuOOyTvp2hmxTlX/HLlbfGzQhrYEJKJKCnNU3dCA4eDGnEt3lGamgVWKHEC?= =?us-ascii?Q?35+FsZP2HX02svbyGsCETrmpXMUJ/a61jqKVlslZKUkfWqBWY9XI72nhhvFr?= =?us-ascii?Q?mqpgjb+EAR3zkU7uPRQHgvC/hvZC0U1g1XYeEl72yrcF4XB66TccT7NZ9DmS?= =?us-ascii?Q?oo/fe10+1rInEFb+dcSJL3MUg/QGZGJP0Myk73gpIRKOWcr6uNTA0y5a/ZuY?= =?us-ascii?Q?4R+P1Tte4wnPtkIc792UtVPnQoci3JUl6jVu50RKBU2q7PVfSl0eoilRRJlU?= =?us-ascii?Q?XOLJOWSQRNWD809hjeLjsyguw0kJ35PgY4i3pmmWNDE/kyMo2w56s0R/cUPk?= =?us-ascii?Q?XIaXfAyrcXor1mqaTCuAHiuBE7Y3oAHNfR4fTG0StWPUWA4Gl8ZYcF8BeUZg?= =?us-ascii?Q?DP4yzcPv1gR1535RIYParUc6Xq/NIIyDBpaTfFEXp3KbIN0e0Hf354pLQcI5?= =?us-ascii?Q?nXamNNp/rRybVFg/NiLrKYW2tBWebRe7Jzm75whgCmaxL74DGCaLuYoslaXC?= =?us-ascii?Q?mImzvVztJsMNsSzimy9XQJu5YlzhMgbWn8EHYigJFD/VkjY2sPVa9k+zgFH6?= =?us-ascii?Q?ruk/hwBJNzRBra/cPUo1Lb7jEVKKMMZSgdPwsJllCGbR68cLBD8vivEuPpwr?= =?us-ascii?Q?uWhMmlL6qiuhyl7T5VhzvwJNSD9sBDfyIv+NHRqj4qHCkAQOEUgTKu5WEbkc?= =?us-ascii?Q?w8TrKHoeXaKpE9/BtevW8Yf+Fc0vTKZucG4Gz4ioUzQfB5RLrJhTOG8H0RAG?= =?us-ascii?Q?2Bg+Z2P4AByMETIisGuUXvaM32wP/dsSa9ZzmlCuYETm1HD4apTgPoV3yAcS?= =?us-ascii?Q?45KOJUXFGKEOTxwej0Sm9e4TUIZ3ATJxo7geEiYdrxPNH/bBuXnWHYHmjpHe?= =?us-ascii?Q?YNve6/JyYsD7a2sPqN9CQtJRG1+fIXszIny3AJ/lmlx8puxG1CBnGjPI67qd?= =?us-ascii?Q?Sll4nKJ8eZQF9lcLUSsf1CgnZYNzz8LwZ8SPo0rI6Dpt/le6iMZuNqz3xSnF?= =?us-ascii?Q?1sw+5PqyDqvM6qAz6RUYxgDp4drcOGFhRz8Ts+OzwUOvRwE3YlbPnndMVQ/d?= =?us-ascii?Q?j/ZtcGgPiWCS5fTULwOFjLCLj39mnu5I9GnoAOCy3oHgZBoBgDnkFtYmhh4L?= =?us-ascii?Q?/PMgz88LUjVNypCAapwD2PVNMpNZReuHRHZUN+SdxF6Oon56bmb4kUkZ6CNZ?= =?us-ascii?Q?j+EmvWWnyLp3TsijIqi9Z8fiYHmXXgt2gT6jQN6e/zRZL4TCtzv+d+VlAYer?= =?us-ascii?Q?WM2xpobIhcKKNrUrB2CLRW7XiyVMh7K17blZcM95RYABVRR069wvnopajXjt?= =?us-ascii?Q?mCxAy2HnYfdHdKRFzvUSTszmKNIBkSLd7tdT7iYyYOf6L5i1b0F/WAG4aZcZ?= =?us-ascii?Q?ssclLBvdiGoji6blHCpHugDNU4/JYi+OnVJRDj/AWMi5KPUIFpppKo85ywNZ?= =?us-ascii?Q?oa7IDd33F87H4gKDE3lLAx4gYaqOghI=3D?= X-OriginatorOrg: suse.com X-MS-Exchange-CrossTenant-Network-Message-Id: 64232d36-bc45-44a5-bfc1-08da2b796902 X-MS-Exchange-CrossTenant-AuthSource: HE1PR0402MB3497.eurprd04.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 01 May 2022 13:49:28.2140 (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: 9hhngMkXDLwyIB2aRG0O3kaAFMcRS0tjaz0P+CDuufQfKqRiadAqtye9lpbkj5r72gNjx8UtYewuOooBYzMfCQ== X-MS-Exchange-Transport-CrossTenantHeadersStamped: DBBPR04MB6283 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 5b8eef4f1b4e..e863954de701 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 Tue May 7 04:33:15 2024 Delivered-To: wpasupplicant.patchew@gmail.com Received: by 2002:a05:6a06:869:b0:4b8:7781:bd2f with SMTP id d41csp3444079pis; Sun, 1 May 2022 06:49:44 -0700 (PDT) X-Google-Smtp-Source: ABdhPJwd7kVRiyg3vGFM6NwX/TfXE/PuUD9ehYxoYrS28vlu1C+lh3Jm8EU9ai76MWScsid8NYiJ X-Received: by 2002:a9d:3ad:0:b0:604:c1fd:cd4c with SMTP id f42-20020a9d03ad000000b00604c1fdcd4cmr2874595otf.288.1651412984369; Sun, 01 May 2022 06:49:44 -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 w33-20020a05687033a100b000e94f677e42si6938581oae.145.2022.05.01.06.49.44 for (version=TLS1_2 cipher=ECDHE-ECDSA-AES128-GCM-SHA256 bits=128/128); Sun, 01 May 2022 06:49:44 -0700 (PDT) Received-SPF: pass (google.com: domain of mptcp+bounces-5000-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=a5ZGabWK; arc=fail (body hash mismatch); spf=pass (google.com: domain of mptcp+bounces-5000-wpasupplicant.patchew=gmail.com@lists.linux.dev designates 2604:1380:4040:4f00::1 as permitted sender) smtp.mailfrom="mptcp+bounces-5000-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 1B1AB2E09C4 for ; Sun, 1 May 2022 13:49:44 +0000 (UTC) Received: from localhost.localdomain (localhost.localdomain [127.0.0.1]) by smtp.subspace.kernel.org (Postfix) with ESMTP id C3E1A28F1; Sun, 1 May 2022 13:49:42 +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 E823628EB for ; Sun, 1 May 2022 13:49:40 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=suse.com; s=mimecast20200619; t=1651412979; 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=xZyOUQjMJfwRKeKP1HU0sWrzNal8KA4GAr4375iHPDQ=; b=a5ZGabWKMiQubw3yOT6NEdjgOB1l1al9gN2r7zc3EclXbaiYE72ggjVDlA5dDZtV86hnUM cv5WHfqVVZ+qta0wDu00Sh2t5yC26xgxiBfhBAqpZSL5rdeCAiK9isDIxHn4coFph/6Hla jFRtOIBkomNGBk7UU1syJoYXPrvfD+Q= Received: from EUR05-VI1-obe.outbound.protection.outlook.com (mail-vi1eur05lp2169.outbound.protection.outlook.com [104.47.17.169]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id de-mta-8-nD2lIQ1WN52ih0yZN57QRA-1; Sun, 01 May 2022 15:49:38 +0200 X-MC-Unique: nD2lIQ1WN52ih0yZN57QRA-1 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=dFNZ3PoHk/hyO8JTQgTafe9dyF3dVyXZjP/jmmH1SEfxNeGhVhd7NwGrpKF3rNCEPmmapXZTtH4kXgWLBH59V2uaP7xpLzIU3h33YbO6j7Y7t3y8lHoD8Dtfdso76lsLmlYGMgQwPPpVD9el7PgO6aAr9I9Wq6DWwQJd3OZhDKFj0wjkXsQFmntf7Jn/du5H2Lcit1oknsmD/e1iH73w9JiQWtoJ6HU0dsjyACBTllsi9/Xwlb0m3DLcXDZlX3XbvyoRfMsm/kLnKguT3/LRnxJ3mPnXrs/U/V6n3l7eKqSMDdqLMRq8axXdj4y66uATN9vlaBH6iWN3R1szTsvtZg== 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=A0jduHl37h2K8XdVq6vul9/jPvK8k0xVTcgcB5bn8u8=; b=SQ2LgiwovLklBpaX0DHPl8BTkryL98WxQtc/yqj4qe3tgTxVQc3/I1gF+gn7jrKVlKlsbKRQNfyuq5dOgcA2TiVT1zNP1ZREx1qC3BGsCpwVC6UrrLDQcFOmLZ++PBNAZ9HDkHjCaJB6v7kITLOHjrUbJ7oAqfXFXIT+fNFb2O6jO/316CvLx5vJuC/M2lV30hrYRX+yVVTFxML/wXB1dPQacNwcqVbtHeT5ecv6VqAmv+fcMV/mPdCira3oLNvjkIElE1eXKTTsesmTf0eKASlYBVHEdmg7v1f7y8OWxVytGT0FYz8jXkMVsIqLJxCN2JwBDtVrAnC9tUedQ5ZdGw== 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 DBBPR04MB6283.eurprd04.prod.outlook.com (2603:10a6:10:d0::11) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5186.28; Sun, 1 May 2022 13:49:37 +0000 Received: from HE1PR0402MB3497.eurprd04.prod.outlook.com ([fe80::9974:fd5e:e3c0:14dc]) by HE1PR0402MB3497.eurprd04.prod.outlook.com ([fe80::9974:fd5e:e3c0:14dc%3]) with mapi id 15.20.5186.028; Sun, 1 May 2022 13:49:37 +0000 From: Geliang Tang To: mptcp@lists.linux.dev CC: Geliang Tang Subject: [PATCH mptcp-next v18 4/7] mptcp: add get_subflow wrappers Date: Sun, 1 May 2022 21:48:47 +0800 Message-ID: X-Mailer: git-send-email 2.34.1 In-Reply-To: References: Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: HK2PR03CA0058.apcprd03.prod.outlook.com (2603:1096:202:17::28) 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: 1596a315-2439-4513-550c-08da2b796e24 X-MS-TrafficTypeDiagnostic: DBBPR04MB6283: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: E0uQQHBdo+PJHmPe9VFc/RcTSKEcB9Mr4owY15eSNWiBXcaf5OS6Q9I76hrcdtZ68axWDsMQ4Hx3mdw1jFgC26d30KUQUdYfDb+8mgcdbyCtQCHCzcSxCI47Ou3h6CBDk4PeaQWYsII+qYMZkLZ0gFXjcsogsE12gFx55jQPmtuN31do5gmnfw86PM1rYJEeVnPmNBa08bnk3P4euoXp4AxDdR2Qukt/deYAiL4WICfc1HU+5iD0HGRV+s/yssKyY6AElnhixMJm5GXpbGybRgF73Rfz9MRsEdWwG/00UQ7dlil4ZGYw4e35bIgkavOQhnnoCDs0/a/fTGqRQKLQIG1+m09ukdqkLyZK5IP4PwH9jFHLWhip+QsxdF0hZtJff1OfO6wJqoVgXVwWxzAyU42b59bZXXAkc+aEy4pVnq/yBDVCWoVSSIe68PPufizdExlTrXsTxTYu5pubmbePxN+u6jrSHTcEA2OMLqNmUH30+vR/HDSAQfcDNfHy7NV+8y6i37dgseA6qnLhWppD1wrXRWr+g80s84WdHZVwTpH7EFvR89iQqQTJW1YvJjn3d+SMkgOgl3NO0AE75kcPZZI0UKJLDuojD+V+YrGyQlhBYKpOrG27v8nb7a2wif9Yu/sHB7JRHq2nQpSHteXsh7zKp7ADk6Dmj4u68fdsSvLqhqACUqfqOcebp6K0ug2q X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:HE1PR0402MB3497.eurprd04.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230001)(366004)(508600001)(6512007)(5660300002)(186003)(26005)(2616005)(316002)(4326008)(66476007)(66946007)(8676002)(66556008)(6506007)(2906002)(107886003)(86362001)(38100700002)(8936002)(6916009)(44832011)(36756003)(6486002)(6666004)(83380400001)(13296009);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?0Tg7+SuHVzypIVHcGRLigg3S+Vpe5jPK7yGPWvLCL5g1rB1bhZU3/10txl85?= =?us-ascii?Q?QGbszE62V1JY8LoLlS7QWgZ5TMc1v7ASN+M8AvGSXZ+HFiVbA/r9CJNdMiRw?= =?us-ascii?Q?sTAYm95SSse3O93lmYE4udJX6d6TI0M7UpOeYrO2KpCdreVcEcorm5VD9F1V?= =?us-ascii?Q?5f6AccA/LeC1Y+o0stmfwA38cTBVWW2Nu+r6TXOYDIV+wBo/HrjjKn5Hq3fl?= =?us-ascii?Q?kog7KeE6NugD6BZDT4wXlXgDEBHKonr4c5EHTlyh2U30yUIbM0WCBcBDqt4L?= =?us-ascii?Q?DgOHDRPxQB2bWzoeZDuNtkW+HZEfEm/HYzuFc02UAUZYwayEhPh378VEu1u4?= =?us-ascii?Q?PUji+4L8IO61uptItGkybQ462Wb7O8FyHgeE/1QnJ83tEqSVHrq2Bd8a4F3R?= =?us-ascii?Q?5TQB+x4RotnW9rgeuGrlO4zowE0nqunkoB5rFv5VCGF7/nid37m992RHFiEa?= =?us-ascii?Q?ynJzo4l5VX3s/BNujCAVF8O3QwCbLyFCakJ3hp3TmK0maXxRGYEwPxdxH/8t?= =?us-ascii?Q?cpaRKG+6HKv4ZnlBGNHycI6Z0fVXVH9B663sgnOOFoWVLi6/cGXachT6NIUK?= =?us-ascii?Q?K3JpeS05wK74UiupMhNiYcJRIFYhA99jag9bY/iC7o0svrzVr340aFMyCZWj?= =?us-ascii?Q?H3uTgYpWtZpI2uCDpCPL+rak304o2RBZyIG9qkKrqTtjPvOZb4UKuGFvwdGW?= =?us-ascii?Q?TpJUPZdj0IXSG4+wEdiDVg7olT65BooYLgTlKxbQ5k7wZq+lCQ3w43Z+/f8r?= =?us-ascii?Q?Hm4DOC37uWMTRPlmWVouyziSBcpCJ6cT3GU8OHnG0k7trjgsYkp4SDl66m9u?= =?us-ascii?Q?DmiLYTkFWrZNrZ6tQi8twmToHx/geFO9E+kPnYZJGZVx/iydE/tNdpoEcVjs?= =?us-ascii?Q?oY40ge8ui2uEz9UKWuGvTQiNDj887D1uTIVvIphCTjxEPjbHWnPBN7EDkekO?= =?us-ascii?Q?ME3TYKG3m/p1tdlXA/UQH/VtSlQSI35DZLRQH6GzaLOkKyVoIqI7VjnBuu6S?= =?us-ascii?Q?E5bCICN31clSCgGIP0y0ssAnqPgCXe+Wnq6hnhJ3mTqifL4cjwS8nZqJ9wPN?= =?us-ascii?Q?lMqoFBe4hwUMDwuDhXqxmmd8Kt+cP5mVa0OwaDObS9SsA7HVwJjFXjJZykOk?= =?us-ascii?Q?mOdDGC6fzJDG50U/G44BkhyzZiQrOlYrtlygOi/hbr92XiU47u2h6qXcRbt0?= =?us-ascii?Q?E8UvnjFfMrTJsVCoNSNQaONhsxQvisa2/rQbRVD7GHRf2bAcQbg5gAyPu6su?= =?us-ascii?Q?iO6m4IindCA2NmiHn/cHBVQl3eYmku1Cm1j7MKlc9TbsZDQTKjU1hCrQ5i+q?= =?us-ascii?Q?MeGzeYiiQNLEV6YLxZkmws3UO7za3vAwpHiHHXIrNdpEGwV8Je1xtfcwnqzc?= =?us-ascii?Q?xR8eG0IclDczwRvjHvJ5edena9rH/LhB1b6MjM0Rzw+cz9dppptWhEpcQLE0?= =?us-ascii?Q?clb8i821GwCHRAhSsEFKDNypfCOLuMCI/MLRxtStsiRulMz97hW+UVTK84tM?= =?us-ascii?Q?uYr3aFShYB7QWYJ1yMHlJViLRST+2XJeznjOZx1aoHCmGwhbI/buz9wm9XWf?= =?us-ascii?Q?YDi9pnc9R7rtvJL7IX1JjfqrhersVka0BFkRsrA96aBmBlze2c/2+N+76L7F?= =?us-ascii?Q?ugqxX0sLM2wyfIatt8TOTp8jFqnkJep2I1nSAnsN2j1DfwRlgj/Xbou62Rs/?= =?us-ascii?Q?ZCsWjJA2LjPw5A4aU+4oN8W4+xpalyUT6IS8IIp450Qs3uV+XLHBS/H0NR33?= =?us-ascii?Q?36qjKric2nYkTFXU5/v/JDBhTu3yBa8=3D?= X-OriginatorOrg: suse.com X-MS-Exchange-CrossTenant-Network-Message-Id: 1596a315-2439-4513-550c-08da2b796e24 X-MS-Exchange-CrossTenant-AuthSource: HE1PR0402MB3497.eurprd04.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 01 May 2022 13:49:37.0726 (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: oxm1OBwCOFKVfhoKtIiK4oZT5tV7StibwZ6k4hrbsaNAI++YW84gLExvPamc4yHiGVLbbFbCTauu7ei6WKAJIw== X-MS-Exchange-Transport-CrossTenantHeadersStamped: DBBPR04MB6283 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 | 2 ++ net/mptcp/sched.c | 54 ++++++++++++++++++++++++++++++++++++++++++++ 3 files changed, 62 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..fc5dca44470c 100644 --- a/net/mptcp/protocol.h +++ b/net/mptcp/protocol.h @@ -629,6 +629,8 @@ 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); +struct sock *mptcp_sched_get_send(struct mptcp_sock *msk); +struct sock *mptcp_sched_get_retrans(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 53773668b5ee..7a5654132ed3 100644 --- a/net/mptcp/sched.c +++ b/net/mptcp/sched.c @@ -15,6 +15,8 @@ =20 static DEFINE_SPINLOCK(mptcp_sched_list_lock); static LIST_HEAD(mptcp_sched_list); +struct sock *mptcp_subflow_get_send(struct mptcp_sock *msk); +struct sock *mptcp_subflow_get_retrans(struct mptcp_sock *msk); =20 /* Must be called with rcu read lock held */ struct mptcp_sched_ops *mptcp_sched_find(const char *name) @@ -87,3 +89,55 @@ void mptcp_release_sched(struct mptcp_sock *msk) =20 bpf_module_put(sched, sched->owner); } + +static int mptcp_sched_data_init(struct mptcp_sock *msk, + struct mptcp_sched_data *data) +{ + data->sock =3D NULL; + data->call_again =3D 0; + + return 0; +} + +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); + + mptcp_sched_data_init(msk, &data); + msk->sched->get_subflow(msk, false, &data); + + msk->last_snd =3D data.sock; + return data.sock; +} + +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); + + mptcp_sched_data_init(msk, &data); + msk->sched->get_subflow(msk, true, &data); + + msk->last_snd =3D data.sock; + return data.sock; +} --=20 2.34.1 From nobody Tue May 7 04:33:15 2024 Delivered-To: wpasupplicant.patchew@gmail.com Received: by 2002:a05:6a06:869:b0:4b8:7781:bd2f with SMTP id d41csp3444119pis; Sun, 1 May 2022 06:49:52 -0700 (PDT) X-Google-Smtp-Source: ABdhPJwaXBiqxMVnUwQbcw8hbd5FB/hAAT+utNh3ldvbOw9SZWL72lLTeN6rh3suPhx9PnfiUlET X-Received: by 2002:aca:ead4:0:b0:2ec:ba66:12df with SMTP id i203-20020acaead4000000b002ecba6612dfmr5886448oih.194.1651412992799; Sun, 01 May 2022 06:49:52 -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 j18-20020a9d7f12000000b00605f3538fd9si3775757otq.24.2022.05.01.06.49.52 for (version=TLS1_2 cipher=ECDHE-ECDSA-AES128-GCM-SHA256 bits=128/128); Sun, 01 May 2022 06:49:52 -0700 (PDT) Received-SPF: pass (google.com: domain of mptcp+bounces-5001-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=O1ipeG3v; arc=fail (body hash mismatch); spf=pass (google.com: domain of mptcp+bounces-5001-wpasupplicant.patchew=gmail.com@lists.linux.dev designates 139.178.84.19 as permitted sender) smtp.mailfrom="mptcp+bounces-5001-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 91D382E09C7 for ; Sun, 1 May 2022 13:49:52 +0000 (UTC) Received: from localhost.localdomain (localhost.localdomain [127.0.0.1]) by smtp.subspace.kernel.org (Postfix) with ESMTP id 2D49428F1; Sun, 1 May 2022 13:49:51 +0000 (UTC) X-Original-To: mptcp@lists.linux.dev Received: from de-smtp-delivery-102.mimecast.com (de-smtp-delivery-102.mimecast.com [194.104.111.102]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 4010F28EB for ; Sun, 1 May 2022 13:49:49 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=suse.com; s=mimecast20200619; t=1651412987; 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=fsM/9bojmwVOW77z9O0usyka/E2mXMcExfQ3jhVXLmc=; b=O1ipeG3vkP+qGbIU/8Y5ya9VYtVgZ3ZK2Sa2ZMiIL2smAAVynxuvI4rGgXSGc3ciIqNEPv f71AcKVZfSp9PlFlvkVzf3Qe/hwFmsRhfqAZgmj2jmphOxdgcHMOrViWiivwi/mzq4BSTA wMrYmGEbANOf/RoJkqc27eI396atoQQ= Received: from EUR05-VI1-obe.outbound.protection.outlook.com (mail-vi1eur05lp2172.outbound.protection.outlook.com [104.47.17.172]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id de-mta-10-yuMhlxc5MVW3VM5Aczr5LA-1; Sun, 01 May 2022 15:49:46 +0200 X-MC-Unique: yuMhlxc5MVW3VM5Aczr5LA-1 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=PYydtZnK6PMiTpEjgJlPRTXcmAdOEnhUvpa7ZVmiagu1ot7biEzmITt7hmFhM1JD09T/72METAOwtfrrAoy3YB6EvoK6YAKaT6S7nOvAL2idrqxt77VkIlK4P3yzsPJcxcZK4OkRqKQpFeleW3ohMIjuP9pjDwaw1K4to3gKARNItTcPAjErhHZ9bPiwJs7JbFMDTYWHonCnANYiJuAC5AbVepDWl1f6YBMAu3QrXujzIN0S8OEiHZ14qwtBRX4up9puNtDA2hemO3GCAWMhhu/pQ5CfDR29VWEmjkDckibDXwb3g7obl2Ev8mHfx7kIggckMWtKW9DS2TECDkJJDw== 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=6jrci614GTuwEUvC7iLN55am6sqa7wHevcMP91NqPBI=; b=NSELGdh/+m03DpAVZSIlVBgnpYXIYTrpJqwlAq7j9BwpRuWjctFXuQBO4BIc5X2i707puujusnXhhNARWUUXHl7/+As8dkKB0bwUA+t4Mm2WHNq1m0jmNdgG8W16S5g+ppYiC4YySC6R9+75fLfxXKvfw+KWSaTGb0bGq5QjTFEcW84qJ2Z1RVa41kdC0mTgaY6VCxEXHu194EzBJ2lt2OWFJhwMI/72PfwI6d0HRQeFIlVqcGkGFWLsx7+QO+sYYudc6+UihQM3K9Uf+ggiYDGpdfqGn3PRXAsmN+bm+jFieT+0pbq8R1khpcgV7NxDFxO/XPPEgL/2/J4wiAgvIw== 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 DBBPR04MB6283.eurprd04.prod.outlook.com (2603:10a6:10:d0::11) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5186.28; Sun, 1 May 2022 13:49:45 +0000 Received: from HE1PR0402MB3497.eurprd04.prod.outlook.com ([fe80::9974:fd5e:e3c0:14dc]) by HE1PR0402MB3497.eurprd04.prod.outlook.com ([fe80::9974:fd5e:e3c0:14dc%3]) with mapi id 15.20.5186.028; Sun, 1 May 2022 13:49:45 +0000 From: Geliang Tang To: mptcp@lists.linux.dev CC: Geliang Tang Subject: [PATCH mptcp-next v18 5/7] mptcp: add bpf_mptcp_sched_ops Date: Sun, 1 May 2022 21:48:48 +0800 Message-ID: <2ade81287c82a673c3e6f03d8700e8f77fcfc651.1651412613.git.geliang.tang@suse.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: References: Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: HK2PR03CA0046.apcprd03.prod.outlook.com (2603:1096:202:17::16) 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: 2a65e991-3fcf-4f9b-7387-08da2b79734f X-MS-TrafficTypeDiagnostic: DBBPR04MB6283: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: v50MtcClWUUX1+AiuZnPkX+zGCZpsYq/ovunZ+PUjReeJJlUaF3826AnhIKTGpTqB7sqMjKbwGli+SoVYZsR1fhjpR8t4+oeOAssVZIT7fzKc9hmzrtnFcJCLvVuIv8kHepoogZh/+i6hht5VycgBuSaBlgxXlkeCsw+1clRKrWAKIh4/H+uCkcrzYlNDrJiJrJJK/FvsxMh8L+JV0+0ScIJ0Pr2OLSNRK6NL8dZZR5EGyxJ8HYnMHa2Nz0IXVcIT/xDZvvYVDuH0aIMuD7crYB3DqJ5QXBhmiLdplU0pllPqYaiVpFdRbQlSvqbV+JbUXtvVXkexxihv6tc5P4VYlqWFcC2E+KcpdjCt2uaBkiOKvnXqD9icjpFCDhvPMG8zq2Tdk3763jzoQUq/TlBJU6Gjej95HgF38EaYvrv97P/essLIr5C/AbNJsYRQtCvZedvWw267AdbNTeg3R8WG7pJcQ87yay/zFDowNnopAfpxLLBChr0bIgRvcN9z7ympZi9phPwYoluC7NipQUhYWwwEQaJABj8z5DbrYyRpoQofCL+qsp/Rtvrw1AGR4N+6+C5iBevaeeeMNbUE28DyEndoR1+PjQdKNRHmQpoUtEQ8MBwvGkIvNE4NUGE6zGaOZZNTwCULwTGXzNX9DzeMurkxuMoPps9rGlhgmGbGuBNtZZATkKlXVihhlQiyrlMBUaYzDiCMCkq5VKjgP958Q== X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:HE1PR0402MB3497.eurprd04.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230001)(366004)(508600001)(6512007)(5660300002)(186003)(26005)(2616005)(316002)(4326008)(66476007)(66946007)(8676002)(66556008)(6506007)(2906002)(107886003)(86362001)(38100700002)(8936002)(6916009)(44832011)(36756003)(6486002)(83380400001)(13296009);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?11hzho19Q4Dv/ZwahSr+9Yiyb7yw08DPeJ+xMZlJgMVhMTHdh6RzRedPa1BT?= =?us-ascii?Q?7YeN1S9wgIT7FtaCY+tetzryBmbBZELImdiEYaxrsnRCjh68BQ75mnWG7z9C?= =?us-ascii?Q?h99AZY7LzCG9BVk8wKsgBKx4D8jR58nQyc+2lbKAULZuktkPkxDOL9onAXCg?= =?us-ascii?Q?9vbmzUAAz4AQQTfPKibskOINgu3mEioS+SuvfRSjEbWc5tp7GaGe6UR/vq0r?= =?us-ascii?Q?6VJw7rGkAou+a1qych5LlUiqTaDJzQU0eJItmbF59RuRwRUZg90AC9wj/ORy?= =?us-ascii?Q?hSz0WWqsg5oOcZ532/U0D2zo6dK7LDKVJG3Ypc0+3O3Xjygs4PPaFUFZU8OZ?= =?us-ascii?Q?Z3ZWpRstVvD8YASzFm+PpZTqE+EH3gCOgiXRCTWUurBlWTAhJQKML452eq+n?= =?us-ascii?Q?hsMmsEivWSsb+oe2nxJ0st8g3hVS2mzPMhuUjIF+1G6DUlUzkM0ZnWAE6RIk?= =?us-ascii?Q?C2CMCOfs74w3qp7rpaADjxoaYvYO2RTVAyDc/qmv3IDMMoWAHgD8e1t5z/aU?= =?us-ascii?Q?TayyNi416oD0sv9DzLy6uaYlioz1c+sZkZv0Sw4+IxUhbAIQVpUiceJMLft5?= =?us-ascii?Q?lSROb0L1lrKtJ57nLqglEtpIjCHDfuS+LqHMjWXvMyOosQIxnUq95nOfNHDL?= =?us-ascii?Q?DWVFngNIB4vqDqIYTrM1pizb6W555IngBVCBVs0dmCC4Kikv1gjiU/cVN2wG?= =?us-ascii?Q?IoHoEi6LFk3YqS7t77clVjHq8qaDOaw6/30VhDnq+QcQcZZ+BDzQRP43Y5RW?= =?us-ascii?Q?E2uz1hBOvjwlOeB1crMBBKRjuyMlABRHYJX6qC4GybE1uv+IOUnqJLS2D0px?= =?us-ascii?Q?GtX5Fx1DxV+GVVsHjvgowZN1CkIDiW18Bg49OW2XEVQXZdAmpUyTHQLAKP6m?= =?us-ascii?Q?MSr962pQqAv7EftldO7YR8BlaXOdQd/mMFr6ytzuIVtBOr/qAb/ihvYuDp1y?= =?us-ascii?Q?bdt1ObVU5n5kHItFsfrDsYplM7PYj9sWlomGhE9HsND1U0Rnfnk9oWHv9bbU?= =?us-ascii?Q?2n9UFJ1eyGVAdEpEoK4XQGYGZZPYkzCsh+TfZbjrEaX8mwn00YUeljWi83sM?= =?us-ascii?Q?svcCHsderxmr9Ud4HIAXYRbxXDyQanh/pKKMb6ZPdidC/7La5YWx5c9YBrYF?= =?us-ascii?Q?TDhs3HHEHWIxYIvixnlufT6AF5U73zf3HqPzOT2YGoQ3ywnn8HodoUfuT9tK?= =?us-ascii?Q?3rEqa8xnnPCJNhMQ4NqRKuWCEaXaFc55V5Mb1FLIuuBi1974m1sJ3g3DeFF6?= =?us-ascii?Q?UufyuDVIR9rDVVVK0GfRIDLdqcr/iIg/GHy7ig/SVmmmJ0zBOLkxt9wRjRoD?= =?us-ascii?Q?pYreeMmunZq1NKqBqzCl3+mkAS/8MtZ71n0Qx6VFAVkHMAS9jhtEAUmmgVKA?= =?us-ascii?Q?9Qam/avnyGExeLHQquQrBIsRlf56koA3PEHEeQPmw+J3WN5uFt6I7XrHk7eP?= =?us-ascii?Q?ViWQAn/Z/xXmD6YfOuYRDsm171rnjKfMd9Llce10ypPM4CtJKy++ZOuRE2z9?= =?us-ascii?Q?KPMfuzEMYmNUEsUQtR8AlGFkkq1l5XrA8+MVj196ZY/uJ9B8seMUFuQJCw6o?= =?us-ascii?Q?yHkjnMlcm6m7UOyQktsu8tJtBTbmITcKeXbpj7QmyipkoWYKwdyrptul7eJp?= =?us-ascii?Q?4F9WPdqUGG/F4XwZtuFGGANBziqvB49noSdd90cL7uHdjrGaBUFSugophvMA?= =?us-ascii?Q?oQPa0OGKyT1GKcn92nRHNL8Fhi9Ip2moJZPh5nBhO2/8Lqyb+xp/soPP0rAf?= =?us-ascii?Q?y9aAL9xfV8A4FY1YgckXxo9ZLNTIjMQ=3D?= X-OriginatorOrg: suse.com X-MS-Exchange-CrossTenant-Network-Message-Id: 2a65e991-3fcf-4f9b-7387-08da2b79734f X-MS-Exchange-CrossTenant-AuthSource: HE1PR0402MB3497.eurprd04.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 01 May 2022 13:49:45.5095 (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: xeJrjgKXEIIu2iRKOzUY8l5OCzQYJs4BB9jmzwnBlMIxBK7K/K3SWWghGm9reR1X5+9UM+VIgi+A+t7nSqZrLg== X-MS-Exchange-Transport-CrossTenantHeadersStamped: DBBPR04MB6283 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 Reviewed-by: Mat Martineau --- 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..ad770deb5a72 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_data is supported\n"); + return -EACCES; + } + + switch (off) { + case offsetof(struct mptcp_sched_data, sock): + end =3D offsetofend(struct mptcp_sched_data, sock); + break; + case offsetof(struct mptcp_sched_data, call_again): + end =3D offsetofend(struct mptcp_sched_data, call_again); + break; + default: + bpf_log(log, "no write support to mptcp_sched_data at off %d\n", off); + return -EACCES; + } + + if (off + size > end) { + bpf_log(log, "access beyond mptcp_sched_data at off %u size %u ended at = %zu", + off, size, end); + return -EACCES; + } + + return NOT_INIT; +} + +static const struct bpf_verifier_ops bpf_mptcp_sched_verifier_ops =3D { + .get_func_proto =3D bpf_mptcp_sched_get_func_proto, + .is_valid_access =3D bpf_tracing_btf_ctx_access, + .btf_struct_access =3D bpf_mptcp_sched_btf_struct_access, +}; + +static int bpf_mptcp_sched_reg(void *kdata) +{ + return mptcp_register_scheduler(kdata); +} + +static void bpf_mptcp_sched_unreg(void *kdata) +{ + mptcp_unregister_scheduler(kdata); +} + +static int bpf_mptcp_sched_check_member(const struct btf_type *t, + const struct btf_member *member) +{ + return 0; +} + +static bool is_optional(u32 member_offset) +{ + unsigned int i; + + for (i =3D 0; i < ARRAY_SIZE(optional_ops); i++) { + if (member_offset =3D=3D optional_ops[i]) + return true; + } + + return false; +} + +static int bpf_mptcp_sched_init_member(const struct btf_type *t, + const struct btf_member *member, + void *kdata, const void *udata) +{ + const struct mptcp_sched_ops *usched; + struct mptcp_sched_ops *sched; + int prog_fd; + u32 moff; + + usched =3D (const struct mptcp_sched_ops *)udata; + sched =3D (struct mptcp_sched_ops *)kdata; + + moff =3D __btf_member_bit_offset(t, member) / 8; + switch (moff) { + case offsetof(struct mptcp_sched_ops, name): + if (bpf_obj_name_cpy(sched->name, usched->name, + sizeof(sched->name)) <=3D 0) + return -EINVAL; + if (mptcp_sched_find(usched->name)) + return -EEXIST; + return 1; + } + + if (!btf_type_resolve_func_ptr(btf_vmlinux, member->type, NULL)) + return 0; + + /* Ensure bpf_prog is provided for compulsory func ptr */ + prog_fd =3D (int)(*(unsigned long *)(udata + moff)); + if (!prog_fd && !is_optional(moff)) + return -EINVAL; + + return 0; +} + +static int bpf_mptcp_sched_init(struct btf *btf) +{ + 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 Tue May 7 04:33:15 2024 Delivered-To: wpasupplicant.patchew@gmail.com Received: by 2002:a05:6a06:869:b0:4b8:7781:bd2f with SMTP id d41csp3444153pis; Sun, 1 May 2022 06:50:00 -0700 (PDT) X-Google-Smtp-Source: ABdhPJziSz74KTI14Yq+ugaZtk5968GR/Js6lZ+PtGRxmfZnhcvIgQcbuuBPiUZv7Hv/sHXQtvQE X-Received: by 2002:a4a:4a86:0:b0:35e:a2d3:763b with SMTP id k128-20020a4a4a86000000b0035ea2d3763bmr2723129oob.23.1651413000679; Sun, 01 May 2022 06:50: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 w75-20020aca304e000000b002f9caad72adsi7936716oiw.146.2022.05.01.06.50.00 for (version=TLS1_2 cipher=ECDHE-ECDSA-AES128-GCM-SHA256 bits=128/128); Sun, 01 May 2022 06:50:00 -0700 (PDT) Received-SPF: pass (google.com: domain of mptcp+bounces-5002-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="Z5YSaH/y"; arc=fail (body hash mismatch); spf=pass (google.com: domain of mptcp+bounces-5002-wpasupplicant.patchew=gmail.com@lists.linux.dev designates 139.178.84.19 as permitted sender) smtp.mailfrom="mptcp+bounces-5002-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 768D82E09CA for ; Sun, 1 May 2022 13:50:00 +0000 (UTC) Received: from localhost.localdomain (localhost.localdomain [127.0.0.1]) by smtp.subspace.kernel.org (Postfix) with ESMTP id 454AB28F1; Sun, 1 May 2022 13:49:59 +0000 (UTC) X-Original-To: mptcp@lists.linux.dev Received: from de-smtp-delivery-102.mimecast.com (de-smtp-delivery-102.mimecast.com [194.104.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 AC41528EB for ; Sun, 1 May 2022 13:49:57 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=suse.com; s=mimecast20200619; t=1651412995; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=/RDlydWiAwHZ3O0hxyi4E5TKaVuJH+Dk8t/1KIGdEMI=; b=Z5YSaH/yiDQl1arJp5Nd7XSOj050Jt9fGlfIvy/PqAmH4bEaI8CsmkJkD60DmiEqm1n5RK ong2rP2VGnyzYBPcqnzHObvjdSDYt5agxo0WkYL+aPiuWTW/xIkuAYXtF1bzqI33wKUty+ ck55eumdNjXBRqpu6S/q7x8tJaxFb+4= Received: from EUR05-VI1-obe.outbound.protection.outlook.com (mail-vi1eur05lp2169.outbound.protection.outlook.com [104.47.17.169]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id de-mta-7-UIGCeykbOWy4Cpa5aIYkWw-1; Sun, 01 May 2022 15:49:55 +0200 X-MC-Unique: UIGCeykbOWy4Cpa5aIYkWw-1 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=IA8g9Hq+t3dBnzdbNQ7AHShERJa/SKAQpXpaVtXik8PUTdG1DJLGw87uUFl49Deeo9ir3uS3RXRhqRhw3skNq4UBf1Kx7gGEJymQL/pPgYAL9pCa4XnrmDuB3m7cEgy8jnhvMc6cc7CKJl/Ar7TTdteWpywOP9lkItVdPdeFB3g9gogIlqxLkFZQF5NLGpLqSoAnE4QOC7dPzfjqVjb6vfGKDagddY0mGnb5+0+G1VklNpXh+wDPCYPdBj5BEZrHSmcd0bJiXA/igUDQfx+Y0kQdgGOkWv6RiOsw0HHfrs27C3KgM96x1nIXFD09jABbz70wm/ceCCXOEbPdUe/1og== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=z2K1eTcXjHmFeX1syZLtPL8603gz/hgxgKtqjwkUSFk=; b=j1PsdU+PSw8VEoQiK0385AW0QC+zRWIPmbH1nUzRCp4/65bFj+UaRliq2hirxomSYNZ7Twwjsdybvw8ehPoovAjQk9gscojoMNtioAhs7fJao0F6GDj92igIHE91TKTZ4ktmgdfEz4/PVVPqvB50QLHbsQTy6sGfXx3grga7MMs2j4ZTWzVYSSfyqSQ+r14WMdA9hgl3Ej1q+UhXQ6ObQXsvjKkBY4Ilj49MJoe5A55HJ/Qk5tB3a2HvYjAz+xoG5cuBIduwYTrxqIpopymjOat3DZgdeN7OjdNQl7Eb40leRmvdJ1GWmSOhP1wCYv9dJ2Lqfz6SUvBiAbGy8di4Dw== 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 DBBPR04MB6283.eurprd04.prod.outlook.com (2603:10a6:10:d0::11) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5186.28; Sun, 1 May 2022 13:49:54 +0000 Received: from HE1PR0402MB3497.eurprd04.prod.outlook.com ([fe80::9974:fd5e:e3c0:14dc]) by HE1PR0402MB3497.eurprd04.prod.outlook.com ([fe80::9974:fd5e:e3c0:14dc%3]) with mapi id 15.20.5186.028; Sun, 1 May 2022 13:49:53 +0000 From: Geliang Tang To: mptcp@lists.linux.dev CC: Geliang Tang Subject: [PATCH mptcp-next v18 6/7] selftests: bpf: add bpf_first scheduler Date: Sun, 1 May 2022 21:48:49 +0800 Message-ID: <714655ad6f356914c4353376c8e5ae7d647cbb9d.1651412613.git.geliang.tang@suse.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: References: Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: HK2PR02CA0162.apcprd02.prod.outlook.com (2603:1096:201:1f::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: b60b796c-bd0c-4f19-08e0-08da2b797871 X-MS-TrafficTypeDiagnostic: DBBPR04MB6283: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: KNNvotL/biC3ijSrW7WFY5+A2O6y1IgvsiKTnEQLPg/0mO3CT2W9oEywoxP470rixs8qCdRPTAsD7BzC+oSOxdJKHcn9IgZZpVSfCG7iE+aPZjyKMF9UfIzrMu50uDrYxu03V9wlmTV6HCUVS23K9r/Wx+In5JkgmYlC0LcT8fwTDg7rJRkIl1CODILWuyT3ZL3ZywOOVMgL9Nw/fK911ddbyoiTFOnPlFZRiTtgJogrPrB5p8rBDBmImbWB8oBIEAgc79g9wSIoJgCVMbefIEeVMccFcZimcGVDYm08VPIkwyH+Eb9b72FoWGlhw/+h+Z83Xaa3dLo5XPpWHy3kxVu4oHNG1ZJX67FFxAR2ncdTa61dZ1IoJb3qpAE8no4R5oaY8N483u7nRXUEkEfMaSqNZsvmVRV6RNcYui5QEySiUQFLYzXnTb+smMJofSnXD6EkL/tsMdEk5jxsb4qv5I2C0H67qIXwUsA3D/DtHUeB5WrZLKMw1UXuwdKIQcXEi3Od9feO5y1on1diT3p+rFDza34SN2z5SDazYcjQ0820Su+b5sGJfZiG7TAZWZR0AgnPp2ZzcGXA3eLjKO3Mt9ZFATKEKbnAj+CZl2SExIvByY9YhmgoDrBpGOloHQs+ZJkQEiRek/Uff+K3JA01nsrnALnaYjMhkdDApVgV9ia0bIFAyc+ow74fZqYkjyF+eexd9Pk3d6t5XwHsjVUxMw== X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:HE1PR0402MB3497.eurprd04.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230001)(366004)(508600001)(6512007)(5660300002)(186003)(26005)(2616005)(316002)(4326008)(66476007)(66946007)(8676002)(66556008)(6506007)(2906002)(107886003)(86362001)(38100700002)(8936002)(6916009)(44832011)(36756003)(6486002)(6666004)(13296009);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?tVvYPC/Gcglh+1hyXw01hvlH3WydoqefmPliB5ntlmVxhT87HO545M2GbX9k?= =?us-ascii?Q?SB5x8C+CdxyZkDgQ6rMHfQdrrPDqUvYP3aHsXIIJC9aeyLRTQeTke2jawF7/?= =?us-ascii?Q?xelrIsDC+HCynDuvGXdOYpXFLG82AbuuGlZINhUJvYYAhY6TrP17v5+EV+8k?= =?us-ascii?Q?ux/99L8Z/Sz+f08eA7wIyx7j8yyshjz3KMswUv7uDc56fZ6aqkkaNiz+P08/?= =?us-ascii?Q?HZ3UzzOj5GDXOtzcFMkgkhiAcShGqYJCKjXcYWNFYMg4bxLD4didZTRvVvNN?= =?us-ascii?Q?Wpdc+5TWALJzxWAHg5BFRbIdpT2bZCxYBJ5uNC81X7VWk3HOHv0SLfqqWXXZ?= =?us-ascii?Q?zhKUxwI4Xw28jk8yBFLboa83zeNXAOjFcA4D5QSxdSzmauqRLwRVCq+/asIu?= =?us-ascii?Q?cM5YGhfS8nD5BavsTqvWzN3FWk4eDFUUw54E8EfWr/ZggWuFxMVRFD/4T6Jv?= =?us-ascii?Q?cshhtjswEUc3OOEim4D+d0/rCJ3qsVhdHuWb8Xo2mSi4D1/jZzQ9E/vyLDX2?= =?us-ascii?Q?QPTxgDHQvqSFtsT3pFzuOevuknANI4X+Xb9HFuH20mOUuzRabBOlRJcgjXJz?= =?us-ascii?Q?thzJNlp1UCiBODiWZksO0CecfzrUZ7vNJvPwrvUE+5vK9S9TcQW1E9OMs+Kg?= =?us-ascii?Q?5aP905nqznU7l27sCu2h0dC5KAhr5pX3ItIkKiUFsMNK8KxwomB9cK1eFVMx?= =?us-ascii?Q?YxbzqHtCTKWaw1Zu5/yGUtF5hS3HcUxRLU+tToqT9UTuGq2EC4GcmhSwLoOo?= =?us-ascii?Q?xgEgGyUmH4WQRr4ZdmuP1qqIHZMEq3peD6KTWrJFl/jf2QRG8h0r3cpaTZzG?= =?us-ascii?Q?GavDURIiIpnHrUcdz8BFyULz3/9LGGSrWz0n3yjEHCbIFfdl6Fu0CPln2lmX?= =?us-ascii?Q?CbHS7+uiFEgEKsz3mUu1Ec0e0c+5MNzUA3WbErEjCmmOxOeCCKdB/+YF6Y0O?= =?us-ascii?Q?1IB1bGErMh8091inC9GMrfvvjV9hKbj/ExX3L0TazC3TG6wUWH+lD7X3N6hH?= =?us-ascii?Q?TlKAPW9tsnwl29/bQH9w9sAvsVxYSOZ6mRe2Kup2WzcEYxt/xQ30BkNJxK80?= =?us-ascii?Q?Vk7MnBOau8jk0UU5Gs+ujNAQgSK1Kb3+2yIvc4QfPWVLw+yhS2OwhUD6n36E?= =?us-ascii?Q?bacqASyOfkDbyyUJPHYCSGzIl/zpEd4UaC3byhJMAlbxLMxlTv3loWEeNgmK?= =?us-ascii?Q?PCNR7Jbf1pPlL4Z44I+iIcEh0THOVSRWIWIQ+xDQhrEfAIRrnvOoBxsu1+zs?= =?us-ascii?Q?hfoAwdGL3mDDCaZ6H/pses5bfo1h80V3MdaHzsNNBFy6uRC8pHKC6a8SlRbF?= =?us-ascii?Q?c7Pq731y6Z184fpKwr2F/oay7LxDlNVMyPTBy900Fiq/HRlQoB10N43x+78H?= =?us-ascii?Q?mvbFFhXKHpjNEsUkkyhuiTtKIKK3IaiLBE0j39dr2dazs1ucXrPn7WBH/hzS?= =?us-ascii?Q?u39eSZ75W6zKu0FleTlFH01JtIVNSymVmokXVKbbIUukFH4buClZ4vsBmDni?= =?us-ascii?Q?4giCEA7oWMmlxnht98hO/UoCX6QuDkmo7z9v9E58Nc7hhxaM/3j0M1G1sgAN?= =?us-ascii?Q?bXWT31/Z/AZoj8miqSxmNuGMIogE2+RQNy5jJ4Hlp4MYCo8c3x0b8WSkko2e?= =?us-ascii?Q?ugdx7fEEtQfH9q1y23CuaCEX/fkOtEB5IJOQ0A9JGxX+Gk7gyEmyY79k3HCT?= =?us-ascii?Q?siHNwu41ueCZaXEe/Txsn1xG29h5LgRTLWvgBfdwppzov8LpTkikHkSS2icY?= =?us-ascii?Q?3Xz6dPSZ/VLqXT8QjDJeisVrYgsSz3M=3D?= X-OriginatorOrg: suse.com X-MS-Exchange-CrossTenant-Network-Message-Id: b60b796c-bd0c-4f19-08e0-08da2b797871 X-MS-Exchange-CrossTenant-AuthSource: HE1PR0402MB3497.eurprd04.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 01 May 2022 13:49:53.8994 (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: VMHfmKQ1HqkmOrPMFrPJ74aBRbpwhJTRSOKLa471nwX5VWwBuBLrjJjNWCmYA0ziLyPvmuLk7pYjDYSfN2icLA== X-MS-Exchange-Transport-CrossTenantHeadersStamped: DBBPR04MB6283 Content-Type: text/plain; charset="utf-8" This patch implements the simplest MPTCP scheduler, named bpf_first, which always picks the first subflow to send data. It's a sample of MPTCP BPF scheduler implementations. Signed-off-by: Geliang Tang --- .../selftests/bpf/progs/mptcp_bpf_first.c | 32 +++++++++++++++++++ 1 file changed, 32 insertions(+) create mode 100644 tools/testing/selftests/bpf/progs/mptcp_bpf_first.c diff --git a/tools/testing/selftests/bpf/progs/mptcp_bpf_first.c b/tools/te= sting/selftests/bpf/progs/mptcp_bpf_first.c new file mode 100644 index 000000000000..0ca9754c078d --- /dev/null +++ b/tools/testing/selftests/bpf/progs/mptcp_bpf_first.c @@ -0,0 +1,32 @@ +// SPDX-License-Identifier: GPL-2.0 +/* Copyright (c) 2022, SUSE. */ + +#include +#include "bpf_mptcp_helpers.h" + +char _license[] SEC("license") =3D "GPL"; + +SEC("struct_ops/mptcp_sched_first_init") +void BPF_PROG(mptcp_sched_first_init, struct mptcp_sock *msk) +{ +} + +SEC("struct_ops/mptcp_sched_first_release") +void BPF_PROG(mptcp_sched_first_release, struct mptcp_sock *msk) +{ +} + +void BPF_STRUCT_OPS(bpf_first_get_subflow, struct mptcp_sock *msk, + bool reinject, struct mptcp_sched_data *data) +{ + data->sock =3D msk->first; + data->call_again =3D 0; +} + +SEC(".struct_ops") +struct mptcp_sched_ops first =3D { + .init =3D (void *)mptcp_sched_first_init, + .release =3D (void *)mptcp_sched_first_release, + .get_subflow =3D (void *)bpf_first_get_subflow, + .name =3D "bpf_first", +}; --=20 2.34.1 From nobody Tue May 7 04:33:15 2024 Delivered-To: wpasupplicant.patchew@gmail.com Received: by 2002:a05:6a06:869:b0:4b8:7781:bd2f with SMTP id d41csp3444202pis; Sun, 1 May 2022 06:50:09 -0700 (PDT) X-Google-Smtp-Source: ABdhPJzV1x8lxUOT8SJAj1H7+dPXc9sX2D97WL+/T8s7MmIzELaWvW25h4L9Z5xFLdd036KzfIiY X-Received: by 2002:a05:6808:23ca:b0:322:9b0b:535b with SMTP id bq10-20020a05680823ca00b003229b0b535bmr5425206oib.263.1651413009390; Sun, 01 May 2022 06:50: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 y19-20020a056870459300b000e2f30cd3bfsi7559008oao.294.2022.05.01.06.50.09 for (version=TLS1_2 cipher=ECDHE-ECDSA-AES128-GCM-SHA256 bits=128/128); Sun, 01 May 2022 06:50:09 -0700 (PDT) Received-SPF: pass (google.com: domain of mptcp+bounces-5003-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=OvFWG0WW; arc=fail (body hash mismatch); spf=pass (google.com: domain of mptcp+bounces-5003-wpasupplicant.patchew=gmail.com@lists.linux.dev designates 2604:1380:4040:4f00::1 as permitted sender) smtp.mailfrom="mptcp+bounces-5003-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 0D56E2E099E for ; Sun, 1 May 2022 13:50:09 +0000 (UTC) Received: from localhost.localdomain (localhost.localdomain [127.0.0.1]) by smtp.subspace.kernel.org (Postfix) with ESMTP id D2DF028F1; Sun, 1 May 2022 13:50:07 +0000 (UTC) X-Original-To: mptcp@lists.linux.dev Received: from de-smtp-delivery-102.mimecast.com (de-smtp-delivery-102.mimecast.com [194.104.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 26D4628EB for ; Sun, 1 May 2022 13:50:06 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=suse.com; s=mimecast20200619; t=1651413004; 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=MUOtiDg4T8atGHW0eX19Az1qQmQZsYqJl8dDWBnnWos=; b=OvFWG0WWv1p5BO8RKJqVAvJoo2oizSDcVst6DdXEKxoVmiFQBWNJbd5T4FCeYE12YuDdk/ mF7Uv9z24gh+K0vOvO/fz7oL0nmXfeLML1eAnpFWH/lsd6Mr62roUc7DTbKNEVjDNSeX15 ifm/zLJmqcIbB9qYVT6KXBqgOcP4QB8= Received: from EUR03-DBA-obe.outbound.protection.outlook.com (mail-dbaeur03lp2172.outbound.protection.outlook.com [104.47.51.172]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id de-mta-20-hJ--GDfsO7Grc_-JbEuzPw-1; Sun, 01 May 2022 15:50:03 +0200 X-MC-Unique: hJ--GDfsO7Grc_-JbEuzPw-1 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=TEnEN51Peo+bs5NQ8/DRqqpvjmOAGgNtXhreyV7VlTpJPhK4L6xvSIVQ7/Cdhzf++gcStgDMqPRp9aeAzGqiL+Xrp9nrmZazZDX+Yh7CGoE47H/bUwHFiwxGXTrF8Mlut7mf+xTkvMDrc0TFLAqGzCqMQ3yPlKsJUI+e9lPpiWkzdRBcAQ0cqIBHRp5aPX8l2hfjhTNMcBnf5LfFn/CUKMfpA/Z3XPyaQqOCqG2n9KGuteaYZcSK5krKv/D3AABiaBHRI9nOwXKt/WhXsEuUC+xtBDG4LTkacVxwIF2xowHw/VFJe4sAXfxs9kf375JmWgTBbwPLzGwgd6fMg4+Org== 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=F4knqxC2knbve4XzTEB8+fVTeKk6re8tzOKRYXFT88s=; b=Ndz/f3STqZFqdHVyJX9s+Zj56oSaIYbQJe40ck5C1G66VhG4RvTm7nNrShzJsqKGIKVJGwplYID/wRQMkOK0rG6wuQV+lpG44SyRYEyXVPd5JbMDr25GydB0vjOOyINdqZwvs1ZH1+jsZ6G6TLs3g6g1wVRcBy8AgPh1vzOJ7S2hQgdrv76NJ0/1xFY91IsiTS1nhvWhYtto6SP8nsqw/NPYWF7jSZhjnkC0Ga07y7vVJAOnHilZM8nmSER8b99Wv/Ok9sQrsfZuuHFjCBC57DIiIaBLteyyHve909qlGxe8M3JIbsdq0wa7XTge159TghBaha/Mo7LLs3RFqtdHBA== 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 DBBPR04MB6283.eurprd04.prod.outlook.com (2603:10a6:10:d0::11) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5186.28; Sun, 1 May 2022 13:50:02 +0000 Received: from HE1PR0402MB3497.eurprd04.prod.outlook.com ([fe80::9974:fd5e:e3c0:14dc]) by HE1PR0402MB3497.eurprd04.prod.outlook.com ([fe80::9974:fd5e:e3c0:14dc%3]) with mapi id 15.20.5186.028; Sun, 1 May 2022 13:50:02 +0000 From: Geliang Tang To: mptcp@lists.linux.dev CC: Geliang Tang Subject: [PATCH mptcp-next v18 7/7] selftests: bpf: add bpf_first test Date: Sun, 1 May 2022 21:48:50 +0800 Message-ID: <2c5bd5067e0d508dc5e677da3848d6aa6f610174.1651412613.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: 3a05f4fb-74e9-46c7-8fda-08da2b797d41 X-MS-TrafficTypeDiagnostic: DBBPR04MB6283: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: JRI4U5LHb75+WXNXpTRQkXy50l5RDvwbrPt6oKwosC0VJpPvMBycePU8LyFqoORRn8+RwtJMjF3sd1yhgq6H9fA8Qn3k1wwF4QxlxfZJ4NBXgPYY5ADXqVDWHhEg4hXqGPSOEcj+fdXfVWPzE4IOiSty1Frl3Yhj1pJFkpvSz7m1QCvx1XwC7H7aqeN8M5Ubh8Lv4E57lhUcqNkP7EoAPZg+Bnp8+RY+Vpq8R32G5f/hRNQKGBtQyCqHTLFoEOHMGR/qxeUYlBEFview9e7qrjhWWetCqWAK+I3kGOstI9EAwoIZmbEXKxdcACln5PTN3r25GRlFGeFIdXLDYW3N7DmYsmOzZQX2AGWAz1c5NVH1p/Y1Jm8uNSXTF664YyotqxX3BY63lJOmRsHvrxPKMgzHLj+CZBSwM7DG6KsiDfUeFjMUQI35+BNUMMEcwg9/I93CpJD0MrULpmwJExbAFCBGJTKwjMz7gqQugj+vqsvR7weMKlXXg0oj+z4WZPCdJ1opLSCbh63TLPnGucnFFJJorDo0WVN3aDM3AFW+ezMkeFpfrOXeAEGvinOAO3O9uNVxOSASoYhSOs0/VXz2S0nnQRMBtNxeLYqiG5M8RAOT17BFGunJ67fF9NQKlGb/upXxZkkEQAxK+QBbCJFLcvPZdMo2ZOd9uzNReo4pdUV+ZDbnCAGo1Izq87jp6I5e X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:HE1PR0402MB3497.eurprd04.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230001)(366004)(508600001)(6512007)(5660300002)(186003)(26005)(2616005)(316002)(4326008)(66476007)(66946007)(8676002)(66556008)(6506007)(2906002)(107886003)(86362001)(38100700002)(8936002)(6916009)(44832011)(36756003)(6486002)(6666004)(83380400001)(13296009);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?tqs1g88+7MkmiR5NMgYoKuLuOPd23mBWsXtCOS+xl/KOkoLEMsvMkaM3+Y/C?= =?us-ascii?Q?iwhLpNXyE3IY4acAQeFAcOEIYpuCZszkqqmOnB6Op39IyOjNRCtJcFM+prFI?= =?us-ascii?Q?PmchMR+n7NJxci/7x51OPtiXgRXr9aF0TiBC9qmSGPwyV09M4XfjKWrQkAN0?= =?us-ascii?Q?iV0zZryn2Ll5ihhQGW1OskiI9GaTnziVhLr8GViwnWdB7Nk6r2CexH4n/XKO?= =?us-ascii?Q?Cezo7MOAi6NR0WGB4OkXGPwrCCH302pAclEWdx8MaQVGkMJAwQkVhRaxqwhl?= =?us-ascii?Q?HGbraFI/FgzivsxL6es0sm/HhgoEhwZsnPBaDlas6Rub6CEo2XAbqmTsjhfG?= =?us-ascii?Q?6J440DQpp9BcrYNfD//JelLfa2IRciuH7y7ynWV8nT+grDJoFOlDyrnaLyNQ?= =?us-ascii?Q?S2pMK9fkuo2fgXKFb5ZSgjp9GL+6bTF2vJ5hci8Ro1B0c5E9NM5a24TU9Ci8?= =?us-ascii?Q?fv3uv6IlAdkBYP+COYcTskDBs8+XX5tWflBf4DvCCLlUYvOZYD4nUgnM91HP?= =?us-ascii?Q?BKr6V5n+6kNBBdLl5lsAhP9lrPOY/Af3+aco7gplGTwVEch9hNj76pGwpq6J?= =?us-ascii?Q?0EYQb7VnbG8YAR9Y25VIMfIPfeeunAyK4F/3mFrgGcnAm0zlQCxEnoZIYpop?= =?us-ascii?Q?re+q0KMtrXoWKkU5Y+xzPqbYkd/f+ZujoU4S36TqyfG+IE1kbuU4NW+FgHjr?= =?us-ascii?Q?lAremgkhn62PPBhkdLBdHqhvRsg7mFOXf0IjG4bcYKKhS6ZCW7hi8B2quhtz?= =?us-ascii?Q?XZKHAESjUu60ktXp1X2rmz+vIqWZeSZZWacsuixm64ft2wX91MNY6LO8fJ/H?= =?us-ascii?Q?6OFNWqPsaJlmj+j0DLXVQoBA6ei3J/QerMX83EoDFmZQN8fqq+dcAAQiLPhI?= =?us-ascii?Q?ZfGnEV3kVSoKTKdCefc9iljhpRGDZMJcjih7F9uMbuPVjWwGVlNdlQcY4J4x?= =?us-ascii?Q?/TITk7sFXioVxD9QBA99Vpm+AewYZ8dCAwFw3XYj6w1+/RXqWP/9sA2BGi+Z?= =?us-ascii?Q?OSzPH+ffOVw74qgv6ih7bDwn+YmHHNYXMUlZEvbtAdEWyzqBcYZwJ9z66Xhl?= =?us-ascii?Q?eQ0mSfg9HlNnX2bKjENJgiiWLvzF6VF+cauGeaU9bHcxfprQP2/8OuNc8bcs?= =?us-ascii?Q?XcUfGnX4bVY7fQsLKhxt9mnoIFHN2yo7eN46Soyj0Ly9Emwj9zJTbcEmxa6x?= =?us-ascii?Q?7fnUPY1nDqZyEgEle8i1GeZ9D//Z/pRlxpp3WFKy4MiynQJUMSXr/IsBTBgW?= =?us-ascii?Q?MZR/sHzp4ShvgsjaDdKjCiBEPFP8Hiwo7QLjxSBUPkEGjilN9LU3stg/1Fw6?= =?us-ascii?Q?dG76Kbr5B+bIN/VluzK+3mWLv3sZglxRJldJZkj9XURV315JX0iSriEEmvHc?= =?us-ascii?Q?4DcW6WVaQvkJgyF9GRfVhSYWkEZg7FAQGi3D223AnASTBz6TSIc2XQlV7yCZ?= =?us-ascii?Q?sAwIArq3uKSVML8zmxQGUvAbHrNjVNAz2TlPn0SWl+3QXfNAY4x0KzODlZPp?= =?us-ascii?Q?4SF+LyHSZ47aM+kALTAx5HYOnKfQALRjNN081Y6RMctO8CKKb6k5zomrTwqG?= =?us-ascii?Q?+RGJ0dL/kMRd9A6MPWUP38d7HRWWkk/Y36CUzd2zyDT7X63wsBL++WaCYviJ?= =?us-ascii?Q?eD4MJ6ofiuzo8Q8oK5FwFRhr0QdtNoPMNM72AILxC7LqD3Hz+JApwtC9UGs6?= =?us-ascii?Q?AWzElNmM20akN36EnpI7iX+XnHM4+pDwnAICSzwRtw8FBa4Mz7pfdF05LCID?= =?us-ascii?Q?3eOIg1hIhmDHnq7ppu9+bYyuVW3hEXw=3D?= X-OriginatorOrg: suse.com X-MS-Exchange-CrossTenant-Network-Message-Id: 3a05f4fb-74e9-46c7-8fda-08da2b797d41 X-MS-Exchange-CrossTenant-AuthSource: HE1PR0402MB3497.eurprd04.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 01 May 2022 13:50:02.1332 (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: Gb+3vdAo1r5YWRHcx3kb2NRy727UqC4TtAX9IgQ4u6UFuEABolBT+buLOWBW3g48QZf8vHy8zNRIud8A1cO1Pg== X-MS-Exchange-Transport-CrossTenantHeadersStamped: DBBPR04MB6283 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 ed5773c26045..21462c29683c 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) { @@ -265,8 +268,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