From patchwork Fri Mar 25 16:11:57 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Geliang Tang X-Patchwork-Id: 12791714 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 AEF6328E0 for ; Fri, 25 Mar 2022 16:12:37 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=suse.com; s=mimecast20200619; t=1648224755; 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=4zUXwphF21h5FjIPsYiovueZ1HWHUtLt7x9L28IHjEY=; b=VtyGWotA5telSaviY5T1OyjH2h7SJHMDis8K4mWJl9ZPVHIMa1VDQqR21XXTlltaqn4+Zk UgpQm2VEpKs0YUqV3fwR0CIFDj7wtxaAFZ0bp+vNhr0L0qtNj0rYn8z1GuTp7y4f082OeD Dj2jBciiFQkeHQOQB2d8DYTH/QoOErg= Received: from EUR02-VE1-obe.outbound.protection.outlook.com (mail-ve1eur02lp2053.outbound.protection.outlook.com [104.47.6.53]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id de-mta-9-wa4AlNKbNsC97rwjPpv6WA-1; Fri, 25 Mar 2022 17:12:34 +0100 X-MC-Unique: wa4AlNKbNsC97rwjPpv6WA-1 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=W9wRr6K4yJB6Y0rEQxqLIGPg7GgU8MnNoCmCDew9t9v6Z2Ag+yRRL8dWWzaKTiXEI+Yn3v7rCSoBXau7mknCBQ8ozumyRVfqiYKTj7ZEBFw3ANt72oCHHqyNFY3sPdzKfOu4/BbX72Eep7LHlf6Et19s2LzQ+dA7igN6XmkQFu6izpEMwvH0/6ry/7hAgrSAR+3ieOU1yIbHRWtlOFSs8Sm7lYL1bKlj1BxyqB6gXphGmZDvI50FQUJ9iiz8CEc+HeKEGEh1Mq4P/MMSDWpaCaqyC5LZsP1slLpRqMVM2fj/wj5rNuXttn72wIJcVh9U0IaTjEHGa0ouJpBRIwRWQA== 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=EPWg1SHAPGAjHP2dydE9+fh4ezJdAIgiRXX133sxSHA=; b=TCo7y/mxVCxTOsrAbZ4WXQ98lkH1Y5uGmhGkmgncL0//u4zoiJCORsC64lNlvbB3xGsSGe46jqpGvh9eyCfEuVBIKeFaO2xORWd0SPk78pjFIb3S1cM7AK5h9yflaagI7V6XMS5SI+MZaXuhBfDE/GAiybr7ERmK5BvOZvQxkldogPwSWdJ9ca8IS9bbcq6plxKve6E8xRG9ajziDVCzifIRDcOvPewTf8eGeXdTgJBdwH3ug2oTu00eUwSZ/E9Qf8vEUpdsw6IpHdPlbfyPhoLrWKQjD0IEm/e2DkRsOliPP6+jbGKi4ocoxFcQx4rZ6URlAdD34imq9Zy++lCBdA== 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 AM0PR0402MB3938.eurprd04.prod.outlook.com (2603:10a6:208:7::32) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5102.19; Fri, 25 Mar 2022 16:12:33 +0000 Received: from HE1PR0402MB3497.eurprd04.prod.outlook.com ([fe80::b110:cb51:e09f:bb05]) by HE1PR0402MB3497.eurprd04.prod.outlook.com ([fe80::b110:cb51:e09f:bb05%6]) with mapi id 15.20.5102.016; Fri, 25 Mar 2022 16:12:33 +0000 From: Geliang Tang To: mptcp@lists.linux.dev CC: Geliang Tang Subject: [PATCH mptcp-next v6 1/8] mptcp: add struct mptcp_sched_ops Date: Sat, 26 Mar 2022 00:11:57 +0800 Message-ID: <0269e4ec9fcdfc3c6ae4ad1075065c21ae85377f.1648223504.git.geliang.tang@suse.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: References: X-ClientProxiedBy: HK0PR03CA0102.apcprd03.prod.outlook.com (2603:1096:203:b0::18) To HE1PR0402MB3497.eurprd04.prod.outlook.com (2603:10a6:7:83::14) Precedence: bulk X-Mailing-List: mptcp@lists.linux.dev List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: c659a12c-bc25-4522-ac76-08da0e7a4522 X-MS-TrafficTypeDiagnostic: AM0PR0402MB3938: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: A9dRQbbfD2KfFdjdx12F6Hj8ZAz2g1lKRc4JuQNpYMWVccvQu4v3eh1pTNXHDNn5Zl0UyJ1ILXcW4McL+k8/V4Ymf+0uxFk12MZfQU9EsJxjhY3qhjAfHqzNfflkLc6dK47hHnzR52MeKFdmsH+QKWi92xifYV7aNb+vOFhXSRjD7roekSX3TZfGcj3AN43Qbg6jqem2c4fKOF1NVBRTKNW5KiIUfW1tLSUqnw81vyUv+bJMbIpOvyafgzBt8RAREG0XgUkY01sJRXyuv9P8VGjLeYb97BpeG6nRp7vR5DdcEvYNjmNqgVRSXE/zDFRM0YOtCCYasTh5qhpMK3ik4zT8zrF0buECUnHQydDapTP4LK58jI+DIbCIFgG27HWDv+7VY0ZRy8+FpA3GZZu3GLZin+KzQKWfP8VEwiGUMIDMxZcAFOHekuK7ucyxsXqlPe9Q7zIrc5bU5xUMcpjUNl1Ig6mTcb8xMeMA5FY1mpEb1FgcU0hFGcQuc+QuFI51hkcA2I2SmhQmlGlSgOyA7U8gAN41uXWCgDHuZ8KvHvrkurLseOojsYDXE3Gn1BocsJUJI4lo0X1h3uVIxqdrfRo+D4XHnGK81knZY3EogM3qPL4VwZp1f1IB0dMOzxIVHDUMR8wLFQJdNVl5apv8VMoy7HLDg++Fl7GK7BNe320MOqnM90XsykKYkxK6p8tq 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)(36756003)(4326008)(508600001)(8936002)(186003)(26005)(8676002)(66476007)(66946007)(2906002)(38100700002)(44832011)(5660300002)(66556008)(83380400001)(2616005)(86362001)(6486002)(6512007)(6666004)(6506007)(107886003)(6916009)(316002)(13296009);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: AK2qyIEFW8yKCXAURmnyKn958WQ0uBxlSMe81ObqRbM/3clqdUVzCpplyVinj7csYCeLU+9S+B2zcgMOKSuahArEtyc2HHkVLTEyGug1Ew8gFvV0iDxo7KxtH5OVQXzmgeH9pgU8ydT5e/Tl6QLw5F6TKuDVfcJOZbFXsOKg5LWY8e1BopDSuywx0OmeT+GnqL8w547M86bW3eqJ2m4OIUhS41EQ9HZa/5PzYfa5FwiaV18URxjoCdxhXmKZ5R5rIciGrUr95ZTS6b/rjBexhhbcmdoKHNdecSrk6dSRVPG7TkYwz8/SpovDQiWzfYNDZWDG55gprrLleWdxXT4MZDvDsKScjD/SrK1k8sxR+Zsh3wO94td2EYTqKV15xTbioo39VAotR7EPZsqRDQQEmB9NJTE4Cp5oy7CWfHdc8CHbYSdEfYDS1aCh7TySy5Q4AlfECWOXDAAd6R+oCr2B3EU1Zab1eS032uxDv0wqABW4O7Hrd/D647rqsO2bd/mTqB0rqgKfvAWiHkSXkJD9d4Kb97H7qeG1sguTe87kBEOvFejxR6+UWd0teellPlgoZ9Vn2YaS7qQagwy85fQTvk2LGu/9moAasI+Nu2w9SYv/bwEbiHsI/y3WD+lIeN5rfe6MEej5uNC1guIRt43XnE5hnKZZsruzQUU+iyRpaeBYRxnyqCL6Y8ohcIEoAq5n4RUlwmwt7ZfV+GvacnXeYrDY7/oJHokrNxgZdR3zZjOPzclAyoihFjjbzboBzjVBY5UG39vOvzJjfQSmH4lOD54wD4CdJJenUnJ8YwB4w72vDKg0ws6l2bxkWHn1fFK8sgg8TSroqe/dwTpKtXbEhqPlzjKcGRydKLfKW8fA0uTo3aZNeSWCsHyaEPnSZnlNNkCH8TByVemS4ern7AayWLd/Z4mUZLaXRFFg+1kixAICf7pke5Hx1X0V4st4ksXU/8f58UnEJtBrMZSKssb0LavN2orwCP+OgWlr+ygybmHP1rumTCZagHx9dktlViuPq4JAKvsUa0uu1PMDNTr6Jot5J25BKc/y3uTgwRpbVI/4vImDyJNv/6uIcZLoXRhpQuppcZ7OPO+anM61hVs+lZ/wGRcXGjKws6tPX+EK7WNbHo8v1bWUBweY81KY0xO8K/kvOpXQEIV+39bmoRroREyvZDJSzHHHvHSCZHX4f7Zcf5GKj4Anzbuq3vB9IhaNCrS6ivIbXKPCkv1eVgPdwMhrUfyFJV4/Kd3RjRptypVa8ihBlQs+H06p1hHRuo/Yeg9n8MDvG7gyRUETFx847DrhyhYl+BlXpc0aTjlr6KSpfFoLkptjrBggQ5wtXupwoattP2yHD1Z9PWa8OrmfipJXcXPPH+PSZ0Mpo0265cRYJp1/Yul6AftkLtSCMEC4JM+sSBMTLRM/w/kQjlg8QuQDR0F4mnl6Y9Va7NKLgifwTgGmV8N/hkDROcZtRaV8LYsLTJbZRs7DqLRmkjZvhCJ8SEMjgMH9yMbB9W3e7MEnxsuK5QKekycHbBwUcFrD15ANENX6qeWaxCECZOuhHDoSPXpc7TEuWLBOiGnXaibQYfPNQmXHcn206xqMqNVATHESYC6W/4TrNWZDNTON1BLlm2jY+aAFJxgvEdUK558YAFnm/96+lBSms1OqnhDZ4CwoJmNVnUcE82eLIyevDXVYhDcGdKfqT3nTuGq3X/S0PUbYm/EpS2I5L6hexQ8X7ccjRzSmAVTxqonUuiVc7rT5NRTl/84enx7OizAbre8= X-OriginatorOrg: suse.com X-MS-Exchange-CrossTenant-Network-Message-Id: c659a12c-bc25-4522-ac76-08da0e7a4522 X-MS-Exchange-CrossTenant-AuthSource: HE1PR0402MB3497.eurprd04.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 25 Mar 2022 16:12:33.8170 (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: jJzjbTJoJU+11UmGGtl0izr7DtTi3DYjLZ1ym4wgrPmz7BI0OG2xiNTeN3ECBtmyWPUDY72Cy08hQ0j7OMiJUA== X-MS-Exchange-Transport-CrossTenantHeadersStamped: AM0PR0402MB3938 This patch added struct mptcp_sched_ops. And define the scheduler register, unregister and find functions. Signed-off-by: Geliang Tang --- include/net/mptcp.h | 13 +++++ net/mptcp/Makefile | 2 +- net/mptcp/protocol.c | 1 + net/mptcp/protocol.h | 7 +++ net/mptcp/sched.c | 113 +++++++++++++++++++++++++++++++++++++++++++ 5 files changed, 135 insertions(+), 1 deletion(-) create mode 100644 net/mptcp/sched.c diff --git a/include/net/mptcp.h b/include/net/mptcp.h index 8b1afd6f5cc4..e3a0baa8dbd7 100644 --- a/include/net/mptcp.h +++ b/include/net/mptcp.h @@ -95,6 +95,19 @@ struct mptcp_out_options { #endif }; +#define MPTCP_SCHED_NAME_MAX 16 + +struct mptcp_sched_ops { + struct sock * (*get_subflow)(struct mptcp_sock *msk); + + char name[MPTCP_SCHED_NAME_MAX]; + struct module *owner; + struct list_head list; + + void (*init)(struct mptcp_sock *msk); + void (*release)(struct mptcp_sock *msk); +} ____cacheline_aligned_in_smp; + #ifdef CONFIG_MPTCP extern struct request_sock_ops mptcp_subflow_request_sock_ops; diff --git a/net/mptcp/Makefile b/net/mptcp/Makefile index 99dddf08ca73..9ef6d94efc47 100644 --- a/net/mptcp/Makefile +++ b/net/mptcp/Makefile @@ -2,7 +2,7 @@ obj-$(CONFIG_MPTCP) += mptcp.o mptcp-y := protocol.o subflow.o options.o token.o crypto.o ctrl.o pm.o diag.o \ - mib.o pm_netlink.o sockopt.o + mib.o pm_netlink.o sockopt.o sched.o obj-$(CONFIG_SYN_COOKIES) += syncookies.o obj-$(CONFIG_INET_MPTCP_DIAG) += mptcp_diag.o diff --git a/net/mptcp/protocol.c b/net/mptcp/protocol.c index d3887f628b54..b1d7c8b0c112 100644 --- a/net/mptcp/protocol.c +++ b/net/mptcp/protocol.c @@ -3807,6 +3807,7 @@ void __init mptcp_proto_init(void) mptcp_subflow_init(); mptcp_pm_init(); + mptcp_sched_init(); mptcp_token_init(); if (proto_register(&mptcp_prot, MPTCP_USE_SLAB) != 0) diff --git a/net/mptcp/protocol.h b/net/mptcp/protocol.h index fd82fd113113..3258b740c8ee 100644 --- a/net/mptcp/protocol.h +++ b/net/mptcp/protocol.h @@ -608,6 +608,13 @@ 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 struct net *net, + const char *name); +int mptcp_register_scheduler(const struct net *net, + struct mptcp_sched_ops *sched); +void mptcp_unregister_scheduler(const struct net *net, + struct mptcp_sched_ops *sched); +void mptcp_sched_init(void); static inline bool __mptcp_subflow_active(struct mptcp_subflow_context *subflow) { diff --git a/net/mptcp/sched.c b/net/mptcp/sched.c new file mode 100644 index 000000000000..ae1956b6de92 --- /dev/null +++ b/net/mptcp/sched.c @@ -0,0 +1,113 @@ +// SPDX-License-Identifier: GPL-2.0 +/* Multipath TCP + * + * Copyright (c) 2022, SUSE. + */ + +#define pr_fmt(fmt) "MPTCP: " fmt + +#include +#include +#include +#include +#include +#include +#include +#include "protocol.h" + +static int sched_pernet_id; + +struct sched_pernet { + /* protects pernet updates */ + spinlock_t lock; + struct list_head sched_list; +}; + +static struct sched_pernet *sched_get_pernet(const struct net *net) +{ + return net_generic(net, sched_pernet_id); +} + +struct mptcp_sched_ops *mptcp_sched_find(const struct net *net, + const char *name) +{ + struct sched_pernet *pernet = sched_get_pernet(net); + struct mptcp_sched_ops *sched, *ret = NULL; + + rcu_read_lock(); + list_for_each_entry_rcu(sched, &pernet->sched_list, list) { + if (!strcmp(sched->name, name)) { + ret = sched; + break; + } + } + rcu_read_unlock(); + + return ret; +} + +int mptcp_register_scheduler(const struct net *net, + struct mptcp_sched_ops *sched) +{ + struct sched_pernet *pernet = sched_get_pernet(net); + + if (!sched->get_subflow) + return -EINVAL; + + if (mptcp_sched_find(net, sched->name)) + return -EEXIST; + + spin_lock(&pernet->lock); + list_add_tail_rcu(&sched->list, &pernet->sched_list); + spin_unlock(&pernet->lock); + + pr_debug("%s registered", sched->name); + return 0; +} + +void mptcp_unregister_scheduler(const struct net *net, + struct mptcp_sched_ops *sched) +{ + struct sched_pernet *pernet = sched_get_pernet(net); + + spin_lock(&pernet->lock); + list_del_rcu(&sched->list); + spin_unlock(&pernet->lock); + + /* avoid workqueue lockup */ + synchronize_rcu(); +} + +static int __net_init sched_init_net(struct net *net) +{ + struct sched_pernet *pernet = sched_get_pernet(net); + + INIT_LIST_HEAD_RCU(&pernet->sched_list); + spin_lock_init(&pernet->lock); + + return 0; +} + +static void __net_exit sched_exit_net(struct net *net) +{ + struct sched_pernet *pernet = sched_get_pernet(net); + struct mptcp_sched_ops *sched; + + spin_lock(&pernet->lock); + list_for_each_entry_rcu(sched, &pernet->sched_list, list) + list_del_rcu(&sched->list); + spin_unlock(&pernet->lock); +} + +static struct pernet_operations mptcp_sched_pernet_ops = { + .init = sched_init_net, + .exit = sched_exit_net, + .id = &sched_pernet_id, + .size = sizeof(struct sched_pernet), +}; + +void mptcp_sched_init(void) +{ + if (register_pernet_subsys(&mptcp_sched_pernet_ops) < 0) + panic("Failed to register MPTCP sched pernet subsystem.\n"); +} From patchwork Fri Mar 25 16:11:58 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Geliang Tang X-Patchwork-Id: 12791715 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 95F1D28E0 for ; Fri, 25 Mar 2022 16:12:44 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=suse.com; s=mimecast20200619; t=1648224762; 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=5v62knDhEK/DGQfCMvQ+4MitGuU0hrsCwBJbqoiVi1Y=; b=jx/TCUIp1jLXmN4nr7AsjouvNPnFpMOcAOBdH9qiyIiLrZewdPXliwkPoH8knSo3FaRLYh KyjxmgPn+ljtqeqPP5oAq+1RYmYaUJjJbUj7E5ENb28XeVuhD9uqh/H0ggAbrALybIp24f 1EJk0UhwHngLTrC+Fcxi96OH9o6bqm0= Received: from EUR02-VE1-obe.outbound.protection.outlook.com (mail-ve1eur02lp2058.outbound.protection.outlook.com [104.47.6.58]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id de-mta-4-akPH2JjNPcimR08zkgYP-w-1; Fri, 25 Mar 2022 17:12:41 +0100 X-MC-Unique: akPH2JjNPcimR08zkgYP-w-1 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=Q88J167+suLWV6rX7C5RK0sBBWq71HC6MZLXd9pqdjlLP6UAwL0WhMQaxtltFSZYDxrctFZ1p2MCIJL1D7lkb9Jx9GnOMPsZLeuHjCXSwqDAkmaLZgDJugrUg3/VheLaPOHiHF4fhhgMKLMB+ePESiGGxIA1dWqz1/a8nknxLcurzLwMTEZ/VUB8ELVoPZSDEbwojMfpvIzoPoQ0D5F6Qk89UMO5f72Ar84NtNZrnJl3IZHsC4sQ+zGDKCj+5TG6kVkG8ngT60kCvlDCmEephHqpjGKfs/TNfIo3B+05BWhid3APbAmGpgMFMVnXH9cJhY3Aj9Vjgzvnfcd2NAP7uQ== 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=BypE4TaoXPNrVsBUXrFtkOjjjVm9vH+fGsxgmkfESRg=; b=CQGTY7Tw8D1WOjjfVJnWH5GEXGwO6w4aiO93j6WKUn0MdqzIVszK/wGPn77qhToymkGwEAcCFaCBkWyPonoL6vh23WBcpYzqp3/qbG92Ey0FX88948sOXH3xySpyzSFqcqS/VXj51TYjlN5lvhrRdpHiZvh2dpHKzTTQoFTML3o/L76R7wMfSlGie1RjJJx0vOLm/scDPZXUaPF5agpOJkp4FivFVHFjXXO00BjAcqnElo89kAdlvyv6Dn+Fx27y4zVJUA36LIAcliB3jQoKvzh3b8ooMrHRqhr9XVcOLkLn6uEgQF7UK5KqmmtoqqpO6o8Qavh5brbLYoEeP8/E2w== 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 AM0PR0402MB3938.eurprd04.prod.outlook.com (2603:10a6:208:7::32) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5102.19; Fri, 25 Mar 2022 16:12:40 +0000 Received: from HE1PR0402MB3497.eurprd04.prod.outlook.com ([fe80::b110:cb51:e09f:bb05]) by HE1PR0402MB3497.eurprd04.prod.outlook.com ([fe80::b110:cb51:e09f:bb05%6]) with mapi id 15.20.5102.016; Fri, 25 Mar 2022 16:12:40 +0000 From: Geliang Tang To: mptcp@lists.linux.dev CC: Geliang Tang Subject: [PATCH mptcp-next v6 2/8] mptcp: register default scheduler Date: Sat, 26 Mar 2022 00:11:58 +0800 Message-ID: X-Mailer: git-send-email 2.34.1 In-Reply-To: References: X-ClientProxiedBy: HK0PR03CA0120.apcprd03.prod.outlook.com (2603:1096:203:b0::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: 52062ea8-4ce7-4494-8d11-08da0e7a4947 X-MS-TrafficTypeDiagnostic: AM0PR0402MB3938: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: PpNLptfVTeTmtF2AMbwmO2cD+ZAUBFHsv1ahm7WaFvnzuTYWxIvoY0hcatfNqVBmjw5UJ07Tb7uOl8jY6LYOwYOvc3Of3/19LRXyJQSx/KOYMs5AXO1Oe3grBt7BnOJ9Egt9l4AZ43aAdCGOHcaG+slJpJBj17NJBFe5maTy1ZNvnZIQlpuIg01zj5sAon8H0y2aNQOMlh80Qn0oGXQ7ErWe7tWlxEKJxlLJQoNvJtx4dimr+7r1W7jsNp+EpNUdd/xZg6HiKXfjoRlC//e3rPt0ANE6AH6wtmKNzUGlHxZam13n2vIT1jYN3havJGA6tb0XjSSsuXH62QfXfCmw+EZe2uQaKEuOdPEybdJiPUoGWWJalwA5SADvF9009chse2aZCHRNg5YJzjzJoeNbn+3zsq322Pgvd3Q+sWArPzzTmeYLoTBOeFR8Dsh5c4Q5v1UJqEax9Wej9URg5vz64c2Kql33uPz5pM1PvvcwTeK02jbJnoPrF/+9tg2NjyfBxm/Ety6MRSThkpIteSIyJOp8Flbg9UVell/BqcKCtkykzV50Kp40m1G2vZ+yVMbAAAGgeJkIhLUjO9eW6Zk5n787dl1r4dv/E5tiDRO+s+Imi3oDEHSzeK9gaTjsiXbRV3PD1PpfZgwGZrOK73pZXpQKHbc7KzfNKzedH0d7xCv8SXB5/fPCQ4KToAADH78Y 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)(36756003)(4326008)(508600001)(8936002)(186003)(26005)(8676002)(66476007)(66946007)(2906002)(38100700002)(44832011)(5660300002)(66556008)(83380400001)(2616005)(86362001)(6486002)(6512007)(6666004)(6506007)(107886003)(6916009)(316002)(13296009);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: RnNTJUuXmTmabH+Ac9AtTeBnBV1JjPRI4QNFmg6oXBCifoLn2inDsG5MQPx721t8luU2YGcvsgkTVHksudNzvOeVfbycEx71fhvbdTrL3f0dbVif9kDpiTtDHj6ImnaNp/qRg1YRohgUOUqh9HSQYWt3E7Lk2HFKD5l8whfynkRS00CleaMXe4BtsVpZzD3kFz3RjCjaq2Qg8/hPESQedHWiwA8tGZm+XlGGzZ7OY8PE9PAkp6chUW66siGiz8wmWwQXgvttk5Bvaw9BGtfxBP2Pcp8UsYX2mCkB1zcHfrGp65d/N3BXWzpyvx5xcFVaoG+xM7vgkfiP9voGBh7TNeTMwCLkiE8Dji79fV/Y3OC44gzW9kzZYcMlYSSrcK7jV/En2EYN186zsYN3YuCTzWP4yHgamSZBjqZ0M7p9EeSNeqWfOZsK37f5hLSWdPIrq8OUB3JroQcLWnjg4UcTx9EeEDcFk+136Yj/dCftF7mdnzpXA5SROq02dmRFoVKW1scT5dxQJ6ub2ZGIOt8kHGYRg8fjcSQ7YYr4hui+PXcvkK0ui0Jk7NXqYLTvX6UX4rbKpR14KJ2Gr1vXGKjLj/iOI3TiGiGvd++FwfrpE+x6xVo2LFqKe07uwrwppfjt7HOxxH/vwUzhZi3fTAHoRE1RtXsglh0rAAw3YmN74BshCTilS/u/zkrhaicfNr3uoVoBvWO4muPP5g8lDl3q2+IJHO6/EjDZqxL4DoYUJSlFwObHKNPvQ5yfl7sULhTd1mADExEtqkULsaS6Tks7YlnyFF/OfoNglBirkqOv+nQZz1v+G69MNLWnRzf3ZgGvKVALwd61BjUqQEzc6Nllt9sfdF+A12hco/GKwfuowjRRv7Qj9pgQlbr2jzKz48GxoO0yNF39MgpALtYkUuegeRigKEWx16Kjaj0PZP/9DtwYhkD6Lxm52VM/qJUFUd7vOeldcRhSQBLZBI0Q5sRaqBvkJqL//lwrSvQbWM9kIOda/kKWyL9QdtaxAvDDeU5FcdkqSd59+YeSRa1vrvN1oKtRX3tVYYrjznvleSt7GGigYFkd3ZJ6qN9QnDbB6zBCKnJMIsPwrl5xbNNGGbiPXYvyiI0lsiE6H0/wS9ZuoBwWAmXNDXNJB9I0F5JqCp8fYR9Lpi5aB64TReTKPhSwR8UiiD4byfjGsykjHYzy4v+kgLSym6BgkvA6cOa2XDrh4bAn4QbDe/2nHFeMb28mq6QHN20QWTWtfw16cRRh0Uw86A2GHrW7WHwZibySLbDKTlxbYtw9kaYPTsX0EVEI7IzVO9IYlesqUlcWAtZt12ZL7/HZLXyo9LMwrOi/UQG58D8Y/hfptq4mkOCp8+0WH6gQx4pW6Xm5F397lAr8A1P7aMmjoSGaQNpAluprZHK0odUhvUgjA7lorMuKqk6IUsDnpT/48n14NKqMv/0rGq4r3Xevhl3meD55weuZRXQW2t5iTVQm4jPnHjWRTj/3F2ecrwDUV0QA2LEuAz3gugPPab6lM4Jr8gVXbRysAZskaZxWW7WPjvO67W2tlPKZdGe+nSBBtLwwZicBWajVm3+DyB3MLmJ4dZa2BL60x9xEq+LrokxaWkYk30DVgkM4/rWSUSi4jPrCD2HmUjDv8sYrf28Q5YuglIMp7RPgv/8AZgCbDJ5Bn7BMKXIGi1zilv8ObUE6/Dd6XEK64CpgrecNYcHaWDP5uyX4H/jMEyrUoDpfL0+Z5cAjRdrP6Jdm+vKoCcOPioVdnmT2layjFaw= X-OriginatorOrg: suse.com X-MS-Exchange-CrossTenant-Network-Message-Id: 52062ea8-4ce7-4494-8d11-08da0e7a4947 X-MS-Exchange-CrossTenant-AuthSource: HE1PR0402MB3497.eurprd04.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 25 Mar 2022 16:12:40.7071 (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: TVzy9JAg6E9M8hfdgEdM2cXLpP/yim/MxuBpuOlrQPPC5hWtQA+QveLlBT95zVc338ipBa7ylNI4aQuwho37Yw== X-MS-Exchange-Transport-CrossTenantHeadersStamped: AM0PR0402MB3938 This patch defined the default packet scheduler mptcp_sched_default, registered it in mptcp_sched_init(). Signed-off-by: Geliang Tang --- net/mptcp/protocol.c | 3 ++- net/mptcp/protocol.h | 2 ++ net/mptcp/sched.c | 14 ++++++++++++++ 3 files changed, 18 insertions(+), 1 deletion(-) diff --git a/net/mptcp/protocol.c b/net/mptcp/protocol.c index b1d7c8b0c112..2c684034fe7a 100644 --- a/net/mptcp/protocol.c +++ b/net/mptcp/protocol.c @@ -1424,7 +1424,7 @@ bool mptcp_subflow_active(struct mptcp_subflow_context *subflow) * returns the subflow that will transmit the next DSS * additionally updates the rtx timeout */ -static struct sock *mptcp_subflow_get_send(struct mptcp_sock *msk) +struct sock *mptcp_subflow_get_send(struct mptcp_sock *msk) { struct subflow_send_info send_info[SSK_MODE_MAX]; struct mptcp_subflow_context *subflow; @@ -2614,6 +2614,7 @@ static int __mptcp_init_sock(struct sock *sk) msk->recovery = false; mptcp_pm_data_init(msk); + mptcp_sched_data_init(sk); /* re-use the csk retrans timer for MPTCP-level retrans */ timer_setup(&msk->sk.icsk_retransmit_timer, mptcp_retransmit_timer, 0); diff --git a/net/mptcp/protocol.h b/net/mptcp/protocol.h index 3258b740c8ee..0a409b28e237 100644 --- a/net/mptcp/protocol.h +++ b/net/mptcp/protocol.h @@ -614,7 +614,9 @@ int mptcp_register_scheduler(const struct net *net, struct mptcp_sched_ops *sched); void mptcp_unregister_scheduler(const struct net *net, struct mptcp_sched_ops *sched); +struct sock *mptcp_subflow_get_send(struct mptcp_sock *msk); void mptcp_sched_init(void); +void mptcp_sched_data_init(struct sock *sk); static inline bool __mptcp_subflow_active(struct mptcp_subflow_context *subflow) { diff --git a/net/mptcp/sched.c b/net/mptcp/sched.c index ae1956b6de92..1fb3dd24d6ff 100644 --- a/net/mptcp/sched.c +++ b/net/mptcp/sched.c @@ -23,6 +23,12 @@ struct sched_pernet { struct list_head sched_list; }; +static struct mptcp_sched_ops mptcp_sched_default = { + .get_subflow = mptcp_subflow_get_send, + .name = "default", + .owner = THIS_MODULE, +}; + static struct sched_pernet *sched_get_pernet(const struct net *net) { return net_generic(net, sched_pernet_id); @@ -70,6 +76,9 @@ void mptcp_unregister_scheduler(const struct net *net, { struct sched_pernet *pernet = sched_get_pernet(net); + if (sched == &mptcp_sched_default) + return; + spin_lock(&pernet->lock); list_del_rcu(&sched->list); spin_unlock(&pernet->lock); @@ -111,3 +120,8 @@ void mptcp_sched_init(void) if (register_pernet_subsys(&mptcp_sched_pernet_ops) < 0) panic("Failed to register MPTCP sched pernet subsystem.\n"); } + +void mptcp_sched_data_init(struct sock *sk) +{ + mptcp_register_scheduler(sock_net(sk), &mptcp_sched_default); +} From patchwork Fri Mar 25 16:11:59 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Geliang Tang X-Patchwork-Id: 12791716 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 7A0DB28E0 for ; Fri, 25 Mar 2022 16:13:04 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=suse.com; s=mimecast20200619; t=1648224782; 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=T8U0HX64BWkupqaQLzJsNx1hUYdCp2sxqpQqPmXJKrc=; b=hFhsOEtH50YyV8W8kD+5SJFvSETGpoaYvwbFqzL8A+ObhdKOXZdwKRFABPfcq04ejN5W3F IP/kNme70IuIOlpMY3b2nZ/jo3dAri+/TD+PRyxyLaAyAaigcm3shOaB5FUPTJ3YNEf/+B 61hwNHQMUIKbAXYJV5SKeZ6ub3cXVBg= Received: from EUR01-VE1-obe.outbound.protection.outlook.com (mail-ve1eur01lp2055.outbound.protection.outlook.com [104.47.1.55]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id de-mta-6-RvHA2Ex1MkOuSVMYoums3Q-1; Fri, 25 Mar 2022 17:13:01 +0100 X-MC-Unique: RvHA2Ex1MkOuSVMYoums3Q-1 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=msDpxZqNYJEp4JXSmg0n8cps4St/9a18Hu05C7Q02zyJW6y5bzWijc/Y2nLU2MnycnwuAZtaUcNgZjV7W7Ounn6D4izq798srmjCgfBUZrgleM4sWbATnrZisb6dHMSJ/hg5+uuZ/OX31aENIgQrgKe/j8JtoZnp20rqTQ7yOY1ntvwRXiRGugkDlr4Bmx2IlCjRNAbDCayPb7vVYf1gfC6BG/F50/bvXpdTkRX/TK7axzdDFK/gakH3kcKVVUnD6xR2mqFQhJqofkxrh/HEGhPmUFm6CBJfqRiyuS2pX9X7Xj0WHv7lY6McoiypzJXfAwNRmTvmOCqJgfnOs7Jhxg== 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=bbRje2DlHQVD/gGd8aoWkn7Gb3gDmA9ITECUAWaxlb4=; b=obeEIyVQebl85+Zi2tldOA7ClwaXUJ8YjdDzlxXjcU4apqnFZXTNgQSLk9aMT4k/woBwYr4NBkkr7k78VXxMWP/d7pQRY/YIlThpIVEIjdWMxRNSNoUKjuikW6lO7KwwXA+D7A6vsL3bz4kXWth8idQQMojr4dTATgAApyS5l+XyrOE+wFbB8qxSE/NDyDKZWOAZVEIGpkH58MdHqnPymQO8oTXzxtjmIxvFJ0q5c9puiM2LuBLGl5t5gf2mRPuU+QzsZfD+CqkCQwpO13BMs7bLyS5MspsOdGESyUJoQD/rU404ojDMgKnmbU+cPu0zhw9W14ky3ubNx0NykloixQ== 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 AM0PR0402MB3938.eurprd04.prod.outlook.com (2603:10a6:208:7::32) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5102.19; Fri, 25 Mar 2022 16:13:00 +0000 Received: from HE1PR0402MB3497.eurprd04.prod.outlook.com ([fe80::b110:cb51:e09f:bb05]) by HE1PR0402MB3497.eurprd04.prod.outlook.com ([fe80::b110:cb51:e09f:bb05%6]) with mapi id 15.20.5102.016; Fri, 25 Mar 2022 16:13:00 +0000 From: Geliang Tang To: mptcp@lists.linux.dev CC: Geliang Tang Subject: [PATCH mptcp-next v6 3/8] mptcp: add a new sysctl scheduler Date: Sat, 26 Mar 2022 00:11:59 +0800 Message-ID: X-Mailer: git-send-email 2.34.1 In-Reply-To: References: X-ClientProxiedBy: HK0PR03CA0115.apcprd03.prod.outlook.com (2603:1096:203:b0::31) To HE1PR0402MB3497.eurprd04.prod.outlook.com (2603:10a6:7:83::14) Precedence: bulk X-Mailing-List: mptcp@lists.linux.dev List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: d7e289ce-3352-488c-76d4-08da0e7a54f7 X-MS-TrafficTypeDiagnostic: AM0PR0402MB3938: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: zI0dIf4aS7j/eVdyPCO3S8VJKIiOuuwlW0PbQGHJBjSR9BOx2/IoxhX0Ayte/LSk1apcSZDn1LdRUztQ2x05aWIaCXJKIvBkCOIS6hGzvYoAxHuQCjygGA2fkFGRxx/ewpW7ZN/g/KKPgPH+DqURzVIlKic7AxMZlXEV17FDRTbIvQY1autX0lgWMtD/5sPJIVc79NnokSy4fRtZ+lAYV2xfZZuJMlhyL+wgyPDvDH9cb1BUVC3XJuOij+bvD4mjxDSauyPSXgv/Fqj0s2NrX+C5QsDZ+Gm8xZCzO3yD+YZ+9ZReF2psoeg5tkyqNuW9REXGloN6NG+6TRpq3XE3x9ruBXFqrCMSEqg+VtcRFPUf5jxYcni/J6FLmlHX0mSsYWkOtNlKQZYpYQyh3Ooaq1JFDcjvYj+nQh+noZN7cLwz4mdZmLsVeHU/xuxgnyhxFtGGbZtif2c+FuOJ14vdi9tqB378YwILqShaOlRQvqHakAgdEkXUyO5QoeB9e6M7ZlsH3ZQHHSlc8eEfwMEz/HLLpowlVnp90cNVGnN9GqTLv5o+xyDwBjHWHg+yKemGdtnchLKsbOH0emmmH/KA8tkSJXnc9Vb6ZOoIhJ4kKIRnFuVZiuTRbMRXR/CsryPKQogVhCD+10mo45mUOYUwO9rR1c3sIDrlN+tWo6igXpdxhZs3QyL0Hxwkj9+v/RHz89J7yLzLC0iQ7tCN/7n8MA== 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)(36756003)(4326008)(508600001)(8936002)(186003)(26005)(8676002)(66476007)(66946007)(2906002)(38100700002)(44832011)(5660300002)(66556008)(2616005)(86362001)(6486002)(6512007)(6506007)(107886003)(6916009)(316002)(13296009);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: TWSUP1PKw02f8EfipljJyEWQwiVsDMByyenvtyGsOAnPsDXwYI3A79wInv5zbuPGnRzyWmtOcJepiKUC7uBNMDnqKrYhQtgBX58jZtPUH4urkdMEQoK+gsIlH90tizqRYJs+24DYAWQm8HE2kJC1XoGywt5rmTYml0gNyBpbrZC6bpbG9LdiX5p+QpbAzgdtZsbNNo/bz6ul3B2+Yy/a8lzrUB4BNegyYgZ/Ths19CFQRBityRLBXq3AZzizjB3h/1wfTmDZXht4/K0lkeFhlJ/umgOvJz7Shd2qGL/w1fkhIRpS5TPp81KHj30Joc6AW/UrO5tpJQXWt6XoHJWun6JXTEBW3SrJx991tgMswLGo5deayJjer+g3dmjHBdL0By2mUWPRNAbN2xsNzatkFxkqoDdZaFNYshYqynjDcGymmTF3Ga2vpVuJEDg640kzowx/x6iPydTPjO7a1TzvHgFgrpoLfAJVIEPTIsgFpTU3ayDWZrNwTKYzMdbXc8LLwmSofbE1wD5dOq3IChIyqu60j0WXwid6XtqsWVv9qeexC/QgBexHs8Q4raYwyo+AsqKVIG5DYVNnhwJ2dbArpiknG+R+zqxdkqsG9dnV1jHJi5gTfLCEkb7yJDpB9Fp633byJdqw33jYEcDm9FU+gA7G7zkA14BOTQTtmC5z8tYLjnyv9g7JSlNYk4QbziDQ8jzteJmc9eW7IyELvoIFuEhAmW46f3GVxMIuHnq3IYt3n7+AuPMrIMnceXTBYOMj5NxhmLSUPEMyNE8NLKkRR3aKVfNwY+yt1ViAmDqRhprv9XxSwZmCw98QobIibCQ4PfRpZX8xfHfaMoyJUFMsx/K52L10VwSqybLniNHxZILOwYcbzkapnrSz+MQmJWBUuW4jc8S9XeRVz7FROK/Ewy/Ktmi34XX3zXOd+Eod/fHTzE7NvzkAYoWq30sy68gwQ8knnbkDVUyGCW0emmrRuGAgz2OxKIOTZZzgQpE7v3Br/s42+y79zgui8NefMIzMlOCFpgpetRlwbEO8C3AvERjbLhdhORe+dEwICVpCjZJX9e/AvBleswBh2gaGivunbfQa35LUouHdhFnP1vn+VZD9He2+t4O8DiXIoNYRWtMtT5n5ReE7/hYlHiymGqjNcsG4qCEoKhG/rFE3bN6OXIUZxGWtlu4+CMhJOQwlkT/rSXkyvQEQszsG/PGnX26d4MW+oIonO+aX8R+ew8pq2MFJnoCsUcs6c8I7OUBmtPijk/mTvVufdITj14/ADFK3lYZr9jiSX9kkOkGMpgJztrxtN4fvD3upNQ0k6h26WkxkId5ZLL0EgZuvCTGt+Ou1As7lMfdPL/45XBirSNo7FR/I4a5t8sm3LS+3PXwuniF8cG2MUdTn1BxRH5fC73M07k+KZWbVkPsueVaZ6n8G2v7Spt66DslWsfPbZxTHu+vgqMZ3gf+Tln1oyt4yODE4Ts9e6wlPnaA8mH+QYqCZB+wYHACxGhNtJBUMRxYKJwALOie9ewuJfnep1Bt2poqsTXqPYm/8bj1dxOAPYpKCKQm5r8+nk8EbEajLf64tz1FrRH7mz9oFVhB8x2uARBDfat8w7/w16tnATTzpUOasCm0IJ9A3BtY3Cczj7676Wcd4rA+x4eKP2ma9R0ZGwpD/u2pcTE9cXRmk79Mt6LlhyoF7sC/M6GIsjX/um+62wY3aW/FLN7Lfb6mMGZ/Dl8D94PyzBeq3fjgPYza3cM0vzLQdRAE9L5+5Axe74hn2FEE= X-OriginatorOrg: suse.com X-MS-Exchange-CrossTenant-Network-Message-Id: d7e289ce-3352-488c-76d4-08da0e7a54f7 X-MS-Exchange-CrossTenant-AuthSource: HE1PR0402MB3497.eurprd04.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 25 Mar 2022 16:13:00.4086 (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: dFL/gnQIDjwu4UtqFEWEAr3/fmKGX7szyCl9B8s6whXeXULCEqT+M0Vv3p3rmpGp+rjr1iRd+Jnm8lk3WUBuxA== X-MS-Exchange-Transport-CrossTenantHeadersStamped: AM0PR0402MB3938 This patch added a new sysctl, named scheduler, to support for selection of different schedulers. 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/networking/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. 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]; }; 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; } +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 = 1; @@ -77,6 +83,7 @@ static void mptcp_pernet_set_defaults(struct mptcp_pernet *pernet) pernet->allow_join_initial_addr_port = 1; pernet->stale_loss_cnt = 4; pernet->pm_type = MPTCP_PM_TYPE_KERNEL; + strcpy(pernet->scheduler, "default"); } #ifdef CONFIG_SYSCTL @@ -128,6 +135,12 @@ static struct ctl_table mptcp_sysctl_table[] = { .extra1 = SYSCTL_ZERO, .extra2 = &mptcp_pm_type_max }, + { + .procname = "scheduler", + .maxlen = MPTCP_SCHED_NAME_MAX, + .mode = 0644, + .proc_handler = proc_dostring, + }, {} }; @@ -149,6 +162,7 @@ static int mptcp_pernet_new_table(struct net *net, struct mptcp_pernet *pernet) table[3].data = &pernet->allow_join_initial_addr_port; table[4].data = &pernet->stale_loss_cnt; table[5].data = &pernet->pm_type; + table[6].data = &pernet->scheduler; hdr = register_net_sysctl(net, MPTCP_SYSCTL_PATH, table); if (!hdr) diff --git a/net/mptcp/protocol.h b/net/mptcp/protocol.h index 0a409b28e237..9ad7d83767fa 100644 --- a/net/mptcp/protocol.h +++ b/net/mptcp/protocol.h @@ -586,6 +586,7 @@ int mptcp_is_checksum_enabled(const struct net *net); int mptcp_allow_join_id0(const struct net *net); unsigned int mptcp_stale_loss_cnt(const struct net *net); int mptcp_get_pm_type(const struct net *net); +const char *mptcp_get_scheduler(const struct net *net); void mptcp_subflow_fully_established(struct mptcp_subflow_context *subflow, struct mptcp_options_received *mp_opt); bool __mptcp_retransmit_pending_data(struct sock *sk); From patchwork Fri Mar 25 16:12:00 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Geliang Tang X-Patchwork-Id: 12791717 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 BD17128E0 for ; Fri, 25 Mar 2022 16:13:11 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=suse.com; s=mimecast20200619; t=1648224790; 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=HJ9Kn3CqsvO6gHlstfJWiH7JJtDriLRy7bpXWqlc/M8=; b=Opo69PVRcStx1/BOY8xy3hu8QiHVRHVbcSlHvwBjTCgdi/GGPu6p3qjYotDchc6e/o/Eqr 0ng172S+QJ8DsCY22lq/gt6tS4GorjDBcv2S1WOc6STJsfi0U5UAxaeqMoOKNbdR4lBHeJ 1AH6yW5QpNfDIqp3JZ8bM5CGBEX63JM= Received: from EUR02-VE1-obe.outbound.protection.outlook.com (mail-ve1eur02lp2054.outbound.protection.outlook.com [104.47.6.54]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id de-mta-16-G_aTS_CYN6u-I3Pa6oJP0g-1; Fri, 25 Mar 2022 17:13:08 +0100 X-MC-Unique: G_aTS_CYN6u-I3Pa6oJP0g-1 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=OqlpPSYJD7HH1LvMO8JzYjTv/JWc7hN5xgpn2Y3pGnTmMQonuLvjc5g0syg5let/V6KImvTvQLmQnLpe5kijFlgHW/waLEC5xMa2+8aN3T0w8wOt6aFUUBK5X5vzdM9680pLU4zPmOwA7VAQgCUYCupFPxyVSUfvB7uHFO26h9tqIbL6kdiS9YgMtqzZ7YbyzInCH09R066zTIgDZ5YiGx/8x9yk0Dq1Z/LUmzl2mIqwjkMc3z2xoiH/oBciHIE7fMhHcn6cCvc8zC50NXaZIlouSK2+UPrbpjyE05poOdhytJh0CJG/KyW1BT7hxospM7iaHOUha30i/OL+o5s4fg== 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=rsJonClW8qFN8z2QDh3k8tKojRZx6OuVo+VqXRfPAqQ=; b=QjW6vzHbTHwCNWgYmUyen1C98pq7bSKzgygxJhNeC4FZk8Ec9h54eOvKPRuHFgaBNXIERQjE1fX+N+nMbiE87ecm5apFJO7o/egsu/vDu3bYKfKY3gtf+mFcVO8bqgnoCYXugK5uW06wB2WyfsgSMYSeDDKODbDJ/YFit2UbOZXJGAxu2yuVYllUUXI6tXT2p0z0n0CW0jNJOi/xwNYRjoIXpZUcHVaydHohJHuM8N2JS4iHxl/AGHI5GBZSlrcnTMU6uWataMw8vru1eEWm78cqrUWvI5c+8ppaCEofEG5RcdaxXKbGfjfjmyHwGbI6EIgWa+cNuINxu788If4n0A== 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 AM0PR0402MB3938.eurprd04.prod.outlook.com (2603:10a6:208:7::32) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5102.19; Fri, 25 Mar 2022 16:13:07 +0000 Received: from HE1PR0402MB3497.eurprd04.prod.outlook.com ([fe80::b110:cb51:e09f:bb05]) by HE1PR0402MB3497.eurprd04.prod.outlook.com ([fe80::b110:cb51:e09f:bb05%6]) with mapi id 15.20.5102.016; Fri, 25 Mar 2022 16:13:07 +0000 From: Geliang Tang To: mptcp@lists.linux.dev CC: Geliang Tang Subject: [PATCH mptcp-next v6 4/8] mptcp: add sched in mptcp_sock Date: Sat, 26 Mar 2022 00:12:00 +0800 Message-ID: <19e9377ac9a72587f729820fc793ebdca12d7424.1648223504.git.geliang.tang@suse.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: References: X-ClientProxiedBy: HK0PR03CA0108.apcprd03.prod.outlook.com (2603:1096:203:b0::24) To HE1PR0402MB3497.eurprd04.prod.outlook.com (2603:10a6:7:83::14) Precedence: bulk X-Mailing-List: mptcp@lists.linux.dev List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: a9115d3a-4887-40e1-deab-08da0e7a5944 X-MS-TrafficTypeDiagnostic: AM0PR0402MB3938: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: 5s9NoU2DdBXk86GFhNMt25VXGk4lOL9OEu+/PGGCOtmqWqeqxaKuCcdQmKrFT4VFDsbIep7+TBUDmQ96GvHPdLWEX8Fmv6rV1Pbe+nheFi79iBGm6muhkIq4Z09F/D4z8a/FRx4Er/LzkITJ1mkBfMNAo4e1i910hwg4xqZOPqx1Brq3g2LGn4YmU/R2yTfwEIhuhRLy3sC8mqCOYEGzg90iTBbONk/ZMdUrdn5Bl0nEuYfqPPJlIbqJOeHf7sSfRHQUil0n5L6mRd77ZBpHR0/Ai2XCJ95bxZ3KISLvfLk07Ma21/PaAoTxvfJKw43PXz94dgYFaD2LD1I8JqzOTzNZarypOfHoBk1OhzQc22UbrU+eAnfwG29LkL4VOsjhyUyz3nsRyl7u3+3IT94rgpzWsAHCONsiMR1JBE+6HPT3+FhF8fkuYU0iGfZCUmbdMEWQufWCptSTdwNgUmfOrISOmjEAdnaYTkI9JT3I+ZfjZDek0Xs1aGXzdHgPM28YGzFYg/bfHQaIIKDvyzYB1LwFm9XDwGRqPuKyZtEIX3qsrybBhcYumV/y/jHTF4jydpRXzxaUgah2R4onBcZAOg2aX9N63584fzZcDYQQCCxq8pKJs0VdTvAloB1Y9WDq9MjXIB8KAKvzYyvBt0938kZuJAcMzCIxrQmbjCMhDgJs3lI0EDTgKZesDQVtfJEFyllZL0QMw/YvzL+NQJddSw== 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)(36756003)(4326008)(508600001)(8936002)(186003)(26005)(8676002)(66476007)(66946007)(2906002)(38100700002)(44832011)(5660300002)(66556008)(83380400001)(2616005)(86362001)(6486002)(6512007)(6666004)(6506007)(107886003)(6916009)(316002)(13296009);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: griyEylwxosGiHOyUMFmbUc44v0A0Fpvrf4qPRN1N33pivBPiBOo/Hff9r9IM7y5bhAZbIXzzvADNVmzXMaYU74PKTms/iYagDfZMOvAaP86tJ3COs3Z4e1Y9mapmW/kjKC0KntOTvN9y1ZJOp3nPQpECMgfnpqYLfgfYjTj9MtwqZJYKMyVA4LJZ+OVJ9W5PgXeWfv/G/xGDPvcuaBbF8euWX0UTuKWcLysXKsTiDUOOF2z1LBl5LoInYZTUE6FKZro7GjXDiJ8gQocundl6E6blXRwkVP9GASxe93mdJTsO06qGRmvnmaz5a3FUqJ8jBrxZScG06eTp0BT++ckVWt9g1n47I+GvWztzPFmxZQw/4sKkZLH91RyW5kGRxVG1cF/nu/5xtIEiakC+vX5j6kgFhHVw4P7pJoMQ/bQF1VxPGNdlLAHz+V5PIw2cbFKyIHrvRbWW34vLjiyGt/qumqyokHcEhX2VPHSWu9+1q+ojzfu4JRPCspW6DiJzkXL7IOQ93wEo46DRz0Hzb7ZjeI+q5o2PHJrNuEAOv3K13zJoB5Gs8jytqfpRnZ2vblu4qBwc1EDiXNTfBzoeBQW3xpE5Heb1a0pHuJnMemn5XRcEg6Npvzl6oRjIDH4yUVaEmGLKKvBy52m+U/3tZvt85ZednCkcyajgWlBBuOWmbgZu0FAexOKIPwEmLOCpJ8nbAwhD6GX9VzWYx6A43kYZgM7v6jyrq8KVOd4k2w7CcYvngtQ2LbCxfbRvUeQrpY1MmSe5RljedSUvwEb2VkI6TF9nTShFHhZ9ZUQd4+aBVl+8DF3fQ9gIa2PD8K2u/6xmYEFMMY+EbrJo1LfEyIYUTSTdNaKF2VNqvhACF+cvTKDPYJ0t2vKDj+IjFkwUkdpLcKvZR845pXErA234C8gTIP3ZZjfFfYt6d4xLOiaKGFbJ24zEMNlzqn0PKXfbp4+LzWV9M9gXbxFaMw1xlC3rIs6mm508F1VRwxbcya8bQ4DL1BqECJpQ4jgbqVfPUXSVDbAW4BTngvaSJ4f2UmLScIUgofHvf57ASls59KDgHoYEJchAgK1+Rbt1IhtpQL8i7BtgoimR3TwTgnociIe5KNhL7OfxaODTQI1YSZmPKPPQ7B1f4kfG73sGBceOtaESdjYIPj6ec5WkychtVScR+v6hciZWtP/jMzZmY+2MDD/WQPhcIgqu+LmeU5Rlhsfj/Zm8/Vl1doAyx5jkz4YHbLKcJs+CLs5ZHtKnycf4g36aSZs/QF/vnP2BLVpInrXXjSDqssr9E1WEZZ7xa9HBJFGq4JBc49p9+vcBjpQjKB0tETbNCUyRA0bsTqzckFieafDJDt2oaKGB0HuQj3yJzpEd0T1ZlCaZKvzxDEgOR7AX16Ue7F4HsO63a391aIAHwqYAMkPIxBkk6Bk1vrQUdeReK6GpK4CWs+oyS4Ewh7Dn9dN26jgQcDcTlHE+EvOWWFqYYryTq5wZ8x27DtVCa9Sjc4AYbgCV3GdU2TnVmualKZk4i7afLHZLqKAUIEyKKvTOr3RbOC6q/nbWndoicZInjfj53GenyeOTD+nHYnjv3apqnBjmuBPrq11tUK1CixJPxCqWn0rTIUfvK6BGKaP1MKM/T6GgwGSGFPgsnlh2zcGON4CPiEWqcojWs1fQhhbVaIl7CgOedoJ85FY1Ce8RoG7XyFSAK4i1V5Lrknyl4b8To1BjCPuoLI2Gkylvbp/mmNonH/N0vBfLtFiWdscmRQ7JMeB1J/r0LAxCyk= X-OriginatorOrg: suse.com X-MS-Exchange-CrossTenant-Network-Message-Id: a9115d3a-4887-40e1-deab-08da0e7a5944 X-MS-Exchange-CrossTenant-AuthSource: HE1PR0402MB3497.eurprd04.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 25 Mar 2022 16:13:07.6580 (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: fHDAd1kbfTzb8U2Oa4FUSpqf2qDvEQNTZtW7A/41T5ElIRisgkuM2oGGsrqaMHFvGwSc2ua+l/3b3q3jAzLECw== X-MS-Exchange-Transport-CrossTenantHeadersStamped: AM0PR0402MB3938 This patch added 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 | 4 ++++ net/mptcp/protocol.h | 4 ++++ net/mptcp/sched.c | 21 +++++++++++++++++++++ 3 files changed, 29 insertions(+) diff --git a/net/mptcp/protocol.c b/net/mptcp/protocol.c index 2c684034fe7a..82b3846147a6 100644 --- a/net/mptcp/protocol.c +++ b/net/mptcp/protocol.c @@ -2662,6 +2662,8 @@ static int mptcp_init_sock(struct sock *sk) * propagate the correct value */ mptcp_ca_reset(sk); + mptcp_init_sched(mptcp_sk(sk), + mptcp_sched_find(net, mptcp_get_scheduler(net))); sk_sockets_allocated_inc(sk); sk->sk_rcvbuf = sock_net(sk)->ipv4.sysctl_tcp_rmem[1]; @@ -2817,6 +2819,7 @@ static void __mptcp_destroy_sock(struct sock *sk) sk_stop_timer(sk, &sk->sk_timer); mptcp_data_unlock(sk); msk->pm.status = 0; + mptcp_release_sched(msk); /* clears msk->subflow, allowing the following loop to close * even the initial subflow @@ -2994,6 +2997,7 @@ struct sock *mptcp_sk_clone(const struct sock *sk, msk->snd_una = msk->write_seq; msk->wnd_end = msk->snd_nxt + req->rsk_rcv_wnd; msk->setsockopt_seq = mptcp_sk(sk)->setsockopt_seq; + mptcp_init_sched(msk, mptcp_sk(sk)->sched); if (mp_opt->suboptions & OPTIONS_MPTCP_MPC) { msk->can_ack = true; diff --git a/net/mptcp/protocol.h b/net/mptcp/protocol.h index 9ad7d83767fa..b70582f9c3c9 100644 --- a/net/mptcp/protocol.h +++ b/net/mptcp/protocol.h @@ -288,6 +288,7 @@ struct mptcp_sock { struct socket *subflow; /* outgoing connect/listener/!mp_capable */ struct sock *first; struct mptcp_pm_data pm; + struct mptcp_sched_ops *sched; struct { u32 space; /* bytes copied in last measurement window */ u32 copied; /* bytes copied in this measurement window */ @@ -618,6 +619,9 @@ void mptcp_unregister_scheduler(const struct net *net, struct sock *mptcp_subflow_get_send(struct mptcp_sock *msk); void mptcp_sched_init(void); void mptcp_sched_data_init(struct sock *sk); +void mptcp_init_sched(struct mptcp_sock *msk, + struct mptcp_sched_ops *sched); +void mptcp_release_sched(struct mptcp_sock *msk); static inline bool __mptcp_subflow_active(struct mptcp_subflow_context *subflow) { diff --git a/net/mptcp/sched.c b/net/mptcp/sched.c index 1fb3dd24d6ff..5ccdb1756dc6 100644 --- a/net/mptcp/sched.c +++ b/net/mptcp/sched.c @@ -125,3 +125,24 @@ void mptcp_sched_data_init(struct sock *sk) { mptcp_register_scheduler(sock_net(sk), &mptcp_sched_default); } + +void mptcp_init_sched(struct mptcp_sock *msk, + struct mptcp_sched_ops *sched) +{ + if (!sched) + msk->sched = &mptcp_sched_default; + else + msk->sched = sched; + + if (msk->sched->init) + msk->sched->init(msk); + + pr_debug("sched=%s", msk->sched->name); +} + +void mptcp_release_sched(struct mptcp_sock *msk) +{ + if (msk->sched && msk->sched->release) + msk->sched->release(msk); + msk->sched = NULL; +} From patchwork Fri Mar 25 16:12:01 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Geliang Tang X-Patchwork-Id: 12791718 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 896B028E0 for ; Fri, 25 Mar 2022 16:13:19 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=suse.com; s=mimecast20200619; t=1648224796; 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=L113C1CyIjigBHSG3Ku25ohLRxwOK7rng93Vdk/CJjg=; b=Ygcu9nu2NgGQaS5A7VRHnZTxu48UZjAhc3gTLUo0mEHW6aCF9w4BjTGd3vCVe0v8xbeNvV nyOSOCrlO0jSvj2x3Km0jcQcGFRjCfiG/RjlyUtt0RZCA8CmwMt58oa9CpKVinfq0wTGg9 rBUXcjk50XL6r4YmwI8pSeoKjtcvBf4= Received: from EUR02-VE1-obe.outbound.protection.outlook.com (mail-ve1eur02lp2055.outbound.protection.outlook.com [104.47.6.55]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id de-mta-34-y31MRWJ1NjqA7R9A_S7eNw-1; Fri, 25 Mar 2022 17:13:15 +0100 X-MC-Unique: y31MRWJ1NjqA7R9A_S7eNw-1 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=oXNnKCDtrhpZ7dqg1uLbOnDCzNBQQD6eO4rCHRxGbrHHfE0ckh6rMfzKLJmADzFgiup9ta04kiBoUkskP58KcL+9KPyRZny4e4kpUIF2BQ7ewWTkm1Tg56xKbtgbCDu0WjozeQBNkFjDU35IxBPvAjoFEdAZYhdF8Q/bD2ltj5rHYCIjC828zDaLg0Ikp/5GfrSlL45VgEu1pvNlCC629pGa8EnswUkJTc4pm89LopsztULfaIS4QjH3dtJffkvvJuv1d8i6sZbNvVUdloqydw/FxJtRBt8I7+79d7XvcWPaJP/LRY/3x0Ck1C9VcBG09XMlJeWxvISXFEJWNf3h5w== 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=NyK1m92KGgv1I1oGgO7bR3/zPiwamjdS6o2JFjVrnqY=; b=QkNLtiOKemWgDUa9V5Px45C4ShSrJsQAn8DCbFGMkVY0DDyp4dWZeRW2S/cG7ost+guhVnoYPxPUQYKJlDAtZXvWxOC4S50Up2BW6TcLqVgH54w4X3mpaP6u4A1xupsBYTDUOU5NAfPmXEmPctig7j14h+b2YY13JkN0P2D4U2BE2vuvGLI3ff1w4f1OH6G+GKc011PNzdDvZ8YVA7as0rDeFP3fyqT2Z4STxDvlNzKW2ZwSURJq0zEVikuNXrGShag3Ab4mVmGVnXKYbnNWGnEOSPmZ1sMbGRvPubROHC/7aTa6kLCi5vOqPXhvo50LVTejCtYEwEhWTHhVh+8jeQ== 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 AM0PR0402MB3938.eurprd04.prod.outlook.com (2603:10a6:208:7::32) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5102.19; Fri, 25 Mar 2022 16:13:14 +0000 Received: from HE1PR0402MB3497.eurprd04.prod.outlook.com ([fe80::b110:cb51:e09f:bb05]) by HE1PR0402MB3497.eurprd04.prod.outlook.com ([fe80::b110:cb51:e09f:bb05%6]) with mapi id 15.20.5102.016; Fri, 25 Mar 2022 16:13:14 +0000 From: Geliang Tang To: mptcp@lists.linux.dev CC: Geliang Tang Subject: [PATCH mptcp-next v6 5/8] mptcp: add get_subflow wrapper Date: Sat, 26 Mar 2022 00:12:01 +0800 Message-ID: X-Mailer: git-send-email 2.34.1 In-Reply-To: References: X-ClientProxiedBy: HK0PR03CA0097.apcprd03.prod.outlook.com (2603:1096:203:b0::13) 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: 13893a06-3c22-47c4-9659-08da0e7a5d81 X-MS-TrafficTypeDiagnostic: AM0PR0402MB3938: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: Hlb+gGzEKV0RVEaQacZTKju6MrahmBjwUAdYEpqm35rS4pqAaq+CEzPmaRJv251rsvaKH6r0eVuZtpJWiAVpnFlgMi+o2MRIPp0i4hw1YWhCi2LuMFkscAj9iFN0IG1K4Ky+2FFk5+IU1B933eLHA2zrKAwjNLnrHMi3nlXryHXoK7zgfg3n9XOe62xUclB4xBX/7Xs+Kc45p2epr73hjhrSJccdkX7GIdfMAVK8Rh2APIgZEo1Ndet4EAL986cIQZqPE0PFRBoLixMieHw9VO9p311xcm2NQxMxb2PuXwRi50inLht22FpnAcgZDvXzV7vHhW97gQxiOToXib1OUPSWIK7TEmf0hXBmT5mZZL0IrBZauoEzgAZ7pxmWAVpemXWQKQAUvlnYDtNQtsZr9b9Kcm3U0e03XFflLJjW/Ifkae95Lv6XjQHYBCQhtZ4kwZlXQuTKId0Kn5G6scunK3iri5CLpzDQd+glMNP74N5SQp0SkeW6fiXwUWSauWR3Ecyzz6RiS90hbMU1vpxNMEYvoSIZIuk2oGwFFZvJrR+fRHM84gtt5xx3C2d9TNMT1Y8LZpEqPIQZShCci5+ngYc5C0ndX+Nep6B8xabn41QyJPrVKapkVTVSOE9FPRWKNBzw9v3qmxEsZRDROkp5sMGk2BDDMiCwL4DK8HdF6Uo/Aou08hREDy+f0x/rBm4d 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)(36756003)(4326008)(508600001)(8936002)(186003)(26005)(8676002)(66476007)(66946007)(2906002)(38100700002)(44832011)(5660300002)(66556008)(83380400001)(2616005)(86362001)(6486002)(6512007)(6666004)(6506007)(107886003)(6916009)(316002)(13296009);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: gZjVS4MwisNZvqUZlXaXBi+QUG4lsU6CeKggC4kIxayNkrDUhLqf0/r8tqy5g914AOgUyhCTrfkRGKt6J1Dl4pWH9LXIUo3yZ+tEGTQZy9+HLdhwKpngzHdNHc6qMe7l/oosTE1ZxwaUsAM1tuxykDvh1SKbLWQM4Zjxz1a8f6TNiLFKGbcCN77Kqc8ixyqXgDYXnCwDZ6v3Mlvur0R7F3StZJtVMvn6tMsgPKNkGxAd+q5l4BOjZJoBezmVyjtRZoUNB/MylNFmvWj1+xUc1yAOsRMHZ1rVwdV3bFZvRSpi2ifDO1vGC3diQ/8YtE7Vat7adwsMfPHnSS5/Fq6fX2xLKi8R6rOMVxoDBVu1gv2ZWbvyJvsDe3bMecZ4bsnOoJqgKhsSIeLqfjK8OItjaGQ1EaW2IegKKBbz7oELT6V+uihQqsZyRbSpBPJk0WIv88CpXb9QUVeY4b9RejGznqxv4MVM4bVu3A4zrgvdrhHc8MVcSaPykcqozAqL1nqZi5SAE7aYCPQJ4r8+BFJZz7coYESW9q20L2NnxeEgIOdiPxUt4eHhiR5ik4642D6YUbdCxNnzUSj+hE+ufhTGMF24NmdT5BBhDZzYCnhk9Y602PCuQrplt0HxHc5THiT2+IWNOniPg0WDWVs1xMzcOGAk03iIg0N5GFjigtLbx3mjnCu0J3FF3Yza4CCiQUWSj45Il25JBdmvaxFKfXk1WUNDp+LPRIDgzsvJea/AEzqLdmN/5YtLiNeva5Neq7tPGKM4AYgWA7Fc+rdURJ31x5E+38kpVVyQTjHay7+H3O8jHMT/zynAwkk7fZRWd1SymF5upxF6JNMIVIjk28grHhRQt5ly9+tYFjIGuSN9iqLJ+QiOf/fE430Gu6hUZkHA9bWYao5sPlM2PAcbQ7EAgEJDxXVtjpEU+JLH1Wxt2BpcLWerdl73rJIZuN63gKX+B2dW0pl84/UxZaCHp6cr/2BQibYciaFDiMlaFK1hiIOaS8h+J2qHO4aoicCSRPG8qukP5hlYqWsQw/OOo8FeVaGa3iQ6jE1FZLKDo0MyP3Taf2UBHal4ex/ADdpt+Sxv8FK0gWeuAR/h35x03Xdl1ACOP5MF9OWlL3j13jTinp1dRyYtre9cWg2nLqzc12FJhancGSjx6tIx53NLouhLn1c9fg6+nwS6B9aJU6xzsfnrY/lWtUwFI0y1tILAIAjk8UNqvvOb4BhPOHMbao/WirnllBTBTrE988+/BlW8RDjzcMQa+CKmPROTPOw8mpIdoP+Nq6wBjqFHjqsieczdxrlnEftMjIa2s177qcnf9/DQI0QCVdchk9SI2uVCr0AdalXvTzYG1nYvKchomUSEWfn4yT9EgkP/glhGjHVNL2Tmo9uPgvymklJgvfx0Kv7ba/zrbgZwBGc2fMuVBSt5OCc40Gw/BNv9nbBWcLRy/q1RCucXkQ9ahzTOWzUAnUDFwWWPeypzkNyygBbCWbh+TIIVwQj6NjR7yaym0KB/bOjboDJeis4P9fCpYv6YSLHPZmFIMyVnWom3CVITB4q2ETLUD4HSoKjRynEg4FAW50Jjkvb1WVl5vw2K7zA2NnRZKtRXszM4QvNVeS9EfsQWTiSo0oP5QlMD9PBGjL7IvAYY9ggRCEcrkx5hA3uuLisaWkYJJXBdrcqmjtF/je0RkqEM3HwLJRG5OWQW1cCx3Q8zaPUd+BABDVhRNq+J8p99xSoERxVZJ22R+an0boXEErQ4ID1Iz0zuYcqEsjEvjes= X-OriginatorOrg: suse.com X-MS-Exchange-CrossTenant-Network-Message-Id: 13893a06-3c22-47c4-9659-08da0e7a5d81 X-MS-Exchange-CrossTenant-AuthSource: HE1PR0402MB3497.eurprd04.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 25 Mar 2022 16:13:14.7043 (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: GfdCFoJAMkmblfxBemhWGxJEmKCI/7RnjPWAZ2gQKreAMligGOmZN2/kT+GTuRM2YNG9/BwA78VMxgqrMaCX4A== X-MS-Exchange-Transport-CrossTenantHeadersStamped: AM0PR0402MB3938 This patch defined a new wrapper mptcp_sched_get_subflow(), invoke get_subflow of msk->sched in it. Use the wrapper instead of using mptcp_subflow_get_send() directly. Signed-off-by: Geliang Tang --- net/mptcp/protocol.c | 6 +++--- net/mptcp/protocol.h | 6 ++++++ 2 files changed, 9 insertions(+), 3 deletions(-) diff --git a/net/mptcp/protocol.c b/net/mptcp/protocol.c index 82b3846147a6..7bc7768f63e8 100644 --- a/net/mptcp/protocol.c +++ b/net/mptcp/protocol.c @@ -1567,7 +1567,7 @@ void __mptcp_push_pending(struct sock *sk, unsigned int flags) int ret = 0; prev_ssk = ssk; - ssk = mptcp_subflow_get_send(msk); + ssk = mptcp_sched_get_subflow(msk); /* First check. If the ssk has changed since * the last round, release prev_ssk @@ -1636,7 +1636,7 @@ static void __mptcp_subflow_push_pending(struct sock *sk, struct sock *ssk) * check for a different subflow usage only after * spooling the first chunk of data */ - xmit_ssk = first ? ssk : mptcp_subflow_get_send(mptcp_sk(sk)); + xmit_ssk = first ? ssk : mptcp_sched_get_subflow(mptcp_sk(sk)); if (!xmit_ssk) goto out; if (xmit_ssk != ssk) { @@ -3135,7 +3135,7 @@ void __mptcp_check_push(struct sock *sk, struct sock *ssk) return; if (!sock_owned_by_user(sk)) { - struct sock *xmit_ssk = mptcp_subflow_get_send(mptcp_sk(sk)); + struct sock *xmit_ssk = mptcp_sched_get_subflow(mptcp_sk(sk)); if (xmit_ssk == ssk) __mptcp_subflow_push_pending(sk, ssk); diff --git a/net/mptcp/protocol.h b/net/mptcp/protocol.h index b70582f9c3c9..92813aea0f12 100644 --- a/net/mptcp/protocol.h +++ b/net/mptcp/protocol.h @@ -623,6 +623,12 @@ void mptcp_init_sched(struct mptcp_sock *msk, struct mptcp_sched_ops *sched); void mptcp_release_sched(struct mptcp_sock *msk); +static inline struct sock *mptcp_sched_get_subflow(struct mptcp_sock *msk) +{ + return INDIRECT_CALL_INET_1(msk->sched->get_subflow, + mptcp_subflow_get_send, msk); +} + static inline bool __mptcp_subflow_active(struct mptcp_subflow_context *subflow) { struct sock *ssk = mptcp_subflow_tcp_sock(subflow); From patchwork Fri Mar 25 16:12:02 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Geliang Tang X-Patchwork-Id: 12791719 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 4D06928E0 for ; Fri, 25 Mar 2022 16:13:25 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=suse.com; s=mimecast20200619; t=1648224803; 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=403NC//BzxNy+eal0mq1CgE2HyEPxAJS5JJ4BI6kTa8=; b=jMiHGWXN1MRnD5mVKN3H9dZ0O4jRP5M9DNK2am0xHHfOKeCmbA1tR3ABAjRn4mQ2ybeNg2 fzW4yO1I+qPoQSEwVcUer434zecz4mDLQeN/CiqRQ4t7H5GbkM9VP2hly8AdfQ7rW6NWcN xWbHDUzNnP6NNNBi6DXn2PjMJRcyQNs= Received: from EUR02-VE1-obe.outbound.protection.outlook.com (mail-ve1eur02lp2058.outbound.protection.outlook.com [104.47.6.58]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id de-mta-10-PX4cWsXEMwypvAlhtNqYRA-1; Fri, 25 Mar 2022 17:13:22 +0100 X-MC-Unique: PX4cWsXEMwypvAlhtNqYRA-1 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=OYx9Ikds4gNcZYwzuWf+XxOV3mhUWIm+opmENfuhqcXLtg5YqHXmZAle9ynUxYq5aPHo2SGKkMgElczF1+k/0XcAKLz2FocbDWLrEEgA7X0AWGq9UtDfTSKNCx/E32xbKoKTyBlIx4ltKygUxG3Z/9O1Qa8yXTocjtzxhkQb0d0njES8uTtuXtGYx2XsweP5oqqFW7lutYfyy+/4sTIYn5CFUWPQbYKZq56ia8eP3eRbLhUpvv9Npank6t5OHlO1ObhuqYm8SwVxH81CXRjQkehUdO5Kk/KLVCBbn3HhFqvnEeg6CxPmwQ3iQkyXOtZywruKPvrv0/nf53oKSgfX/g== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=dbFbJx7cZItfPcmZEu11ek3xFdnXq6L7H6KcbcEhc3E=; b=WZJ+ABnltCqhxkL6+6vgUIJrJotE6UqW8rV9j45K/o581cIczHX22l6NKPGmtQOW3eXjE1X1hkX1dbuYM/jvB4md+PoNNDIf4SoY+ViMcQn5smGnoozNRGYjHEJzWumpWLFi0n4h/Dv70V1s/lW9v9wPW7tBmAIEhtUDIGRYtRpswlC6LAEABuZQW6xaBkRRWMeobMSLMwEjRiOog/IbZMQMtVtin4qcLwGMqkf4t3qnAHyJGP68+PHTN9clUh0FswiulrtB5zwEmd5uU0f/k3RuFq6rvxWkzJ9NdJIj7n/mkxtZnCMUBopLktnaeoVNRL9cNkcTjLhzn753ac9tIA== 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 AM0PR0402MB3938.eurprd04.prod.outlook.com (2603:10a6:208:7::32) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5102.19; Fri, 25 Mar 2022 16:13:21 +0000 Received: from HE1PR0402MB3497.eurprd04.prod.outlook.com ([fe80::b110:cb51:e09f:bb05]) by HE1PR0402MB3497.eurprd04.prod.outlook.com ([fe80::b110:cb51:e09f:bb05%6]) with mapi id 15.20.5102.016; Fri, 25 Mar 2022 16:13:21 +0000 From: Geliang Tang To: mptcp@lists.linux.dev CC: Geliang Tang Subject: [PATCH mptcp-next v6 6/8] mptcp: add bpf_mptcp_sched_ops Date: Sat, 26 Mar 2022 00:12:02 +0800 Message-ID: <531f998e3069db7f5a21ba9e3a888ad5f1024253.1648223504.git.geliang.tang@suse.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: References: X-ClientProxiedBy: HK0PR03CA0118.apcprd03.prod.outlook.com (2603:1096:203:b0::34) To HE1PR0402MB3497.eurprd04.prod.outlook.com (2603:10a6:7:83::14) Precedence: bulk X-Mailing-List: mptcp@lists.linux.dev List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: ce20de32-fea3-471e-6488-08da0e7a6193 X-MS-TrafficTypeDiagnostic: AM0PR0402MB3938: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: pMtrSwXFTHkujmGPIpAbNjpBU9KRlXudxzekQ3jQsn0GhOGRRrjBxr/e4DxZ7YaK66ZLXQOO0Iw2S/pzLaFLzCspQmtx4D9AQqI+lLM4BU+aDsCbegTURUnsHVeRvhwErdkPbIdkVJFITfvdAod5DG9n8p8xD4cwfe3owBMaxme43HRUI27EhNVqaP/EvpCCdjV/3By47OUeo9fdwLzUgDZer6m1eqDLtwFK2G0FhPbJ8msUseROE4WWnn0x5dE00Cgp2CAIflHsvsayMpbzf1/2z4b6PnMvQHECvHidUoMOsJayLnbi3y2xU7QIwsO86UCGkV6xcqd3zvpVxrMKvNwLl7BNk56gOvMkXk2dRowZd89wWu+yPVq04uuNFMa1WWlG300QenagmDPYcgsrIaZ7a4IGdf7B2qNi4WhDnszLtn6aGvumrUjK1wYZ9ouyacdSgeiR0Zdlu3xL0CKGnHyvF4cMGrAA2/9A4X2caf1EtKBoOWvycIdBOlyVGHfs0pSY01PCTl5GSbhPM4dpJu/tqdRPB7ctt1JimhOPEyYRjqOi9yvjtIc1GWnh8XGMfpL1jTZBOwYiabwqj+pkG+PqCjDFnf9Thrwe2W8W8cUFelXRXbkwS8FjK8Z7EW5YNHWsCTAn/g2CeMOCxOvf7aBIthYn/scSYd6bjMtp+ZiKg/4aEBqKa/X+KmBH5BYhRQHjBVWLTR/N5usN4++fwA== 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)(36756003)(4326008)(508600001)(8936002)(186003)(26005)(8676002)(66476007)(66946007)(2906002)(38100700002)(44832011)(5660300002)(66556008)(83380400001)(2616005)(86362001)(6486002)(6512007)(6666004)(6506007)(107886003)(6916009)(316002)(13296009);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: rBJWg89OPmQcQu7+Gkye0l7oeL+58TEzCArLnIEl6GhJLF8AjIkGN+Mp4tJ84fRpDihMNAeuszRkAO+79qsirSwBJOVz4aTY5dA+Fs5LGBPsSKBYdhiSnHkp0Q3efUmx1pRWaRU45axLBSwCNgBXyRpc4iqqvHrfPt/x0geEf3i7yj8X1IaV3rUgicxmdDhWDhTO4Tr4b+3gxq4N6hf03ZfjMJy5bpqd2F4BNTVTetRIGRBXAfDKcLI4jFtFSb3oHj9BCXehEO7aUfLAavNkhhrO8JfYK3MK0MbT4qoGJxB0e6vgfbQKPlt1YtK419QSqZ3LUJBvyLh53s1xWawD5+vsaTUsSWFk1LEqwAEhR7X+xBkW6zLnFocIMDa5NwrkLReNZpRZdzFl0K8WzHY0LLQj1axH8BZE/6nKt2BWBXmXcR6+K5HdfBo1G2dUfXy8oe8ZwFjC9ZS6Cbk8Bq+mz2Yl4PXHEUpC47F81KaoYgqU5bJ0DGh9FrXWVBMJB9iGcNOolS0p31FpE4iJ2SIZlTyIWhg/KHZDw0MjOKEyzeSiD2lQ8mM1JAegLVUtStidJPLLHnrZSpkUQwSdiqWcO7O8cfHcfCOm2Zz4CzY3nDe1XfFqyyUWl134c9D3X61DTdiDcjU/7INq0G4NxOZST59i145P7UnEv4+zV+48V3OZqf9522Z4wVUYfrgyhkaJD9sMIvTVj4WQimpY2rcyPu2JKfVJ1X82EVSLEBJUxCK6OKaGqFDb4elzfhZMADBSqt59YMchljcdrEDXaxdxdAuJ/AbCswcCwnB3vObNpy+poHLqX4ClWZJL6y6v0R0t8kI1GVP8H9SjuPU2aZRbuZOHhxIkQlfKCNHIeUhkRmI24tzCvhvw3OkPkRuTt09lmFjGUgysnRgqSXCduHzMXxVJzaWCw94wvFL5DzGFFJFSKVsFYPdzsJAhmTu5/eNHOcHei2c+8yFKlvC0E1HFXJp1st2Ewk0/KuJqDz+nmcIBU3sovChiutY4Oln2DwgGNJVbWq0UOk90UyMNGUXkWy5Okc88R9euutDbN3PbW62eCrNW81dZ5EeXh6nFPgsdbXs8XhEGIQJO+mTu1GKY/etmcIihqelyJ9ICkLGvko2hkj58VTjU6pc1EUNWUljWSLYkVJycBhfRkoPvRxuMnMSWJ8Z/oYLpInWimtfHzMKGbHnnyLHJfqzwtrlsbt9czokCa/+Sq5vUy1PQiDN459ElVcerrgiszBAmx2EnIe4aI92YVHoxkbYNt7Xuz9GPBZJ2aYm/yjg6wLTO1F4jrN/2VCvIvKQLTHIMlbmmYcaN4qeJgyTi11tcV/MAxli7rycwrMQyv1+fj43kYWad1vCR29nPkwOm/RsTsrl6guGt15pLGK9yW3JycFPvAKvUxfa/9z4GFI6bC13vz0nllmc/H5e8ssBQ+SMY/LbFPgdqZaoCGxG+GH7SpLSn6r28icpKVu4coBc5jpGTg1eKyTc9ZEjj5qcibTHknkK9F0wDKyawahIm6GbeuufL4muJgh+/InhmvP/30reGq10HFcS3kTrgg+WaLBwCKNdE6ESvYAAb8hm9HSinJ+LQaFIeEogEQqMRwqRN4xK75IEh+8KzDeAReQGhJW56V2dVsfkkGio4RdvZjQLuvspRMjGPBc1wv3rgPZ5ysjdfG2x21ekciCxNZTm7SPDWJmumoZua8cd/1VZ5XOrDRpxUur+0/AnT0mr/pglEx12FIqANPn6qbo9jbNpq/99pIOU2z94= X-OriginatorOrg: suse.com X-MS-Exchange-CrossTenant-Network-Message-Id: ce20de32-fea3-471e-6488-08da0e7a6193 X-MS-Exchange-CrossTenant-AuthSource: HE1PR0402MB3497.eurprd04.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 25 Mar 2022 16:13:21.4382 (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: 1Mi+As+AfqX1QzG3Z1LG/w4kQegYxgMcYVY5cD4ylB6H2HZNM//4JplK2rT5JEqCbfDptajHkMRROJgTvaQTYg== X-MS-Exchange-Transport-CrossTenantHeadersStamped: AM0PR0402MB3938 This patch implemented a new struct bpf_struct_ops, bpf_mptcp_sched_ops. Register and unregister the mptcp scheduler in .reg and .unreg. Signed-off-by: Geliang Tang --- kernel/bpf/bpf_struct_ops_types.h | 4 ++ net/mptcp/bpf.c | 103 ++++++++++++++++++++++++++++++ 2 files changed, 107 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..be809438c5d2 100644 --- a/net/mptcp/bpf.c +++ b/net/mptcp/bpf.c @@ -10,8 +10,111 @@ #define pr_fmt(fmt) "MPTCP: " fmt #include +#include +#include +#include #include "protocol.h" +extern struct bpf_struct_ops bpf_mptcp_sched_ops; +extern struct btf *btf_vmlinux; + +static u32 optional_ops[] = { + 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 const struct bpf_verifier_ops bpf_mptcp_sched_verifier_ops = { + .get_func_proto = bpf_mptcp_sched_get_func_proto, + .is_valid_access = btf_ctx_access, + .btf_struct_access = btf_struct_access, +}; + +static int bpf_mptcp_sched_reg(void *kdata) +{ + return mptcp_register_scheduler(current->nsproxy->net_ns, kdata); +} + +static void bpf_mptcp_sched_unreg(void *kdata) +{ + mptcp_unregister_scheduler(current->nsproxy->net_ns, 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 = 0; i < ARRAY_SIZE(optional_ops); i++) { + if (member_offset == 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 = (const struct mptcp_sched_ops *)udata; + sched = (struct mptcp_sched_ops *)kdata; + + moff = __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)) <= 0) + return -EINVAL; + if (mptcp_sched_find(current->nsproxy->net_ns, + 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 = (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 = { + .verifier_ops = &bpf_mptcp_sched_verifier_ops, + .reg = bpf_mptcp_sched_reg, + .unreg = bpf_mptcp_sched_unreg, + .check_member = bpf_mptcp_sched_check_member, + .init_member = bpf_mptcp_sched_init_member, + .init = bpf_mptcp_sched_init, + .name = "mptcp_sched_ops", +}; + struct mptcp_sock *bpf_mptcp_sock_from_subflow(struct sock *sk) { if (sk && sk_fullsock(sk) && sk->sk_protocol == IPPROTO_TCP && sk_is_mptcp(sk)) From patchwork Fri Mar 25 16:12:03 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Geliang Tang X-Patchwork-Id: 12791720 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 1090628E0 for ; Fri, 25 Mar 2022 16:13:31 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=suse.com; s=mimecast20200619; t=1648224810; 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=el14mbDNzMQKfIz7X8FmdkOL32gSiWivSI0Gycj16jY=; b=gkMxqIDM8H13qvDK1rSnuxCDsdobf3NlYipdYhYTPtkhQBg2Senm1JG/iozCPjM0FKR+Uy mVto98VUaJQitSLsEb8XxKHVLt1pwnVU+ZMX2TYXx6nhcye9KsZb9jDAOFUkCPgXQHglXD X304sLxWx83SiA6Moq996ag6HkHytlo= Received: from EUR02-VE1-obe.outbound.protection.outlook.com (mail-ve1eur02lp2059.outbound.protection.outlook.com [104.47.6.59]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id de-mta-5-1hg8GeWaO_GYjwNZR8liAw-1; Fri, 25 Mar 2022 17:13:29 +0100 X-MC-Unique: 1hg8GeWaO_GYjwNZR8liAw-1 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=g2TKpV3NaY6o8/uSjEj3kB78Eym3WXJy3vn27PwvypUo9KvTnBPbtNdtnovjhzlAzXOFG1kCfeaqWMVcAZU8YG4iz0IBPLoP2z0aI4yvLkKXZfJ9fwBPrNr9yYAQoyGp1zRKINiIqeQsyzznv3MxL/Ycs8qNCBoTnaHSvwfGM2D9LTLeknyd8Uajm6pPLLA9RYLyF11qSgldxNiMttmMEaZtSZxds4AQ9bFF9Cuay8HXbsWx5yLMpIwPH1cyM8UojBULsFnDdf2GUrzhn0PiQzIH2E76guS2wo7BxAtK1wA/CVkVvA25yfUsA1yeXvECZofNxOgW5/1hW5iDM7vofQ== 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=k5FH9XtcH7HyTwHY5I1wHeCwYLtUvyGzKzyt2JprDa8=; b=StqFlPiBzvKE2bUqMaiPyReUttbApadRhN5X+9yfBF2BctEK9M3sMWsrG0fDTOAWkjbeMDzCjybEWANK4heCYTNIQMPJc8/i/+QVhU3KPsolEKzzlXY9fncWrf13L/SKRIOx6l584Eulo4yzpvYwWtwUC59RBN9EKbv8a3FO3H4iA+b40F3DAssXxbKB+EBYzbp7dKTuxOYBiIrOa9bby269gu4ZONdH7FrY/67rz9SF7ZKbdRVSITqCSnAGtrNUfzhwjmJIjrBCpAEKiA9VQtp8BgbdUgBH88jCkyd0bVz0mqMrQjlx76ahVVTizdIiKPVFOX9Y5c8xJi/jdLWJXw== 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 AM0PR0402MB3938.eurprd04.prod.outlook.com (2603:10a6:208:7::32) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5102.19; Fri, 25 Mar 2022 16:13:28 +0000 Received: from HE1PR0402MB3497.eurprd04.prod.outlook.com ([fe80::b110:cb51:e09f:bb05]) by HE1PR0402MB3497.eurprd04.prod.outlook.com ([fe80::b110:cb51:e09f:bb05%6]) with mapi id 15.20.5102.016; Fri, 25 Mar 2022 16:13:28 +0000 From: Geliang Tang To: mptcp@lists.linux.dev CC: Geliang Tang Subject: [PATCH mptcp-next v6 7/8] selftests: bpf: add bpf_first scheduler Date: Sat, 26 Mar 2022 00:12:03 +0800 Message-ID: <35c97d89297abe349b746582f5db9319c171a787.1648223504.git.geliang.tang@suse.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: References: X-ClientProxiedBy: HK2P15301CA0019.APCP153.PROD.OUTLOOK.COM (2603:1096:202:1::29) 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: 671e3790-9050-4e01-4761-08da0e7a6599 X-MS-TrafficTypeDiagnostic: AM0PR0402MB3938: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: aK3DRhvQkS45rzuFbJWrxbQ0inivzS6zmcaWUFzfTFg9fUpF8KQesObp3hGNIOGhJTUgEklJ+qpnaeIU4TpdLza3Uu58kbaycxnDKev/C7NM10JHtRhm2wNISVgj+ZINtXLptHulIEU/IfPzAC1AY1mVkFmyQ03GQ/td0sT09jgTLAIRJ4PZjmo6Q1mHiAy1ayrfNMh+Ba1fFhhoaLt1sIQkeTJFLSo6GPAbJ5eSJJpSHkPV7HO+aq9w1x5kebnI/R2t3i5CbiBEBc3TtcfxKa5abXYapP8cT6HZsnQsWwtCgU680hKoCgjnPPt2/6bfqEl2KD/1BAS656oQNh4vxYWaaUJgNdwpy4ejeP5KX2MxLDoldhB3+sd3SjebPfGz+/Pq6yhHaIhLnkNX+DcbvU5eUpIuGoKSJH/WdcanYWKcNDDjQla/E24VErjOZDsJihUkt1iWCjN6tqccR8waWTDDYFiXLtkgcyGsf5gb+FYeC02XJdcSnswzFWi/p8BjuVzFr3zaZdov8Q5MYbu1S3xzDGxfadaN1rBlBu+0DvuYywpdYuyREsjeGXJQvBzqHuBexKtl0mz+YlII9RFoWGYJxrlaSK2mgyPT21g/zGEVQvg/bzAibKPSpjxfMP0RWi1TIryCsntQtR+tvV8ANiznXO8wkyKGsFd2+gKQIteUPqbNJIA2iZ+OYU/U97KD 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)(36756003)(4326008)(508600001)(8936002)(186003)(26005)(8676002)(66476007)(66946007)(2906002)(38100700002)(44832011)(5660300002)(66556008)(2616005)(86362001)(6486002)(6512007)(6666004)(6506007)(107886003)(6916009)(316002)(13296009);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: JSWG+sHFhYh1H8gbIxF0OAh8wC+9AEFyvpE4TE3mWijtTS1OseVdRnmgp6SoIVOiLL+BeX5gVE/clTN8SFZYPp/fmUeOT0vB3kd/uJnxIs+Qo1rQxVKC6v2ZgyEN79UjybVd7viLlvFEKAqnQE9El6LMJUHMvJ+9FdR+IyaKufGTKz/OrfMmLg5qKQeN4etGayxcQTuCJSz5Pm35g7rtAOIg71nhNHdEkt33sw8pYcZzMubumfUu4ouZ9EnVYTErkujQeKBzTZ+nbGVhEtV2kLL9VFsTXxTV9S3mZqCkNL/yByumt0IUCe18NuPAynOmvRZ9Q4n8Txmx9X9qBUIp1QhyoET0ei55YFFCkIfrHREOwML2PqLL/jqYUlxLuagreL5Tmv2ouDI6Osk0Fg8ByCzbwH/YOuU9CrMJOr0xUDya1A3mBBX3Url408XUbS7BjdqDZx0v0AChWi+r6uSEE9zbFvt2f2iGgNh3svSUtHhrKHgHt2WcgAj38bRytcf781dxTnrVh7IDCXurHXu4Jbhsw7Unu0o77kvvth0K0zZJ7I1Ksg0P2DPkQYw9Mfbea0p4weI9wL2FeNUGUnlTFsaIQfPW/p0+59be/RPZb6ZqEojE5YUsbgTRVo2C40eyutpnuwXe1TXn0NP9+DCW9wibiSgtUA3IQAatA0R5plIYHxgYbmHuXM0yrVFI8hBc9kWVNuqtZ+KlVcDI81CWEujcbbiZozzx187FK73ssG7LpxXOG2hsjQqpbxadvRyDLwVCbJPzLhhArHigjcm9UG3op+xXrlTbEhKcUH5lePmSKFa3HFlDQSGqooM2LbeDuHJxhRXxpULlu6+KJ+L+YfjSwgQcrpDi4TtrPxO7uGJQ7uCPtDJwVOL0Qvek2+rB/sz1eqxJ8SF84yS0LQlmfEbXNxonX4PLmsbdp1MIVfFN45qNWBP4liqTqqr9cpE4/eIPIZAN2fU6Ns9KQ/N1xp+3dSq6ivKj4z2zT2IcTA5xgJBcpYxZ63pdwclsyC4FitKY6OtuvRmVHQ59DOdRpYSTfbZDDMKYkyrCWR1S5ILvm7UlA8sIp+OaJVDNopePeXuY063mggKAYHI9IWVnuoHGkER+NLbJZAj64WUGzs6Inq4x5mLMPGrScRZum1XWptGZ+hg68g6GZM7HEyS8ED61sFfND+JMcrVjU64jr34HLPAYfUnWctquqII20bo/Zc4zAqowy+rtp/Y5FmrE1kemjbS9y5mcBpaoki9+nkvbjsRUVGj/fO6mNSQ67FCjveCWe3xAoSIhi2FR2CHO8Ztk3yfPoqH4U9+/a4kzzgJW+pUd3YWbkkEB9KkzHDGI6P2MWYE4PEvtBvPRpmrfeYboN/YhPRSrAWIDS3NWJu0sEC8zZlsTkBUJVaEk4uOGfxg1sFrqysJU0v4/AehV8PPkRjyfcgG0IecbvnSOuJxQ6XeFWlS+MywEniddd7HX9LpE4Rhy7ZJjoc+CwUMVQQolYS2E+ut0t/AT5zItE8bSsoZVMXKDU2D8VARxYEcBIwyxjYGAuPrRA2K5hBb08qe0H0YxcJxspUFJd7KqM3q2C/wevZW4eV2Mg6c8lpewKj/Ng55fN5DV3jwt5SZjDYJk28AKuxL8EGfS0paVBeqRzkl5m+6rSWV4BmE/XuTrRvWL/yjYSlONvoS9m7EqEJAN1V5YNZg1bVEHLBDLnmBCNWbcJ2KWa/Dlm8JPvZEnKlDiY0ZjCHSQW65cOxbPpSdiZ5CmD9z47E7H5PIoGsY= X-OriginatorOrg: suse.com X-MS-Exchange-CrossTenant-Network-Message-Id: 671e3790-9050-4e01-4761-08da0e7a6599 X-MS-Exchange-CrossTenant-AuthSource: HE1PR0402MB3497.eurprd04.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 25 Mar 2022 16:13:28.3907 (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: QPOpwR6hgmKcXt4iiCbjZxPhsJlnfa9X027Iq8EW9gsgrXEGT4Od5jps+5mOzfHV6NJJZCDtlimZQfGAG50V4A== X-MS-Exchange-Transport-CrossTenantHeadersStamped: AM0PR0402MB3938 This patch implemented the simplest MPTCP scheduler, named bpf_first, which always picks the first subflow to send data. Signed-off-by: Geliang Tang --- tools/testing/selftests/bpf/bpf_tcp_helpers.h | 12 ++++++++ tools/testing/selftests/bpf/progs/bpf_first.c | 30 +++++++++++++++++++ 2 files changed, 42 insertions(+) create mode 100644 tools/testing/selftests/bpf/progs/bpf_first.c diff --git a/tools/testing/selftests/bpf/bpf_tcp_helpers.h b/tools/testing/selftests/bpf/bpf_tcp_helpers.h index f92357597e63..5bb21b24231f 100644 --- a/tools/testing/selftests/bpf/bpf_tcp_helpers.h +++ b/tools/testing/selftests/bpf/bpf_tcp_helpers.h @@ -197,6 +197,18 @@ struct tcp_congestion_ops { void *owner; }; +#define MPTCP_SCHED_NAME_MAX 16 + +struct mptcp_sched_ops { + char name[MPTCP_SCHED_NAME_MAX]; + + void (*init)(struct mptcp_sock *msk); + void (*release)(struct mptcp_sock *msk); + + struct sock * (*get_subflow)(struct mptcp_sock *msk); + void *owner; +}; + #define min(a, b) ((a) < (b) ? (a) : (b)) #define max(a, b) ((a) > (b) ? (a) : (b)) #define min_not_zero(x, y) ({ \ diff --git a/tools/testing/selftests/bpf/progs/bpf_first.c b/tools/testing/selftests/bpf/progs/bpf_first.c new file mode 100644 index 000000000000..3ae5c1eab5f5 --- /dev/null +++ b/tools/testing/selftests/bpf/progs/bpf_first.c @@ -0,0 +1,30 @@ +// SPDX-License-Identifier: GPL-2.0-only +/* Copyright (c) 2022, SUSE. */ + +#include +#include "bpf_tcp_helpers.h" + +char _license[] SEC("license") = "GPL"; + +SEC("struct_ops/mptcp_sched_first_init") +void BPF_PROG(mptcp_sched_first_init, struct mptcp_sock *msk) +{ +} + +SEC("struct_ops/mptcp_sched_first_release") +void BPF_PROG(mptcp_sched_first_release, struct mptcp_sock *msk) +{ +} + +struct sock *BPF_STRUCT_OPS(bpf_first_get_subflow, struct mptcp_sock *msk) +{ + return msk->first; +} + +SEC(".struct_ops") +struct mptcp_sched_ops first = { + .init = (void *)mptcp_sched_first_init, + .release = (void *)mptcp_sched_first_release, + .get_subflow = (void *)bpf_first_get_subflow, + .name = "bpf_first", +}; From patchwork Fri Mar 25 16:12:04 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Geliang Tang X-Patchwork-Id: 12791721 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 3698328E0 for ; Fri, 25 Mar 2022 16:13:39 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=suse.com; s=mimecast20200619; t=1648224817; 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=IyT4jemTa9L8JakbkQVefZW5wjMLlv+8fiP04Xdd1ZI=; b=efM3rzZpEUa3h8LrcUEiv/D4xjt2ZCfxfeKDsf4AxxlHcj3yRhfbmewy8rx/4sPrV0+GpK yTBOo5hCziteXsedR5G/d8g/umbKwH7Tc+BVlHuz3gZJAJsmoACW9M9t8ewG2imL32MMmC VubojGL5wUBVtaJDaD5lDoLgrvOQ/m0= Received: from EUR02-VE1-obe.outbound.protection.outlook.com (mail-ve1eur02lp2056.outbound.protection.outlook.com [104.47.6.56]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id de-mta-25-k-j_k72xMhWyOunY8odDdg-1; Fri, 25 Mar 2022 17:13:36 +0100 X-MC-Unique: k-j_k72xMhWyOunY8odDdg-1 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=ZMf472EerqrQ7bGryfEb7T/i3YGUGjzvN0wfSliHK1MW4QwtW1xkQmnzpKwugmzCpc+jtn6bD0dq1/hOcBOZY2kdJM+YB59to6vHRtuIPC6H3xnYlzJsIZFoel3bt2U5PoYRWS1XUcsPRdJuPywbirIlYZnb09zdwxLd4T1Mqt2qRctT8hJPBjbMkghd7F+YOSbZ8HFdR7Dd5rMzMeclx09IKzny13/7W0YM5A9oKbof4bzH4WEHrsDk4FrI3cEidgDX0B36FYUEdK1YSVG0sERW21aI/HOsZIoBKziR6YHIgvZC53EZHHQzvU5T01acJnyW+vdchM1RVBWeCSW2Kw== 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=o7zx/Z8Becx6fg64gvMVJuE3trxQZJhRIm9RAkJU1e0=; b=hKf3T5WRPY52vjXxUbXAGHi/CuWYp/BayMERY9/g9gZfIcq6rEhuKmc7Z7zuOkXudQajCHinM9kfLlUDRTdqhAlNVnc2blhWvJEK/4tIwWG9KGBt3HVcYtJ1xWAjmRXtG8heI750yMpj94fEvsFLxcSv7ogXLlrZ0j2xbigjJ+g1lQ3m3JjoeZR7kPzdolKZxsjdooxRuDdW/OINyh6+2zukG6UMxxpyTUmwx+3wUm1HAAMMGfJ+z5Wfi8WBN23RmReRlMWV67wj6CGN3bEbOZnxQsz+2Ul2UHMlH6X5zZkszuqAUgZ8ahsXNThbrvHagyhuBvd7WZLxDdSOtr0hfw== 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 AM0PR0402MB3938.eurprd04.prod.outlook.com (2603:10a6:208:7::32) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5102.19; Fri, 25 Mar 2022 16:13:35 +0000 Received: from HE1PR0402MB3497.eurprd04.prod.outlook.com ([fe80::b110:cb51:e09f:bb05]) by HE1PR0402MB3497.eurprd04.prod.outlook.com ([fe80::b110:cb51:e09f:bb05%6]) with mapi id 15.20.5102.016; Fri, 25 Mar 2022 16:13:35 +0000 From: Geliang Tang To: mptcp@lists.linux.dev CC: Geliang Tang Subject: [PATCH mptcp-next v6 8/8] selftests: bpf: add bpf_first test Date: Sat, 26 Mar 2022 00:12:04 +0800 Message-ID: <2d4db6f87d2a8f8be36140aa7feabc7cdea87ec1.1648223504.git.geliang.tang@suse.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: References: X-ClientProxiedBy: HK2P15301CA0013.APCP153.PROD.OUTLOOK.COM (2603:1096:202:1::23) To HE1PR0402MB3497.eurprd04.prod.outlook.com (2603:10a6:7:83::14) Precedence: bulk X-Mailing-List: mptcp@lists.linux.dev List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: 476b6af8-f36d-4bd1-23ec-08da0e7a69fc X-MS-TrafficTypeDiagnostic: AM0PR0402MB3938: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: DQZwf0LO5CtXB6HaOnsZ8JQLLNK3xczzz4GLvKWu2Eej2JSstxSrMHbPRNGEgsc6OgFhaiSf21cyLlE9T99qkGi9O9qaW2QrOMYqXkyMfNrx/8xzb4NpmSYbpHBumhXzKjZYUZ0XC5pZ6+sTOLZie3/Ca8U/8bq/rmSwcRFv0WkzY6uPt/4bywRKK0LrP8anOhuDa5J68NUJjJ/OfzwxwUTdPQaK19rheiFxuCK/o2rghPM+UEVe7yhqr2fTJrVp6nYZKxrM53mPntkz0kDvOVTXvxy9zTVTQ6Ho+8zKruLzwGN/EjEYX7ZimRo+bKSC6SseenRJHG5ue3FGCAP0AqLLi988mdIClkf+VP+3nShp85MYm+R8RuE0d577mv9bTbyKCcCrEGqgbYAvo6VY0CgCTwFDC+ANn+qVclYJzh5IhFokS6Z+eO8MqZgICH2D4fnPuZfgrie9npAXPryc90iEoa1ur7pk1KnOlX3W45mdDLT3NeGQxvuuSp4MWUPZprrCTy8SHzatRC+XqJYBi/k0ClBT21gUJxrnpsYopPgpDjhCBKZc7fprstJKRKXFaDu2CNd1ddlh/1rtfDp1BFqeUfXZZFb+JDMuknxm/3TM4y7QXRA2UWbHY6p6SPy9lgNoLPVtHpwUHiA4aF68khz9iLbSZ1cFpDrY4EyMYUq3C/QYrxYxyAJemwSMl5m0cmk71qU/qjJcqOKr3jTnaw== 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)(36756003)(4326008)(508600001)(8936002)(186003)(26005)(8676002)(66476007)(66946007)(2906002)(38100700002)(44832011)(5660300002)(66556008)(83380400001)(2616005)(86362001)(6486002)(6512007)(6666004)(6506007)(107886003)(6916009)(316002)(13296009);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: LLwZYEe6hZHXcOivRdfPzSTESQIaEbLarcHLOKUN88oStFUwuP8a6vn/09As8Wv6P1bLqrE+ACCoEwFqUBLYRWlmTMV2KKRS6WmCPHs8n/4VJpLMc1+QwXf6kUBK1/52Y8u5N6317qXJWB5/1n6phMt1Vv6PUk4KehiUFZiquPxZhwn6PkH0rgf9P7Os9Y4aKtRh8cHZITAdn6zPwx3uRunzzNQV0dfHYVWXymb3snAthH9B03EdYyGQLNPq9hbgvO5qN2WIB41hUEzI3+YwiOQ+h+3OCPuHOU+6GlTsVtORZhrqOLpKaRhGdnSVCdHiWBvjOYCL7sF6jsMGbKorSh3hafnzKuGjVq13be5IprCTgo+Hg+/jcBDNMf74ScZ6O9mp+Cj8HwIKk2oArPbdxksKMuK3WJgJdi7qctcorF8UD2Q8UQMtUj6rCnmT7KStdpaKggpul/LeRcJJF46NUEEVpRE6HU8b+Ai9vJ2QJcQ3oB7SSoxz9SAzdRFOV/qD9Za8JetCgnta5ImZVgDr6HuUGYHdGJiClqt1rGc0eFSzv1O6PCeL5DHKDppx78//r/ocCa1+EKZrT29MUCg7lnj59npsLsTY69scYK9jrYi3Dzpx5uIRRAx7I6MqO6fzAJhXZtSneHEaNyjlogg83YgJKImNyCSmHgHZUnJr9zoObHk+QHBRF7/pNhrXpomKDUB8hZ2mXmGjc5JhFDEW7wIvLLzoZoHf7ufyb7Rb0orNlHr1vBEGTKiDvHsH6TSo+E6h1iuyighX+ANDlHsPAct8AZ80rtaFk/KXB95hk1I95I951Hqda+YMfTpqC0Gh+akIAte7ey6k5fSdOJ26gLYFObf7SrdbQs/ym7angim8T1oNGRDCGx7RGamcAT9+8HVuTudvs+tnwvBOxcvTRsXTgArAMFISAM5NjN3/RBKfl61+IISG/xtOtGxkUP7ynsEeeX6hIpcZf6nT5LiBPasmmdaKNBf7bAF4ph7Kv6jHufhpj1ydG1bwZL4gieOoSenWz7LDW59E/yCEaOfmDMw9qRPJBL25rPV1w11fjY1nXYKJKTYIzg4tGieHOZIpy0EDIBVXIKDAKJlyjiGLtv1hBgSRJ+ixgwl1lOz66C+52sNDyVt1VayJm6g3ffmI4k2R+b0sECZtt0xcZDkxfsp9wQozkzD9XUBVeymqOAiLCmwKk1WQ6WKjWE3hdY6mXMcecMft9/m77mPwyc/QcEcYAueLhVKvcSi2gYtQCZWNHQNvSCQR96RLFihZMVnph7bnEITubdwRerxVSm8FVar1miQUIanTB10qCWSuaarMb3GADTCawgA0Kit2COWzL4oS1YBBDVakwIhdXL//h6UxM9oPj1bEj7NS0ukgCdSgernpt+GhbCZo2i/S8ILbge3njq7RgZ11V6rnW28EE/0ag0/YxJ/QU9pN9CtFjvzGBUWFs+BIgukX1jHGsHwRNaK32DkntXcx2Wl9dT/4SpzWW9dk9BdB5T/x6yS+2j4Qol7DMWLwdkGKuLGGNcnUN12djSHY7pzPILoNDQDhwbklR+KsaHyW5pf7V9F+vnQcOHABWT/TG6/rBpQ77DUjqeAYSFR8H09+g6XW//In8/9g43QiT5VNO3deTswxKJH0ayhsi+bfy9Fzr41G4OXZbpEfDfbWXVb5jPntK08weT5JhIQxmwBR2hcRnAzovYrQFrXvSZyi1YDqsLuWA1y7q1ofH+MUktJTBgVoyKJDZVp18u9+OncI2A+xj+iMCcY= X-OriginatorOrg: suse.com X-MS-Exchange-CrossTenant-Network-Message-Id: 476b6af8-f36d-4bd1-23ec-08da0e7a69fc X-MS-Exchange-CrossTenant-AuthSource: HE1PR0402MB3497.eurprd04.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 25 Mar 2022 16:13:35.6402 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: f7a17af6-1c5c-4a36-aa8b-f5be247aa4ba X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: 6wXiGPqfTDNRNEazn12HEPPRyk2WJXDslqmHRP3Sr5f05vUqtRRSBb2A2QPv/HITN2+H9P/SazRuPBbD5WHZtA== X-MS-Exchange-Transport-CrossTenantHeadersStamped: AM0PR0402MB3938 This patch expended the MPTCP test base to support MPTCP packet scheduler tests. Add the bpf_first MPTCP sched test in it. Use sysctl to set net.mptcp.scheduler to use this sched. Signed-off-by: Geliang Tang --- .../testing/selftests/bpf/prog_tests/mptcp.c | 114 ++++++++++++++++++ 1 file changed, 114 insertions(+) diff --git a/tools/testing/selftests/bpf/prog_tests/mptcp.c b/tools/testing/selftests/bpf/prog_tests/mptcp.c index 888d9e9b8870..c654df1141a9 100644 --- a/tools/testing/selftests/bpf/prog_tests/mptcp.c +++ b/tools/testing/selftests/bpf/prog_tests/mptcp.c @@ -4,6 +4,9 @@ #include #include "cgroup_helpers.h" #include "network_helpers.h" +#include "bpf_first.skel.h" + +#define min(a, b) ((a) < (b) ? (a) : (b)) #ifndef TCP_CA_NAME_MAX #define TCP_CA_NAME_MAX 16 @@ -19,6 +22,8 @@ struct mptcp_storage { }; static char monitor_log_path[64]; +static const unsigned int total_bytes = 10 * 1024 * 1024; +static int stop, duration; static int verify_tsk(int map_fd, int client_fd) { @@ -251,8 +256,117 @@ void test_base(void) close(cgroup_fd); } +static void *server(void *arg) +{ + int lfd = (int)(long)arg, err = 0, fd; + ssize_t nr_sent = 0, bytes = 0; + char batch[1500]; + + fd = accept(lfd, NULL, NULL); + while (fd == -1) { + if (errno == EINTR) + continue; + err = -errno; + goto done; + } + + if (settimeo(fd, 0)) { + err = -errno; + goto done; + } + + while (bytes < total_bytes && !READ_ONCE(stop)) { + nr_sent = send(fd, &batch, + min(total_bytes - bytes, sizeof(batch)), 0); + if (nr_sent == -1 && errno == EINTR) + continue; + if (nr_sent == -1) { + err = -errno; + break; + } + bytes += nr_sent; + } + + CHECK(bytes != total_bytes, "send", "%zd != %u nr_sent:%zd errno:%d\n", + bytes, total_bytes, nr_sent, errno); + +done: + if (fd >= 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 = 0, bytes = 0; + pthread_t srv_thread; + void *thread_ret; + char batch[1500]; + int err; + + WRITE_ONCE(stop, 0); + + err = pthread_create(&srv_thread, NULL, server, (void *)(long)lfd); + if (CHECK(err != 0, "pthread_create", "err:%d errno:%d\n", err, errno)) + return; + + /* recv total_bytes */ + while (bytes < total_bytes && !READ_ONCE(stop)) { + nr_recv = recv(fd, &batch, + min(total_bytes - bytes, sizeof(batch)), 0); + if (nr_recv == -1 && errno == EINTR) + continue; + if (nr_recv == -1) + break; + bytes += nr_recv; + } + + CHECK(bytes != total_bytes, "recv", "%zd != %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 bpf_first *first_skel; + int server_fd, client_fd; + struct bpf_link *link; + + first_skel = bpf_first__open_and_load(); + if (CHECK(!first_skel, "bpf_first__open_and_load", "failed\n")) + return; + + link = bpf_map__attach_struct_ops(first_skel->maps.first); + if (!ASSERT_OK_PTR(link, "bpf_map__attach_struct_ops")) { + bpf_first__destroy(first_skel); + return; + } + + system("sysctl -q net.mptcp.scheduler=bpf_first"); + server_fd = start_mptcp_server(AF_INET, NULL, 0, 0); + client_fd = connect_to_mptcp_fd(server_fd, 0); + + send_data(server_fd, client_fd); + + close(client_fd); + close(server_fd); + bpf_link__destroy(link); + bpf_first__destroy(first_skel); +} + void test_mptcp(void) { if (test__start_subtest("base")) test_base(); + if (test__start_subtest("first")) + test_first(); }