From nobody Sat May 4 11:45:07 2024 Delivered-To: wpasupplicant.patchew@gmail.com Received: by 2002:ac4:a898:0:b0:4b1:af33:c52d with SMTP id z24csp1940474pid; Tue, 19 Apr 2022 22:03:02 -0700 (PDT) X-Google-Smtp-Source: ABdhPJy0fu+D+SK5BYJiYo1p9IRQ6+it1PYj1a8M84+eL4e9qrxZsMeTfjsU/xwmqea6omlFwlWa X-Received: by 2002:a05:6512:b08:b0:46b:a876:3009 with SMTP id w8-20020a0565120b0800b0046ba8763009mr13019714lfu.378.1650430982465; Tue, 19 Apr 2022 22:03:02 -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 g20-20020ac25394000000b0044a24aa28e0si723623lfh.254.2022.04.19.22.03.02 for (version=TLS1_2 cipher=ECDHE-ECDSA-AES128-GCM-SHA256 bits=128/128); Tue, 19 Apr 2022 22:03:02 -0700 (PDT) Received-SPF: pass (google.com: domain of mptcp+bounces-4798-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=lQYT07U5; arc=fail (body hash mismatch); spf=pass (google.com: domain of mptcp+bounces-4798-wpasupplicant.patchew=gmail.com@lists.linux.dev designates 139.178.84.19 as permitted sender) smtp.mailfrom="mptcp+bounces-4798-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 A83C32E0C84 for ; Wed, 20 Apr 2022 05:03:00 +0000 (UTC) Received: from localhost.localdomain (localhost.localdomain [127.0.0.1]) by smtp.subspace.kernel.org (Postfix) with ESMTP id AA7FE7A; Wed, 20 Apr 2022 05:02:57 +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 38C22110C for ; Wed, 20 Apr 2022 05:02:55 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=suse.com; s=mimecast20200619; t=1650430974; 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=j1tJE6v0HiaEKHNl2ImePulvShcI45JuV+vq2yeTZWo=; b=lQYT07U5+h0gadEj0PI2DWs5iwmKCBvdgYKq7BECxZBmnA0H20DUYmNhj0xOz+KPqmVUyp sWu7tHXMP89y7AGI9Nt9PZzwVdkncg9agc1Vq/gncSMjMBcsv9sc6DFLVDUo6hz9dJVXDr aC8gHb8Okn+L5HneZfuDFk/raiiHQr4= Received: from EUR05-DB8-obe.outbound.protection.outlook.com (mail-db8eur05lp2109.outbound.protection.outlook.com [104.47.17.109]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id de-mta-23-UnLsa9-XOeiFfznmCG-vpw-1; Wed, 20 Apr 2022 07:02:45 +0200 X-MC-Unique: UnLsa9-XOeiFfznmCG-vpw-1 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=j8y5LrzMw2rR8ugVyPyCvvxi6dwK3gcLqFglrVp7CxqyiE11smdojtu1kqkdwjj3uPagmE2Cc6LeVY7m5aQdR+MPmsoIWAhhbuk/pNx1FtpI5POif8uNGCta72PrSDZbqMQD32nGuarCYZ6hU00mzfPJaTotuLbSZApEYpd+lUxL4b2sT2XcWxk7n9umGI5LUGi+z88hqRVXGyNMuhjI0PtwLf7TDRxMMwUiKggjznQ/t6BZHBVUNKxTdFuE869pp4MvGFs/FOszcnDl1GnA4mHIzqX6tHFZq7MBaDkjJVoCBxmJ11etSNwx1GgGgwx7bDKM/6vuAMzX0qtEP8GOvA== 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=LRZcJ1V4bSMvIATKFWRYyI0OfgDNGoJXg8CT6qQRBsk=; b=fDD/QuV7OLAHrjphv+VBB04VCuStKKyWy2pcSOJF0MbxyJspPPCjFTaEEmSea/uzWuJYUI4aMuBgIZFYmfaoay7aMKIe7j47e8tHp5tvICKVKiQqgkTdgw3ar166ljLVgPzyOZGPi9kIRofgXzW9f0YHu+rLq4ufOYazoBNukkUC6OHI5JMWoqtbL8zIaItyeHJ+aMr9z0Q/zOcE5qmsVq5ip6AxmyU4ly6vircizE/VbLElk8cg/Z2FxdmGyGBDiiWcmJw0yiRgQSnyjAK1g7iOR1L1JWbr9Sq52ePTISRs0mkb0W9DQoS9oIbbVei3KgamwHsnAAS6S/S+7Yjc5g== 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 PAXPR04MB8638.eurprd04.prod.outlook.com (2603:10a6:102:21d::14) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5186.13; Wed, 20 Apr 2022 05:02:44 +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.013; Wed, 20 Apr 2022 05:02:44 +0000 From: Geliang Tang To: mptcp@lists.linux.dev CC: Geliang Tang Subject: [PATCH mptcp-next v6 1/3] mptcp: add bpf get_subflows helper Date: Wed, 20 Apr 2022 13:02:53 +0800 Message-ID: X-Mailer: git-send-email 2.34.1 In-Reply-To: References: Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: HK2PR02CA0178.apcprd02.prod.outlook.com (2603:1096:201:21::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: 0357349a-6aae-4105-f546-08da228b0102 X-MS-TrafficTypeDiagnostic: PAXPR04MB8638: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: uRYPQTwHHWc6r8fHG8aDsInGxR8sGJVCXl6kka1IEbtL4XaUoFGbLsRKCRqQ4UKE7t5wxKuhuzqRpk94OQd+aF+q3wFiYPsoxElR2oORs0ISEL0j7YRtF12jo8Ys+Yuwox6vZjHPZtb20ajNjYuhLLGcQ6tPpRytDFpEcy41eAPK13lVwpU4isRI1tQLiKJFBZkzptE1mWdb5soHfwzXM1aRQ1HGDZQzw4wbelwI0rVpkSY9e5u63jM3sXzX+XossoAbiAOGjR4kBwc4LdoeamlbtZRoGwq8qJViO/Ur8vA3ko70vDhd2fYaRibWi7IfUUOHZ2iaXJkD0ARC56FvPbczA1bolfDG1LJeShleNyx3dejLvUvK+qVWfGmh4zs/Xut76qnNsvDVPSp78Frdy85mHsrhaLZyOT5ElrCi6OsOwMvYLNTiG6FiJL235BtGnNfyWoYNaW58OQyDv0/dH7oioUzzchbN5f2xGJn4lVCSqo3rYKYHzMSkbehmu205jcWTEr6DZW3A1o/lmmy8EYKjfmDbQNLaKEU4dHJ6U6QTjkNuJvTsex8LdPR+UmtqDHAjnwP3RvLp+n/o2WXrLE8C2kXyWH+fbVAXoj1BIeUHQjBd7FDdo5CmTPzIdjD68kdFl+lmpf+npi42ijadL5rmbpv3iwXAge/pQgkhe+ySQG7nlL/7EODBlEttyvAxKw36Ctq3DZIkkIREIsQsZQ== 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)(8676002)(86362001)(38100700002)(66946007)(4326008)(66476007)(66556008)(8936002)(5660300002)(2906002)(44832011)(508600001)(107886003)(2616005)(26005)(6486002)(186003)(6916009)(83380400001)(6666004)(316002)(36756003)(6512007)(6506007)(13296009);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?x8w23oQNk9t5OgKfj7wEPVTqxaRRwt+wn/XVJxahKULca5YlsHUJyhpEeoNT?= =?us-ascii?Q?qOoYeSAMXBHIMobsALEjQL4mAZNkUzanIZ1jTmQ5okzB+2yRQzz2Fv7YAFg9?= =?us-ascii?Q?zDEDnkHIOkOek1oNo/Z1O4pnia9LPbkAz4W9aHn7fttrdICMPWBE0w/XPuMJ?= =?us-ascii?Q?F7ECIoPWkbC8BmPopu1Rd/ovbd76Brb7JohkmBIBq8YpVdZHFFmTdTcIge3E?= =?us-ascii?Q?18keBz93V2YHFsLsaPhtcSps5BM+PySY9z4KetDQJCsaoc7CFbka+LRwpTE6?= =?us-ascii?Q?edyYoluL2DwMNW9n9VhlG7B17G62KKf45/wHf9ZcQiwynbmPr6WCnwR65T8D?= =?us-ascii?Q?qX9RTxFBo9eLPS4mrVAagP7dR1SinwJeoDVNUlyexYTMt8hwLsvj6Clkd3u4?= =?us-ascii?Q?z6cY9Tu+sMR6JgBT0dV7bBrNDWNgJfrEZu8wdMUGOl80rYdT0cQq1XnPTOeV?= =?us-ascii?Q?QDz0nmdK6cu8utzaYyMU1Xy8tV5MHCRYLBBAQgfnO0NZVFRO0OAjq6UbEzk9?= =?us-ascii?Q?9vMu3qtA9eDz3AX/tUBDP3KAMumqc8/6GfA0KhQ/yShvS77p8lDIF68iXSlC?= =?us-ascii?Q?dNIT/sAZxooWMDY0kmxgyRlzcVoi3m6+JetoVudy++9E5onPpwJ1l/BC59xz?= =?us-ascii?Q?AI7J2Kxpy+M+Cw8gqf141NHX+d2ALtSBAGOoy0damEI51uDO4GB36Li2s75A?= =?us-ascii?Q?LdPMMCaZYJI8kQW/9Bt1V/rtMKmzwvh6d9yyrdZQHzWt1no6UCgS7ksH3ZB7?= =?us-ascii?Q?a//GmOoyY/FU9riJlLf7uSSNj8BUBZhFnHEk9zTngeZiYAUy802shy38PNvg?= =?us-ascii?Q?fe0pC7FW9X4n8amsv081BrW77e7lio0f9nYGYuqZzIYEIOPy102DONEHneO2?= =?us-ascii?Q?V0ElGR9Hlvxm/zqcbUnnnVA93eLI+77nScp0OrpC2QbHqgiuyZPo9DA+1ICs?= =?us-ascii?Q?8xgv39MIBnKszvF0w7OoyQmO0Enuj6ZEj/28Nr3N5Yw8nvrk9jCgYcOjRNTp?= =?us-ascii?Q?eaRnOdxziXMiM959QWmIrbeC8hzKZqBVufTqSWnmWXQgqnown/u2WCNBtPSz?= =?us-ascii?Q?ZSkCFv56guravG8rwXPOqwHDOgvpRy0qqLgx857xCgYZJbxiqFSzPQBFJfAm?= =?us-ascii?Q?+HZwsnHfmchcR3ncGloVxnqzm/2w5K3TeHm+zHSDBC84akKJFr1OeaMuPtQH?= =?us-ascii?Q?EnxT2QNe+gECBd6IAM2iOZ7RZXF2conGAC5sx6IO4LsfxY2zsBJpiGPVJsrK?= =?us-ascii?Q?joqSfPp04TmZoXZI1jNoeBnjvvKghJUn28XPN4pihIsHoLy18BGjiiuHeBqH?= =?us-ascii?Q?TQTI/BNcFsPFg3XSIjiU2pJe7O4eKMukag5ohdW2d7XwReYn7TMq2UlCb2wg?= =?us-ascii?Q?DaEbJYcwVw/7TphGVeCVQSfshaTQPPaUXqBMGaud7AkI3wYNz+Fi3er75rRI?= =?us-ascii?Q?PwHbkHgDNVTLr8GXTnukvdAAmWQ9OQAwFW1g1mfqGJSEiLZNB6H9UQPBW/Kp?= =?us-ascii?Q?2hj9vMiYnJD0YaiAOeMyLcEVcc2L8DL8jU2IM1KobkFwhu1KRbv/4THg2FFR?= =?us-ascii?Q?rPU8/jhdoaFuLjS2wkZz+IW1ci4pOHY/8ediu6vZWU4Gb52V0VAu0ckx6KXT?= =?us-ascii?Q?hQ26q4niHGeSSOlCu0xBlRXkdMP6gcsI44SF8o6/u25SZa7fpFJlfw2BSeWD?= =?us-ascii?Q?k9aEdKSwtteZ50mIqVj3IYZCLjccnHyI2qbdpF2zLnvzDsSwKeJ6s2NYmm4X?= =?us-ascii?Q?xSuXXD/BNVC7RCWSWe06FCTJ9vlwup4=3D?= X-OriginatorOrg: suse.com X-MS-Exchange-CrossTenant-Network-Message-Id: 0357349a-6aae-4105-f546-08da228b0102 X-MS-Exchange-CrossTenant-AuthSource: HE1PR0402MB3497.eurprd04.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 20 Apr 2022 05:02:44.2865 (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: V6F6LHmTRToD9D83H3NuLxiFQL6qYFQuItSs2NI0rJS3Y7ePSI4o1tNis0MPAAZPVAGKg9lm//pI0ZcXNVdQpg== X-MS-Exchange-Transport-CrossTenantHeadersStamped: PAXPR04MB8638 Content-Type: text/plain; charset="utf-8" This patch implements a new helper bpf_mptcp_get_subflows() to get all the subflows of the given mptcp_sock, it returns the number of suflows. Add a new member subflows in struct mptcp_sock as a pointers array of all the subflows. Register this helper in bpf_mptcp_sched_kfunc_init() to make sure it can be accessed from the BPF context. Signed-off-by: Geliang Tang --- net/mptcp/bpf.c | 44 ++++++++++++++++++++++++++++++++++++++++++++ net/mptcp/protocol.h | 7 +++++++ 2 files changed, 51 insertions(+) diff --git a/net/mptcp/bpf.c b/net/mptcp/bpf.c index e203653860fa..113a2efb183f 100644 --- a/net/mptcp/bpf.c +++ b/net/mptcp/bpf.c @@ -160,6 +160,23 @@ struct bpf_struct_ops bpf_mptcp_sched_ops =3D { .name =3D "mptcp_sched_ops", }; =20 +BTF_SET_START(bpf_mptcp_sched_kfunc_ids) +BTF_ID(func, bpf_mptcp_get_subflows_array) +BTF_ID(func, bpf_mptcp_put_subflows_array) +BTF_SET_END(bpf_mptcp_sched_kfunc_ids) + +static const struct btf_kfunc_id_set bpf_mptcp_sched_kfunc_set =3D { + .owner =3D THIS_MODULE, + .check_set =3D &bpf_mptcp_sched_kfunc_ids, +}; + +static int __init bpf_mptcp_sched_kfunc_init(void) +{ + return register_btf_kfunc_id_set(BPF_PROG_TYPE_STRUCT_OPS, + &bpf_mptcp_sched_kfunc_set); +} +late_initcall(bpf_mptcp_sched_kfunc_init); + 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)) @@ -168,3 +185,30 @@ struct mptcp_sock *bpf_mptcp_sock_from_subflow(struct = sock *sk) return NULL; } EXPORT_SYMBOL(bpf_mptcp_sock_from_subflow); + +struct mptcp_subflows_array *bpf_mptcp_get_subflows_array(struct mptcp_soc= k *msk) +{ + struct mptcp_subflow_context *subflow; + struct mptcp_subflows_array *array; + + array =3D kzalloc(sizeof(*array), GFP_KERNEL); + if (!array) + return array; + + mptcp_for_each_subflow(msk, subflow) + array->subflows[array->nr++] =3D subflow; + + return array; +} +EXPORT_SYMBOL(bpf_mptcp_get_subflows_array); + +void bpf_mptcp_put_subflows_array(struct mptcp_subflows_array *array) +{ + int i; + + for (i =3D 0; i < MPTCP_SUBFLOWS_MAX; i++) + array->subflows[i] =3D NULL; + array->nr =3D 0; + kfree(array); +} +EXPORT_SYMBOL(bpf_mptcp_put_subflows_array); diff --git a/net/mptcp/protocol.h b/net/mptcp/protocol.h index 58b980660d20..cf4cf69dde32 100644 --- a/net/mptcp/protocol.h +++ b/net/mptcp/protocol.h @@ -501,6 +501,13 @@ struct mptcp_subflow_context { struct rcu_head rcu; }; =20 +#define MPTCP_SUBFLOWS_MAX 8 + +struct mptcp_subflows_array { + u8 nr; + struct mptcp_subflow_context *subflows[MPTCP_SUBFLOWS_MAX]; +}; + static inline struct mptcp_subflow_context * mptcp_subflow_ctx(const struct sock *sk) { --=20 2.34.1 From nobody Sat May 4 11:45:07 2024 Delivered-To: wpasupplicant.patchew@gmail.com Received: by 2002:ac4:a898:0:b0:4b1:af33:c52d with SMTP id z24csp1940469pid; Tue, 19 Apr 2022 22:03:02 -0700 (PDT) X-Google-Smtp-Source: ABdhPJzaSlH4wpAsjuTstmiW+de7V0y0x4n5WjQuacFMbmYbTUvtmkW4C2PqafD2iQa2dkSqad30 X-Received: by 2002:ac2:5285:0:b0:471:afb7:e794 with SMTP id q5-20020ac25285000000b00471afb7e794mr3374603lfm.436.1650430981939; Tue, 19 Apr 2022 22:03:01 -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 bn34-20020a05651c17a200b0024c81bae383si1253514ljb.13.2022.04.19.22.03.01 for (version=TLS1_2 cipher=ECDHE-ECDSA-AES128-GCM-SHA256 bits=128/128); Tue, 19 Apr 2022 22:03:01 -0700 (PDT) Received-SPF: pass (google.com: domain of mptcp+bounces-4797-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=Ki+9v57d; arc=fail (body hash mismatch); spf=pass (google.com: domain of mptcp+bounces-4797-wpasupplicant.patchew=gmail.com@lists.linux.dev designates 2604:1380:4040:4f00::1 as permitted sender) smtp.mailfrom="mptcp+bounces-4797-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 501BD2E0C90 for ; Wed, 20 Apr 2022 05:02:59 +0000 (UTC) Received: from localhost.localdomain (localhost.localdomain [127.0.0.1]) by smtp.subspace.kernel.org (Postfix) with ESMTP id 9614B110D; Wed, 20 Apr 2022 05:02:57 +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 D43757A for ; Wed, 20 Apr 2022 05:02:55 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=suse.com; s=mimecast20200619; t=1650430974; 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=jynfQ8VDp5q94fEjj0ghkj/mBGOTViHbsgCAl9RNn6U=; b=Ki+9v57d1O6Hx5fXHTH0so9lyYEeHpJHyt4riVA6WbtBitqn7YfLZDQySw0cJucYGAAjDi LOa4LVCdC1FHv+vLihUCm+dt4keTZXuriPNpjTEwZmiyRKsYlfRBhMqavLN4xxzEszsxdw PBY3n0SruA4kycolMDql0486iEHXcNs= Received: from EUR04-VI1-obe.outbound.protection.outlook.com (mail-vi1eur04lp2050.outbound.protection.outlook.com [104.47.14.50]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id de-mta-10-S76fC-qdOJqkMgw9P8YEDw-1; Wed, 20 Apr 2022 07:02:53 +0200 X-MC-Unique: S76fC-qdOJqkMgw9P8YEDw-1 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=UtC0v3x7r4PSTdz4KZunUkENb8k6tCpe+CBx/hkc8wIOTyeQ6l6d3/xwqRWaixDI5f9von52/XtHdlT6W6EOwjVkDllg45Lu9zrHsWaIWwLusGcIOyeaPCwsvJvYmJb8asp2evktaJTaF05Ktuf3ZaS3QpjFPKejCIwFtB68pZmRc1yd1g4LPleJhBbhJ28avZrU8FSN8LH3BqqhDefB3lRRUTj7p1ho4ocoeXVaa3IUlniFzfHFKUAxG+GzPnd9M63w+zsCneqYKjqiWkTtVfm0kGWtwICeIThgdfVopa5r9UDP60pDYONA8dv9GCkyVkKsODJfG/Q7x6ya4pAKPw== 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=vl2sCp5gQ42GR+iww1Gfu3UIoGIhUU4TFQtkk/RCocA=; b=ncpLru/lI9hX0l3Yqn1oVGj/QJSdTF0XK1+1surKLtdBeVmeYk5+ZgJfFNSxfcZsJik2tMOOwW01LuoXhh2OFmcdqoRFE8H+m7pp1FS+Ps5KaXokItNXtsJ60Me3F77mSZGEwD0Gy8DCJzfBbapJhVGBVScjuFMhsnQYXodj5ilxJIztbYEDqNxC0hF1bDL3+9dOgi9jzo6oC8Nh7vye3EPgD4tiXLW1gakVjQXaao8B070xdCFn4dFLnX/X+mlHY/Npa0QL3wvQLU5dO30OYrw6VAaqMvJEOzwZeI+nSNe3g5yLmJ38Gdw+MEsW+lndc01LDTTrMsKdP1w/qxxiig== 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 VI1PR04MB4303.eurprd04.prod.outlook.com (2603:10a6:803:3d::20) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5164.20; Wed, 20 Apr 2022 05:02:51 +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.013; Wed, 20 Apr 2022 05:02:51 +0000 From: Geliang Tang To: mptcp@lists.linux.dev CC: Geliang Tang Subject: [PATCH mptcp-next v6 2/3] selftests: bpf: add bpf_rr scheduler Date: Wed, 20 Apr 2022 13:02:54 +0800 Message-ID: <112de8a5c8d37e37300019fe2afb1b13a5eef00b.1650430881.git.geliang.tang@suse.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: References: Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: HK2PR02CA0183.apcprd02.prod.outlook.com (2603:1096:201:21::19) To HE1PR0402MB3497.eurprd04.prod.outlook.com (2603:10a6:7:83::14) Precedence: bulk X-Mailing-List: mptcp@lists.linux.dev List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: a375510c-a36b-49d5-5927-08da228b058e X-MS-TrafficTypeDiagnostic: VI1PR04MB4303: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: G0rUQnRwDujlXgY5dca7uWND75ZL3QS+HA0cqA+wi89IYtuwH7t7siw4nxuMbR/S8gif/W3taSnMSlkpLCjH9fnBVyiF5/k32ler6gzqt8j/CDr0KGkMeutVfmNkklNrgUBt4GCwysts1SrXR8eq2G1bQAN1nGqsM0q2b6wVZt2KNmk5LeiNRIlcuREtB0zpzNkiJcnTkRpFG/Ds+wBx4YUF+sRZwTrOcwFVY/j+unUoxhzbTUOS38xq1NlnvaPTlnOpwhE/w8+dPGJmN3iN4GOswkmvU2gqGUTnJbE8P0rLRAXVQ3ZEaUNFtkqpaLsYQqxVoiBbeeocZdavMJs6zkkQfmtzAYNTbMID8NPvXC0b+Jzh6sUkBLnfWK8sZcTiTy6uQXvk/6gSTjkmdGP01N8KK/9L76APzZLMQH7RGF1czMFXhxvAVnq+OHLy3TOTmugwVZJN1LCaDydPYK3TOkWsLDbWcPxw59EGnCODwVYyGmGWJPL3nZ3C2Fy4Gh67YLHELHWliavr5LSVLCys6XNWK9WltJObr670cmAoa/wCzEyIPr5Rj65h2o24k9YmJU5QZ5ZaduU3qMncdhjs/AdOWsUdVJ2w/a2tl5QUQE2VkDiltQjWWDYflnJr9M/nbN1+h+rmdqsX99GseMFk3lkfAQ0uSHNnwMLRty0t6gEwncFeS4DfQONEgp6BuMFBe/aX7qny8+JuSFLj8+YR0g== 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)(86362001)(44832011)(5660300002)(26005)(8676002)(6512007)(4326008)(6506007)(66946007)(8936002)(66476007)(66556008)(186003)(2616005)(498600001)(36756003)(107886003)(83380400001)(38100700002)(2906002)(6916009)(6486002)(13296009);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?Lf/Gq1AlHw+NFhFSLhODSdHx3N/2G4cb7p8n9i4a5FTN/x3Rqahuyj1sDCsr?= =?us-ascii?Q?hnHSj8fK6PRkthFVGdhR+VGqUDcnu/GZYSld69Zp8s5TRGbaUQEy7B5Un0aq?= =?us-ascii?Q?d40B/7JJntBilHHuhlcYg0AO6fislsVlYnG0Tz4EN+Bp7UFnHRNyyPRlE5s0?= =?us-ascii?Q?FHxjDbBYxuw+1LJZFIXP25760CtyJIpUmz6uupmr68nk1UcTrYfjuNexs+59?= =?us-ascii?Q?n/g8QKf0Qtt2zpDzPsXAx6ygAMe/ERpzNzvl6HHDwSsLZYg2g7n+Vlv0m0/g?= =?us-ascii?Q?wKntMN4UrnmP8s/2v0RIaL5KjJEC5MnUurycW5fKqrfZUVBIqG470mcJXYZn?= =?us-ascii?Q?Ft9cCfYzq81RyFAxlZqQZjkw9lC40+uSPrOYoE2o3S9NLL/SOzFnd5iMV/RO?= =?us-ascii?Q?0IPBmRv37ZqnPyiIBf+AQgTgL/TKRO9hiWBWfiFFGwuxO/gvTrwXnOj3r1ul?= =?us-ascii?Q?sLBcE8s3MVcjDe04Ft5oz0au58z8ynw+TIdJRTwr3vJFTEUDFqHuqn+fSlsV?= =?us-ascii?Q?TTT5G9+m1szUBh4FwTPAw/diK/fbk8mXPakOMf7uZUss8gSpAbVygm3zdn1S?= =?us-ascii?Q?baCLDgy53v7EDfLM7cG/vy128RO4J+EeSSqDisBXxkLZd4cem27dhBjYjzOP?= =?us-ascii?Q?fxECn43kYpQx7dcZxU/v+o/wvG38K27z9+FzkfyhQvUT+1DxFGbvfMavIPw0?= =?us-ascii?Q?CjwDFgLxjlFYLuMb6i8VNzBU8l8O9exSDfdLd2vSUMfT02AKhMedaaEsAFeO?= =?us-ascii?Q?/KdJYmtBF7wDaihEDtXplzpRX8mtcKzFkBjNI/epp4+E9BJ8pm++BBmu6GfJ?= =?us-ascii?Q?NtQUpKIO+PQ50j4DOV50NGK1xtHvV2PQz4x/MwOPKtlVZNoEHuSBvaVV19+S?= =?us-ascii?Q?vwM4fsPVGFv0bc3COdpLMCzGMIUCU9EcgzZ4w+vfC4H8cdRSTbEQGTFEYHpE?= =?us-ascii?Q?7xVHICKt9OnsxrIwnvUC9DF2cPLPhcg/nLuJf8C/M6PF0KQGjFai1JO7Iric?= =?us-ascii?Q?R22CI7dzc8Jk7t5GUttkUk4aYcd3DiaMV9K3ix32JIxYgCVpTGJt06uzfTXA?= =?us-ascii?Q?Yl37SHrz9SD6H0VNggDXGd2wTEY+IpzqMslW1Pl4ny5BQ87fXyY0hxrbhMVb?= =?us-ascii?Q?uBiVSTj+G7dISjfFTDVhlIgtouAn1dCz6Zeo47bmBSOqIL2lHPK8rormqlOr?= =?us-ascii?Q?LC35b7b4Cpa3rJwVaxRZI6xmy0+sX7mqPNhQLIqF8hFtk14rlgq5pwfFerBw?= =?us-ascii?Q?2jWdiCSLxJPvmGRKVZsvWTGlZdJvPX5FKOvc7iLO0CP+sz25MJW5T3psglc1?= =?us-ascii?Q?Z6CUTi/cxyDBfxC1lPZ+HTEg45aB69Vmzo9Ii3wMxGnNlozvMOc95aXbHyBO?= =?us-ascii?Q?yiCBSj1oHCoMWWjs1kwEgYpumq9xDfbftc8dCBA4lCmemrneXAjdW7aT5p49?= =?us-ascii?Q?wnVB+fng+OXsteBuK9J7V7ouulil5Pv18N6ybHhRyl32GiM6YxIf1ff26r6A?= =?us-ascii?Q?8oZE2/7wnbKs6uxFe6r3NnJhlf4nIer4nhZVYQg6ujqfhLtafnf7M6NemgxZ?= =?us-ascii?Q?znO0Ieyt48iXQm9BZ0yF9w2niMLQUD5WiPNGQxN+Te4AZNgB6rtXWMca/Ir7?= =?us-ascii?Q?Omp0BriVCuler+D5F7eJZR8GJpxkC9bIug+/JMdsgupd+s6eI7nMSGazBgh5?= =?us-ascii?Q?ygoLZoCteNVT2O8h76MhvUs8IVm+d4frg3yVEeFlslvWx8xs3nlnxLphzkRd?= =?us-ascii?Q?hAZWbpLnG73CrgQS0LzsKORJawVL7eg=3D?= X-OriginatorOrg: suse.com X-MS-Exchange-CrossTenant-Network-Message-Id: a375510c-a36b-49d5-5927-08da228b058e X-MS-Exchange-CrossTenant-AuthSource: HE1PR0402MB3497.eurprd04.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 20 Apr 2022 05:02:51.8172 (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: aN/92kUg9c4/GuFAs7rfnwaK4myGkl6x+EaWsxaJhSy+IuK/vuNo7WXjbA27bxYytNkBZeuSh2EIBUIEobashA== X-MS-Exchange-Transport-CrossTenantHeadersStamped: VI1PR04MB4303 Content-Type: text/plain; charset="utf-8" This patch implements the round-robin BPF MPTCP scheduler, named bpf_rr, which always picks the next available subflow to send data. If no such next subflow available, picks the first one. Signed-off-by: Geliang Tang --- .../testing/selftests/bpf/bpf_mptcp_helpers.h | 12 ++++ .../selftests/bpf/progs/mptcp_bpf_rr.c | 55 +++++++++++++++++++ 2 files changed, 67 insertions(+) create mode 100644 tools/testing/selftests/bpf/progs/mptcp_bpf_rr.c diff --git a/tools/testing/selftests/bpf/bpf_mptcp_helpers.h b/tools/testin= g/selftests/bpf/bpf_mptcp_helpers.h index f02d75f91e37..047cdd52dfeb 100644 --- a/tools/testing/selftests/bpf/bpf_mptcp_helpers.h +++ b/tools/testing/selftests/bpf/bpf_mptcp_helpers.h @@ -29,4 +29,16 @@ struct mptcp_sock { char ca_name[TCP_CA_NAME_MAX]; } __attribute__((preserve_access_index)); =20 +struct mptcp_subflow_context { + __u32 token; + struct sock *tcp_sock; /* tcp sk backpointer */ +} __attribute__((preserve_access_index)); + +#define MPTCP_SUBFLOWS_MAX 8 + +struct mptcp_subflows_array { + __u8 nr; + struct mptcp_subflow_context *subflows[MPTCP_SUBFLOWS_MAX]; +}; + #endif diff --git a/tools/testing/selftests/bpf/progs/mptcp_bpf_rr.c b/tools/testi= ng/selftests/bpf/progs/mptcp_bpf_rr.c new file mode 100644 index 000000000000..1a5398cdcdd9 --- /dev/null +++ b/tools/testing/selftests/bpf/progs/mptcp_bpf_rr.c @@ -0,0 +1,55 @@ +// SPDX-License-Identifier: GPL-2.0 +/* Copyright (c) 2022, SUSE. */ + +#include +#include +#include +#include "bpf_mptcp_helpers.h" + +char _license[] SEC("license") =3D "GPL"; + +extern struct mptcp_subflows_array * +bpf_mptcp_get_subflows_array(struct mptcp_sock *msk) __ksym; +extern void bpf_mptcp_put_subflows_array(struct mptcp_subflows_array *arra= y) __ksym; + +SEC("struct_ops/mptcp_sched_rr_init") +void BPF_PROG(mptcp_sched_rr_init, struct mptcp_sock *msk) +{ +} + +SEC("struct_ops/mptcp_sched_rr_release") +void BPF_PROG(mptcp_sched_rr_release, struct mptcp_sock *msk) +{ +} + +struct sock *BPF_STRUCT_OPS(bpf_rr_get_subflow, struct mptcp_sock *msk, bo= ol retrans) +{ + struct mptcp_subflow_context *subflow; + struct mptcp_subflows_array *array; + struct sock *ssk =3D msk->first; + + array =3D bpf_mptcp_get_subflows_array(msk); + for (int i =3D 0; i < MPTCP_SUBFLOWS_MAX; i++) { + if (i >=3D array->nr) + break; + + subflow =3D array->subflows[i]; + if (subflow->tcp_sock !=3D msk->last_snd) { + ssk =3D subflow->tcp_sock; + break; + } + } + bpf_mptcp_put_subflows_array(array); + + msk->last_snd =3D ssk; + msk->call_me_again =3D 0; + return ssk; +} + +SEC(".struct_ops") +struct mptcp_sched_ops rr =3D { + .init =3D (void *)mptcp_sched_rr_init, + .release =3D (void *)mptcp_sched_rr_release, + .get_subflow =3D (void *)bpf_rr_get_subflow, + .name =3D "bpf_rr", +}; --=20 2.34.1 From nobody Sat May 4 11:45:07 2024 Delivered-To: wpasupplicant.patchew@gmail.com Received: by 2002:ac4:a898:0:b0:4b1:af33:c52d with SMTP id z24csp1940487pid; Tue, 19 Apr 2022 22:03:06 -0700 (PDT) X-Google-Smtp-Source: ABdhPJz3Tp0gldYOAfg783kd1mQBFagZac5IzXUAnjVcbx53aUQG6RbCwB0TKIFjQHFJ9YwH0M+n X-Received: by 2002:a63:f46:0:b0:39d:945b:5f8d with SMTP id 6-20020a630f46000000b0039d945b5f8dmr17489726pgp.612.1650430986472; Tue, 19 Apr 2022 22:03:06 -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 t185-20020a635fc2000000b00398580600aasi1211285pgb.433.2022.04.19.22.03.06 for (version=TLS1_2 cipher=ECDHE-ECDSA-AES128-GCM-SHA256 bits=128/128); Tue, 19 Apr 2022 22:03:06 -0700 (PDT) Received-SPF: pass (google.com: domain of mptcp+bounces-4799-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=bXHHPP3i; arc=fail (body hash mismatch); spf=pass (google.com: domain of mptcp+bounces-4799-wpasupplicant.patchew=gmail.com@lists.linux.dev designates 139.178.88.99 as permitted sender) smtp.mailfrom="mptcp+bounces-4799-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 11CA2280A93 for ; Wed, 20 Apr 2022 05:03:06 +0000 (UTC) Received: from localhost.localdomain (localhost.localdomain [127.0.0.1]) by smtp.subspace.kernel.org (Postfix) with ESMTP id EE9A8110C; Wed, 20 Apr 2022 05:03:04 +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 6C2777A for ; Wed, 20 Apr 2022 05:03:03 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=suse.com; s=mimecast20200619; t=1650430981; 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=x9PjuXmxx//rp3Sg1bxMtKi7svQtMfnWGsRK9tVAIhg=; b=bXHHPP3iQiEOfhoEznh+mqQeuRTi+ZQm9iaAHvj8ZO1orY2xMtKkkQq25KgwNUziTpddXn /SntJ09OP52N0/DUsQNu0RG+OhfuyDoUb1RcV/MAIosrC0GIn5513Zv6lAjgh6J79u1ovy 4Pr2m81PA+FFupFrz9XqypIGkhejn9s= Received: from EUR04-VI1-obe.outbound.protection.outlook.com (mail-vi1eur04lp2059.outbound.protection.outlook.com [104.47.14.59]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id de-mta-16--A9yUNsHMm-TA8CQKTDowQ-1; Wed, 20 Apr 2022 07:03:00 +0200 X-MC-Unique: -A9yUNsHMm-TA8CQKTDowQ-1 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=mv5WkmIihgrrSwdhW+ZHZFOyIT6Ihj+6owftC4FUWfHAGrZj77lhd6K85uB8zU+/BIj223NJreh6XAe4MELcRufVkSd4xSgXsg2x/tY+YRo4n+zAfXw75l08HnvGdasSMZ5NUSJu9X/3SjSFjM+n+oACpvBAi/2ZBLmAJt03B9/XductDR24yAR9FzAuxIuqiPBCeZ54dYQeOKYzuFgwm7Qa4HXqJYphk8Agl0a7IAGCtkjD0OquQKTr3hsokB/U+R5fyCrfl8mDdnP+SPSbnyqr4164054FhFQ5kKMa2abATwSSs/UMN6FjF9pSEiflXufajUXGvL9AV3ORtvMbQg== 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=UDnccN4Ej6cG02KY5kELgZn3ENNVMtxOEg3GeS2yTrk=; b=b7TO7H5OSZpPnXcMdcwH41Q2N3AX1LiSwT8ybiq25XojH8zETPKTph/6NUHkpv0SMH0KNl6EzQY9YJ7fGO5llNMtt3Nuls5NM9DH5eVq1b5zd/YJ60uwpbhtn/PpkrfMC/N4+VwQSRwNx1c7eS/90/agnwtbZCRwoenQTN6lmzpYG6sZgAlVqnk+u9LiTLYuiyIUTAUvQId1CwvuP2DHDe+x8i6E5ShJQxlwD+KHKbv97y/UJzT6+3vNtJsaVCsIbVG6Lt/U7nNeYXeC6+8nhULoX2/aWjj4/hxE+lplIFXZdVgU5dJB26YBQBU9BViCjfUlz9xE8x57qY7NTjzEWg== 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 VI1PR04MB4303.eurprd04.prod.outlook.com (2603:10a6:803:3d::20) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5164.20; Wed, 20 Apr 2022 05:02:59 +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.013; Wed, 20 Apr 2022 05:02:59 +0000 From: Geliang Tang To: mptcp@lists.linux.dev CC: Geliang Tang Subject: [PATCH mptcp-next v6 3/3] selftests: bpf: add bpf_rr test Date: Wed, 20 Apr 2022 13:02:55 +0800 Message-ID: <37b2f66cb0ee8ed053d0e189b52ef996445d0a66.1650430881.git.geliang.tang@suse.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: References: Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: HK0PR03CA0100.apcprd03.prod.outlook.com (2603:1096:203:b0::16) To HE1PR0402MB3497.eurprd04.prod.outlook.com (2603:10a6:7:83::14) Precedence: bulk X-Mailing-List: mptcp@lists.linux.dev List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: 98ea6f52-759c-442d-e5e3-08da228b0a01 X-MS-TrafficTypeDiagnostic: VI1PR04MB4303: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: 9n6epHIRRBZ5ZyGASIxyXrrEKNNmm+XrSKlfPE2AiIaHzjLpjFx3nmt1HlwkxFurvhc0VHJ1hmCc/gQJhB/+I0UC79WMJytQXpzCodmrB5lce8eWETndIN1xG8TebGzRed+AO+1KAfLoAiALTC/GoSxGwwsnXmMJz47MCR4uALJpRLH1sRmyh5zl7k5zleaa3b8BRfERz6WVhwZ6uBNzrrctG5vNsKyiWjLJqNj7d5Y2HgYH6E1U1u0YuB8IkbqoPnZ5Pvd3kRdIh3KRz52fqylKhFfMVmytje1KILfZirMinm+YvMW1cix2ltF4LGWd6ffMMpr7t98wdN+HBKuqwwwDnr2aHLEiHYS7ck2VJZOUlUeVsOox2gK3AT6Tscn6gUYOXNbVx61ijZAsyquRV2HMyiZeuBTcl8xzY3m8JBZL1J1M/dwQlanZn/VVpgo7Zct4uMoyOAJvCpuBAY1tAEy6KLAVe+s+CvN9OZdw5ilfEAbZbvcM+gf+/hRHZgX5h9BJoXxDPirvHCBSz0XJwxnmQ9K7lWZQrmF9xGUL6Syu5kbejgezw1PFmsrXv4iR37GhBQo6hIQPupiUF8FISmhpVSgSQtWeSoiFfbIP/jOV6oeMd68wPgD+fjso57noB8mufpLHidUfDzeTDwuRiUDLGeU6X/QS3b1HRIJSaFzVVnZBMJ4/2glj3chUZIBc 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)(86362001)(44832011)(5660300002)(26005)(8676002)(6512007)(4326008)(6506007)(66946007)(6666004)(8936002)(66476007)(66556008)(186003)(2616005)(498600001)(36756003)(107886003)(83380400001)(38100700002)(2906002)(6916009)(6486002)(13296009);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?E0iXe1ng0+qfetlPn+AiMlY9t3RjKmSQR+Uwhfp2I6cz31fnxtIMkPbMftDN?= =?us-ascii?Q?jon1FErHAi+/sFEdJUGwwKIx406ltvuY0fs+GP5tJHfEPWA12pGShhbYjchd?= =?us-ascii?Q?/KwYabdt2+szE4cKMdvSsNEQO9cdqSNnuJc5UF6n7sTO56pd60jUI/8m7PgO?= =?us-ascii?Q?f3ECbS2fJG7QgSzOrNYYJgKDaibPGUG/Wh3VyVD2lXD4etZzJGXvAVS0hy4j?= =?us-ascii?Q?Q3M2hGyq2yGOfHFpjlpILfn0GcCPO+yzJKqtQ3yipvISoaBROrXwn9pjyB9X?= =?us-ascii?Q?Yx3S5Owz8+yyxyDRVeMJ4a0qqOL1vH2/Ui+uXm7q4WCOn7cGVKQypX0cJ2Pq?= =?us-ascii?Q?gAulX0YpdCeR2Lubxy6BceU6haHtl3hugrxdADLMwzglJp4g3QLXPutpNnT+?= =?us-ascii?Q?Qt3Z9iQpyxsZZQAXNMbvqaWyNfEt72PEENAtbh5F5UrIOibYac7h8+2MHZB9?= =?us-ascii?Q?nV0TWfg8bRvKu6ko+XBq03GplRd3gH4mHwkH5kn8qFwo+7tb5u+HvdsbXt3p?= =?us-ascii?Q?UAm7fosGddyZErlUEc68UzLQAUJ43rr/iblip5T4/1/xyLLuV3qEYFdyXhhu?= =?us-ascii?Q?ujRYqtaG0EqDC2B/Ztxy2RrSwXAdI8XivwurZkoraAjtq4TZIVEb+3Cyvq8f?= =?us-ascii?Q?/U4+0ohtJWMUDoW2RznV8jOK1a021CSuHZpziUKltbd66hm06jGTbiL9YYbz?= =?us-ascii?Q?1weAYpmNr/tlV31ejxkzj0fUWm1r5NyvQffnr+PNqmgSJGokoFDECIldyokF?= =?us-ascii?Q?AI4BH4UyJ39iaK8G0d+nB/wZQiFsPq8ige6aPClLNWReUt1ylx3VpuBDW1df?= =?us-ascii?Q?4cSlTWBYjublrto0cdxw78v57Aj1jKArAU3vOJOdhwkQDfQDDEpDgHkg2FKZ?= =?us-ascii?Q?t0M/K0yTbT+4NSGfGtsQEkL6ubV/655qv28scX961Ol4MweQMGhDML+pNBas?= =?us-ascii?Q?CTqxFlJX9f/irNxAkhfgbmOI9x0aaN7gXMu7XnUBNCvI4lJzSwxT/UcfSWQu?= =?us-ascii?Q?9qIBTwC1FWTuxIvr8OkQpAWxY8gHtjxen98upR7z+vLOb7mXsBQMo6K7MCkm?= =?us-ascii?Q?0h1EYMiCYDNub5iO8rOEYwv2Y1HMs3V3to3gDXzmzGrL+tHIWzp1upEwTec2?= =?us-ascii?Q?0Vf3BrgTQ1eT7PVRLisCbIJUrnMPhj+8AX9JuCLCJAbtNqF5HAu3IWI+CVEk?= =?us-ascii?Q?MovEsegWYEbY62RtB2XTrGvF2TkHWrVnHfckssHGzywd+TCte7LHMp6LWRmX?= =?us-ascii?Q?gRw+BA3vODlkjmDMxYrQewmh+GaMWWZn5zSXyC/0o7OzT9qVD+SDXpfxpY6b?= =?us-ascii?Q?kkDmtmJskK0yvv9Jaq8MI0NZvy3rCqduLEdtkpW0RfvcOcDJ74bx2cwmp5Mo?= =?us-ascii?Q?eckr4R5aZ0XBmqwE8S/RvQh+U03GRFLTKPDobEs797bw0WDPFjtuIxpI7UKq?= =?us-ascii?Q?CzAFkbmowutYdkRlTL45CJV43L9tMqD7G+zgRRoXZsFugx+5lWzTeMCkUi/1?= =?us-ascii?Q?Qbmhli0Ca5FIc2PzMQwMcdhfxRF1p4DyEIub+SnN9EENbfnm+g/5V9E3J8DD?= =?us-ascii?Q?2PS56YKuqCdDfEtRp6LPtyaBL0f1j5DLOTFMcgwixAg268rWjjUSarfuRygY?= =?us-ascii?Q?AFJhjau2c+ke3gzpoYHIWYegtN/iXMsqlmRS+C+4b4ihT4fBRnWUxhcto5w/?= =?us-ascii?Q?NW0FRgG8n4nvGbjPgWZy5IlOY+vwFNYRukNUX7sl3d1wyVjncKH4yvHTWHXS?= =?us-ascii?Q?qccWBcinJLMoxewXiHLNzSXDne5AL5Y=3D?= X-OriginatorOrg: suse.com X-MS-Exchange-CrossTenant-Network-Message-Id: 98ea6f52-759c-442d-e5e3-08da228b0a01 X-MS-Exchange-CrossTenant-AuthSource: HE1PR0402MB3497.eurprd04.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 20 Apr 2022 05:02:59.3635 (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: 0yhjuAq13yN+zSMEQH5+EA0HK3XgEsu/x861WBKvkEjgitWHJsp3R8q9ruYP8eycjXocFPF5DQmox5yUvg8cKQ== X-MS-Exchange-Transport-CrossTenantHeadersStamped: VI1PR04MB4303 Content-Type: text/plain; charset="utf-8" This patch adds the round-robin BPF MPTCP scheduler test. Use sysctl to set net.mptcp.scheduler to use this sched. Add a veth net device to simulate the multiple addresses case. Use 'ip mptcp endpoint' command to add this new endpoint to PM netlink. Signed-off-by: Geliang Tang --- .../testing/selftests/bpf/prog_tests/mptcp.c | 37 +++++++++++++++++++ 1 file changed, 37 insertions(+) diff --git a/tools/testing/selftests/bpf/prog_tests/mptcp.c b/tools/testing= /selftests/bpf/prog_tests/mptcp.c index 377ebc0fbcbe..7052c520c0f7 100644 --- a/tools/testing/selftests/bpf/prog_tests/mptcp.c +++ b/tools/testing/selftests/bpf/prog_tests/mptcp.c @@ -6,6 +6,7 @@ #include "cgroup_helpers.h" #include "network_helpers.h" #include "mptcp_bpf_first.skel.h" +#include "mptcp_bpf_rr.skel.h" =20 #ifndef TCP_CA_NAME_MAX #define TCP_CA_NAME_MAX 16 @@ -362,10 +363,46 @@ static void test_first(void) mptcp_bpf_first__destroy(first_skel); } =20 +static void test_rr(void) +{ + struct mptcp_bpf_rr *rr_skel; + int server_fd, client_fd; + struct bpf_link *link; + + rr_skel =3D mptcp_bpf_rr__open_and_load(); + if (CHECK(!rr_skel, "bpf_rr__open_and_load", "failed\n")) + return; + + link =3D bpf_map__attach_struct_ops(rr_skel->maps.rr); + if (!ASSERT_OK_PTR(link, "bpf_map__attach_struct_ops")) { + mptcp_bpf_rr__destroy(rr_skel); + return; + } + + system("ip link add veth1 type veth; \ + ip addr add 10.0.1.1/24 dev veth1; \ + ip link set veth1 up"); + system("ip mptcp endpoint add 10.0.1.1 subflow"); + system("sysctl -q net.mptcp.scheduler=3Dbpf_rr"); + 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); + system("ip mptcp endpoint flush"); + system("ip link del veth1"); + bpf_link__destroy(link); + mptcp_bpf_rr__destroy(rr_skel); +} + void test_mptcp(void) { if (test__start_subtest("base")) test_base(); if (test__start_subtest("first")) test_first(); + if (test__start_subtest("rr")) + test_rr(); } --=20 2.34.1