From mboxrd@z Thu Jan  1 00:00:00 1970
Return-Path: <dev-bounces@dpdk.org>
Received: from mails.dpdk.org (mails.dpdk.org [217.70.189.124])
	by inbox.dpdk.org (Postfix) with ESMTP id 6EA24A0C4C;
	Tue,  5 Oct 2021 18:27:22 +0200 (CEST)
Received: from [217.70.189.124] (localhost [127.0.0.1])
	by mails.dpdk.org (Postfix) with ESMTP id 489084139F;
	Tue,  5 Oct 2021 18:27:22 +0200 (CEST)
Received: from mga17.intel.com (mga17.intel.com [192.55.52.151])
 by mails.dpdk.org (Postfix) with ESMTP id 8C35E4132B
 for <dev@dpdk.org>; Tue,  5 Oct 2021 18:27:20 +0200 (CEST)
X-IronPort-AV: E=McAfee;i="6200,9189,10128"; a="206601047"
X-IronPort-AV: E=Sophos;i="5.85,349,1624345200"; d="scan'208";a="206601047"
Received: from orsmga007.jf.intel.com ([10.7.209.58])
 by fmsmga107.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384;
 05 Oct 2021 09:19:32 -0700
X-ExtLoop1: 1
X-IronPort-AV: E=Sophos;i="5.85,349,1624345200"; d="scan'208";a="477740810"
Received: from orsmsx604.amr.corp.intel.com ([10.22.229.17])
 by orsmga007.jf.intel.com with ESMTP; 05 Oct 2021 09:19:31 -0700
