From nobody Mon Apr 29 16:49:22 2024 Delivered-To: wpasupplicant.patchew@gmail.com Received: by 2002:ac4:a898:0:b0:4b1:af33:c52d with SMTP id z24csp79165pid; Wed, 20 Apr 2022 23:22:32 -0700 (PDT) X-Google-Smtp-Source: ABdhPJyWEdjGwMhuhrwZsKgK2KUmazn7T2oGgEBEU0jZF2ohJECklprFOBlV4B4hI6YkqamtwRF/ X-Received: by 2002:a63:224f:0:b0:399:4a1a:b01f with SMTP id t15-20020a63224f000000b003994a1ab01fmr23130382pgm.123.1650522151945; Wed, 20 Apr 2022 23:22:31 -0700 (PDT) Return-Path: Received: from sv.mirrors.kernel.org (sv.mirrors.kernel.org. [2604:1380:45e3:2400::1]) by mx.google.com with ESMTPS id e19-20020a17090ab39300b001c72275b573si6574359pjr.173.2022.04.20.23.22.31 for (version=TLS1_2 cipher=ECDHE-ECDSA-AES128-GCM-SHA256 bits=128/128); Wed, 20 Apr 2022 23:22:31 -0700 (PDT) Received-SPF: pass (google.com: domain of mptcp+bounces-4819-wpasupplicant.patchew=gmail.com@lists.linux.dev designates 2604:1380:45e3:2400::1 as permitted sender) client-ip=2604:1380:45e3:2400::1; Authentication-Results: mx.google.com; dkim=pass header.i=@suse.com header.s=mimecast20200619 header.b=HH0yiVBD; arc=fail (body hash mismatch); spf=pass (google.com: domain of mptcp+bounces-4819-wpasupplicant.patchew=gmail.com@lists.linux.dev designates 2604:1380:45e3:2400::1 as permitted sender) smtp.mailfrom="mptcp+bounces-4819-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 A5B21280A86 for ; Thu, 21 Apr 2022 06:22:31 +0000 (UTC) Received: from localhost.localdomain (localhost.localdomain [127.0.0.1]) by smtp.subspace.kernel.org (Postfix) with ESMTP id 8A5B91876; Thu, 21 Apr 2022 06:22:30 +0000 (UTC) X-Original-To: mptcp@lists.linux.dev Received: from de-smtp-delivery-102.mimecast.com (de-smtp-delivery-102.mimecast.com [194.104.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 E0F0A7A for ; Thu, 21 Apr 2022 06:22:27 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=suse.com; s=mimecast20200619; t=1650522145; 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=dHrzFntM0+c/8yNSYBV0cD0sRMl56pl4BQzzNUH0gfg=; b=HH0yiVBDmxI+LFBkyHxm5ZO4gZv3dsTjt8UqUC+pev681Ar/p0CY2/SIgDe4AsvpL/fxA0 8U74zp4qo5ohOJMEf0NWOCD93pD3uGeZsnZPHQU8wov7OSu2QNgISFRjuZi4btLlUSaXRF Wm37w/+G/kccPQrl/8M/iRyLMitm31Q= Received: from EUR05-DB8-obe.outbound.protection.outlook.com (mail-db8eur05lp2108.outbound.protection.outlook.com [104.47.17.108]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id de-mta-10-KFakr63YNSyW4N1rnfYVFQ-1; Thu, 21 Apr 2022 08:22:25 +0200 X-MC-Unique: KFakr63YNSyW4N1rnfYVFQ-1 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=EUA+2+jVMdBb0yOKIBrYH3Q+Zm1RZr0AXtwLwk1+jCnoiLynQuzAHIh95vo8xX1T2hBQmpHHj/e+hRL5PBkvvkPXUQAXVOO7hs1uOcPgb9k36mnDpEKcDtJzV8DPviRsVCJIHCAztu0oFQ65SmyuzIvIqb35X1FW7FSVasJYBlkrH4cJ+y2xxHLOqcK1jC4L5X87zNd9zNKTVxjgDcCwg0NXMO9mSQ2g7N87oQDySPYlz2RjkXeyJ42vS3jDQEha07xGJNzN2WbsJPpe9gbKtSYubsLPNY807kYhyw1Khi45x0wb5iwpXpHqbR9BY7nETuojIAkDjc3HQxdEXNRfaQ== 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=6Gf08l9MjetOVwS61r6WozOlxzEb5LfKg7QQcwLdVeg=; b=aj53xfEbRyJQmLPDZynwp49B2fUVRtYm8REQ2p9KqOhMC0ujsZdLx13lTg4xNItiA4KE6s3eNZpyxZsSVtnAoU0Jdwlel+VumeEm2PQTKTJ/nw2EV2U0YfstzheWaM6N7/SrM/zAQaHWDVoT/hAOhzTfDAP0bfEqL2ogDkQ6TBU7b0Vpp7+6O2n6QagRC7M8vaE9iy1g+5Bpg8hlCVtpUitMNDES2sPo32LCvyrG+QjdkOMvemfz7L1SKe5Vovf/CPEZ/sWIGtU3lA1mkWYwkvEX/pfEjT1ayzOYDASEn93du9KKqWa7fNAJSPXmQgMAUJwqBdEtn6JhczJmh/aZCw== 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 AM9PR04MB8100.eurprd04.prod.outlook.com (2603:10a6:20b:3e3::12) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5186.14; Thu, 21 Apr 2022 06:22:24 +0000 Received: from HE1PR0402MB3497.eurprd04.prod.outlook.com ([fe80::9974:fd5e:e3c0:14dc]) by HE1PR0402MB3497.eurprd04.prod.outlook.com ([fe80::9974:fd5e:e3c0:14dc%3]) with mapi id 15.20.5186.014; Thu, 21 Apr 2022 06:22:24 +0000 From: Geliang Tang To: mptcp@lists.linux.dev CC: Geliang Tang Subject: [PATCH mptcp-next v13 1/9] mptcp: add struct mptcp_sched_ops Date: Thu, 21 Apr 2022 14:22:19 +0800 Message-ID: <338fc9842abf8a626481f84358ab5d5190b87082.1650521788.git.geliang.tang@suse.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: References: Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: HKAPR04CA0011.apcprd04.prod.outlook.com (2603:1096:203:d0::21) 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: 8a5db9fc-c249-470a-3a8d-08da235f4c1a X-MS-TrafficTypeDiagnostic: AM9PR04MB8100: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: Me6rPhnlPJ5TWKoxxvbEjVS+mTC12GKHsqUxjUZnfM6ThU2hUTl+GzS+IMSMPLocZinuhZELZyAV2tJ2U3LkzwVnhqNrawrkMrDY5XFouHTDRH/A0wa1u3rRJUZcc+XECQXQ23JYXP4m/aZ1Rz6F8ePISijYpAbd3SkwZDTpTDjTwczFdJmFLRzEmdhSYWfI5vquDEcXrtwcZcuIxnUJMNR+fQBrk/3Kob9lkqceAL+NmimJEzyRVhMIINRxqi6cf8ehv2mOApMKsNN/mAl5WPsmEqeF58t/tqqzQV11zJEG5KTJ2SphsoD0vXtKeShdptUQpaN1qe95SIbOT0L2Ya+mJbTL7abuZFA8boNy8SvbOuOOV/cj9h17B75YjgW+V/481FvKCRwZk7Cv+PE07aOYoOvN6GY49mGxAPomWzITw3oAFokepONqg2kbPaK/ZB9rmWwUmfrg/ys+XHGj8NTQOEinwVncmlsXNIWAVVIgFwlqC1NyEZqEBIDEK/6+2SnDadYPnHZNvKr1DWNSBEWnnbfxOvvMcLOkJipn/nYKCP9N+cWEkHKtEP71VcqcoJjxEwB/Z9RahQk/yEYmslRpJqMzddmsIZy7epdGlb7boijskWYktt+WxjoEk8OzhSmVQ41WSn1ad0ESAdwd3PPO8kB8asHG37MHG7O8Ti9hYgwZoKLDiHaGrPJNUIEM X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:HE1PR0402MB3497.eurprd04.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230001)(366004)(6666004)(2616005)(86362001)(6512007)(26005)(316002)(6916009)(508600001)(6506007)(6486002)(38100700002)(66946007)(66556008)(107886003)(186003)(83380400001)(66476007)(36756003)(2906002)(4326008)(5660300002)(8936002)(44832011)(8676002)(13296009);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?6HliQ15Z5ZC33Ll/BJz2tBFdFH8NjdHQBC6RsWihJJw8B6nWE6YB8i2sEdOd?= =?us-ascii?Q?biLLjSoNW6lGiFvWpUOeakxrh5wl2bj7YWWx2Xfd75Wlyb1Gkz2eG0KkAY2W?= =?us-ascii?Q?aN4WLRk0z/qxPV4PpxSj4We+Og6HRWbrMLsd9GCp5lUEjtibAtmNVecfAXqt?= =?us-ascii?Q?59PU8bt9tikvTMy9Qe4zvzYtvgT9V7Ugp0LkAgLMgnHNbGr2ZBRkpQ1iWNo5?= =?us-ascii?Q?C0TRxfAxixABVktOIE343iTpLHxmfJjEjd+uV7R6mV5lt5H1s4uIxVWjWrmk?= =?us-ascii?Q?QrOmtIXFgV+Tps/J2hBmvP26oLkCbvcHN2cM6CD86Kzftmja8i/SZPmR1oXu?= =?us-ascii?Q?EP3A8j9ima2S/3A+aTfS61iz/xZQLjTIuOQi/biMBGZFvxpF+gw0nYNm67w0?= =?us-ascii?Q?xgw5ctUhbB8qrBgLbe76QyHMHYTZeCmrxwKorZxltDGgJHWolZtgPF4WFrpi?= =?us-ascii?Q?l9rsQv9Ay7ldwy+T2OHxNhyPRBfCPWf4O92ybhsWbccJq5/iLJPnxwT0eT/D?= =?us-ascii?Q?ZW8ErnC00O30Q6BRIvqVCrrigsO57msmBnNJvp2SLPeFu0xSN1lIdaWhKOLX?= =?us-ascii?Q?9ReqGxpesqV+D108fDYbEzQPJMU5TlkFrazGgOwv0Unqlz05gRJUNRtXkfhE?= =?us-ascii?Q?B+BdjDQc0iULpBnXsFjkEUbDXdLnIpJbjksimsfdUO0RZbJvPz8DTnY7Qd5Z?= =?us-ascii?Q?1YxASnfEDKg24lPFV+Y1lDjZ8KD06CSFZ9krU/gOeuFtRr4SscxEz2Q6Rmjz?= =?us-ascii?Q?n5USGBtFZeE1z42RDQuGcTvJQsGh8TCNju89MYJB+vg5Swl1o79+by10nG6K?= =?us-ascii?Q?g4pJXeNNtAaRbIPbZ/lFHPss8obINRx0D0Zi1LvEwHFxEA8bT1NcF1PphvR1?= =?us-ascii?Q?qYXaw2QCYYTuFs48Ty01PDBVrOZfaNXdBwOKAuznbTxTPDUlEplIbYfO8Y/M?= =?us-ascii?Q?P+vimMi867m+3cLLyrW9LyawtAPyroqQ8xyd4SEo7AYNw606iPn9cBRQFi1V?= =?us-ascii?Q?g0USShxy+XD+0kkBscVjRe36FZjTunUJ6nZNVciQ+yAUO1PkSOf7VAIN3VcP?= =?us-ascii?Q?Y+4nMfl/ogPWIPUnA0b4xyHoDOgoZ128TOvuj7Zv8xKfOZNzuMavb4OgyKS9?= =?us-ascii?Q?Q8BVHfSJ4uSHjNQeoRh6795tRhwjha7hAkxUkB6L3d93cRvoCLkZdNVc7K5F?= =?us-ascii?Q?wc7Pcoh2hzMMskItFD6Ni+EOS6XNk/PEV9geVEFAviy7jgAcLH0C2PCbokbj?= =?us-ascii?Q?xzLGLPg9iIO9K/RWKcA29bcWnwu4RytpsOzRXMf/gdWlWRDjYx67cRpa6boi?= =?us-ascii?Q?rhu3IsIs39/j7ohV/sfUFo/X4EovMpG6QFy+V79RkGqqrLdC4snE5B6nUlu5?= =?us-ascii?Q?lfP3EGrN7QECURKzAYvNZGvirkR+cIvYT84vTYz2NtlMokEDUcl0PcSwsMiN?= =?us-ascii?Q?ECSdQF7lumHKjJNlTbZsCwtGRXgb8aFdhC0vKZ7OxAy/BhjVWB/S61Kfpn5I?= =?us-ascii?Q?9q9bDlCN9IQkAgUMzGLelV2wqxz06N0f51xCvp6mvYI2EysSL50Z5wunb+T1?= =?us-ascii?Q?Y31mEKV/G+95sF9XuISgyA1OgkWWziMP1TQ6G5ct2N9Q5E7t47W6ZqluuwaL?= =?us-ascii?Q?7tdO0ZCi2BRXIp1iLxb68drD2r2zSCfB72T5ePYPNJlYICvFTz+REMP/+Ast?= =?us-ascii?Q?d4GZtf5Bq7x/so7tog2PfIayTiAiDxF1WL+hM+gtoHwk01FGg5Xp39VLE/UP?= =?us-ascii?Q?OnW/Ir3k497YfIoXPWTH7hNNBxXGyPo=3D?= X-OriginatorOrg: suse.com X-MS-Exchange-CrossTenant-Network-Message-Id: 8a5db9fc-c249-470a-3a8d-08da235f4c1a X-MS-Exchange-CrossTenant-AuthSource: HE1PR0402MB3497.eurprd04.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 21 Apr 2022 06:22:23.5748 (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: 435rk7BA1tvoIoKjuERz6ZsRUR+phlnoISOJC0vjyVQ8OuLA5pmX4NYYA2sud1Z1vrp6wa7JPRaRGElBpfanRg== X-MS-Exchange-Transport-CrossTenantHeadersStamped: AM9PR04MB8100 Content-Type: text/plain; charset="utf-8" This patch defines struct mptcp_sched_ops, which has three struct members, name, owner and list, and three function pointers, init, release and get_subflow. Add the scheduler registering, unregistering and finding functions to add, delete and find a packet scheduler on the global list mptcp_sched_list. Signed-off-by: Geliang Tang --- include/net/mptcp.h | 13 +++++ net/mptcp/Makefile | 2 +- net/mptcp/protocol.h | 3 + net/mptcp/sched.c | 56 +++++++++++++++++++ .../testing/selftests/bpf/bpf_mptcp_helpers.h | 12 ++++ 5 files changed, 85 insertions(+), 1 deletion(-) create mode 100644 net/mptcp/sched.c diff --git a/include/net/mptcp.h b/include/net/mptcp.h index 877077b53200..469a93da32a2 100644 --- a/include/net/mptcp.h +++ b/include/net/mptcp.h @@ -95,6 +95,19 @@ struct mptcp_out_options { #endif }; =20 +#define MPTCP_SCHED_NAME_MAX 16 + +struct mptcp_sched_ops { + struct sock *(*get_subflow)(struct mptcp_sock *msk, bool reinject); + + char name[MPTCP_SCHED_NAME_MAX]; + struct module *owner; + struct list_head list; + + void (*init)(struct mptcp_sock *msk); + void (*release)(struct mptcp_sock *msk); +} ____cacheline_aligned_in_smp; + #ifdef CONFIG_MPTCP extern struct request_sock_ops mptcp_subflow_request_sock_ops; =20 diff --git a/net/mptcp/Makefile b/net/mptcp/Makefile index 4004347db47e..702b86e8ecb0 100644 --- a/net/mptcp/Makefile +++ b/net/mptcp/Makefile @@ -2,7 +2,7 @@ obj-$(CONFIG_MPTCP) +=3D mptcp.o =20 mptcp-y :=3D protocol.o subflow.o options.o token.o crypto.o ctrl.o pm.o d= iag.o \ - mib.o pm_netlink.o sockopt.o pm_userspace.o + mib.o pm_netlink.o sockopt.o pm_userspace.o sched.o =20 obj-$(CONFIG_SYN_COOKIES) +=3D syncookies.o obj-$(CONFIG_INET_MPTCP_DIAG) +=3D mptcp_diag.o diff --git a/net/mptcp/protocol.h b/net/mptcp/protocol.h index f542aeaa5b09..18f8739bbf9c 100644 --- a/net/mptcp/protocol.h +++ b/net/mptcp/protocol.h @@ -621,6 +621,9 @@ int mptcp_subflow_create_socket(struct sock *sk, struct= socket **new_sock); void mptcp_info2sockaddr(const struct mptcp_addr_info *info, struct sockaddr_storage *addr, unsigned short family); +struct mptcp_sched_ops *mptcp_sched_find(const char *name); +int mptcp_register_scheduler(struct mptcp_sched_ops *sched); +void mptcp_unregister_scheduler(struct mptcp_sched_ops *sched); =20 static inline bool __mptcp_subflow_active(struct mptcp_subflow_context *su= bflow) { diff --git a/net/mptcp/sched.c b/net/mptcp/sched.c new file mode 100644 index 000000000000..c5d3bbafba71 --- /dev/null +++ b/net/mptcp/sched.c @@ -0,0 +1,56 @@ +// SPDX-License-Identifier: GPL-2.0 +/* Multipath TCP + * + * Copyright (c) 2022, SUSE. + */ + +#define pr_fmt(fmt) "MPTCP: " fmt + +#include +#include +#include +#include +#include +#include "protocol.h" + +static DEFINE_SPINLOCK(mptcp_sched_list_lock); +static LIST_HEAD(mptcp_sched_list); + +/* Must be called with rcu read lock held */ +struct mptcp_sched_ops *mptcp_sched_find(const char *name) +{ + struct mptcp_sched_ops *sched, *ret =3D NULL; + + list_for_each_entry_rcu(sched, &mptcp_sched_list, list) { + if (!strcmp(sched->name, name)) { + ret =3D sched; + break; + } + } + + return ret; +} + +int mptcp_register_scheduler(struct mptcp_sched_ops *sched) +{ + if (!sched->get_subflow) + return -EINVAL; + + spin_lock(&mptcp_sched_list_lock); + if (mptcp_sched_find(sched->name)) { + spin_unlock(&mptcp_sched_list_lock); + return -EEXIST; + } + list_add_tail_rcu(&sched->list, &mptcp_sched_list); + spin_unlock(&mptcp_sched_list_lock); + + pr_debug("%s registered", sched->name); + return 0; +} + +void mptcp_unregister_scheduler(struct mptcp_sched_ops *sched) +{ + spin_lock(&mptcp_sched_list_lock); + list_del_rcu(&sched->list); + spin_unlock(&mptcp_sched_list_lock); +} diff --git a/tools/testing/selftests/bpf/bpf_mptcp_helpers.h b/tools/testin= g/selftests/bpf/bpf_mptcp_helpers.h index b5a43b108982..8587f951ccfe 100644 --- a/tools/testing/selftests/bpf/bpf_mptcp_helpers.h +++ b/tools/testing/selftests/bpf/bpf_mptcp_helpers.h @@ -6,6 +6,18 @@ =20 #include "bpf_tcp_helpers.h" =20 +#define MPTCP_SCHED_NAME_MAX 16 + +struct mptcp_sched_ops { + char name[MPTCP_SCHED_NAME_MAX]; + + void (*init)(struct mptcp_sock *msk); + void (*release)(struct mptcp_sock *msk); + + struct sock *(*get_subflow)(struct mptcp_sock *msk, bool reinject); + void *owner; +}; + struct mptcp_sock { struct inet_connection_sock sk; =20 --=20 2.34.1 From nobody Mon Apr 29 16:49:22 2024 Delivered-To: wpasupplicant.patchew@gmail.com Received: by 2002:ac4:a898:0:b0:4b1:af33:c52d with SMTP id z24csp79222pid; Wed, 20 Apr 2022 23:22:38 -0700 (PDT) X-Google-Smtp-Source: ABdhPJwplWH0UM77SMOVXvrR+1gGJAkYYGKsNm6ffpwFbcfzx1RZwjfm4KzKyv4EndGYsea2xRU7 X-Received: by 2002:a05:6a00:330a:b0:50a:cac1:7986 with SMTP id cq10-20020a056a00330a00b0050acac17986mr7168668pfb.4.1650522158390; Wed, 20 Apr 2022 23:22:38 -0700 (PDT) Return-Path: Received: from sv.mirrors.kernel.org (sv.mirrors.kernel.org. [2604:1380:45e3:2400::1]) by mx.google.com with ESMTPS id om1-20020a17090b3a8100b001d2eb3c5aa3si6505460pjb.35.2022.04.20.23.22.38 for (version=TLS1_2 cipher=ECDHE-ECDSA-AES128-GCM-SHA256 bits=128/128); Wed, 20 Apr 2022 23:22:38 -0700 (PDT) Received-SPF: pass (google.com: domain of mptcp+bounces-4820-wpasupplicant.patchew=gmail.com@lists.linux.dev designates 2604:1380:45e3:2400::1 as permitted sender) client-ip=2604:1380:45e3:2400::1; Authentication-Results: mx.google.com; dkim=pass header.i=@suse.com header.s=mimecast20200619 header.b=Ks5zgAu4; arc=fail (body hash mismatch); spf=pass (google.com: domain of mptcp+bounces-4820-wpasupplicant.patchew=gmail.com@lists.linux.dev designates 2604:1380:45e3:2400::1 as permitted sender) smtp.mailfrom="mptcp+bounces-4820-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 273AC280A8A for ; Thu, 21 Apr 2022 06:22:38 +0000 (UTC) Received: from localhost.localdomain (localhost.localdomain [127.0.0.1]) by smtp.subspace.kernel.org (Postfix) with ESMTP id 19B9D1876; Thu, 21 Apr 2022 06:22:37 +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 3B7297A for ; Thu, 21 Apr 2022 06:22:35 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=suse.com; s=mimecast20200619; t=1650522153; 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=OS4O9/CnWhvENeJvg4MTsk7WOgSZ2uhtsdkdqOVBD48=; b=Ks5zgAu4Wm7Sw2vreOxHdAuZ5VeGvD4JG+kiVA3hY9lcHfrxOOyBGU5hU3QaztGHFCr9xH 6cnZzFlxktvpZtGvFyEDLgXHjbllqZZLOfKd1Jaybzg+tsqudCk43RJs0ujJy9knN164At NDUrZ1frjTJEPyLjoYSkVaRnClRGEvI= Received: from EUR05-DB8-obe.outbound.protection.outlook.com (mail-db8eur05lp2113.outbound.protection.outlook.com [104.47.17.113]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id de-mta-24-KqKxlvp1OJ6P7ovsCk2wNA-1; Thu, 21 Apr 2022 08:22:32 +0200 X-MC-Unique: KqKxlvp1OJ6P7ovsCk2wNA-1 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=ded3S6PdQYVSyPgemBLUKXqGN0K8JBpyu5BvnWIptpPVjrurRm6gu21QrT8zUQL7KoRKQvVlx96D4k4oLywAZ+b2ZXngWK+bDt5vtGVxmAomC84Zb7ARmF1qwDj+hoQRTuksRLnOxj7EceXz3ejhDvsNtka2tn0zugXQjNzQjRCmJnL4uTNiiTpb2dhvpw75CxUtH3LYEw7Ov5PG5KihuzJNAkErWYKDwMYmMjBuqFYlzlWxjfiRMZtc0UMICQhjNDYHaHomVxrl9d+jyiWZbXe/2njmpwgqYi8rvFjEL7H9AxT9F9nu1KaW3UCLQl5uruT6vy4bVv1ipPckD+3RkA== 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=x/rrFu3EaRSAjgb5bm9GV73d6eJZsLR6+Mu9rnbJc/c=; b=G4v27sQ/fyLwDty6wYPrWzMUzQ3vpIAd+j8fxkcPd4mBH2sIjwamNyDqZZPSTYBVQTttzMTaNFL+NtrykLUApcH/6/kNOkNjWj+gurod+0u6enUCzHXmf4LRwQOo8874b/ibrHhkZCqGbqTRuT36/uXyRtxxERZXdYHxq7slJLDVXTEJHgaJferjKLH3cQijvVz5VuPFgfT8XGMgCln/p6WVqNJGgTVhxv6HIt6A08x8RYrKCl5vMnlimRbkDz7DTpqtjdNiGhqMtU8yFCCckzqQGGqqo3QLAE0vjDhm2UnJMiIu+MJw2vIAzfkR77s2mlVkAchxAz1z9TkD1ihFOg== 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 AM9PR04MB8100.eurprd04.prod.outlook.com (2603:10a6:20b:3e3::12) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5186.14; Thu, 21 Apr 2022 06:22:31 +0000 Received: from HE1PR0402MB3497.eurprd04.prod.outlook.com ([fe80::9974:fd5e:e3c0:14dc]) by HE1PR0402MB3497.eurprd04.prod.outlook.com ([fe80::9974:fd5e:e3c0:14dc%3]) with mapi id 15.20.5186.014; Thu, 21 Apr 2022 06:22:31 +0000 From: Geliang Tang To: mptcp@lists.linux.dev CC: Geliang Tang Subject: [PATCH mptcp-next v13 2/9] mptcp: register default scheduler Date: Thu, 21 Apr 2022 14:22:20 +0800 Message-ID: <7a74001f492426cb8373d77f8c5b76fe8efbba22.1650521788.git.geliang.tang@suse.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: References: Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: HKAPR04CA0004.apcprd04.prod.outlook.com (2603:1096:203:d0::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: b0a84e7f-d7f5-47dc-2790-08da235f50af X-MS-TrafficTypeDiagnostic: AM9PR04MB8100: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: 1aEI8NrF2pMw8tE+tzMYjrmL173iKjl67GnKW+vVpNw+rO1/DuxPb9EDLHNJp2/Kmxg814h1ETRemqwOn6uU/jhFNfm13qTfdUScPRrsP/tYEdb5RJMXHrfidn/x5Cj4qYgICmue4yN7dsSmqFMtGHDuGtQgdJrox7hsXufPGj3PCk7tGDoXcTOjIbESWIb82IZsYaiqAy1toVZ0U+Sb1itVrexz/NjIFjX7ix1NR/V2HYag1hp7Qya3nsT0YaH4W7FVC2N7OG+vtqZ3zAsBch2jxFnnX5tlmx91vUVnuLDrqhKzwukSIp70nkFt2q/gKfURWDoPlh7SkhWxhLuQHm6rKwpN1A5GIIvv0SaIaWL1+sFfXGtS5pxmh1Ti2bd9Xrye9Lpm6TBRZmBG2yV3F/YvO+T5sxmxm1GUkHt4esY6jxmgspf/LC0dp+xlZ+b3JqPdKqV1BjUHzzquoGD4cxEc5T9R3aQC+sOEOnMpVee46RDKV+j8eiEh9m5s7cFW1+QbSBsM6OxMPbPdsya2WK19FkGdXijtL1dr3PoSetwrbfbRgt8/PJdbXLjdu1O3Q3UWbk6oC6beRsvkhTGtPVFh2jzIqA2XCF+XAmQ7xgjhwnVbQ9raEoY/Jdjz84qYI5jo/+vjgqylM0ATkHP+LWoEYWJka7yQJtCGHl5XcmbAUsB28m8RLNJf0QyHf4Zq X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:HE1PR0402MB3497.eurprd04.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230001)(366004)(6666004)(2616005)(86362001)(6512007)(26005)(316002)(6916009)(508600001)(6506007)(6486002)(38100700002)(66946007)(66556008)(107886003)(186003)(83380400001)(66476007)(36756003)(2906002)(4326008)(5660300002)(8936002)(44832011)(8676002)(13296009);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?ncgmWsthBLqgnS9OvKXHzMxifgiqpImyh3ncIDF9B5jpDwRnguv7age0PtXT?= =?us-ascii?Q?uhyv7kWBGAGl6yMpVgcTp3pHSM2O8xwEmWMBMJHiS0YNUJYQ/Gke8XTJS9pT?= =?us-ascii?Q?tgJR6KA0OuaU2Jky33vS/JeffuMd1z0TM0i9OUXdS8JOgVAhdbUKjYK5oZHF?= =?us-ascii?Q?MFs9t03HOLerFl9nuxLrWCwVfU3hyAheXGEPbURxQFSFSWNM/+nmk4dSHD30?= =?us-ascii?Q?vCV4iUuclNMRfO/Kpz8izcbCwIFfhqFwKp9aPzj8W7FrD43vPc1UCHbbX/lh?= =?us-ascii?Q?9MYSZ6thsrOAtmEZl3rtWc2z+XR5SXRaGDwDQHCx80DPEqq6mvmAEuzVKh3J?= =?us-ascii?Q?Zbl3X5JEsQZgjuDzOs3wduSHf3fEZc+09VDxdQVeFev9TiDKSs9Z4ceYqLFF?= =?us-ascii?Q?qUzmTB0TJeZK2uNWXJlmlh882Q1naF7ZW7zGm6xQ3LA+P2fDxvBrN6h2tRtB?= =?us-ascii?Q?9KqvTnaALvAWv+ZbSteTD+yepxYdbrdOZgiYPbsZD6+ih12AFFQ2qYgInpTG?= =?us-ascii?Q?K5aOCBJejyYnLGZ0/8YTK4GNuGGAFfKucWO7ElP7DKh3JLZWPjor7ipt27om?= =?us-ascii?Q?0Sq1TPvBMJCM8CqWAJr4Ji5VhHAl/alkFEj8ZmsDprQUNnEYq1oO7FTHDa25?= =?us-ascii?Q?ygxRw2k52PZhDsiAUSg/vOns2EUUsvfTfq8slcvuD/QE1AA1IN1Uco1BjAsg?= =?us-ascii?Q?d4b1leaWZBZu3VTFOlxYHiJZCcr83OdorbXsj2CVRgzGUspD/lULDfdvoeOh?= =?us-ascii?Q?KOcdPR89QgZIBgZJvZdNtZvkK6PpLOzPXMqie1SuY5m286W/LDl6pIIyC1Of?= =?us-ascii?Q?adGu7vgV71oQsKTfLGEtjGRKJ7kJSWzOG+fyQEEPLO3mnoiBGPB/0kYivSAp?= =?us-ascii?Q?ErcIMBQwjvGZmYUl+j3QdUjVDAxDj6uMzbyGP1/i8hvft9AE34iVJ38pt3Sr?= =?us-ascii?Q?h7UuXynFm+OEOO/ZO0MlZr+rsCdwOkhyWNOut+VUC7sHeQhOs30h3P7vWhYj?= =?us-ascii?Q?Ocf8S8PmY117OqF5nWgDBYfbRUOocCmQHIlP/8Y8gpDz1I+45CjeRD8WH1n4?= =?us-ascii?Q?zh6jvS2jA6/HLP3hX9kh58i5ae8H6T404EH6usgL+qmzTljyaH8mn06Xubht?= =?us-ascii?Q?Qh14OppmAPBmkt3GRAml48+VJN2xcOP9vhk7RivmWwyMGxPfywzyux3S6UQQ?= =?us-ascii?Q?wemVhvKx8fG3ZI5WHkV2IX0FBpT7av9zTo65BurycVEH79qefNr6vbohG3Zm?= =?us-ascii?Q?66qDDFbMqaS9rMNj4QvV9Qa6RMp6hLGuEPyU2/p1icLaLGKUR7iRZoTa0ODI?= =?us-ascii?Q?XCJcYqwe3y0k/mDS0iX+lrcP+63IkdfoQzeJ/ai+aPFV3IgTQzufaReHrya9?= =?us-ascii?Q?xBxkKTgl6q8ODe7h+kBQxHBCTp2zZ6z8YVzuZoVjnFk66ar75Qk0ACR9bCQ8?= =?us-ascii?Q?4RZUhCqAuQr1Ow3OylHohKqzYxnQ1qGrwBJo99irMSc//VBXXmGPMxaUofUL?= =?us-ascii?Q?5pFjJfEX46W7qZU6I3XGck7X/ywXYW77/aAur4ZnWqmz4WpqgxWS4wdI+95B?= =?us-ascii?Q?Z7h9FOdfFLZwOvBHcCQiyMwd4jj+hTsFi22UDw78vb2hP73G05BZKJJbaPXM?= =?us-ascii?Q?A/xXnHTZ3wbmUpYO5VFq86SmK4Qa+BMTkAmS7CrPnjG1Oyb4XUW/A0kd3XbX?= =?us-ascii?Q?3Mi2cbx9hXNWG3lhPaCoseAu7godnVRiq446VKFN+efOzzuPqTIbdwLNqMqF?= =?us-ascii?Q?1hytiZ4IZ9u2oUn7GnJDNatElbn+xqk=3D?= X-OriginatorOrg: suse.com X-MS-Exchange-CrossTenant-Network-Message-Id: b0a84e7f-d7f5-47dc-2790-08da235f50af X-MS-Exchange-CrossTenant-AuthSource: HE1PR0402MB3497.eurprd04.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 21 Apr 2022 06:22:31.2461 (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: p91wIpWs9nbEXFhwVsTeYVbqrwukd+2gzpjeMjTNemhZWcmSkELmKFfri6RUmSY7Gj+r0RLam0ZDbBE4MCbkrA== X-MS-Exchange-Transport-CrossTenantHeadersStamped: AM9PR04MB8100 Content-Type: text/plain; charset="utf-8" This patch defines the default packet scheduler mptcp_sched_default, register it in mptcp_sched_init(), which is invoked in mptcp_proto_init(). Skip deleting this default scheduler in mptcp_unregister_scheduler(). Signed-off-by: Geliang Tang --- net/mptcp/protocol.c | 9 +++++++++ net/mptcp/protocol.h | 2 ++ net/mptcp/sched.c | 14 ++++++++++++++ 3 files changed, 25 insertions(+) diff --git a/net/mptcp/protocol.c b/net/mptcp/protocol.c index 6d59bfdd6bbd..4a9a55c4e2b1 100644 --- a/net/mptcp/protocol.c +++ b/net/mptcp/protocol.c @@ -2251,6 +2251,14 @@ static struct sock *mptcp_subflow_get_retrans(struct= mptcp_sock *msk) return min_stale_count > 1 ? backup : NULL; } =20 +struct sock *mptcp_get_subflow_default(struct mptcp_sock *msk, bool reinje= ct) +{ + if (reinject) + return mptcp_subflow_get_retrans(msk); + + return mptcp_subflow_get_send(msk); +} + static void mptcp_dispose_initial_subflow(struct mptcp_sock *msk) { if (msk->subflow) { @@ -3805,6 +3813,7 @@ void __init mptcp_proto_init(void) =20 mptcp_subflow_init(); mptcp_pm_init(); + mptcp_sched_init(); mptcp_token_init(); =20 if (proto_register(&mptcp_prot, MPTCP_USE_SLAB) !=3D 0) diff --git a/net/mptcp/protocol.h b/net/mptcp/protocol.h index 18f8739bbf9c..b71d430ec868 100644 --- a/net/mptcp/protocol.h +++ b/net/mptcp/protocol.h @@ -624,6 +624,8 @@ void mptcp_info2sockaddr(const struct mptcp_addr_info *= info, struct mptcp_sched_ops *mptcp_sched_find(const char *name); int mptcp_register_scheduler(struct mptcp_sched_ops *sched); void mptcp_unregister_scheduler(struct mptcp_sched_ops *sched); +struct sock *mptcp_get_subflow_default(struct mptcp_sock *msk, bool reinje= ct); +void mptcp_sched_init(void); =20 static inline bool __mptcp_subflow_active(struct mptcp_subflow_context *su= bflow) { diff --git a/net/mptcp/sched.c b/net/mptcp/sched.c index c5d3bbafba71..bd0beff8cac8 100644 --- a/net/mptcp/sched.c +++ b/net/mptcp/sched.c @@ -13,6 +13,12 @@ #include #include "protocol.h" =20 +static struct mptcp_sched_ops mptcp_sched_default =3D { + .get_subflow =3D mptcp_get_subflow_default, + .name =3D "default", + .owner =3D THIS_MODULE, +}; + static DEFINE_SPINLOCK(mptcp_sched_list_lock); static LIST_HEAD(mptcp_sched_list); =20 @@ -50,7 +56,15 @@ int mptcp_register_scheduler(struct mptcp_sched_ops *sch= ed) =20 void mptcp_unregister_scheduler(struct mptcp_sched_ops *sched) { + if (sched =3D=3D &mptcp_sched_default) + return; + spin_lock(&mptcp_sched_list_lock); list_del_rcu(&sched->list); spin_unlock(&mptcp_sched_list_lock); } + +void mptcp_sched_init(void) +{ + mptcp_register_scheduler(&mptcp_sched_default); +} --=20 2.34.1 From nobody Mon Apr 29 16:49:22 2024 Delivered-To: wpasupplicant.patchew@gmail.com Received: by 2002:ac4:a898:0:b0:4b1:af33:c52d with SMTP id z24csp79257pid; Wed, 20 Apr 2022 23:22:48 -0700 (PDT) X-Google-Smtp-Source: ABdhPJwpJwa61VwhmFBek7KUCZeUiIOdDntHLuEaA9ApcmAYyd6G3d02I7hutGaYSPkDWPuZCbQM X-Received: by 2002:a05:6512:31c2:b0:471:ad85:9553 with SMTP id j2-20020a05651231c200b00471ad859553mr7312286lfe.330.1650522168752; Wed, 20 Apr 2022 23:22:48 -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 i19-20020a2ea233000000b0024b4aad529dsi3849294ljm.194.2022.04.20.23.22.48 for (version=TLS1_2 cipher=ECDHE-ECDSA-AES128-GCM-SHA256 bits=128/128); Wed, 20 Apr 2022 23:22:48 -0700 (PDT) Received-SPF: pass (google.com: domain of mptcp+bounces-4821-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=AedKFIjE; arc=fail (body hash mismatch); spf=pass (google.com: domain of mptcp+bounces-4821-wpasupplicant.patchew=gmail.com@lists.linux.dev designates 139.178.84.19 as permitted sender) smtp.mailfrom="mptcp+bounces-4821-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 0D4BE2E0CB2 for ; Thu, 21 Apr 2022 06:22:46 +0000 (UTC) Received: from localhost.localdomain (localhost.localdomain [127.0.0.1]) by smtp.subspace.kernel.org (Postfix) with ESMTP id 807381876; Thu, 21 Apr 2022 06:22:44 +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 95A427A for ; Thu, 21 Apr 2022 06:22:42 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=suse.com; s=mimecast20200619; t=1650522161; 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=MC8H7yQYaz5Ea+Nga7xr6KOxz1gRnFZDkrRbxcZNehA=; b=AedKFIjE8VSMgsawMoSj39C3H09GRqRfjrigzCwXvC1rxJnBJ+F9WIzOXKqdaiMkJljqau /uex2kr4bfE5x+fS6oGgxdpaN10nI0v3j4sesHar3Zos5xuiPn0x6PsNYEUOvFjLXV4bGO YBCTrxxXB812+neWxIieFOEEImpS6YE= Received: from EUR05-DB8-obe.outbound.protection.outlook.com (mail-db8eur05lp2113.outbound.protection.outlook.com [104.47.17.113]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id de-mta-2-8Q01BdqHN3KTofibDcKDBw-1; Thu, 21 Apr 2022 08:22:40 +0200 X-MC-Unique: 8Q01BdqHN3KTofibDcKDBw-1 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=fxsqjk3HAygX/pzutvcPk6u+lIrr4iCxyaKgn6mCE0henGnycDRAsaCHQmGuZ/jvLj2rP7ky3yRuuQy8arhTb549FtsUuLaQhtctyg+T/82SR9PYaNjs0+I6FVZXvBKJHLqe+Vnj6oBlf3OI6iYth3J7wTeZB25TVHXHYOlL3H+CiTdEv/F0pcIFHLSeUKFk+wB/xoI9nbudPe/WfEvgzxPpWhYE5OG64QA466stTJymPevm0t8amI3zmGhCp9G1yIKHWbPmtpvCyfvLxRX+Yif00PUeqkzIZQ1x+XecLNgt5+7eyCG0HhpcMYUyDN9R6UwQLd3N9epLafNcEoX4rQ== 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=ZyP8xbjUCFI8EMHHeXrFei/OP8x7Ipvdrh/xZJyD234=; b=j1AE/YgCDPlBy+9H1ryNRY+mT8qjAlWXOxbGyM+AaXfAFtRLf574jNucwv5GnBoZQL8TN0QSsff61+/nk4e2cYadA0pnw4f59JPdJ3vKNMNrVXjMhcmYq6CBy9hqh8lppgB/cmnc/9JdCYsm40I3F/UMi79uDvZ+avKnboKJrJtu/R+nYNb0cpuo5nKFU+NaVn7HLRR26xXFvjIvYt1BqD/ElCtuS41BV6EG5/eaWpfeECCJNnnaim1xiYyiC6OcfTySKhoKfUaHJrO4+dxpQFnFsLXUK/gCYJkf/rOuovwv0mKUlWzPxdcBhpe/146tpX3tWuMD7Kj0ly3LNOQPjg== 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 AM9PR04MB8100.eurprd04.prod.outlook.com (2603:10a6:20b:3e3::12) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5186.14; Thu, 21 Apr 2022 06:22:39 +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.014; Thu, 21 Apr 2022 06:22:39 +0000 From: Geliang Tang To: mptcp@lists.linux.dev CC: Geliang Tang Subject: [PATCH mptcp-next v13 3/9] mptcp: add a new sysctl scheduler Date: Thu, 21 Apr 2022 14:22:21 +0800 Message-ID: <655bfb05675291f94efbc587432d94d18a56bc3a.1650521788.git.geliang.tang@suse.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: References: Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: HK2PR06CA0007.apcprd06.prod.outlook.com (2603:1096:202:2e::19) To HE1PR0402MB3497.eurprd04.prod.outlook.com (2603:10a6:7:83::14) Precedence: bulk X-Mailing-List: mptcp@lists.linux.dev List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: f689798e-5f0b-4619-0025-08da235f5550 X-MS-TrafficTypeDiagnostic: AM9PR04MB8100: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: jxWXp5g+AYL8RxvB5N002rcASe4KBSLVFpbk2JBY0mdMBXFU8zy6BGGq0QEgOLwC/STe++5tVOGy/kGBYqDsXMi3RMw5IdMz992VrB7r1pnkO69BJlzFRpK0eIRtRgySc+xVWzg3to43bZuFJEmpn/1j0DJFMIX35OVLn/zDTu0RK/w28teeRnxeTcZh0hyOe2+6n7lBCF51TyJcYNZQXFUx8wfD7+CaXHUwdrKjCTLrW8hKcSm4xLVUf99X2xjoPSGS3pG+Zh1ViDyqxgxEL/e/is6JZ3Clt6lypKu9oTaSgmT9vZs9hLskjARu3A/vi1YFeZskaPloxQp7HU6xUULxPSpqFEpaIoa2mJgH0Y/Q4RQls4+pyVhEmarHDYEkO5y4OcL4N80Smhq3nDsJiPG09gGpNoi4KyzMW8RpwESrcNLlz5ixjc78DrVWE+VEvCLFkupgzV+6ZP1o4gJL3RVQ4HZ7Pw6V8l4EfW4QcZwSSNXkJOjsLfydZUVdpoidDj5cs4qgEcAtU0P6V9WkllL7ktbSgrN6AJ9c5VLRRD8cLSHOYYr/7GEYT1l5dFNLFHrYcWA1q4wb+OLy7U1zyQByURGVn5A4DNUbuCbgE0UYZmOycKHeJhitu+yWLCj/JrHukaRuasd2pmyrfOHgsfQQYL4OOXw1Jj/NJ9mV0SBFgPzzWzI/DQDUKhHcmJjjnPHP6XPYWc7TpIontquf5w== X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:HE1PR0402MB3497.eurprd04.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230001)(366004)(6666004)(2616005)(86362001)(6512007)(26005)(316002)(6916009)(508600001)(6506007)(6486002)(38100700002)(66946007)(66556008)(107886003)(186003)(66476007)(36756003)(2906002)(4326008)(5660300002)(8936002)(44832011)(8676002)(13296009);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?GpATwmyefsj7WzV+YuT3ylp0T9l+K1Ep6Nzm5RNWS+BX5rViSwsvU8nxE1AR?= =?us-ascii?Q?nRj0xH5zgPR9huXAomccqsPa+INY+l/cR9kKSWtw8TsXuLoryGdQOQCpOFqL?= =?us-ascii?Q?MWCMahwVb+M4AyFnUfNZfDdp5MPouzvUQqo9AS+NqJlPkJnIKn9iOq+r8VXT?= =?us-ascii?Q?YBTw7bdRM//OcFTwqrvRmKlxi22DlEUE0Tg2a1prPwlMg9uXuBMCeYIkhpfk?= =?us-ascii?Q?l9Q3QmHUJlnyG6lK0uiHx7Dic5Kr4vHOIm0m5AcI6KxXcCU+Et/uxvStS0JH?= =?us-ascii?Q?3V6XU3zjj1eQpnOTobuB8SfnyTkFU0IHzACmuc+2nZzdUFI4RIaAxCwkN6d1?= =?us-ascii?Q?IPtEUXS3HD9PM2a6RfvQaenG1NpVie65fJFo868ZfJEUqmRJf4Od1ArZm/MV?= =?us-ascii?Q?G0qvBTVmEZD8q7aHDwSgqcdpgk2cglwntmDGBNEOyrFh/EGY1UD0x0/CjVQm?= =?us-ascii?Q?WsVk2v72GET8K+0iawbvIyLSzNT4/V65E6ier+/lOPjopjG5X6gfxOpOy/wc?= =?us-ascii?Q?bJd/ZZ9PCbGdyEkx3dboq1OEfkIEh+2mTYs/l22nCXBRGrKOtYVQpgNPexJ4?= =?us-ascii?Q?KyYk019H2vNr46KErK7jLQEdi9X2OMHbujONkPwYEFxxqUtvlvMy5EijDnmU?= =?us-ascii?Q?ftFUf3G4HHXUIx5VLYOXPeRevlWQyHSyzeEzNR0Cupy5Q54vrMBo0dUgDFwQ?= =?us-ascii?Q?MGOfDHSWKDbou8wPVD/+oPMURfKV7nrleVew88kphkBkK/sbt9zt3r0Iv7FA?= =?us-ascii?Q?4CX6LePApIhGc2IbL2xGWL3JnblRDAFiP0X5UcbtRa6+lO2SDu3pA7OdTnc8?= =?us-ascii?Q?+VaJ1BNPxEtrri9d6bXEYAliygURV1d9FlTl6u7JagFus0RykIbd4CU4LMz9?= =?us-ascii?Q?OL6bnssreglkRls28oIx/WuLyQrZM3VhZ7qby/KtI2s382yzsfDGKWGqKNT6?= =?us-ascii?Q?ZsSQSy9TniATlpcOFxn0E2x2KUMftUaUHhBjV2PnoWHAffZpzoVZMQKTrJr7?= =?us-ascii?Q?wbfVowFJOzm2rnBIUT845300HW1byZ2XBqI40GTbDoxrGHQKd14IQGeGwdoo?= =?us-ascii?Q?ntKADe+rBVUnYk2G4vd28vt4ngq8Pnahf1/STiONN3HgdLOxMRquwtEmsfZf?= =?us-ascii?Q?YhGA7yE8PSfr4UljkpKZ9aKfvlNiCVkIhhhd1auQ+sbW9LlFBUlUmGheYDtt?= =?us-ascii?Q?XVTuCt5TREky0Qo06g1Kh1jcYrXLRMZQtzFmlWKNVtaDuf4ulj6jMsMdP7Rv?= =?us-ascii?Q?gnnkhwl3A0lDKUwcRUFJ2Do3VqEvHshQJ/g7VBP+lh7pTUngiZga+WGVeWL/?= =?us-ascii?Q?AFil/1LazdIE1wLSxWOTMhQrD7ZwVH9QcePEUPoLyMLaxMbB5KyMIxwWkZ7w?= =?us-ascii?Q?xfjF0U8PrfuucmbNuEchg7Y4Ht7gEQ+YWHK8O7vsziQTOwC7M51/l+cIHvvt?= =?us-ascii?Q?pic/XlnN+GD8PkF1lj0FvhPhdNsl62TlDN1rsha0v6kfUJzRxyYPzPKHNzOS?= =?us-ascii?Q?Z+DqJio1mwY+qL+NYtowo/wBZUBArnuBIaNXSlCWn/uD11//2XXbKfZvBWd5?= =?us-ascii?Q?VbxDR2IrZXUnMi2l5kTjmLPZrD06RCxEgbrW8+k2aUWwOF1WqTlam3q/R2t0?= =?us-ascii?Q?WManMn9jMTLB+XkuSEGR+HUnQYdFK2hrKrrk2NZZw2PsA7Lx+WhW9bQvXUL/?= =?us-ascii?Q?IA4o9acs7dx3a0lF422sBUNA0EXc0K7qpd9u4Dy2wDolUnvdzOzdUmfNjtlR?= =?us-ascii?Q?iJWqzsfJsze4REtqKjcecXa8N+7x1XI=3D?= X-OriginatorOrg: suse.com X-MS-Exchange-CrossTenant-Network-Message-Id: f689798e-5f0b-4619-0025-08da235f5550 X-MS-Exchange-CrossTenant-AuthSource: HE1PR0402MB3497.eurprd04.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 21 Apr 2022 06:22:38.9799 (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: Qs/HYYUYFEh2yit+fnTK1ySp9Bmzt0UOv3f28Dj2hdesefpvCQMpJPmGUqTp3c8J3t/YG1N4ziVXg9jJH2epOw== X-MS-Exchange-Transport-CrossTenantHeadersStamped: AM9PR04MB8100 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 b71d430ec868..bfa37f6b9063 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 Mon Apr 29 16:49:22 2024 Delivered-To: wpasupplicant.patchew@gmail.com Received: by 2002:ac4:a898:0:b0:4b1:af33:c52d with SMTP id z24csp79285pid; Wed, 20 Apr 2022 23:22:55 -0700 (PDT) X-Google-Smtp-Source: ABdhPJwFCVJr/ywh/CNzvmdP7vvVfuhUt7uV3uVMV/DjOn1/8iRIBxKtQh8Ir8K0fuWo9GaNi4dJ X-Received: by 2002:a17:907:97cf:b0:6df:846f:ad0a with SMTP id js15-20020a17090797cf00b006df846fad0amr21725704ejc.286.1650522175401; Wed, 20 Apr 2022 23:22:55 -0700 (PDT) Return-Path: Received: from ewr.edge.kernel.org (ewr.edge.kernel.org. [147.75.197.195]) by mx.google.com with ESMTPS id r15-20020a17090638cf00b006e7f3596911si3455394ejd.147.2022.04.20.23.22.55 for (version=TLS1_2 cipher=ECDHE-ECDSA-AES128-GCM-SHA256 bits=128/128); Wed, 20 Apr 2022 23:22:55 -0700 (PDT) Received-SPF: pass (google.com: domain of mptcp+bounces-4822-wpasupplicant.patchew=gmail.com@lists.linux.dev designates 147.75.197.195 as permitted sender) client-ip=147.75.197.195; Authentication-Results: mx.google.com; dkim=pass header.i=@suse.com header.s=mimecast20200619 header.b=X9sX1MUR; arc=fail (body hash mismatch); spf=pass (google.com: domain of mptcp+bounces-4822-wpasupplicant.patchew=gmail.com@lists.linux.dev designates 147.75.197.195 as permitted sender) smtp.mailfrom="mptcp+bounces-4822-wpasupplicant.patchew=gmail.com@lists.linux.dev"; dmarc=pass (p=QUARANTINE sp=QUARANTINE dis=NONE) header.from=suse.com Received: from smtp.subspace.kernel.org (wormhole.subspace.kernel.org [52.25.139.140]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by ewr.edge.kernel.org (Postfix) with ESMTPS id 588191C093A for ; Thu, 21 Apr 2022 06:22:54 +0000 (UTC) Received: from localhost.localdomain (localhost.localdomain [127.0.0.1]) by smtp.subspace.kernel.org (Postfix) with ESMTP id DF8B11876; Thu, 21 Apr 2022 06:22:52 +0000 (UTC) X-Original-To: mptcp@lists.linux.dev Received: from de-smtp-delivery-102.mimecast.com (de-smtp-delivery-102.mimecast.com [194.104.111.102]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id CF13F7A for ; Thu, 21 Apr 2022 06:22:50 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=suse.com; s=mimecast20200619; t=1650522168; 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=azDBSFukhtOfvTG7Dc0AEcJV1cfoZJDiJuywIRC9vb4=; b=X9sX1MURimF313toowBO0jGfuE6XWXY2wamooNGTTxKOutmXXcda6N93+CwZTE446qMKbo 0ZZN6wnbVkS2n45l9AIL6vzzUsVsvqSqOJEsifTHOEiUqShpmvoEjlAQkZa/32YeBCJZPv mmYH2+8B7YZb1NsyDZM6Vw48J1kKpGM= Received: from EUR05-DB8-obe.outbound.protection.outlook.com (mail-db8eur05lp2104.outbound.protection.outlook.com [104.47.17.104]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id de-mta-16-e88apHg1Po6S1EZIZDWOPg-1; Thu, 21 Apr 2022 08:22:47 +0200 X-MC-Unique: e88apHg1Po6S1EZIZDWOPg-1 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=FcNZA41Tq7yvGb1frfE2TvZ4W/xCQOjRYGZHIw+uxCUrd528XCluJT8yn1Pj7Bwu9igIcuY0XGTW7DzjmnhsPsrTAZMzmkU9nDEwvs+8IuZRZlN8Mg39wVGrniN9aZ0m8GlTipYWx4IhI/wfQRFlZUs66EB1Ba02mh0H7gsMt1P0BrohTNo4cmyFFzig5BpoDssCBfKIjFT5g9vGWdZfAj+jCrHArGfzCip/de+gEkdM8UKjHxJDKvE1xPAjXHXuMQno4GW3knQyXuqsOj4NoUd2370zcxzJtw4p3TsSNahJ+pEKf2aFJK3ghp8Ofc1FueyMRb9ocsB8NIP+euk2Lg== 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=Sclt9QV7fyH4N3cK/kAGFpSHRwRT4CfHEcCgesoNI0U=; b=IxCfnouD0qRRQmVb711tXIMOCjz2hzeH4SkC5+kVcjTyZ7FJjtsTDC6M4uXJ/bVU07ZcpHtqLDS/6p3cqYFm/XB3orb1b5LFIFzIdd6zDK/qCHvSX4gjoc8MWkmcNg+kSgY4OpRW41nMzqK+PuTPRfh5QstxkhhhDNS98DakRKD1dIxZ/KE4to6ZGfbYz9KtT80tK9cYtYwwYDToAgTszMrL0nd22dojoN8Xxo3Jq8Qt26XJE73Vdqwy2dvdl1zcG/TKsoslQbXxCRrGmYfBEeC7IUQZVKtE1Z9g+oXseNQQEh0vYvBVCXv9n69o1AbH5I6gIGRspIle2Ls2zabE5w== 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 AM8PR04MB7346.eurprd04.prod.outlook.com (2603:10a6:20b:1d9::13) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5186.13; Thu, 21 Apr 2022 06:22:46 +0000 Received: from HE1PR0402MB3497.eurprd04.prod.outlook.com ([fe80::9974:fd5e:e3c0:14dc]) by HE1PR0402MB3497.eurprd04.prod.outlook.com ([fe80::9974:fd5e:e3c0:14dc%3]) with mapi id 15.20.5186.014; Thu, 21 Apr 2022 06:22:46 +0000 From: Geliang Tang To: mptcp@lists.linux.dev CC: Geliang Tang Subject: [PATCH mptcp-next v13 4/9] mptcp: add sched in mptcp_sock Date: Thu, 21 Apr 2022 14:22:22 +0800 Message-ID: <85b04fec49ab4b081e9ccb030c8099f9d638a65f.1650521788.git.geliang.tang@suse.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: References: Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: HK2PR0302CA0015.apcprd03.prod.outlook.com (2603:1096:202::25) To HE1PR0402MB3497.eurprd04.prod.outlook.com (2603:10a6:7:83::14) Precedence: bulk X-Mailing-List: mptcp@lists.linux.dev List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: 073a2af1-9383-4e73-ed0a-08da235f59e4 X-MS-TrafficTypeDiagnostic: AM8PR04MB7346: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: JqkMuNA2pwtZGiM1ldGLMTiDVLbqv2z3GXFttEVImVzphf5jbOd+Tp5Ol3fs1QUOheWxFEajC7QJOehXT/+s6U6b3FoTo39pDEslyo9Uwb0N/5sIxyg4cQLaRVsj5sX2E07y1VAIsCrt7uNldfBWTqzXpIdss8ACYcg4xa/dQWdhgiYl1uRkfAz6h5CnjWNhZu/qCbXFiF81HxmbJp84oKSkNnx/eRDfspX/vCIfcZLXBvKTLC/3WZSjAkDrs9lPEY2WMm8jpFcRTqJbCg2lBsY3tKVKgFe+9ND+S9PK+zI73cr81zcekQJEGZ9d03kiuZuYD7qFhszq7lhaAxDgY6ViYvWVD89OgAtMf+luGUtqrzrVL3+8XiqNAm/NTXeiSUqcn/Fxlccft+zjn08UnzyVDUDMJ+bC7M9XB1UFe71Bj8VW7RPxGhFDw5WNXAfqckGjtN27ZKsRi9LvgwOMM+Hf4nN1R1Qd3cQK0AOTsFbklkI4lP9Ou8IqOz6iIvHXcoE6eeaML9qsabxMj52w4YZ7PSo5zAXzPTV1npD38E+sXT6dUoPrgWk+sijpenuSWYNEeBChLmJoIQRDzRu3sJoktzn2sxDkASnEQjrC26h5kmzZDm5jfZUfZq6MpFixZsYldDyUhFt5JLIeVWrjSFCEQUOMEoLlz7PRxOcYZCiQIhn/u9W5b111wy68XrRN 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)(83380400001)(107886003)(6666004)(6512007)(6506007)(26005)(86362001)(38100700002)(186003)(2616005)(8936002)(4326008)(44832011)(5660300002)(66476007)(8676002)(66556008)(66946007)(36756003)(2906002)(316002)(508600001)(6916009)(6486002)(13296009);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?AGBcRM4r6GCx5GFOyYXgSCMR9MjK7poa/Cqkent1w2S2E+HDSTFdiVd8ANYl?= =?us-ascii?Q?WmRz8m0hmLKaTXlNJmOcacRii53NgZTnnYbfttosxhlAwDPl6mOaXss6mgBP?= =?us-ascii?Q?5zRyqw896n8cznYiJVBjQIPJcVQDGp2UYsgWrt1yFMHhwFeOht4fE3MfUEAa?= =?us-ascii?Q?fA1/jlnfUGGmpdtt5/hRMFxozA2ZL+NekWtajWQF6I14rFr/y1LrUBxscG7A?= =?us-ascii?Q?ytCkbVYa1hiqqQBlm0t2wN/Dgf2OOiANPlXBxGBqAKWaAh/S8HtCJN6hcOR5?= =?us-ascii?Q?bjxu1pdUKUL+DnqJUiCWSa4/CasD1MHnPNVsQQrNsbS7geM1c8QVGdorXdZb?= =?us-ascii?Q?iKFE/Yg+drKBOYdzkFPl9v4NgxcY7k4VdutEE6jN/yRhGKyplRfjr+JcOhdx?= =?us-ascii?Q?aqF+5gygaA7U/28dCRaWkcIvDJjci7Ostq2DJPz3mpzIIUyyX3kxY6Cj36mv?= =?us-ascii?Q?ubFujdrcRO+nqdr+cLmNv6h3V+fHtiUV87XnS+nlXEqGlWqhDH6TLxvTLLz+?= =?us-ascii?Q?omeD337ww9lP3kQ79mdBX46ZTRVhCPtezCyIGds+4A4uiQ4SDS4bvoZ7ZKSW?= =?us-ascii?Q?CBhIjVNSl8uTyYSP983r9pmqDJPtuS0TpsQaJoESf6w3Bgmf3tr1GjKceWFv?= =?us-ascii?Q?tbNWGfMCQm6pid+p/r6OocSRvD6JueT0t2C/9TIpzFosIMVouKeRBtawXrXN?= =?us-ascii?Q?YfAqZ/nFvHKjcy4i6pJgXrHQALnoDgBjvALSam1PV2rLeZrdLVBgdbvo/YQV?= =?us-ascii?Q?KySnpw1T+8g2h/0LrbbrjdVcQKeA9K2a8okyaeX8vxv+/adrvQzADzpBwBYR?= =?us-ascii?Q?FHRg1MozP6oW6ZVxRA1CD8IMD9ykDEpLlwuO4WEeGY2TI1w2y7PRBTYgRPM0?= =?us-ascii?Q?F7NA0WGszI8ut0g7NQa8pre8YICCvXnYZMIV8bRNIsfk8+LfXx3krghfFUBh?= =?us-ascii?Q?KvHUE+BanT3AZuqwuBjYZvKVGq9NnLK/2KMR+7adolLWvfyZLFUOTS7uqpAR?= =?us-ascii?Q?QiEyrX9yzezqYYXUI38i1b7F9g5dP0tiAu5jUr4vqwyQFL3KzJZa/leVVjZL?= =?us-ascii?Q?jzOfn5l0B6T/jOFWEzsgRRBUosh9VKSr9qrghE7ayaCOkw18TfnBWkio/sy9?= =?us-ascii?Q?PJbqgcON7SIOWuN/a5XQii7+qWzE+fVCU6rSkOmAy2Pz9EmpeD0EeHZ9QYCn?= =?us-ascii?Q?Qtpl/fl5TbigNekcmiBvY2ta/inHGiQnHGZmgyeaFKsO4fuPVrt5dtVsqdMX?= =?us-ascii?Q?2ZpGoMMLU2RZbBlGGWwwn62CSUDX8CIg6XclA/7E63nlbGwhcW0VCZL8gEtr?= =?us-ascii?Q?DKDONQyhyHHTc+H2YfD5tiwoXHC/+9XHa6fA951GbGX9R5lTw6iW0Cw8VuWQ?= =?us-ascii?Q?vfdKnn5QD+q0eqoAKr0tdOqffrKW956c2cpidrVT8qflrjXP6YBI8Ju9gKgj?= =?us-ascii?Q?SqBbB+1BB5LMjAv0yBtXaAVAYFoozCxyg0hXWkq4dyPCvUODgpMzjBb12ts2?= =?us-ascii?Q?RoCNjNh3jlMac/4G62IgJLYQMl7M79vfbX7Rsn3YEl3YqwfxGXp0NPS3lZtJ?= =?us-ascii?Q?II26DeYS36AsCZR+MxCynsWlHlF11deYEOaoqbaWamFjgpsYmCd4gCInnDc1?= =?us-ascii?Q?bPds+Tpg/QJ4dl+qcHLime2zBfZI/jC8hmfXhM14BmyN+XXl2OKdte+LkMVf?= =?us-ascii?Q?SUJTOVC3eJMVtR4r6YIx/RwYMmj5s8/Xw9ypLcPruF1mtZiuVBGmac69Ffam?= =?us-ascii?Q?XqDGJW+gQxX0DFdnFbfsKngDitLEKsE=3D?= X-OriginatorOrg: suse.com X-MS-Exchange-CrossTenant-Network-Message-Id: 073a2af1-9383-4e73-ed0a-08da235f59e4 X-MS-Exchange-CrossTenant-AuthSource: HE1PR0402MB3497.eurprd04.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 21 Apr 2022 06:22:46.6511 (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: iHRhoeuUZGYNs08D40kqsN+xxKBKWbSMSZazkwYbsqlhcWdd6lKL/eVhXl0/cXfdcNgjMd3UMPAbcSXdr8bPkA== X-MS-Exchange-Transport-CrossTenantHeadersStamped: AM8PR04MB7346 Content-Type: text/plain; charset="utf-8" This patch adds a new struct member sched in struct mptcp_sock. And two helpers mptcp_init_sched() and mptcp_release_sched() to init and release it. Init it with the sysctl scheduler in mptcp_init_sock(), copy the scheduler from the parent in mptcp_sk_clone(), and release it in __mptcp_destroy_sock(). Signed-off-by: Geliang Tang --- net/mptcp/protocol.c | 7 ++++ net/mptcp/protocol.h | 4 +++ net/mptcp/sched.c | 34 +++++++++++++++++++ .../testing/selftests/bpf/bpf_mptcp_helpers.h | 1 + 4 files changed, 46 insertions(+) diff --git a/net/mptcp/protocol.c b/net/mptcp/protocol.c index 4a9a55c4e2b1..3a5189b2d9b8 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 bfa37f6b9063..427a42e04ae8 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 */ @@ -627,6 +628,9 @@ int mptcp_register_scheduler(struct mptcp_sched_ops *sc= hed); void mptcp_unregister_scheduler(struct mptcp_sched_ops *sched); struct sock *mptcp_get_subflow_default(struct mptcp_sock *msk, bool reinje= ct); void mptcp_sched_init(void); +int mptcp_init_sched(struct mptcp_sock *msk, + struct mptcp_sched_ops *sched); +void mptcp_release_sched(struct mptcp_sock *msk); =20 static inline bool __mptcp_subflow_active(struct mptcp_subflow_context *su= bflow) { diff --git a/net/mptcp/sched.c b/net/mptcp/sched.c index bd0beff8cac8..8025dc51fbe9 100644 --- a/net/mptcp/sched.c +++ b/net/mptcp/sched.c @@ -68,3 +68,37 @@ void mptcp_sched_init(void) { mptcp_register_scheduler(&mptcp_sched_default); } + +int mptcp_init_sched(struct mptcp_sock *msk, + struct mptcp_sched_ops *sched) +{ + struct mptcp_sched_ops *sched_init =3D &mptcp_sched_default; + + if (sched) + sched_init =3D sched; + + if (!bpf_try_module_get(sched_init, sched_init->owner)) + return -EBUSY; + + msk->sched =3D sched_init; + if (msk->sched->init) + msk->sched->init(msk); + + pr_debug("sched=3D%s", msk->sched->name); + + return 0; +} + +void mptcp_release_sched(struct mptcp_sock *msk) +{ + struct mptcp_sched_ops *sched =3D msk->sched; + + if (!sched) + return; + + msk->sched =3D NULL; + if (sched->release) + sched->release(msk); + + bpf_module_put(sched, sched->owner); +} diff --git a/tools/testing/selftests/bpf/bpf_mptcp_helpers.h b/tools/testin= g/selftests/bpf/bpf_mptcp_helpers.h index 8587f951ccfe..81a9c5d91aae 100644 --- a/tools/testing/selftests/bpf/bpf_mptcp_helpers.h +++ b/tools/testing/selftests/bpf/bpf_mptcp_helpers.h @@ -23,6 +23,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 Mon Apr 29 16:49:22 2024 Delivered-To: wpasupplicant.patchew@gmail.com Received: by 2002:ac4:a898:0:b0:4b1:af33:c52d with SMTP id z24csp79332pid; Wed, 20 Apr 2022 23:23:03 -0700 (PDT) X-Google-Smtp-Source: ABdhPJwh7HX5sMwuG5NRSdjA3u8jf799AT1h1mk/oU+OpWvWmAvISGIxWYQBWKLsVb5x1ko5SvmO X-Received: by 2002:a2e:a80d:0:b0:24b:51b6:676b with SMTP id l13-20020a2ea80d000000b0024b51b6676bmr15147083ljq.41.1650522182839; Wed, 20 Apr 2022 23:23:02 -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 s6-20020a2e83c6000000b0024db61bd51fsi3838878ljh.37.2022.04.20.23.23.02 for (version=TLS1_2 cipher=ECDHE-ECDSA-AES128-GCM-SHA256 bits=128/128); Wed, 20 Apr 2022 23:23:02 -0700 (PDT) Received-SPF: pass (google.com: domain of mptcp+bounces-4823-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=aTnQRECm; arc=fail (body hash mismatch); spf=pass (google.com: domain of mptcp+bounces-4823-wpasupplicant.patchew=gmail.com@lists.linux.dev designates 2604:1380:4040:4f00::1 as permitted sender) smtp.mailfrom="mptcp+bounces-4823-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 210B52E0CB7 for ; Thu, 21 Apr 2022 06:23:00 +0000 (UTC) Received: from localhost.localdomain (localhost.localdomain [127.0.0.1]) by smtp.subspace.kernel.org (Postfix) with ESMTP id E272C1876; Thu, 21 Apr 2022 06:22:58 +0000 (UTC) X-Original-To: mptcp@lists.linux.dev Received: from de-smtp-delivery-102.mimecast.com (de-smtp-delivery-102.mimecast.com [194.104.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 6E9657A for ; Thu, 21 Apr 2022 06:22:57 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=suse.com; s=mimecast20200619; t=1650522175; 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=lzlDDGUE0JOpwEFpFlHCBykPzzmS/IbST1Q4bRoZxPs=; b=aTnQRECm2pnkSzOVT1dZz+xwqPLNM8pyD1nzWWN2hyQqQYHOgM6v9Nwh5uJFRrZRydfPgK bJ+fu2eAql/P1h8ZXLKrw/GgB+sWCMMn/1ZGvj/kl4C4PgkV+xY1KUxhy/OHQla15LG1kv 2vpf9PHOjefDkTovZLy3NUMNR6Ju5XI= Received: from EUR05-VI1-obe.outbound.protection.outlook.com (mail-vi1eur05lp2175.outbound.protection.outlook.com [104.47.17.175]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id de-mta-35-adfHxNcyOye3efxkmOCAQg-1; Thu, 21 Apr 2022 08:22:54 +0200 X-MC-Unique: adfHxNcyOye3efxkmOCAQg-1 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=R3Td20qGTgn+G665aaPE7HdlOdX7i5Jahcu9wDK71gaIiCfJUvk/aHhZvG0Jt2VS5jPtFsdyTql83ZrRtZWGqyZ/vL3qQCnu7MwsSQX6hS4v4y/PoCa2Nm4yMlruV5KDgml62F72G2dMbKBgVKjD+1l8GpT0luZRhQyMXp7i1JQeYV51bcncatSNsWvpgqQc+/AT430LvVI6E/3yrydm51W4hwUWZt1p6TSmHLOlKACgCtdW1fsCzH2CeJylitzecHUQCcetPGtn0tRf559aZ0QBioI5IikkdIHy96IrxrDs4NnBaBBqfbvCgmKPUFBDfuC05hr8R/o5UiXE+rCH8Q== 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=ROyS5ZjKGDuHV3eOc9hV4soT7uimS160HaWxWbf2mfQ=; b=dFUFj5MNwZLru2umLqHJgWEyAY5mS3yPVNsWpiFsp7QVEbMa2mA16d6N2b1gfmZlORLYNpMbNF7qNUr/QDrpBxEiJTaJ3GxBFt0KKnK6AIGIlrBijapQ/8exJj6w5uC2Q5rqowhbea7WayaDgJ9ePB+OeSxMbml61FMvWkKyMBUSSoiwe3+ub28uHSX7qdg0CZKq1SOtM5P6y0tGx/jovGIBfLipA4HA0jTQ8/AxZoVN02eZj2I0A0NJO8n5pHAUVmgR1zWPaAl2lKuNeRmHVVam8plRuaJcUYAgLpmWFcgIa1Yfu8TAZvpI9u4bS5KmVykpQ4+ALoJGlQnXsqC1Wg== 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 AM9PR04MB8100.eurprd04.prod.outlook.com (2603:10a6:20b:3e3::12) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5186.14; Thu, 21 Apr 2022 06:22:53 +0000 Received: from HE1PR0402MB3497.eurprd04.prod.outlook.com ([fe80::9974:fd5e:e3c0:14dc]) by HE1PR0402MB3497.eurprd04.prod.outlook.com ([fe80::9974:fd5e:e3c0:14dc%3]) with mapi id 15.20.5186.014; Thu, 21 Apr 2022 06:22:53 +0000 From: Geliang Tang To: mptcp@lists.linux.dev CC: Geliang Tang Subject: [PATCH mptcp-next v13 5/9] mptcp: add get_subflow wrapper Date: Thu, 21 Apr 2022 14:22:23 +0800 Message-ID: <58abf449ec1fccb3d6bad158e06982467dc18bb6.1650521788.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: 394818c8-eb04-440a-c9aa-08da235f5e47 X-MS-TrafficTypeDiagnostic: AM9PR04MB8100: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: QRBYe4dox4Dj7dSh2In6us4ZQEw2pkiDsFFTrVXmdwgsWXSepwCW+d60gwMW+7WADPRVHScESw7ixKLiSx/IenOigByEaQtxZV+5zuKNGQDmMqGnyR5HkWXQti2hxiGfATEsIKGfcE5yNiWJnyxO0mPWvP+9BucB0eQLaN5QaZ7QdzVbpJB/7SRSIxGi/lRe8XVVnCHzghzc6lPU4phYSvRxx1bR3cpzIQxiAwMziXc2xguxFrqtS9o2UTVDnCLJhj+2GEF2YkkgPEYZAxzZUAU6Dbe84e8Pasp7xLJjaKdEBo/Q/qtkddi5mrI7tdXDlkilAD9wWhB4IsMPiRkPrSiAhJgh5jZyeIvIsVyfpCNWCrmQtzUA9kxtEZzFbayWSkiU4DwSjXgciAv5JcOisJKremxvVIQLl4mRQZ0w+X/S1rSCTR7MTxXtb0CBJdChTbKOaCOtxLiN6/O4hH6d8fA4IpBu6X0NuOpTHXcz2gvcFX2GJIvTwqmoScnqFCjeuBkyjEY4pKMiriXSQip1wM9dqj425hbTEfhmfN1UzC8X3ny2kYwzlaXORI8OIcHE+e4/cn2AC8cWHxVoNJqX8AHmI8S490Bl7//I4hGZtGdxynvOrJ3zR5IvZAVng6rEHY9Z12+WCyzpeVqnRhTWTP2vr5xf8z002YZ8zH70jhE4+wxKeugAfD10tbmRWd++ X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:HE1PR0402MB3497.eurprd04.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230001)(366004)(6666004)(2616005)(86362001)(6512007)(26005)(316002)(6916009)(508600001)(6506007)(6486002)(38100700002)(66946007)(66556008)(107886003)(186003)(83380400001)(66476007)(36756003)(2906002)(4326008)(5660300002)(8936002)(44832011)(8676002)(13296009);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?AGd2j8OI8Fbb2RQMy0RDKERFUdCP4CigSTfTF89kDM9DRqnpsdtY6yoU8xv9?= =?us-ascii?Q?tENgysdcUBzUInn8aQJPatJ6CfzEOz39TsZYoKLpcYVukj8dOulCeOJaFGZZ?= =?us-ascii?Q?zB03DcJ4ej828ef/8ZhZ6JXd2ktkAMxDULVlZZbjhcNxXDwWkcJwmmoY5bwS?= =?us-ascii?Q?nfeG8/tw2BVwwYG3mjhzx0gYAD3vUd98csrOBIEj/j79LMFmON+7prZ8wfHB?= =?us-ascii?Q?Rlz4I++751FppoY+GovEuCTwgl8GkDwM/Jqg9hgI/yfTDKSu4zBYsOAZKcbZ?= =?us-ascii?Q?QwitSAM38mQdbG5BvlHbx52DmAvUVAN+c/ySabE70/qsPvvCBEEPzmja96XG?= =?us-ascii?Q?nh3vt9CQMTJhR2IpUQJsSX4H5RmPr3//IwrsoeEI7o9QzrZ0cWHKshEblA4k?= =?us-ascii?Q?Ie9Mav3jtvyikFofFq5lgD+1iJzRLwPTnMklJ/9OMYfA0iw7qsn8/IZs68PC?= =?us-ascii?Q?9nV80x06YftFsHxRsSu2zmcqfBNhVpcoH8eQhurgiJMkRYpYnPFt4fKv2nj6?= =?us-ascii?Q?/35UASQBNfJ5SdwTS5Y8LWwcd/Tulq1ksl+b2DvakJ7TuHHn9MG3zwLge7MJ?= =?us-ascii?Q?R1EV1Fo9PJa5cTZydl2bhn2z/Zx3LqXuA9fxCimf6fDtllh1BOlFXtbHUETW?= =?us-ascii?Q?1tnoxbCXq/e/fpLU+nMfGm9/WzEDRqjW+yBhXdwdg8e1z3uYjlMYldBYDEFE?= =?us-ascii?Q?X14Dq8BkKB1UkCng79fJzpbbBNGxVuDiGzWmD6o1r96xlx+NYZLlVJKJlX4N?= =?us-ascii?Q?ScH872siN7iujAivqx61cjDdWdSYsUW6nN4p+gzbyBLxg3TJ7PsCYZtxWz1c?= =?us-ascii?Q?YBRlrVCkkYQHOES2JM21yc9vFKVgt7n8N9PsIZm3Owh6/SSTpUTAgnHnm86Y?= =?us-ascii?Q?w/iU34Czzb+qu3TGMWQktRmi2/dAemN2yWu5616hw4lH9IP0Qj7D6L79R+wQ?= =?us-ascii?Q?zo7eHeh8Up6CDbVY+GOjLmHXba9N0SDPae/D5gMjvLhaBT7jMu9Pbnbl8EXV?= =?us-ascii?Q?ffBqPMN+HSnucmb1/b2+omNJifq+4804ttzPZ9ulN2BZkVuX1R8ozj8cxskE?= =?us-ascii?Q?25YIaUSiUKlOzNGfcY639TUMDHI1j6oqmkb1omJfIebnCkqlOJGpX4PddJL/?= =?us-ascii?Q?pXa4yNvtRpY0YtaJA7XafWm32ygb4VQZ8Fo14IdVZXXtrZnwAoGeCq+Hiyen?= =?us-ascii?Q?DeCpBszowsCxuBjxwgj3DQgBnPpbj86/vicIjIxVmO7aUTq+zAaZsHTCKoxq?= =?us-ascii?Q?83V6cS3mXqFumxLfiFTDEciCjj9OVDXDuqFbx91Kh32w/nLVcxFMOk8ARNt6?= =?us-ascii?Q?Lck1/C6diwa0rr3QWUmgBFUaFLF4co8EWocrKWX5OdBZIO7hX4Jl7Zv4MKJC?= =?us-ascii?Q?TcIMJSZAD0OwE+OtvEeW+9IiHoivzRpajuo9Lj1QDUfGKzfga6mD5RMCc55j?= =?us-ascii?Q?iVb4VVRxUEqLVvnEwKr40fJgR0kdIyiGfi0HUNdFttwYbUJlC3YdntSkqiq7?= =?us-ascii?Q?hUD9xAQnav74b6unsk7/bqA6dRHCxQrQM3NdpbELs4ppxtf6/tjjYfzW04tn?= =?us-ascii?Q?10YQgObEUC5U2gH/QH8LN4YfHW89nxo1Mip4fy9l4G7GxkghJr/pllZRgB0o?= =?us-ascii?Q?L70Sb212jdubjpvmJ+xBLT6pJP0K5bK3UH6dWXYi1LOY9ofhR4jNkIum+yFT?= =?us-ascii?Q?lK7cmX6g5QEpHovRS+e8S4544VbO5vtzFfrFrd67R29LNc1wqNE4EO4h53XU?= =?us-ascii?Q?0RX/Ph93z9o150iJK0l061Cx9ExpzjI=3D?= X-OriginatorOrg: suse.com X-MS-Exchange-CrossTenant-Network-Message-Id: 394818c8-eb04-440a-c9aa-08da235f5e47 X-MS-Exchange-CrossTenant-AuthSource: HE1PR0402MB3497.eurprd04.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 21 Apr 2022 06:22:53.7912 (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: UBCMixKpWPxtvFEPmTq0j5BDePRW8+hkArx2NWVAU/i20KnSQP4EsKoe81tOygf8x8d4k3CfyEFj6yIILkZhEg== X-MS-Exchange-Transport-CrossTenantHeadersStamped: AM9PR04MB8100 Content-Type: text/plain; charset="utf-8" This patch defines a new wrapper mptcp_sched_get_subflow(), invoke get_subflow() of msk->sched in it. Use the wrapper instead of using mptcp_subflow_get_send() directly. Signed-off-by: Geliang Tang --- net/mptcp/protocol.c | 9 ++++----- net/mptcp/protocol.h | 11 +++++++++++ 2 files changed, 15 insertions(+), 5 deletions(-) diff --git a/net/mptcp/protocol.c b/net/mptcp/protocol.c index 3a5189b2d9b8..00f65eb71104 100644 --- a/net/mptcp/protocol.c +++ b/net/mptcp/protocol.c @@ -1507,7 +1507,6 @@ static struct sock *mptcp_subflow_get_send(struct mpt= cp_sock *msk) subflow->avg_pacing_rate =3D div_u64((u64)subflow->avg_pacing_rate * wmem= + READ_ONCE(ssk->sk_pacing_rate) * burst, burst + wmem); - msk->last_snd =3D ssk; msk->snd_burst =3D burst; return ssk; } @@ -1567,7 +1566,7 @@ void __mptcp_push_pending(struct sock *sk, unsigned i= nt flags) int ret =3D 0; =20 prev_ssk =3D ssk; - ssk =3D mptcp_subflow_get_send(msk); + ssk =3D mptcp_sched_get_subflow(msk, false); =20 /* First check. If the ssk has changed since * the last round, release prev_ssk @@ -1636,7 +1635,7 @@ static void __mptcp_subflow_push_pending(struct sock = *sk, struct sock *ssk) * check for a different subflow usage only after * spooling the first chunk of data */ - xmit_ssk =3D first ? ssk : mptcp_subflow_get_send(mptcp_sk(sk)); + xmit_ssk =3D first ? ssk : mptcp_sched_get_subflow(mptcp_sk(sk), false); if (!xmit_ssk) goto out; if (xmit_ssk !=3D ssk) { @@ -2481,7 +2480,7 @@ static void __mptcp_retrans(struct sock *sk) mptcp_clean_una_wakeup(sk); =20 /* first check ssk: need to kick "stale" logic */ - ssk =3D mptcp_subflow_get_retrans(msk); + ssk =3D mptcp_sched_get_subflow(msk, true); dfrag =3D mptcp_rtx_head(sk); if (!dfrag) { if (mptcp_data_fin_enabled(msk)) { @@ -3146,7 +3145,7 @@ void __mptcp_check_push(struct sock *sk, struct sock = *ssk) return; =20 if (!sock_owned_by_user(sk)) { - struct sock *xmit_ssk =3D mptcp_subflow_get_send(mptcp_sk(sk)); + struct sock *xmit_ssk =3D mptcp_sched_get_subflow(mptcp_sk(sk), false); =20 if (xmit_ssk =3D=3D ssk) __mptcp_subflow_push_pending(sk, ssk); diff --git a/net/mptcp/protocol.h b/net/mptcp/protocol.h index 427a42e04ae8..f31bc3271bcc 100644 --- a/net/mptcp/protocol.h +++ b/net/mptcp/protocol.h @@ -632,6 +632,17 @@ int mptcp_init_sched(struct mptcp_sock *msk, struct mptcp_sched_ops *sched); void mptcp_release_sched(struct mptcp_sock *msk); =20 +static inline struct sock *mptcp_sched_get_subflow(struct mptcp_sock *msk,= bool reinject) +{ + struct sock *ssk =3D msk->sched ? INDIRECT_CALL_INET_1(msk->sched->get_su= bflow, + mptcp_get_subflow_default, + msk, reinject) : + mptcp_get_subflow_default(msk, reinject); + + msk->last_snd =3D ssk; + return ssk; +} + static inline bool __mptcp_subflow_active(struct mptcp_subflow_context *su= bflow) { struct sock *ssk =3D mptcp_subflow_tcp_sock(subflow); --=20 2.34.1 From nobody Mon Apr 29 16:49:22 2024 Delivered-To: wpasupplicant.patchew@gmail.com Received: by 2002:ac4:a898:0:b0:4b1:af33:c52d with SMTP id z24csp79369pid; Wed, 20 Apr 2022 23:23:09 -0700 (PDT) X-Google-Smtp-Source: ABdhPJzM3LFHWsUrlIrx9awK50Y/aUvimm8WQFd3UIJE+BEVTOX/VTmxFzQqGWNuGN87kr379Ml/ X-Received: by 2002:a17:907:1c1d:b0:6ef:f06c:6fc7 with SMTP id nc29-20020a1709071c1d00b006eff06c6fc7mr8945417ejc.632.1650522188960; Wed, 20 Apr 2022 23:23:08 -0700 (PDT) Return-Path: Received: from ewr.edge.kernel.org (ewr.edge.kernel.org. [2604:1380:1:3600::1]) by mx.google.com with ESMTPS id gh17-20020a170906e09100b006e05b7ccb55si3303815ejb.339.2022.04.20.23.23.08 for (version=TLS1_2 cipher=ECDHE-ECDSA-AES128-GCM-SHA256 bits=128/128); Wed, 20 Apr 2022 23:23:08 -0700 (PDT) Received-SPF: pass (google.com: domain of mptcp+bounces-4824-wpasupplicant.patchew=gmail.com@lists.linux.dev designates 2604:1380:1:3600::1 as permitted sender) client-ip=2604:1380:1:3600::1; Authentication-Results: mx.google.com; dkim=pass header.i=@suse.com header.s=mimecast20200619 header.b=FmjL8jfd; arc=fail (body hash mismatch); spf=pass (google.com: domain of mptcp+bounces-4824-wpasupplicant.patchew=gmail.com@lists.linux.dev designates 2604:1380:1:3600::1 as permitted sender) smtp.mailfrom="mptcp+bounces-4824-wpasupplicant.patchew=gmail.com@lists.linux.dev"; dmarc=pass (p=QUARANTINE sp=QUARANTINE dis=NONE) header.from=suse.com Received: from smtp.subspace.kernel.org (wormhole.subspace.kernel.org [52.25.139.140]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by ewr.edge.kernel.org (Postfix) with ESMTPS id EFAA91C09BB for ; Thu, 21 Apr 2022 06:23:07 +0000 (UTC) Received: from localhost.localdomain (localhost.localdomain [127.0.0.1]) by smtp.subspace.kernel.org (Postfix) with ESMTP id B19131876; Thu, 21 Apr 2022 06:23:06 +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 D8B597A for ; Thu, 21 Apr 2022 06:23:04 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=suse.com; s=mimecast20200619; t=1650522183; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=0hvgizazLSVqB/vatjqRkjg0r7EonKFUfE/VaWeXCr0=; b=FmjL8jfd/ts18XlX3uATwGhZWOn+5SD/s7XSooYaQcx0kutVz+lLSNCDQFflyGeWIk+DnQ lu0925+jAx7O7dGolsRvR8tgVY3wgNruHyBtHtD1P0OhqRHesobOVA/uO8g5+BKwS1gdPg c+aJEztmIE6J1oMBtGyYb5NgMvLb3bE= Received: from EUR05-DB8-obe.outbound.protection.outlook.com (mail-db8eur05lp2112.outbound.protection.outlook.com [104.47.17.112]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id de-mta-7-TtecusQGMBSLfjQQD5aq9w-1; Thu, 21 Apr 2022 08:23:02 +0200 X-MC-Unique: TtecusQGMBSLfjQQD5aq9w-1 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=GN8GlBdq1rwadE7Dzc0ivr/uwb5oAuhSli2enUF1vAC2i2M4IygAyfjo23NMSWz+N9JFFgso/7rduuWMVRBOLf+CkbzGXO+m99x5Rb9SN+uaTaySfPQh+wrgPS36ArpCKe56BFzpuyDyL8z8eV/h+qVuGB22ADo7ZBz6Tf46he5miV1Qm2R9By/sm7ylPkO38OfzjgokkvQIff/uvxYmRTuRnFW+6VDRtoFDXPlAW6jjsHM3729S+eB4D47gmZlg4Du9s/k6qMiR55curUPN/hHVzuBiglPW2Oq3loWbOe9Hc5qoDuGlt85Af1elh66NhzJQ8fAE84YM8GIHKb6q2w== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=i/QGFqUTVH0QlTuFZqXcDHVQX6mvFPq1GybMAx2rAjk=; b=k+MiJdwqSa5igLKHXUoX80FxgdXUz0/8T4l7euQsDp5vBZF8f/ot5KmiDU6bmkA9Ai2nvDaBpKiPRDGNegqAG7e+jc7prePwaa+ClY5YesDxY9cDcJnRk0f47cdWFeLnhJGvEA+PXopWm34jovxTQBRMfnkpYpXA0hHqh+NEq/rHI+9AR4euQQLQp+nZw09I2pLXtsSKHXjJYnDoV0PfrlfFggZ2fIIWEjGaJbrKzIVxirG+Orf1eTnOWUWDlACyPmsU/dW3mad1egA9bFuDyEpFZgslklP+hP7QUuI2T95bPvEPTRiWWQ/qdQz5b9ONfFSxUNB/MrJ+hWRN8JDzHw== 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 AM9PR04MB8100.eurprd04.prod.outlook.com (2603:10a6:20b:3e3::12) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5186.14; Thu, 21 Apr 2022 06:23:01 +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.014; Thu, 21 Apr 2022 06:23:01 +0000 From: Geliang Tang To: mptcp@lists.linux.dev CC: Geliang Tang Subject: [PATCH mptcp-next v13 6/9] mptcp: add bpf_mptcp_sched_ops Date: Thu, 21 Apr 2022 14:22:24 +0800 Message-ID: <3d2648842f4a15f8aae6ba33fb0a769db573c710.1650521788.git.geliang.tang@suse.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: References: Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: HK2PR02CA0213.apcprd02.prod.outlook.com (2603:1096:201:20::25) To HE1PR0402MB3497.eurprd04.prod.outlook.com (2603:10a6:7:83::14) Precedence: bulk X-Mailing-List: mptcp@lists.linux.dev List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: 97b56830-0da3-45c3-bad4-08da235f629e X-MS-TrafficTypeDiagnostic: AM9PR04MB8100: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: magzuvunwcI8pzUSNMYcsFP1CGk/sxDfjLuL3m0L6nA/DXguxNs3pSudMgXy6hkfAO50CcmP8eN9BMRE8bDm5JoC1FM+EexZTAqsh/TUa6wlkau9FqGW1UKJwTB9D86KXeoRl5eb4yqX9KMo1n9Y3K9L8xAEeURg07wOA3lxRueuFZhsdnyhpVRtZMmp9hsE/XEjW4U5p1/ZM9qkEkXdjutH0CTBumbHECAemCd66HXDX5CfmV2ToWaCOFe5y7fHsC88ednsFwdCcJxJLyzdyPk2+jGfDGOdCyV7kYYve2bFMK8LfWSpV0O0eKWeet9coR+NsReEL90zXkn3Eqi7PBwrcKpm0fgCdAsFo1P/LKubXHEor/psG7Ru0UzsWZP0bTLfq/S0pyA9xE60KCLLeWdM9zkf4m41ojojoFBi7hr1tzr+ZyeL8FesA1xiqgNsfbwoIgbTFNlLufYybReRRcdw8VzCowEHl2OBg6CAw3zwnLmDC4FJGWr+Lr+nyK0j0quRV7s1hxk9g7z7w+n737v3/GidONGdAQiRfTegTpRSvqHPvwbWKOfwU1qf0KhARSeqY5w6IFAdNfRa1TrGMxoEcf23Mii7+VIl350A5HWqCySs6QaUeNGqD4qCYUK8ScA0KBGv0NiV6ZkkdvRTwxIy/52GaWsYTjoZu+YRsUfU8VutVIiQPBoZ60Ur4JgFcjQn7fY299gCjNxZjDNXAg== X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:HE1PR0402MB3497.eurprd04.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230001)(366004)(6666004)(2616005)(86362001)(6512007)(26005)(316002)(6916009)(508600001)(6506007)(6486002)(38100700002)(66946007)(66556008)(107886003)(186003)(83380400001)(66476007)(36756003)(2906002)(4326008)(5660300002)(8936002)(44832011)(8676002)(13296009);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?uNkDBvhMwjB4SZP4QRzxFvle4U4oL0/9oGYdCeeyEuReWqb7Hl9vyhV5bi6l?= =?us-ascii?Q?myK/c3VYmdzv7FlwA3BBLhhjA5pAwka+rNpONHwO8vJtZNtDnvm6fkn2ftYH?= =?us-ascii?Q?YBgV0ZsOHtLNgNHMV9Mb8as0k+NmqKfuajOcYgY3yEwj3czWK8isZLxZVtZM?= =?us-ascii?Q?e8fjshpRuxHM5kncjZT3HDSXEirIMnZ3zbV27DQRK1duqvnn5kqf8BTPR6/N?= =?us-ascii?Q?HPCRNEAeYbaKYw7TgaENYNIOJPUTsELDy4KHWQJvubmu+/mWEzuhUtQVvDfG?= =?us-ascii?Q?3yPrDomX/h9vItiXnj6JP3+aekY0psc1uSPziWaL6DswMAKhQFkATNZk5Tb8?= =?us-ascii?Q?gI6gm3tgiT6NzN/e31JR3I7DzdoA34kIt8OGkC2ujo51wimlSXsfmh3SHfmQ?= =?us-ascii?Q?OsTyQAtQLV2dL8lDtl81W1EDZi72BOsTo9TtAQlaLWqMAkOLYIa6JUz9JEBq?= =?us-ascii?Q?BS4J1NpRb3uKoanSj0PDGdSkDXpia/4qZfXc7ufAqzdoCNsJAZIQwTaOGpMq?= =?us-ascii?Q?HzoVvb1FX+xoopVQXE+xUfrU+chttNGuDK4zBrCU3Ch85UInRK8wSI7EudKg?= =?us-ascii?Q?zW2gLbo24vI6X1MEgoc378+lIsGIUmT66hePeZV0gWIo4sEqS7UrZq27P7i1?= =?us-ascii?Q?/rl5jVOlHcwMdDO4a7e/z7HchKB3jWL009BH7Y8CCvr2g9DpHvU8IYUc6OBj?= =?us-ascii?Q?57vPIRY0uGRYM4tEbAW7e2yYb8XahgxzbNKfyTfICwIdRHIWfvZI4CNmiDN0?= =?us-ascii?Q?rjtiJ4Rm3NY5j3tnE33B1MWsqAZ7500pduTB2SYRjsV1/1q/zQVa5nHfdUDD?= =?us-ascii?Q?yuGgy3ZVVPZ/O4uUGzaPNtorG/6C71pzjHpJ3wldN3mGBp6B3nfOGXJFjnBI?= =?us-ascii?Q?ET/Ok2o4Kk+j8bNHPxDIWdeGPi3QECevqdVpb5RYLOMrB7ndesuIzfvXVjJ3?= =?us-ascii?Q?53ZHpNan3M7IRNaC5lLq00eD4itXCe2YzQ4wQhorffF9OKlor10AiiVvuacH?= =?us-ascii?Q?2yDNgCMhXus34qKUVZkM2xrw3idPIOUye5faz+0k2ytBmPWL1euQejeKu2Tf?= =?us-ascii?Q?ZtcxsNcNZ/tYgYMOgFuLFTQcPTha+84KZUayLYKgkUyhBYtTuU19N7kvIb3P?= =?us-ascii?Q?EtXq265XHNapjXfKc3YgnE5ZGjvDfAvaD7eLJZ+AtzKHIpBghmejB0bcpV/Q?= =?us-ascii?Q?3kH3+EAedxQOwqPdURpTlP7vGVeDye5sJmokO3aapzpscUsrV6rcw4WoWmpn?= =?us-ascii?Q?Nu4uTXUkaXf22PwlOH9+6bb2StCkjA16h5yzwHNSjb1IcPEgn84adOuLGKGz?= =?us-ascii?Q?N+/hpwAN3tmdrBB1dno/WtwGKveplTAjLXKhOTk6BjBgvvsyLBC6QA+9R21A?= =?us-ascii?Q?NMCj3SBPMEbeUgV/z+cFJVzYpo/pVV0T8hn1B5J6U6Ntby/LY6GA7/skFJvm?= =?us-ascii?Q?ncO/YfLMWzL28KDRrZrr2ZFQe4r1kOT6e1AEQaas2URzhFwwAwY1vsVZYjax?= =?us-ascii?Q?9SFWvRKTBcS5Glw5qhGJCHMHR91zPQNAAvFSdsp09GrWhEJf6gIZiSGShfGU?= =?us-ascii?Q?1rdbxaVzEli5RYe/SIJe4JFhZrTBJ5xpTZhiR2txY94rxk/0QTlJoAVfBLZR?= =?us-ascii?Q?nQhMPi06PHMo1ggSCNKUxKrwPry49qqNKfSAQe9Y7+XdS0mPT9FGS3qPA4Dm?= =?us-ascii?Q?17cyB/wh7kl4IJwN/MmStSDNQMbY3PuwvVyyoG0Z6+dQS8T0vFTqgHbda6JK?= =?us-ascii?Q?7PQBeXVzweXW5Ot/kV5rkR06iGSyy30=3D?= X-OriginatorOrg: suse.com X-MS-Exchange-CrossTenant-Network-Message-Id: 97b56830-0da3-45c3-bad4-08da235f629e X-MS-Exchange-CrossTenant-AuthSource: HE1PR0402MB3497.eurprd04.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 21 Apr 2022 06:23:01.2906 (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: HK4QrfImUTxIxMvowYTZ9yOGW+I0MNAO2G2HS2FVLJu4Alti0F2/ejoJNfUIVBh2QPcoeICUzpY6ePJUGFOirw== X-MS-Exchange-Transport-CrossTenantHeadersStamped: AM9PR04MB8100 Content-Type: text/plain; charset="utf-8" This patch implements a new struct bpf_struct_ops, bpf_mptcp_sched_ops. Register and unregister the bpf scheduler in .reg and .unreg. This MPTCP BPF scheduler implementation is similar to BPF TCP CC. And net/ipv4/bpf_tcp_ca.c is a frame of reference for this patch. Signed-off-by: Geliang Tang --- kernel/bpf/bpf_struct_ops_types.h | 4 + net/mptcp/bpf.c | 129 ++++++++++++++++++++++++++++++ 2 files changed, 133 insertions(+) diff --git a/kernel/bpf/bpf_struct_ops_types.h b/kernel/bpf/bpf_struct_ops_= types.h index 5678a9ddf817..5a6b0c0d8d3d 100644 --- a/kernel/bpf/bpf_struct_ops_types.h +++ b/kernel/bpf/bpf_struct_ops_types.h @@ -8,5 +8,9 @@ BPF_STRUCT_OPS_TYPE(bpf_dummy_ops) #ifdef CONFIG_INET #include BPF_STRUCT_OPS_TYPE(tcp_congestion_ops) +#ifdef CONFIG_MPTCP +#include +BPF_STRUCT_OPS_TYPE(mptcp_sched_ops) +#endif #endif #endif diff --git a/net/mptcp/bpf.c b/net/mptcp/bpf.c index 535602ba2582..e849fc3fb6c5 100644 --- a/net/mptcp/bpf.c +++ b/net/mptcp/bpf.c @@ -10,8 +10,137 @@ #define pr_fmt(fmt) "MPTCP: " fmt =20 #include +#include +#include +#include #include "protocol.h" =20 +extern struct bpf_struct_ops bpf_mptcp_sched_ops; +extern struct btf *btf_vmlinux; + +static u32 optional_ops[] =3D { + offsetof(struct mptcp_sched_ops, init), + offsetof(struct mptcp_sched_ops, release), + offsetof(struct mptcp_sched_ops, get_subflow), +}; + +static const struct bpf_func_proto * +bpf_mptcp_sched_get_func_proto(enum bpf_func_id func_id, + const struct bpf_prog *prog) +{ + return bpf_base_func_proto(func_id); +} + +static int bpf_mptcp_sched_btf_struct_access(struct bpf_verifier_log *log, + const struct btf *btf, + const struct btf_type *t, int off, + int size, enum bpf_access_type atype, + u32 *next_btf_id, + enum bpf_type_flag *flag) +{ + const struct btf_type *state; + u32 type_id; + + if (atype =3D=3D BPF_READ) + return btf_struct_access(log, btf, t, off, size, atype, + next_btf_id, flag); + + type_id =3D btf_find_by_name_kind(btf, "mptcp_sock", BTF_KIND_STRUCT); + if (type_id < 0) + return -EINVAL; + + state =3D btf_type_by_id(btf, type_id); + if (t !=3D state) { + bpf_log(log, "only read is supported\n"); + return -EACCES; + } + + return NOT_INIT; +} + +static const struct bpf_verifier_ops bpf_mptcp_sched_verifier_ops =3D { + .get_func_proto =3D bpf_mptcp_sched_get_func_proto, + .is_valid_access =3D bpf_tracing_btf_ctx_access, + .btf_struct_access =3D bpf_mptcp_sched_btf_struct_access, +}; + +static int bpf_mptcp_sched_reg(void *kdata) +{ + return mptcp_register_scheduler(kdata); +} + +static void bpf_mptcp_sched_unreg(void *kdata) +{ + mptcp_unregister_scheduler(kdata); +} + +static int bpf_mptcp_sched_check_member(const struct btf_type *t, + const struct btf_member *member) +{ + return 0; +} + +static bool is_optional(u32 member_offset) +{ + unsigned int i; + + for (i =3D 0; i < ARRAY_SIZE(optional_ops); i++) { + if (member_offset =3D=3D optional_ops[i]) + return true; + } + + return false; +} + +static int bpf_mptcp_sched_init_member(const struct btf_type *t, + const struct btf_member *member, + void *kdata, const void *udata) +{ + const struct mptcp_sched_ops *usched; + struct mptcp_sched_ops *sched; + int prog_fd; + u32 moff; + + usched =3D (const struct mptcp_sched_ops *)udata; + sched =3D (struct mptcp_sched_ops *)kdata; + + moff =3D __btf_member_bit_offset(t, member) / 8; + switch (moff) { + case offsetof(struct mptcp_sched_ops, name): + if (bpf_obj_name_cpy(sched->name, usched->name, + sizeof(sched->name)) <=3D 0) + return -EINVAL; + if (mptcp_sched_find(usched->name)) + return -EEXIST; + return 1; + } + + if (!btf_type_resolve_func_ptr(btf_vmlinux, member->type, NULL)) + return 0; + + /* Ensure bpf_prog is provided for compulsory func ptr */ + prog_fd =3D (int)(*(unsigned long *)(udata + moff)); + if (!prog_fd && !is_optional(moff)) + return -EINVAL; + + return 0; +} + +static int bpf_mptcp_sched_init(struct btf *btf) +{ + return 0; +} + +struct bpf_struct_ops bpf_mptcp_sched_ops =3D { + .verifier_ops =3D &bpf_mptcp_sched_verifier_ops, + .reg =3D bpf_mptcp_sched_reg, + .unreg =3D bpf_mptcp_sched_unreg, + .check_member =3D bpf_mptcp_sched_check_member, + .init_member =3D bpf_mptcp_sched_init_member, + .init =3D bpf_mptcp_sched_init, + .name =3D "mptcp_sched_ops", +}; + struct mptcp_sock *bpf_mptcp_sock_from_subflow(struct sock *sk) { if (sk && sk_fullsock(sk) && sk->sk_protocol =3D=3D IPPROTO_TCP && sk_is_= mptcp(sk)) --=20 2.34.1 From nobody Mon Apr 29 16:49:22 2024 Delivered-To: wpasupplicant.patchew@gmail.com Received: by 2002:ac4:a898:0:b0:4b1:af33:c52d with SMTP id z24csp79452pid; Wed, 20 Apr 2022 23:23:26 -0700 (PDT) X-Google-Smtp-Source: ABdhPJwEyyO9A+UXROVOJvw8li/s/4pAsywjIZ+9/dZZ//ahE4q20vAss2Ho1UUln5CFO6kxgRBI X-Received: by 2002:ac2:48a2:0:b0:471:81a9:e896 with SMTP id u2-20020ac248a2000000b0047181a9e896mr14343313lfg.636.1650522206361; Wed, 20 Apr 2022 23:23:26 -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 l8-20020a056512332800b004668a0849a0si3925714lfe.517.2022.04.20.23.23.25 for (version=TLS1_2 cipher=ECDHE-ECDSA-AES128-GCM-SHA256 bits=128/128); Wed, 20 Apr 2022 23:23:26 -0700 (PDT) Received-SPF: pass (google.com: domain of mptcp+bounces-4825-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="Sy/itiQw"; arc=fail (body hash mismatch); spf=pass (google.com: domain of mptcp+bounces-4825-wpasupplicant.patchew=gmail.com@lists.linux.dev designates 2604:1380:4040:4f00::1 as permitted sender) smtp.mailfrom="mptcp+bounces-4825-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 78C0F2E0CBF for ; Thu, 21 Apr 2022 06:23:23 +0000 (UTC) Received: from localhost.localdomain (localhost.localdomain [127.0.0.1]) by smtp.subspace.kernel.org (Postfix) with ESMTP id 0BA611FA1; Thu, 21 Apr 2022 06:23:22 +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 769961876 for ; Thu, 21 Apr 2022 06:23:20 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=suse.com; s=mimecast20200619; t=1650522198; 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=9T20V3kb15iW9g7EhammtTDahxNd+9L46X4RSowSFu4=; b=Sy/itiQwfZ0mDIDxQrlPHn4hdCkhT5otnreEDnaPPHcwW0Wk08OZ4lMz+Hu8ICtF5Df7og Yo+ZfQFPSacnqc1cHr4ScoNXcnx0q9+j9YOpLKCS9yfrHFK2Bm2CbxfGgPiiop3/EchX7O n/UDVE9qD3mWrSdlhHwZHq8qM3J50gk= Received: from EUR05-DB8-obe.outbound.protection.outlook.com (mail-db8eur05lp2106.outbound.protection.outlook.com [104.47.17.106]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id de-mta-29-LSlx6S3SMQWgCHi5Ge9PMw-1; Thu, 21 Apr 2022 08:23:10 +0200 X-MC-Unique: LSlx6S3SMQWgCHi5Ge9PMw-1 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=ZYRzOPi5Bo56LndKsV2FaazNwS9lCZkPRTPI7PthT+Vf6+Mhgb54THySUWVhSY56INiQsXy5dTNvs5ciGqIbNebWFbFCKdxq8XRZpgGOVm7lR3bE1KoxaeGAMM9kGV2yfylEzGEv4o9RC2Hz36+O2hEmXSHPPHJlq1IcqMUF6j86Jdt+fse5lEJ87vqS6LdBl03XDll8RzDSd+48MiWjyiDcT34YDbUbFeE9TzESVw6YA/irGFotHrSFLdBWSoszW5jjKBFokDTcANWCcF1XgsUg2A2IGo/xINhZ+LE4zB4XxZ4sb/613pvw1zQ2vpg/LmgpqWucHEZRbhylBx61ng== 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=J1wrBVY8g/CbefO7X86Mo8vAkDC4xsNdeQ2pE5FyG4U=; b=M/fjQ1II/3yhEXJanNRYmcHpysvIIyMoY5zeA1l32iCiSfyCn21aNzAVUgyqfp7Gp2EdX47JgkTRWtAKARS4BYYXBDwsA/EaNh+tnFksZX5Vy21kbQyt0QkbiKpihGTCqG6Z1IwWOPAiKy7rIalT4/csuxX/Dn4IQEOTfeChf/QWAn6Q8Riseyj33iGRCgK8woSDrn5We/AVHZ3f2eQUWZqGfzQHd0SpzBZkcBUdiWUKQ5e7YPmHRiZb+aFHXozedxA0k+ueVMKYeK9UNXPsKm2/s+4Njk6nkcZdVqhvEpbK1Nf3LL3fyrGBlYW1b0J5HndEfFv3V8N562+Z5pX8rA== 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 AM9PR04MB8100.eurprd04.prod.outlook.com (2603:10a6:20b:3e3::12) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5186.14; Thu, 21 Apr 2022 06:23:09 +0000 Received: from HE1PR0402MB3497.eurprd04.prod.outlook.com ([fe80::9974:fd5e:e3c0:14dc]) by HE1PR0402MB3497.eurprd04.prod.outlook.com ([fe80::9974:fd5e:e3c0:14dc%3]) with mapi id 15.20.5186.014; Thu, 21 Apr 2022 06:23:09 +0000 From: Geliang Tang To: mptcp@lists.linux.dev CC: Geliang Tang Subject: [PATCH mptcp-next v13 7/9] mptcp: add call_me_again flag Date: Thu, 21 Apr 2022 14:22:25 +0800 Message-ID: <11f597e62ca79b4c5c1d6256b5eb5233c1bdfba1.1650521788.git.geliang.tang@suse.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: References: Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: HK2PR02CA0170.apcprd02.prod.outlook.com (2603:1096:201:1f::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: 151c1305-4f6f-4972-57f6-08da235f6744 X-MS-TrafficTypeDiagnostic: AM9PR04MB8100: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: /kHTIe6bzzDAdvr6HZeoJQZKY9qokWokE6r7DZnjWya8mABI4nI7s/38ZIGqJh0AQXpwZ09atXlyhIGtGnz2V2dn8bTHfrgJoMDhVjZWsLYCmXgL/P3+bqzcbqCRNXyJOwOoAR+HpWo2/EbmzhxS4PVzgVkG7qyvQNLkWFNWFy+Sv+Mi9YQlwlDnkDW0WN7a6w9yNoiEVg2NsG2zn3sDxSd4h4/3O46uB835AQp4syveXhkWDba1Jh58ycd6OUJE3vIYmijNhYtOpqFRhEJZBnVX4nfInK6Y/YM0Px+xteIMrykhK4i5W2vFywYffhrCJF4P82MbQ5ZwFU7DbQroRULnbyBxu7omLt6f40MhIAr0iNhR8i87DbL3VCgdJhz3WmwyTet/Xl9QnMYGn/9Hd+Sm7YAUE4FWyGKnye+O3UGDlEy3vMm2u7+mv7yDF11syfOtE08Ex3cy0XWxzGbGszVUuQDVZq3DZNjdWm+QqYHMgRjk+GejpsEnOunmWOHR3CZSupA7dSTeW0l/Zy/EnAqnWh7lXgdLsPA2mcnkVTBDZE1R8lffYbz6Wye87cUKLcMmTM5R73Gy3hzMS3cTUpGHdfrXN53Uti17WnFyzD9y5FyOoUJuBgkTDFyVTosuQxfr/QpF5w23u+5LH3SdkYycTCzYwuv/ArkqmqnqP1GN2sWFa6/oqF0O2rY9HoxI3wkE3SJMv3NQGIrmURZuAA== X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:HE1PR0402MB3497.eurprd04.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230001)(366004)(6666004)(2616005)(86362001)(6512007)(26005)(316002)(6916009)(508600001)(6506007)(6486002)(38100700002)(66946007)(66556008)(107886003)(186003)(83380400001)(66476007)(36756003)(2906002)(4326008)(5660300002)(8936002)(44832011)(8676002)(13296009);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?ztI6In22OM2qKU+K/fVUsJJWyGlBgGT7Sg9W/pRmUC2rvRtwrvbW6qC1FeXS?= =?us-ascii?Q?gVtGxoulGAuRIV0rDUUgdGihajLsdAMCaPLuwvb+fNzAa/Deb3amVX7AYadQ?= =?us-ascii?Q?4LbAQ9F9nu0Btaw5DJeubGu+rDi1o2bHacSlR5yAnimKNt4MHoM+hAstBq5T?= =?us-ascii?Q?3/9N691kKKmNG+wMvV9yP4RX8ASQUOU+nB/3Ov3zkN9erx/R23avpqg/EHDR?= =?us-ascii?Q?ylh3PHZMwk7/wPR2SXV+/ruE6mET13KkqsWmAGWkFgUfX2MbBx7htIoSvRlw?= =?us-ascii?Q?P/yDjtjtCep1eTIR+7OirawDbkZkfLlA6v9aRFkoBt4DGpj37ZvT8NGl8w61?= =?us-ascii?Q?jlokC8BXHc7ci911jBarD/7aBbAFCdijoPkASNIaHEEH+LWCVrgVf/iI4BQ8?= =?us-ascii?Q?Sz3zisjOROS/ezbg0d6zmvwO1JpA7xqi6nGYzz5604ReNmwn220yPd5XYCdS?= =?us-ascii?Q?X24wc3LK2ufh2/v/3GFNGBUlr+BW61TwmFJrpSiCRemBv6fC2mXqMQ3gLB6m?= =?us-ascii?Q?32dncwbUSMHfMH7J3tp4ofQLwEshB3GCRF4TBC8k4mA9wIQatArT0/eosEIs?= =?us-ascii?Q?0wqFtn4lXfGV2PqiyoYoMl09hPvaHE2B2sdPYswvpA8TeiaGwwr3LZRDKn6h?= =?us-ascii?Q?nhs0TusJEecWvOJi8WwnfOAkMrA52ZidKZtUzelstUeFQH8Yiiq8+jy2hrkk?= =?us-ascii?Q?1h+8HegkAFjSid5SvcNwN2xG/EDy0vzxu3ZgpSZDvAn+8lF8lpDOybplsVKc?= =?us-ascii?Q?PYi4NSVx+cv5z3qp6iIbP11SQXsmgsG49yeAxYrL5npsK9E1wS/5Q8nm43BT?= =?us-ascii?Q?705tbyvho/RN30V7S2payg7SSe7VAoIcxodg44mGeVgfS+SrYixdDB4EW2iJ?= =?us-ascii?Q?2ISrQ9OvQlkNR154Ek+HQ1hVfZltPrloGS+8XF+9zhPOCQ6C8x9MKq4vjIvm?= =?us-ascii?Q?pd40OpTkMY1ca6u7n0hhJZqOhsHyddkPwWkwOAFaFUOvL51nNggl1IXM52bh?= =?us-ascii?Q?O2G0a20HpLIWDCSyvRbH93COcBu2ARETNP41WN1YwZYrQT8eruluZTuKYrMR?= =?us-ascii?Q?m3i4+E8xU09rZPjEhNRr8Cr8h7K08wvN8cCIIXxcOfwnh9fNNGhWg2QabNcK?= =?us-ascii?Q?b6cJAgBtRboUqENq1DwypiOVvBnWp91YszL62pYW1ar28LfoCfTE6jy3Cw46?= =?us-ascii?Q?ODKQQ5f8A7Sptu4qWehYDZPyjcuFj3IpZq/M0Kn79TMZbDLh6kZPH3m/OYm0?= =?us-ascii?Q?VCVLIQlUeZYPqQ7jUNfE/GKMS3zMmf5SfgrQxSKe2ATZltAXcu8IYx04M93B?= =?us-ascii?Q?qLqFIhNyBRI/CR5mjGxGVCPC06DMaQDZybv9BsDh+ilS4TrDVnLMJhEkWM8R?= =?us-ascii?Q?F1Ca7dbpSZW34D/o5jF8Ej93ripNK6EKqOXMOgPeCC8ADWjdh2jb9NjTS9Mm?= =?us-ascii?Q?yR794GDLON8uxFF1b6HQ7uYnU00EpmoM7Vr0Ot47PIPUDDgO0pJF8sJNoStd?= =?us-ascii?Q?2uuNx2czXVgq7uHc8hIlPDQppvknLtE2DD8KhZUeGhS12C8jTW2ft6cV0y76?= =?us-ascii?Q?kGoRh+RsCuX+GFbIPOM4IKZs7ll1s8glb7Mg568gcAzyREXwuFGul7+y/kxe?= =?us-ascii?Q?+UBpEsxlIrNDVeVfXKYYic9kU75BXZcBwazif5arGLH/uTv6Xstcf6AvMnug?= =?us-ascii?Q?apmxZbR28uVRT5FKf6MuuutVAU/186DWJJLpx9LAb42UmdJTNx3dM1SYT92N?= =?us-ascii?Q?YKmnefbxj+LeKzl8cdM3IzY0rF+w9Us=3D?= X-OriginatorOrg: suse.com X-MS-Exchange-CrossTenant-Network-Message-Id: 151c1305-4f6f-4972-57f6-08da235f6744 X-MS-Exchange-CrossTenant-AuthSource: HE1PR0402MB3497.eurprd04.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 21 Apr 2022 06:23:09.0868 (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: fGSaKI8DUa5ny6OTi8gQq9clIY0j+jrkuwI4bio0r5wox1vMbGUaq1dp5PbrRXQQOXVQV/YExoMpVfnY3UzquQ== X-MS-Exchange-Transport-CrossTenantHeadersStamped: AM9PR04MB8100 Content-Type: text/plain; charset="utf-8" For supporting a "redundant" packet scheduler in the future, this patch adds a flag of struct mptcp_sock named call_me_again to indicate that get_subflow() function needs to be called again. Export it in bpf_mptcp_helpers.h, and add BPF write access to it. Signed-off-by: Geliang Tang --- net/mptcp/bpf.c | 16 ++++++++++++++++ net/mptcp/protocol.h | 1 + net/mptcp/sched.c | 1 + tools/testing/selftests/bpf/bpf_mptcp_helpers.h | 1 + 4 files changed, 19 insertions(+) diff --git a/net/mptcp/bpf.c b/net/mptcp/bpf.c index e849fc3fb6c5..1611dbe63eb2 100644 --- a/net/mptcp/bpf.c +++ b/net/mptcp/bpf.c @@ -40,6 +40,7 @@ static int bpf_mptcp_sched_btf_struct_access(struct bpf_v= erifier_log *log, { const struct btf_type *state; u32 type_id; + size_t end; =20 if (atype =3D=3D BPF_READ) return btf_struct_access(log, btf, t, off, size, atype, @@ -55,6 +56,21 @@ static int bpf_mptcp_sched_btf_struct_access(struct bpf_= verifier_log *log, return -EACCES; } =20 + switch (off) { + case offsetofend(struct mptcp_sock, sched): + end =3D offsetofend(struct mptcp_sock, sched) + sizeof(u8); + break; + default: + bpf_log(log, "no write support to mptcp_sock at off %d\n", off); + return -EACCES; + } + + if (off + size > end) { + bpf_log(log, "access beyond mptcp_sock at off %u size %u ended at %zu", + off, size, end); + return -EACCES; + } + return NOT_INIT; } =20 diff --git a/net/mptcp/protocol.h b/net/mptcp/protocol.h index f31bc3271bcc..13c6ad5fbade 100644 --- a/net/mptcp/protocol.h +++ b/net/mptcp/protocol.h @@ -299,6 +299,7 @@ struct mptcp_sock { struct sock *first; struct mptcp_pm_data pm; struct mptcp_sched_ops *sched; + u8 call_me_again:1; struct { u32 space; /* bytes copied in last measurement window */ u32 copied; /* bytes copied in this measurement window */ diff --git a/net/mptcp/sched.c b/net/mptcp/sched.c index 8025dc51fbe9..05ab45505f88 100644 --- a/net/mptcp/sched.c +++ b/net/mptcp/sched.c @@ -83,6 +83,7 @@ int mptcp_init_sched(struct mptcp_sock *msk, msk->sched =3D sched_init; if (msk->sched->init) msk->sched->init(msk); + msk->call_me_again =3D 0; =20 pr_debug("sched=3D%s", msk->sched->name); =20 diff --git a/tools/testing/selftests/bpf/bpf_mptcp_helpers.h b/tools/testin= g/selftests/bpf/bpf_mptcp_helpers.h index 81a9c5d91aae..dacee63455f5 100644 --- a/tools/testing/selftests/bpf/bpf_mptcp_helpers.h +++ b/tools/testing/selftests/bpf/bpf_mptcp_helpers.h @@ -24,6 +24,7 @@ struct mptcp_sock { __u32 token; struct sock *first; struct mptcp_sched_ops *sched; + __u8 call_me_again:1; char ca_name[TCP_CA_NAME_MAX]; } __attribute__((preserve_access_index)); =20 --=20 2.34.1 From nobody Mon Apr 29 16:49:22 2024 Delivered-To: wpasupplicant.patchew@gmail.com Received: by 2002:ac4:a898:0:b0:4b1:af33:c52d with SMTP id z24csp79454pid; Wed, 20 Apr 2022 23:23:26 -0700 (PDT) X-Google-Smtp-Source: ABdhPJxIeDpMZSvYCKI4/2lHEvL04lPtphwbcRTmyiwM95kHm3jgaDonv7IIJvcIAAY2OwqeCl5d X-Received: by 2002:a05:651c:4cb:b0:24d:d8fd:c9ca with SMTP id e11-20020a05651c04cb00b0024dd8fdc9camr4234236lji.279.1650522206534; Wed, 20 Apr 2022 23:23:26 -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 j1-20020a056512398100b0046b824d205fsi3655307lfu.610.2022.04.20.23.23.26 for (version=TLS1_2 cipher=ECDHE-ECDSA-AES128-GCM-SHA256 bits=128/128); Wed, 20 Apr 2022 23:23:26 -0700 (PDT) Received-SPF: pass (google.com: domain of mptcp+bounces-4826-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=Y68dyN76; arc=fail (body hash mismatch); spf=pass (google.com: domain of mptcp+bounces-4826-wpasupplicant.patchew=gmail.com@lists.linux.dev designates 139.178.84.19 as permitted sender) smtp.mailfrom="mptcp+bounces-4826-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 BB2732E0CD6 for ; Thu, 21 Apr 2022 06:23:24 +0000 (UTC) Received: from localhost.localdomain (localhost.localdomain [127.0.0.1]) by smtp.subspace.kernel.org (Postfix) with ESMTP id 2DCF01FA2; Thu, 21 Apr 2022 06:23: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 0E58A7A for ; Thu, 21 Apr 2022 06:23:19 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=suse.com; s=mimecast20200619; t=1650522198; 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=zaRqdn7t8koqVA50UUmWO7Yn7NKpzbiXKACroSGfyrk=; b=Y68dyN76oupnkA13eHZu8ssMWG//o3lnQOceH/6ba30u2w8ns/Bk228gx5q+kt3mBXcGdD GNnHnhaJXihflR3tNJOmG82cdeMfiwDyfV3/AslYn/SsZb5M48UwPQk+dZ9sWREPEC124Y 23NZArVaheqRnc98GTSm46iZcK0eNTY= Received: from EUR05-DB8-obe.outbound.protection.outlook.com (mail-db8eur05lp2108.outbound.protection.outlook.com [104.47.17.108]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id de-mta-41-uLLUBaP7P_-XcY6CnYBy3Q-1; Thu, 21 Apr 2022 08:23:17 +0200 X-MC-Unique: uLLUBaP7P_-XcY6CnYBy3Q-1 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=fCiJ4F7D7jrdZoExZERQcf7bWmz2BbrN/PHlUXJuDtmHXRRYS9xva4Y94hDQ1C5p2XeRnf37MTRQKxVaxwddaMJv0L78/dNWfEPNdo1uzh7RWORgeIBH9nDQlXJNez5vbAkblGg7V2YL85SJ5g4cfqtUeCh/MwLk6VfPZBia0GIC2rOqhCsAr+PtYNUliB37L8mjBEVyqXEnv0T+FTbnj0ddI9G7Zmy8jnwwakwfoHHZUeJrR84Z4xBknAwVtEl/v4sg8O3vrTeAPOSR5vE2DixMdoscr26Dxo4IhSIjLoTdA0p2FCP1W/FTO0koE9nTpD0uIJ/nxn5hn4oHEzn1HQ== 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=6UmstmiOK4CbQz80u994PaP9FxNe9yNoi41BDRXmkhA=; b=Ew/MXL2600EEEjrx8R0KvAr8ttm9BXRk1H78TFP1FqPI0ujygD08VcpJvKx8nP+Gd6D3R1NkoEVhVYzg1YVMdyLIaiwccHSqyJP8PiuEgPjyINKJqbOCuLXUGKOC+pobUgBpOLjoYHsV/GCffF79U9ythFCefn/xMwFl8tGf3ar4H+aqLOhopaPu/HTEuST81GYyoL08HPineaQu2ixee73fLJ3jc81NUTVQgeuN0Vqws2S/LA12sIkDrCnGDLdt9u0WqOguzlr7y5v7/iXjGRuMaRLBBJp9GgpQ4gpzDJIzSNfBdMQuRJLEsggZZmpYjVIMF2l3izJywxSHXDojmQ== 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 AM9PR04MB8100.eurprd04.prod.outlook.com (2603:10a6:20b:3e3::12) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5186.14; Thu, 21 Apr 2022 06:23:16 +0000 Received: from HE1PR0402MB3497.eurprd04.prod.outlook.com ([fe80::9974:fd5e:e3c0:14dc]) by HE1PR0402MB3497.eurprd04.prod.outlook.com ([fe80::9974:fd5e:e3c0:14dc%3]) with mapi id 15.20.5186.014; Thu, 21 Apr 2022 06:23:16 +0000 From: Geliang Tang To: mptcp@lists.linux.dev CC: Geliang Tang Subject: [PATCH mptcp-next v13 8/9] selftests: bpf: add bpf_first scheduler Date: Thu, 21 Apr 2022 14:22:26 +0800 Message-ID: <6de7223645d341ad58053cb3328ca6801a4dd8fd.1650521788.git.geliang.tang@suse.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: References: Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: HK2PR04CA0076.apcprd04.prod.outlook.com (2603:1096:202:15::20) To HE1PR0402MB3497.eurprd04.prod.outlook.com (2603:10a6:7:83::14) Precedence: bulk X-Mailing-List: mptcp@lists.linux.dev List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: b1ea9aed-b122-47ff-a94c-08da235f6bbc X-MS-TrafficTypeDiagnostic: AM9PR04MB8100: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: SlgJQbH0TVOsz93I/hlPr7uAvN5bExQiVNaQEbTTbTJYd8OPA6soAFEwrCgXXQZbE5S6zC/PY/BkxCt7ujjQZJudR8tCoElQpWyg6hBgsVmv6KGOyGKGEaQfRh0DAhGbLNuET6L9Lwd6VhKtWz78bPrOoTfBXxE9eNNpyjkJ/LSDaBXRCP2CKExmOBxGQmcEqmJTs5PImvoeeTDRgjzP6/LsZBY1yRvy5my/LqfE4/8/WyPNKBHATsp3v7dllTvm2WnZagC+iAKeCErgqdFCaOo9V+HyK8MPtsq3uiHMyapxc556ZPVruO0jakZxnQvkLcHBCLiiZOaR04KBkumWYL/51jneBV/K9r2UQgKzaCxvHAyqIjd0nkTWbV40fwXnZyHbjT3GpqYuPJKVGUr6biEFuXqqi+jSIZKVcAHTKtjsb6j874R/V/U7rIkWbOxl+Xjdx+klUYVSieaa84vp3rM6UtuCJtE2bje7DmVPdgr3w/2PlZr9KyJr/NLVSZmN9Hi8/Z+diVsQTMA7SEdHT+iouYGo/5f6zKYAKzLcjov6oIk31ccF/oYqQj1Vu3kFrGBvuI1K7GnVlgC88azGfr9+pc0MEhGQR20yb0eesPuq1RUFVhKhEgiRDYnaJ/1+d2gjYOjszrv4D39cLGoA021jXb4vOjRpCTvIWK5aTfaCX1PkxaQE0HN3LHh62MuRz1G0rkYw84dKk1aEhFJtbg== X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:HE1PR0402MB3497.eurprd04.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230001)(366004)(6666004)(2616005)(86362001)(6512007)(26005)(316002)(6916009)(508600001)(6506007)(6486002)(38100700002)(66946007)(66556008)(107886003)(186003)(66476007)(36756003)(2906002)(4326008)(5660300002)(8936002)(44832011)(8676002)(13296009);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?rDEwk/DuWHX/NOHgyOuojPASEK4Nt7uS90rJGliZMB3/6qj8m/bb5E5oVmWu?= =?us-ascii?Q?B8ht8GjXgGtqalXDHn763pmFaFYIhUUhC+siynHMM3Zf/gx8yyXHCycLAx2L?= =?us-ascii?Q?x3qZTpv2dM/lNFb7UKRd8/JnthSf47Rdp8r3ndy31p1S6R/4d4l2cOeSaUbY?= =?us-ascii?Q?37/pIuCMeko7i4jgbO4Q+FXqbor4NVks5YWWHx19Y9YD/jSJuyD0d1Tl/l0j?= =?us-ascii?Q?628iDJMBjc/+Y0Q9kIfqigzyLZZGvUdi5iISnBrC6BTgugX1OWR4I390OcLX?= =?us-ascii?Q?55sTh7i1uZLVEFZBIzAXhnVARGIzsIHGwsnlFuJiQrakP8JPnfBatA5UeCjs?= =?us-ascii?Q?RNwQtz3WA2M+MpqMM1NaaCZJEbfY438Jxc89G9aySoqO+HNlOtrY1SpMA9QR?= =?us-ascii?Q?pjVpqhboO4wVI7CcThT9MOhTIAaurflfqv8SSuGXoElX887f97chjONp7+sL?= =?us-ascii?Q?dadeVrw84drZsLW8Wq5KKSUcoAXn/nZLRyixyq1Za8/nkyq8IP/3SIBikq+3?= =?us-ascii?Q?sm9NQU5A9fqemVa7xrWCms4E31JTRWS6KecTeA/99TJVrm+qO/WsPfSzl6Ex?= =?us-ascii?Q?BbHkEeAzlgDUHlr8zHswW7sFG/vwKpNIOLMwd1gPxO9FspWwBK7+zhwl6zbx?= =?us-ascii?Q?yklZ+atSAcXiuKYTiGmwnOYerbDTxFxKzA77XGaATwqPI0oqnywp/wqeoK4m?= =?us-ascii?Q?ZoeVltKdCZ1dmAhSQIJT87alPlHerAS5jl7mlvagIziaAoLzOe1hwJqKk4QR?= =?us-ascii?Q?ksEVB8o63av+34AuwfpERjq5YHRKD1McCd/sM1XXf68Z4vjJX7miU0uXQnAz?= =?us-ascii?Q?om/6XpOKPOw6P6/q+omw/kymkiMn2JfHcL/tZ897hG4XYIQSFMqkRLNbj1JK?= =?us-ascii?Q?sS+ClBpnykz2ljHZPaGNl2To1D9dsTmb4+UVaDTPZIIsjglsfkcVcE6ZAH45?= =?us-ascii?Q?IU6Wt8p1Ol/H8Etf7dX0yyONS9L6Ps/z/u8GxGAS7BFpuGgVG0nIg8auaz0R?= =?us-ascii?Q?douAXRnD32q7s2ZUq3bjrjJT00eRRbl2ecCteHhoIgJCz5KrF8o102/8lwAE?= =?us-ascii?Q?//h/w4P8gqEPJSA4AdquFp+DVpNoBqd1c3qtcyCJyD83Aw0yQh2sqkLSwH9x?= =?us-ascii?Q?zgt6TUSGue1yhAAws2RvURQiC6Eq5wHZPVq6qBkI0308r+wfC3HFGJ21W7Qj?= =?us-ascii?Q?elxJ35hSX1rQ+6NXHQeeIiet+HbhJcewMHSt3zS88mp1QSFwk1tlKBYxsVQZ?= =?us-ascii?Q?XXQVUMDsnP9bcOzcT1Cy5EQ6CXSJxNDFbwk8N1PDXXTG6TspA5LkavgUZRQr?= =?us-ascii?Q?rG6ZY9ub5Y0Oo2CH4wAaJhzbGdQHL10Sf9+I7JA4Jduw936AP80xsl5HFrQu?= =?us-ascii?Q?QW8XubWdPUj0aMufXkYD7s1qPSeMgBpaOkHZRdOuOn5LKs7FrMT0P2SOeHX7?= =?us-ascii?Q?ceyqYclBhQG0kI5Pc5r5QucUaMwqVKi6DoNE7Oh/AykndtIUsbR5v8FLZRkg?= =?us-ascii?Q?vmOIOvc1iJsQrXvvQOfx9sQR/U0z3sqVwya2ySdp9ehG2jbvhmybe+PDvZeD?= =?us-ascii?Q?Sm2peeDNIwJkdRR50P92C9VIXedXenJ6kob0z9Z+nK0X4owKHpsl/+4dlb6n?= =?us-ascii?Q?8nia8P3kE/8uuw0CwJewE9BFsysoBpBNxmJtXRfDVvdQW2PMUpZUDIEH0nuX?= =?us-ascii?Q?8pq2HDvb5kEisgMGc33/HXyFGzP08onQe1PxETzE9/cexBR3EbuMF67iISeO?= =?us-ascii?Q?m44fjqJ6AaBu3MaX4uuoy/3Gj4v9XA8=3D?= X-OriginatorOrg: suse.com X-MS-Exchange-CrossTenant-Network-Message-Id: b1ea9aed-b122-47ff-a94c-08da235f6bbc X-MS-Exchange-CrossTenant-AuthSource: HE1PR0402MB3497.eurprd04.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 21 Apr 2022 06:23:16.3519 (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: ICgUDhWxGbt/XrXnBfLmsbIIgQ7lzL1itNJjVp0mshBMTPjLlfHH2fzaSl/PtMEl/AUqin57doAnjC++i5m4Eg== X-MS-Exchange-Transport-CrossTenantHeadersStamped: AM9PR04MB8100 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 | 33 +++++++++++++++++++ 1 file changed, 33 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..892be785dda2 --- /dev/null +++ b/tools/testing/selftests/bpf/progs/mptcp_bpf_first.c @@ -0,0 +1,33 @@ +// SPDX-License-Identifier: GPL-2.0 +/* Copyright (c) 2022, SUSE. */ + +#include +#include "bpf_mptcp_helpers.h" + +char _license[] SEC("license") =3D "GPL"; + +SEC("struct_ops/mptcp_sched_first_init") +void BPF_PROG(mptcp_sched_first_init, struct mptcp_sock *msk) +{ +} + +SEC("struct_ops/mptcp_sched_first_release") +void BPF_PROG(mptcp_sched_first_release, struct mptcp_sock *msk) +{ +} + +struct sock *BPF_STRUCT_OPS(bpf_first_get_subflow, struct mptcp_sock *msk,= bool reinject) +{ + struct sock *ssk =3D msk->first; + + msk->call_me_again =3D 0; + return ssk; +} + +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 Mon Apr 29 16:49:22 2024 Delivered-To: wpasupplicant.patchew@gmail.com Received: by 2002:ac4:a898:0:b0:4b1:af33:c52d with SMTP id z24csp79498pid; Wed, 20 Apr 2022 23:23:33 -0700 (PDT) X-Google-Smtp-Source: ABdhPJx2bwpubaYzFSufK2nYoMBl377+6OZjMq4tCh6eleKo8/G/ImtfrQCBZm7qIM/Owp6qTZLV X-Received: by 2002:a05:651c:4c9:b0:24e:8c7b:f489 with SMTP id e9-20020a05651c04c900b0024e8c7bf489mr3494365lji.453.1650522213600; Wed, 20 Apr 2022 23:23:33 -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 q4-20020a2e8744000000b0024b43f0b146si3546906ljj.311.2022.04.20.23.23.33 for (version=TLS1_2 cipher=ECDHE-ECDSA-AES128-GCM-SHA256 bits=128/128); Wed, 20 Apr 2022 23:23:33 -0700 (PDT) Received-SPF: pass (google.com: domain of mptcp+bounces-4827-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=EUb4+EjO; arc=fail (body hash mismatch); spf=pass (google.com: domain of mptcp+bounces-4827-wpasupplicant.patchew=gmail.com@lists.linux.dev designates 139.178.84.19 as permitted sender) smtp.mailfrom="mptcp+bounces-4827-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 BF8E82E0CBC for ; Thu, 21 Apr 2022 06:23:30 +0000 (UTC) Received: from localhost.localdomain (localhost.localdomain [127.0.0.1]) by smtp.subspace.kernel.org (Postfix) with ESMTP id 4BB5B1FA1; Thu, 21 Apr 2022 06:23:29 +0000 (UTC) X-Original-To: mptcp@lists.linux.dev Received: from de-smtp-delivery-102.mimecast.com (de-smtp-delivery-102.mimecast.com [194.104.109.102]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 747007A for ; Thu, 21 Apr 2022 06:23:27 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=suse.com; s=mimecast20200619; t=1650522205; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=GNG8iEtpzdkuvq6LDqfwpmKo3DfQ3gomG42xVqw+Nco=; b=EUb4+EjOYlz9oxViWl+/NGcVdsx9tzM7poiduDSmElen6nNsXUFGqDPOV4vu7JVMr8WFhE 1ehqQ9ek4Ix0prbfnEVxqFlMBMaZVyG1SV27xVjt3vt1u0vr4gmvAqy+/bjtfj9fFRX03/ XVkXpxCWzQrxPU3HRjip6qUl1vl9rX4= Received: from EUR05-VI1-obe.outbound.protection.outlook.com (mail-vi1eur05lp2177.outbound.protection.outlook.com [104.47.17.177]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id de-mta-17-ccyigFIGOGS2q-vghAY5BQ-1; Thu, 21 Apr 2022 08:23:24 +0200 X-MC-Unique: ccyigFIGOGS2q-vghAY5BQ-1 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=dRLTJhNVzJI3mugT1KPnK+qjoktwPly8E8g/Oa65oNfsGg9ialgVRfnsMxMdHwqqTIpU8+jnWtAjcAYtz+PZ8O45sfK9Z2MQn/h7r5up96UV36Ucy3PWpD9rvZj5beBebp1qBKo6zGIvhri15hjdWnAikC6I2p2bTahkX3AuIHMVv0DLBWdzkDhS0YatFI1ERM/EBN2InDicPil9ymCFHyxnmpGK75yr0igTx2L+295OCIZphd8GiV53HrdDncYvVlKXGAGq0qYGMCryjSKcZfA2z6UIf/CFf2NipogSpZ/PX2oQfObCPVO37yjeY0wbtIWZ84G5zD5LMiPHYelqTQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=YZK0VfxUK4qsR2ROUjpij6j46M5w2ZGToJAXYcwSeKA=; b=jJ1fQLlIGaxTtE7LuCxU7VOoNNvldnQ3BddyJTWM0n1pc5hn+8y4evGyAZY4ClOWBocK3PiJ5cKELkgz7zkL4gtFks7vxXjhzSYRYqKTMNU4V4abZSRlvL7Rlab6Jhd3ux/NLbO10IGmqi8PD2ci+QGIx1VkRKF8YU298Yp2LgMSPj40bcFnYoYl67RsEyqGGU/JSC8IlIXUCgwHIhVqo+3I7uRLyFETuQy1QfOR8OMQ4+7BaDTPI8Wiu0MnORXYw2Dg1OXr2yNE5gSOHYQLYJP0CIQ34roDlJzsjXNqgkcN0OBakv3vmVBcWWKPR48B3dqYeDuCmiDp/ZC51gXdQg== 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 AM9PR04MB8100.eurprd04.prod.outlook.com (2603:10a6:20b:3e3::12) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5186.14; Thu, 21 Apr 2022 06:23:24 +0000 Received: from HE1PR0402MB3497.eurprd04.prod.outlook.com ([fe80::9974:fd5e:e3c0:14dc]) by HE1PR0402MB3497.eurprd04.prod.outlook.com ([fe80::9974:fd5e:e3c0:14dc%3]) with mapi id 15.20.5186.014; Thu, 21 Apr 2022 06:23:24 +0000 From: Geliang Tang To: mptcp@lists.linux.dev CC: Geliang Tang Subject: [PATCH mptcp-next v13 9/9] selftests: bpf: add bpf_first test Date: Thu, 21 Apr 2022 14:22:27 +0800 Message-ID: X-Mailer: git-send-email 2.34.1 In-Reply-To: References: Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: HK2PR06CA0024.apcprd06.prod.outlook.com (2603:1096:202:2e::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: 6c3f0a2f-8e6f-4041-0f2f-08da235f7029 X-MS-TrafficTypeDiagnostic: AM9PR04MB8100: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: 3R51k4OlRv3oVQKUdexx161T3UVZIyROyNdLLL3xCNDXpBza9criKjD+xa5uztMUdhZOvhzKQ9SnSTlnzXSDuvxhxTGIQ3XYc4kcpFC+Etf/kmSB385pxdRQjZfUN/fDQH3i55n4qbVyj2RzvKN5IzWdeKTc7Xckd8qGpO5DhtMQ1sQjZcbOrDXKyg2QdYBkviMJOTxnD4F6Da+g6dmkNhtzWPfQ0a135wwaOU+QZmsD2C0n+SdXdbHpQSmqr55/6L7rp3agnPzMazHXqxFvqncCJ6SZMs5uTgi4awrLZaPBK8mW576b028ivRIMOYEFez6Do27QgyFFcX635baXRfpvQ/1NwsjCxr7COyfNYGpztJBGTYsq0Wr/NJitBCJXzJHHCuCG1FUr58qsoLB6hEiOlXfs6SihS66Y8trR7WUF2aTvRbM8UPVQEbDJxYjQjTuJEUTF2NFc5/2AabqPj+ZC5Rs2AjIEi7HQfhvuikh4w2wfggiylu5/1S7crsCDVyeijcmWftNsKjfUAK4lhlVLcL0j8jTC07aPqT6jwizC6q8edCxtv+Avb0KQFGtS8eK3ZNal7ytMNxappWmxhSgU2QZheTBB9E7v+GnK8y7h1kqbBGAiR3+o4QgitREJOgGPNBiD/UgrfFB/iF4O/tXbsiQUDql5uL8CwVgUOWGThHHOjEz0PpEmDTtYjGbQ 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)(2616005)(86362001)(6512007)(26005)(316002)(6916009)(508600001)(6506007)(6486002)(38100700002)(66946007)(66556008)(107886003)(186003)(83380400001)(66476007)(36756003)(2906002)(4326008)(5660300002)(8936002)(44832011)(8676002)(13296009);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?yT7KXCDZz/iXlNMjm8MBCL1w09953nUdWr9t/zsA2xw19lCWv0pZpS2FaL/l?= =?us-ascii?Q?XVfKhnK4Ro9ElRBRjNVV0rd/xbceuPQi9aRXvXJz8tLL/gu8FtDZ8o5b1Mst?= =?us-ascii?Q?W6CyNupeptNPAo9c+4YEj8t30GSclZ1vYycc0exvfN7kiWBwZf/jnlDTydGW?= =?us-ascii?Q?uvwyFSA23t8lBcmzVOFYnLcO1rZFhBxGWd/uUIteYHcCoASJOINQokDJwfBb?= =?us-ascii?Q?aEpKFqHQT7xfgxXX6287dhBt8z4KvkUfOZQEAtUpDVJP+Pnc1COLEB7ObvSe?= =?us-ascii?Q?fA0K3DX3hCyR8+i6EMXekGP58vqhjZr53b9CzI+O/lhqbiqLzlyeGgcdhCJE?= =?us-ascii?Q?Uq0deUn85VP2Sfea/vYY+Ll6jaTfaKns58R/0ezMPlEo3Jas1OAOOEyzN0Gq?= =?us-ascii?Q?6F4EIf82GDWxAKaMThE4wYgmHWcfMcoe5LYl9nF2EkqPl2gD0hkaU8qxrFHU?= =?us-ascii?Q?ColVSfY7dEOR51Y4Bnub9IBepI8ne80GnNsu11wh+Jn0cJy00Sz758Z5MmeI?= =?us-ascii?Q?0cTmdKiQNv3UuRSfFKxm4eSszuUYZ8zgf7Nn9Q6qzaq1Ba97kRepbUYYTdb8?= =?us-ascii?Q?2IBzp0Jx3MNf0UmPYpYEOeDkqO5l7Fgq8Ca+dxuo29mgblnVbUH7SXwCQXeR?= =?us-ascii?Q?gMFZDMg+W0I0I1MLJRGkAPQNISbr01dRfso71doD8e41o3qFf7c8zSecn/wM?= =?us-ascii?Q?qt9pxvUHsDUAtPJfQ/T245/97IYC3iSLoBP7T+lm9DWiGzOvsW7q7fZ+4ejk?= =?us-ascii?Q?83zOIeGPLhmtwsNU+pR4U9FfayTjvXgy2gnLpcAoIAwyty3kidlVa/sKVKIl?= =?us-ascii?Q?8phnQczQTcuK26AdgFN32IsLbND1a/KCVYB+BmhmnVjGpDtzEeStd1Uk8/YY?= =?us-ascii?Q?M+UeAKU1OvURJlCfJ4sZe1KVzAtgSne9oO8TjIaqRtpnZrSuRgS4kHYTnsNp?= =?us-ascii?Q?ShTiRFAiGeMbR7KtQICarcr6pFH+VIM9nQYuYTMUUTewwTGJxdQGtgNABi8a?= =?us-ascii?Q?5CyT8d3JS/QCKOz7VaZxpZya1yS33o263Xda8QghmC/CGE+Q48jc2oNY9eF2?= =?us-ascii?Q?DR2pmGmHr3rIEONr0eI0gGksavW3NBM8/g68i7zgod7caVlpw5UlO5+Hy44R?= =?us-ascii?Q?tojHsZgiIbh121DhLMXdlaSyWgs2Q0xuBYEow8R+NwHKZXoQRFVC4bNUhhrg?= =?us-ascii?Q?g14uzY8yp+XvrfLrzXSdz6Dy09XXQoj64i0n8HENM2tZxN+3ZgqW4gFQkYOl?= =?us-ascii?Q?++AqJkKaT8oZmrtBAyqOrvE45FgNvXo2a7mEv1u1c+7WlMg7xcJqtebHxkWF?= =?us-ascii?Q?uE2YG/7iwvKOGpSxgLPZvfms5Ksi6Kyep+rq7qoI6wAqJG4tw7YyU4VCsivd?= =?us-ascii?Q?J4D6mdUlEJy0gVVuHz7IYZK0fSRljiDeaEy7Gb8m27TGTlBnrvvkpnRxawU0?= =?us-ascii?Q?xRQtGl1K9kg4y9QtQRVzqmBuj0y56l2vWLbgrEpkpwHUPKQWUPa8prrAloHM?= =?us-ascii?Q?7Tu1B9go4wEMWAvL+lFUMDDQ4bXisL46w+mUZfOBBLAtCkV/MWZbWQhP9S2N?= =?us-ascii?Q?qhovgKUEIBxOgNzE4JptcQoRsigF9160NZkuZf7lLmLImlvl6GWWksZWdSKC?= =?us-ascii?Q?SsTbCIC7DEdoHIZUkYYTbbC3jZDMptqJ1Az0kUOozYNJ3H62nCH2uhge36Hl?= =?us-ascii?Q?FX6Xt9Q64Vi2nGqRTuZgtqnUObwSKwZMxswIYcBcwTmJ6ySrZvypK17KSmWG?= =?us-ascii?Q?0NsEDr88oNIGUfyFQmTAH39hdEUZJGM=3D?= X-OriginatorOrg: suse.com X-MS-Exchange-CrossTenant-Network-Message-Id: 6c3f0a2f-8e6f-4041-0f2f-08da235f7029 X-MS-Exchange-CrossTenant-AuthSource: HE1PR0402MB3497.eurprd04.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 21 Apr 2022 06:23:24.0231 (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: bQyOViw6k9iI52wWYQ0ijhWwGko1Xy3VGLmG/YakjbFB/QQeVEBhvfDKX+q5hScGkeyge9kg081qN1aiR/5d4Q== X-MS-Exchange-Transport-CrossTenantHeadersStamped: AM9PR04MB8100 Content-Type: text/plain; charset="utf-8" This patch expends the MPTCP test base to support MPTCP packet scheduler tests. Add the bpf_first scheduler test in it. Use sysctl to set net.mptcp.scheduler to use this sched. Some code in send_data() is from prog_tests/bpf_tcp_ca.c. Signed-off-by: Geliang Tang --- .../testing/selftests/bpf/prog_tests/mptcp.c | 113 ++++++++++++++++++ 1 file changed, 113 insertions(+) diff --git a/tools/testing/selftests/bpf/prog_tests/mptcp.c b/tools/testing= /selftests/bpf/prog_tests/mptcp.c index 7e704f5aab05..377ebc0fbcbe 100644 --- a/tools/testing/selftests/bpf/prog_tests/mptcp.c +++ b/tools/testing/selftests/bpf/prog_tests/mptcp.c @@ -1,9 +1,11 @@ // SPDX-License-Identifier: GPL-2.0 /* Copyright (c) 2020, Tessares SA. */ =20 +#include #include #include "cgroup_helpers.h" #include "network_helpers.h" +#include "mptcp_bpf_first.skel.h" =20 #ifndef TCP_CA_NAME_MAX #define TCP_CA_NAME_MAX 16 @@ -19,6 +21,8 @@ struct mptcp_storage { }; =20 static char monitor_log_path[64]; +static const unsigned int total_bytes =3D 10 * 1024 * 1024; +static int stop, duration; =20 static int verify_tsk(int map_fd, int client_fd) { @@ -251,8 +255,117 @@ void test_base(void) close(cgroup_fd); } =20 +static void *server(void *arg) +{ + int lfd =3D (int)(long)arg, err =3D 0, fd; + ssize_t nr_sent =3D 0, bytes =3D 0; + char batch[1500]; + + fd =3D accept(lfd, NULL, NULL); + while (fd =3D=3D -1) { + if (errno =3D=3D EINTR) + continue; + err =3D -errno; + goto done; + } + + if (settimeo(fd, 0)) { + err =3D -errno; + goto done; + } + + while (bytes < total_bytes && !READ_ONCE(stop)) { + nr_sent =3D send(fd, &batch, + MIN(total_bytes - bytes, sizeof(batch)), 0); + if (nr_sent =3D=3D -1 && errno =3D=3D EINTR) + continue; + if (nr_sent =3D=3D -1) { + err =3D -errno; + break; + } + bytes +=3D nr_sent; + } + + CHECK(bytes !=3D total_bytes, "send", "%zd !=3D %u nr_sent:%zd errno:%d\n= ", + bytes, total_bytes, nr_sent, errno); + +done: + if (fd >=3D 0) + close(fd); + if (err) { + WRITE_ONCE(stop, 1); + return ERR_PTR(err); + } + return NULL; +} + +static void send_data(int lfd, int fd) +{ + ssize_t nr_recv =3D 0, bytes =3D 0; + pthread_t srv_thread; + void *thread_ret; + char batch[1500]; + int err; + + WRITE_ONCE(stop, 0); + + err =3D pthread_create(&srv_thread, NULL, server, (void *)(long)lfd); + if (CHECK(err !=3D 0, "pthread_create", "err:%d errno:%d\n", err, errno)) + return; + + /* recv total_bytes */ + while (bytes < total_bytes && !READ_ONCE(stop)) { + nr_recv =3D recv(fd, &batch, + MIN(total_bytes - bytes, sizeof(batch)), 0); + if (nr_recv =3D=3D -1 && errno =3D=3D EINTR) + continue; + if (nr_recv =3D=3D -1) + break; + bytes +=3D nr_recv; + } + + CHECK(bytes !=3D total_bytes, "recv", "%zd !=3D %u nr_recv:%zd errno:%d\n= ", + bytes, total_bytes, nr_recv, errno); + + WRITE_ONCE(stop, 1); + + pthread_join(srv_thread, &thread_ret); + CHECK(IS_ERR(thread_ret), "pthread_join", "thread_ret:%ld", + PTR_ERR(thread_ret)); +} + +static void test_first(void) +{ + struct mptcp_bpf_first *first_skel; + int server_fd, client_fd; + struct bpf_link *link; + + first_skel =3D mptcp_bpf_first__open_and_load(); + if (CHECK(!first_skel, "bpf_first__open_and_load", "failed\n")) + return; + + link =3D bpf_map__attach_struct_ops(first_skel->maps.first); + if (!ASSERT_OK_PTR(link, "bpf_map__attach_struct_ops")) { + mptcp_bpf_first__destroy(first_skel); + return; + } + + system("sysctl -q net.mptcp.scheduler=3Dbpf_first"); + server_fd =3D start_mptcp_server(AF_INET, NULL, 0, 0); + client_fd =3D connect_to_mptcp_fd(server_fd, 0); + + send_data(server_fd, client_fd); + + close(client_fd); + close(server_fd); + bpf_link__destroy(link); + mptcp_bpf_first__destroy(first_skel); +} + void test_mptcp(void) { if (test__start_subtest("base")) test_base(); + if (test__start_subtest("first")) + test_first(); } --=20 2.34.1