From nobody Thu May 2 05:59:33 2024 Delivered-To: wpasupplicant.patchew@gmail.com Received: by 2002:a05:6a06:1788:b0:4ac:5e5b:1ad1 with SMTP id y8csp781801piq; Wed, 6 Apr 2022 06:26:36 -0700 (PDT) X-Google-Smtp-Source: ABdhPJzUhLeMcclekt690MnP2MVJM4EFsaIkNW5BodGY9tR+OPHhK4gVMz6j5WE4cjHB/0xGp399 X-Received: by 2002:a17:902:b092:b0:156:a40f:f716 with SMTP id p18-20020a170902b09200b00156a40ff716mr8630678plr.72.1649251596319; Wed, 06 Apr 2022 06:26:36 -0700 (PDT) Return-Path: Received: from sjc.edge.kernel.org (sjc.edge.kernel.org. [2604:1380:1000:8100::1]) by mx.google.com with ESMTPS id e1-20020a17090301c100b00156b39b2ec0si8664327plh.111.2022.04.06.06.26.36 for (version=TLS1_2 cipher=ECDHE-ECDSA-AES128-GCM-SHA256 bits=128/128); Wed, 06 Apr 2022 06:26:36 -0700 (PDT) Received-SPF: pass (google.com: domain of mptcp+bounces-4612-wpasupplicant.patchew=gmail.com@lists.linux.dev designates 2604:1380:1000:8100::1 as permitted sender) client-ip=2604:1380:1000:8100::1; Authentication-Results: mx.google.com; dkim=pass header.i=@suse.com header.s=mimecast20200619 header.b=MjNlXLbX; arc=fail (body hash mismatch); spf=pass (google.com: domain of mptcp+bounces-4612-wpasupplicant.patchew=gmail.com@lists.linux.dev designates 2604:1380:1000:8100::1 as permitted sender) smtp.mailfrom="mptcp+bounces-4612-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 sjc.edge.kernel.org (Postfix) with ESMTPS id 23EFB3E0E79 for ; Wed, 6 Apr 2022 13:26:35 +0000 (UTC) Received: from localhost.localdomain (localhost.localdomain [127.0.0.1]) by smtp.subspace.kernel.org (Postfix) with ESMTP id 0907833D8; Wed, 6 Apr 2022 13:26:34 +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 AB96033D7 for ; Wed, 6 Apr 2022 13:26:31 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=suse.com; s=mimecast20200619; t=1649251590; 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=zfw3I+EnZv96Md5OTD+XGEtjZ10dn0d5wybs6YfoSqY=; b=MjNlXLbXZMSZ/EFy1PYfPgXpt/0gtyouZD/uXJTMnQ5k4SP8k+PysbPSlocM/6Px7cGYtN cVQfbcoBC0jEvj+T/NtnKkOIRdAszbirURV/yyceQJ/su0AOffq1Z/wdkinSXkuY7R5N/b 9/9JMCr1GBGlcrun3PINdu1stj8pqEI= Received: from EUR04-HE1-obe.outbound.protection.outlook.com (mail-he1eur04lp2058.outbound.protection.outlook.com [104.47.13.58]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id de-mta-23-xsrl6VNTP0WqzmRlhXAwBg-1; Wed, 06 Apr 2022 15:26:28 +0200 X-MC-Unique: xsrl6VNTP0WqzmRlhXAwBg-1 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=SiiVVFtMRdYu36X9l/G/AEQ2zZdnULpwATlPXtVgU5F4L+MROQXzQj5hxAI39YWNeP1qwT6ogDAtB499pSNPN4eyoM8xCRilZ//08j7aAQ3MGOIFFQZshaJL9fNddk+AzRqs0YVYLOEv2+IW3mPHF1UYoVv4FGRh4DmhezW2MkbJczFrAV6acd1urWk9lKyoyL5kNuG1ney3EySQ2SzROArTmbSnFg2wbTNmHksZtZ0dtqPKxVZwqejGAz9J1XjXAOjq+NDpTPp1NUSk1VWwJn/SIt9Cuv3uJAOvbiefcW30+Lq9yUSsJRZonCzxhnBEH9Lmfm9aoMS3kdIisHv1cw== 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=IKEXh8cKLkNZqRYM2ojXASM4t9/Rot/LXOULKvK39Vk=; b=OFNtlflizdttLXx7V0VlTKSBJSSNRnk8ZsDclnJ+gsft3hwKG4Bgn5OFoQ4PK1w0RA58ZDZ2kotOw27w1bUDerF6IsKYV7cs4JnJTzHOurTeb1J9psVJpv13fXIMs0FvjnumFRGqNYd49xpCHlGdwBT8Qi3IMWTxMW2xnk9z1j6Xu016Ov9gvpuy8GCbde15klrqB1FNIF+EOurJ/do0ZWiWO1irzZo9Zs5tRL2aZmjhYdpZ4OzjEETAw8KAi2j06HpYo+5E2GsUpYnsgNj99gp7RXOYhPETklj6mJkvLhUxVJFqYZ584QTLpmErt+sC30YlIlwcFnFhplToenHHpQ== 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 DB7PR04MB4187.eurprd04.prod.outlook.com (2603:10a6:5:26::32) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5123.31; Wed, 6 Apr 2022 13:26:26 +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.5123.031; Wed, 6 Apr 2022 13:26:26 +0000 From: Geliang Tang To: mptcp@lists.linux.dev CC: Geliang Tang Subject: [PATCH mptcp-next v2 1/3] mptcp: add get_subflows helper Date: Wed, 6 Apr 2022 21:26:19 +0800 Message-ID: <36a954b187c30d34459b3bb7b883e3efac3f1aa0.1649251279.git.geliang.tang@suse.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: References: Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: TYBP286CA0013.JPNP286.PROD.OUTLOOK.COM (2603:1096:404:ce::25) To HE1PR0402MB3497.eurprd04.prod.outlook.com (2603:10a6:7:83::14) Precedence: bulk X-Mailing-List: mptcp@lists.linux.dev List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: c7749516-64cd-48eb-0d51-08da17d10d1d X-MS-TrafficTypeDiagnostic: DB7PR04MB4187: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: ue+cQezhHz9HECq9e4BVluA6RKNprxFA6C1yUhCY3JufzclBaCSQQUK8kY7xFNgcxYxC/WEBmW75c+ELcRBgABTzNDaVOjiB4AM9iQjZRF++Sno6Nh/GgTBQf+/eiJ6DiHwYghdmT+HVDSA+gE1ps/+5uZiz7CGrgOWfFNFvdiMPuD98fqA9Sps1QtWoDx2yAoWwI9xUvHE3mkTT9YrZzE/GmrAB/9IF4MbMI0F07eEIqRF4MN9HllECZCIxSf+UCgU7wOlHIY9gWVMhUa+bgQ22MSFcJI64sYf71UU5EGCWqq9GRjcnInvkotmCT+XI2JUwHQwDenr2ldiV7o5gSEYZc3HSbtVAqHbJED0oRSihq+EMG4DmCkIBz7cZtCuNJaJzMaR4nChEaUuikV2vmYhBQEttlBmtOAWdEmUCf6JTbvVYVFn8RTMD8lBWW8k1WSUsqnfvpPb/S03H0saX4LwFQl1VZljq/f9HMuChpyZPoiToKRePt8SrqMCcyo1inenQwjajBLmMYopwkcqsM+gR3Pj7CGTYkaCs5DFxnYRaWb8j8n1lBNT37l/Ow7Y5t49vF9sLLaKfFDfmy4f1aEa6YJzywPPbJb0XuYx5AUrCehIjUIeW898oG7sSPkgdtBFseW+1fsogIOSF2pMecuBJEh0bL7WIUcmpJ2FYnUMSJ+6cKiWVgKJjRkUuU6b0gkoUiwfIGsbldgJ0E3sYGg== 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)(6512007)(508600001)(6666004)(66946007)(4326008)(2616005)(83380400001)(66476007)(66556008)(6916009)(316002)(86362001)(6486002)(6506007)(8676002)(107886003)(38100700002)(26005)(186003)(44832011)(2906002)(36756003)(5660300002)(8936002)(13296009);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?K2fGmBqzcIMRb7MFqvEDHGz/H9hR0sxlGD9KjX957UVStWLZARolOGrhGkDb?= =?us-ascii?Q?gihoSGN65ybNtV+mjiSlJB5UhlQSnhp8vT8IOYn7v8OWCV+7LIBDfP1gSOWe?= =?us-ascii?Q?TUhY4PPLFguR+BE9kgUsESkWaQOvZnXQrt65yHC+cqYKcaX6rX6RO6r3AUYO?= =?us-ascii?Q?rW0K0YMQ5nzgiLK9TU7hN9YwfDDQ3hhsUqu6BdIV3CxoJaT0AlOpKDNjwNNP?= =?us-ascii?Q?xZIjgDoyHd3bd35veDsB8F6yTwZGBjE0jJGxOwk4kUDtls/iSjiuQh7i+5+H?= =?us-ascii?Q?F1y61czcecByIm353JsU1VAImf5R57JO8z/E2JDXijJ21VxC/P07J9TIzmXH?= =?us-ascii?Q?9D9IFzSwGbthA6nmAXV5jYGrxpJDMey+xY5STE0FM3VvSCh6zICsG3KieN32?= =?us-ascii?Q?GuUFcZPIW3rFDvH+nPHIevIOZa4jv3LoPO3OTZmdP8lwEbZywfieJ30CkBiN?= =?us-ascii?Q?k0A4v8gQdrkKI6QKTFav2CLfRpvYk7g65Ntgr8jkGuoQei0FGUZCCBiGQNe8?= =?us-ascii?Q?/HpiqpNN2lPQMSMka0s6fqyrS9ggN1pAOSrLdz74ttFErkin3lEiaaaNM5l4?= =?us-ascii?Q?11Fjo/qjKN0XdYlfbFwNHwK8BNqr/Wdre4yN46j6OgDn5IkB02YhG5AfPIT8?= =?us-ascii?Q?v1TsM1oYyRaB6NJ49sCzpcm8VGXloBkvO2GxV2RgJP4Kkv8yvJuv/ZzOpZIa?= =?us-ascii?Q?GPSzegFPBiwf5vn75vS/4ixRwgk7u9kh6Mj0DwSCjvNIbvFuVI2GLL4wPRNW?= =?us-ascii?Q?+gc3iytB58B8LgHpgHbusoX0HYxfep7pP+/vgSVKpKo8M5x/GNcLZV3+IdjW?= =?us-ascii?Q?Hk+T9K3JGVRxoDk8jHpZvV8TTxaX8zP/6eHWidbRt6glHxmsIB4tKRq6IZVI?= =?us-ascii?Q?ANQ8qq++Q4GrHoyMl4PD/YaHBsovBzFHKpwOq/gvFxOjc9LXfcF6CATs28pu?= =?us-ascii?Q?uWuXi8eL3UlWHWy9KlxWqDRDGWUFJcrOE3Whf4tCazGqeT2Kk3lpVdbxda76?= =?us-ascii?Q?lTepnOmwCMrPDeiWuiRQD9UkpGWVl51P1HkIuYuXUapfxGevcrIbYMq79F1E?= =?us-ascii?Q?WTXhG4/MWVruxRaQbgOXdDggWc9f5ap6lsYpm1dA4CC6We27ivhkDCySCkSB?= =?us-ascii?Q?T2YUAuOHbyNOMxyv6Z+lNIdbNDFlWJ+aH6t2xmB5xH4e+Q22sEMP48blNJJW?= =?us-ascii?Q?Yv99Ubdmp/ulo1UVooRcB4HpF8CwuBmwT8F+d71c4vN9weX4fJEclCX29CPU?= =?us-ascii?Q?ynueGFJbW/e9LuCzsnvX1+juUkS4EfYjjyAvFmuTLAKHloQ9jxauWyBF4bts?= =?us-ascii?Q?5Y/VdghMHabGl4XrDf0zkU/cfZl3mmXSyKd7nw62LEeFj/XuxMOzVGW9bK43?= =?us-ascii?Q?c7zIgn41IcJKmMnTj/l+/aN8q3tbgUJKKC6FavT+/0x5lpRvTVUa0KPheOH1?= =?us-ascii?Q?e8/dCt0J3ieQCJC5S6+CIJ0/biDsxeKkgrfpIqgc+rgPnOP75VISEWJxV9Ka?= =?us-ascii?Q?qBQIPpwUVtLKzOohIrZSL+0/L7SrOuwpmcyyaUoPDgqAM1055jMza3q6fi1/?= =?us-ascii?Q?4ANuWcHH+ACPzt0R3MDKhA/fBXwvxApq90r/sYFcs0c1fAfmKA5zj+jcCpdC?= =?us-ascii?Q?gF19Ua2KivmnYGrjOmwUqTYGUigFpe3chjBPrVMcU3qNggnyi0EyOMOovV9h?= =?us-ascii?Q?MI56Aq6DWbs3mEdQAlJso5yFpjn7zAB/T7OMzZVhoXsTkZVpvZe1fODksthe?= =?us-ascii?Q?7kML/EHluz3Ap+fGL/3AndQKi1IMOk4=3D?= X-OriginatorOrg: suse.com X-MS-Exchange-CrossTenant-Network-Message-Id: c7749516-64cd-48eb-0d51-08da17d10d1d X-MS-Exchange-CrossTenant-AuthSource: HE1PR0402MB3497.eurprd04.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 06 Apr 2022 13:26:26.4614 (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: ggKATD9m3qu8v+02myCId7KQUaaKGfXOqeRsh+djMEUIkODgZrwObwHoqdal+gHbmsxAhR7S5hTaa+J6WEOw3w== X-MS-Exchange-Transport-CrossTenantHeadersStamped: DB7PR04MB4187 Content-Type: text/plain; charset="utf-8" This patch implements a new helper bpf_mptcp_get_subflows() to get all the subflows of msk. Register this helper in bpf_mptcp_sched_kfunc_init() to make sure it can be invoked from the BPF context. Signed-off-by: Geliang Tang --- net/mptcp/bpf.c | 28 ++++++++++++++++++++++++++++ net/mptcp/protocol.h | 3 +++ 2 files changed, 31 insertions(+) diff --git a/net/mptcp/bpf.c b/net/mptcp/bpf.c index a3c41c079fe4..660579f1589a 100644 --- a/net/mptcp/bpf.c +++ b/net/mptcp/bpf.c @@ -114,6 +114,22 @@ 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) +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)) @@ -122,3 +138,15 @@ struct mptcp_sock *bpf_mptcp_sock_from_subflow(struct = sock *sk) return NULL; } EXPORT_SYMBOL(bpf_mptcp_sock_from_subflow); + +u8 bpf_mptcp_get_subflows(struct mptcp_sock *msk) +{ + struct mptcp_subflow_context *subflow; + u8 nr =3D 0; + + mptcp_for_each_subflow(msk, subflow) + msk->subflows[nr++] =3D subflow; + + return nr; +} +EXPORT_SYMBOL(bpf_mptcp_get_subflows); diff --git a/net/mptcp/protocol.h b/net/mptcp/protocol.h index 3caa1a08b7e8..1990ae5c1397 100644 --- a/net/mptcp/protocol.h +++ b/net/mptcp/protocol.h @@ -238,6 +238,8 @@ struct mptcp_data_frag { struct page *page; }; =20 +#define MPTCP_SUBFLOWS_MAX 8 + /* MPTCP connection sock */ struct mptcp_sock { /* inet_connection_sock must be the first member */ @@ -298,6 +300,7 @@ struct mptcp_sock { =20 u32 setsockopt_seq; char ca_name[TCP_CA_NAME_MAX]; + struct mptcp_subflow_context *subflows[MPTCP_SUBFLOWS_MAX]; }; =20 #define mptcp_data_lock(sk) spin_lock_bh(&(sk)->sk_lock.slock) --=20 2.34.1 From nobody Thu May 2 05:59:33 2024 Delivered-To: wpasupplicant.patchew@gmail.com Received: by 2002:a05:6a06:1788:b0:4ac:5e5b:1ad1 with SMTP id y8csp781869piq; Wed, 6 Apr 2022 06:26:43 -0700 (PDT) X-Google-Smtp-Source: ABdhPJxDFQdOxS167AYPpfOWaKzFMudxypi7WN8FAZAJa3rWe8/HywpGD1c+INN6rHXwBvZIoHK3 X-Received: by 2002:a05:6402:e9f:b0:41c:df21:b113 with SMTP id h31-20020a0564020e9f00b0041cdf21b113mr8944197eda.217.1649251603139; Wed, 06 Apr 2022 06:26:43 -0700 (PDT) Return-Path: Received: from ewr.edge.kernel.org (ewr.edge.kernel.org. [147.75.197.195]) by mx.google.com with ESMTPS id 12-20020a170906308c00b006dfa3f0e6f9si11061095ejv.545.2022.04.06.06.26.42 for (version=TLS1_2 cipher=ECDHE-ECDSA-AES128-GCM-SHA256 bits=128/128); Wed, 06 Apr 2022 06:26:43 -0700 (PDT) Received-SPF: pass (google.com: domain of mptcp+bounces-4613-wpasupplicant.patchew=gmail.com@lists.linux.dev designates 147.75.197.195 as permitted sender) client-ip=147.75.197.195; Authentication-Results: mx.google.com; dkim=pass header.i=@suse.com header.s=mimecast20200619 header.b=FmkvaFTC; arc=fail (body hash mismatch); spf=pass (google.com: domain of mptcp+bounces-4613-wpasupplicant.patchew=gmail.com@lists.linux.dev designates 147.75.197.195 as permitted sender) smtp.mailfrom="mptcp+bounces-4613-wpasupplicant.patchew=gmail.com@lists.linux.dev"; dmarc=pass (p=QUARANTINE sp=QUARANTINE dis=NONE) header.from=suse.com Received: from smtp.subspace.kernel.org (wormhole.subspace.kernel.org [52.25.139.140]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by ewr.edge.kernel.org (Postfix) with ESMTPS id 7655D1C09FF for ; Wed, 6 Apr 2022 13:26:41 +0000 (UTC) Received: from localhost.localdomain (localhost.localdomain [127.0.0.1]) by smtp.subspace.kernel.org (Postfix) with ESMTP id 3DD6E33D8; Wed, 6 Apr 2022 13:26:40 +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 795C233D7 for ; Wed, 6 Apr 2022 13:26:38 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=suse.com; s=mimecast20200619; t=1649251596; 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=7+su2rA5JHc+XZQdCZwE0iZEaajQ6s6c5KXmrGfjDbk=; b=FmkvaFTCp/fru0Ebp6+CtWX/hRBZajcrcZOX356cheoglBsalfnDbLiT4l8ViRd5hdH/og j3kxRMFsW8atN/0PA9gBLa3EcaWF5+8d4UUA2ArXX1+nWK/lJQblColmgtVc+deqZeFsmU V9hlvmIeTElGPhv/nojOWMjDOTuIUrs= Received: from EUR04-VI1-obe.outbound.protection.outlook.com (mail-vi1eur04lp2054.outbound.protection.outlook.com [104.47.14.54]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id de-mta-22-VGT0fUf8PQOdBJHEiFQ6HQ-1; Wed, 06 Apr 2022 15:26:35 +0200 X-MC-Unique: VGT0fUf8PQOdBJHEiFQ6HQ-1 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=Ep+T2gtNVb4M6tBC9C48xNRSxCnP7IlPFgl2aVQUOInYnagcYddAatseyOeEgNpMzOrBF2Q08aLira66F8pmnA0J8KWRJe6mMamkmB/sJoW9Ydah/3UAqSpA+DsjMzxHb+VM2pfmpX0QTcli4ZjrKday8xCPJKjxiRVWGtpCATOoySEyVaP1LzHKtC4U4DFowNODb7VVwiKY96HGfVABZB0S14jtdldH29ZUCtw2XpPbUdMZMY3d4ID1hKLgfWR+ytd6ksi4cR1bWWhSFbNl8elnxPnlG7tzF57tyiDTOzQCukRm/Hlxiq5LQcxLbjGbklQbOUTYuiQee1bKyA8K6g== 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=b9JrX9Y7q9euTcNMa7aZLhCpSSOuZedhX9xFJwARHBU=; b=gTSUbrhfKj2llrEkv6804CuLjdjk0YDR+ylKqjVI+gcvI3EVrhP90Ws0WCjxdncLx9Jzxa12+ZnTDYtoSmbRWAOw1gFdEqElGE93o2D7ms97trf9tSRl9EBldsE8DyoFMtnxV41aGQamb+chANx4UWVB9LIM0n9xx0IDHoTalCzVFYKz0ODpOkgQGNuYE+XDMIOeWmIQoslK4oFldqj1MCD5oTwO/LnE1XjRXGzN1+zq5DqkDTXgm3whizivbFGroGtWaz1tmADVvhexi5PikGhdruZ+x9cQ3sAuMx/0qLDUP7fqiyAXhn/qk5md0kEUPzJVYZdA6Yx8CXD2eJ8EIQ== 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 DB7PR04MB4187.eurprd04.prod.outlook.com (2603:10a6:5:26::32) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5123.31; Wed, 6 Apr 2022 13:26:34 +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.5123.031; Wed, 6 Apr 2022 13:26:34 +0000 From: Geliang Tang To: mptcp@lists.linux.dev CC: Geliang Tang Subject: [PATCH mptcp-next v2 2/3] selftests: bpf: add bpf_rr scheduler Date: Wed, 6 Apr 2022 21:26:20 +0800 Message-ID: <821d10426af05c07273bb9264aa31e5d4bbd327e.1649251279.git.geliang.tang@suse.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: References: Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: TYBP286CA0021.JPNP286.PROD.OUTLOOK.COM (2603:1096:404:ce::33) 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: 138ffa71-1966-4982-97b6-08da17d111af X-MS-TrafficTypeDiagnostic: DB7PR04MB4187: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: 5VPQ0TeHyLRAez1BcwJCr/c5K1BvtOs17ZzG3WcOSE/cvx+iidZNMUcrhJS8FTZqDO8dNpUAvgNDTbELxXU1E6hdKNUm7EJJfy23QYWhMnKWCfkK+ip69HNHkg430RnVscE5who4b6S/VGdG2F64/peHYaIeJuRaKOsAsjCfX58F2Q7cfdx5rYdexsnYOlk5b+qlK6zaGgm3GH0np+q9uE0BAaEt0aknIlswAIccczMtshoxYtFPvHmYEQxioaPHnH6A4HL4ZtbpuXcKagGDTdUHvQoouu5fhWxWdZ3IZIPp3AsfJWLBvuktXDdQ4D/uSSGRiVLUlfDKBfcTPwjnIEST6dQ82pYjc9O4FU7nugdvKV2nOxQAIKZDc1Mqa6yUcM0saduTRQWWKxNgmoVfKP0bCBkf493EqAhrb0mQjnSAEpOyK1ZxPL2t3cJQdOYXzL6m0r3eHVucQ0Ov41y8TVdMdRqcGuBobrvLwQ7d4DCIf8L0A+d1uPgHqboE8Py50YRCYeEpKjRDI8iImTgCFIb0/mPsSdxfsf7XuNAc3Ja7EnCN+s46/9PwI43FRKATZIEU4l9aWeo6wBk+KyJ5k6i0KjA3ZdM9V9IMqbq25OhvzkbjhFvLQs7qIHRAmHjaBZ5WhMu73+bkhlguEoBlmwgL1DFgd4A0EgsokgIO4GY29V5hka6RDTjlz31NQTaCWHHf+HiqMwPbCILxL3BP+w== 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)(6512007)(508600001)(6666004)(66946007)(4326008)(2616005)(83380400001)(66476007)(66556008)(6916009)(316002)(86362001)(6486002)(6506007)(8676002)(107886003)(38100700002)(26005)(186003)(44832011)(2906002)(36756003)(5660300002)(8936002)(13296009);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?p1V/r+mImYOCrHIX9ekopFUjouI6fXpbKhemPWniYv4b9nn4JQngsr7vi07G?= =?us-ascii?Q?33rezScxUzTtvW8DPjdKqI7Cu27emoh2OmoeeohLflDaItTAAbLsOz3gNHQP?= =?us-ascii?Q?WK74NPG9a2qqxO1kMq9a1UnuNQvKhLT1ohRnJJd7igFB6Iqbds74IDGcVoxw?= =?us-ascii?Q?0sUbh6ldFcnuvAf3ykQS1jYqYLbYOF3za3BC6ZbcmcpoPnz2iKh85vyWbhaP?= =?us-ascii?Q?YTGeLOugig8/yf8dcRGv0h8aBsp0IVU6QAMqwChe5BWnWbnSl/wlBh9izCwf?= =?us-ascii?Q?bK3hzAT/ab/c33pVxXbEREJ3M66K6n7OnfKOzwJJ3F+zYvMEpPdCBkGcjl78?= =?us-ascii?Q?+1PjIpcMEoY7XV8eLFSTc3c5lNEhwAKeiFXUAyCvMhSN1jB+wBtC0g5QWKNb?= =?us-ascii?Q?A7w5Og2j6PO74bQEq7NUPK/X7qn9pRdfiBAq63IE2/Efag7Q9XZpOEKtK3Q2?= =?us-ascii?Q?jbA0axbf7jLfFEVAV1VqwemCdt0+HLXqn5vCl23P6jDSC1x4wwUcT0dvrAvl?= =?us-ascii?Q?LpZkczRr6mj9NLWcavcsrZnJ7DjKUK/PAbUMN1X1t8p2NolDSH7bjRj6deus?= =?us-ascii?Q?DYq041GIWthfP0qVLtJHXGH7FlW/LydkQqeKIeY/Hss5eTU1DxYCfkjBpB//?= =?us-ascii?Q?fjl5yv/CzxyN9B6yqNmgQCKXqJioKIVTbfmxwu3QR7CBTRIlUs/KbJhEsQBE?= =?us-ascii?Q?uEHwEKOsblKiQwUNG5cSq+vL++W3Gj7nvqHCWkdPcCEcSiueLaeLq/Ns8lZT?= =?us-ascii?Q?uRYiK9CxFOCatN6TMMPRNGkkqYnzo70uZE6L3DZc1/OWp3nNI/DfdYEPOA3D?= =?us-ascii?Q?Ba7YAPl/wF7tvT4xs/ek6LWhY3WYzheZZVplli6pYeh4ABb2I1KWCFnHEl/L?= =?us-ascii?Q?UVpc/ULX/jnpZUKDjlhIN54Bk0tOcRnDjN0h6zaW9gSnhoEj9N4qUH4ooBB1?= =?us-ascii?Q?IGVvEk8KL56K6ZZusEd1vi6uvqjvDFYiu7Q6f1yHTKysmL6RD9X0PV5cHzOT?= =?us-ascii?Q?REkZAsC95Xq2wt6PZgWg5BUblzoWvbygL5DsBiGsKiy0VKKKbOTKb6un9hik?= =?us-ascii?Q?D2Q46E93dis32JCSS6q8sPRTwlZlMvXrzznBeT6/bqSlQewPv8uiYfwy5QmD?= =?us-ascii?Q?4nKsNVEzuKaMxHwKnWd8C8tpkC8ry3nyqhcu1U1eQILAjAgwGQg41xNRBjRF?= =?us-ascii?Q?0Z/CJUoT+A/Fmn1c/zvwvJ8qFNM4S4Oh5502amMYKhOnVacCIiirbFyWyOAX?= =?us-ascii?Q?sFCR9QNdpxjjIERU0F/J5TAgx4vYSq/JinCfdBXgor8koteFGLIKT1zwTWME?= =?us-ascii?Q?u10Yqodj6qA0ncO9JBAxO6LCxkTI9jV+LLRS4GyMzU/sZEwR1kbXzUEQxfS8?= =?us-ascii?Q?m3BTnKC+ue6AM6aoUMqiAuyxFFgbirFZx73KlMaJWaCgJBB1nLuXBIHxb8a/?= =?us-ascii?Q?072+J94NTOxmdmQ4FcfWw8jV+DW6rN1HfXYHBark5vktCYLf6RnxUvU6u9+V?= =?us-ascii?Q?Y1uJMXyqrMdWAi9OkvzVoqKoj8uKdCMedbVeHt8VyoIP16Uq8rcHANY7PvfJ?= =?us-ascii?Q?pf/ghpbUHEGJHy6F0azkms85S5yR+UApxew2s2m1sGWOr0veGCikKemMhcAj?= =?us-ascii?Q?VuV1Fpj/nPwk6mO4r6nx+h+QY/OkC1mBCw9yBSBsUZfSOzjarwZiRP0vsVIo?= =?us-ascii?Q?S8swIg/vy8MCILGUSPyFFbu+L68QLLJDlV7yAWgwx49fFH2ayk39Ut18QSu/?= =?us-ascii?Q?JKuMRg99sWjWAlKp3KYHgRh1RpZGkf8=3D?= X-OriginatorOrg: suse.com X-MS-Exchange-CrossTenant-Network-Message-Id: 138ffa71-1966-4982-97b6-08da17d111af X-MS-Exchange-CrossTenant-AuthSource: HE1PR0402MB3497.eurprd04.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 06 Apr 2022 13:26:34.2420 (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: u+4bNtqR07FA83NWK5aEEaqDUoptPd75abZ9ylKr1BHV1++NT26sbmIkvo4Bcn/EKsw6xJZLOlXy6KG+RnliLg== X-MS-Exchange-Transport-CrossTenantHeadersStamped: DB7PR04MB4187 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 | 9 ++++ .../selftests/bpf/progs/mptcp_bpf_rr.c | 49 +++++++++++++++++++ 2 files changed, 58 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 5135eb6710e8..6acd62fbdf24 100644 --- a/tools/testing/selftests/bpf/bpf_mptcp_helpers.h +++ b/tools/testing/selftests/bpf/bpf_mptcp_helpers.h @@ -6,12 +6,16 @@ =20 #include "bpf_tcp_helpers.h" =20 +#define MPTCP_SUBFLOWS_MAX 8 + struct mptcp_sock { struct inet_connection_sock sk; =20 + struct sock *last_snd; __u32 token; struct sock *first; char ca_name[TCP_CA_NAME_MAX]; + struct mptcp_subflow_context *subflows[MPTCP_SUBFLOWS_MAX]; } __attribute__((preserve_access_index)); =20 #define MPTCP_SCHED_NAME_MAX 16 @@ -26,4 +30,9 @@ struct mptcp_sched_ops { void *owner; }; =20 +struct mptcp_subflow_context { + __u32 token; + struct sock *tcp_sock; /* tcp sk backpointer */ +} __attribute__((preserve_access_index)); + #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..3e83c94971c3 --- /dev/null +++ b/tools/testing/selftests/bpf/progs/mptcp_bpf_rr.c @@ -0,0 +1,49 @@ +// SPDX-License-Identifier: GPL-2.0-only +/* Copyright (c) 2022, SUSE. */ + +#include +#include +#include +#include "bpf_mptcp_helpers.h" + +char _license[] SEC("license") =3D "GPL"; + +extern __u8 bpf_mptcp_get_subflows(struct mptcp_sock *msk) __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) +{ + __u8 nr =3D bpf_mptcp_get_subflows(msk); + struct mptcp_subflow_context *subflow; + struct sock *ssk =3D msk->first; + + for (int i =3D 0; i < MPTCP_SUBFLOWS_MAX; i++) { + if (i =3D=3D nr) + break; + + subflow =3D msk->subflows[i]; + if (msk->last_snd && subflow->tcp_sock !=3D msk->last_snd) { + ssk =3D subflow->tcp_sock; + break; + } + } + + 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 Thu May 2 05:59:33 2024 Delivered-To: wpasupplicant.patchew@gmail.com Received: by 2002:a05:6a06:1788:b0:4ac:5e5b:1ad1 with SMTP id y8csp781927piq; Wed, 6 Apr 2022 06:26:51 -0700 (PDT) X-Google-Smtp-Source: ABdhPJwrLe0QTpBMhX6s75Or+rOETe1Aq5koiD11LX4wbjZhpf78EpsxJ2PrGwn3UN9UVyRbVcSZ X-Received: by 2002:a17:902:f349:b0:156:a80b:a53f with SMTP id q9-20020a170902f34900b00156a80ba53fmr8788725ple.7.1649251611182; Wed, 06 Apr 2022 06:26:51 -0700 (PDT) Return-Path: Received: from sjc.edge.kernel.org (sjc.edge.kernel.org. [147.75.69.165]) by mx.google.com with ESMTPS id o12-20020a656a4c000000b003994a1ab024si8084280pgu.760.2022.04.06.06.26.51 for (version=TLS1_2 cipher=ECDHE-ECDSA-AES128-GCM-SHA256 bits=128/128); Wed, 06 Apr 2022 06:26:51 -0700 (PDT) Received-SPF: pass (google.com: domain of mptcp+bounces-4614-wpasupplicant.patchew=gmail.com@lists.linux.dev designates 147.75.69.165 as permitted sender) client-ip=147.75.69.165; Authentication-Results: mx.google.com; dkim=pass header.i=@suse.com header.s=mimecast20200619 header.b=PFTh1k7i; arc=fail (body hash mismatch); spf=pass (google.com: domain of mptcp+bounces-4614-wpasupplicant.patchew=gmail.com@lists.linux.dev designates 147.75.69.165 as permitted sender) smtp.mailfrom="mptcp+bounces-4614-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 sjc.edge.kernel.org (Postfix) with ESMTPS id 88EF73E0F23 for ; Wed, 6 Apr 2022 13:26:50 +0000 (UTC) Received: from localhost.localdomain (localhost.localdomain [127.0.0.1]) by smtp.subspace.kernel.org (Postfix) with ESMTP id A4BC233D8; Wed, 6 Apr 2022 13:26:49 +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 CC8BF33D7 for ; Wed, 6 Apr 2022 13:26:47 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=suse.com; s=mimecast20200619; t=1649251605; 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=eMbZueC0wrBXT/nYWGKDGIW8Gt36/rZavUq2XXamGeM=; b=PFTh1k7iNEUfMTI08139ewvaFW8k08OdJf/BCymeS3ZUbzISO13Aa36k7qINP1tXauIwGl FrQ3eOh58onE/JDnHP8fkHj3hiXNqiJhOQghdmjjKDXCNoOqewWfZW0pe85vJonAfQJjdW osQvghZ51Ygiw/mHXlyK8+3/6x3QFrU= Received: from EUR04-HE1-obe.outbound.protection.outlook.com (mail-he1eur04lp2054.outbound.protection.outlook.com [104.47.13.54]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id de-mta-37-L1HkN8xKMS6tvCnVv3b9Gw-1; Wed, 06 Apr 2022 15:26:44 +0200 X-MC-Unique: L1HkN8xKMS6tvCnVv3b9Gw-1 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=TRF47HEolmWjRPlF8EC2wjUV+Ao0ITYzhROvlFkQgBKdvDo91yvNT4zwpUVtwC9PJajmwvtAIXdPR7ObBZ4Y7K4lX6Ibr3+g1+/C6DcO1sXlz/4d/tbB4JW52wDvlw8ee0Lm1/Q9oH5bniCSe0KMPsEYwmeiEybuEiJt5N/0tyz6NPYsVjDMaZxQ7QLfmUeAVNI+Yw2+aZrmO787Wrf/RgVEBsZeVxKSpMqwnymNOehh/aUuYpgG+j8dAwo5mmBosKu3rwvD8awD2fwVBxW62smtiN1fY9oVakAs3x2Ixhb8B4auBlnhNKVkvmkoukp/BpRMYK8Y8jijDFBW05S1vA== 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=hYhpqqqSnZMOBiugBMjEt3q8dlQtsVRYUsY4x/Z6FGs=; b=DAa+GovydK5MwnV66/6FQ7IofFgSGm1PBAL5Zv11lYEfb31oQ3ek+wiYdwwfvoy4AKixEm0ZxO7gwsojiOfoWQHasw22lFH+wI1YTfWhjwG1f7bC9yTu3Xzjs4m+RdNprxzURpPKYLo26VVWiwNW01LzvA6jEd+84sRiGGfH7hbHERvty+icDcQYIaSwmoHxjmIb0BFeikQ/fM8Sb5tW3DGb2+ieTVKhHzmCHjyWhLMIkf0o2yhvx74+7JNVbjAUHcT4sJJzgMag5gjL2C/Gi+2EIdpxoLfHyif8Cvcv1ITTDsaC+oZvINwdhFDgQvC132sUKoW9V9jNTJrZlx92Lg== 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 DB7PR04MB4187.eurprd04.prod.outlook.com (2603:10a6:5:26::32) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5123.31; Wed, 6 Apr 2022 13:26:42 +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.5123.031; Wed, 6 Apr 2022 13:26:41 +0000 From: Geliang Tang To: mptcp@lists.linux.dev CC: Geliang Tang Subject: [PATCH mptcp-next v2 3/3] selftests: bpf: add bpf_rr test Date: Wed, 6 Apr 2022 21:26:21 +0800 Message-ID: <28d5b2a89d1a47965f6f6e4544166659217981b1.1649251279.git.geliang.tang@suse.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: References: Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: TYBP286CA0007.JPNP286.PROD.OUTLOOK.COM (2603:1096:404:ce::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: 565d5aa8-b8e5-4dd7-bdcd-08da17d1165e X-MS-TrafficTypeDiagnostic: DB7PR04MB4187: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: EEddxF1Sl/hCf90trU+ISyg44OkLKNNZptETgXiWbRBW1sM8l4oKas1bTgspr4o2N7IjfQTcfnQ8ftv+xCAvI7udXBSXTtRiFAQeIp49GRomtjOHMlU6YEgpC/dIIF93fTeGq15LaFXRXDdMh8Y+51ZCkSjxBRgcB3rTqeoTJ7x0HY9rzhHQd9TtRc1R12mQeT3T3i495h0N/TZ36HePOp+MygXrwm6JVqUuT3tEdwLxgQZh741JSwqS9hbRPp3Uhd7g3WDP+Dj5OlSwrHoj5RIMQLeeW8hOZkjU9oZWAIZe2nOcWowDl8L6rRMez6uvi6l4qhxkBnIfg0PXI/LDkUsWdaqZB/xAsJkvtRy4tcTn1Yi7CTFexnHgbF35tcW/35IcJrJwr10Znq21xs+tUHh6ICiGera2uzD6mumntuXEUCQsIsQ7I9IRWj8suuea38sXNL4aE1vKJuFF1LRPBbvM1y95HVpNAnTXoKA5i//3k94emH+J1vpkDUuyhZZAbPt2umDacpRH2FYyOb19Fb18ZD00nEY7SbXb6vpKwJzPFUcaBj+eQx2dc7MhEYDfhmqEbv3PKwLePOHd58qwgHNKfips70Q79ex68eK69iqqL1ZNHf9fGu6vOs19sIQhkXoZQEdjIPt5PWutUyHWpUB1J3MqbJ+V4Kiz9jWRcaDXHlD3k3T2peNLBvFOlaRC 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)(6512007)(508600001)(6666004)(66946007)(4326008)(2616005)(83380400001)(66476007)(66556008)(6916009)(316002)(86362001)(6486002)(6506007)(8676002)(107886003)(38100700002)(26005)(186003)(44832011)(2906002)(36756003)(5660300002)(8936002)(13296009);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?K52DgOVX7fhhjg1E5ofNbYrRCIV+vNBkoV+gai/iU7ug0uEphNX1RLSbOozV?= =?us-ascii?Q?AbDsJtuet4ufikV6iHwfsG1K28JwAC0WRhXRqvAf8vX3MQXrCLMizAa9gmKE?= =?us-ascii?Q?9zPFiwfgQJ5ZAfk9L2ZjkVGR09fFuk0NYiBlO4/PEJvg3yTZJOa65IjxXu4h?= =?us-ascii?Q?RxLPP3GDqHoscT9tD4s8ehaivX068TD+OBiFTIFPJZ2zVublZwrm8U1x+jMa?= =?us-ascii?Q?gxvc5s2I1TsOAJkm5j6wiO260WbNeu3DAXp4ydBVTNAQeZEZvstGsTrChYfe?= =?us-ascii?Q?QDczI+oV96pvF+1sYv/8mF8wkwGhAj06r4iok8quj9x+aNiGhXwDT0D8qI1K?= =?us-ascii?Q?VvnCu8QpRv0odfyGx+9+ciMUzoYMVM5ihKxx2w/PQZtZHFZKzfhod98XpYYZ?= =?us-ascii?Q?SO497zRmsE8taG9o8dETMZkBkFnu+SJMyvMb0nxTnney8audXe8ZGyB43nso?= =?us-ascii?Q?QPGHfAPihvNkWQRCGNuXS73sOQ22W1d0rP/ZwE3FnQ2ezMxeXZ2wLq9r2QnL?= =?us-ascii?Q?YJQM/JEkKba7ABzxL4986shAqVgP3UaISSUJ3zQ1kIPC8fcJJEtAgeRjQHTv?= =?us-ascii?Q?U13fxEwConk0Ek4QSA+UvbCk7HTWkCMVzmxrvpynXhcCKOW0LiqnT7kTMQv5?= =?us-ascii?Q?HRJqv+Uearo23EaQCLOkHLCyHaM8EBNRibIfRtOX0lwnMvn453QXv92tXGJ/?= =?us-ascii?Q?JPVddoONWZ23rR2MWhfNCLaiBEu7ypuqLmjoSTDkoB3Bj4WjMi7QTtiBgsSM?= =?us-ascii?Q?5hZx2HbQlkK4l32QcyL3qFXDDFwrfR01OuepuG7laulemiw6CfnHQGeaE+0w?= =?us-ascii?Q?LSpmwLorrk3Z+s8lj7hmoiBjfkq8tGq2F8j1uah3MNxJlFjzTmtg5s40fG5Q?= =?us-ascii?Q?4tQ5ZJlHB54d6hgsctOfN4gsdxr2OC8RboxTkfQREIBugSzxYo7LlLEfL74J?= =?us-ascii?Q?9TO2bf+ded65l9ZHAL4bkrOuQpUSw3okDgTgeDW000nhAH7/5dM1vY/Aj9UI?= =?us-ascii?Q?MoZ0/WZNndhApflsHtIuJEB8/ufgI5f6DePRHoPvxs0CRflFGjWmn0SNy/oM?= =?us-ascii?Q?QGuve1A4wOI1DCtFbe+NTpS2E7AJrapttwm6KJGdfjVwb45peYDaOOLre6yV?= =?us-ascii?Q?NB7+M0o3wAwuqsUdVFuQhIOunrnnfVqVMAdhwKoLc3VOBQZqgZLZh6iLAAFG?= =?us-ascii?Q?VkSsIOaYLOVlv3K4Ve/05IB90ZXZcgg5lsfjkZsco58PokyU4wGlDRy81isf?= =?us-ascii?Q?SbeAz1fFVkBYo/gMg5gBPh7CthXb/+Q3Ruo/V5NJMZwydoCcrjBhggAJ52VX?= =?us-ascii?Q?hjyTUutYNFe65UDSkKEyeOasQwgcGQoi9dFhfi1/pV8BUcMN6B1V9P6XJkoK?= =?us-ascii?Q?styfIEDcBYKYDQliz5yqIaWX9hPP3Izdl+PUEKv/21h1O+yh8kaWUVyC81KJ?= =?us-ascii?Q?bm5WkTY+rg/Yrfk/AxOrA3FaxRSKacuNL8JXV0QFRJ6r9Zg/DRs2desfFLxa?= =?us-ascii?Q?cNV+PkEcN/Ypf7XEhR1N4HSPCI8uYg7e2Nc/Nawk+XUqrWDgzIByRWIMM6Jw?= =?us-ascii?Q?gbYz1plmTmT/ZyoQAqOHOQGxZUX1yKJV/kABudhdPR9zVfNy+06hQRUAN0L2?= =?us-ascii?Q?tReQxvbwsa4H1+vqeUfEcZFyiP1Mbunb+dARFXnxt+6UviQdba/24De7/FWa?= =?us-ascii?Q?clzZ7V7AHcKlZFFIzaN2oD2SAxOpOKmKMp9TQyyzxf0lsFJJnXQtAqtZQjia?= =?us-ascii?Q?m82aqfFEAXmdVGYFCYlnJntO2EAxZy0=3D?= X-OriginatorOrg: suse.com X-MS-Exchange-CrossTenant-Network-Message-Id: 565d5aa8-b8e5-4dd7-bdcd-08da17d1165e X-MS-Exchange-CrossTenant-AuthSource: HE1PR0402MB3497.eurprd04.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 06 Apr 2022 13:26:41.8664 (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: oqeNUErn87Qt/0yR27aXOMeHhO8/0gtouWJLKnFrfXzRGgVu6Z4L/dp10rN1+3a7s3Fq+sWhoLlNHhN9Sia8Uw== X-MS-Exchange-Transport-CrossTenantHeadersStamped: DB7PR04MB4187 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 address to test multiple subflows case. 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 467769e229f5..4b191a7fd12c 100644 --- a/tools/testing/selftests/bpf/prog_tests/mptcp.c +++ b/tools/testing/selftests/bpf/prog_tests/mptcp.c @@ -5,6 +5,7 @@ #include "cgroup_helpers.h" #include "network_helpers.h" #include "mptcp_bpf_first.skel.h" +#include "mptcp_bpf_rr.skel.h" =20 #define min(a, b) ((a) < (b) ? (a) : (b)) =20 @@ -363,10 +364,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