Received: from orsmsx608.amr.corp.intel.com (10.22.229.21) by
 ORSMSX604.amr.corp.intel.com (10.22.229.17) with Microsoft SMTP Server
 (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id
 15.1.2242.12; Tue, 5 Oct 2021 09:19:30 -0700
Received: from orsmsx607.amr.corp.intel.com (10.22.229.20) by
 ORSMSX608.amr.corp.intel.com (10.22.229.21) with Microsoft SMTP Server
 (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id
 15.1.2242.12; Tue, 5 Oct 2021 09:19:30 -0700
Received: from ORSEDG601.ED.cps.intel.com (10.7.248.6) by
 orsmsx607.amr.corp.intel.com (10.22.229.20) with Microsoft SMTP Server
 (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id
 15.1.2242.12 via Frontend Transport; Tue, 5 Oct 2021 09:19:30 -0700
Received: from NAM02-DM3-obe.outbound.protection.outlook.com (104.47.56.43) by
 edgegateway.intel.com (134.134.137.102) with Microsoft SMTP Server
 (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id
 15.1.2242.12; Tue, 5 Oct 2021 09:19:30 -0700
ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none;
 b=XY/cKG0dzN2jMTy2SHKVGZ31Aqw/oInXmYSg5o9RTI6FQBRDgCXjB+/nsmvt+KWWUsb03dkVJAvlohrPo7T5YEfUoCWtomw2vAFSKxzxFxmXvTmU1TK8hd35Xq8lFKITXiUlWcgKSIqSxxD6QGdCG8+kolkHLi0UJPmf9OqJIAD9SCjSSD6yghpwJcH5E/geMxdNcRBD07CRV7QicrXgnTysVhkBncT7wMaX9IwKlcq8RitDLks0ikLH0GUj4tO3X4R0yk40hNQSOJV/anQfxhOuvYAhuPDZirQEwiGo5nlJn+ESAir1XHmHCslyScV2iqzf9NHMMcH5R1d2vUFXBA==
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=VtBcDLwMZDJ4W3FeE/Cghu60yJhgQd+9AjqvaCWGJEY=;
 b=a4IkbT4Z01gmTXP6KNAXok+lLDvMZA1Q4JKmwuS3kGGijM73ut/WYbwEjE02xUTJu8F7He0b9fKJUKQFzJaU8yMMoGhfonszyL66nKo/bOmcazAkSTSf2BiP9k+5ADmMn46YkgwYFQcko2d5SV9wWGAqL9Ev1Mv/Q6Y5UTW+ToPlp0YtixqhJQjUl7CRF2R7HoG1J9c9Yhs2I0px804lU0sGyXvYfaTmnzRjDLDoeWu934eF2Mit2ri8/Mdf3gPsx/kvPpPobizY2+UiztSkGv5h5pDNno4hJ8GCW9sBYyX1VqYPIL2E42vWMAsiDLiGsY9O0ZVDSKNT200ru3onoA==
ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass
 smtp.mailfrom=intel.com; dmarc=pass action=none header.from=intel.com;
 dkim=pass header.d=intel.com; arc=none
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=intel.onmicrosoft.com; 
 s=selector2-intel-onmicrosoft-com;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck;
 bh=VtBcDLwMZDJ4W3FeE/Cghu60yJhgQd+9AjqvaCWGJEY=;
 b=U/PeetFvoJREO4gmpWogY2/z98AsVSS/PKpWpm0nHGD7D8J+wnTtQsSG1cu4qayDsDJjgVnYCkTF/2WwDBy3IBTr2oujkLdO6QGH5pJz2E4ST2c7I3hdnuDKRSls10tEhbQWJ5fLQXSoqWIzaamff/BxKKZNTgkwIYHmxIXj8o0=
Received: from DM6PR11MB4491.namprd11.prod.outlook.com (2603:10b6:5:204::19)
 by DM6PR11MB4235.namprd11.prod.outlook.com (2603:10b6:5:205::29) with
 Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4566.14; Tue, 5 Oct
 2021 16:19:25 +0000
Received: from DM6PR11MB4491.namprd11.prod.outlook.com
 ([fe80::740e:126e:c785:c8fd]) by DM6PR11MB4491.namprd11.prod.outlook.com
 ([fe80::740e:126e:c785:c8fd%4]) with mapi id 15.20.4566.022; Tue, 5 Oct 2021
 16:19:25 +0000
From: "Ananyev, Konstantin" <konstantin.ananyev@intel.com>
To: Thomas Monjalon <thomas@monjalon.net>
CC: "dev@dpdk.org" <dev@dpdk.org>, "Li, Xiaoyun" <xiaoyun.li@intel.com>,
 "anoobj@marvell.com" <anoobj@marvell.com>, "jerinj@marvell.com"
 <jerinj@marvell.com>, "ndabilpuram@marvell.com" <ndabilpuram@marvell.com>,
 "adwivedi@marvell.com" <adwivedi@marvell.com>,
 "shepard.siegel@atomicrules.com" <shepard.siegel@atomicrules.com>,
 "ed.czeck@atomicrules.com" <ed.czeck@atomicrules.com>,
 "john.miller@atomicrules.com" <john.miller@atomicrules.com>,
 "irusskikh@marvell.com" <irusskikh@marvell.com>, "ajit.khaparde@broadcom.com"
 <ajit.khaparde@broadcom.com>, "somnath.kotur@broadcom.com"
 <somnath.kotur@broadcom.com>, "rahul.lakkireddy@chelsio.com"
 <rahul.lakkireddy@chelsio.com>, "hemant.agrawal@nxp.com"
 <hemant.agrawal@nxp.com>, "sachin.saxena@oss.nxp.com"
 <sachin.saxena@oss.nxp.com>, "Wang, Haiyue" <haiyue.wang@intel.com>, "Daley,
 John" <johndale@cisco.com>, "hyonkim@cisco.com" <hyonkim@cisco.com>, "Zhang,
 Qi Z" <qi.z.zhang@intel.com>, "Wang, Xiao W" <xiao.w.wang@intel.com>,
 "humin29@huawei.com" <humin29@huawei.com>, "yisen.zhuang@huawei.com"
 <yisen.zhuang@huawei.com>, "oulijun@huawei.com" <oulijun@huawei.com>, "Xing,
 Beilei" <beilei.xing@intel.com>, "Wu, Jingjing" <jingjing.wu@intel.com>,
 "Yang, Qiming" <qiming.yang@intel.com>, "matan@nvidia.com"
 <matan@nvidia.com>, "viacheslavo@nvidia.com" <viacheslavo@nvidia.com>,
 "sthemmin@microsoft.com" <sthemmin@microsoft.com>, "longli@microsoft.com"
 <longli@microsoft.com>, "heinrich.kuhn@corigine.com"
 <heinrich.kuhn@corigine.com>, "kirankumark@marvell.com"
 <kirankumark@marvell.com>, "andrew.rybchenko@oktetlabs.ru"
 <andrew.rybchenko@oktetlabs.ru>, "mczekaj@marvell.com" <mczekaj@marvell.com>, 
 "jiawenwu@trustnetic.com" <jiawenwu@trustnetic.com>,
 "jianwang@trustnetic.com" <jianwang@trustnetic.com>,
 "maxime.coquelin@redhat.com" <maxime.coquelin@redhat.com>, "Xia, Chenbo"
 <chenbo.xia@intel.com>, "Yigit, Ferruh" <ferruh.yigit@intel.com>,
 "mdr@ashroe.eu" <mdr@ashroe.eu>, "Jayatheerthan, Jay"
 <jay.jayatheerthan@intel.com>
Thread-Topic: [dpdk-dev] [PATCH v4 7/7] ethdev: hide eth dev related structures
Thread-Index: AQHXuSf6gPPvn88XmEiXimTKLsgPCavEZk+AgAAqsUA=
Date: Tue, 5 Oct 2021 16:19:25 +0000
Message-ID: <DM6PR11MB4491EBEF318CDA8D890169D79AAF9@DM6PR11MB4491.namprd11.prod.outlook.com>
References: <20211001140255.5726-1-konstantin.ananyev@intel.com>
 <20211004135603.20593-1-konstantin.ananyev@intel.com>
 <20211004135603.20593-8-konstantin.ananyev@intel.com>
 <3078390.3ff9TgJ5vr@thomas>
In-Reply-To: <3078390.3ff9TgJ5vr@thomas>
Accept-Language: en-GB, en-US
Content-Language: en-US
X-MS-Has-Attach: 
X-MS-TNEF-Correlator: 
dlp-product: dlpe-windows
dlp-reaction: no-action
dlp-version: 11.6.200.16
authentication-results: monjalon.net; dkim=none (message not signed)
 header.d=none;monjalon.net; dmarc=none action=none header.from=intel.com;
x-ms-publictraffictype: Email
x-ms-office365-filtering-correlation-id: 654c1392-82c8-46a6-8f3a-08d9881be627
x-ms-traffictypediagnostic: DM6PR11MB4235:
x-ld-processed: 46c98d88-e344-4ed4-8496-4ed7712e255d,ExtAddr
x-ms-exchange-transport-forked: True
x-microsoft-antispam-prvs: <DM6PR11MB423508626E953027737407469AAF9@DM6PR11MB4235.namprd11.prod.outlook.com>
x-ms-oob-tlc-oobclassifiers: OLM:2582;
x-ms-exchange-senderadcheck: 1
x-ms-exchange-antispam-relay: 0
x-microsoft-antispam: BCL:0;
x-microsoft-antispam-message-info: hjGcBeFO1qeo/JUJSpWEeSuXNenQpTJXFldJG4xcxx4qU4neQCtqShZB2xGvfvA02BBaTCeH2rF+KCDOYN6B7B6ztrd7Q8GpuGokc4vBmom4vTPfPpB18CmVFtMdeEvg5b6WXxANb2B8cA2LYbykEfLeUwRtrvl59r0ClQApjX+JWwKsW9nnBzAm94aPB2zO+1Ye4KQ3rr8mY7kmUtsD1Nk4NYsKUAfbZNiq0i4rZNH/MxFcwhi8RT9C2q7KipCzYecj+E2/jNVYZuvSI4+T+3s1saYpA1q37glaaf4GukvwDlaaXvPqYBSuF0aPo1D+bUyQvdvZslWyeKlofPZ0/N0BA1RrEup+NHZCdd1ed78m9EDqrzwE+C3Roq/k/8RiyMyxAqASY0DpaUwMF5LtAattAzBo2dbCw79a/Kua/xWoPrHd5mvZiCu9zSNtZtOlAxbBf0lSu0HgiQe1OJUBOSousbyBDjSI6UAxWaDx4LhIjgA3Lswa0cMfahxAULUvkROWAqy6u0KcjxJ7/ksW/2qYR5va5AqIAccGOaavUeLI8Pnz1yDwVQbdELvZW6rbTLGb39A0Xzslt37ADVyqjdyJuxiFl0XgFq5pz84jpTmGRqlOgTXfwNUy7ytRFv842F/CbGAVL4WEEU1pUUFNY4OJi2sROw1ZyWfki2wftOt0FhP5bPjVdE9OGfIrwWxQ+2wwUDx1u6OrAE+U2+2IFw==
x-forefront-antispam-report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:;
 IPV:NLI; SFV:NSPM; H:DM6PR11MB4491.namprd11.prod.outlook.com; PTR:; CAT:NONE;
 SFS:(4636009)(366004)(186003)(7696005)(52536014)(7416002)(86362001)(7406005)(26005)(4326008)(8936002)(54906003)(107886003)(9686003)(122000001)(2906002)(8676002)(76116006)(66476007)(6916009)(55236004)(38100700002)(33656002)(6506007)(66946007)(316002)(38070700005)(66446008)(64756008)(83380400001)(66556008)(55016002)(508600001)(71200400001)(5660300002);
 DIR:OUT; SFP:1102; 
x-ms-exchange-antispam-messagedata-chunkcount: 1
x-ms-exchange-antispam-messagedata-0: =?us-ascii?Q?tSaF3my/MvyQbuGIvjm6elccSUwqwhxeU4X4udnrC/ISjHVn1XQ6O7HQWMnh?=
 =?us-ascii?Q?FrYUkuRCHwo7W1Vu6ELU6X7VlrRzzxdSdC4xyaEELZPSXE69d7DdYAB2usSY?=
 =?us-ascii?Q?LGgmASo1oKZabsUaVTP7uvEkcjpWSFHVyP/GzW1Akd7MYqgSAQPQWYMjtpds?=
 =?us-ascii?Q?5tnP/N6pzr1YdDi+tIpRaHdUxo1QaKYuynEwk/Z+XOkzQdCWggdf/CXvvIhN?=
 =?us-ascii?Q?NvPwGPBOjgHCe2pl2I7Bj2JvCGRS5Y5ggiIm7/+67o2L5dwncnddO6QHWOq7?=
 =?us-ascii?Q?gWrrDGd3Lqb4oQJWrfLGBgXjgSjtk5j+HSOCBfR0RSPzeZhVgNjdgA+WsY8M?=
 =?us-ascii?Q?sI2bnoQV7ixOVffxfIOWvKVdhmhbjI3jlBPcbplRNgqE9wU4pUBXIZ0n3RKg?=
 =?us-ascii?Q?sRN6NgT9UbgNK+REy40GYpOU2bw6rqPHTavc+gpmx1wV/jyLGUZlN+yYQ1NN?=
 =?us-ascii?Q?C1Bjnk84BpFHdZBsv2Qbd1wWB1wXqEAUoYEUukAIzSq/gAJSuGgEefOx1gHi?=
 =?us-ascii?Q?pfv48kYQodT6l5c/rRdzwcm/uJwfmKtVQ5N7kQhf62b4s2RV+ZNgMBYHlVyt?=
 =?us-ascii?Q?YtEBCd5f0wlHCC/O9twLcvgTDzTQQrQCO4R0eXfehu3mI/5AHSByORtJPo7Y?=
 =?us-ascii?Q?7dWuh2UFzZU7z5vPqDbwQ2yyLyiYy2snl5qUYSHFaqoaTYtFNwdVvZu4VnZT?=
 =?us-ascii?Q?e1sWI2h83f3fiOJluxZPScqSp4OxtxcIA5DCwyul9CdxbByemBhJ4LjbZ1yE?=
 =?us-ascii?Q?VLRlWQdgVV7wRuNzEBoeYNkfmR3K6NID24u1obHCoZmU0mEXEUk8PTmxlfDC?=
 =?us-ascii?Q?lYAXnpRy67LPDRMYRY0I4NIVgXsJesienzbTHINSrIYGiV/YfGyPE+WF7EYz?=
 =?us-ascii?Q?T9pDJHq4MtSwa4zbKC9hEH1oZEcP0GSorL6WWI0OCIYNy1F5igk778SzRVmi?=
 =?us-ascii?Q?P5LNPRrrdW/aLoSKXX4zgVZrNLvEtY6YHB6wyPScZvf0y9zZbiDjIeWbzKp0?=
 =?us-ascii?Q?YUz7geUtt+pE3qOXH/I0jIuLykqI00aux5LpqXITlHSNl9wB2sWlYrffjnjV?=
 =?us-ascii?Q?8VulaMFZmsyM1IIRzPOFE3hXyK/5whgdVKDe6WNOzzr/NiRpEmWAzvCy1t0/?=
 =?us-ascii?Q?TkR4wIcz7VD/qIxK5N+Bfc/LmTy2iG1MHI6ofVvyJXAkSUZGaDMoUPmF2BqK?=
 =?us-ascii?Q?90xuLP9CxFFhjX0BYS9vgFjSjboly3OcViV81OZm6i8FEBGnnKW3LMvRckHd?=
 =?us-ascii?Q?S5+08pc+YA3OFZdVtI90yJVfFkS3L6UQevGU17jlSV5y8iqqqiCNh5DiqGNT?=
 =?us-ascii?Q?J/uKjOSzCyl6vDrgEwRsGxn/?=
Content-Type: text/plain; charset="us-ascii"
Content-Transfer-Encoding: quoted-printable
MIME-Version: 1.0
X-MS-Exchange-CrossTenant-AuthAs: Internal
X-MS-Exchange-CrossTenant-AuthSource: DM6PR11MB4491.namprd11.prod.outlook.com
X-MS-Exchange-CrossTenant-Network-Message-Id: 654c1392-82c8-46a6-8f3a-08d9881be627
X-MS-Exchange-CrossTenant-originalarrivaltime: 05 Oct 2021 16:19:25.4323 (UTC)
X-MS-Exchange-CrossTenant-fromentityheader: Hosted
X-MS-Exchange-CrossTenant-id: 46c98d88-e344-4ed4-8496-4ed7712e255d
X-MS-Exchange-CrossTenant-mailboxtype: HOSTED
X-MS-Exchange-CrossTenant-userprincipalname: 7Qgeh8rlbeNN+ODqG51tmo7TmRz6kvZUIyD+MEnRxWVJwTEf5p3ZX+xSomzHE98NEy0aJL86zvRf6VvRJOMNwjzuVJhI8ZO8jvh5NK8ZKN0=
X-MS-Exchange-Transport-CrossTenantHeadersStamped: DM6PR11MB4235
X-OriginatorOrg: intel.com
Subject: Re: [dpdk-dev] [PATCH v4 7/7] ethdev: hide eth dev related
 structures
X-BeenThere: dev@dpdk.org
X-Mailman-Version: 2.1.29
Precedence: list
List-Id: DPDK patches and discussions <dev.dpdk.org>
List-Unsubscribe: <https://mails.dpdk.org/options/dev>,
 <mailto:dev-request@dpdk.org?subject=unsubscribe>
List-Archive: <http://mails.dpdk.org/archives/dev/>
List-Post: <mailto:dev@dpdk.org>
List-Help: <mailto:dev-request@dpdk.org?subject=help>
List-Subscribe: <https://mails.dpdk.org/listinfo/dev>,
 <mailto:dev-request@dpdk.org?subject=subscribe>
Errors-To: dev-bounces@dpdk.org
Sender: "dev" <dev-bounces@dpdk.org>



=20
> 04/10/2021 15:56, Konstantin Ananyev:
> > Move rte_eth_dev, rte_eth_dev_data, rte_eth_rxtx_callback and related
> > data into private header (ethdev_driver.h).
> [...]
> > +/**
> > + * @internal
> > + * Structure used to hold information about the callbacks to be called=
 for a
> > + * queue on RX and TX.
> > + */
> > +struct rte_eth_rxtx_callback {
> > +	struct rte_eth_rxtx_callback *next;
> > +	union{
> > +		rte_rx_callback_fn rx;
> > +		rte_tx_callback_fn tx;
> > +	} fn;
> > +	void *param;
> > +};
> > +
> > +/**
> > + * @internal
> > + * The generic data structure associated with each ethernet device.
> > + *
> > + * Pointers to burst-oriented packet receive and transmit functions ar=
e
> > + * located at the beginning of the structure, along with the pointer t=
o
> > + * where all the data elements for the particular device are stored in=
 shared
> > + * memory. This split allows the function pointer and driver data to b=
e per-
> > + * process, while the actual configuration data for the device is shar=
ed.
> > + */
> > +struct rte_eth_dev {
> > +	eth_rx_burst_t rx_pkt_burst; /**< Pointer to PMD receive function. */
> > +	eth_tx_burst_t tx_pkt_burst; /**< Pointer to PMD transmit function. *=
/
> > +	eth_tx_prep_t tx_pkt_prepare;
> > +	/**< Pointer to PMD transmit prepare function. */
> > +	eth_rx_queue_count_t rx_queue_count;
> > +	/**< Get the number of used RX descriptors. */
> > +	eth_rx_descriptor_status_t rx_descriptor_status;
> > +	/**< Check the status of a Rx descriptor. */
> > +	eth_tx_descriptor_status_t tx_descriptor_status;
> > +	/**< Check the status of a Tx descriptor. */
>=20
> Why not using the new struct rte_eth_fp_ops?

We don't want to change each and every driver for this change.
The idea beyond it:
1. PMDs keep to setup fast-path function pointers and related data=20
    inside rte_eth_dev struct in the same way they did it before.
2. Inside rte_eth_dev_start() and inside rte_eth_dev_probing_finish()
   (for secondary process) we call eth_dev_fp_ops_setup, which
   copies these function and data pointers into rte_eth_fp_ops[port_id].
3. Inside rte_eth_dev_stop() and inside rte_eth_dev_release_port()
    we call eth_dev_fp_ops_reset(), which resets rte_eth_fp_ops[port_id]
    into some dummy values.

>=20
> > +
> > +	/**
> > +	 * Next two fields are per-device data but *data is shared between
> > +	 * primary and secondary processes and *process_private is per-proces=
s
> > +	 * private. The second one is managed by PMDs if necessary.
> > +	 */
> > +	struct rte_eth_dev_data *data;  /**< Pointer to device data. */
>=20
> We should mention that "data" is shared between processes.

I think the comment above states exactly that.
In fact, it is just cut and paste from lib/ethdev/rte_ethdev_core.h to=20
lib/ethdev/ethdev_driver.h.

>=20
> > +	void *process_private; /**< Pointer to per-process device data. */
> > +	const struct eth_dev_ops *dev_ops; /**< Functions exported by PMD */
> > +	struct rte_device *device; /**< Backing device */
> > +	struct rte_intr_handle *intr_handle; /**< Device interrupt handle */
> > +	/** User application callbacks for NIC interrupts */
> > +	struct rte_eth_dev_cb_list link_intr_cbs;
> > +	/**
> > +	 * User-supplied functions called from rx_burst to post-process
> > +	 * received packets before passing them to the user
> > +	 */
> > +	struct rte_eth_rxtx_callback *post_rx_burst_cbs[RTE_MAX_QUEUES_PER_PO=
RT];
> > +	/**
> > +	 * User-supplied functions called from tx_burst to pre-process
> > +	 * received packets before passing them to the driver for transmissio=
n.
> > +	 */
> > +	struct rte_eth_rxtx_callback *pre_tx_burst_cbs[RTE_MAX_QUEUES_PER_POR=
T];
> > +	enum rte_eth_dev_state state; /**< Flag indicating the port state */
> > +	void *security_ctx; /**< Context for security ops */
> > +
> > +	uint64_t reserved_64s[4]; /**< Reserved for future fields */
> > +	void *reserved_ptrs[4];   /**< Reserved for future fields */
> > +} __rte_cache_aligned;
> > +
> > +struct rte_eth_dev_sriov;
> > +struct rte_eth_dev_owner;
> > +
> > +/**
> > + * @internal
> > + * The data part, with no function pointers, associated with each ethe=
rnet
> > + * device. This structure is safe to place in shared memory to be comm=
on
> > + * among different processes in a multi-process configuration.
> > + */
> > +struct rte_eth_dev_data {
> > +	char name[RTE_ETH_NAME_MAX_LEN]; /**< Unique identifier name */
> > +
> > +	void **rx_queues; /**< Array of pointers to RX queues. */
> > +	void **tx_queues; /**< Array of pointers to TX queues. */
> > +	uint16_t nb_rx_queues; /**< Number of RX queues. */
> > +	uint16_t nb_tx_queues; /**< Number of TX queues. */
> > +
> > +	struct rte_eth_dev_sriov sriov;    /**< SRIOV data */
> > +
> > +	void *dev_private;
> > +			/**< PMD-specific private data.
> > +			 *   @see rte_eth_dev_release_port()
> > +			 */
> > +
> > +	struct rte_eth_link dev_link;   /**< Link-level information & status.=
 */
> > +	struct rte_eth_conf dev_conf;   /**< Configuration applied to device.=
 */
> > +	uint16_t mtu;                   /**< Maximum Transmission Unit. */
> > +	uint32_t min_rx_buf_size;
> > +			/**< Common RX buffer size handled by all queues. */
> > +
> > +	uint64_t rx_mbuf_alloc_failed; /**< RX ring mbuf allocation failures.=
 */
> > +	struct rte_ether_addr *mac_addrs;
> > +			/**< Device Ethernet link address.
> > +			 *   @see rte_eth_dev_release_port()
> > +			 */
> > +	uint64_t mac_pool_sel[ETH_NUM_RECEIVE_MAC_ADDR];
> > +			/**< Bitmap associating MAC addresses to pools. */
> > +	struct rte_ether_addr *hash_mac_addrs;
> > +			/**< Device Ethernet MAC addresses of hash filtering.
> > +			 *   @see rte_eth_dev_release_port()
> > +			 */
> > +	uint16_t port_id;           /**< Device [external] port identifier. *=
/
> > +
> > +	__extension__
> > +	uint8_t promiscuous   : 1,
> > +		/**< RX promiscuous mode ON(1) / OFF(0). */
> > +		scattered_rx : 1,
> > +		/**< RX of scattered packets is ON(1) / OFF(0) */
> > +		all_multicast : 1,
> > +		/**< RX all multicast mode ON(1) / OFF(0). */
> > +		dev_started : 1,
> > +		/**< Device state: STARTED(1) / STOPPED(0). */
> > +		lro         : 1,
> > +		/**< RX LRO is ON(1) / OFF(0) */
> > +		dev_configured : 1;
> > +		/**< Indicates whether the device is configured.
> > +		 *   CONFIGURED(1) / NOT CONFIGURED(0).
> > +		 */
> > +	uint8_t rx_queue_state[RTE_MAX_QUEUES_PER_PORT];
> > +		/**< Queues state: HAIRPIN(2) / STARTED(1) / STOPPED(0). */
> > +	uint8_t tx_queue_state[RTE_MAX_QUEUES_PER_PORT];
> > +		/**< Queues state: HAIRPIN(2) / STARTED(1) / STOPPED(0). */
> > +	uint32_t dev_flags;             /**< Capabilities. */
> > +	int numa_node;                  /**< NUMA node connection. */
> > +	struct rte_vlan_filter_conf vlan_filter_conf;
> > +			/**< VLAN filter configuration. */
> > +	struct rte_eth_dev_owner owner; /**< The port owner. */
> > +	uint16_t representor_id;
> > +			/**< Switch-specific identifier.
> > +			 *   Valid if RTE_ETH_DEV_REPRESENTOR in dev_flags.
> > +			 */
> > +
> > +	pthread_mutex_t flow_ops_mutex; /**< rte_flow ops mutex. */
> > +	uint64_t reserved_64s[4]; /**< Reserved for future fields */
> > +	void *reserved_ptrs[4];   /**< Reserved for future fields */
> > +} __rte_cache_aligned;
> > +
> > +/**
> > + * @internal
> > + * The pool of *rte_eth_dev* structures. The size of the pool
> > + * is configured at compile-time in the <rte_ethdev.c> file.
> > + */
> > +extern struct rte_eth_dev rte_eth_devices[];
>=20
> Later we should add a function to configure the size of this array dynami=
cally
> in the early DPDK init stage.

After we will hide rte_eth_devices[] and friends, we should be able to do
with them whatever we want.
But I suppose, that should be a subject of separate patch/discussion,
Probably not in 21.11 timeframe. =20