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 8FA40A0561; Thu, 18 Mar 2021 07:19:39 +0100 (CET) Received: from [217.70.189.124] (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id 93D86406FF; Thu, 18 Mar 2021 07:19:39 +0100 (CET) Received: from mga14.intel.com (mga14.intel.com [192.55.52.115]) by mails.dpdk.org (Postfix) with ESMTP id E3CCC406B4 for ; Thu, 18 Mar 2021 07:19:37 +0100 (CET) IronPort-SDR: 7xud1r5BNLORZHAkZomk2Nu5wOI02VLmf4rZGfThe98aYoUPq49uSDq3T9OJzxpdOlS84beUVG lEv01Ge7iT/g== X-IronPort-AV: E=McAfee;i="6000,8403,9926"; a="188982772" X-IronPort-AV: E=Sophos;i="5.81,257,1610438400"; d="scan'208";a="188982772" Received: from fmsmga001.fm.intel.com ([10.253.24.23]) by fmsmga103.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 17 Mar 2021 23:19:36 -0700 IronPort-SDR: OgxHvfPa7bknjXrnsx8Mkf+h3qll7O2/pqVJttdnpsEfWOil6pQbCCd1rEkm2h/aekWh91LdEQ WSTNPiKQaQcQ== X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.81,257,1610438400"; d="scan'208";a="511993930" Received: from fmsmsx601.amr.corp.intel.com ([10.18.126.81]) by fmsmga001.fm.intel.com with ESMTP; 17 Mar 2021 23:19:36 -0700 Received: from fmsmsx608.amr.corp.intel.com (10.18.126.88) by fmsmsx601.amr.corp.intel.com (10.18.126.81) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2106.2; Wed, 17 Mar 2021 23:19:36 -0700 Received: from fmsedg602.ED.cps.intel.com (10.1.192.136) by fmsmsx608.amr.corp.intel.com (10.18.126.88) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2106.2 via Frontend Transport; Wed, 17 Mar 2021 23:19:36 -0700 Received: from NAM04-MW2-obe.outbound.protection.outlook.com (104.47.73.168) by edgegateway.intel.com (192.55.55.71) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.1.2106.2; Wed, 17 Mar 2021 23:19:35 -0700 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=TlW7WjQLmWWrV1NsrYxnUngIov6dsfc4mIr7fZG+qGIInJceG/9XMCirL9K6uNGOzgJHZdpQiVLISQL6v/obzdzfnw7wVdW5ClEYrfVzSxSaOUOsiJPFpG4tS3lUs/wIiObJi0EO4LRE8NLz2JxewvokwQdbWTULBYWwx+xrVRshAk47x1wi6IYvGlynxpUwmy/OBYQQ6+R9rXRIZkZtcXj5WhS0zXjQlPYxHpFgaSSVvawrgVj2xi2kT0BSEHHQr1ES5IpWJpt4SUL5ge091rNPPK2shTm0gI0+I2ZtfiOTyEju33Fbvr8ECCUI+uaZz6Oa4m/YBOxgxoywkOg+BA== 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=EfAi0Ob0bw3tVM2gG0fJu5PbO2A5Hr5CyZ5YIoJRtYc=; b=TfR3lUc6qKyQu0PnIV+1i6gSfoW1waznAEk0ulJPJyJ1EkC/kNFQq2kEW4qMGZR4ORudR4XcEKDmlKcErhCaRFxOTpN05b+Q4tpM4UC7FBND+Wwp3Hd8qowumunzxSgI26DoRhLpzUzLfXmDrBnI3yMR++nh0LgEz+Ggfr4KYdEHcETjEnIuUz1oHXqCILYINget2395f+Ln3nIM3uwP3te2uxVo4Grl+atjulQWIXJbWY11CbWs0qDmYbCD42C7Vuk2e6eIQvrFpaT4CZO9uGD0742xbGeBP8trJBEy1LVNR7nISsjG/0YBt71zPGZsXmcDcwwf2bZDV//bDyoq1w== 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=EfAi0Ob0bw3tVM2gG0fJu5PbO2A5Hr5CyZ5YIoJRtYc=; b=zCgbZwT1agWpFCc6i0T0PWgY+sx2TJuCom58pg+N2u0uyhoFVdJpzbJBqHtekyxOw9z0NeV6uwoRUEsO4I0ASRM+FGLD9IKajMHfhUDoy5D66XJYvIXw/hKOQpxLzL59rE2dBAqHwOiJiylxdVenMSJ6WIenVKuXK+Rb/HesgG4= Received: from SN6PR11MB3117.namprd11.prod.outlook.com (2603:10b6:805:d7::32) by SA0PR11MB4703.namprd11.prod.outlook.com (2603:10b6:806:9f::18) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.3933.32; Thu, 18 Mar 2021 06:19:32 +0000 Received: from SN6PR11MB3117.namprd11.prod.outlook.com ([fe80::4579:2bc0:3dc8:8b37]) by SN6PR11MB3117.namprd11.prod.outlook.com ([fe80::4579:2bc0:3dc8:8b37%5]) with mapi id 15.20.3955.018; Thu, 18 Mar 2021 06:19:32 +0000 From: "Jayatheerthan, Jay" To: "pbhagavatula@marvell.com" , "jerinj@marvell.com" , "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: AQHXGp9V73MNqQejBUGFfsnRl4So+6qJQTAQ Date: Thu, 18 Mar 2021 06:19:32 +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: <20210316200156.252-2-pbhagavatula@marvell.com> Accept-Language: en-US Content-Language: en-US X-Mentions: pbhagavatula@marvell.com X-MS-Has-Attach: X-MS-TNEF-Correlator: dlp-product: dlpe-windows dlp-reaction: no-action dlp-version: 11.5.1.3 authentication-results: marvell.com; dkim=none (message not signed) header.d=none;marvell.com; dmarc=none action=none header.from=intel.com; x-originating-ip: [122.167.113.74] x-ms-publictraffictype: Email x-ms-office365-filtering-correlation-id: df640896-fe58-4a04-a2bd-08d8e9d5cbc3 x-ms-traffictypediagnostic: SA0PR11MB4703: x-ld-processed: 46c98d88-e344-4ed4-8496-4ed7712e255d,ExtAddr 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: NGu9vb82tfw3JncHwebpdUjkSOT1speX/TeJs+Z697sl0//lHRuzIErYbvEZ/0HnFk8RTyXVbrNpTfQ6VAFp5g6XVJXgDwmQDFanhkmlS8vGVne6G4FZxMajRTm6NSL+lEOCeRkMv6clyfDoI3fcrRmbqHtIEJszhs2xo9OGIPfETMrb3Urd4aMTgYuHDQ1UToXGZCq5A5VWys2nm6/YyyiVtPcNFtDsXNSQjkFcwiqPxBqcNXOLKIHF8GdiqMCDrJZt+2u86FIDiFs/VzPAde/t7XI5vDQJhOGjpN1HS5OXutOl8V0bQEWUP3HgO16jGdsviQKfhb/pwfVt8J5GxNNV9mcdirn+7b0bRI6NOENTizO5ul7K8AVfAxVvh244neNqc5H4c1+pHL7/GTZZndvBYl1slVjRqE5IPDSQyxk0yg0Xax3lZJHKbITd86Vjkbm94CvmhPIlgNzRAzvz/2UfnYfKalbKEN5Q2QFrZNdtfMDFVDg8rMqjjWFdv39LlFZTa7ksFokL+srww/QdJMntrbN9rrmcIeBPeLw+1Qz4LpfSBSWY77SN5sc0+U5TSQv/+GziYHQtZAKqIGzwJ1qMizp0XYQrR2Mi9wcCjEckOJRPgouhUVBgJrUCPMFAZQG7ebeH53KLJ7h8BVbNFg== x-forefront-antispam-report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:SN6PR11MB3117.namprd11.prod.outlook.com; PTR:; CAT:NONE; SFS:(376002)(136003)(39860400002)(396003)(366004)(346002)(66946007)(9686003)(71200400001)(26005)(2906002)(83380400001)(186003)(316002)(76116006)(66476007)(7696005)(921005)(86362001)(8676002)(4326008)(6506007)(55016002)(33656002)(64756008)(52536014)(66446008)(66556008)(8936002)(110136005)(5660300002)(38100700001)(53546011)(478600001); DIR:OUT; SFP:1102; x-ms-exchange-antispam-messagedata: =?us-ascii?Q?aifTl26i0O+XDAvQkM4bn3j8Kj7JIB+IQDmzDm0lxXR8XU4lW8kS5rKqx7pX?= =?us-ascii?Q?hWuV+So4nCRn95/zHLUmp7nrAee5q/tfsnn+i3aifjmYcFWuvvf06TOm8tKw?= =?us-ascii?Q?dWOYS5pnlV0+0m7N4SLvLO851/7ntIIGRW+V06M91kMTA6RNf0d7SYnXa4yz?= =?us-ascii?Q?tUnWHAOAjLCNobqStfwHd5sauNDMn0FjyhosP3tGTeGBQecvfhjCIz7vdjxz?= =?us-ascii?Q?C05phema8WDDtbhaq6mBKeg1o2Shzq9DOC5k1/Chw1IExYwaxE08lej8GBj5?= =?us-ascii?Q?O+hbAanVVf3dCprs6DecipVLIfo34XvPBY/t/uocdgyWINseGKJNr2qhVktZ?= =?us-ascii?Q?5233jKaYquKtgsa1oDwNu5BTgfnHDrMaN3mLZl4zoli00whX0eBUhD+Zt4o4?= =?us-ascii?Q?rmSgz03wvMG+4WucuDGqEEHmvkjKRg8adV9jMsbj84CC/u24onlUMmaLel/0?= =?us-ascii?Q?FFiAN/OeN+uoihi7U7vt9awBJNQbuDduX3EKRPhVhvgDFIdRg4y9F1u9tAgS?= =?us-ascii?Q?p8fppEsA+r4dcY9B8v9rFw3N4FUWMIorbE5sx1AWvmg+mZjEo0lA83ceSLxX?= =?us-ascii?Q?BfwVZlN5F3yZ8D8H+QRvvYo0ALcQQWR2c+dIkcAAu2R3eD6brJpzndWZP6Wc?= =?us-ascii?Q?8WNk2l0cYSTeA3EOMWLV6RC8fMrnKde9GcUv1OpejjZfZd8DhFz0KPaMu7vs?= =?us-ascii?Q?5SrJXPHfdxaoNsaMOD4ddnXmYnEf5Tc/9J/3CTOKPtzJ+a3HAEv4o8U4M8gq?= =?us-ascii?Q?BFPTojQ6B31+8L2ygXC2U2EdIUZiMzL6J4mZaE+rhMZO2xAZSnvlxvtGP/2f?= =?us-ascii?Q?Vb352pkZ/OjdzNu8iB6XN1M0NdYjVhMSB43W59ZZHHzf2Rqg2aMTmLavuJbh?= =?us-ascii?Q?GW2Tv4F8oLqyj32vlN1CgPsYE35A9RS4pLEFnC5xgYHR27SlO93ZIxPrtXA1?= =?us-ascii?Q?pBhj8xLir8q/FbcpXJHYRlsnEwwKzYhDwSXwClcQtB0OhbIIGc4j4JeqWhqh?= =?us-ascii?Q?TF5HPHTTWCcEl/ikrVGRMmenZo2yHujTr+jpWv5QaMlcqSNyVrfSkfI7MBpc?= =?us-ascii?Q?ZbYe65OQIlhzNqKIB8bmlV367PHIKaBr53YrTAHTpZarVw0avDvHtrLqaxKj?= =?us-ascii?Q?2SysZHJqf5Bn1NRXCAVCpaBmHThqGNWLXHCa4GD8H1VApWBc8ghe8j+hPZCp?= =?us-ascii?Q?S9nyxdO4cumH+tqnItdMlbV84kYS0n2xIXKwwD5QqOqdlCNPoVt/XwCFsCnR?= =?us-ascii?Q?wk4NMncijPx+Qh9RTFx35cB9CLVeWTRCE5SBKifQCmwb0fQdaAzU5h/kPqXF?= =?us-ascii?Q?tgiMve1OozCFCAfG8uG+E/rU?= 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: SN6PR11MB3117.namprd11.prod.outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: df640896-fe58-4a04-a2bd-08d8e9d5cbc3 X-MS-Exchange-CrossTenant-originalarrivaltime: 18 Mar 2021 06:19:32.7078 (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: PfGIq/cwgIDy1QguM8Zt9eoLwBSrxtTK9e2+Ipbk5qECibm7f8kvy9spgzf4q3BhLEFwzom56onvZfKhKUQry2HxbgLxDCsU37STFAPhm+w= X-MS-Exchange-Transport-CrossTenantHeadersStamped: SA0PR11MB4703 X-OriginatorOrg: intel.com 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 buil= d failure. Could you have a look? Thanks! -Jay > -----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 capab= ility >=20 > From: Pavan Nikhilesh >=20 > 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. >=20 > Add a event vector mempool create handler to create mempools based on > the best mempool ops available on a given platform. >=20 > 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(-) >=20 > diff --git a/doc/guides/prog_guide/eventdev.rst b/doc/guides/prog_guide/e= ventdev.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`` >=20 > -These three items in a union occupy the same 64 bits at the end of the r= te_event > +These four items in a union occupy the same 64 bits at the end of the rt= e_event > structure. The application can utilize the 64 bits directly by accessing= 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 convenien= ce > variables. For example the mbuf pointer in the union can used to schedu= le a > DPDK packet. >=20 > +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, al= lowing > +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 vari= able > +length structure. > +A helper function is provided to create a mempool that holds event vecto= r, 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 i= d. > + > +.. code-block:: c > + > + rte_event_vector_pool_create("vector_pool", nb_event_vectors, ca= che_sz, > + nb_elements_per_vector, socket_id); > + > +The function ``rte_event_vector_pool_create`` creates mempool with the b= est > +platform mempool ops. > + > Queues > ~~~~~~ >=20 > 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" { >=20 > #include > #include > -#include > #include > +#include > +#include > +#include >=20 > #include "rte_eventdev_trace_fp.h" >=20 > @@ -913,6 +915,25 @@ rte_event_dev_stop_flush_callback_register(uint8_t d= ev_id, > int > rte_event_dev_close(uint8_t dev_id); >=20 > +/** > + * 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 ev= ents > + * 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_TYP= E_CPU) > +/**< The event vector generated from cpu for pipelining. */ > + > #define RTE_EVENT_TYPE_MAX 0x10 > /**< Maximum number of event types */ >=20 > @@ -2023,6 +2059,78 @@ rte_event_dev_xstats_reset(uint8_t dev_id, > */ > int rte_event_dev_selftest(uint8_t dev_id); >=20 > +/** > + * Get the memory required per event vector based on the number of eleme= nts per > + * vector. > + * This should be used to create the mempool that holds the event vector= s. > + * > + * @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 err= or > + * with rte_errno set appropriately. Possible rte_errno values include= : > + * - E_RTE_NO_CONFIG - function could not get pointer to rte_config s= tructure > + * - E_RTE_SECONDARY - function was called from a secondary process i= nstance > + * - EINVAL - cache size provided is too large, or priv_size is not a= ligned. > + * - ENOSPC - the maximum number of memzones has already been allocat= ed > + * - EEXIST - a memzone with the same name already exists > + * - ENOMEM - no appropriate memory area found in which to create mem= zone > + */ > +__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/versio= n.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; > }; >=20 > INTERNAL { > -- > 2.17.1