From nobody Thu Sep 18 08:11:41 2025 Delivered-To: wpasupplicant.patchew@gmail.com Received: by 2002:ac4:a898:0:b0:4b1:af33:c52d with SMTP id z24csp80357pid; Wed, 20 Apr 2022 23:26:32 -0700 (PDT) X-Google-Smtp-Source: ABdhPJyrwFINyZNc3XiYLAykDOBvYR31Te2K1nAeOu2cHeTCDftyADU/3wUI9eZEKTmNXbaUA1w6 X-Received: by 2002:a05:6512:131c:b0:44b:5b7:75bf with SMTP id x28-20020a056512131c00b0044b05b775bfmr16686200lfu.652.1650522392170; Wed, 20 Apr 2022 23:26:32 -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 z36-20020a0565120c2400b00449fff2813dsi3997648lfu.191.2022.04.20.23.26.31 for (version=TLS1_2 cipher=ECDHE-ECDSA-AES128-GCM-SHA256 bits=128/128); Wed, 20 Apr 2022 23:26:32 -0700 (PDT) Received-SPF: pass (google.com: domain of mptcp+bounces-4829-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=LcXhMe3G; arc=fail (body hash mismatch); spf=pass (google.com: domain of mptcp+bounces-4829-wpasupplicant.patchew=gmail.com@lists.linux.dev designates 2604:1380:4040:4f00::1 as permitted sender) smtp.mailfrom="mptcp+bounces-4829-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 A779F2E0CBD for ; Thu, 21 Apr 2022 06:26:29 +0000 (UTC) Received: from localhost.localdomain (localhost.localdomain [127.0.0.1]) by smtp.subspace.kernel.org (Postfix) with ESMTP id 3F9131FA1; Thu, 21 Apr 2022 06:26:28 +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 991767A for ; Thu, 21 Apr 2022 06:26:26 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=suse.com; s=mimecast20200619; t=1650522384; 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=a3p8MFyz9bwj+Je/MO804vFSk6Yyr/Ug9LsYkdHCocY=; b=LcXhMe3GQzKCRzYZW15nhzmSURwIQxm39n16bJQqMRdwW+ofZte3jMBf4KRvzoYkVemo31 ds3ZIAIGMkdMSKlVREy4SbX/wCzQGJBOrRFOa/Zi7Q8aWEOvoah/t0rOlbK+UZ0dXI/cpY QQWOHHmQqjonDxmV2Y/EzYtoXDDjILs= Received: from EUR04-VI1-obe.outbound.protection.outlook.com (mail-vi1eur04lp2052.outbound.protection.outlook.com [104.47.14.52]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id de-mta-9-HnxwWWjzMEi1lvc7VUkhtw-1; Thu, 21 Apr 2022 08:26:23 +0200 X-MC-Unique: HnxwWWjzMEi1lvc7VUkhtw-1 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=b6DztzFvcv+H3Rvgtm35MaySlnOpAAH5flGx/iLzEMLG2FO+hf0a7uFh8CsaB/XtmPaEsXFAFyqhFPSUnS+09CIfbE5mFOT8QlKZM3B9XIUpXMB0Y/aaB3BQ81Li/tpVQNg0gYTFBvQdi188h7rhm9Lv/zxPi7KxWvlJdfJg6xJ++OxAGZC9vMppXxjddwYMAjvMb5/0XVjbTn6UQ9LhyML002EV+ywxxQEhvwtypj6XPyZS+1q/QcCMFr5613zuu7TA48KY4ZwN0fXJGTMGNKvvrgviV1/PLEUxQtavAs/A8+o8lZPOaE6MZ2DKE4NnnWSeMs9Hy9EUDGVG0FrCZg== 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=jvlFNaXbjFyUMGcNLRAnJJxtvxsnLVXyWsHs6xiIj+Y=; b=fS4mw2opfbbjOorJe/OTGG3mijz0N2+MExVGX5929hu8Mb+Y8NRi25FjqpfNLfAP1+/l5AvproNije+BGZlkIJ5sja1BUgOI8tp3GpoOUJuhUa4hz+l5nnwYDsJSQR+CrbUXZrJkGi0PHQSG/Qj/THnhAu5yZA0DeFxifEq15JY7qP1roZnX3GvxIH/izgRKDPBbojmtvSSTFX8RUAEojGjdaSamwu9KOb3C6yousVXeuozgsRyt4i5QvWzTo2206SmTtwYS0+I26HtE0oANtv/epop0bLWU+3lA0KxHzya/6ghdvdpwlXe8OCFMIF1/mvXL8WPzLaHhkyjNlqoJcw== 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 DB6PR0401MB2247.eurprd04.prod.outlook.com (2603:10a6:4:49::24) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5186.14; Thu, 21 Apr 2022 06:26:22 +0000 Received: from HE1PR0402MB3497.eurprd04.prod.outlook.com ([fe80::9974:fd5e:e3c0:14dc]) by HE1PR0402MB3497.eurprd04.prod.outlook.com ([fe80::9974:fd5e:e3c0:14dc%3]) with mapi id 15.20.5186.014; Thu, 21 Apr 2022 06:26:22 +0000 From: Geliang Tang To: mptcp@lists.linux.dev CC: Geliang Tang Subject: [PATCH mptcp-next v7 1/3] mptcp: add bpf get_subflows helper Date: Thu, 21 Apr 2022 14:26:32 +0800 Message-ID: <85b34bc973f6f708aab67b5639e6dcbc9bde7d2d.1650522297.git.geliang.tang@suse.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: References: Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: HK2PR04CA0082.apcprd04.prod.outlook.com (2603:1096:202:15::26) 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: a6050748-9764-4a55-3305-08da235fdaad X-MS-TrafficTypeDiagnostic: DB6PR0401MB2247: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: y7yyGH4k7rdOGvkoh7GjP2WGq8w3YImo4Fc2HybkqnbpiSWN1TCaeNVMpQata0/cgp8dwuaNdLG21AXbmAJ5bPAwIPXPr2qMbtNsbHPq/67w+ak2FB4Ep/mqI7E99AgPsN1qrlbqte0EiLIf9o3YwWSXR7It0uwWWh/h/E3CIRKXF0t8aHVZ4vlNLj1uvoPkNKsfyPBKIPJe84Ba8CTzepxAZlksthxVHKxjWnkCaNB5SopSyGY7oMj+re26G39eLCKRfwewTZe0fAnoGYPeg6dlNUbPlkbroeumi3ayJ2oqq1m+AwEKRb9jX0PrWcKaubbbc6V8h3NbxO3km7nmLKls+jikqXYBjS+46Uhlcyy6zrysR0Df904t+xpVbeFx1s2FpMkF88iM6PhUt1AWqfRp/1eXCJOYAukPahcBgC7UG/pdjkrDQ6ebfCrE9zFDpbVEdPHmC2m0ZlF583wP+lEQ3TiJ+BdU2soDUxC13fl8oz1zZfQPA+2Tl85AHXRUKEltP/96yZEYubQaBPgSA/Ih7CTuFrFFrEmAA6f8CR67t5i4OPsT9CsJxdKxNn9RW62YYQNkfiYbwXr4YYYkWTLxiIHhzuKw02SkKzVYczn9SjoXQc2R58AlTwyfnNXRNO371p8gMLHPt2Aff23N1znjiBLTQbZI4WMUz/zZuNXZgv4qVRT1dHlIje2rq8zPTTMmBwz++bzrWKM7UcsUVA== 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)(5660300002)(86362001)(6506007)(8936002)(6666004)(316002)(508600001)(6486002)(66946007)(6916009)(66476007)(66556008)(38100700002)(4326008)(8676002)(186003)(107886003)(2616005)(26005)(6512007)(2906002)(44832011)(36756003)(83380400001)(13296009);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?6ZVDDRBfJzg1VyHklulP90ndfbBJri5luo6PsDm/Xj4piVHwdHrsqjYxD0sL?= =?us-ascii?Q?xce7y8RgjZb15rdVf1biysTuvpDXNv/X+ojSiilZjVFtBk+mCX5/CQ6WVI/0?= =?us-ascii?Q?37W1zQ6oVou9gPLU0dXEk9U3inbT6QCPyzbayL2hK3do2dhymqzXPPmIe42l?= =?us-ascii?Q?6KPMAxbJCHDnpEO77+d/YgEyCTj5qLCMNhFlnmAb5vDkchACaQb04NSBMCq/?= =?us-ascii?Q?Gj2zgsn1JyRzTJaXi/dfwvQn+qm4xoFaKD+tAuY0RE7RTbS4OxTsFJ/yTEiT?= =?us-ascii?Q?/HXHb/1xgkewvxgci2eFECBF4sCDBLGmY3eDK3gUYgGhPG16LlSrg3/2DW8y?= =?us-ascii?Q?GbhBI+m5fbFPTYRKvONaom7ygD/3EyPweT89BkTGQIfyUCYYACu3GGEmOVRc?= =?us-ascii?Q?xfP0lt9smMBeaz7z/Z8Am2moqE5T5Df6Xfea+sQnleTLCR2Uj6WEaX82Op7J?= =?us-ascii?Q?21Js+9isU5SubO6j/Sa6m2X2O14WhfpYY3Eiie8j4OIy7qe53gHPyo4g0KDI?= =?us-ascii?Q?cRBPMciA32UHm+9jHDpeZ61h9xIt3Qi5UJyEkCFf6W6XSOktWJak93JdrEwJ?= =?us-ascii?Q?6G0fjDxPyVl1eABzY1BCFmM0PjFNAAjbz6k3asjdwpySYO8inMhgmQ4xw+gT?= =?us-ascii?Q?VxopZGGETuNX3GBLQZ6YMNRNYqoyt4v7efopPCJSp60oQOs3jhGJog4Fbfwe?= =?us-ascii?Q?JYj8g21cQopDRoqr5qrMlk/AhACL04CZK90aejhqArSUmh2RQ1D2XLTOpWvZ?= =?us-ascii?Q?LpDxnDkWK8s/+MQE25k/BmgiVMQFg+vKm+e1fgyWuyeJzF9xBjL/h6RGfU7G?= =?us-ascii?Q?S8xD2zi1jhJ/2pm2p7lPy7R8ZkJsT6vdx1Ctq3IqLYhrlI+9FhdAD8xhwDiL?= =?us-ascii?Q?AVFkB7V0Jbh9kSVi+DhsRx1Pga3Vk4CcD5/3MRsmz2meAWx2zf7D6mkb+hKm?= =?us-ascii?Q?rPDEC1+FWX2aMwxs/d9tm6JZgR53lr0T45MZW8VJV6PxZfujuieA6gVs93gP?= =?us-ascii?Q?3ObaZH2gYxsfILFGJZsibCCCTaM5rVE6tFT6HSR9wlGV/QSqQAX0bRv46tFI?= =?us-ascii?Q?dJqAJuq0Sx+I/xatsXhFMstGf3Hu9yKd9esx3Oyg2ci5ZdqnnXpVS3PtGqS4?= =?us-ascii?Q?yXuL8ISITyxF6Ddv35BqdRQVTXIKPLA8U0KuiiF6hHaYPLpTgXAZ5ghPc9yZ?= =?us-ascii?Q?fFx2H5p7rJAj9sne7r0O5eRkqfpow3Zv5PnGZfDNnoS2vpEe6cK0lm0x82GQ?= =?us-ascii?Q?KX8v9GnVKysiP8nyNAfoo0PQeVIaS6Cq6jRp2xZ9MY2VfhFXElUrqj2u8nmr?= =?us-ascii?Q?ixxYbpaKHy0LGuNTVm0uvZIq8gCDAXYnjaBHJYux/cYPASQN+ZF4gTv19xA+?= =?us-ascii?Q?/Qnky6WdxbMpnrfDrxz85KtNvDgDaTbHwCk0ztUsndoHXM0vjfWZdxOPAdqX?= =?us-ascii?Q?OCzQf8A5frXmFsAuzKbL8cdnU4LV7WI9wAAFhridlTGVGDDk+q8QMwk2lZEJ?= =?us-ascii?Q?wegLY0jH7lMonV0V8LuQRnWNMXZiAgNKcIRGEPPwGYd9zaUw+PPRiWlMz+zb?= =?us-ascii?Q?ikgE/VjM95g65cXeps4EiVhejPU1CzXa1tobSl0sdYc5Znk8To04ORirkWrz?= =?us-ascii?Q?HbBOak9FVrP0iEvBR0mt3ZsQLZ6w/IiCFEwMYTch8kMx6ed4zES/4vnxNHRW?= =?us-ascii?Q?3YYw9BZWNy3D4tBzOMexLUUp8pzxJiXL0v6dlI9gea4jpjPc/b9FJx7Bq3XR?= =?us-ascii?Q?edvYYIWZvki9ruSAqT75/Sa5bHzRyBE=3D?= X-OriginatorOrg: suse.com X-MS-Exchange-CrossTenant-Network-Message-Id: a6050748-9764-4a55-3305-08da235fdaad X-MS-Exchange-CrossTenant-AuthSource: HE1PR0402MB3497.eurprd04.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 21 Apr 2022 06:26:22.7432 (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: nTpBp0VAQPFezU3QmG3pMqo0stDY9g26qVt+VOsNp+biNKsOrzACAm6N5sEVTRmYOD1MFG4C1Tlo7s/9v/BeXQ== X-MS-Exchange-Transport-CrossTenantHeadersStamped: DB6PR0401MB2247 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 1611dbe63eb2..b0b9376ffcee 100644 --- a/net/mptcp/bpf.c +++ b/net/mptcp/bpf.c @@ -157,6 +157,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)) @@ -165,3 +182,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 13c6ad5fbade..9eb15caa94f9 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 Thu Sep 18 08:11:41 2025 Delivered-To: wpasupplicant.patchew@gmail.com Received: by 2002:ac4:a898:0:b0:4b1:af33:c52d with SMTP id z24csp80361pid; Wed, 20 Apr 2022 23:26:36 -0700 (PDT) X-Google-Smtp-Source: ABdhPJwsqwhfcNjWtJAXO6mh429N6H7rwQmD4o/+viX26Z6P3aoFFLn0DWWPXztEeWa7VSl6SEiX X-Received: by 2002:a17:902:854c:b0:159:a70:deca with SMTP id d12-20020a170902854c00b001590a70decamr14919274plo.142.1650522396449; Wed, 20 Apr 2022 23:26:36 -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 n65-20020a632744000000b003aa6195a9f2si4345769pgn.121.2022.04.20.23.26.36 for (version=TLS1_2 cipher=ECDHE-ECDSA-AES128-GCM-SHA256 bits=128/128); Wed, 20 Apr 2022 23:26:36 -0700 (PDT) Received-SPF: pass (google.com: domain of mptcp+bounces-4830-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=PteyXTes; arc=fail (body hash mismatch); spf=pass (google.com: domain of mptcp+bounces-4830-wpasupplicant.patchew=gmail.com@lists.linux.dev designates 139.178.88.99 as permitted sender) smtp.mailfrom="mptcp+bounces-4830-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 16009280ACA for ; Thu, 21 Apr 2022 06:26:36 +0000 (UTC) Received: from localhost.localdomain (localhost.localdomain [127.0.0.1]) by smtp.subspace.kernel.org (Postfix) with ESMTP id 2F2A61FA1; Thu, 21 Apr 2022 06:26:35 +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 8C4A57A for ; Thu, 21 Apr 2022 06:26:33 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=suse.com; s=mimecast20200619; t=1650522391; 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=2dWZ8TyOk7AS7VsQ8o0D/Y9nAkmAK2FX4Qt2nYtJ1qE=; b=PteyXTesPUG1V/qh8T8tu2E8SfCN2Q+v2NHrgcPg4Ile+CH8iRtGyRqmf7JHqTzS/cnniB 4sihoLnKxtP5B54/grLOTjDvO40vWF2cIP4WeGKApxIr/7g7cG5kOgPgYl+NqpWU0lB4z+ DaC+biryU+pQrjSWy6HHHvORCv4HCJY= Received: from EUR05-AM6-obe.outbound.protection.outlook.com (mail-am6eur05lp2109.outbound.protection.outlook.com [104.47.18.109]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id de-mta-18-cBUr0dF0O7q6Fn0La5K2RA-1; Thu, 21 Apr 2022 08:26:30 +0200 X-MC-Unique: cBUr0dF0O7q6Fn0La5K2RA-1 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=PFuVQrW1jPQ+dHQy8qhpayWOlOEwN+0dw2JUHJZ+RQiT9qYRlOwSKZwIj81EYqY87kS0lkV57SJYBayOh7RrAC36SNfwjaq1Tfh7bz9Ry877b5pKlVLQRzImWfds+vLSibav8bulWKJEtZ+UH3dTXBTypNuehXrQVz1YfrxrWYjVL/fY7f0HRQNUeDPWlX305fVLeKQqvsmN7xcJ3rZCkLQMMeVOdtHjSGXrJVsyCEFGwkXQtH9LqwWaWlkmA0t3ekXOQu5PbrOX+axh2fKh3AA4Y53MVVnkTZp249LkGC1Q487XfqDgOgseJN8gDo72iTLvog5/mKk9JYumLG+drA== 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=++VDcAdr+YZ5M2T9P5qPKgkif88yOkkf9t2AOFqFTv4=; b=fmWyOc8NRVVP8aPhKJ2c7bBHPC26pEUxBjPd1WVJ9u+h2Q/OuPFXNgH65SzY2ffZ4nruoew9dWUViD4A83AGsMems4vgZNhQwpvsQryTnpsmYB3IhRXCzvrITte3qeAsmmK38eeJ+AKcatXgr9lPQdfaoVcD1EHzZnURGH2zc4oFpM6TJRuGVlYxst5pjVUr/v7ZGLhmpK/GJ6ndArxkeaQ3LDO2X5+TIM6+ro9evBAvD04CROou+aR6nWjHCgT4nrEb6vJY6ScspSZ4YdN9GDcDhdzV92nLsLU98NAtvngLPmXpxbP3sskf8BoLZDeZT1nfRakpzbgkzJ1Sf52OKw== 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 AM0PR04MB4290.eurprd04.prod.outlook.com (2603:10a6:208:59::20) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5186.15; Thu, 21 Apr 2022 06:26: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.014; Thu, 21 Apr 2022 06:26:29 +0000 From: Geliang Tang To: mptcp@lists.linux.dev CC: Geliang Tang Subject: [PATCH mptcp-next v7 2/3] selftests: bpf: add bpf_rr scheduler Date: Thu, 21 Apr 2022 14:26:33 +0800 Message-ID: X-Mailer: git-send-email 2.34.1 In-Reply-To: References: Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: HK0PR03CA0119.apcprd03.prod.outlook.com (2603:1096:203:b0::35) 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: 7f613904-ebaa-4416-7409-08da235fdef3 X-MS-TrafficTypeDiagnostic: AM0PR04MB4290: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: XtHyqScNMAZ25pqBOQuJaV0MW9EEjj0fFQTuXfORiSGoMJ1QUiyHPo6Cl7vuwZWqaVWsIeA5YSsX0dHpIO2Jys48F22uLrBy5G8tPMt4JSuzkfC+ut8hmM6uSrV3ur4+Txqj3JKBlQ/eZc2wsCiQzC/QN6UwIWi8oFucwV7p4jzCT3nt4g7ird5jPqxKFiwx1Tfey6jN2uBE9fG+ziaxUeMUqrxhwFOksNuUsKnhenuwTE0/5zFvzB0yW3MJoeLvcSW6+EStJH20gFzrhb11dxfHpvEfQ+QXJIJBXNoR3QmOxrWiwHPBEqZjiLY68D5ji6im3wQUkR9keFl/7OGvXN26ShPLnlR/CeqXn0Dxr6cvshJJWTqLGk4clHs/+S1sIexQ7GZ68WYn5Uy6JhSLvniWCv7JymdQ2x2aNL7K8t8iFYPS315WvOlZ3vdZdfb2zfjsKn8bn6/iCk4syOYC5tTVvPS82gcW3NhhgPu4cbIwLAoQEHDZtg4uZ7XXb0LZzf1Yaa+y8jCMMlO+sBiMZ6svTfkcsapF0UqAWD+8ncC7oAR0c89VqIm5nREuA7JNAywAy90gTEbVe2D82mfM8eNUz7owrud6s5dHFVwiQaa9iN5lMr67/rthxpR6cBwbyQ3g+wIFadvAeBP39wv+chMyd9sQDsmIEGbulVPmGCjlgMo14ZcX2qZ8kSvjmym56QWoeoUw/M5UriQ6pnr6Ig== 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)(5660300002)(8936002)(8676002)(66556008)(66946007)(66476007)(316002)(6916009)(44832011)(6486002)(6506007)(508600001)(36756003)(6666004)(4326008)(83380400001)(86362001)(6512007)(2906002)(38100700002)(107886003)(26005)(2616005)(186003)(13296009);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?vWzxXz5dR9xSn3UKmJHZa7kipMkLHefyw3ekq2Xg9kfHBKSI+4VZFWzbsBIn?= =?us-ascii?Q?uDrlV7QaPhRwyIjO82LHFEiRA7yH/6HNmye4b9+vJZOKOhEWCL9hMtnairnC?= =?us-ascii?Q?qG3I6hZoisndJjPrgfKbjXpZVFcuy930qOk4I6hhvjylbeE715lWTs18bt5Z?= =?us-ascii?Q?a4ZLPylkkldRQCMcwu3F1nG0b5BQocXbZNmfE99d3iUzadcx6ahJawuG2B4T?= =?us-ascii?Q?KmJnh5hB7JxwwZ929dvObt0bV/mnIkqpUTR8HMSC/PGJHxJROoOtmfOFrMI/?= =?us-ascii?Q?H70g2YUp04mo8tnzHJD9R2VlKalLjxAX7Jerlepm8wsnXOuAcNTPLIxWXUR4?= =?us-ascii?Q?YU21agYuxy0C88DJUZ/MS+Fb9OobsvafEK7uNyqBKoGxDXWwT+cUuWKQY52z?= =?us-ascii?Q?uauSFWFq98yXcJcPejtiUm/frwPB36EZQa8q3o+gY7EOqggw4vHVBg+LF9wR?= =?us-ascii?Q?D4U64Sb0+A5qzH0K6C/Cn0cRzYDZ8/kj5Sesy+MvpRDc/TUQxkxk0pwr4dq2?= =?us-ascii?Q?f3X4/4eZ5xp0YifnLvxc+G4xNk/W+RPS9bAb/3Y0spRbrWQyIjaTpXLN5Wp1?= =?us-ascii?Q?UhDwVGVZuVIs/Z2PNNTS2pelyCnQNkYgCF+1k9iOB5RphYNDbaj+alLoQ6Cu?= =?us-ascii?Q?LM5jM971WsR1br1w44EsjUNwJ88IyPq/mF3gfQdR48/u4y4W/0T0jAcD4zJU?= =?us-ascii?Q?3+v0bFxsrve58PnVe88CTvRmKoZyblFdUdyWucVqkR8L9CU4ACbF1UhZbVl/?= =?us-ascii?Q?BQXPPJAVJtGGfO/GVWQZDiqjlJFIaN8f2BHgq6Ydv/HE8zv1BPoIZrtevifq?= =?us-ascii?Q?ws5gZ5dvksCZElGzUCIQPFhy3ld1sRHLdU4QOS+hSeGA/uXVtuuLq+/EyboE?= =?us-ascii?Q?NqNhK3ZzgaubC5XGvv37NpHLAB6uZU7dfcQJDwBP5SS0wmyfTWthrMs7FvoR?= =?us-ascii?Q?WcfLjYsriLSduU8pdwZsJolx3u2wPIu5yMn5j5vhBQk3Iv98CftVfusUL9EN?= =?us-ascii?Q?4wIkM1BZAMujYFBo3DDLatM87jJJ6glgVk36HTkyC4TBGTA2ZDqMcJLiguY8?= =?us-ascii?Q?7ocJNBEpFgOFjEIGmxLxnxk3BIaEPw7LeO5tdL7j/QHStpn3PJdmGTm/0AKM?= =?us-ascii?Q?/ZLpEFj+38bpCOz0CDeG46MjUZytyM+r7SlpQiCg+suSCeb5a/4O+PaiIdr1?= =?us-ascii?Q?JTc4bOHnRzBEKw2/jd6lb6O3pNVupshqnmxPQe4L4WbGm13Km4rXDH9JaC+P?= =?us-ascii?Q?qc0bE/iH3uBu9qDDpr+TyMGDZE84f2VAE+eFD5Dq6PnSsFfafraRzE4fEHH4?= =?us-ascii?Q?ZIb60A0f0nnO2A48863WKJzFstldgF9+Wz51AKkC3LrLPYtTz/3Hlf6LIXay?= =?us-ascii?Q?2NaZaCWdKqux8+dAB9Es/Dx72qqZYNjRhY0t3JHItHh+E1vpQNF/EjxzVIkr?= =?us-ascii?Q?n+CDZJFVteZaqziUkr8NIpwfAMXz6kd8Y3nIQMKWB4VTDjKsNrsQVRyszYnF?= =?us-ascii?Q?8PYvyFEKC1BIlWcPQStekFvLNpVAVoZNcCdluzMvmGHWnizTpBWUjmHwZEmw?= =?us-ascii?Q?rvMPWSaIquFc8nLeb0mxs900Gdbwwnm1PS7mgeXwlgOVmT8O70nIC54JEWmS?= =?us-ascii?Q?n2fQjHa6BD+QwwaNuP5C4cFsutt63woMn8Zmn77Xz5Sico+VTvDr7OLhBR9t?= =?us-ascii?Q?5sYzgW7vD7G2G00hkd9sP/YTPmjro0OMTGVHNEWtnEK8bKk4/1a8oSSI3MaK?= =?us-ascii?Q?d6z/Tf57ghp3FxFtSdglpp+8CvyI/fE=3D?= X-OriginatorOrg: suse.com X-MS-Exchange-CrossTenant-Network-Message-Id: 7f613904-ebaa-4416-7409-08da235fdef3 X-MS-Exchange-CrossTenant-AuthSource: HE1PR0402MB3497.eurprd04.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 21 Apr 2022 06:26:29.7739 (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: sIcgzncTCxeMRP/YSeHFG7H2BDnsKPAKRqhlG12yEdP7zGRIAx4AkAURdQVYrknQjPcDE0G024pz2+TkFLiJGw== X-MS-Exchange-Transport-CrossTenantHeadersStamped: AM0PR04MB4290 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 | 54 +++++++++++++++++++ 2 files changed, 66 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 dacee63455f5..1301da334028 100644 --- a/tools/testing/selftests/bpf/bpf_mptcp_helpers.h +++ b/tools/testing/selftests/bpf/bpf_mptcp_helpers.h @@ -28,4 +28,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..92820a6f0cdf --- /dev/null +++ b/tools/testing/selftests/bpf/progs/mptcp_bpf_rr.c @@ -0,0 +1,54 @@ +// 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 reinject) +{ + 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->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 Thu Sep 18 08:11:41 2025 Delivered-To: wpasupplicant.patchew@gmail.com Received: by 2002:ac4:a898:0:b0:4b1:af33:c52d with SMTP id z24csp80384pid; Wed, 20 Apr 2022 23:26:46 -0700 (PDT) X-Google-Smtp-Source: ABdhPJyCkOFo9d40LrfqS+qsXQvZIRNUcIFs418V+RJgHqFPjeLHvMVmXLvOlswSZOHqoY+SAH4x X-Received: by 2002:a05:6512:4cf:b0:46f:b2e4:5c67 with SMTP id w15-20020a05651204cf00b0046fb2e45c67mr17278855lfq.348.1650522406667; Wed, 20 Apr 2022 23:26:46 -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 m11-20020a2e97cb000000b0024952f7bbf2si3761602ljj.333.2022.04.20.23.26.46 for (version=TLS1_2 cipher=ECDHE-ECDSA-AES128-GCM-SHA256 bits=128/128); Wed, 20 Apr 2022 23:26:46 -0700 (PDT) Received-SPF: pass (google.com: domain of mptcp+bounces-4831-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=EzRILEm1; arc=fail (body hash mismatch); spf=pass (google.com: domain of mptcp+bounces-4831-wpasupplicant.patchew=gmail.com@lists.linux.dev designates 139.178.84.19 as permitted sender) smtp.mailfrom="mptcp+bounces-4831-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 F29B82E0CBD for ; Thu, 21 Apr 2022 06:26:43 +0000 (UTC) Received: from localhost.localdomain (localhost.localdomain [127.0.0.1]) by smtp.subspace.kernel.org (Postfix) with ESMTP id 974FA1FA1; Thu, 21 Apr 2022 06:26:42 +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 CC7117A for ; Thu, 21 Apr 2022 06:26:40 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=suse.com; s=mimecast20200619; t=1650522399; 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=EzRILEm1X4zgaRxyusniw5+W5XpKgJ3qs8wmyTzEmBJaZ/uPFonqNDyr6EIvjqJpxfNe+7 xp8iBdmmE5lHAwmXb/nqe01WXktZma6TwugjGuwK6ECM5wMcsKoHghK8c0kEMZV6gWKc5c O8KYR5aX0roZS9QvXPXwsyQRwN2hC0w= Received: from EUR05-DB8-obe.outbound.protection.outlook.com (mail-db8eur05lp2112.outbound.protection.outlook.com [104.47.17.112]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id de-mta-2-j5Hgen8dPCWOA9-KvwnOcA-1; Thu, 21 Apr 2022 08:26:38 +0200 X-MC-Unique: j5Hgen8dPCWOA9-KvwnOcA-1 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=VawV1tAIrGoUnc93Wuc2eBKc5I4xff4O7paSxjJaz1/ccc6+un8G2Bmb+zMYdc40MSfjnBmlCNKNuOJIVTftRmZlQvcPrq6KYm/XGTfdoJjnEa5VcKJg4a4StCmPB7AQm08mBb2r1uh/xYVKdDfcuXrLh9n3iKuyqE0YrZOaLD5n7U1SnoeMvCbcQ5LMgfn4dcFHlAMSXiTkgHgc2304hIHCSP17R+Rw1FKVmDV58B6N0NV6lakrxgr9bfIwjBTUdfLTmq4Ou7PABV3RcLlySrgBF94qM1RhoYHpFItaIU8Dnv/UhU7dR2c/xE0j5HAbaAFa/0xoDdn0I4CA2C4kDQ== 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=OXMPV6tpMkWrfJ+uo+BuThJgtg5BllpnS7O4N0cDxMjxZHwLCO1x4zAtzcg7cs7V/pREw/hqKSEPSFz2EIMx9zfhgg0RdhCp4TpJhZ6+bK6eSOv7DB7pt7zBRgyTyUofKtngn03V3TvWXxH4fqI9XuVaqdQe21BkJtR9DHQUb3ttnl8kvNWGOtbtWFd4JBoc2zeCI6mSOUs6RwMEK9QmQw4kISW95k4x/cLxnK60Wf8kwwNAe7f3vjtZ7j8z3cUuWYYmZsJV8FBvsS284zTiwHfhix1E2LYehqYNefxXT/MsQEmHG34c2mZXfLkLBq8hmZoocB0eAs0flrix1E3zyA== 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 VI1PR04MB5855.eurprd04.prod.outlook.com (2603:10a6:803:de::15) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5164.20; Thu, 21 Apr 2022 06:26:37 +0000 Received: from HE1PR0402MB3497.eurprd04.prod.outlook.com ([fe80::9974:fd5e:e3c0:14dc]) by HE1PR0402MB3497.eurprd04.prod.outlook.com ([fe80::9974:fd5e:e3c0:14dc%3]) with mapi id 15.20.5186.014; Thu, 21 Apr 2022 06:26:37 +0000 From: Geliang Tang To: mptcp@lists.linux.dev CC: Geliang Tang Subject: [PATCH mptcp-next v7 3/3] selftests: bpf: add bpf_rr test Date: Thu, 21 Apr 2022 14:26:34 +0800 Message-ID: <9656f5b4ef6b38e18264e250c1ada42774eb0961.1650522297.git.geliang.tang@suse.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: References: Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: HK2PR03CA0063.apcprd03.prod.outlook.com (2603:1096:202:17::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: 81b05bd1-66a8-4e3a-04e8-08da235fe329 X-MS-TrafficTypeDiagnostic: VI1PR04MB5855: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: 4dn62MvXBNpBWNzl3R9OxH7HlIXCKzXaur5gzCXGH670Peaead4jcMEofXy44/3pENxwCAEMev8pL/Mg135t9VWqWAkX6nfBPf427qMX1AnZ9Ue86uyV4YvaTMHwNJ9vOKe0lbvCOSu+g6EiuxhV2GsD2m/04XRmitRy3J+JjCqzEGopqz6kVYIIGg1PpSQ54z1Qo327aLuLDJKIoCjf3J/Iikv86Ie0y8R5APnCMM5tB1V4CGEf7sXl14MivUGxZjlMs0k7eDb+ed7Uq42tuuNiwdmKaY/xfd7X5xnPnQfnJKyZ3Yb6CtR2Rvq1nQ39AJh7OCmjjRZV0V6bdalr0Jk5+Dkic3bF8MTO+c2c+7ey7UyXXLc8tWQZm/Glp5FglBZWa9YNULnmWbpwo9Stk7Nn0ZSaxEXNndfa8dePfe/0+yVs0ztJsbaa/XtnjapcCuwoDNlZoRQiILwChT+OEioq1VTfsysd4bo8STJtJhQVJwZSSdKNHbu8ypw3CvSBymksUQTSMpPCnE35a5BkZqmpVje+CuJ5BGV7tvwTH2X6TGwFduiq9EI38GTpTydqeCCiG1/R+HUmVRQQuWRSbpe/GRkmnfwmYX+ygJgOjYa4E61WV60QlyEG6yzKcMqi7DLt2UDJDkcgpv5z78+mleFmc1UB/1QaiDQr1WPrMDuumhnZK0CAewlhryo5HwoL 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)(5660300002)(4326008)(186003)(38100700002)(508600001)(66946007)(8676002)(6916009)(6486002)(2616005)(316002)(86362001)(66476007)(2906002)(26005)(66556008)(83380400001)(6666004)(107886003)(6506007)(44832011)(6512007)(8936002)(36756003)(13296009);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?gqNikqVVpMIGCUsI+4NaVr5WWUkw3ufNoDwCNRS7Zts3W2HwgOTvR6QO7jDK?= =?us-ascii?Q?0adydT2tXkDTg4P21Y+kYXSJ2P0bgYeSLlysRZ5RjuCZxxGEXuvJwwAy1evc?= =?us-ascii?Q?tZtnV7aGkgnk5Wft/AddosiXaAFdbXhPeWEtaH/gmg0yXtEREP2Zy9xlXft5?= =?us-ascii?Q?IqaLMqZBvLPkaO8V2x122jvN0ykHpIaZXrGHYOe9pQ+tVPfIIqRzDBcET4BM?= =?us-ascii?Q?nE4qw/+4aBNF2VIV8TKHwMExgjI6tH2zNbsgopQcK66ZpChiQE0dIDLlcpI2?= =?us-ascii?Q?OU9D5tCaUb8aGJ1tv5pFgcTUHZ2xOXEyyk++IWrQaR04Pu231HmIj1cTd9Fo?= =?us-ascii?Q?67nZFIxHzbC0APBNBPPARlJHr8OFAxXU+sBbUgnj4ye+H491gKuosS2cbEmB?= =?us-ascii?Q?sehKzwYevg0rHQxUjS/5QY2yyOOsx3N3A9rzfMEkAZySP4xc8k1d38z3GDet?= =?us-ascii?Q?XXgtVUzbXh+xHtW6d4yY9Tw1js0eIiBhWFmcGZe6k8cJREAfaIZiyzYYK+XF?= =?us-ascii?Q?EacoxPQNtS7Ou0xsrU4Tc/21pgESXmwNzQMMMcvsJ4yuHsmeKmP4YQk3NtSn?= =?us-ascii?Q?toK87KKbfKOpeMfGrrWfu2i3W/tcQaiJjf85cLa5HOgclU8uXEeAXxahcDqo?= =?us-ascii?Q?TdcV2z3cuWrJTSopBW6hcxgHP7QLUFpFvwooLihSPMVWFpGRzPfzxVNJhu6o?= =?us-ascii?Q?pe1gFTSk7XY1oj+PA6z3pV87XWgyusc5qKLrTPW6As4W8YW25hdc7I+qTlAk?= =?us-ascii?Q?FSzv7YjUOXN1KXmzLm+CVNfvgL9GCOCpsfmuCi8YK1sl4QOhA/yPoulvHCkQ?= =?us-ascii?Q?n1RvNz3MupdmSNjGUSynKuMhkhTZXoITQlnNklXY0Xi1kmYJAxpyt2QB3Vup?= =?us-ascii?Q?f+8oq7zk2siKAgFUKKoXXnoaBtQt9EjITLOsXkrA3caSS2N35zAeiZ9EciOo?= =?us-ascii?Q?snd06RcteChjJHoI0Mgiz+UDgEyc2vOb4z2uHoN1//dtq26EyZBPcr6crUoo?= =?us-ascii?Q?GrQwv2qZ5df3sGSohXHYC0B4FNqStZEpZSBkKbXGyywkSLQU/1NxZA+O4NqX?= =?us-ascii?Q?sqCzdu5Sg3tZDyt0po3iPnmXSfUMI1VYYykVKHZWGCVWuAlMlQ9yYbuvwqtG?= =?us-ascii?Q?yFaH39m4z5iQoVop2I1Iqvh+ibtHF5Z/VEk5Yt8uLlKVzMWxJEG8LcgCpz/W?= =?us-ascii?Q?MjXlka10namsPkvdh54UfgE9Yn9YIVkp/aHuAEeIX+rI4FWVS1FYpzdnx5U0?= =?us-ascii?Q?DGORJ6KKRip+Oq1bZkR7p9IRdN6egbfxDnSLV9an6f3ebzCWYRtBKf8Xi5jt?= =?us-ascii?Q?ynVohHrbjA6NR7u2BFSqXy7QUVGb7ND6PE5ZHbvdbul76lT6IuuETnvNZbvx?= =?us-ascii?Q?j8/OPWqBRqgdLc5cIGaMi846O/gerVmmVsOoKpSKTJCd7ogXZ8uv4YPbcG/c?= =?us-ascii?Q?nuFeApDWy71JWRG/TyFA6RRtqtnAY1TYn0ftNZTeZOQQ20K+sxJtvKf0pVYG?= =?us-ascii?Q?wpySs3mc6sM9gl2g3olvcKxFZzkKUVkrEliNwePUOHEL2sP4IeWK8TuWoLy0?= =?us-ascii?Q?BzkwKzT4Hn3IXrtu0rwffDeASJ56bJ7MV/q6L5MCvaTQlHHoAd7LR1/z3+2p?= =?us-ascii?Q?1di7RK20ODpmY4BLx52XVD37BtJjnwFA43D1JoxyqPS8cr4IlRit0IHfHWHr?= =?us-ascii?Q?8FwY6rcL5Idiru3RK6WHT71RRJd0gmfzkIWFQP2Q/G3x2DfPbLF/b0CWS1zU?= =?us-ascii?Q?R3zADfFboXkos6k+FpFuOiUruVXOooQ=3D?= X-OriginatorOrg: suse.com X-MS-Exchange-CrossTenant-Network-Message-Id: 81b05bd1-66a8-4e3a-04e8-08da235fe329 X-MS-Exchange-CrossTenant-AuthSource: HE1PR0402MB3497.eurprd04.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 21 Apr 2022 06:26:36.9452 (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: piEofr2dw3IlWK0uhBnqdLn4IueghiAL7MgJkXTtBRzLEPO72XVHYUqp4e9sJJMg/pzE/ovo7LIz+ruRa5oZHw== X-MS-Exchange-Transport-CrossTenantHeadersStamped: VI1PR04MB5855 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