From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mails.dpdk.org (mails.dpdk.org [217.70.189.124]) by inbox.dpdk.org (Postfix) with ESMTP id 2B042439BB; Thu, 25 Jan 2024 06:28:44 +0100 (CET) Received: from mails.dpdk.org (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id E7AD04029B; Thu, 25 Jan 2024 06:28:43 +0100 (CET) Received: from mx0b-0016f401.pphosted.com (mx0a-0016f401.pphosted.com [67.231.148.174]) by mails.dpdk.org (Postfix) with ESMTP id 4521D4027B for ; Thu, 25 Jan 2024 06:28:42 +0100 (CET) Received: from pps.filterd (m0045849.ppops.net [127.0.0.1]) by mx0a-0016f401.pphosted.com (8.17.1.24/8.17.1.24) with ESMTP id 40P5MQhX001542; Wed, 24 Jan 2024 21:28:36 -0800 Received: from nam10-mw2-obe.outbound.protection.outlook.com (mail-mw2nam10lp2101.outbound.protection.outlook.com [104.47.55.101]) by mx0a-0016f401.pphosted.com (PPS) with ESMTPS id 3vuhehr0e4-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Wed, 24 Jan 2024 21:28:36 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=TiwvPc+gw3+r/6WfolHnF+HdlYZUBmxXGjWeHujzqV7gmWuiBdXmn/Fcq49TH1I5xkf85qvkh4YTouSyRPgUNOORPjp4QXQTeMLXgq89VpJW6+3Xhjrm52Lr6ooCPodCHC8MH26xKPfVIDKwtfXpusM7g4a00NSQ9BMIskLv0VrngDi3RUNo/dKN1yRUjROLtRu9Z8jP0K5Szm47YxDeba965sWSFQt3OS9SPytFmMskzB1Nc1EHqACO0oGz0yKJdge+Jno9O8z+FXRmMcnqUYBrrViKM1z6QUmVJ1FSQAwCxK5t+YkA5q+ut9Wc3pCpZSvWBBo3RKR8xvpZcO4/rg== 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=P/Xe7P6incU4z70UWxMPjslkIw0dc+3fB4ZO2u3ff60=; b=ULDRJny8XKk7l2zz+XGBRp5cGA9W+ZQqh8AbVZxAcugwuuTJoYPdhJxeQkNAahJ74lVSL0E24Df+jNna/wzRI97ASuE4UOt/HLu5zNhQHeDPWBwvkGZu0iWn4ee3HWnaUdJMlLFLxsCy84VC+LQs/fASbavw9UUYwnGLUPY0kaq8c+pwTSsWE4pcwO+cX0b9mqjlayH6y8YDYiv2q/RIsIbmkW1pYwLY51KRZZzkubYuJCD4Rrck804nAIzKvht7jb2wPk3evQiBZC8ZV616JFIyNt7S7v1rE8yrII1UxsiZ4juln0kASa/RDNv0EJLBvBK53SqWYJX9CrLhz7LP5A== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=marvell.com; dmarc=pass action=none header.from=marvell.com; dkim=pass header.d=marvell.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=marvell.onmicrosoft.com; s=selector1-marvell-onmicrosoft-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=P/Xe7P6incU4z70UWxMPjslkIw0dc+3fB4ZO2u3ff60=; b=secgYCsWt3u3TMke5LxPf+IjJz0wLvGQY2zdterq4qG/wEqVrPh9sTWuWNMXOirdqI5jH2mAFRaFZpMhQgVsWP+Kq4w3+T+Q7jiARbwEd0Ar1AZkHMy1wsQG1D/H7PTl2t/osNh4Oy4XvWXox2UyQeeSPKXEWTvatnd9pyOUuUM= Received: from BN9PR18MB4204.namprd18.prod.outlook.com (2603:10b6:408:119::18) by SA3PR18MB5555.namprd18.prod.outlook.com (2603:10b6:806:37d::9) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.7228.22; Thu, 25 Jan 2024 05:28:33 +0000 Received: from BN9PR18MB4204.namprd18.prod.outlook.com ([fe80::b76:2b5e:4c9:ea55]) by BN9PR18MB4204.namprd18.prod.outlook.com ([fe80::b76:2b5e:4c9:ea55%7]) with mapi id 15.20.7249.013; Thu, 25 Jan 2024 05:28:33 +0000 From: Harman Kalra To: Harman Kalra , "dev@dpdk.org" , Thomas Monjalon , Ferruh Yigit , Andrew Rybchenko , Ajit Khaparde , Somnath Kotur , John Daley , Hyong Youb Kim , Yuying Zhang , Beilei Xing , Qiming Yang , Qi Zhang , Wenjun Wu , Dariusz Sosnowski , Viacheslav Ovsiienko , Ori Kam , Suanming Mou , Matan Azrad , Chaoyong He Subject: RE: [PATCH v4 1/1] ethdev: parsing multiple representor devargs string Thread-Topic: [PATCH v4 1/1] ethdev: parsing multiple representor devargs string Thread-Index: AQHaTJ6/VD0KDwD0z0SGWOq/9OwyrrDqBS4w Date: Thu, 25 Jan 2024 05:28:32 +0000 Message-ID: References: <20240111064432.193119-1-hkalra@marvell.com> <20240121191908.156149-1-hkalra@marvell.com> <20240121191908.156149-2-hkalra@marvell.com> In-Reply-To: <20240121191908.156149-2-hkalra@marvell.com> Accept-Language: en-GB, en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: x-dg-ref: =?us-ascii?Q?PG1ldGE+PGF0IG5tPSJib2R5LnR4dCIgcD0iYzpcdXNlcnNcaGthbHJhXGFw?= =?us-ascii?Q?cGRhdGFccm9hbWluZ1wwOWQ4NDliNi0zMmQzLTRhNDAtODVlZS02Yjg0YmEy?= =?us-ascii?Q?OWUzNWJcbXNnc1xtc2ctOTI1N2RhMjgtYmI0Mi0xMWVlLWJmMjQtY2MxNTMx?= =?us-ascii?Q?MTRiZDQxXGFtZS10ZXN0XDkyNTdkYTJhLWJiNDItMTFlZS1iZjI0LWNjMTUz?= =?us-ascii?Q?MTE0YmQ0MWJvZHkudHh0IiBzej0iMzEwMjAiIHQ9IjEzMzUwNjM0MTEwMjgw?= =?us-ascii?Q?ODQ2OSIgaD0iWDdpQXpqQVY2NjY5d0ZGOEJFck16TElsZVlnPSIgaWQ9IiIg?= =?us-ascii?Q?Ymw9IjAiIGJvPSIxIiBjaT0iY0FBQUFFUkhVMVJTUlVGTkNnVUFBQmdXQUFD?= =?us-ascii?Q?VjdiRlVUMC9hQVU1QmREd3ZvNlhJVGtGMFBDK2pwY2daQUFBQUFBQUFBQUFB?= =?us-ascii?Q?QUFBQUFBQUFBQUFBQUhBQUFBQnVEd0FBM2c4QUFEb0dBQUFBQUFBQUFBQUFB?= =?us-ascii?Q?QUVBQVFFQkFBQUE5UmVuTHdDQUFRQUFBQUFBQUFBQUFKNEFBQUJoQUdRQVpB?= =?us-ascii?Q?QnlBR1VBY3dCekFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFB?= =?us-ascii?Q?QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFB?= =?us-ascii?Q?QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFB?= =?us-ascii?Q?QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFB?= =?us-ascii?Q?RUFBQUFBQUFBQUFnQUFBQUFBbmdBQUFHTUFkUUJ6QUhRQWJ3QnRBRjhBY0FC?= =?us-ascii?Q?bEFISUFjd0J2QUc0QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFB?= =?us-ascii?Q?QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFB?= =?us-ascii?Q?QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFB?= =?us-ascii?Q?QUFBQUFBQUFBQUFBQUFBUUFBQUFBQUFBQUFBQUFBQVFBQUFBQUFBQUFDQUFB?= =?us-ascii?Q?QUFBQ2VBQUFBWXdCMUFITUFkQUJ2QUcwQVh3QndBR2dBYndCdUFHVUFiZ0Ix?= =?us-ascii?Q?QUcwQVlnQmxBSElBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFB?= =?us-ascii?Q?QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFB?= =?us-ascii?Q?QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFB?= =?us-ascii?Q?QUFBQUFBQUFBQUFBQUFBQUJBQUFBQUFBQUFBSUFBQUFBQUo0QUFBQmpBSFVB?= =?us-ascii?Q?Y3dCMEFHOEFiUUJmQUhNQWN3QnVBRjhBWkFCaEFITUFhQUJmQUhZQU1BQXlB?= =?us-ascii?Q?QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFB?= x-dg-rorf: true x-dg-refone: =?us-ascii?Q?QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFB?= =?us-ascii?Q?QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFB?= =?us-ascii?Q?QUFBQUFBQUFBQUFBQUFBQUFBQUFFQUFBQUFBQUFBQWdBQUFBQUFuZ0FBQUdN?= =?us-ascii?Q?QWRRQnpBSFFBYndCdEFGOEFjd0J6QUc0QVh3QnJBR1VBZVFCM0FHOEFjZ0Jr?= =?us-ascii?Q?QUhNQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFB?= =?us-ascii?Q?QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFB?= =?us-ascii?Q?QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFB?= =?us-ascii?Q?QUFBQUFBUUFBQUFBQUFBQUNBQUFBQUFDZUFBQUFZd0IxQUhNQWRBQnZBRzBB?= =?us-ascii?Q?WHdCekFITUFiZ0JmQUc0QWJ3QmtBR1VBYkFCcEFHMEFhUUIwQUdVQWNnQmZB?= =?us-ascii?Q?SFlBTUFBeUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFB?= =?us-ascii?Q?QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFB?= =?us-ascii?Q?QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQkFBQUFBQUFB?= =?us-ascii?Q?QUFJQUFBQUFBSjRBQUFCakFIVUFjd0IwQUc4QWJRQmZBSE1BY3dCdUFGOEFj?= =?us-ascii?Q?d0J3QUdFQVl3QmxBRjhBZGdBd0FESUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFB?= =?us-ascii?Q?QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFB?= =?us-ascii?Q?QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFB?= =?us-ascii?Q?QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUVBQUFBQUFBQUFBZ0FBQUFBQW5nQUFB?= =?us-ascii?Q?R1FBYkFCd0FGOEFjd0JyQUhrQWNBQmxBRjhBWXdCb0FHRUFkQUJmQUcwQVpR?= =?us-ascii?Q?QnpBSE1BWVFCbkFHVUFYd0IyQURBQU1nQUFBQUFBQUFBQUFBQUFBQUFBQUFB?= =?us-ascii?Q?QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFB?= =?us-ascii?Q?QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFB?= =?us-ascii?Q?QUFBQUFBQUFRQUFBQUFBQUFBQ0FBQUFBQUNlQUFBQVpBQnNBSEFBWHdCekFH?= =?us-ascii?Q?d0FZUUJqQUdzQVh3QmpBR2dBWVFCMEFGOEFiUUJsQUhNQWN3QmhBR2NBWlFB?= =?us-ascii?Q?QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFB?= =?us-ascii?Q?QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFB?= =?us-ascii?Q?QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFB?= x-dg-reftwo: =?us-ascii?Q?QUFBQUFBQUFBQUFCQUFBQUFBQUFBQUlBQUFBQUFKNEFBQUJrQUd3QWNBQmZB?= =?us-ascii?Q?SFFBWlFCaEFHMEFjd0JmQUc4QWJnQmxBR1FBY2dCcEFIWUFaUUJmQUdZQWFR?= =?us-ascii?Q?QnNBR1VBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFB?= =?us-ascii?Q?QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFB?= =?us-ascii?Q?QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBRUFB?= =?us-ascii?Q?QUFBQUFBQUFnQUFBQUFBbmdBQUFHVUFiUUJoQUdrQWJBQmZBR0VBWkFCa0FI?= =?us-ascii?Q?SUFaUUJ6QUhNQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFB?= =?us-ascii?Q?QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFB?= =?us-ascii?Q?QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFB?= =?us-ascii?Q?QUFBQUFBQUFBQUFGUUFBQUFBQUFBQUFBQUFBQVFBQUFBQUFBQUFDQUFBQUFB?= =?us-ascii?Q?Q2VBQUFBYlFCaEFISUFkZ0JsQUd3QVh3QndBSElBYndCcUFHVUFZd0IwQUY4?= =?us-ascii?Q?QWJnQmhBRzBBWlFCekFGOEFZd0J2QUc0QVpnQnBBR1FBWlFCdUFIUUFhUUJo?= =?us-ascii?Q?QUd3QVh3QmhBR3dBYndCdUFHVUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFB?= =?us-ascii?Q?QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFB?= =?us-ascii?Q?QUFBQUFBQUFBQUFBQUJBQUFBQUFBQUFBSUFBQUFBQUo0QUFBQnRBR0VBY2dC?= =?us-ascii?Q?MkFHVUFiQUJmQUhBQWNnQnZBR29BWlFCakFIUUFYd0J1QUdFQWJRQmxBSE1B?= =?us-ascii?Q?WHdCeUFHVUFjd0IwQUhJQWFRQmpBSFFBWlFCa0FGOEFZUUJzQUc4QWJnQmxB?= =?us-ascii?Q?QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFB?= =?us-ascii?Q?QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFF?= =?us-ascii?Q?QUFBQUFBQUFBQWdBQUFBQUFuZ0FBQUcwQVlRQnlBSFlBWlFCc0FGOEFjQUJ5?= =?us-ascii?Q?QUc4QWFnQmxBR01BZEFCZkFHNEFZUUJ0QUdVQWN3QmZBSElBWlFCekFIUUFj?= =?us-ascii?Q?Z0JwQUdNQWRBQmxBR1FBWHdCb0FHVUFlQUJqQUc4QVpBQmxBSE1BQUFBQUFB?= =?us-ascii?Q?QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFB?= =?us-ascii?Q?QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBUUFBQUFBQUFBQUNBQUFB?= =?us-ascii?Q?QUFDZUFBQUFiUUJoQUhJQWRnQmxBR3dBYkFCZkFHRUFjZ0J0QUFBQUFBQUFB?= =?us-ascii?Q?QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFB?= x-dg-refthree: =?us-ascii?Q?QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFB?= =?us-ascii?Q?QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFB?= =?us-ascii?Q?QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQkFBQUFBQUFBQUFJ?= =?us-ascii?Q?QUFBQUFBSjRBQUFCdEFHRUFjZ0IyQUdVQWJBQnNBRjhBWndCdkFHOEFad0Jz?= =?us-ascii?Q?QUdVQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFB?= =?us-ascii?Q?QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFB?= =?us-ascii?Q?QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFB?= =?us-ascii?Q?QUFBQUFBQUFBQUFBQUFBQUFBQUVBQUFBQUFBQUFBZ0FBQUFBQW5nQUFBRzBB?= =?us-ascii?Q?WVFCeUFIWUFaUUJzQUd3QVh3QndBSElBYndCcUFHVUFZd0IwQUY4QVl3QnZB?= =?us-ascii?Q?R1FBWlFCekFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFB?= =?us-ascii?Q?QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFB?= =?us-ascii?Q?QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFB?= =?us-ascii?Q?QUFBQUFRQUFBQUFBQUFBQ0FBQUFBQUNlQUFBQWJRQmhBSElBZGdCbEFHd0Fi?= =?us-ascii?Q?QUJmQUhBQWNnQnZBR29BWlFCakFIUUFYd0JqQUc4QVpBQmxBSE1BWHdCa0FH?= =?us-ascii?Q?a0FZd0IwQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFB?= =?us-ascii?Q?QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFB?= =?us-ascii?Q?QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFCQUFBQUFBQUFB?= =?us-ascii?Q?QUlBQUFBQUFKNEFBQUJ0QUdFQWNnQjJBR1VBYkFCc0FGOEFjQUJ5QUc4QWFn?= =?us-ascii?Q?QmxBR01BZEFCZkFHNEFZUUJ0QUdVQWN3QmZBR01BYndCdUFHWUFhUUJrQUdV?= =?us-ascii?Q?QWJnQjBBR2tBWVFCc0FGOEFiUUJoQUhJQWRnQmxBR3dBYkFBQUFBQUFBQUFB?= =?us-ascii?Q?QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFB?= =?us-ascii?Q?QUFBQUFBQUFBQUFBQUFBQUFBQUFBRUFBQUFBQUFBQUFnQUFBQUFBbmdBQUFH?= =?us-ascii?Q?MEFZUUJ5QUhZQVpRQnNBR3dBWHdCd0FISUFid0JxQUdVQVl3QjBBRjhBYmdC?= =?us-ascii?Q?aEFHMEFaUUJ6QUY4QVl3QnZBRzRBWmdCcEFHUUFaUUJ1QUhRQWFRQmhBR3dB?= =?us-ascii?Q?WHdCdEFHRUFjZ0IyQUdVQWJBQnNBRjhBYndCeUFGOEFZUUJ5QUcwQUFBQUFB?= =?us-ascii?Q?QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFB?= x-dg-reffour: =?us-ascii?Q?QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQVFBQUFBQUFBQUFDQUFBQUFBQ2VB?= =?us-ascii?Q?QUFBYlFCaEFISUFkZ0JsQUd3QWJBQmZBSEFBY2dCdkFHb0FaUUJqQUhRQVh3?= =?us-ascii?Q?QnVBR0VBYlFCbEFITUFYd0JqQUc4QWJnQm1BR2tBWkFCbEFHNEFkQUJwQUdF?= =?us-ascii?Q?QWJBQmZBRzBBWVFCeUFIWUFaUUJzQUd3QVh3QnZBSElBWHdCbkFHOEFid0Ju?= =?us-ascii?Q?QUd3QVpRQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFB?= =?us-ascii?Q?QUFBQUFBQUFBQUJBQUFBQUFBQUFBSUFBQUFBQUo0QUFBQnRBR0VBY2dCMkFH?= =?us-ascii?Q?VUFiQUJzQUY4QWNBQnlBRzhBYWdCbEFHTUFkQUJmQUc0QVlRQnRBR1VBY3dC?= =?us-ascii?Q?ZkFISUFaUUJ6QUhRQWNnQnBBR01BZEFCbEFHUUFYd0J0QUdFQWNnQjJBR1VB?= =?us-ascii?Q?YkFCc0FBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFB?= =?us-ascii?Q?QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFFQUFB?= =?us-ascii?Q?QUFBQUFBQWdBQUFBQUFuZ0FBQUcwQVlRQnlBSFlBWlFCc0FHd0FYd0J3QUhJ?= =?us-ascii?Q?QWJ3QnFBR1VBWXdCMEFGOEFiZ0JoQUcwQVpRQnpBRjhBY2dCbEFITUFkQUJ5?= =?us-ascii?Q?QUdrQVl3QjBBR1VBWkFCZkFHMEFZUUJ5QUhZQVpRQnNBR3dBWHdCdkFISUFY?= =?us-ascii?Q?d0JoQUhJQWJRQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFB?= =?us-ascii?Q?QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBUUFBQUFBQUFBQUNBQUFBQUFD?= =?us-ascii?Q?ZUFBQUFiUUJoQUhJQWRnQmxBR3dBYkFCZkFIUUFaUUJ5QUcwQWFRQnVBSFVB?= =?us-ascii?Q?Y3dBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFB?= =?us-ascii?Q?QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFB?= =?us-ascii?Q?QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFB?= =?us-ascii?Q?QUFBQUFBQUFBQUFBQkFBQUFBQUFBQUFJQUFBQUFBSjRBQUFCdEFHRUFjZ0Iy?= =?us-ascii?Q?QUdVQWJBQnNBRjhBZHdCdkFISUFaQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFB?= =?us-ascii?Q?QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFB?= =?us-ascii?Q?QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFB?= =?us-ascii?Q?QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUVB?= =?us-ascii?Q?QUFBQUFBQUFBZ0FBQUFBQU9nWUFBQUFBQUFBSUFBQUFBQUFBQUFnQUFBQUFB?= =?us-ascii?Q?QUFBQ0FBQUFBQUFBQUFhQmdBQUdRQUFBQmdB?= x-dg-reffive: =?us-ascii?Q?QUFBQUFBQUFZUUJrQUdRQWNnQmxBSE1BY3dBQUFDUUFBQUFCQUFBQVl3QjFB?= =?us-ascii?Q?SE1BZEFCdkFHMEFYd0J3QUdVQWNnQnpBRzhBYmdBQUFDNEFBQUFBQUFBQVl3?= =?us-ascii?Q?QjFBSE1BZEFCdkFHMEFYd0J3QUdnQWJ3QnVBR1VBYmdCMUFHMEFZZ0JsQUhJ?= =?us-ascii?Q?QUFBQXdBQUFBQUFBQUFHTUFkUUJ6QUhRQWJ3QnRBRjhBY3dCekFHNEFYd0Jr?= =?us-ascii?Q?QUdFQWN3Qm9BRjhBZGdBd0FESUFBQUF3QUFBQUFBQUFBR01BZFFCekFIUUFi?= =?us-ascii?Q?d0J0QUY4QWN3QnpBRzRBWHdCckFHVUFlUUIzQUc4QWNnQmtBSE1BQUFBK0FB?= =?us-ascii?Q?QUFBQUFBQUdNQWRRQnpBSFFBYndCdEFGOEFjd0J6QUc0QVh3QnVBRzhBWkFC?= =?us-ascii?Q?bEFHd0FhUUJ0QUdrQWRBQmxBSElBWHdCMkFEQUFNZ0FBQURJQUFBQUFBQUFB?= =?us-ascii?Q?WXdCMUFITUFkQUJ2QUcwQVh3QnpBSE1BYmdCZkFITUFjQUJoQUdNQVpRQmZB?= =?us-ascii?Q?SFlBTUFBeUFBQUFQZ0FBQUFBQUFBQmtBR3dBY0FCZkFITUFhd0I1QUhBQVpR?= =?us-ascii?Q?QmZBR01BYUFCaEFIUUFYd0J0QUdVQWN3QnpBR0VBWndCbEFGOEFkZ0F3QURJ?= =?us-ascii?Q?QUFBQTJBQUFBQUFBQUFHUUFiQUJ3QUY4QWN3QnNBR0VBWXdCckFGOEFZd0Jv?= =?us-ascii?Q?QUdFQWRBQmZBRzBBWlFCekFITUFZUUJuQUdVQUFBQTRBQUFBQUFBQUFHUUFi?= =?us-ascii?Q?QUJ3QUY4QWRBQmxBR0VBYlFCekFGOEFid0J1QUdVQVpBQnlBR2tBZGdCbEFG?= =?us-ascii?Q?OEFaZ0JwQUd3QVpRQUFBQ1FBQUFBVkFBQUFaUUJ0QUdFQWFRQnNBRjhBWVFC?= =?us-ascii?Q?a0FHUUFjZ0JsQUhNQWN3QUFBRmdBQUFBQUFBQUFiUUJoQUhJQWRnQmxBR3dB?= =?us-ascii?Q?WHdCd0FISUFid0JxQUdVQVl3QjBBRjhBYmdCaEFHMEFaUUJ6QUY4QVl3QnZB?= =?us-ascii?Q?RzRBWmdCcEFHUUFaUUJ1QUhRQWFRQmhBR3dBWHdCaEFHd0Fid0J1QUdVQUFB?= =?us-ascii?Q?QlVBQUFBQUFBQUFHMEFZUUJ5QUhZQVpRQnNBRjhBY0FCeUFHOEFhZ0JsQUdN?= =?us-ascii?Q?QWRBQmZBRzRBWVFCdEFHVUFjd0JmQUhJQVpRQnpBSFFBY2dCcEFHTUFkQUJs?= =?us-ascii?Q?QUdRQVh3QmhBR3dBYndCdUFHVUFBQUJhQUFBQUFBQUFBRzBBWVFCeUFIWUFa?= =?us-ascii?Q?UUJzQUY4QWNBQnlBRzhBYWdCbEFHTUFkQUJmQUc0QVlRQnRBR1VBY3dCZkFI?= =?us-ascii?Q?SUFaUUJ6QUhRQWNnQnBBR01BZEFCbEFHUUFYd0JvQUdVQWVBQmpBRzhBWkFC?= =?us-ascii?Q?bEFITUFBQUFnQUFBQUFBQUFBRzBBWVFCeUFIWUFaUUJzQUd3QVh3QmhBSElB?= =?us-ascii?Q?YlFBQUFDWUFBQUFBQUFBQWJRQmhBSElBZGdCbEFHd0FiQUJmQUdjQWJ3QnZB?= =?us-ascii?Q?R2NBYkFCbEFBQUFOQUFBQUFBQUFBQnRBR0VB?= x-dg-refsix: =?us-ascii?Q?Y2dCMkFHVUFiQUJzQUY4QWNBQnlBRzhBYWdCbEFHTUFkQUJmQUdNQWJ3QmtB?= =?us-ascii?Q?R1VBY3dBQUFENEFBQUFBQUFBQWJRQmhBSElBZGdCbEFHd0FiQUJmQUhBQWNn?= =?us-ascii?Q?QnZBR29BWlFCakFIUUFYd0JqQUc4QVpBQmxBSE1BWHdCa0FHa0FZd0IwQUFB?= =?us-ascii?Q?QVhnQUFBQUFBQUFCdEFHRUFjZ0IyQUdVQWJBQnNBRjhBY0FCeUFHOEFhZ0Js?= =?us-ascii?Q?QUdNQWRBQmZBRzRBWVFCdEFHVUFjd0JmQUdNQWJ3QnVBR1lBYVFCa0FHVUFi?= =?us-ascii?Q?Z0IwQUdrQVlRQnNBRjhBYlFCaEFISUFkZ0JsQUd3QWJBQUFBR3dBQUFBQUFB?= =?us-ascii?Q?QUFiUUJoQUhJQWRnQmxBR3dBYkFCZkFIQUFjZ0J2QUdvQVpRQmpBSFFBWHdC?= =?us-ascii?Q?dUFHRUFiUUJsQUhNQVh3QmpBRzhBYmdCbUFHa0FaQUJsQUc0QWRBQnBBR0VB?= =?us-ascii?Q?YkFCZkFHMEFZUUJ5QUhZQVpRQnNBR3dBWHdCdkFISUFYd0JoQUhJQWJRQUFB?= =?us-ascii?Q?SElBQUFBQUFBQUFiUUJoQUhJQWRnQmxBR3dBYkFCZkFIQUFjZ0J2QUdvQVpR?= =?us-ascii?Q?QmpBSFFBWHdCdUFHRUFiUUJsQUhNQVh3QmpBRzhBYmdCbUFHa0FaQUJsQUc0?= =?us-ascii?Q?QWRBQnBBR0VBYkFCZkFHMEFZUUJ5QUhZQVpRQnNBR3dBWHdCdkFISUFYd0Ju?= =?us-ascii?Q?QUc4QWJ3Qm5BR3dBWlFBQUFGb0FBQUFBQUFBQWJRQmhBSElBZGdCbEFHd0Fi?= =?us-ascii?Q?QUJmQUhBQWNnQnZBR29BWlFCakFIUUFYd0J1QUdFQWJRQmxBSE1BWHdCeUFH?= =?us-ascii?Q?VUFjd0IwQUhJQWFRQmpBSFFBWlFCa0FGOEFiUUJoQUhJQWRnQmxBR3dBYkFB?= =?us-ascii?Q?QUFHZ0FBQUFBQUFBQWJRQmhBSElBZGdCbEFHd0FiQUJmQUhBQWNnQnZBR29B?= =?us-ascii?Q?WlFCakFIUUFYd0J1QUdFQWJRQmxBSE1BWHdCeUFHVUFjd0IwQUhJQWFRQmpB?= =?us-ascii?Q?SFFBWlFCa0FGOEFiUUJoQUhJQWRnQmxBR3dBYkFCZkFHOEFjZ0JmQUdFQWNn?= =?us-ascii?Q?QnRBQUFBS2dBQUFBQUFBQUJ0QUdFQWNnQjJBR1VBYkFCc0FGOEFkQUJsQUhJ?= =?us-ascii?Q?QWJRQnBBRzRBZFFCekFBQUFJZ0FBQUFBQUFBQnRBR0VBY2dCMkFHVUFiQUJz?= =?us-ascii?Q?QUY4QWR3QnZBSElBWkFBQUFBPT0iLz48L21ldGE+?= x-ms-publictraffictype: Email x-ms-traffictypediagnostic: BN9PR18MB4204:EE_|SA3PR18MB5555:EE_ x-ms-office365-filtering-correlation-id: 456776f1-1e51-4e85-d607-08dc1d6678cd x-ms-exchange-senderadcheck: 1 x-ms-exchange-antispam-relay: 0 x-microsoft-antispam: BCL:0; x-microsoft-antispam-message-info: fcHxTt4GlR+kiDNYnCOPDRxfDMNIW28MsguPo+PZXThm71dKQwwBj+JeWl4LVoby87BReasoOcvq3BuNZaTnRIOQpShaYkqi6lLZdyvX6xrSfFmudlZEofxVibPjjyERL+jsxz3Ub6we7jJ8jyDP3H0feBj2AwRCMrlCuVReOIVPH1OCYf/MKfErXkFJ5BnBhFHJEApP0aaCm3abokl8gTzNaXd6KAf6Nm83j64KDqZBXuhLXVy0Z114FcYzRayn5Jjf615pA799xmbajCGDneBgwNuqIC5NJraXX8J8Cg5eFLktnw5yGJxj8RfXXrmKow+Quze79ENb9eP5ORiH5sFBIhuZ1KNjbU3mhKwCQw1NXHfpdfDovc41SsluNxkJMQFKhtNq5D3OsFGuy2L91BIwka0DC6eQBnXNGoJQGYMgbPoaEjl714k3Z6zyobYtdg2art81eZsKVetsGXZ8F5K/uKQT0nM9fZ/1chsEbQ3DA749T22NbAEBE+ct3hzrBmr1qEjl7slyHeKVzXAGEP7iGRrbxqjDeKFiit1B7d0PlTXh90GPMD8cQ0179ysWnsGjIM7AMRf41nAIhpNIlc+P2BZYgw1eo7Xq6+85qLz4ecYvgfGssPCauOVaEmlpCODv9SFdVvxuKD0Pov8AJg== x-forefront-antispam-report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:BN9PR18MB4204.namprd18.prod.outlook.com; PTR:; CAT:NONE; SFS:(13230031)(396003)(366004)(39860400002)(376002)(346002)(136003)(230922051799003)(1800799012)(186009)(451199024)(64100799003)(7696005)(5660300002)(41300700001)(6506007)(71200400001)(53546011)(478600001)(8676002)(8936002)(55016003)(83380400001)(66476007)(2906002)(122000001)(52536014)(64756008)(76116006)(66556008)(30864003)(66946007)(110136005)(66446008)(86362001)(38100700002)(9686003)(33656002)(38070700009)(7416002)(921011)(316002); DIR:OUT; SFP:1101; x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?us-ascii?Q?nABDsby+EjOQViwpkoCRVPHZILtsaLADUWfNPDIThR+SyAD7uxDz2Jo7dtmW?= =?us-ascii?Q?PX6ePhdGoEaAWyz7drD8cKyzaYkAGA8cfSkFLYqG6R8IF8QUfVHdgm5VjHB6?= =?us-ascii?Q?KSYZ7I/1s/xQkvSQUBmFUnMYk3regC9pVkjVIZuegHcrXhovAI92fznEqbSJ?= =?us-ascii?Q?Azzg2CUgD1lepwTg69+z4b2bDUSlvQGL/IAIbpmBVoOYS/FOIWSxAKGv7nKr?= =?us-ascii?Q?bpJ5CFs/mLH1kr82CY0gRxjKGr+smeV4htTqJS2cwlHzfMRxI0xLdtwsLRJl?= =?us-ascii?Q?1d3VvLa74ssNFWalKJHNgLHv4WWbTY35haBqScFA9tHFLQZxmfnQVGfLoqHL?= =?us-ascii?Q?C+/lY5clypp0HvSJ6Z+nHYktR4+WuGoLiGxImXbiGn9XSAYEylQ8hzSVmfha?= =?us-ascii?Q?+18UgKhC5Xhdxq2ZSk6O2yewcuJExawwJQruZIgaT1qW3siVNAW5AuK/dk4w?= =?us-ascii?Q?+9kiydPn4n5edkrSY2DZV6WpSoAywRce5te7Px/4FQUUfU851cRgDb9lhNtW?= =?us-ascii?Q?Ld3lbwIoiBkXdLb3G99keupxib9SaEH51mjn5Oki/gu5GWmzLcUBkeTs4VdE?= =?us-ascii?Q?Y968nstAgltlqrNiX4K0JKIWVGqc+pCUUJIPPoYEG9UNFa/qljAaf2gWpUrZ?= =?us-ascii?Q?edhy5boZCQTteNkVqM/waccqoUVBzA+qvzq2D1/yeBCvT2B9iSi7E9+pMZnW?= =?us-ascii?Q?aIFWKMdj3ylZJNYJUbTlgQ8H5uwC3+3Fn8Wv7VpIn+sJkZrELAazNtNA6iRU?= =?us-ascii?Q?PsJNmezm3N757ezjCyVfvVdbQC/c1C2IPTODJNWcj1YHlMzXAKC3u0LQN6Z2?= =?us-ascii?Q?lKDCXA9UWAT9DL9RPHNWOhRcuXladWa8B3iovlXlvyFIiNxxu+YVzudSqysD?= =?us-ascii?Q?lyAOXcfIWLH40WG9E/g5OOH8d2Vifz2T/cU8Wo1Kgic5kPVdiwDxksyOsmvt?= =?us-ascii?Q?UfomF6qrt7Vb0wsJSxo0W4NS97fQUNGaV9fVzVcaqcNfbHYgqVBQbrfY2Tol?= =?us-ascii?Q?7ERuaswAq88Zj4VDaXuZrGKLkRXR76ss1rikWHliIaWOJenT+6b1u6iJ7Pq9?= =?us-ascii?Q?lH5M3vUUbPbeksm++Fb5nTVLMuaV60h31GCz6wCCyoqX/TY47bF4v06FOfpf?= =?us-ascii?Q?6fiN+sxD5IFaDu/DdUM7Zz9uVivJcfATpA3Y6S3/fgka9210IowGJ2DzJAni?= =?us-ascii?Q?owaqNJEVHrGMhWAbC2rdiUCHAp3b9gMlnQuA0Y32Dfj+2Bv4KgrUP6FFoYfP?= =?us-ascii?Q?fbS0USIkwheI4TK7Q1SBXGAz8rgZpYGiqYog7dKJWdiFtxjD2k4HAflhRV8f?= =?us-ascii?Q?VmKm7GpGzB1QmMyKhFEopb/ObBNCxwIC549TEAP5RTN/cyQ5JO4FDHwJeZoC?= =?us-ascii?Q?mMCmSHDAOJ3yUUfWWZwjWn3vNONt3/I+S9XrwB31Xp1MCdRsHPAIgwcaUFD8?= =?us-ascii?Q?A5DMpOuNc2iU5ZPgSJ29rqgHyHWiP3XkG1CBkUkBfxRWFBFrmJipvuwwYjms?= =?us-ascii?Q?3rh3TYuvbQ5/sEzpaojUNshmlWPJuHRlnOmUnszC3x/McofsyC/iK7jAHO53?= =?us-ascii?Q?AbiO8Cuw1YizTRlRvB23fXh4EGalP/CHrsp3iHf+sduQfDerZOT4rCm8e57g?= =?us-ascii?Q?d0SqhYo7nHU1CsdVl5rOYBsjBQP8I1RsDMqWGHojLWhH?= Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: quoted-printable MIME-Version: 1.0 X-OriginatorOrg: marvell.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-AuthSource: BN9PR18MB4204.namprd18.prod.outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: 456776f1-1e51-4e85-d607-08dc1d6678cd X-MS-Exchange-CrossTenant-originalarrivaltime: 25 Jan 2024 05:28:33.0071 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: 70e1fb47-1155-421d-87fc-2e58f638b6e0 X-MS-Exchange-CrossTenant-mailboxtype: HOSTED X-MS-Exchange-CrossTenant-userprincipalname: IuPudpgfLQVYj+GYCM8d2bg0o9MBOxl+UdEiW9c896wQiFExbgbGPUfGcP4wM9Fz7053C0fFDG6dRTnl6PsoHw== X-MS-Exchange-Transport-CrossTenantHeadersStamped: SA3PR18MB5555 X-Proofpoint-ORIG-GUID: TXieVKoBx7KL9W6Ub4CMYCoWD7pRwlLB X-Proofpoint-GUID: TXieVKoBx7KL9W6Ub4CMYCoWD7pRwlLB X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.272,Aquarius:18.0.1011,Hydra:6.0.619,FMLib:17.11.176.26 definitions=2024-01-25_02,2024-01-24_01,2023-05-22_02 X-BeenThere: dev@dpdk.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: DPDK patches and discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dev-bounces@dpdk.org Ping... Request for review comments please. Thanks Harman > -----Original Message----- > From: Harman Kalra > Sent: Monday, January 22, 2024 12:49 AM > To: dev@dpdk.org; Thomas Monjalon ; Ferruh Yigit > ; Andrew Rybchenko > ; Ajit Khaparde > ; Somnath Kotur > ; John Daley ; > Hyong Youb Kim ; Yuying Zhang > ; Beilei Xing ; Qiming Yan= g > ; Qi Zhang ; Wenjun Wu > ; Dariusz Sosnowski ; > Viacheslav Ovsiienko ; Ori Kam > ; Suanming Mou ; Matan > Azrad ; Chaoyong He > Cc: Harman Kalra > Subject: [PATCH v4 1/1] ethdev: parsing multiple representor devargs stri= ng >=20 > Adding support for parsing multiple representor devargs strings passed to= a > PCI BDF. There may be scenario where port representors for various PFs or > VFs under PFs are required and all these are representor ports shall be > backed by single pci device. In such case port representors can be create= d > using devargs string: > ,representor=3D[pf[0-1],pf2vf[1,2-3],[4-5]] >=20 > Signed-off-by: Harman Kalra > --- > doc/guides/prog_guide/poll_mode_drv.rst | 4 +- > .../prog_guide/switch_representation.rst | 1 + > drivers/net/bnxt/bnxt_ethdev.c | 4 +- > drivers/net/enic/enic_ethdev.c | 4 +- > drivers/net/i40e/i40e_ethdev.c | 4 +- > drivers/net/ice/ice_dcf_ethdev.c | 4 +- > drivers/net/ixgbe/ixgbe_ethdev.c | 4 +- > drivers/net/mlx5/linux/mlx5_os.c | 8 +- > .../net/nfp/flower/nfp_flower_representor.c | 4 +- > drivers/net/sfc/sfc_ethdev.c | 4 +- > lib/ethdev/ethdev_driver.c | 108 +++++++++++++++--- > lib/ethdev/ethdev_driver.h | 9 +- > 12 files changed, 122 insertions(+), 36 deletions(-) >=20 > diff --git a/doc/guides/prog_guide/poll_mode_drv.rst > b/doc/guides/prog_guide/poll_mode_drv.rst > index c145a9066c..5008b41c60 100644 > --- a/doc/guides/prog_guide/poll_mode_drv.rst > +++ b/doc/guides/prog_guide/poll_mode_drv.rst > @@ -376,7 +376,7 @@ parameters to those ports. >=20 > * ``representor`` for a device which supports the creation of represento= r > ports > this argument allows user to specify which switch ports to enable port > - representors for. Multiple representors in one device argument is inva= lid:: > + representors for:: >=20 > -a DBDF,representor=3Dvf0 > -a DBDF,representor=3Dvf[0,4,6,9] > @@ -389,6 +389,8 @@ parameters to those ports. > -a DBDF,representor=3Dpf1vf0 > -a DBDF,representor=3Dpf[0-1]sf[0-127] > -a DBDF,representor=3Dpf1 > + -a DBDF,representor=3D[pf[0-1],pf2vf[0-2],pf3[3,5-8]] > + (Multiple representors in one device argument can be represented as > + a list) >=20 > Note: PMDs are not required to support the standard device arguments and > users should consult the relevant PMD documentation to see support > devargs. > diff --git a/doc/guides/prog_guide/switch_representation.rst > b/doc/guides/prog_guide/switch_representation.rst > index 6fd7b98bdc..46e0ca85a5 100644 > --- a/doc/guides/prog_guide/switch_representation.rst > +++ b/doc/guides/prog_guide/switch_representation.rst > @@ -77,6 +77,7 @@ thought as a software "patch panel" front-end for > applications. > -a pci:dbdf,representor=3Dsf1 > -a pci:dbdf,representor=3Dsf[0-1023] > -a pci:dbdf,representor=3Dsf[0,2-1023] > + -a pci:dbdf,representor=3D[pf[0-1],pf2vf[0-2],pf3[3,5]] >=20 > - As virtual devices, they may be more limited than their physical > counterparts, for instance by exposing only a subset of device diff --= git > a/drivers/net/bnxt/bnxt_ethdev.c b/drivers/net/bnxt/bnxt_ethdev.c index > acf7e6e46e..5d4f599044 100644 > --- a/drivers/net/bnxt/bnxt_ethdev.c > +++ b/drivers/net/bnxt/bnxt_ethdev.c > @@ -6383,8 +6383,8 @@ static int bnxt_pci_probe(struct rte_pci_driver > *pci_drv __rte_unused, >=20 > if (pci_dev->device.devargs) { > ret =3D rte_eth_devargs_parse(pci_dev->device.devargs->args, > - ð_da); > - if (ret) > + ð_da, 1); > + if (ret < 0) > return ret; > } >=20 > diff --git a/drivers/net/enic/enic_ethdev.c b/drivers/net/enic/enic_ethde= v.c > index b04b6c9aa1..33d96ec07a 100644 > --- a/drivers/net/enic/enic_ethdev.c > +++ b/drivers/net/enic/enic_ethdev.c > @@ -1317,8 +1317,8 @@ static int eth_enic_pci_probe(struct rte_pci_driver > *pci_drv __rte_unused, > ENICPMD_FUNC_TRACE(); > if (pci_dev->device.devargs) { > retval =3D rte_eth_devargs_parse(pci_dev->device.devargs- > >args, > - ð_da); > - if (retval) > + ð_da, 1); > + if (retval < 0) > return retval; > } > if (eth_da.nb_representor_ports > 0 && diff --git > a/drivers/net/i40e/i40e_ethdev.c b/drivers/net/i40e/i40e_ethdev.c index > 3ca226156b..4d21341382 100644 > --- a/drivers/net/i40e/i40e_ethdev.c > +++ b/drivers/net/i40e/i40e_ethdev.c > @@ -646,8 +646,8 @@ eth_i40e_pci_probe(struct rte_pci_driver *pci_drv > __rte_unused, >=20 > if (pci_dev->device.devargs) { > retval =3D rte_eth_devargs_parse(pci_dev->device.devargs- > >args, > - ð_da); > - if (retval) > + ð_da, 1); > + if (retval < 0) > return retval; > } >=20 > diff --git a/drivers/net/ice/ice_dcf_ethdev.c > b/drivers/net/ice/ice_dcf_ethdev.c > index 5d845bba31..0e991fe4b8 100644 > --- a/drivers/net/ice/ice_dcf_ethdev.c > +++ b/drivers/net/ice/ice_dcf_ethdev.c > @@ -2041,8 +2041,8 @@ eth_ice_dcf_pci_probe(__rte_unused struct > rte_pci_driver *pci_drv, > if (!ice_devargs_check(pci_dev->device.devargs, > ICE_DCF_DEVARG_CAP)) > return 1; >=20 > - ret =3D rte_eth_devargs_parse(pci_dev->device.devargs->args, > ð_da); > - if (ret) > + ret =3D rte_eth_devargs_parse(pci_dev->device.devargs->args, > ð_da, 1); > + if (ret < 0) > return ret; >=20 > ret =3D rte_eth_dev_pci_generic_probe(pci_dev, > diff --git a/drivers/net/ixgbe/ixgbe_ethdev.c > b/drivers/net/ixgbe/ixgbe_ethdev.c > index d6cf00317e..98e9b8a031 100644 > --- a/drivers/net/ixgbe/ixgbe_ethdev.c > +++ b/drivers/net/ixgbe/ixgbe_ethdev.c > @@ -1765,8 +1765,8 @@ eth_ixgbe_pci_probe(struct rte_pci_driver > *pci_drv __rte_unused, >=20 > if (pci_dev->device.devargs) { > retval =3D rte_eth_devargs_parse(pci_dev->device.devargs- > >args, > - ð_da); > - if (retval) > + ð_da, 1); > + if (retval < 0) > return retval; > } else > memset(ð_da, 0, sizeof(eth_da)); > diff --git a/drivers/net/mlx5/linux/mlx5_os.c > b/drivers/net/mlx5/linux/mlx5_os.c > index ae82e1e5d8..17061126d5 100644 > --- a/drivers/net/mlx5/linux/mlx5_os.c > +++ b/drivers/net/mlx5/linux/mlx5_os.c > @@ -2733,16 +2733,16 @@ mlx5_os_parse_eth_devargs(struct rte_device > *dev, > memset(eth_da, 0, sizeof(*eth_da)); > /* Parse representor information first from class argument. */ > if (dev->devargs->cls_str) > - ret =3D rte_eth_devargs_parse(dev->devargs->cls_str, eth_da); > - if (ret !=3D 0) { > + ret =3D rte_eth_devargs_parse(dev->devargs->cls_str, eth_da, > 1); > + if (ret < 0) { > DRV_LOG(ERR, "failed to parse device arguments: %s", > dev->devargs->cls_str); > return -rte_errno; > } > if (eth_da->type =3D=3D RTE_ETH_REPRESENTOR_NONE && dev- > >devargs->args) { > /* Parse legacy device argument */ > - ret =3D rte_eth_devargs_parse(dev->devargs->args, eth_da); > - if (ret) { > + ret =3D rte_eth_devargs_parse(dev->devargs->args, eth_da, 1); > + if (ret < 0) { > DRV_LOG(ERR, "failed to parse device arguments: > %s", > dev->devargs->args); > return -rte_errno; > diff --git a/drivers/net/nfp/flower/nfp_flower_representor.c > b/drivers/net/nfp/flower/nfp_flower_representor.c > index 5f7c1fa737..63fe37c8d7 100644 > --- a/drivers/net/nfp/flower/nfp_flower_representor.c > +++ b/drivers/net/nfp/flower/nfp_flower_representor.c > @@ -792,8 +792,8 @@ nfp_flower_repr_create(struct nfp_app_fw_flower > *app_fw_flower) >=20 > /* Now parse PCI device args passed for representor info */ > if (pci_dev->device.devargs !=3D NULL) { > - ret =3D rte_eth_devargs_parse(pci_dev->device.devargs->args, > ð_da); > - if (ret !=3D 0) { > + ret =3D rte_eth_devargs_parse(pci_dev->device.devargs->args, > ð_da, 1); > + if (ret < 0) { > PMD_INIT_LOG(ERR, "devarg parse failed"); > return -EINVAL; > } > diff --git a/drivers/net/sfc/sfc_ethdev.c b/drivers/net/sfc/sfc_ethdev.c = index > 6d57b2ba26..0bbcb80365 100644 > --- a/drivers/net/sfc/sfc_ethdev.c > +++ b/drivers/net/sfc/sfc_ethdev.c > @@ -3305,8 +3305,8 @@ sfc_parse_rte_devargs(const char *args, struct > rte_eth_devargs *devargs) > int rc; >=20 > if (args !=3D NULL) { > - rc =3D rte_eth_devargs_parse(args, ð_da); > - if (rc !=3D 0) { > + rc =3D rte_eth_devargs_parse(args, ð_da, 1); > + if (rc < 0) { > SFC_GENERIC_LOG(ERR, > "Failed to parse generic devargs '%s'", > args); > diff --git a/lib/ethdev/ethdev_driver.c b/lib/ethdev/ethdev_driver.c inde= x > bd917a15fc..4c0d22f838 100644 > --- a/lib/ethdev/ethdev_driver.c > +++ b/lib/ethdev/ethdev_driver.c > @@ -2,6 +2,7 @@ > * Copyright(c) 2022 Intel Corporation > */ >=20 > +#include > #include > #include >=20 > @@ -459,9 +460,26 @@ eth_dev_devargs_tokenise(struct rte_kvargs > *arglist, const char *str_in) > break; >=20 > case 3: /* Parsing list */ > - if (*letter =3D=3D ']') > - state =3D 2; > - else if (*letter =3D=3D '\0') > + if (*letter =3D=3D ']') { > + /* For devargs having singles lists move to > state 2 once letter > + * becomes ']' so each can be considered as > different pair key > + * value. But in nested lists case e.g. multiple > representors > + * case i.e. [pf[0-3],pfvf[3,4-6]], complete > nested list should > + * be considered as one pair value, hence > checking if end of outer > + * list ']' is reached else stay on state 3. > + */ > + if ((strcmp("representor", pair->key) =3D=3D 0) > && > + (*(letter + 1) !=3D '\0' && *(letter + 2) !=3D '\0' > && > + *(letter + 3) !=3D '\0') && > + ((*(letter + 2) =3D=3D 'p' && *(letter + 3) =3D=3D 'f') > || > + (*(letter + 2) =3D=3D 'v' && *(letter + 3) =3D=3D 'f') || > + (*(letter + 2) =3D=3D 's' && *(letter + 3) =3D=3D 'f') || > + (*(letter + 2) =3D=3D 'c' && isdigit(*(letter + 3))) > || > + (*(letter + 2) =3D=3D '[' && isdigit(*(letter + > 3))))) > + state =3D 3; > + else > + state =3D 2; > + } else if (*letter =3D=3D '\0') > return -EINVAL; > break; > } > @@ -469,16 +487,56 @@ eth_dev_devargs_tokenise(struct rte_kvargs > *arglist, const char *str_in) > } > } >=20 > +static int > +eth_dev_tokenise_representor_list(char *p_val, struct rte_eth_devargs > *eth_devargs, > + unsigned int nb_da) > +{ > + struct rte_eth_devargs *eth_da; > + char da_val[BUFSIZ]; > + char *token, *sptr; > + char delim[] =3D "]"; > + int devargs =3D 0; > + int result =3D 0; > + > + token =3D strtok_r(&p_val[1], delim, &sptr); > + while (token !=3D NULL) { > + eth_da =3D ð_devargs[devargs]; > + memset(eth_da, 0, sizeof(*eth_da)); > + snprintf(da_val, BUFSIZ, "%s%c", (token[0] =3D=3D ',') ? ++token : > token, ']'); > + /* Parse the tokenised devarg value */ > + result =3D rte_eth_devargs_parse_representor_ports(da_val, > eth_da); > + if (result < 0) > + goto parse_cleanup; > + devargs++; > + if (devargs > (int)nb_da) { > + RTE_ETHDEV_LOG_LINE(ERR, > + "Devargs parsed %d > max array > size %d", > + devargs, nb_da); > + result =3D -1; > + goto parse_cleanup; > + } > + token =3D strtok_r(NULL, delim, &sptr); > + } > + > + result =3D devargs; > + > +parse_cleanup: > + return result; > + > +} > + > int > -rte_eth_devargs_parse(const char *dargs, struct rte_eth_devargs *eth_da) > +rte_eth_devargs_parse(const char *dargs, struct rte_eth_devargs > *eth_devargs, > + unsigned int nb_da) > { > - struct rte_kvargs args; > + struct rte_eth_devargs *eth_da; > struct rte_kvargs_pair *pair; > + struct rte_kvargs args; > + static bool dup_rep; > + int devargs =3D 0; > unsigned int i; > int result =3D 0; >=20 > - memset(eth_da, 0, sizeof(*eth_da)); > - > result =3D eth_dev_devargs_tokenise(&args, dargs); > if (result < 0) > goto parse_cleanup; > @@ -486,18 +544,40 @@ rte_eth_devargs_parse(const char *dargs, struct > rte_eth_devargs *eth_da) > for (i =3D 0; i < args.count; i++) { > pair =3D &args.pairs[i]; > if (strcmp("representor", pair->key) =3D=3D 0) { > - if (eth_da->type !=3D RTE_ETH_REPRESENTOR_NONE) { > - RTE_ETHDEV_LOG_LINE(ERR, "duplicated > representor key: %s", > - dargs); > + if (dup_rep) { > + RTE_ETHDEV_LOG_LINE(ERR, "Duplicated > representor key: %s", > + pair->value); > result =3D -1; > goto parse_cleanup; > } > - result =3D rte_eth_devargs_parse_representor_ports( > - pair->value, eth_da); > - if (result < 0) > - goto parse_cleanup; > + > + if (pair->value[0] =3D=3D '[' && !isdigit(pair->value[1])) { > + /* Multiple representor list case */ > + devargs =3D > eth_dev_tokenise_representor_list(pair->value, > + > eth_devargs, nb_da); > + if (devargs < 0) > + goto parse_cleanup; > + } else { > + /* Single representor case */ > + eth_da =3D ð_devargs[devargs]; > + memset(eth_da, 0, sizeof(*eth_da)); > + result =3D > + > rte_eth_devargs_parse_representor_ports(pair->value, > + > eth_da); > + if (result < 0) > + goto parse_cleanup; > + devargs++; > + if (devargs > (int)nb_da) { > + RTE_ETHDEV_LOG_LINE(ERR, > "Devargs parsed %d > max array size %d", > + devargs, nb_da); > + result =3D -1; > + goto parse_cleanup; > + } > + } > + dup_rep =3D true; > } > } > + result =3D devargs; >=20 > parse_cleanup: > free(args.str); > diff --git a/lib/ethdev/ethdev_driver.h b/lib/ethdev/ethdev_driver.h inde= x > b482cd12bb..fd6f404e9a 100644 > --- a/lib/ethdev/ethdev_driver.h > +++ b/lib/ethdev/ethdev_driver.h > @@ -1800,14 +1800,17 @@ rte_eth_representor_id_get(uint16_t port_id, > * @param devargs > * device arguments > * @param eth_devargs > - * parsed ethdev specific arguments. > + * contiguous memory populated with parsed ethdev specific arguments. > + * @param nb_da > + * size of eth_devargs array passed > * > * @return > - * Negative errno value on error, 0 on success. > + * Negative errno value on error, no of devargs parsed on success. > */ > __rte_internal > int > -rte_eth_devargs_parse(const char *devargs, struct rte_eth_devargs > *eth_devargs); > +rte_eth_devargs_parse(const char *devargs, struct rte_eth_devargs > *eth_devargs, > + unsigned int nb_da); >=20 >=20 > typedef int (*ethdev_init_t)(struct rte_eth_dev *ethdev, void *init_para= ms); > -- > 2.18.0