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 97CC1A0561; Thu, 18 Mar 2021 07:23:10 +0100 (CET) Received: from [217.70.189.124] (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id 163C1406FF; Thu, 18 Mar 2021 07:23:10 +0100 (CET) Received: from mx0b-0016f401.pphosted.com (mx0b-0016f401.pphosted.com [67.231.156.173]) by mails.dpdk.org (Postfix) with ESMTP id 14DCE406B4 for ; Thu, 18 Mar 2021 07:23:07 +0100 (CET) Received: from pps.filterd (m0045851.ppops.net [127.0.0.1]) by mx0b-0016f401.pphosted.com (8.16.0.43/8.16.0.43) with SMTP id 12I6MnQ3024205; Wed, 17 Mar 2021 23:23:04 -0700 Received: from nam10-mw2-obe.outbound.protection.outlook.com (mail-mw2nam10lp2103.outbound.protection.outlook.com [104.47.55.103]) by mx0b-0016f401.pphosted.com with ESMTP id 378wsqycgm-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Wed, 17 Mar 2021 23:23:04 -0700 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=ZXxvgQ6ZEaDFyxd0ehim3MWvZVyb1Bhl5GP7mUk5gfj0dsQD2J41XDcrQQXHfBwVu4+l3SN8qs6ARm2Dl4M3BFJjD24LKhTAndcUP97r+e7wMrAyiE0C/HlD/JF52BmpPXkxau3icmloAgg3thgA+vRlIQoPEDP3GAIMc1Zg7KWEPNhcoHzgwtz3ctGYNe0uSAOPwSo4Zbz3i5VZvZeD5zQAT1EMaTiZkZfawcVmdCzSnPrYUlN60kh7mfZj+ApKdFMS7u5UnB4pxibRQULAwXAkPnF+gKZDe7P7yAO0tZzfEGCXiLSLC5okSWl13XC/xHiI8wEk+WiSGAzL4c3cUA== 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-SenderADCheck; bh=0Jt4mLC6gvrlyh1DywaOYY9pqK02fyw/yQcfSorbOds=; b=FUHqkrnuaUIZ8kl/ltN94TrcavbjXOif7AP8nSLQx3AsLiZMeWKa6y3Wtlg0xfwx27u/tZjLbRcrnMdrQNFlvFFT2uUZeWO3r0/PU/n/R6NY0VCeIBx/uNSdyTJg8IAVQT5Y5YA9KQtbvfgk2hmfDkhw2r3JtKa0Edu73PVPe1itLU2tvQ+tP7Q2JW00Ozd3YWaamgrS9BtJn496WE6WcfXCCaXjtG39BmFgH2oNvtwfBYK9aUr87Iprbit6d2XybwH2CrnnK4Og++gXy9Iufz4mt0uTondCCtO3cxJtycHkJFGfop7B508g9rsVyWwRzcxqc6sHiEqP2FEbxe6b/w== 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=0Jt4mLC6gvrlyh1DywaOYY9pqK02fyw/yQcfSorbOds=; b=KNFTXteP9kgahzYb1y9+HhJMqIepOx9P1qsJ8Xa46fHDTigcDjHgOkktZkwxvyZn4vBkYVAlX7PI+s4G+DoUnkXdIP5Ol7zascBknIDJisPbKfbyoJYKkoN97E/KGS9P3QMLiFjLS1EBE7tQnePNsj2sw/Wqb5aWFJwQAbgVjjY= Received: from PH0PR18MB4086.namprd18.prod.outlook.com (2603:10b6:510:3::9) by PH0PR18MB3863.namprd18.prod.outlook.com (2603:10b6:510:49::14) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.3912.26; Thu, 18 Mar 2021 06:23:01 +0000 Received: from PH0PR18MB4086.namprd18.prod.outlook.com ([fe80::51dd:b5d6:af81:172d]) by PH0PR18MB4086.namprd18.prod.outlook.com ([fe80::51dd:b5d6:af81:172d%4]) with mapi id 15.20.3955.018; Thu, 18 Mar 2021 06:23:00 +0000 From: Pavan Nikhilesh Bhagavatula To: "Jayatheerthan, Jay" , Jerin Jacob Kollanukkaran , "Carrillo, Erik G" , "Gujjar, Abhinandan S" , "McDaniel, Timothy" , "hemant.agrawal@nxp.com" , "Van Haaren, Harry" , mattias.ronnblom , "Ma, Liang J" , Ray Kinsella , Neil Horman CC: "dev@dpdk.org" Thread-Topic: [dpdk-dev] [PATCH v3 1/8] eventdev: introduce event vector capability Thread-Index: AQHXGp9C/+FZLLV3ZUGNmXriEV7tl6qJSBMAgAAAsVA= Date: Thu, 18 Mar 2021 06:23:00 +0000 Message-ID: References: <20210316154846.1518-1-pbhagavatula@marvell.com> <20210316200156.252-1-pbhagavatula@marvell.com> <20210316200156.252-2-pbhagavatula@marvell.com> In-Reply-To: Accept-Language: en-IN, en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: authentication-results: intel.com; dkim=none (message not signed) header.d=none;intel.com; dmarc=none action=none header.from=marvell.com; x-originating-ip: [2405:201:d009:304d:3c04:a8f0:e464:65fd] x-ms-publictraffictype: Email x-ms-office365-filtering-correlation-id: 0d615887-e02c-49f6-92af-08d8e9d647bc x-ms-traffictypediagnostic: PH0PR18MB3863: x-ms-exchange-transport-forked: True x-microsoft-antispam-prvs: x-ms-oob-tlc-oobclassifiers: OLM:5797; x-ms-exchange-senderadcheck: 1 x-microsoft-antispam: BCL:0; x-microsoft-antispam-message-info: HODNVB3hmTWD7tG1fr7msbTLRdBorS798J58ZVElKNvhTIivVEWzjgqbm2HAcQH5LWmwLi8t5XhOFaicmMQJmnyQ07Hhrl+DRuEPd9wy1PKYf5T3RzIKmcfRXJBkEOJ4LmcXBp/01xB8ocno1Jg11NAG/ZuE0RxQdFlDOSal+Z/qfSBRs5GGY2WTnIGwS1DbTQ9SNOS11VJmpDjXV3tMYHHPdm5U7XF8n/x/GfZRc+wPdHOvXW4phpqbU8zFtE17CEzOTneyW7yP5ws3KiYfSCrthCbpE4u1IyGpKah1+GDAOGKY5SAi0eyLE0OYkC4IJtmZFidHOw5+gAYJ++VKU1q2DgeThJyDoeKDMko1kcn8L6uMB2DuYVFoJJoUTZXlcXOOiCOuhs+EOgVUqJNL5OLcZ6viOu9enXUbybYRyBIwgF6uB+vXizEp8qFWe8bzwhZ02SbwOUWn1QHfPiEW99hJyrPjEg6pE0j5eMQSukFCgjWTjGPnsM9FRZuSUZF6RAfS5wU5+R2R7fYWSwfb5Cs4Xdw6pj8iZqEhVGbtCGCkjNu8cOdHP8zgbrOMMIsmRRvTW/MH8iNVhgB81WK9vZ20UAwI6FVHqN2yTXSIKdw= x-forefront-antispam-report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:PH0PR18MB4086.namprd18.prod.outlook.com; PTR:; CAT:NONE; SFS:(4636009)(39860400002)(136003)(346002)(376002)(396003)(366004)(53546011)(8676002)(64756008)(66556008)(6506007)(9686003)(2906002)(66476007)(66446008)(66946007)(71200400001)(4326008)(76116006)(33656002)(7416002)(186003)(921005)(86362001)(55016002)(8936002)(83380400001)(5660300002)(478600001)(110136005)(316002)(7696005)(52536014)(38100700001); DIR:OUT; SFP:1101; x-ms-exchange-antispam-messagedata: =?us-ascii?Q?HO7R5FQp1ST1QZHUesrofOPE0lrRW8lR5sLJJVFaBcQIVk2FhFRiVe7efZh2?= =?us-ascii?Q?MGZcWrej6ViOnsCPo4Z10ZUup0Zgh/0wF+3hFy5eMv2jfvu6dzpcvRgdyOIR?= =?us-ascii?Q?acQw5+5zQkKpCNfqqzOzO8XcvHvQ9ChQE8GCA0NCLZHnfceKcjHoMPexvoBT?= =?us-ascii?Q?ueKi4V9u9qM9AbcctXon+XqKVc5AWRG1p47t//Qhj9GnxKm0eFRNF5jsX7ve?= =?us-ascii?Q?Xt/ix+xgmyTfDjwhQa0N9sFkLqgFdewul6m0qDypvqg58MR4sFjzqOEcM3gh?= =?us-ascii?Q?8O5PgQ+a8iuMGdN4X1Xk+ff91ssvbrA0+0Pxasd6+phn817kfnUc+jHOwHih?= =?us-ascii?Q?W33GUfweo7eiQZtQcpKTZp0q99RS+CvDeamGIr+X9dJy8ST//UwpHYfQJAlh?= =?us-ascii?Q?58h92JoGBRN2KUpUf9nl7bVVf/o/uXWf0C7iD+LaYn6pM6EqCJNPN7lDO+KM?= =?us-ascii?Q?YF40uu2Nc1ORfcJKsynmRhRJvENsnODkg2MTHplNzRIpKZgYkKdWAt6tvOOy?= =?us-ascii?Q?zJEmPWwekbOG35Lq75gko1Hqr2fp6Q+U5OJaVQZN784eMjAvSO6P2Egp4hVx?= =?us-ascii?Q?L8bS2SObYGQA/x9L3iIRA8DopjETaiEvTBVdiCiZfeNhK18+oZPuLcS7s/VB?= =?us-ascii?Q?9HCAsBtKLbUoDrl0uC0h2OB+bcdw3OpUX8EtL1Zy4OzIb3DLOCysdcqxsDik?= =?us-ascii?Q?2OXgBcw9ZuIpFOoourCwMjXMSZfEg1aPJK4oCduVvQUslwE5W3nKrpgEsey7?= =?us-ascii?Q?kYfnLdnTImUTr9CjCzIxjLcDhx4FxoKzV+VFIq/SsNjdeyjPW5urNkK5ygV8?= =?us-ascii?Q?vvW8uV5iKIeMXgxgHYBElnSCCp2krmuWh6hykvwi17zhVm8fabyYEu09c7n1?= =?us-ascii?Q?KvwT3O1Ztk4Rxd0w+fPmm3tiXfhZ+vTWmxQo8cyHuwpfdGilrL+Y0dJOKYim?= =?us-ascii?Q?EYA/JcRu6fyfIvRY7T5XkjHCW1wnkx9vwcEghGsuwtiofZisjDVhVSx+CWM2?= =?us-ascii?Q?QuHZwvIm/M60wB8J81Xbjun5w2xlIDktdIC69Xl/A+2YqgnE/0l/Aoh7pZW1?= =?us-ascii?Q?Iq7zCuzoKPtihyGx4dmMNgtTbiz0RyYQBCgI16VpG5pxNCxtc+n2lZyD4a19?= =?us-ascii?Q?AAa9+Nq4hsNkrdflEMipVj6KfliYW9LCiufZ8RqctTs3Qv1n4sqdpQZTMfIP?= =?us-ascii?Q?Wdk6G8D47UEkTVx6y69g1bRA+TGzhcr7vVDKYNbqqRnQSRNSUwFbAb7iIpNA?= =?us-ascii?Q?3Af493TPFgcdQvCM6/nBgj7FlNwNv+MaJNl3LqwQw8EW+bRWMlmiPoXbmvIo?= =?us-ascii?Q?wXm7ImY2CPX3+A70HVZs6KXfNAHTNMzUjJEAR3BGJPUM1sdHE2IJtuXPdAvr?= =?us-ascii?Q?rET4thsavLwAtjzMB78MSMK7aQUv?= 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: PH0PR18MB4086.namprd18.prod.outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: 0d615887-e02c-49f6-92af-08d8e9d647bc X-MS-Exchange-CrossTenant-originalarrivaltime: 18 Mar 2021 06:23:00.7106 (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: 1geb/vJxAqrL/Ni2KTAYi0mrECGpHjqQS84ojhyrdl1MjcqLfW6SLh59So2W5v2gcT+CSqeOTaQ+9/5pNRwpqJY1I7F6HQCcwoEtMVMHdhw= X-MS-Exchange-Transport-CrossTenantHeadersStamped: PH0PR18MB3863 X-Proofpoint-Virus-Version: vendor=fsecure engine=2.50.10434:6.0.369, 18.0.761 definitions=2021-03-18_01:2021-03-17, 2021-03-18 signatures=0 Subject: Re: [dpdk-dev] [PATCH v3 1/8] eventdev: introduce event vector capability 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 Sender: "dev" >Posting my comments in beginning. No further comments. > >@pbhagavatula@marvell.com, it seems like v3 patch1 drops some >changes from v2 patch1 (for e.g. missing event vector pointer in >rte_event) causing build failure. Could you have a look? Ah, my bad, my auto-formatter really messed-up the series. I will fix it in v4. > >Thanks! > >-Jay > Thanks, Pavan. > >> -----Original Message----- >> From: pbhagavatula@marvell.com >> Sent: Wednesday, March 17, 2021 1:32 AM >> To: jerinj@marvell.com; Jayatheerthan, Jay >; Carrillo, Erik G >; Gujjar, >> Abhinandan S ; McDaniel, Timothy >; hemant.agrawal@nxp.com; Van >> Haaren, Harry ; mattias.ronnblom >; Ma, Liang J >> ; Ray Kinsella ; Neil Horman > >> Cc: dev@dpdk.org; Pavan Nikhilesh >> Subject: [dpdk-dev] [PATCH v3 1/8] eventdev: introduce event vector >capability >> >> From: Pavan Nikhilesh >> >> Introduce rte_event_vector datastructure which is capable of holding >> multiple uintptr_t of the same flow thereby allowing applications >> to vectorize their pipeline and reducing the complexity of pipelining >> the events across multiple stages. >> This approach also reduces the scheduling overhead on a event >device. >> >> Add a event vector mempool create handler to create mempools >based on >> the best mempool ops available on a given platform. >> >> Signed-off-by: Pavan Nikhilesh >> --- >> doc/guides/prog_guide/eventdev.rst | 36 +++++++++- >> lib/librte_eventdev/rte_eventdev.h | 110 >++++++++++++++++++++++++++++- >> lib/librte_eventdev/version.map | 3 + >> 3 files changed, 146 insertions(+), 3 deletions(-) >> >> diff --git a/doc/guides/prog_guide/eventdev.rst >b/doc/guides/prog_guide/eventdev.rst >> index ccde086f6..fda9c3743 100644 >> --- a/doc/guides/prog_guide/eventdev.rst >> +++ b/doc/guides/prog_guide/eventdev.rst >> @@ -63,13 +63,45 @@ the actual event being scheduled is. The >payload is a union of the following: >> * ``uint64_t u64`` >> * ``void *event_ptr`` >> * ``struct rte_mbuf *mbuf`` >> +* ``struct rte_event_vector *vec`` >> >> -These three items in a union occupy the same 64 bits at the end of >the rte_event >> +These four items in a union occupy the same 64 bits at the end of the >rte_event >> structure. The application can utilize the 64 bits directly by accessin= g >the >> -u64 variable, while the event_ptr and mbuf are provided as >convenience >> +u64 variable, while the event_ptr, mbuf, vec are provided as a >convenience >> variables. For example the mbuf pointer in the union can used to >schedule a >> DPDK packet. >> >> +Event Vector >> +~~~~~~~~~~~~ >> + >> +The rte_event_vector struct contains a vector of elements defined >by the event >> +type specified in the ``rte_event``. The event_vector structure >contains the >> +following data: >> + >> +* ``nb_elem`` - The number of elements held within the vector. >> + >> +Similar to ``rte_event`` the payload of event vector is also a union, >allowing >> +flexibility in what the actual vector is. >> + >> +* ``struct rte_mbuf *mbufs[0]`` - An array of mbufs. >> +* ``void *ptrs[0]`` - An array of pointers. >> +* ``uint64_t *u64s[0]`` - An array of uint64_t elements. >> + >> +The size of the event vector is related to the total number of >elements it is >> +configured to hold, this is achieved by making `rte_event_vector` a >variable >> +length structure. >> +A helper function is provided to create a mempool that holds event >vector, which >> +takes name of the pool, total number of required >``rte_event_vector``, >> +cache size, number of elements in each ``rte_event_vector`` and >socket id. >> + >> +.. code-block:: c >> + >> + rte_event_vector_pool_create("vector_pool", >nb_event_vectors, cache_sz, >> + nb_elements_per_vector, socket_id)= ; >> + >> +The function ``rte_event_vector_pool_create`` creates mempool >with the best >> +platform mempool ops. >> + >> Queues >> ~~~~~~ >> >> diff --git a/lib/librte_eventdev/rte_eventdev.h >b/lib/librte_eventdev/rte_eventdev.h >> index ce1fc2ce0..c0d01c873 100644 >> --- a/lib/librte_eventdev/rte_eventdev.h >> +++ b/lib/librte_eventdev/rte_eventdev.h >> @@ -212,8 +212,10 @@ extern "C" { >> >> #include >> #include >> -#include >> #include >> +#include >> +#include >> +#include >> >> #include "rte_eventdev_trace_fp.h" >> >> @@ -913,6 +915,25 @@ >rte_event_dev_stop_flush_callback_register(uint8_t dev_id, >> int >> rte_event_dev_close(uint8_t dev_id); >> >> +/** >> + * Event vector structure. >> + */ >> +struct rte_event_vector { >> + uint64_t nb_elem : 16; >> + /**< Number of elements in this event vector. */ >> + uint64_t rsvd : 48; >> + uint64_t impl_opaque; >> + union { >> + struct rte_mbuf *mbufs[0]; >> + void *ptrs[0]; >> + uint64_t *u64s[0]; >> + } __rte_aligned(16); >> + /**< Start of the vector array union. Depending upon the event >type the >> + * vector array can be an array of mbufs or pointers or opaque >u64 >> + * values. >> + */ >> +}; >> + >> /* Scheduler type definitions */ >> #define RTE_SCHED_TYPE_ORDERED 0 >> /**< Ordered scheduling >> @@ -986,6 +1007,21 @@ rte_event_dev_close(uint8_t dev_id); >> */ >> #define RTE_EVENT_TYPE_ETH_RX_ADAPTER 0x4 >> /**< The event generated from event eth Rx adapter */ >> +#define RTE_EVENT_TYPE_VECTOR 0x8 >> +/**< Indicates that event is a vector. >> + * All vector event types should be an logical OR of >EVENT_TYPE_VECTOR. >> + * This simplifies the pipeline design as we can split processing the >events >> + * between vector events and normal event across event types. >> + * Example: >> + * if (ev.event_type & RTE_EVENT_TYPE_VECTOR) { >> + * // Classify and handle vector event. >> + * } else { >> + * // Classify and handle event. >> + * } >> + */ >> +#define RTE_EVENT_TYPE_CPU_VECTOR >(RTE_EVENT_TYPE_VECTOR | RTE_EVENT_TYPE_CPU) >> +/**< The event vector generated from cpu for pipelining. */ >> + >> #define RTE_EVENT_TYPE_MAX 0x10 >> /**< Maximum number of event types */ >> >> @@ -2023,6 +2059,78 @@ rte_event_dev_xstats_reset(uint8_t >dev_id, >> */ >> int rte_event_dev_selftest(uint8_t dev_id); >> >> +/** >> + * Get the memory required per event vector based on the number of >elements per >> + * vector. >> + * This should be used to create the mempool that holds the event >vectors. >> + * >> + * @param name >> + * The name of the vector pool. >> + * @param n >> + * The number of elements in the mbuf pool. >> + * @param cache_size >> + * Size of the per-core object cache. See rte_mempool_create() for >> + * details. >> + * @param nb_elem >> + * The number of elements then a single event vector should be >able to hold. >> + * @param socket_id >> + * The socket identifier where the memory should be allocated. The >> + * value can be *SOCKET_ID_ANY* if there is no NUMA constraint >for the >> + * reserved zone >> + * >> + * @return >> + * The pointer to the newly allocated mempool, on success. NULL >on error >> + * with rte_errno set appropriately. Possible rte_errno values >include: >> + * - E_RTE_NO_CONFIG - function could not get pointer to >rte_config structure >> + * - E_RTE_SECONDARY - function was called from a secondary >process instance >> + * - EINVAL - cache size provided is too large, or priv_size is not >aligned. >> + * - ENOSPC - the maximum number of memzones has already been >allocated >> + * - EEXIST - a memzone with the same name already exists >> + * - ENOMEM - no appropriate memory area found in which to >create memzone >> + */ >> +__rte_experimental >> +static inline struct rte_mempool * >> +rte_event_vector_pool_create(const char *name, unsigned int n, >> + unsigned int cache_size, uint16_t nb_elem, >> + int socket_id) >> +{ >> + const char *mp_ops_name; >> + struct rte_mempool *mp; >> + unsigned int elt_sz; >> + int ret; >> + >> + if (!nb_elem) { >> + RTE_LOG(ERR, EVENTDEV, >> + "Invalid number of elements=3D%d requested\n", >nb_elem); >> + rte_errno =3D -EINVAL; >> + return NULL; >> + } >> + >> + elt_sz =3D >> + sizeof(struct rte_event_vector) + (nb_elem * >sizeof(uintptr_t)); >> + mp =3D rte_mempool_create_empty(name, n, elt_sz, cache_size, >0, socket_id, >> + 0); >> + if (mp =3D=3D NULL) >> + return NULL; >> + >> + mp_ops_name =3D rte_mbuf_best_mempool_ops(); >> + ret =3D rte_mempool_set_ops_byname(mp, mp_ops_name, >NULL); >> + if (ret !=3D 0) { >> + RTE_LOG(ERR, EVENTDEV, "error setting mempool >handler\n"); >> + goto err; >> + } >> + >> + ret =3D rte_mempool_populate_default(mp); >> + if (ret < 0) >> + goto err; >> + >> + return mp; >> +err: >> + rte_mempool_free(mp); >> + rte_errno =3D -ret; >> + return NULL; >> +} >> + >> #ifdef __cplusplus >> } >> #endif >> diff --git a/lib/librte_eventdev/version.map >b/lib/librte_eventdev/version.map >> index 3e5c09cfd..a070ef56e 100644 >> --- a/lib/librte_eventdev/version.map >> +++ b/lib/librte_eventdev/version.map >> @@ -138,6 +138,9 @@ EXPERIMENTAL { >> __rte_eventdev_trace_port_setup; >> # added in 20.11 >> rte_event_pmd_pci_probe_named; >> + >> + #added in 21.05 >> + rte_event_vector_pool_create; >> }; >> >> INTERNAL { >> -- >> 2.17.1