From nobody Thu Sep 18 06:42:53 2025 Delivered-To: wpasupplicant.patchew@gmail.com Received: by 2002:a05:6a06:869:b0:4b8:7781:bd2f with SMTP id d41csp785071pis; Tue, 26 Apr 2022 18:56:54 -0700 (PDT) X-Google-Smtp-Source: ABdhPJziRdOxBqv9fapkQu7CmXRRF0G4g3LaT7tC1KiWgkrfyAOE4l1yTpxzKn9SxQ46SKnZkjKT X-Received: by 2002:a05:6870:1781:b0:e2:f30d:3a6c with SMTP id r1-20020a056870178100b000e2f30d3a6cmr10855867oae.142.1651024614066; Tue, 26 Apr 2022 18:56:54 -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 w22-20020a9d77d6000000b005cb2fc1378esi126210otl.10.2022.04.26.18.56.53 for (version=TLS1_2 cipher=ECDHE-ECDSA-AES128-GCM-SHA256 bits=128/128); Tue, 26 Apr 2022 18:56:54 -0700 (PDT) Received-SPF: pass (google.com: domain of mptcp+bounces-4913-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=RMJQIW2N; arc=fail (body hash mismatch); spf=pass (google.com: domain of mptcp+bounces-4913-wpasupplicant.patchew=gmail.com@lists.linux.dev designates 2604:1380:4040:4f00::1 as permitted sender) smtp.mailfrom="mptcp+bounces-4913-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 C8E3D2E09A6 for ; Wed, 27 Apr 2022 01:56:53 +0000 (UTC) Received: from localhost.localdomain (localhost.localdomain [127.0.0.1]) by smtp.subspace.kernel.org (Postfix) with ESMTP id 6575B64C; Wed, 27 Apr 2022 01:56: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.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 2EBBC621 for ; Wed, 27 Apr 2022 01:56:50 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=suse.com; s=mimecast20200619; t=1651024608; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=nZ1EoAt/ZeVfyTsL+JuePBVq/k6t0m2m2CH6eYEln1U=; b=RMJQIW2NHXZymMz+PB+CF/TdzUfOhgP4zF8JYiIPemUDkExD2pC0u5tCkBvSNHG2aJmXJh hJG2Qy5lJE+ijYf6rU+MzZT/xsL3zVQmC06bm6KXr8fgcKmqfpB6Ee8WUQWuzGvb92CeGp vV0iezyyqwzK/cO1Ov+tYN+TQHxgPpc= Received: from EUR05-VI1-obe.outbound.protection.outlook.com (mail-vi1eur05lp2172.outbound.protection.outlook.com [104.47.17.172]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id de-mta-15-PsYqxzeCMYeuR3-ClbkeMw-1; Wed, 27 Apr 2022 03:56:47 +0200 X-MC-Unique: PsYqxzeCMYeuR3-ClbkeMw-1 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=KdYzCwLIiuTIirDYrckjs4VZ2+ESV9g57Xb6ljhqDFhJxoSUgwXWVeJxWEfTDmlmOXSfjhi5ftshikbp/Rr2G0KRVFBzgqkL9UtOL+JcmqIU9zyiSppkkbFzARPkp8inwxB2j1Xrx1TmrPT7hDDEuNERI1MLZgmI7WdPyfWamLnubsizyWU/1VmHFD/0AkL+VgO2T1CSMFag+qmojtXY2NgmV4v/cQ9UOY81C3/9bF5VEfcMOWVusB0Dv1k/AlrNxDzMmNR3azEFG6My47hDuWrV2fxz8NuPtOOLqi2S3XMRuYcVwFeK8Z9aoyhpXHaB4HWa+6M1CK/klxYVYnZLXQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=QEjn6iEVZ+w/+dyplNuWhzUfwIx1yEX9TzuaJzMTzqU=; b=oGjWx0tJ+J8Wtr0qhTqjsu0Z1+v5/WcxkzlvgxELtr8hFhQOyEUIUaV1fIG3rIicgLLD0inU2lOYIWqly8cV25ufmE1rnI0nI4l10YJS5Fz9wHFC8YYNaMhcbqNeVkZwYviK3ao34ttyX7iYtsxbjQtE3O4hd2D9ylB6IeK7VXE8cbqQx80FzDlGRpK3m34OiG9E4VlNN5zmyb4LOtMZ85+yBtSQwkSCyhbb6DkIiHN2vQH7pZEjK3jULwUpVf+0otVuL12flW2qoE7rgAJpCCUuYFCBCE+fX7HoktUXufXPleri5nsph0YCKoIGnEPKH8k/7KKq0wOaeqW9LHmORQ== 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 PA4PR04MB7661.eurprd04.prod.outlook.com (2603:10a6:102:e3::8) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5186.21; Wed, 27 Apr 2022 01:56:45 +0000 Received: from HE1PR0402MB3497.eurprd04.prod.outlook.com ([fe80::9974:fd5e:e3c0:14dc]) by HE1PR0402MB3497.eurprd04.prod.outlook.com ([fe80::9974:fd5e:e3c0:14dc%3]) with mapi id 15.20.5186.021; Wed, 27 Apr 2022 01:56:46 +0000 From: Geliang Tang To: mptcp@lists.linux.dev CC: Geliang Tang Subject: [PATCH mptcp-next v16 1/8] mptcp: add struct mptcp_sched_ops Date: Wed, 27 Apr 2022 09:56:48 +0800 Message-ID: X-Mailer: git-send-email 2.34.1 In-Reply-To: References: Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: SG2PR01CA0141.apcprd01.prod.exchangelabs.com (2603:1096:4:8f::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: f9094a38-f1eb-49b5-c851-08da27f12f24 X-MS-TrafficTypeDiagnostic: PA4PR04MB7661: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: CKg7VFCmLQ1NJ+U+Yq5pIUJ3qRLg+Lns+MuXuPbKnUQPF4LmQo7hlTbOEc/DU9mf3iKySZfb1m+94OfCQfTt+KKTPyjBPqWUuh4ADftcXvr+cD+wrlPG4tyeBcNUtfe4WFgTpTHBg83ngKif73ftQGOfdV5waTrza2QWy2l77qAl07Xc6bchNKjxR1ZVFxHpBvhdMNzpGUAfbOi51GInxHlU8PYGWppB9lzAmLyi3gtl+BNkof5yVucdfRyqeKda7MFYs3V6x+cdtudDs8la5jjQF8zaQTR7gkJgumTQjxP/zta5i0RnEV1qfzz+cOS63hGd3SHtncPu2JlEloVND0SEXr8UYpTPcVxFmNmFVbptL54LKRGSFYoESKdX09+rTiZwgHaVX5cwUV4HiIKEJthEa0A6AV0c88otlEY57VUzl5NokwhQtR+Mo0OXFkQMdRe/8iLZUzCQQv6gJcZ6/FEfz2ZgHWEDqr/O1MOLKC7jVXqv8BhW9ek4NsE8MvDoXdqS/rclgVZ3l2g3VWw2Hez83fedzdQUhfUVBHVgFbFsEYHscJ7FJfuQQRl2yUhFWy4/yjFU6Eg2jSltO+DYKsU4oX01rr3DyXmEn5g0X480RC6UXFxqWkpwLjxmoBOxX2CDhy0Mb+HUm1kQ3NxggC7cdfXc3VesfBrZ+qVNquiLqfGtgX3D24lDTB3E46bS 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)(8936002)(86362001)(107886003)(5660300002)(6916009)(83380400001)(66476007)(66946007)(44832011)(66556008)(8676002)(316002)(186003)(26005)(2616005)(4326008)(38100700002)(2906002)(6512007)(6506007)(508600001)(6486002)(36756003)(13296009);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?rSxz064MrP6dHxi99eCnZjzXze8Wxv5EUtccbbeBit95+zEEYzcUqXNjRHRl?= =?us-ascii?Q?Fpamu9aZL19sWOp+cY7Nc0VeFxl1y4YmZ+MlaU3RinE3jqxeohG9jvRx2SUY?= =?us-ascii?Q?ruz4bzKHjSaNrvqq/og+sGX1U/hiY+gV7NNdPFz9ihZM8o4J5LFceycgaLQO?= =?us-ascii?Q?iWivj/thvXdKl8pCPUivnvIhcTxR6ChruwkdsOo3sL4sYROczRqzenlxc74v?= =?us-ascii?Q?kyB0CjCRIcrfYrqCifja+z3wpYeVTBkgdLLyexc4RThLUyp5XIikQeJbAF+7?= =?us-ascii?Q?4URM7nMjIA2rbfjbdskZYua6G+EjSq1UZKs550YJSgLF0DyA9cdFGQWCoWVP?= =?us-ascii?Q?tq2c8qWVCSqeNxRJiLfHfp0VgNORmL8jRHErLMDMYwDNqvCqR+Ikh3JvEvhg?= =?us-ascii?Q?iffJVaghE44rBGhmiu+L6hYpMx5dcUVDxKOutCFDgHLFw2iNz+Xebr6B/fiP?= =?us-ascii?Q?2saM8HQO9N7LpQyek0xngc7rtgvLXqaTTvFFMI842JqNVT63d3UyhMgbmI6N?= =?us-ascii?Q?vYfAX63gvynSkLZIwlj12ZW94G4GucMrD7DGx1GHn/3Pjk+sPZPMRe1XS8qt?= =?us-ascii?Q?hhr/qG58CXf98GbY1vJ4o0RYj7KZZGiRdIGimmMk6lIqy2T5HF2RvQE/E5Kx?= =?us-ascii?Q?Z7mI3RL2nTOgb+Q7ycT8yS1+3OLlu6lWTlGrgBNdpH1AV4WCNBwLTGroOd0I?= =?us-ascii?Q?8cXFievgimzXQNrsfYbA6x2aXiK2B7kxHX4zvUIJi+9eJvU/Ud0kDsL19sFg?= =?us-ascii?Q?SwEmoEAcrZ7Hnmyeo8YyqfCram48eOd/GpHACY2GW3pQW5+lO5NyIwGUreff?= =?us-ascii?Q?Dq1T2o27Pwx+Lp2T4jJqfMt2xmVnfbdU0D8xeTkb/JUF2sUdRRNhbxbdMDJW?= =?us-ascii?Q?7JXAuMcYDnSwrxvBuBqFufP5XhtSMCmKQEQn6NzYQZvzhW5w0RqsF6m9C9Xp?= =?us-ascii?Q?Q+q2Ac1p9urHu2JSUoevoUyQQ+rhobRbezXU6QCzZeCOfxLTdbC043UhanSz?= =?us-ascii?Q?CMuUmE43tI26HuDGCTI1ekfnUD50yV4OmXOomZq+GBs1+FuDhPd3VojCTZmc?= =?us-ascii?Q?CeGk0J+2Y9lrbTAFyGUD8xxE/8pR0LLbEqUYlZJO1rf+tjtg2I5uulj0pn9P?= =?us-ascii?Q?EKUUVfNam+VbmaChuW67lQ5vrBKBOPbsg0r9tDW1O6ZKba5Ci6Sl/M4QvabB?= =?us-ascii?Q?x7IMeS678WV5PCNwhRAZ3RIKr5p0qVX6D1iXHrP3coDuPPxif1PmWF+CxSS9?= =?us-ascii?Q?23aEC148c1RJVSlUpWTn/lk6g8pOXndg2mDC5PY1dPK0WaOPJJpDeg/ng45U?= =?us-ascii?Q?DULVTKephBNDgTdt1FPwG5Bz37waowIx3d6FDd7vpQf3XA+2fwsNqtJVFPQn?= =?us-ascii?Q?njZO59p5vvvXFmamy0oD0GZ4f66R/337FQZ6xpE2zupn9IBQvvJipd1xjk26?= =?us-ascii?Q?zoGwjiVFfx27jBviTALYyhwYNaLo+zFj2Yh191tMgd78kLysSS8TG+7oT7j5?= =?us-ascii?Q?JvDAnG1TtJ05UdouwA5Jw4JNU/tAu3UBdaURXkaYReu5D4B601cl33jGdjqa?= =?us-ascii?Q?gDdZy+3WI+lJzsDwR1G9ltgG/QH4cSrJ+ktzMu48wC8rUhlZSbXwr2I/BwqT?= =?us-ascii?Q?ZTQGTno9AUhZia4Gcif9WSHJx+D3TK+PSVay/9UVg/dMltQt+/86oKA9+yy0?= =?us-ascii?Q?iRvIZClFP/BMT91I0Lq91KADqiHGR3SLRtR946QcwuC6C8NySHYWg2C45PZt?= =?us-ascii?Q?WlYLgwdF02Wgq4IVc/G5qhZq3mo/O5Y=3D?= X-OriginatorOrg: suse.com X-MS-Exchange-CrossTenant-Network-Message-Id: f9094a38-f1eb-49b5-c851-08da27f12f24 X-MS-Exchange-CrossTenant-AuthSource: HE1PR0402MB3497.eurprd04.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 27 Apr 2022 01:56:46.0387 (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: KwgSPO1Iv+Z2s5BqQKmUmlTqGemQqtLOyvwocZtAf0kHDEDTbCjjtuMOZ5JMp2BEPoMhaQZW1cEi7Jf2JdkNfw== X-MS-Exchange-Transport-CrossTenantHeadersStamped: PA4PR04MB7661 Content-Type: text/plain; charset="utf-8" This patch defines struct mptcp_sched_ops, which has three struct members, name, owner and list, and three function pointers, init, release and get_subflow. Add the scheduler registering, unregistering and finding functions to add, delete and find a packet scheduler on the global list mptcp_sched_list. For supporting a "redundant" packet scheduler in the future, this patch adds a flag in struct mptcp_sched_data named call_again to indicate that get_subflow() function needs to be called again. Signed-off-by: Geliang Tang --- include/net/mptcp.h | 19 +++++++ net/mptcp/Makefile | 2 +- net/mptcp/protocol.h | 3 + net/mptcp/sched.c | 56 +++++++++++++++++++ .../testing/selftests/bpf/bpf_mptcp_helpers.h | 18 ++++++ 5 files changed, 97 insertions(+), 1 deletion(-) create mode 100644 net/mptcp/sched.c diff --git a/include/net/mptcp.h b/include/net/mptcp.h index 4d761ad530c9..dd4ee7a77567 100644 --- a/include/net/mptcp.h +++ b/include/net/mptcp.h @@ -95,6 +95,25 @@ struct mptcp_out_options { #endif }; =20 +#define MPTCP_SCHED_NAME_MAX 16 + +struct mptcp_sched_data { + struct sock *sock; + bool call_again; +}; + +struct mptcp_sched_ops { + void (*get_subflow)(struct mptcp_sock *msk, bool reinject, + struct mptcp_sched_data *data); + + char name[MPTCP_SCHED_NAME_MAX]; + struct module *owner; + struct list_head list; + + void (*init)(struct mptcp_sock *msk); + void (*release)(struct mptcp_sock *msk); +} ____cacheline_aligned_in_smp; + #ifdef CONFIG_MPTCP extern struct request_sock_ops mptcp_subflow_request_sock_ops; =20 diff --git a/net/mptcp/Makefile b/net/mptcp/Makefile index 6e7df47c9584..8a7f68efa35f 100644 --- a/net/mptcp/Makefile +++ b/net/mptcp/Makefile @@ -2,7 +2,7 @@ obj-$(CONFIG_MPTCP) +=3D mptcp.o =20 mptcp-y :=3D protocol.o subflow.o options.o token.o crypto.o ctrl.o pm.o d= iag.o \ - mib.o pm_netlink.o sockopt.o pm_userspace.o + mib.o pm_netlink.o sockopt.o pm_userspace.o sched.o =20 obj-$(CONFIG_SYN_COOKIES) +=3D syncookies.o obj-$(CONFIG_INET_MPTCP_DIAG) +=3D mptcp_diag.o diff --git a/net/mptcp/protocol.h b/net/mptcp/protocol.h index 4672901d0dfe..221bb6b9860e 100644 --- a/net/mptcp/protocol.h +++ b/net/mptcp/protocol.h @@ -621,6 +621,9 @@ int mptcp_subflow_create_socket(struct sock *sk, struct= socket **new_sock); void mptcp_info2sockaddr(const struct mptcp_addr_info *info, struct sockaddr_storage *addr, unsigned short family); +struct mptcp_sched_ops *mptcp_sched_find(const char *name); +int mptcp_register_scheduler(struct mptcp_sched_ops *sched); +void mptcp_unregister_scheduler(struct mptcp_sched_ops *sched); =20 static inline bool __mptcp_subflow_active(struct mptcp_subflow_context *su= bflow) { diff --git a/net/mptcp/sched.c b/net/mptcp/sched.c new file mode 100644 index 000000000000..c5d3bbafba71 --- /dev/null +++ b/net/mptcp/sched.c @@ -0,0 +1,56 @@ +// SPDX-License-Identifier: GPL-2.0 +/* Multipath TCP + * + * Copyright (c) 2022, SUSE. + */ + +#define pr_fmt(fmt) "MPTCP: " fmt + +#include +#include +#include +#include +#include +#include "protocol.h" + +static DEFINE_SPINLOCK(mptcp_sched_list_lock); +static LIST_HEAD(mptcp_sched_list); + +/* Must be called with rcu read lock held */ +struct mptcp_sched_ops *mptcp_sched_find(const char *name) +{ + struct mptcp_sched_ops *sched, *ret =3D NULL; + + list_for_each_entry_rcu(sched, &mptcp_sched_list, list) { + if (!strcmp(sched->name, name)) { + ret =3D sched; + break; + } + } + + return ret; +} + +int mptcp_register_scheduler(struct mptcp_sched_ops *sched) +{ + if (!sched->get_subflow) + return -EINVAL; + + spin_lock(&mptcp_sched_list_lock); + if (mptcp_sched_find(sched->name)) { + spin_unlock(&mptcp_sched_list_lock); + return -EEXIST; + } + list_add_tail_rcu(&sched->list, &mptcp_sched_list); + spin_unlock(&mptcp_sched_list_lock); + + pr_debug("%s registered", sched->name); + return 0; +} + +void mptcp_unregister_scheduler(struct mptcp_sched_ops *sched) +{ + spin_lock(&mptcp_sched_list_lock); + list_del_rcu(&sched->list); + spin_unlock(&mptcp_sched_list_lock); +} diff --git a/tools/testing/selftests/bpf/bpf_mptcp_helpers.h b/tools/testin= g/selftests/bpf/bpf_mptcp_helpers.h index b5a43b108982..de20fbdb6d98 100644 --- a/tools/testing/selftests/bpf/bpf_mptcp_helpers.h +++ b/tools/testing/selftests/bpf/bpf_mptcp_helpers.h @@ -6,6 +6,24 @@ =20 #include "bpf_tcp_helpers.h" =20 +#define MPTCP_SCHED_NAME_MAX 16 + +struct mptcp_sched_data { + struct sock *sock; + bool call_again; +}; + +struct mptcp_sched_ops { + char name[MPTCP_SCHED_NAME_MAX]; + + void (*init)(struct mptcp_sock *msk); + void (*release)(struct mptcp_sock *msk); + + void (*get_subflow)(struct mptcp_sock *msk, bool reinject, + struct mptcp_sched_data *data); + void *owner; +}; + struct mptcp_sock { struct inet_connection_sock sk; =20 --=20 2.34.1 From nobody Thu Sep 18 06:42:53 2025 Delivered-To: wpasupplicant.patchew@gmail.com Received: by 2002:a05:6a06:869:b0:4b8:7781:bd2f with SMTP id d41csp785090pis; Tue, 26 Apr 2022 18:57:00 -0700 (PDT) X-Google-Smtp-Source: ABdhPJyVkyPuqOHoorVtssGdHdN4ZZf5vbTA++rVdBDZpF++gBEtJSn+17HcDp2JaMQvsjDCS5Vz X-Received: by 2002:a63:5619:0:b0:3ab:aac3:8e86 with SMTP id k25-20020a635619000000b003abaac38e86mr3027214pgb.300.1651024620568; Tue, 26 Apr 2022 18:57:00 -0700 (PDT) Return-Path: Received: from sv.mirrors.kernel.org (sv.mirrors.kernel.org. [139.178.88.99]) by mx.google.com with ESMTPS id m1-20020a170902f64100b0015898563942si208052plg.445.2022.04.26.18.57.00 for (version=TLS1_2 cipher=ECDHE-ECDSA-AES128-GCM-SHA256 bits=128/128); Tue, 26 Apr 2022 18:57:00 -0700 (PDT) Received-SPF: pass (google.com: domain of mptcp+bounces-4914-wpasupplicant.patchew=gmail.com@lists.linux.dev designates 139.178.88.99 as permitted sender) client-ip=139.178.88.99; Authentication-Results: mx.google.com; dkim=pass header.i=@suse.com header.s=mimecast20200619 header.b=evctFKaF; arc=fail (body hash mismatch); spf=pass (google.com: domain of mptcp+bounces-4914-wpasupplicant.patchew=gmail.com@lists.linux.dev designates 139.178.88.99 as permitted sender) smtp.mailfrom="mptcp+bounces-4914-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 E7554280A76 for ; Wed, 27 Apr 2022 01:56:59 +0000 (UTC) Received: from localhost.localdomain (localhost.localdomain [127.0.0.1]) by smtp.subspace.kernel.org (Postfix) with ESMTP id DC48364C; Wed, 27 Apr 2022 01:56: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 E6AA6621 for ; Wed, 27 Apr 2022 01:56:56 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=suse.com; s=mimecast20200619; t=1651024615; 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=hvvbsvegrT5AxOmxgn8ZnJ8aX41EgSZK+9yoTkUuqUY=; b=evctFKaFRc3uqaVvLhCQbkKC7rV2NiE2FaJt78KC0PLAPUCW2bVSQp5pV7ycWOkaP0mbjo SUD3DUB5NcM2rGl3dgC8PtNxg5YtLwkTGSqUWXQGl3ey7VisLl/AVaUIWNStS5stnPNIPR VMuoSpa1DiYKwg2mrmpDyvgeuJDWV1c= Received: from EUR05-VI1-obe.outbound.protection.outlook.com (mail-vi1eur05lp2168.outbound.protection.outlook.com [104.47.17.168]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id de-mta-29-uB7Iu5-wMAiFxki0A7kOFA-1; Wed, 27 Apr 2022 03:56:54 +0200 X-MC-Unique: uB7Iu5-wMAiFxki0A7kOFA-1 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=G0aocWnMyPRSpN+3WSj1tVvjYj8pfsRYgvGT1YDShl/1TOQ26IEtrf4u4asOgjZQDFu/NLW/JG6k5M6CSROkoWgnlVFJxdSxayak1kDHBR2TYvimhRp9j2adKOyiCXbui/SfKr1F7raCmaXTgnmwtuDEd8TB5Di73aTi/xFgvz7mKs31n0VoRUx7JDHOhebTA12E3Szp6Y3IdB4JjhhWZhx2AfoaWK7dM3sCbkq8HDLmJmhf70+jbkmllya3RSooep+8WiVpW4BLw57484XQ9417FNrYd5Z3IGEA06Ji/ai03Hk0Vb/+PtJQdSCiJqte/uwdPpJ7gQXs0F2AJ6i+HA== 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=S5IMNB/Ob+mif/9GAdi4MrvdeD5EMOBSGJjiuM5U208=; b=Ywi4yY3zApLtRIUm7hr9P+CKrRROcXFnqcHYsYr8B/YgJdKJvfmfyB9fW/o+CHKe9mbTEbH0MU0DzFfhIP5+Pl0i7C/mDpd5Z8ChX9VSggoPQfZumOKueYymYZE4wuSlvSeFmJi74NzNwJIwXIAqbPvj8EJIIEzE2Ce298auKydk+pBKTi4XP+pRfcUJYhJycPg9zs8e8ncGcetzLwlECPnvQoBkpTh28mwisC/sa8JmALCmK34gwZwoUd59goyfbXRIdSLrfYF65PKGDaVuoJYJZCcyx9fIvczSz+6LcDCuEvyCnmTmXRerpVrQxiWSyxMs/T/FReDksPfbQUL+dg== 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 PA4PR04MB7661.eurprd04.prod.outlook.com (2603:10a6:102:e3::8) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5186.21; Wed, 27 Apr 2022 01:56: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.021; Wed, 27 Apr 2022 01:56:53 +0000 From: Geliang Tang To: mptcp@lists.linux.dev CC: Geliang Tang Subject: [PATCH mptcp-next v16 2/8] mptcp: register default scheduler Date: Wed, 27 Apr 2022 09:56:49 +0800 Message-ID: X-Mailer: git-send-email 2.34.1 In-Reply-To: References: Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: HK2PR02CA0161.apcprd02.prod.outlook.com (2603:1096:201:1f::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: 2f2ba542-3a09-4e21-4497-08da27f13366 X-MS-TrafficTypeDiagnostic: PA4PR04MB7661: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: nK9+UdbD17+3cJjMxEctiBPNELCwnU+fnk7YsE4b/HSYKimGWcDO5JRAvEqe1YAcLiIzlOPEWIij6kBSY93JpLWzy6doXnudRMcqZZ2WEriNtQDoLvj7GeNn1iYWTsWEfNqD5WBN0mb9bYaTf+YUuQ3l7VwWaXyvAIrhjfcH6H45ya/m0l2eXe9RNPo4E/Ok3/Z7WcYsw++dizFoUZtbWidxn8ERqZFxUrFAyHFncI93uO2bvHoZmBSJYihXmlg5oSf+g45uLF5yDZeWgr8Vg8+RQ/OsBBMheWTUkkwgM5xaPQ/oQswLe/CMOqVcHMVV9nw3J1uNI+jdOWy1prd/uJmM3nGcZyTrNDveFJLmR5cG6ykGK+29Y8BdGf2aLbC0vobs4wYQf1jFz2X8XjgT/PWdHqNhjNp75VMiQYhB+rnhRnJxDiUsdsu1rbtjx15ZkS9uay/xEyoVmgeBY2/DaFgdBNh5xlxHj7fmIzSc/XJyH0TcMJAQuYx6q0Kn8nR0Hob97lldI03kAFnMCcOjqq27pfYgmSvQzt/IwMDOkXVYxq+Nyu8dB3/DPgsqHz73qERJSut3aM6qLhMeZhm5jjB634UomQ68ELYxQWUPgVlHzkNEk10tavLAWqyPk1GhPPKyJYTmckXd7eSvj4kmn+KyXOtY9vm7eQTarGKvcGB3WFpKhdGSJ40kU216AxWe 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)(8936002)(86362001)(107886003)(5660300002)(6916009)(83380400001)(66476007)(66946007)(44832011)(66556008)(8676002)(316002)(186003)(26005)(2616005)(4326008)(38100700002)(2906002)(6666004)(6512007)(6506007)(508600001)(6486002)(36756003)(13296009);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?w3GMNzKDMg4ICzSsTQodrtDmRVpzOFRvg50r6h/yvj5fUeXigiggpM4ykyff?= =?us-ascii?Q?VCg0T6GcsrbhH011YvPgpJB74YYD1JvQL+0ux4oLk+P4RXTvAwJwmEU1gfTA?= =?us-ascii?Q?zU7eZAQtAp2l6H6gBLypjisbMq5NltptQ2A/kMKaY6UWbDHF1S7+lgvq5csF?= =?us-ascii?Q?cs1InM6uUptSDWwBkcsnJUaB5ekrld66tXZccTYVamQpQmh2WmDd0NhM4KGY?= =?us-ascii?Q?tuqFcj10p+brfERnLdsCrgIIvqBpWeRp4niszPDnEvoilcz3h3L3hi8ou8As?= =?us-ascii?Q?BRHwc5YUWxOYvIXIAgZuwYhcmYcYxgoq/oFUxo/AuvnzScdCIVHq7+qwLDTN?= =?us-ascii?Q?zuAYfc22+jZDmaKnOXFcJKssPtnkntbM2dKoCYE8KKEuPOqTzpUZGklyoCTe?= =?us-ascii?Q?HXFvpBII6v5FT9sK5ZoM2NCSRRIusL358b/habxqO5zxtNEbsq65FT+ekO98?= =?us-ascii?Q?4d2LzD1z/AIkG/tPaVZT7McnFaEoaIpi9BhCW1Lc9ni21YBge1xxP3Hc/TS9?= =?us-ascii?Q?uidHQvRw4vidFCzeLXwIXbcne7ApQpeG8GhTDFy8504G1/CLTjdfxFEqeE4A?= =?us-ascii?Q?LXc9ZoMN14ZY8bF/e8/bjdBvrT1wHm4tOcvlAtY386VCw1c8p3IupEP7VGlC?= =?us-ascii?Q?xugtb/e8eiQTwd4B64LIYSiMvdQU1QmoXqNVot6C1s+tHlH4A9DvJcNRNuxc?= =?us-ascii?Q?xVJ+ij/S7TQ/mqc4XyBdQwNkcX1gwM31rLWDPyNKi8WY+JTAkdZcHyySCsLW?= =?us-ascii?Q?m2vvy4FidoY8WeBAtzZi43mVN5+J4kGELSl09bLKb7iGODPDu79L5zlQ94+h?= =?us-ascii?Q?CoGGGHLxJbyXaNpq0HYHgPr4BPBEupdtpcdCfElRgdYaUxrmQUclwstRJIaa?= =?us-ascii?Q?t/jclVpUqBaYhIE7F4L/4y/qBYCVJzn9Oi1FGh1C8XnBkoMRtjZhzpjlc5t2?= =?us-ascii?Q?yaxOFcZO4mfCwzRQmMBARh8tgpSqT49NGFN0IR9QZbwUvGorq5gMPge/l4nO?= =?us-ascii?Q?Y3RGnI0KGFNKychNiFnnlQqkOnGc326u9rZy0w/xDKudy3aaEgbGJ6lsU4wU?= =?us-ascii?Q?QLFlmbDECYr6Sx2S2doS/thvRX8PMFfRfZ5na+7BtcBqeS34O+YtMJyzXzss?= =?us-ascii?Q?SC6Yj0UIcqJ28WeWvidWufeP51fXrFgfUXpN8QuKop3AiV3amUO8WgQxb0lI?= =?us-ascii?Q?HsgusG/ds9BtpF9cVqL+QYWRnq6tYN/D3A73noUC0B9+bLXMdixYejSp33fQ?= =?us-ascii?Q?wArYln2Pza/Nca+HLTO1gODlGCZWpwfxcjxlC89ein/zTDL5InwronR346V7?= =?us-ascii?Q?eoxFgUFqOZG5ESlBQXzlhaA57MHwK+eWeKyALcGZDsZnGPt+44yH0r4+cliW?= =?us-ascii?Q?I1LQYIG89dbb+Q2+2yvemvAm8t8Sip0XSn4fvN6cqEatqR9j9PHCc/7YDXoD?= =?us-ascii?Q?xRn2kC+xO0CeZO0Vhw748bS6mlsrKgqtA7R8rckJygACLNla6LNxY9EuVuO0?= =?us-ascii?Q?TeNe5nzD6kWF2Y52cmt1YwjkUqsJEOSOSKbvmmlBkXwhZCkHoc00SLSsr8vP?= =?us-ascii?Q?7IDRy+6UlFyVHY+5d0niK/0GeXcqp4TRPGQMtv3BcSNswGEzN7P6umgjkscj?= =?us-ascii?Q?pT/dccz/x5z1dQbpe+TvQBeyUMbmJazw0HvQrR2I3bFbZkjeWpklVWnO3HH1?= =?us-ascii?Q?eMRlqBafiKwgMifKUuGkR4vWYjI+/MhQP3MiU+g9Irei5Ilc0tv6V7Um8K2C?= =?us-ascii?Q?SEJuKJg09xwyXNdeZR1e/Bw8lHl4nO4=3D?= X-OriginatorOrg: suse.com X-MS-Exchange-CrossTenant-Network-Message-Id: 2f2ba542-3a09-4e21-4497-08da27f13366 X-MS-Exchange-CrossTenant-AuthSource: HE1PR0402MB3497.eurprd04.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 27 Apr 2022 01:56:53.2100 (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: d3Y2RWjhNI/OuRXaCtqUPakCrG8na5P9csyJJFYhaHANM9wheNn2mo1aP/cYu2vc+cZIaGSdWSN7EXi2ji7TKA== X-MS-Exchange-Transport-CrossTenantHeadersStamped: PA4PR04MB7661 Content-Type: text/plain; charset="utf-8" This patch defines the default packet scheduler mptcp_sched_default, register it in mptcp_sched_init(), which is invoked in mptcp_proto_init(). Skip deleting this default scheduler in mptcp_unregister_scheduler(). Signed-off-by: Geliang Tang --- net/mptcp/protocol.c | 9 +++++++++ net/mptcp/protocol.h | 3 +++ net/mptcp/sched.c | 14 ++++++++++++++ 3 files changed, 26 insertions(+) diff --git a/net/mptcp/protocol.c b/net/mptcp/protocol.c index 653757ea0aca..bf9d5bd8dfa6 100644 --- a/net/mptcp/protocol.c +++ b/net/mptcp/protocol.c @@ -2259,6 +2259,14 @@ static struct sock *mptcp_subflow_get_retrans(struct= mptcp_sock *msk) return min_stale_count > 1 ? backup : NULL; } =20 +void mptcp_get_subflow_default(struct mptcp_sock *msk, bool reinject, + struct mptcp_sched_data *data) +{ + data->sock =3D reinject ? mptcp_subflow_get_retrans(msk) : + mptcp_subflow_get_send(msk); + data->call_again =3D 0; +} + static void mptcp_dispose_initial_subflow(struct mptcp_sock *msk) { if (msk->subflow) { @@ -3813,6 +3821,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 221bb6b9860e..65a765c8d2be 100644 --- a/net/mptcp/protocol.h +++ b/net/mptcp/protocol.h @@ -624,6 +624,9 @@ void mptcp_info2sockaddr(const struct mptcp_addr_info *= info, struct mptcp_sched_ops *mptcp_sched_find(const char *name); int mptcp_register_scheduler(struct mptcp_sched_ops *sched); void mptcp_unregister_scheduler(struct mptcp_sched_ops *sched); +void mptcp_get_subflow_default(struct mptcp_sock *msk, bool reinject, + struct mptcp_sched_data *data); +void mptcp_sched_init(void); =20 static inline bool __mptcp_subflow_active(struct mptcp_subflow_context *su= bflow) { diff --git a/net/mptcp/sched.c b/net/mptcp/sched.c index c5d3bbafba71..bd0beff8cac8 100644 --- a/net/mptcp/sched.c +++ b/net/mptcp/sched.c @@ -13,6 +13,12 @@ #include #include "protocol.h" =20 +static struct mptcp_sched_ops mptcp_sched_default =3D { + .get_subflow =3D mptcp_get_subflow_default, + .name =3D "default", + .owner =3D THIS_MODULE, +}; + static DEFINE_SPINLOCK(mptcp_sched_list_lock); static LIST_HEAD(mptcp_sched_list); =20 @@ -50,7 +56,15 @@ int mptcp_register_scheduler(struct mptcp_sched_ops *sch= ed) =20 void mptcp_unregister_scheduler(struct mptcp_sched_ops *sched) { + if (sched =3D=3D &mptcp_sched_default) + return; + spin_lock(&mptcp_sched_list_lock); list_del_rcu(&sched->list); spin_unlock(&mptcp_sched_list_lock); } + +void mptcp_sched_init(void) +{ + mptcp_register_scheduler(&mptcp_sched_default); +} --=20 2.34.1 From nobody Thu Sep 18 06:42:53 2025 Delivered-To: wpasupplicant.patchew@gmail.com Received: by 2002:a05:6a06:869:b0:4b8:7781:bd2f with SMTP id d41csp785111pis; Tue, 26 Apr 2022 18:57:07 -0700 (PDT) X-Google-Smtp-Source: ABdhPJxUlSKLKELOffIGBRcPKymmtC6BXjNxv93yZ5dWghKpQuf3PBzIy2K4LVXKY7RuZMgIuUfb X-Received: by 2002:a65:6d09:0:b0:3aa:1ecf:8848 with SMTP id bf9-20020a656d09000000b003aa1ecf8848mr22327670pgb.55.1651024627694; Tue, 26 Apr 2022 18:57:07 -0700 (PDT) Return-Path: Received: from sv.mirrors.kernel.org (sv.mirrors.kernel.org. [139.178.88.99]) by mx.google.com with ESMTPS id q11-20020a65494b000000b0039d9d404482si85282pgs.570.2022.04.26.18.57.07 for (version=TLS1_2 cipher=ECDHE-ECDSA-AES128-GCM-SHA256 bits=128/128); Tue, 26 Apr 2022 18:57:07 -0700 (PDT) Received-SPF: pass (google.com: domain of mptcp+bounces-4915-wpasupplicant.patchew=gmail.com@lists.linux.dev designates 139.178.88.99 as permitted sender) client-ip=139.178.88.99; Authentication-Results: mx.google.com; dkim=pass header.i=@suse.com header.s=mimecast20200619 header.b=kXT1CCNh; arc=fail (body hash mismatch); spf=pass (google.com: domain of mptcp+bounces-4915-wpasupplicant.patchew=gmail.com@lists.linux.dev designates 139.178.88.99 as permitted sender) smtp.mailfrom="mptcp+bounces-4915-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 ED9E1280BE5 for ; Wed, 27 Apr 2022 01:57:06 +0000 (UTC) Received: from localhost.localdomain (localhost.localdomain [127.0.0.1]) by smtp.subspace.kernel.org (Postfix) with ESMTP id E191964C; Wed, 27 Apr 2022 01:57:05 +0000 (UTC) X-Original-To: mptcp@lists.linux.dev Received: from de-smtp-delivery-102.mimecast.com (de-smtp-delivery-102.mimecast.com [194.104.109.102]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 221C5621 for ; Wed, 27 Apr 2022 01:57:03 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=suse.com; s=mimecast20200619; t=1651024622; 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=0wdiQG+LBgIrcJUzlt8SoaY9hoqvSGM7TtHPg0XxN68=; b=kXT1CCNhe8bMX9nK0z2KIYvQOFVIFVfJtXpcyDfK1pf+LkA9GdvVhz5BDLlScSHvIOd30t ggRInbgZIvpHiGTY31ju91oI467OKsf46Opm/HH7BHMpyXFdk7GTPid+Ta7kaiY6BTOkec ia4Bl3VbsZStfUL1m4hIw+2bTlG1s+w= Received: from EUR05-VI1-obe.outbound.protection.outlook.com (mail-vi1eur05lp2171.outbound.protection.outlook.com [104.47.17.171]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id de-mta-35-thGy49RwPkiL6kV3BcBANQ-1; Wed, 27 Apr 2022 03:57:01 +0200 X-MC-Unique: thGy49RwPkiL6kV3BcBANQ-1 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=RpzjU+oOXklct1Pta21hUgSRMTKayBGkb0O/JU032fq3g5eWTCe1SMC+AhbgbVArqiHqWFYYLDNhBxg14y83dNPGu9ICvTcwTdI2hrvBCaCK4+AlrN1HDwjuwESC/lNf3/SCAyygogOFHzKThAyLoclsgq5LZ/TfE1JyFjY1cWHxZjP8KKhHx7Q1FXLO1Wzvnjc+c04nz5j11j+6kOSgKaERxgWlgLJvLBQXkYaELl7zFe1tXTYPMOPEsqzTiFs4KRtLgfwcm+YklITG/jKhgRJo/VESETpDbrwv065Rlc5ztm4jUDczmL/HZFTeBi9rfqk7tk6ucJpEshVRQEQdlA== 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=v8lC6GT89JCk8TLpLGMc+iHrXZ9DltZZTYA46dBTO30=; b=lfKVcHT0IKuBhgWfuVf7eZ4ID5itHJl8WHizryWAYtCC3mGppY4JzjO4snxbQd5Ukz/Dvp0Cr/zvrQ/c9V9dvAert2L5KtOPuYB0qti5B1JLY/61yZafrVrDBy+tpOs+lW29BSi4Zf2YqnbWO5nuT/6WAUBYWUEeRKZ20NfCyvsSoJWLYs1uSdTuu91dWaQqWLFCT0zuNh0CozudLpEtRIFhpiGZGxk7U9FvtB44qg8+aZcYlkJ1YI0V3JkwPnixb9tle4eG4rj8EeKBnPVDyMIu+CBSJ5p54YPRCcslRZI4b3SoJ5Aj0bPGrHPOW/HFrlu815xbGgw5Q4l01mUW9w== 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 PA4PR04MB7661.eurprd04.prod.outlook.com (2603:10a6:102:e3::8) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5186.21; Wed, 27 Apr 2022 01:57:00 +0000 Received: from HE1PR0402MB3497.eurprd04.prod.outlook.com ([fe80::9974:fd5e:e3c0:14dc]) by HE1PR0402MB3497.eurprd04.prod.outlook.com ([fe80::9974:fd5e:e3c0:14dc%3]) with mapi id 15.20.5186.021; Wed, 27 Apr 2022 01:57:00 +0000 From: Geliang Tang To: mptcp@lists.linux.dev CC: Geliang Tang Subject: [PATCH mptcp-next v16 3/8] mptcp: add a new sysctl scheduler Date: Wed, 27 Apr 2022 09:56:50 +0800 Message-ID: <78e80c0d260ee845be842178bef748e535826384.1651024344.git.geliang.tang@suse.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: References: Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: HK2PR04CA0067.apcprd04.prod.outlook.com (2603:1096:202:15::11) 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: 99a7e965-55f3-479c-ac4d-08da27f137b3 X-MS-TrafficTypeDiagnostic: PA4PR04MB7661: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: ZOxWqprNFmyLGNS33bwyDF5AtxF7YmphuNZBD0ja/hiPgPItjU1kINR7a5z57gurttRf4hu9aj0O4Jg6wqxNQStXbdCyXcg9zD7TRU0xSFZPdApdop8KSGtAJRbJXd8l7Qzleg5liAIj+UBfC7JL7V5jpqyonoj92qJwx8feuk+8bzzX/Te5bST/I7zwx7K6ADmynfpOm7dkxVrZw7y27DnbYXfduAe/XQxlNRPAcM7KL8P3bpPOeg5TPAceLf5ocqC3NOVrM6W14L1GP59VBgLaH1ixOwnex5xgtV08ShHssShTz8jf0WFsHAEP0ia6bBe69UhAbHxYne2b2hThbYhftcC6iSAZFxytu2sCwW7usjXd53PeFkwcfiJJyzkSCUck41URruirzmLzpmSY3dO0+6W1fM1l5qU8rMx++kzXAd4yYJja7LotSvqHTaiA0Vf02QZlhcG7LMHDzKmo/hYuZHZV4kqnsMUZ5M+3WsXGmjQtrWhVLbQs2uCMUCBT8RJt6if2C+O/DyJlWHmFWow+oD+diaq1HXA4Ods0N9c41el0KZ7alCGFmsPQQs6nvDqZwgwUcVzuRRbPRto0hHayFM4/xi35aN2EMkju1tttF+pviqwuClkz60erlNTly6Wtk0Bxyh1BfDh8e5DgxpxZHkvdpgp7lMSNcKIRDCtQwUUDKiDAOiCMAB6lvvA5q2POcBOJ7uPvEOWaqdFWIQ== 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)(8936002)(86362001)(107886003)(5660300002)(6916009)(66476007)(66946007)(44832011)(66556008)(8676002)(316002)(186003)(26005)(2616005)(4326008)(38100700002)(2906002)(6666004)(6512007)(6506007)(508600001)(6486002)(36756003)(13296009);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?ptdips+StPYX+6sRFosifq9Z1nUlG8Ub8Aj/BvW0UTKbz6hO2bWW5v/pdJW6?= =?us-ascii?Q?sEk7GuNSuAlguqR3zOrkMRyQsYJhC7Bj9e6r8FddfV2jhxTStxZfbpSPwyZH?= =?us-ascii?Q?rtDnpAY4tko/4L1f0+b4OAgA4FEPUvL2XBqzIzCxiwYehSo9L4YAF3wda+qe?= =?us-ascii?Q?okWMz3Phzu1O02b6ZH/GuyPljqnZtQVTUn/KVTJnlU2LWfsK03LPXQi0agIV?= =?us-ascii?Q?fgYDw46/l7Xv4SstEXTksSNtuAncjViALtBAFG8qTB/daKZ1/RfTts+VsUlr?= =?us-ascii?Q?IWPkmnampgEOssL+WFasuUkYhs8KOEStJRqiim62t1w3ici4sL3CyB2XxR99?= =?us-ascii?Q?hcxIaVW4Dc/Gj5YO7047OmCrkior1GhnRKxSNSwCg+smRdyeG2opAr+W8/ln?= =?us-ascii?Q?o9nbdhQldFIjqaDW6rH2uwbW1fwItUJJIH/2r3iYh8kRXzlmMgAUAW/ieTi4?= =?us-ascii?Q?Vm9/KEYaFptv7NrrHjKBOcjdUL3gy8e8OW+rfyUjlsVce3E4//SWfR7RFLX2?= =?us-ascii?Q?XbxRv+IO8697KbQA8bgrpBgQ67ZE8sKC12CYMO53weVaq6v/YsPYjghH2qf8?= =?us-ascii?Q?1KPqsVkgUYcb68gqKAgGYzugW/nna8AlTvoEyNGHBFODiGk4rU0rMxIt0qIV?= =?us-ascii?Q?AJhWYAiZpIC2ks4meVBB+P/j8RWE9RMT62ABgwfQV/bjNfveqLOfLLaPTy2u?= =?us-ascii?Q?0oPT2fbIyptNSH8f9l1hl5W3NILytXuMWbScRdWD865ZNhdnX8Y0ahJQMTY7?= =?us-ascii?Q?KfEFTj3mMj8TgwtwQS1B766r5PMgKfIntTW4vpF6DsSDGTT2AFTmBoOQ9iui?= =?us-ascii?Q?m4Ito5xq3JckH7o0SfGXmXdBN+LPDUVghVldF46LTCoKT0UAnOwC/keOra9z?= =?us-ascii?Q?jSilbAjxx5w2q60par6rnKe4yiabv1VXmhpb8JzmCPyEPG8NiQb4TNWsBun7?= =?us-ascii?Q?i9idKXArj/pYW4QYfXLkwqUVvkmiyurWBF/YDcHM2vP0uDnIf/EL3s1osXgM?= =?us-ascii?Q?NVRFGL1564z5BacQ1qkZDBuUofG1KMxXB5yNA99UDR8zhEZ5ZFy+eZfFvLVX?= =?us-ascii?Q?Im7j1cfImIkNJcFru30X5Am8QO178rvwg1IT+ASlzlqqJx0bwzl8KmKHeshW?= =?us-ascii?Q?0spoMdfPg4sTEdag4Xv/F2UqSE/kyc8P7wxUxCxqoSeqEOoqjrD/ZV/gNuvn?= =?us-ascii?Q?lkwYpqrVRzDP1APuP9x8+5RX2EkOytgokp/shUujl4uDU3sD4JjwYg7SaVfz?= =?us-ascii?Q?rEaq5F14pzY4QYCQ05ObrwlDf8MP1IArdcXmdJpnMg5QVKhuXTpJhiO3tsQ1?= =?us-ascii?Q?ryfd/tTiJALcNhQ+vCs+yjfWM6d4MOPgU0g/8fMS/Pk2JAuVioVlPyG2y2pC?= =?us-ascii?Q?gR/+ReiDjQ6x4YblNmbkWcL9BSq0qvgL/0WmDtw/GOlCYYQxjh4yl+nyA7tk?= =?us-ascii?Q?0kFcPh15WFolwK4WqzhKDzq9CJpHpEv8QhGt3PuXHJAQiO/jpAtRg9BNHkI0?= =?us-ascii?Q?0rCvhTshesm23kxekf9OuaO7zMdsl2//95VHIOJw/oFjNwuua4sdxrafJnSs?= =?us-ascii?Q?PuNGlG6BFb3qQUHlHrc37BeI3R/KXUQTb5MZbHksITmb8eP26GOPu0nlDyC2?= =?us-ascii?Q?nH5Fz0EEibcBrwMzQiREXOHCXefdJWhyO7dqz7qZIr99hrBcYc3dPdz21IZm?= =?us-ascii?Q?AiIsXocAO8bk3lMtEWfKMXDYE+w4xVApn0+QO9qiCKf+qC+Fbx405Z3XEdzZ?= =?us-ascii?Q?vEjdvR4gVRWytAmZFUBGJKrQG3/slEw=3D?= X-OriginatorOrg: suse.com X-MS-Exchange-CrossTenant-Network-Message-Id: 99a7e965-55f3-479c-ac4d-08da27f137b3 X-MS-Exchange-CrossTenant-AuthSource: HE1PR0402MB3497.eurprd04.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 27 Apr 2022 01:57:00.4594 (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: Z7FCyRedIdfofifH7wWube4kdM2pGhvhoD/evgrQoBq9J8mt+Cn5PXXph2jKRy/SBiiFM6sBg+TntN0xh/2v+A== X-MS-Exchange-Transport-CrossTenantHeadersStamped: PA4PR04MB7661 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 65a765c8d2be..4842a28f34c2 100644 --- a/net/mptcp/protocol.h +++ b/net/mptcp/protocol.h @@ -596,6 +596,7 @@ int mptcp_is_checksum_enabled(const struct net *net); int mptcp_allow_join_id0(const struct net *net); unsigned int mptcp_stale_loss_cnt(const struct net *net); int mptcp_get_pm_type(const struct net *net); +const char *mptcp_get_scheduler(const struct net *net); void mptcp_subflow_fully_established(struct mptcp_subflow_context *subflow, struct mptcp_options_received *mp_opt); bool __mptcp_retransmit_pending_data(struct sock *sk); --=20 2.34.1 From nobody Thu Sep 18 06:42:53 2025 Delivered-To: wpasupplicant.patchew@gmail.com Received: by 2002:a05:6a06:869:b0:4b8:7781:bd2f with SMTP id d41csp785138pis; Tue, 26 Apr 2022 18:57:15 -0700 (PDT) X-Google-Smtp-Source: ABdhPJxRvBjUFy0DAcBoPerfNYZ7r83bmJhq3fmOdcuaXI9cj2ZXNlUc2ssGYYfFy8D2kcf0yfvX X-Received: by 2002:a05:6808:3097:b0:325:7e01:ab18 with SMTP id bl23-20020a056808309700b003257e01ab18mr215080oib.260.1651024635224; Tue, 26 Apr 2022 18:57:15 -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 b18-20020a9d6b92000000b006041b342abcsi110469otq.125.2022.04.26.18.57.15 for (version=TLS1_2 cipher=ECDHE-ECDSA-AES128-GCM-SHA256 bits=128/128); Tue, 26 Apr 2022 18:57:15 -0700 (PDT) Received-SPF: pass (google.com: domain of mptcp+bounces-4916-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=MgP2RRNw; arc=fail (body hash mismatch); spf=pass (google.com: domain of mptcp+bounces-4916-wpasupplicant.patchew=gmail.com@lists.linux.dev designates 139.178.84.19 as permitted sender) smtp.mailfrom="mptcp+bounces-4916-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 049802E09F4 for ; Wed, 27 Apr 2022 01:57:15 +0000 (UTC) Received: from localhost.localdomain (localhost.localdomain [127.0.0.1]) by smtp.subspace.kernel.org (Postfix) with ESMTP id AA24064C; Wed, 27 Apr 2022 01:57:13 +0000 (UTC) X-Original-To: mptcp@lists.linux.dev Received: from de-smtp-delivery-102.mimecast.com (de-smtp-delivery-102.mimecast.com [194.104.111.102]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id B4AF5621 for ; Wed, 27 Apr 2022 01:57:11 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=suse.com; s=mimecast20200619; t=1651024629; 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=7IQbAaZuItqGn45zdY0b7mjJfFznzVRLGHb6Y1LCFzQ=; b=MgP2RRNwfB5wMSKQZ3Fr7TwgBL4J3JAjyTvczh60P6mBnOAsE5lzhvm8yQXLARkr1eYrJN 09+5FN+WTYX40joGYyYCu2cIuNI9stFh8cdkHRhepWt/1hKemJlb1a8L9PlfUCYKm7pOrx sNbbOZXGOm1v47necq8MnLoy7av3wyA= Received: from EUR05-VI1-obe.outbound.protection.outlook.com (mail-vi1eur05lp2176.outbound.protection.outlook.com [104.47.17.176]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id de-mta-16-8lCCF8VCPdqLYKFMeYduHg-1; Wed, 27 Apr 2022 03:57:08 +0200 X-MC-Unique: 8lCCF8VCPdqLYKFMeYduHg-1 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=e6G2zoM+OLk2EsSx9ZVy+05EsLKcvzM+oWtD6RxeCSP+JfWp7lFFqMi8NnQ/VTuPjhYTCQOUpR+yLq7VsCnfZAEtPGCOGxGtr4dN3LNEtafSKPDuEpnsVaNbGNgzCpE9jKl3/mRAv2qRGSAcoHFxCh5KcFNgTTVRK0MSXHbqK5I+uygzj2C5oTR8YmrOf7C8PQgUMgsmaW5hLgpYXvOEhqf8tJp+NV8z31ZKuAWd/gArxJOokLX12tAP50PzJSfRx367ABbJTnycnkxOIq7WYmdXwBluwDzZm7j2AjK7izBNyVSbYo1oqAiQnQK3X61St5O4FA+HwiLk8z8NiDfVQg== 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=oTvD3U+uuqWmxLTaY2GW03e01TiRVRGWjWeI4F6geis=; b=Zvwo59Ydcy8/DFe3McSQw68nQIw6DxZteIkBXmvyFOO2Jdpk+eyO1MgXFySqqIyRhhsUl9XwF8a182zl3KcMmd74ay6ic5ckJVqvkp2Noqs1qAdQ7f5U339y20x1klWTNHheLCDQ21muF1K2kfZdpWFUO/hTv4EId+29u6Cc24SdfHkKAUxHUQ81F+rZQZTWfRFRUZddIhZuSZO6oASa9D7zEqeJpy1/Gqi356Boim5dl4IiBrVH0ttF85YcRm2Zb1bFk8sLR4Yhrv7Gq2CBFYGCsoLEw3slTYrOtZDQ06O0hYkjTSPX2ATqCuhfQ+UCNlJhKIkAfeAt/C+qF6hqAg== 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 PA4PR04MB7661.eurprd04.prod.outlook.com (2603:10a6:102:e3::8) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5186.21; Wed, 27 Apr 2022 01:57:07 +0000 Received: from HE1PR0402MB3497.eurprd04.prod.outlook.com ([fe80::9974:fd5e:e3c0:14dc]) by HE1PR0402MB3497.eurprd04.prod.outlook.com ([fe80::9974:fd5e:e3c0:14dc%3]) with mapi id 15.20.5186.021; Wed, 27 Apr 2022 01:57:07 +0000 From: Geliang Tang To: mptcp@lists.linux.dev CC: Geliang Tang Subject: [PATCH mptcp-next v16 4/8] mptcp: add sched in mptcp_sock Date: Wed, 27 Apr 2022 09:56:51 +0800 Message-ID: <2852082212c716a93ad8351993f9fc138cda9a8a.1651024344.git.geliang.tang@suse.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: References: Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: HK2PR02CA0217.apcprd02.prod.outlook.com (2603:1096:201:20::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: 5d07bd05-f7c0-430f-9d42-08da27f13c0a X-MS-TrafficTypeDiagnostic: PA4PR04MB7661: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: ulf1ebdY8M++2SMRBvGvLcU5Ze8YUepYg+Y+2Syb++SS+87Xi0AuTLTmW+8bZXv3xC+ZHy9cRqi35BlUo9Nl1pauTHgJi5wSMuYfbquzrmnE7NEbzZMrWBE/CqSIPi7TyTx51o4S0PqG1+Yz0jwXv0j/ajx6O5BrXli41NlcBu8lYjfUi6SX1wIdqVqQkqFGCdKvSs1WpsN8p/TxjTpBC2UumdowjilDY6B1twVF7B2S0Z61XjrNop95zSbrEvbSNZlqnRzybQZsugs7fMXha0RelU9uUfnTHSMnu24ZAghurOyR4lewGPMr/VLSeYG+h72s7tWyZJqisKLT4eY/BtRh/5M2Z7FzCa/MuawsceCAXoDRxDq5t/66LqZwaGwwcIUem9euCr4k/SS1z9IFihvp2GtnHoW9QGBn6TgOh9pbWWWjZUUArfbBQpTKJ01pcR56IiVbY9DyeOhl5eVP0ncx8tD7IHhS6jsVFI63A4g0JSFWJzGLHWgtLjg+suL/tidBn2gRR91W46nM2GvHsa3orJAG93u6JLhDu6WS8zTuHHT1+/1wRyefbdNWWM1B2WPgxopuUCjsR7Js3ZdpDyyrrH2gmuYILIkKoZDYfZDyUMiukyyTKYIz1NnRkNn8hrWeVMBFF8fJtPL0v8kwKlEDH4pP2b7x8TaM36KHvN3jHLvz0OzUGvMjUwHnGrZv 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)(8936002)(86362001)(107886003)(5660300002)(6916009)(83380400001)(66476007)(66946007)(44832011)(66556008)(8676002)(316002)(186003)(26005)(2616005)(4326008)(38100700002)(2906002)(6666004)(6512007)(6506007)(508600001)(6486002)(36756003)(13296009);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?Tn/i7EwRWFWt8NHpfsblzR/GcQm2+oKbR7icSK8oOdtbdlmlPS4eABctmT3p?= =?us-ascii?Q?Cgxc7Ac0aD/LeNF2LeavmbKORmklxfRPMWNYu9UvQWlnYJ03VwTVcPhWgPGc?= =?us-ascii?Q?KOFTfRoV11OKDjgiPhTKTo8SXpyksjITO2GYfm3dqzOWUlysaAn71ugH4AxU?= =?us-ascii?Q?Tq2Zi1rbTXCoBtvYf/hfTksCZNTnZvItEKMuUmfjj/XcYSq0tO27AWiO0dr2?= =?us-ascii?Q?TOBOzhUoYDnjkT+4QVUd9VG2b0UDhNo9YOkXowScqGkF4iUBxn08FLCzTCsQ?= =?us-ascii?Q?jZ1nMhbKgOrxdVwdo4QcsxLM7UhBf/ttD0s3joxY26HP7PDuuDF4zZ4/N5v/?= =?us-ascii?Q?yu+4ZWEqufTqrMti+OxxxUJccIQEprKU5fl31aWWpw89jebopDmtLMMRiCp2?= =?us-ascii?Q?JsxR3JbrEs4c2LQ/0VR/oiaqufTQIRMMkqjivOA7L/NOYWgng2/rRqKNfKzG?= =?us-ascii?Q?rRo2Hyq958L0o8KgueFISJvcng1NORxGq72ezkgwxiAHSUWDdolaqizvu5Zq?= =?us-ascii?Q?k8J4V3YUON+gqu5RglvV16ZbHRata79fIQz1BSL8YeMMYgS6rJwQpI1nCdmk?= =?us-ascii?Q?KjJ93smIjbWsph18Mr1M2uTNU8NY3MRNX0cIr9l6EuR6vyfc3mSOmpjlb2fg?= =?us-ascii?Q?bLS7GXgi0iADgerIcJ2CRt8BMIbHcCNyORByKZ4br6Ib/uG+YP9PBkYXU+hW?= =?us-ascii?Q?K6opkgZhIph4IZOYEwxxQVxSGWPqPafSE/M5r7RN4ICvIbfzaDtYU0SZmz/p?= =?us-ascii?Q?1FYcspdFqGwMsNhZ4+CuFE3InFynM+7SHTsMgh7xtdSC2JYROoxsEJkoTfc4?= =?us-ascii?Q?Go6xti1bKgySmj/fKg1TK1eqibW/GBTpDRFEllqSmGyCZIxSAnuVTU4fEwvq?= =?us-ascii?Q?zGPrx3s85BAo6mAY67i/9u8EnkrgZLMkaPjPlp95yAw7VR7gYEGGvUeJHEa/?= =?us-ascii?Q?nQnoB0Wib/IEPUh6N61NVsgjcpz3o4D+cTl3RndtO8qzCgvaQdivpYapDkQ7?= =?us-ascii?Q?tFwHe952nll/yR0hmBLVepIQf1cCvLu5XxHTTQLHJaK5eJEaif17Ejn4wawo?= =?us-ascii?Q?tZWnKThBiTOiLvGo7X7Us6VmjwIX5oJY7Dki8HEvR+kk50x4PFZh6NCIS6F1?= =?us-ascii?Q?Ip6D8QEHNDpiRN7s/oLYfw36S1XqDMn+uF2YBqEzNzbHYxgKrBLTWbIG3+zP?= =?us-ascii?Q?vn78X3iSikHQsO253CwPxLYyv7iWbqabB9rNzay0ROlsOm/vJFDjVGfBwnUG?= =?us-ascii?Q?+y+IDlgAeBvW+bn9YexCfgHpYXyx8zSrnlXKZux+SsQLLWY9ePkpm8ekkikW?= =?us-ascii?Q?AkrhNa4WQh40kVkeXVfyPZMOvcoArv+3QAuPAikst5S5zGnsPNVrxJKTLoC7?= =?us-ascii?Q?YlrJYMzmMGekgU47tQhZAyiuiO5701pPR/gMLfvuZBLt5LzJBMHeQU7WVjEy?= =?us-ascii?Q?++kJwW5nniYwUxueZaMFBkkFaEgoxvrs2gf7yL1ByxT0rOdvIOADn1d+/SP6?= =?us-ascii?Q?elgH7UGMclbtdtcBL3+KuuW0scT6SNt0GjRRHwhjBXmUtfw7BPzRo7jc9Nip?= =?us-ascii?Q?vMyEwE0QA3KPHd/Upz9w95OgSoi7R2gg/+GTiw/V/gkLCzwdKWGJ8e86zhcE?= =?us-ascii?Q?lOMMmDMMGtW+1wfEwEAxAkiqvl1xzTEska2r8y/h1qrFzJ16G9rhxT2Nplyb?= =?us-ascii?Q?3yoiFRnjQbHoO9i+VK5zTnTAkZMrRJ1tR6dNEl+nUdDaPqImYsLqayWIWG71?= =?us-ascii?Q?/G0Hw1UWTVUGwexh9CqST0beNINMJJI=3D?= X-OriginatorOrg: suse.com X-MS-Exchange-CrossTenant-Network-Message-Id: 5d07bd05-f7c0-430f-9d42-08da27f13c0a X-MS-Exchange-CrossTenant-AuthSource: HE1PR0402MB3497.eurprd04.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 27 Apr 2022 01:57:07.7401 (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: DNLpamo3VotB0uzyzK3aKhPqWEOKySolPuCCWzxcCjDuA1Yarpndc4L4G6SqoBM8C38l85wUYkAYjZfWRTJkTQ== X-MS-Exchange-Transport-CrossTenantHeadersStamped: PA4PR04MB7661 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 bf9d5bd8dfa6..7590e2d29f39 100644 --- a/net/mptcp/protocol.c +++ b/net/mptcp/protocol.c @@ -2673,6 +2673,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 */ @@ -2832,6 +2837,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 @@ -3009,6 +3015,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 4842a28f34c2..22f3f41e1e32 100644 --- a/net/mptcp/protocol.h +++ b/net/mptcp/protocol.h @@ -298,6 +298,7 @@ struct mptcp_sock { struct socket *subflow; /* outgoing connect/listener/!mp_capable */ struct sock *first; struct mptcp_pm_data pm; + struct mptcp_sched_ops *sched; struct { u32 space; /* bytes copied in last measurement window */ u32 copied; /* bytes copied in this measurement window */ @@ -628,6 +629,9 @@ void mptcp_unregister_scheduler(struct mptcp_sched_ops = *sched); void mptcp_get_subflow_default(struct mptcp_sock *msk, bool reinject, struct mptcp_sched_data *data); void mptcp_sched_init(void); +int mptcp_init_sched(struct mptcp_sock *msk, + struct mptcp_sched_ops *sched); +void mptcp_release_sched(struct mptcp_sock *msk); =20 static inline bool __mptcp_subflow_active(struct mptcp_subflow_context *su= bflow) { diff --git a/net/mptcp/sched.c b/net/mptcp/sched.c index bd0beff8cac8..8025dc51fbe9 100644 --- a/net/mptcp/sched.c +++ b/net/mptcp/sched.c @@ -68,3 +68,37 @@ void mptcp_sched_init(void) { mptcp_register_scheduler(&mptcp_sched_default); } + +int mptcp_init_sched(struct mptcp_sock *msk, + struct mptcp_sched_ops *sched) +{ + struct mptcp_sched_ops *sched_init =3D &mptcp_sched_default; + + if (sched) + sched_init =3D sched; + + if (!bpf_try_module_get(sched_init, sched_init->owner)) + return -EBUSY; + + msk->sched =3D sched_init; + if (msk->sched->init) + msk->sched->init(msk); + + pr_debug("sched=3D%s", msk->sched->name); + + return 0; +} + +void mptcp_release_sched(struct mptcp_sock *msk) +{ + struct mptcp_sched_ops *sched =3D msk->sched; + + if (!sched) + return; + + msk->sched =3D NULL; + if (sched->release) + sched->release(msk); + + bpf_module_put(sched, sched->owner); +} diff --git a/tools/testing/selftests/bpf/bpf_mptcp_helpers.h b/tools/testin= g/selftests/bpf/bpf_mptcp_helpers.h index de20fbdb6d98..a0b83fbe8133 100644 --- a/tools/testing/selftests/bpf/bpf_mptcp_helpers.h +++ b/tools/testing/selftests/bpf/bpf_mptcp_helpers.h @@ -29,6 +29,7 @@ struct mptcp_sock { =20 __u32 token; struct sock *first; + struct mptcp_sched_ops *sched; char ca_name[TCP_CA_NAME_MAX]; } __attribute__((preserve_access_index)); =20 --=20 2.34.1 From nobody Thu Sep 18 06:42:53 2025 Delivered-To: wpasupplicant.patchew@gmail.com Received: by 2002:a05:6a06:869:b0:4b8:7781:bd2f with SMTP id d41csp785177pis; Tue, 26 Apr 2022 18:57:21 -0700 (PDT) X-Google-Smtp-Source: ABdhPJzFwz8K26MISeLQ6RTUzZEIAhydQB5Xe/gG95oycMq03XJkxEBpaOGXipB17L0HgkbLAABb X-Received: by 2002:a65:6946:0:b0:39d:a0c3:71f with SMTP id w6-20020a656946000000b0039da0c3071fmr21771066pgq.160.1651024641569; Tue, 26 Apr 2022 18:57:21 -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 o24-20020a63fb18000000b003a2ece8b92bsi136254pgh.219.2022.04.26.18.57.21 for (version=TLS1_2 cipher=ECDHE-ECDSA-AES128-GCM-SHA256 bits=128/128); Tue, 26 Apr 2022 18:57:21 -0700 (PDT) Received-SPF: pass (google.com: domain of mptcp+bounces-4917-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=K8vNH9OI; arc=fail (body hash mismatch); spf=pass (google.com: domain of mptcp+bounces-4917-wpasupplicant.patchew=gmail.com@lists.linux.dev designates 2604:1380:45e3:2400::1 as permitted sender) smtp.mailfrom="mptcp+bounces-4917-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 0A15A280C1A for ; Wed, 27 Apr 2022 01:57:21 +0000 (UTC) Received: from localhost.localdomain (localhost.localdomain [127.0.0.1]) by smtp.subspace.kernel.org (Postfix) with ESMTP id E576364C; Wed, 27 Apr 2022 01:57:19 +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 485EC621 for ; Wed, 27 Apr 2022 01:57:18 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=suse.com; s=mimecast20200619; t=1651024636; 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=HMCvNiFSVB1qO9513VU374v2BjAUVA7DsJxQhsYS7J8=; b=K8vNH9OI+P4URx3m9h7SQ1tPK3YoJkEGScTzgIgEfn82cRBT19hrnpy3kER0NIRoOssDpG uGsvX7rF3t4vAX+PeYl1/4K255qYxd+Hm4IpjgX4VzwHBQRvVYa7VmDSEW2obVGF14y5wq p4xzIUIDu4IziURNlABzAKr6WmUGi4k= 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-30-m_MXH29VOe-q7_BeivHlRQ-1; Wed, 27 Apr 2022 03:57:15 +0200 X-MC-Unique: m_MXH29VOe-q7_BeivHlRQ-1 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=itQUlGLUJnCNhJ/6v1CWJveBjsmNDpc9e73ek6kmS/t7IZlcdffSw9sUxWbRxeFaUANLITmlVlKi7sQ6OlRxgU4+cU8yf0MypxmUp3iTDCjhzy5AtEJB22WD8R6e+l9cGli/lS2xOvhhZWDCx2RC05FaqjsVAHcNuTWATo0eL3P3xgujmqROEBLhCJ+kxs6qWaa6a21f0CQlRlSI7ALMiy+SaA/2Q9ZyCQfBlN4pUNmbu0enW+Gjo36qPbHH0FKzTpl9RQWDgk9h/RG8B0j1H0vJuZwvehSkyb5cQZG0UikuxtfPqEftEa4mFyTwsHwKs/oU3vWMoS7WRyGEroUI0Q== 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=57g3mAueaU3NZoSF+1FZeXzAaLHaeBhQ8ohe3aw6CHc=; b=flA/4Zwm8wSQDjPoPjR/FIUuk9iCS2Qg6rpPOymoyljPlhGeMuLYlIJ6+9BkcXFhUnOtMIEIRSTgr6aetBidXbJDyl6KT+YiLdZOSQbWglP7zPqULIvwlm+ws//83PbUf44L+iQRtK8gdhGuoNwKMfgIawg1t7HttWq/oIpbNDibASdTiRLwIOgcpvyUn9ng6VdLqw5S9hSeL3ZUlBw6uv2cTS4re3ospvinjBfHvO3rikqvdOeoNrfHRXU7P0+IjWexCFebXuSpILVO17TXXtCXSTDttv+wpb818uePnb7rPeEaWaQDJVCxgIPGyJwa2d5Yuv8EtLEg+xaWQuuY4A== 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 PA4PR04MB7661.eurprd04.prod.outlook.com (2603:10a6:102:e3::8) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5186.21; Wed, 27 Apr 2022 01:57:14 +0000 Received: from HE1PR0402MB3497.eurprd04.prod.outlook.com ([fe80::9974:fd5e:e3c0:14dc]) by HE1PR0402MB3497.eurprd04.prod.outlook.com ([fe80::9974:fd5e:e3c0:14dc%3]) with mapi id 15.20.5186.021; Wed, 27 Apr 2022 01:57:14 +0000 From: Geliang Tang To: mptcp@lists.linux.dev CC: Geliang Tang Subject: [PATCH mptcp-next v16 5/8] mptcp: add get_subflow wrapper Date: Wed, 27 Apr 2022 09:56:52 +0800 Message-ID: X-Mailer: git-send-email 2.34.1 In-Reply-To: References: Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: HK0PR01CA0050.apcprd01.prod.exchangelabs.com (2603:1096:203:a6::14) To HE1PR0402MB3497.eurprd04.prod.outlook.com (2603:10a6:7:83::14) Precedence: bulk X-Mailing-List: mptcp@lists.linux.dev List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: 004a3856-a599-4200-e02a-08da27f14031 X-MS-TrafficTypeDiagnostic: PA4PR04MB7661: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: cucJLSZKjoshMZPfCroiZgQ1vGGuuQZPogfBIYkfligvTzJMqia9scND/EK3mueZd4EIxcBOilVpt1rNNV8xNB6Owo9fd/smeHgyl7utQXpHzXWNCsztWLHmxq0CEMtbowCvSgd4AC+uIRDiup5m40xmNw2vozyOt5nXxB2uNRJtivQLx+e+/o9XDIy5f331oy88aZ6qCW/+V928NDhDlFbYAf9Hny7uBPh1PEV292tRomDGjOIGt1cF2e95eEFFL/wflnEOr1jEDaQyey2/BPWqeZLZJyVmOk7l3+mcSq5TtOXOHF1iB9y6CLo6WjmKQSe6NLbt1VrPqmsT4YM+SoXYB0inWibbs/YNlr3OcKVw8IV/+OWkUBMuZGifvZMmFzmtFloZDDcLgqU43fCJJdHUUrdceZU+80m2G5yjsqvnCA1K5L8O+bEPuIbs7lCL63vcYYvNtf/2GcfdE6m64ThUnsFDXIHVgp43+GATwe3N+fPqQwQJBD7Su9oFZiqttIPj9iSfqHxjDa0ql8sxXqhGy3ZSBeXaX1NII1vhPxfJ3QHhbLgXr7tPplNjATRw1p8AzTO/m0lfARtO6bdh2WdTlVSRCck9hymz231Mz8R4rOt/1Y25/XR9GYPEPRI/fZAtkOOILwFc97OyebISTg6RRKtXzLyzqzOtlmco2NUGdQCVTcsdgjql4yCnkNVO 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)(8936002)(86362001)(107886003)(5660300002)(6916009)(83380400001)(66476007)(66946007)(44832011)(66556008)(8676002)(316002)(186003)(26005)(2616005)(4326008)(38100700002)(2906002)(6666004)(6512007)(6506007)(508600001)(6486002)(36756003)(13296009);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?eS8ogZompriWfbBc1eMapcLSnZF3NkkieilF0fC3mI069jJGV/vCMe/iIl1t?= =?us-ascii?Q?UFrhSLgSoKlrOvva+TwMSD8WA1OpI2RkMLe/GwBMnXicR8Z6mCE8SheyqEOD?= =?us-ascii?Q?Nbrjujg7HPn7gpyWNRAT48FzpgCp3QoalAD466lGY4s2e3P5OW4283NtBsKD?= =?us-ascii?Q?rjApsFQ/KUsCmaMx8P4xFTD8VgB66p9v6jTghHGMyiOndXOm3ePbUYOOUi9N?= =?us-ascii?Q?X+65G2G2uC/FkhGiHuRqsPQMsQMHit6nTVEdRdCQFSNI+rhYTbcZQW7LMOjX?= =?us-ascii?Q?2js1pULeIc4bHLxigr5ioPGmGgZo4eSwdin7phbh/wkxvpQbZoTsfNCmYmdb?= =?us-ascii?Q?hzRlasKJHKVEVmqDUc1fi3X/3PwPslc3eSzPztErLonNNar+JA3MhAj0hSdY?= =?us-ascii?Q?5bcYiB4pPMHbuONzQU4I59iv3/y34/ibX+jf1Fs0qgiU70fSbjJPZ3dF0BrF?= =?us-ascii?Q?2G7D8j0/RAi3nVQSpEprFjIDVyB3eNW20fx9iA2vJukKFcTN4Fro1yp92QdU?= =?us-ascii?Q?3UEtQdWcv6cdpodMkMleFvQ9+XNX4dXo8yQAtUqrFcD5UbRs3P17GQEG0b2q?= =?us-ascii?Q?2agkzUuTNig3dEpMnr40S78xYOBtJFilljCnDk++kTh6IgbgVkQPUN0jEaMO?= =?us-ascii?Q?bcBd96JyIwFRdVNrJfyjSg+rwj/C87jFaKs7sKgyNByMV95FOcE7ez+4HHo2?= =?us-ascii?Q?/KqQkDlB8jM1UmD7kYnlbOouYKbsPUCPq3hh3cEEeWT4ix+xnAMh3MZVIQ+1?= =?us-ascii?Q?NZW7fXn1p1UMYndaLf+xJk8u23VoMdHg0iQ9JE7l2Y8OLlIOPzNo2RUOeVGR?= =?us-ascii?Q?PRbK5eQzpIUN3NDDck8wiW9YE96qfwDhUX/SWOh1rbZCjPUZozw7LYLpx+IK?= =?us-ascii?Q?DbYGaahioIAniZ0n7zwukPbXj/p58TCq8War0Qh5tT7dEXbCgm7pI5hjUPX0?= =?us-ascii?Q?tPzUztBlyplH5k4BScucjaaOgIMfshrVvKVDtfAbRWf+OfV/UFymjCE6l6Kj?= =?us-ascii?Q?xws2pYJSzKB+TJAo4oRQb7Bw6WNNtToKuZPO6qWTwp7EnGWX0Pte7KE1Lk4H?= =?us-ascii?Q?KRMZYs51lO1GO4GnUAo5D7B2mty+t0jVcevySXjfEVD77EpiqV53olXDrV/P?= =?us-ascii?Q?stVX7Pou1z4kg14nNAc/VekmQ7UNEsCy8WkisBsbIRFzKt2sOL0oynXcr8+I?= =?us-ascii?Q?FLTrh5IDitF1rzkvEZ7MCcZXxSuQQ4w62wdYXBNZYBIpaL4jQpnw48+EpXsG?= =?us-ascii?Q?Dh1xE3HTb3kjrmeV5rOMWYpoDWf878jqb7MKLa2jIpw+vgi0Sg89QzktFxun?= =?us-ascii?Q?1wUAKBU0cCLN1xTw6Fa9Gy/n9aToK1w6IatSTllcttDW0ae9tTYrcWP2GyrA?= =?us-ascii?Q?phn6g8ffolFl51tz6ZMSEnQcrkP345tjL7XWGqCih/FqjY4fVpxDXDGt7nyb?= =?us-ascii?Q?XqTtcUTY+jjXqIqZJfmKhV9HS1TKF0s1lsbz6nGsAfxcTtW/VoAo/CASi+0+?= =?us-ascii?Q?d0g6Mr+xrcP2UMulnkrrV9/ZOhNgkciRXfoiUNsoh5rUkzWDN3rjTzJvhS+E?= =?us-ascii?Q?bY0Rh+CqlPEAkippF0JxRz79m08Eqw45l/8FEItDQ8pyOMIwnQBhfk8UooXo?= =?us-ascii?Q?OV3DlGer6iJFHzAKe/Jv97jsmqhStBNutPoGvZ6KwGeTfmJvZeU3In7w1fh0?= =?us-ascii?Q?E/MLk5T7ZA3hynat33tzM+GNnk3oQ0EcD2aIVqekWw25+I2SpGnjvZjd9q5l?= =?us-ascii?Q?Q66wjj/0CGkHhiXLf2u8fvwO3xKp6V0=3D?= X-OriginatorOrg: suse.com X-MS-Exchange-CrossTenant-Network-Message-Id: 004a3856-a599-4200-e02a-08da27f14031 X-MS-Exchange-CrossTenant-AuthSource: HE1PR0402MB3497.eurprd04.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 27 Apr 2022 01:57:14.6770 (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: +7JJjG1xY4fATRu1bj+xKIR7ETHM41dkWUXU5JsFili4hCXbNbM7xEOSNuATNGakPf4YLH1mglXhqL29XwDKxw== X-MS-Exchange-Transport-CrossTenantHeadersStamped: PA4PR04MB7661 Content-Type: text/plain; charset="utf-8" This patch defines a new wrapper mptcp_sched_get_subflow(), invoke get_subflow() of msk->sched in it. Use the wrapper instead of using mptcp_subflow_get_send() directly. Signed-off-by: Geliang Tang --- net/mptcp/protocol.c | 9 ++++----- net/mptcp/protocol.h | 16 ++++++++++++++++ 2 files changed, 20 insertions(+), 5 deletions(-) diff --git a/net/mptcp/protocol.c b/net/mptcp/protocol.c index 7590e2d29f39..c6e963848b18 100644 --- a/net/mptcp/protocol.c +++ b/net/mptcp/protocol.c @@ -1515,7 +1515,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; } @@ -1575,7 +1574,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 @@ -1644,7 +1643,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) { @@ -2489,7 +2488,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)) { @@ -3154,7 +3153,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 22f3f41e1e32..91512fc25128 100644 --- a/net/mptcp/protocol.h +++ b/net/mptcp/protocol.h @@ -633,6 +633,22 @@ int mptcp_init_sched(struct mptcp_sock *msk, struct mptcp_sched_ops *sched); void mptcp_release_sched(struct mptcp_sock *msk); =20 +static inline struct sock *mptcp_sched_get_subflow(struct mptcp_sock *msk,= bool reinject) +{ + struct mptcp_sched_data data =3D { + .sock =3D msk->first, + .call_again =3D 0, + }; + + msk->sched ? INDIRECT_CALL_INET_1(msk->sched->get_subflow, + mptcp_get_subflow_default, + msk, reinject, &data) : + mptcp_get_subflow_default(msk, reinject, &data); + + msk->last_snd =3D data.sock; + return data.sock; +} + static inline bool __mptcp_subflow_active(struct mptcp_subflow_context *su= bflow) { struct sock *ssk =3D mptcp_subflow_tcp_sock(subflow); --=20 2.34.1 From nobody Thu Sep 18 06:42:53 2025 Delivered-To: wpasupplicant.patchew@gmail.com Received: by 2002:a05:6a06:869:b0:4b8:7781:bd2f with SMTP id d41csp785212pis; Tue, 26 Apr 2022 18:57:29 -0700 (PDT) X-Google-Smtp-Source: ABdhPJzX0vAAVydfvreYxfJfLlNar2HcJTp5LSkUkmze6/lBw7oxaC3DLHiIk20vppYaN1KALttg X-Received: by 2002:a63:78c3:0:b0:398:2d6d:c275 with SMTP id t186-20020a6378c3000000b003982d6dc275mr22114170pgc.565.1651024649154; Tue, 26 Apr 2022 18:57:29 -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 y15-20020a056a00190f00b0050d26055211si36263pfi.154.2022.04.26.18.57.29 for (version=TLS1_2 cipher=ECDHE-ECDSA-AES128-GCM-SHA256 bits=128/128); Tue, 26 Apr 2022 18:57:29 -0700 (PDT) Received-SPF: pass (google.com: domain of mptcp+bounces-4918-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=Z4BlGAg+; arc=fail (body hash mismatch); spf=pass (google.com: domain of mptcp+bounces-4918-wpasupplicant.patchew=gmail.com@lists.linux.dev designates 2604:1380:45e3:2400::1 as permitted sender) smtp.mailfrom="mptcp+bounces-4918-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 4DEDD280C30 for ; Wed, 27 Apr 2022 01:57:28 +0000 (UTC) Received: from localhost.localdomain (localhost.localdomain [127.0.0.1]) by smtp.subspace.kernel.org (Postfix) with ESMTP id 56D5D64C; Wed, 27 Apr 2022 01:57:27 +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 A2CBD621 for ; Wed, 27 Apr 2022 01:57:25 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=suse.com; s=mimecast20200619; t=1651024644; 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=jz36xWGYzdHC0mHWxDhbp25wjWlOKiN+eq12bx2R+t8=; b=Z4BlGAg+vpPznh5OYbcOGBg7Flx9gngkCjBmADzkA+Lt26xbqGf2mQEqHDvrvoBY2JCnrq uNrALPTUuvNql/KvIwVi60fpMvGW3/b335Sw/mGGLh5R1KXT9jSOkB+8UFsDp+5KnPV84I gYfTt8HlEVjuuB4z1EVXprsolok6HZ4= Received: from EUR05-VI1-obe.outbound.protection.outlook.com (mail-vi1eur05lp2168.outbound.protection.outlook.com [104.47.17.168]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id de-mta-11-FAeqtNPWP-O2ZwdzovuKJw-1; Wed, 27 Apr 2022 03:57:22 +0200 X-MC-Unique: FAeqtNPWP-O2ZwdzovuKJw-1 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=Wy/d3Z5AUlDfzATQcVss9xZ6WhdNP2r8LgYWoT93UfgMSGorAZbvuW6IP3Brz/+0EwWLtSqIg6qfex8GQgzPxFNCWw9tXJ5JivLSqQmsOA32ioEyyk4oirBjA6A9KZLk+NJQlqPb4ZcGCpZeTZuKBS+1FCqsljzPY8oF4yE1AFu9C85kY8EwNKDTB6wluaNHuoZPJAQXpuQKLikAKdNLAltwVMmgrirIVBSEEk9XtyLwpYcOrQzUqSSTdBlTyMWtCvUxNf5LDSY4CVx7R7Ny0BkmymW/OdtU530wAJNHB5JJ4dL9Bf4bsC51hZyh6DDUp+1T8gdpY5AEFB00ZYq3ow== 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=jkIfIGYQA8yBy9tJWrKB5zLp5URVrhcds/5bYYWg5UU=; b=eVCfYoeSyFKeYNoGAgeyU9w4WHlFo/f8lNIaND63p8HCawdlgTzStlbnh7W4mkSwf0N+tJN3F8qE6Gw3CSg3sctbsjRR0DFq2BNiSIKX0xDYK7nipZX4DckT/AM5TqoIxkZE7r6jJ/P6C3Qse5sgDZDocjAFiETRsJqH8ihviMBS2u2T3CLrnra6vhT9HIpvpGf1IbAkB8zdtkMnTOvyKvExwfx+nvkSexdwBi4dxsNPB8pn7Two01ZF0MO4PGo0/GUBBDAovvmS0SAwhz7OC5oXcSSdOThtIIlbTgvEKJhZI/pVdKkIfy7yvvjITF5hAI9gHWEyqni9g0bsJiGxaQ== 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 PA4PR04MB7661.eurprd04.prod.outlook.com (2603:10a6:102:e3::8) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5186.21; Wed, 27 Apr 2022 01:57:21 +0000 Received: from HE1PR0402MB3497.eurprd04.prod.outlook.com ([fe80::9974:fd5e:e3c0:14dc]) by HE1PR0402MB3497.eurprd04.prod.outlook.com ([fe80::9974:fd5e:e3c0:14dc%3]) with mapi id 15.20.5186.021; Wed, 27 Apr 2022 01:57:21 +0000 From: Geliang Tang To: mptcp@lists.linux.dev CC: Geliang Tang Subject: [PATCH mptcp-next v16 6/8] mptcp: add bpf_mptcp_sched_ops Date: Wed, 27 Apr 2022 09:56:53 +0800 Message-ID: <8ac278434203662add804d00e007c2cb2b6f52e4.1651024344.git.geliang.tang@suse.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: References: Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: HK2PR06CA0006.apcprd06.prod.outlook.com (2603:1096:202:2e::18) To HE1PR0402MB3497.eurprd04.prod.outlook.com (2603:10a6:7:83::14) Precedence: bulk X-Mailing-List: mptcp@lists.linux.dev List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: 43d534b5-777b-410b-fa20-08da27f14470 X-MS-TrafficTypeDiagnostic: PA4PR04MB7661: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: qwAaFJpgYg7DER0GZ7ebv3YA+o2C4vroInXNopqA3qWzJEO6L7irCeX+vVVQl7GZGd5h9yH6O2mVL8Ji+aPKfFKrOgex+/BriN78McalbCcVV73BU5lLBT4u13VTPeMlVy1SQZqL2Pf1tuEuBCR7hqUkZ5X8pdtsVnDw4vNvnb8O/sV5w1J6be/B3Ofc6snQzRTLNjLGI1INIQ+IFfOLME/Vt3ANG2H8A9PvE5vTgrTMe5N3/WgGC71hUgaNG1PeM7ExjqjrOi4t1ZCVPsdZEQ/ZqVjwaXDqXUkw/93c1J9K7jcuxGvaS7ldXuJezqmNZq6JkEPOddYPcTN3A1e90buNGNsYqQ1ZQ+l8xlwyL2coMVq92j7yzkeW6jmZkFU8fohU40i46GsUlhQWBUYbVPA1gY3r5l5kpU4vE2UdqnE9DzfsJQvHMa/Wg+rH6NRB8VpXs6yWoiJNBMd6MekmYJNQgLrEl8vxBdM+i/F0bLg2BxKKeITBwXIcvTRadj72EvZZXIVTtBVNU/KNMs0Dx67KJnUV1DOAYXRLSDdLWdjb0zKacDLjI8YW6rJnFrcnZjk0+hzAvkzWryhNKbEO8URmI9bcb4HHNMu8dPXB5IxOIMsQ/PXPh3HISfV7SssjyxAOdFRdE+IQ6GXZOeN4oW3/Lh8UsZ0wr1l2NEQ2tvtKbeHMPcI405Yk8dQTi9G1SByG3/kbzk2GLV/AUvJ+hg== 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)(8936002)(86362001)(107886003)(5660300002)(6916009)(83380400001)(66476007)(66946007)(44832011)(66556008)(8676002)(316002)(186003)(26005)(2616005)(4326008)(38100700002)(2906002)(6666004)(6512007)(6506007)(508600001)(6486002)(36756003)(13296009);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?GJ9bLCabmAegWSrJsUFL2V50tGlbRdAjS0LUWRctLo3Z2UYzrIThEMYrLgj3?= =?us-ascii?Q?AD6KTWm9dpnvpo+rGLTa6tclzwuZSFADAXd/cgSLoUFHnGV3QNw9BkMC4Xvt?= =?us-ascii?Q?wZf+UvJpF9RkxkpDAcuG+fr0tuJbaYE/lFYOk7tIP0kmav/VMpxlcUZI5BEZ?= =?us-ascii?Q?M59ejzo/pT5zV4hphgYknrjhm517eZBcvqkHgiH6RG8ipJlKlVzGunv2V6My?= =?us-ascii?Q?PeTiQuTWXKOdHEajD8bp0sFVutHcEE0IDuFKqB3S4JhFirhoxuacuYNq+FRS?= =?us-ascii?Q?EjDRp0lQDPztb4gi1YkIi92kZwoi1JEmg428uEoKhSyeSY/KJiju6rmyksgS?= =?us-ascii?Q?mxnqvqxXcIKfcoa/WEl2Ey/9g92Zsey7IguVz8+ao1H/squqeIUEr2Kf1ft/?= =?us-ascii?Q?qnKE5jpD6D+XFASwnh/T5aURGDygcL4ZL3t4YCklvbDvPVmtIbCzaAMJIzl8?= =?us-ascii?Q?bN1QhH8f8pXKgjcdw77em846/Oo1xsTqVkxGRxvWpp50MScvn9Ei5MAr3wSL?= =?us-ascii?Q?npFpqkool83FAzMYFQ0WlCl4t0VRYj1lVlmmY20CXWn1tMMU0bypP4XgJqOD?= =?us-ascii?Q?S6u107iq+HRyg7crljBt2dck1cqVibKMLQ/4W5mMzDSaFGTBtYIPT8YtnBhe?= =?us-ascii?Q?SeLLDN8fiVgJNhjRu0BM/RiYQ9ymX34/EzvmjpMl/Gl9hxRuJk3n9OU8fCmX?= =?us-ascii?Q?/C1PIqZ1vXBBNmMB93g/LBr3wuunk4udYcIUyIkeTXJE8Ww4XOB3dcXknoR3?= =?us-ascii?Q?fOLkIuJQ13LNuxqSYL9mK9c4Zsn8t/VbTJ1nQqwwA5sU4xjWDUpEydKeVZxY?= =?us-ascii?Q?vBYUrZw+U6KcgVmtW8VbBEVb7yExRcqj5qFokJWEyPAUKgJsOqoLJv/Y8wdp?= =?us-ascii?Q?C6juaHj9TpHts0HzYqYvtMTqBDs2l1ZlfofQV/wJAkfs13GpT3lm1CF1t6aq?= =?us-ascii?Q?K0z2kVZ5zlPwA1RXv9ZniBwY0gSKlORvaGJ6VXhhuK2L80Q8XI42GXBvpL6n?= =?us-ascii?Q?cs/q4euwixurfZbEheL5TFJ+mSe370vPEfP00bb2qgC4UhagZRZtzMhBSX6v?= =?us-ascii?Q?U0qDX0zkSkDmcGwp5DCJQz9e9AevNsinVjr1Qnsu22L2PRAdioshJUgsW6g7?= =?us-ascii?Q?CHKmJM4cyPiJZVkhNWLMQf477P+YgDBmsBTK3bsyS1G9e6CgYLwcgy/joyqJ?= =?us-ascii?Q?rbKJeQQ2D5+B6wJJtbrLYF5UX/uu+jJ7RTpP/czwxbbVradcyDb3ThV2UFIY?= =?us-ascii?Q?6Dg/3vgluVbPFIXhUp4gmwBFgyg7OmIysq5EZc82w1m2vqM1DJSWJyHIe9xv?= =?us-ascii?Q?/T7Gmt6M+fEBQutKZTSdKc5GMj0MUhfjwXnX0LSSTgUsER9byAtpRgQ+qX3Q?= =?us-ascii?Q?bfpd6+FqQP+2y3OJF2+n8iXmm+zbT1cp+jibOREJITeTdIWknmNxAEOZ+GCY?= =?us-ascii?Q?JwtLA/Mx5lXadbRTOiAAwiBGitOxAGNVMdSkpmIhuvUmrTjrnlCiw2M3GdGb?= =?us-ascii?Q?cHxj5ljvE5M+edEq7DYjsiv474SKQOx+5zfoGeh4kNemQ02ywgRPjuD5cPPx?= =?us-ascii?Q?tVovftZUKsIxTCVlOab2qLF85Xq4BBuVjfjV1cRxSR1FpRbIKLLttTOnrN8t?= =?us-ascii?Q?+milhIjKHCI89aH6GcNFhiz85wegyn/5wkCIfcNUCvHYYBSdJLDJsbDVZxuM?= =?us-ascii?Q?8rIIShusiunaXNEv3cG/es8iCNJqBCqHuGg6Kj6A3jq1DSo0t9wcg6z4UMAG?= =?us-ascii?Q?NqZ+zKCBfTmC0FfAGWy6OwsMpF7XSvE=3D?= X-OriginatorOrg: suse.com X-MS-Exchange-CrossTenant-Network-Message-Id: 43d534b5-777b-410b-fa20-08da27f14470 X-MS-Exchange-CrossTenant-AuthSource: HE1PR0402MB3497.eurprd04.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 27 Apr 2022 01:57:21.8171 (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: +FUmCjkDlkgijEz50Yi4Nh+bj+IAAw4S6CdRVN2kY+3+aqiEhSu7mLXtxcSxi6kXJgpeAgTRPW/6ZAFlrW2dLg== X-MS-Exchange-Transport-CrossTenantHeadersStamped: PA4PR04MB7661 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 Reported-by: kernel test robot --- kernel/bpf/bpf_struct_ops_types.h | 4 + net/mptcp/bpf.c | 151 ++++++++++++++++++++++++++++++ 2 files changed, 155 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..debd23497784 100644 --- a/net/mptcp/bpf.c +++ b/net/mptcp/bpf.c @@ -10,8 +10,159 @@ #define pr_fmt(fmt) "MPTCP: " fmt =20 #include +#include +#include +#include #include "protocol.h" =20 +#ifdef CONFIG_BPF_JIT +extern struct bpf_struct_ops bpf_mptcp_sched_ops; +extern struct btf *btf_vmlinux; +static const struct btf_type *mptcp_sched_type __read_mostly; +static u32 mptcp_sched_id; + +static u32 optional_ops[] =3D { + offsetof(struct mptcp_sched_ops, init), + offsetof(struct mptcp_sched_ops, release), + offsetof(struct mptcp_sched_ops, get_subflow), +}; + +static const struct bpf_func_proto * +bpf_mptcp_sched_get_func_proto(enum bpf_func_id func_id, + const struct bpf_prog *prog) +{ + return bpf_base_func_proto(func_id); +} + +static int bpf_mptcp_sched_btf_struct_access(struct bpf_verifier_log *log, + const struct btf *btf, + const struct btf_type *t, int off, + int size, enum bpf_access_type atype, + u32 *next_btf_id, + enum bpf_type_flag *flag) +{ + size_t end; + + if (atype =3D=3D BPF_READ) + return btf_struct_access(log, btf, t, off, size, atype, + next_btf_id, flag); + + if (t !=3D mptcp_sched_type) { + bpf_log(log, "only access to mptcp_sched_data is supported\n"); + return -EACCES; + } + + switch (off) { + case offsetof(struct mptcp_sched_data, sock): + end =3D offsetofend(struct mptcp_sched_data, sock); + break; + case offsetof(struct mptcp_sched_data, call_again): + end =3D offsetofend(struct mptcp_sched_data, call_again); + break; + default: + bpf_log(log, "no write support to mptcp_sched_data at off %d\n", off); + return -EACCES; + } + + if (off + size > end) { + bpf_log(log, "access beyond mptcp_sched_data at off %u size %u ended at = %zu", + off, size, end); + return -EACCES; + } + + return NOT_INIT; +} + +static const struct bpf_verifier_ops bpf_mptcp_sched_verifier_ops =3D { + .get_func_proto =3D bpf_mptcp_sched_get_func_proto, + .is_valid_access =3D bpf_tracing_btf_ctx_access, + .btf_struct_access =3D bpf_mptcp_sched_btf_struct_access, +}; + +static int bpf_mptcp_sched_reg(void *kdata) +{ + return mptcp_register_scheduler(kdata); +} + +static void bpf_mptcp_sched_unreg(void *kdata) +{ + mptcp_unregister_scheduler(kdata); +} + +static int bpf_mptcp_sched_check_member(const struct btf_type *t, + const struct btf_member *member) +{ + return 0; +} + +static bool is_optional(u32 member_offset) +{ + unsigned int i; + + for (i =3D 0; i < ARRAY_SIZE(optional_ops); i++) { + if (member_offset =3D=3D optional_ops[i]) + return true; + } + + return false; +} + +static int bpf_mptcp_sched_init_member(const struct btf_type *t, + const struct btf_member *member, + void *kdata, const void *udata) +{ + const struct mptcp_sched_ops *usched; + struct mptcp_sched_ops *sched; + int prog_fd; + u32 moff; + + usched =3D (const struct mptcp_sched_ops *)udata; + sched =3D (struct mptcp_sched_ops *)kdata; + + moff =3D __btf_member_bit_offset(t, member) / 8; + switch (moff) { + case offsetof(struct mptcp_sched_ops, name): + if (bpf_obj_name_cpy(sched->name, usched->name, + sizeof(sched->name)) <=3D 0) + return -EINVAL; + if (mptcp_sched_find(usched->name)) + return -EEXIST; + return 1; + } + + if (!btf_type_resolve_func_ptr(btf_vmlinux, member->type, NULL)) + return 0; + + /* Ensure bpf_prog is provided for compulsory func ptr */ + prog_fd =3D (int)(*(unsigned long *)(udata + moff)); + if (!prog_fd && !is_optional(moff)) + return -EINVAL; + + return 0; +} + +static int bpf_mptcp_sched_init(struct btf *btf) +{ + mptcp_sched_id =3D btf_find_by_name_kind(btf, "mptcp_sched_data", + BTF_KIND_STRUCT); + if (mptcp_sched_id < 0) + return -EINVAL; + mptcp_sched_type =3D btf_type_by_id(btf, mptcp_sched_id); + + return 0; +} + +struct bpf_struct_ops bpf_mptcp_sched_ops =3D { + .verifier_ops =3D &bpf_mptcp_sched_verifier_ops, + .reg =3D bpf_mptcp_sched_reg, + .unreg =3D bpf_mptcp_sched_unreg, + .check_member =3D bpf_mptcp_sched_check_member, + .init_member =3D bpf_mptcp_sched_init_member, + .init =3D bpf_mptcp_sched_init, + .name =3D "mptcp_sched_ops", +}; +#endif /* CONFIG_BPF_JIT */ + struct mptcp_sock *bpf_mptcp_sock_from_subflow(struct sock *sk) { if (sk && sk_fullsock(sk) && sk->sk_protocol =3D=3D IPPROTO_TCP && sk_is_= mptcp(sk)) --=20 2.34.1 From nobody Thu Sep 18 06:42:53 2025 Delivered-To: wpasupplicant.patchew@gmail.com Received: by 2002:a05:6a06:869:b0:4b8:7781:bd2f with SMTP id d41csp785248pis; Tue, 26 Apr 2022 18:57:38 -0700 (PDT) X-Google-Smtp-Source: ABdhPJzD4MRU8HPop49GYcDnN7+ngXCrUp8rCiJt5PEyio5qLjmlSTNbqsjV9gKHibqRrSpG4Uwu X-Received: by 2002:a05:6870:f713:b0:d2:8adb:aaeb with SMTP id ej19-20020a056870f71300b000d28adbaaebmr10600549oab.111.1651024657983; Tue, 26 Apr 2022 18:57:37 -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 w14-20020a056830110e00b006016670e67esi68967otq.335.2022.04.26.18.57.37 for (version=TLS1_2 cipher=ECDHE-ECDSA-AES128-GCM-SHA256 bits=128/128); Tue, 26 Apr 2022 18:57:37 -0700 (PDT) Received-SPF: pass (google.com: domain of mptcp+bounces-4919-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=FoX97sGr; arc=fail (body hash mismatch); spf=pass (google.com: domain of mptcp+bounces-4919-wpasupplicant.patchew=gmail.com@lists.linux.dev designates 2604:1380:4040:4f00::1 as permitted sender) smtp.mailfrom="mptcp+bounces-4919-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 AAC682E0A04 for ; Wed, 27 Apr 2022 01:57:37 +0000 (UTC) Received: from localhost.localdomain (localhost.localdomain [127.0.0.1]) by smtp.subspace.kernel.org (Postfix) with ESMTP id 701CC64C; Wed, 27 Apr 2022 01:57:36 +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 CC951621 for ; Wed, 27 Apr 2022 01:57:34 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=suse.com; s=mimecast20200619; t=1651024653; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=/RDlydWiAwHZ3O0hxyi4E5TKaVuJH+Dk8t/1KIGdEMI=; b=FoX97sGr8v0PS5q9S/XEuK3VNViyMyt4S+IEOR4UeabcoQwQN8XzfOl3l3sUG6wwc/76U/ 3QBLwWPc71sNKC3eHaNclEhznOvS7q8eIF2rRyT8RtotN5xUssTQSyhNpL5mDQpL5WbwyV YH+/MLSocpEQ674zABnerFYdhLXAIck= 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-2-u0ZMc8QLOV6_LvE_rbNOIA-1; Wed, 27 Apr 2022 03:57:32 +0200 X-MC-Unique: u0ZMc8QLOV6_LvE_rbNOIA-1 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=MkzLDH5VyJRfVZOjs3iMPFQcTImcKOZN+OPp6R/4eC/Vjlln9VdxCwvmLRVTa5adMUCRaFNvisAJWTUNzhaOnyRUkY6g1g/Lc2SRpLn/hF7ENLmQmJkkhWG99rpjrJTLwaeKEKLWqE9QqkREYYb/RAh/Lpxm02lnOeYLf96l1I/jJ4+zWB53PLRkkbLArYzWm9SdCOmaRY+JsG0P17KLY0DP+3+zLvCQeWjEQhKc4StAG7oKkl247QcAnR7mYBy5wrDvL0WRlsMjLEbveDugcRqiulMoKfUhagTH1ZgTE1XCKcEUBxaYIqbDKLfJNGIBEV4M+qXYucQxIe34SUuyzA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=z2K1eTcXjHmFeX1syZLtPL8603gz/hgxgKtqjwkUSFk=; b=aO+v7bVUhvdgg6p9SONy7ScfG6ooMpIXnEnF0shCaPgLD0x/qiyqpnVHUQVYw9O4HjnnkvuzRsQcAVifd1/zb2tU1Iq7PoNFCOwsc/ECMaERhZiHBgCbc9nae0ZnXaAQiQrJ2njh6QC3b+oXZTQYCsu1nsHOG9jOt+i5nlOOAwKIWSKGYd1Sf5YUnFX9bC7CSWlr0wm53QbsTs6dqZb891l4Rj9fuN94oCeia57gO7FytA3Uo8OcgEKnFUqKiBfxE5FDdUSBt/3cUpNvkgAemMz880YVpMRjzGreqrxkMOOR7wgcUWdvqPMUjftbIYPuw7Dv8+3jg/cQqghkeltAEg== 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 AM6PR04MB4168.eurprd04.prod.outlook.com (2603:10a6:209:43::11) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5206.13; Wed, 27 Apr 2022 01:57:29 +0000 Received: from HE1PR0402MB3497.eurprd04.prod.outlook.com ([fe80::9974:fd5e:e3c0:14dc]) by HE1PR0402MB3497.eurprd04.prod.outlook.com ([fe80::9974:fd5e:e3c0:14dc%3]) with mapi id 15.20.5186.021; Wed, 27 Apr 2022 01:57:29 +0000 From: Geliang Tang To: mptcp@lists.linux.dev CC: Geliang Tang Subject: [PATCH mptcp-next v16 7/8] selftests: bpf: add bpf_first scheduler Date: Wed, 27 Apr 2022 09:56:54 +0800 Message-ID: X-Mailer: git-send-email 2.34.1 In-Reply-To: References: Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: HK2P15301CA0001.APCP153.PROD.OUTLOOK.COM (2603:1096:202:1::11) 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: f9dcfd9c-1407-4f78-4b5c-08da27f148e9 X-MS-TrafficTypeDiagnostic: AM6PR04MB4168: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: wVJWueLl+uOmzLH1nbNzSwBfpnVeNUm0Jn9RCHYVFs85VVBMknGTGptZMRb22Z8iAkq67rg80Fm9LlFswejlMsQ8aVNi+pxjHSmVqgVBSu4sSZAzNMDFBv8QxumtNm5Lfp58jcAgpD+4toeYgyUON/LHbcDKZP458O2cXeaui4dxP+VLW1fi6ngS3tv/vU4vJZIEIQ83A4BFHdmZQGOiKE8NfC8MOt2/4Zxp3LdMSjO/M0AH/z1KI6bMpy1iQz50BzBJSI/0V3lMzqBAfgkaMAzBpHEYA2yHUTUp0rFvCORwdmVtDa60VKdUJh7zbp5GnT/gUH5bL6j/WG1Masy9jiLYZj482MOHkbZ4izf2dyjn8mOwkVZgEY8jBgWDi8Z21JE1iC4i6vyev7KrtDFSHRNpbGMjnpgsy5oUh29b/nXteNqVsez5yZVlLbXWgCFozdfNXlkhJCmqjP9k5Ie8M5mTJuw1pAP+iGbDsUdTfclSFYeis23x2+b7uVGs02Ya4mvnZHI23arbeHwgUX/7pR/vwRIrkDig+H2zE9+XDl/u06EAXxsIUTTGCnCeag3pWGkkCSgzzhssfjJ8BruiRrAdclQAzOMwdVkmD3F2wsnyPh+i1uzvkgpGnR4B/jBj3Z6atM09DZVXpkAZSJWYBFcDLjcJDm7miFDutjvlQ7uxl0XJuLfo2IxaaVowQZtRbw2iEkeaIXTQ4VywAltykg== X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:HE1PR0402MB3497.eurprd04.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230001)(366004)(316002)(6916009)(38100700002)(66946007)(66556008)(66476007)(8676002)(4326008)(2906002)(26005)(6506007)(6666004)(6512007)(5660300002)(508600001)(107886003)(6486002)(186003)(8936002)(36756003)(86362001)(2616005)(44832011)(13296009);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?KJOQlQttO/LpAQJTMXiridytH8aeGQ0qbLfgIDzTYO7AlMwBQbUwX8h4diqj?= =?us-ascii?Q?m6gTMmlHVi992tumUntg7TvJf2+i5tOz055xNO4BQdhn4mHjeIva1eTJ/h/L?= =?us-ascii?Q?Q4ysgOxQFI+t3B8M+HG8gzMW0hwY/gjlEyLPuuPxA6dDmR68DDlxmALl2rWZ?= =?us-ascii?Q?Sj8SQURNN+62hV0iWoKod+8G7rHiPDzXuIQAcH9MdWS9N0X+GenY/zZkCvHK?= =?us-ascii?Q?xyiF2wZRHT9G3u3v8Ugg2e7ipX1s9U6KkipkkHZVGne+ssuewXtB+syMzrGW?= =?us-ascii?Q?FV3HkRJkmiNRn9GkiC+HRH5RewrPw7a09fwKmBS9WP7T6ura6V5O2cSwcwPc?= =?us-ascii?Q?9psbO84ieKG8rkwv4FF0ToNCv4tqlPtktX53qgg1h7WAKvf/Z/qvu8C3YWtY?= =?us-ascii?Q?Kgq9bDKx7XMAB7wZ0kjNzIsyL+Ekzy6p+t/JltOCezq1XR0OverncUfEW2bQ?= =?us-ascii?Q?hX1t8hS/csoJdsrOfFz7Ra8stKFKeFBLLPO+5YlloOAfSjiT87caBgKYTv6s?= =?us-ascii?Q?Ipm49clRE/sUOLTxeCxzKIGrcQVXwOJJMdWYJ9I1bvffN4FT5ypIvaMhNvjE?= =?us-ascii?Q?i78fe56ArIGYVPAWxO1+Teg5woAfQKuw0401blz8BVbvyrm/JpFfYZ2O1qJX?= =?us-ascii?Q?ciEwgrcGL+o0Gkg78BEZ2c7675lpDMS6SplTXxxEYtUvIQkSAdOtknpfwH4g?= =?us-ascii?Q?ScyP4IVLpfTlDd/8ZSBzArSI8XkEBSealEfJewGxY/Iu2IT4bF/bhGlG+sFz?= =?us-ascii?Q?YM9jmy/UBvbq7xTf+6UxNtZqPxPk++4IMOUng+UD1yVFTYJZeV3B7ql8QLPb?= =?us-ascii?Q?PtiKVoKt0iLjZa75oC4guomtwjPYPXkefpLluOyunrS4Zo5pGYb1zuAoGxo1?= =?us-ascii?Q?RMp+bTGdsbliqYHz3gJc92AhZHc/OR3uEB/NlvoxvZnn5yhwkevnnbZs67a4?= =?us-ascii?Q?hFDO4udWMu+taO7N4oJIcbgT+qsnRw3+p8a3R/xL8fAldKvONll0SKlTh9wr?= =?us-ascii?Q?utmGkbSn09XaJW3x/WbPIU8tJ3eB/f+sAbX699mwy4H0tgxDJzqwJceT/U9i?= =?us-ascii?Q?XPBwT7QnVmU/EoJSGYM4x3HZqW44YwuFnFHMjnZxbfP+k3GxsnnhDFCXzdZh?= =?us-ascii?Q?ygrGSarwjLLLDWZZbrdvTWJD3CDEx1kxtk0n8Dur/tQUdb9hrDS8nH3kjFBC?= =?us-ascii?Q?vkw0MkRFSt1LV65c8+QlwOa5b4+YLyg/8uYVcXgeM8B0E0RXUXyq0/T+4Rqu?= =?us-ascii?Q?J+IAwAw9UqD+ess6el62plnRDdmzEFj8uSGoy7SkPR+LJu5Bsx+TOwxvzQ0m?= =?us-ascii?Q?qkh6MND+Hl1IDpLbZ5ubb2Mm+aw4CoyTBHAiPxwaZLxYDOoCY4QdheLuaUVi?= =?us-ascii?Q?/h7Mok78nDn6iIWSCxEDxgMcChmyvBomvy2xrc7jA+vXU+ZBKvu12hGS/MIn?= =?us-ascii?Q?YsNr0KHseYsswMmuBGzjH1Jg0KDgPwDvRHjRTvV9SdYdH1zX6foTMcYX7Bnu?= =?us-ascii?Q?Mm+DPZrqKaz0N1rVR6WafSZ8DpHxgNkvF6Bp8QUoPI5+wTugla0keV0h6Icr?= =?us-ascii?Q?EJUbb9YvQR5BMB7fnTsBuxh9ebtaTHjPgU5M2cBbRzksNCWuyL6IJIUKcstW?= =?us-ascii?Q?NaUZrdnTOz0dNtJryhwZ6JoT7u/EqglnvS8IE6AO3teYs0Uh0KceSySU5UJQ?= =?us-ascii?Q?jzf3Qp+jYVfxzxP9KsLiGUc3v0PpS85mujyG8AbTQZNsxVxUZmNdL74RhGFJ?= =?us-ascii?Q?pguTHIeVQrpKf5/JXvedGJrp6i3tl/M=3D?= X-OriginatorOrg: suse.com X-MS-Exchange-CrossTenant-Network-Message-Id: f9dcfd9c-1407-4f78-4b5c-08da27f148e9 X-MS-Exchange-CrossTenant-AuthSource: HE1PR0402MB3497.eurprd04.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 27 Apr 2022 01:57:29.5352 (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: mde5HXO8zRBRYoFV157ONEU0bHPIlazljU/bBIazeBihxeHbbu3ZM+PZh/aG1rVfixCRpSndrvXi7ChkheVxKw== X-MS-Exchange-Transport-CrossTenantHeadersStamped: AM6PR04MB4168 Content-Type: text/plain; charset="utf-8" This patch implements the simplest MPTCP scheduler, named bpf_first, which always picks the first subflow to send data. It's a sample of MPTCP BPF scheduler implementations. Signed-off-by: Geliang Tang --- .../selftests/bpf/progs/mptcp_bpf_first.c | 32 +++++++++++++++++++ 1 file changed, 32 insertions(+) create mode 100644 tools/testing/selftests/bpf/progs/mptcp_bpf_first.c diff --git a/tools/testing/selftests/bpf/progs/mptcp_bpf_first.c b/tools/te= sting/selftests/bpf/progs/mptcp_bpf_first.c new file mode 100644 index 000000000000..0ca9754c078d --- /dev/null +++ b/tools/testing/selftests/bpf/progs/mptcp_bpf_first.c @@ -0,0 +1,32 @@ +// SPDX-License-Identifier: GPL-2.0 +/* Copyright (c) 2022, SUSE. */ + +#include +#include "bpf_mptcp_helpers.h" + +char _license[] SEC("license") =3D "GPL"; + +SEC("struct_ops/mptcp_sched_first_init") +void BPF_PROG(mptcp_sched_first_init, struct mptcp_sock *msk) +{ +} + +SEC("struct_ops/mptcp_sched_first_release") +void BPF_PROG(mptcp_sched_first_release, struct mptcp_sock *msk) +{ +} + +void BPF_STRUCT_OPS(bpf_first_get_subflow, struct mptcp_sock *msk, + bool reinject, struct mptcp_sched_data *data) +{ + data->sock =3D msk->first; + data->call_again =3D 0; +} + +SEC(".struct_ops") +struct mptcp_sched_ops first =3D { + .init =3D (void *)mptcp_sched_first_init, + .release =3D (void *)mptcp_sched_first_release, + .get_subflow =3D (void *)bpf_first_get_subflow, + .name =3D "bpf_first", +}; --=20 2.34.1 From nobody Thu Sep 18 06:42:53 2025 Delivered-To: wpasupplicant.patchew@gmail.com Received: by 2002:a05:6a06:869:b0:4b8:7781:bd2f with SMTP id d41csp785272pis; Tue, 26 Apr 2022 18:57:43 -0700 (PDT) X-Google-Smtp-Source: ABdhPJxx1zEIOOGQRyubPM3DMb+oUKwC4w7JD3s27Z9l5VZPYTUcCtlupLdtSB6cQkYPcBOwv20U X-Received: by 2002:a63:5a01:0:b0:3a8:9ab7:3382 with SMTP id o1-20020a635a01000000b003a89ab73382mr21988997pgb.272.1651024663230; Tue, 26 Apr 2022 18:57:43 -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 r19-20020a63ce53000000b003aa8b88b231si58093pgi.805.2022.04.26.18.57.43 for (version=TLS1_2 cipher=ECDHE-ECDSA-AES128-GCM-SHA256 bits=128/128); Tue, 26 Apr 2022 18:57:43 -0700 (PDT) Received-SPF: pass (google.com: domain of mptcp+bounces-4920-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=OSqPXowX; arc=fail (body hash mismatch); spf=pass (google.com: domain of mptcp+bounces-4920-wpasupplicant.patchew=gmail.com@lists.linux.dev designates 2604:1380:45e3:2400::1 as permitted sender) smtp.mailfrom="mptcp+bounces-4920-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 B1E13280C3E for ; Wed, 27 Apr 2022 01:57:42 +0000 (UTC) Received: from localhost.localdomain (localhost.localdomain [127.0.0.1]) by smtp.subspace.kernel.org (Postfix) with ESMTP id CF91564C; Wed, 27 Apr 2022 01:57:41 +0000 (UTC) X-Original-To: mptcp@lists.linux.dev Received: from de-smtp-delivery-102.mimecast.com (de-smtp-delivery-102.mimecast.com [194.104.111.102]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 4B8DE621 for ; Wed, 27 Apr 2022 01:57:40 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=suse.com; s=mimecast20200619; t=1651024658; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=WnSV5a1EwgO3RknI2V5ujKmVZVa0WBBQfbw9D8tOT7g=; b=OSqPXowXvwDIltoKY6sdrLrI+D7vm9XqVso9yKHupoVG57m1KATDAwLwLXcv4YvGX6WMPw M5zxBT6Gm0ls+R2wyCNQsPsKOwOIQx3lxRQBVxO4HFdtqnyay++sw8U49vYF97v/qW3Xrv lBfntujzel/NS1U0IZZ4c/driilxHJw= Received: from EUR01-VE1-obe.outbound.protection.outlook.com (mail-ve1eur01lp2054.outbound.protection.outlook.com [104.47.1.54]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id de-mta-6-gZp1u4TRPkyQQO5i7mrCiw-1; Wed, 27 Apr 2022 03:57:37 +0200 X-MC-Unique: gZp1u4TRPkyQQO5i7mrCiw-1 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=njtiC5EGqBSNxjC33VaAauO8oLU6VDUaUUGAThJTQhpZxaRiwTM8g3NSZt0nDptoUUr9yZec2T2uloVXGaU06QMBAsmcD4GTa7Bqtaf2Fo4RSOK+wGyHutCeJo/I3jsRafnD10lZrfVtWZ/mrJWGk0iHyl/M4i90sK4yhStpaHamqwMGN3XizBzcR6Pmh+dPVxOvF4rnsSn+ScKq98BHk1DPZUARM4ynMpa0te0vZuJC19MC6L9bYgE2+2SckhL/2yBuAe89rLmld8fg9DTl21L/MyeEoMxIb7LJPbkjt7ybvJbA9WuPDGPw3t/xOxWd31TZHbgjdW4msMI0aIwXpw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=XaWAbkqCo4kB2a2vFZa9GAp/RL8+LsScjAc1pLDDwLg=; b=iPJlZADhYlDu5qJDeYS4S4XSb3TL2jwlTb2Mo3an+0iVTtCu/DBEnWU3oO+b5bGUhe5+sGteXBfZNds/fFFjMIar/ELCHc+HhrYlf0usD9FGO/R1DhiUUIa2L8UTAmFf9+zB/rWdgXE+T0ju4bbgTCDXnqSNgwnVIHwqaGomyOudManLeARP3myCwJYhNRlVmGztdeqBoM/HGboFwl4TsyldArQeJsiccvP01ztTde4uPqeLGv4V7uuVPhVgVD4vY+J580w3EUM7uUBw4lDrySA6f67ALocWs3GocbRkDI4zFfT0CWec2LqAiLbhV0zHaY7mEwkjMHMvjzqQowOwvQ== 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 AM6PR04MB4168.eurprd04.prod.outlook.com (2603:10a6:209:43::11) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5206.13; Wed, 27 Apr 2022 01:57:36 +0000 Received: from HE1PR0402MB3497.eurprd04.prod.outlook.com ([fe80::9974:fd5e:e3c0:14dc]) by HE1PR0402MB3497.eurprd04.prod.outlook.com ([fe80::9974:fd5e:e3c0:14dc%3]) with mapi id 15.20.5186.021; Wed, 27 Apr 2022 01:57:36 +0000 From: Geliang Tang To: mptcp@lists.linux.dev CC: Geliang Tang Subject: [PATCH mptcp-next v16 8/8] selftests: bpf: add bpf_first test Date: Wed, 27 Apr 2022 09:56:55 +0800 Message-ID: <1cdd5e7c527dbddf865de4242bdede522a33102a.1651024344.git.geliang.tang@suse.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: References: Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: HK2P15301CA0010.APCP153.PROD.OUTLOOK.COM (2603:1096:202:1::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: 557a650e-bb10-427d-4eb4-08da27f14d53 X-MS-TrafficTypeDiagnostic: AM6PR04MB4168: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: X/uAdzBLzLvXP4DQSjesXpgA9+YrsnZ7raQAhePszbs/RYq5L0DNi+dsyvFnJpDJPFk0ewruPO/m5mCSCXSGSbwACi3knIhWcagED78UZyQD/rlXB4fJ01Op5+FeBDIU4/q/VFX8vQm1CuYYfovgEAIkzdLQ+96c5mmXcqijndSk+EOSt541o4xg3S0K+qlDfNBIsFCfff0fhHceGreKmLhGV21dJcAcnLpRjR0hf4Lzb4muVC45Mw0uSkY4ePmsCGFhu2Fnc5hyp7t+srkjl4rEjXhRGr53Fu+L32zfheW9Id3jnCB+2LFW6zWXnw0eOzn3PRm0QyjKNUptWgQ8BhQv9JMl5N+F0QhmCzFJfYHzNsnvOtq0TWbqF1lY5ZtvGKNRMDicjGCnGLh0zx+PWZZsn+2w7j4B4ZOOhACfGWZWoloIUCFf4DnZVYBvyOckZ1XLiOycbPlsg+PZQjqo3eQYg7wCvPk+K/a/AejkbB+x01fCcUoIHOonLyWaZM2vS58bj+tn+MoNH9jlBaD1cmXgeZl2yk7ggtNokuHRWW8rCpTyzngIng141L8ukMu6tX50PRN69JsklcwzKZWveV7NJmnLsg+oanv20h8QPciUEctzE28bbQ1oDCWKMyZj1tsUVLfLYWwQbXlYr7ydg7qoxwgwuHJVLh+/zzhDOUhfkB7aEllI917GgFk3aiUF X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:HE1PR0402MB3497.eurprd04.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230001)(366004)(316002)(6916009)(83380400001)(38100700002)(66946007)(66556008)(66476007)(8676002)(4326008)(2906002)(26005)(6506007)(6666004)(6512007)(5660300002)(508600001)(107886003)(6486002)(186003)(8936002)(36756003)(86362001)(2616005)(44832011)(13296009);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?mp0+3YTTtW07hMr+2OZA5sxmz/sbUs5TE2DMLIumzb1Bpa/dW45f3zLnUtUg?= =?us-ascii?Q?ZIddf7uFJvY6uitLMB/Mq4e4PznL/VVF6eCBADuxgBPBrSBrYL0mRacZYMhV?= =?us-ascii?Q?xaatXCDlAR3BRbmGga5sFbuqam0Pt9IXW7fnvAoiewZaACLTpwhUaW1ZNZoP?= =?us-ascii?Q?jPtmCPNr44uaS59aOZmyzHhkLf/35cBv2HpNG0otl8g/gis8z4Qgq5DoXFAh?= =?us-ascii?Q?f6iQBPNi684TfEgI8GFa/d+VVumgl6BfXEbxQsOr4rBBpuPwV3BKmjgX4lON?= =?us-ascii?Q?9NZ1ZMcjBqTesqP+Sn9m1WdsRnkjJSMUzFMpFgmuXL+/Hi3EoSuTuPrsxII5?= =?us-ascii?Q?da2Dy8XX+CJGYwm1QVPboje3QsvLw9dIKCIF6eH1ZH9bJvFZJrkjtm6DX158?= =?us-ascii?Q?iS3Hn9uy6DRzJgiLeC731RlYwxUq+kRn73OokMY0M7nGs8Lb81yoLD9cSJx8?= =?us-ascii?Q?7j/z9Az1sk56ned799vJNLG4iAdbZAMRF/ySuwgfBi+3+0QIyDufuP/1oSxC?= =?us-ascii?Q?gfCTfwjLUSk3SkAgabxdJ4WoXz+JQM/cRvkUyjIbClPnNPSIFvqp6t4Ao5Bb?= =?us-ascii?Q?iwajQJnrMWJnaWHyuuubfTXetwvAfShZdvKEZsLH5G0+PVZIfMDXp3tUwWTh?= =?us-ascii?Q?2KpviVHEw8CU7rqD6/LaQ994GoHd2C2hTajgKmBByENNQfSYzSiHdc3ApQwT?= =?us-ascii?Q?mP/SPovmtnjnnAzZnWPtss1GFWD8axb+EvN6NEUSQewmjM39EoWBTWNDfkbY?= =?us-ascii?Q?DUWiKA/kAMfZbfd3e8F/+78K9IifoT8dzgnOmApiwJWaOZgc071wOQxdFe9d?= =?us-ascii?Q?eCIezooBV7XXAft6Pippcl+hyCRUHjMuGo/B4mV17SugoaprhMJqQNUKDyR7?= =?us-ascii?Q?0Rih9ypu/Wikt/I814t96WwrROaf9St0EIRygCK4b/VW7xJ5kPfRs+mjerc5?= =?us-ascii?Q?8MBPzgnCaIaVGbncyZye4oL/rPoJ5NO0iloP4kpMGsf7cQOzfOw3awbAKHWa?= =?us-ascii?Q?1BrtczJcy1j2IaskFx/4UesmgR21JbVhLOF3kbMcCe3qgw1kmNygJiMYIB12?= =?us-ascii?Q?f4z73/nkJlURPHUu6LG0LqDY+oANVUdjQuG7qHsJrwwXTod+FwFBEgN+eL3J?= =?us-ascii?Q?GI3YVg0I2sAFDj6k5rGUxVpvqpoxKxXqIwZ5et3ogJ/N1b2udGZh4Rd+SQa4?= =?us-ascii?Q?KQQOL5Q4DnnvIrDUGO8DCnI0gqgeohH88pTDPs5zUWxW+wiC2cfO71AK5S80?= =?us-ascii?Q?W348IZEJA8E9odGQDMzh8x864TzcNZ2qx6dFJTVdktwW6h1NocWc9KsWBoHg?= =?us-ascii?Q?221huNvZ4f8pt3RKdpNxjeai9ZEDoyLQLaWbja6nQE3rvnFjk7sZMY0Htjly?= =?us-ascii?Q?qWgwDcYzQhB1pL6K0r2ZjtilOsIoF1qXYewou2mqzHr1pE+IDo2P1vZXSMel?= =?us-ascii?Q?8nun+ZVwgXqJskJ1k4wR9vFfIJhZqg9EDAg0LTflCuv/anbwGQtdD6e2wZfN?= =?us-ascii?Q?axiLXY38Zk4yNTyEKvCa8EtyrJKB04AMNNr9K99JrbEcoCvZkJm6d1zhQ5E2?= =?us-ascii?Q?H1Yvn8LAflKfi0UK/jL+wFEbyfat0bYrIpjUpaT1LEDyVc2ehcoBzqqbVoYb?= =?us-ascii?Q?LQ3ubPdvQ277PBJ8WFPLqvInE09OWyCH9RcCK1D+hIH0G6BvaGXm0G70l4Qr?= =?us-ascii?Q?+z+78vj6VVQkLSxGqyg2k9WNs0H1y78GSRp2PcQ/MCLOvRxZ4l0+a0h6qJaa?= =?us-ascii?Q?4S5lpV/G2O3eN6/mBnG7m3FJUzcqt2U=3D?= X-OriginatorOrg: suse.com X-MS-Exchange-CrossTenant-Network-Message-Id: 557a650e-bb10-427d-4eb4-08da27f14d53 X-MS-Exchange-CrossTenant-AuthSource: HE1PR0402MB3497.eurprd04.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 27 Apr 2022 01:57:36.7221 (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: bbWrNGssSI4PTmBMgyxep53D1mCQmeUmS9Mz17yPsw0fAGfym+jEVQ2T3+lOO+eCjYD4JX84aQHuzyETHJqXeQ== X-MS-Exchange-Transport-CrossTenantHeadersStamped: AM6PR04MB4168 Content-Type: text/plain; charset="utf-8" This patch expends the MPTCP test base to support MPTCP packet scheduler tests. Add the bpf_first scheduler test in it. Use sysctl to set net.mptcp.scheduler to use this sched. Some code in send_data() is from prog_tests/bpf_tcp_ca.c. Signed-off-by: Geliang Tang --- .../testing/selftests/bpf/prog_tests/mptcp.c | 112 ++++++++++++++++++ 1 file changed, 112 insertions(+) diff --git a/tools/testing/selftests/bpf/prog_tests/mptcp.c b/tools/testing= /selftests/bpf/prog_tests/mptcp.c index 7e704f5aab05..44484a63e62a 100644 --- a/tools/testing/selftests/bpf/prog_tests/mptcp.c +++ b/tools/testing/selftests/bpf/prog_tests/mptcp.c @@ -4,6 +4,7 @@ #include #include "cgroup_helpers.h" #include "network_helpers.h" +#include "mptcp_bpf_first.skel.h" =20 #ifndef TCP_CA_NAME_MAX #define TCP_CA_NAME_MAX 16 @@ -19,6 +20,8 @@ struct mptcp_storage { }; =20 static char monitor_log_path[64]; +static const unsigned int total_bytes =3D 10 * 1024 * 1024; +static int stop, duration; =20 static int verify_tsk(int map_fd, int client_fd) { @@ -251,8 +254,117 @@ void test_base(void) close(cgroup_fd); } =20 +static void *server(void *arg) +{ + int lfd =3D (int)(long)arg, err =3D 0, fd; + ssize_t nr_sent =3D 0, bytes =3D 0; + char batch[1500]; + + fd =3D accept(lfd, NULL, NULL); + while (fd =3D=3D -1) { + if (errno =3D=3D EINTR) + continue; + err =3D -errno; + goto done; + } + + if (settimeo(fd, 0)) { + err =3D -errno; + goto done; + } + + while (bytes < total_bytes && !READ_ONCE(stop)) { + nr_sent =3D send(fd, &batch, + MIN(total_bytes - bytes, sizeof(batch)), 0); + if (nr_sent =3D=3D -1 && errno =3D=3D EINTR) + continue; + if (nr_sent =3D=3D -1) { + err =3D -errno; + break; + } + bytes +=3D nr_sent; + } + + CHECK(bytes !=3D total_bytes, "send", "%zd !=3D %u nr_sent:%zd errno:%d\n= ", + bytes, total_bytes, nr_sent, errno); + +done: + if (fd >=3D 0) + close(fd); + if (err) { + WRITE_ONCE(stop, 1); + return ERR_PTR(err); + } + return NULL; +} + +static void send_data(int lfd, int fd) +{ + ssize_t nr_recv =3D 0, bytes =3D 0; + pthread_t srv_thread; + void *thread_ret; + char batch[1500]; + int err; + + WRITE_ONCE(stop, 0); + + err =3D pthread_create(&srv_thread, NULL, server, (void *)(long)lfd); + if (CHECK(err !=3D 0, "pthread_create", "err:%d errno:%d\n", err, errno)) + return; + + /* recv total_bytes */ + while (bytes < total_bytes && !READ_ONCE(stop)) { + nr_recv =3D recv(fd, &batch, + MIN(total_bytes - bytes, sizeof(batch)), 0); + if (nr_recv =3D=3D -1 && errno =3D=3D EINTR) + continue; + if (nr_recv =3D=3D -1) + break; + bytes +=3D nr_recv; + } + + CHECK(bytes !=3D total_bytes, "recv", "%zd !=3D %u nr_recv:%zd errno:%d\n= ", + bytes, total_bytes, nr_recv, errno); + + WRITE_ONCE(stop, 1); + + pthread_join(srv_thread, &thread_ret); + CHECK(IS_ERR(thread_ret), "pthread_join", "thread_ret:%ld", + PTR_ERR(thread_ret)); +} + +static void test_first(void) +{ + struct mptcp_bpf_first *first_skel; + int server_fd, client_fd; + struct bpf_link *link; + + first_skel =3D mptcp_bpf_first__open_and_load(); + if (CHECK(!first_skel, "bpf_first__open_and_load", "failed\n")) + return; + + link =3D bpf_map__attach_struct_ops(first_skel->maps.first); + if (!ASSERT_OK_PTR(link, "bpf_map__attach_struct_ops")) { + mptcp_bpf_first__destroy(first_skel); + return; + } + + system("sysctl -q net.mptcp.scheduler=3Dbpf_first"); + server_fd =3D start_mptcp_server(AF_INET, NULL, 0, 0); + client_fd =3D connect_to_mptcp_fd(server_fd, 0); + + send_data(server_fd, client_fd); + + close(client_fd); + close(server_fd); + bpf_link__destroy(link); + mptcp_bpf_first__destroy(first_skel); +} + void test_mptcp(void) { if (test__start_subtest("base")) test_base(); + if (test__start_subtest("first")) + test_first(); } --=20 2.34.1