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 470BAA0C41; Tue, 5 Oct 2021 09:19:19 +0200 (CEST) Received: from [217.70.189.124] (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id C42134124E; Tue, 5 Oct 2021 09:19:18 +0200 (CEST) Received: from mga17.intel.com (mga17.intel.com [192.55.52.151]) by mails.dpdk.org (Postfix) with ESMTP id 01D77410DC for ; Tue, 5 Oct 2021 09:19:16 +0200 (CEST) X-IronPort-AV: E=McAfee;i="6200,9189,10127"; a="206488303" X-IronPort-AV: E=Sophos;i="5.85,348,1624345200"; d="scan'208";a="206488303" Received: from orsmga001.jf.intel.com ([10.7.209.18]) by fmsmga107.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 05 Oct 2021 00:19:15 -0700 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.85,348,1624345200"; d="scan'208";a="521741194" Received: from orsmsx602.amr.corp.intel.com ([10.22.229.15]) by orsmga001.jf.intel.com with ESMTP; 05 Oct 2021 00:19:15 -0700 Received: from orsmsx602.amr.corp.intel.com (10.22.229.15) by ORSMSX602.amr.corp.intel.com (10.22.229.15) 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 00:19:15 -0700 Received: from ORSEDG602.ED.cps.intel.com (10.7.248.7) by orsmsx602.amr.corp.intel.com (10.22.229.15) 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 00:19:15 -0700 Received: from NAM10-MW2-obe.outbound.protection.outlook.com (104.47.55.103) by edgegateway.intel.com (134.134.137.103) 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 00:19:15 -0700 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=epepHWpI0BDnK56Z2n0aHYHqWG5FsVLR/NzPknWuVNMH9czCI4n+x+8qSprjDnMTwY13B0G28x2XPX5je3xFI17wLPdsmgX8SEjgwDX3glukNIg3xP8XZYGqb+u/YbvCyso6R1Z7ZXVcnvXE9zkK9u0mbGWWjrKCSAlViaX2X5wfQ+k/uJsEkCqoMcAWfLlcmdoE7pXW44b54J8oSUmgGwmH65aF6rMe0GIZeiIjfigVtcRb3x1Uk6+Iin2UD5b9XtZjE69PcVbxj28MQnl6eb+och2aN4Rk8mvB30bPdHc7zqwffvBcQaEAXnDbxepfDoD6wpbcO+FopO3I1uBrjQ== 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=P8qRfPFxW2paNK8TjsgtJnusSB3CJUbHYDQ32r4/ms0=; b=a4jGe5g1ybS+ktt0tKs4QcC/VxSWq96sM0c7/gqji6c5KkPUDLouZJi+C8D4RXfClifUIP27qx52rf8/DwuWRQBja4gWAF+wv8LXObfyi0xLURIN03DS2DV/AOoQYnWOuYCaEdUApJzoQ+2a3pfzU1eHabED1VxW2Cpt8L/Yy2V/B7011gcPpV121KT/npo/Knh1ztAPngFcPuejUea7icUoLkJ14pPesvkNEzSVDmQLgCdc2fhF74DglufPpakFKlOGWuErlhmzukICZcYkvewGTsalN/7iJqPoTw3vJl5cUfavgUt78jHaH1dXZMO4VyUGs9g7FRqF9PrV7o9W2A== 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=P8qRfPFxW2paNK8TjsgtJnusSB3CJUbHYDQ32r4/ms0=; b=wJioxghPFirUoY7RIfUno5W140jas730ov7EjpTI+qP8dXz1Ra620UhRXGFFhWdo9w4zm7YPTTDa2MVwO29Wkz8EqpSrwcChYwlMOMvh5F6O56hW0e6E+7pbj9g2EhVf2p3cR7su1UPAG1bmOh2WaxGlwWHnoaYiDMtwODUjILI= Received: from BN6SPR00MB239.namprd11.prod.outlook.com (10.172.24.151) by BN7PR11MB2772.namprd11.prod.outlook.com (52.135.255.20) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4566.22; Tue, 5 Oct 2021 07:19:14 +0000 Received: from BN6SPR00MB239.namprd11.prod.outlook.com ([fe80::ccd0:582d:7ffc:6102]) by BN6SPR00MB239.namprd11.prod.outlook.com ([fe80::ccd0:582d:7ffc:6102%6]) with mapi id 15.20.4566.022; Tue, 5 Oct 2021 07:19:14 +0000 From: "Jayatheerthan, Jay" To: "Naga Harish K, S V" , "jerinj@marvell.com" CC: "dev@dpdk.org" , "Kundapura, Ganapati" Thread-Topic: [PATCH v5 1/5] eventdev/rx_adapter: add event buffer size configurability Thread-Index: AQHXuOJ2Eugu7ec2qUGGHGHf0wnn16vD8YoQ Date: Tue, 5 Oct 2021 07:19:13 +0000 Message-ID: References: <20210930082901.293541-1-s.v.naga.harish.k@intel.com> <20211004054108.3890018-1-s.v.naga.harish.k@intel.com> In-Reply-To: <20211004054108.3890018-1-s.v.naga.harish.k@intel.com> Accept-Language: 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: intel.com; dkim=none (message not signed) header.d=none;intel.com; dmarc=none action=none header.from=intel.com; x-ms-publictraffictype: Email x-ms-office365-filtering-correlation-id: 06b9f109-7646-4048-7ae9-08d987d06f83 x-ms-traffictypediagnostic: BN7PR11MB2772: x-ms-exchange-transport-forked: True x-microsoft-antispam-prvs: x-ms-oob-tlc-oobclassifiers: OLM:324; x-ms-exchange-senderadcheck: 1 x-ms-exchange-antispam-relay: 0 x-microsoft-antispam: BCL:0; x-microsoft-antispam-message-info: rvu4UoTLnX71TGYzqSuiAdeqw1gPJKG6JAVH1KHKQTM1kJetRo8SQD+0Oy7CwL7LuoQDwJm3lj/orAbFR64aidzqq1unWno1jJiQX/zu68V0Jhwl1mBPysy0yC8agC10M5Faul4ncFTuPQ2n7qJtE0f0NxpUTULBY9j2kVldYYPE8S7SQpYzcZPEndpQZ7zKMun/Z5ec2uQGZemawplnoPRzVyuiwB50jUY0egWaZ5z14g1HlPsl3uxJcd9CM8Q/9LGEzHlZjZC/93KPwjwdSd6oSG+dfc3p1hdNQ42TTL0s/RJM3WS5sK+lBI93Gi7LivyXTDkcqZdosOBzOHLqNVjPXTqb3jNJzPvm4I4zbQh7aQAz9aSFIbsU/s7VUTLSVB5KAdkblhf8v+EeTX/sWBf8L/C94kisIRy+EiLfu+d6PvU6kiVY1joWz142jGUHJm9yTMiB8g09j7xGaBVzI70yoojkm3XvPkVe0/d4HV4NUhS2juPsYkUsI50YgZyUJbV89RqXoS/nHKR1Rt965/Midv5MGuxLXJcF2ViqBfFzJxpIiRX5SWjZfWrhA8SQOW9pv3fgvX2cXRCUnYS54Q0hp7anru+5N9vEdvehuQrC+YSVtO8teGwIH0xBTwYboQKfkSduKU7AaP+sZRpeIRfq486BHNobB2NHyRL7Gdt9G2prXaFbl2ARAxP8FK7sEHibIQIrMiS6hKMn6A/lAg== x-forefront-antispam-report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:BN6SPR00MB239.namprd11.prod.outlook.com; PTR:; CAT:NONE; SFS:(4636009)(366004)(6506007)(508600001)(66556008)(83380400001)(64756008)(26005)(7696005)(66446008)(66946007)(53546011)(76116006)(66476007)(4326008)(30864003)(186003)(8676002)(86362001)(33656002)(38070700005)(5660300002)(52536014)(107886003)(316002)(122000001)(38100700002)(8936002)(55016002)(54906003)(2906002)(9686003)(71200400001)(110136005); DIR:OUT; SFP:1102; x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?us-ascii?Q?2TatlUTmHtrzbeIkOXxRa184qT+Xl4+oLYqSOdXXzK0HhmWnX475XGhiaD+d?= =?us-ascii?Q?ah+nQ7oIR+ZE/ILUXb6ToHTYMrR3J0ATCVcnjf4Otsz3wQHyyfitbkvjO3Km?= =?us-ascii?Q?v3YWl7AkNReKZj+Y61/DD1VisAPt+pZPaWt1Nh0cJ9JIpEQ2XoI7sx99aiFu?= =?us-ascii?Q?vmbxvaA/xNtQjKY1IuqdJqvwVjHIOOO4CGKlQs2pdpX6fqBFvNbukAuyaSwt?= =?us-ascii?Q?vl7ttGdz2of0EEl/4YPeg0tlSwiS9tdn6VJ7so9EMDqzpw29vGabyOgsLS4Y?= =?us-ascii?Q?0hwhNZUZC9y8Vnv9t9TBlRwLNeQI0QAwVZtlE4M7dNIscbLXjgstgPUVoWBo?= =?us-ascii?Q?TPmHktddxrlvtuByxRpcz+tioTLnZ33CAi9ehN3rtfZ05P8hHz72yTfCaV9n?= =?us-ascii?Q?ysp++WxanlNgdBju4hiBcd2EGE3v9FpWEIAk7QSK1rJA+5CjZoJdy+kQR116?= =?us-ascii?Q?MdQlse2J//81xqdvYNke/A5fkJIMwN1/CcwlqOT4SMBWsXh5+pLUG/NcoJYm?= =?us-ascii?Q?bltv3QQW0dOWobFshB12FRcPtMlaVcTEpkGKmCpv0Wn0NF0C0TtjHv+Xf+M2?= =?us-ascii?Q?5tCy5E6cU/MFnQ5uQlq/p4YRtgM1N1c1vVOchwF1a94Bqy36Qw8HwgUSdk2m?= =?us-ascii?Q?9TkTOZLrnYhVrwkBIboKfR7BcG9r2eX7DQbgRzNZasAqsRLLaFFQEMQWcpd9?= =?us-ascii?Q?EJ6HRP6QKTmVx+gXuY9Rp08ZNPdURqVXqI7VTSaA0K2B6WHysDaBd11SP0lz?= =?us-ascii?Q?C48Czs/2cUt8SHTf6oLEbP9DhaFcuRsms+ZoHoppu9djaT01HdXD17OJjfFO?= =?us-ascii?Q?iqH5PnSKk1BeE6fLNWRoAWC/zYvNwT9oVr7QCEyKekg90xnTfUuXhfJrAYcS?= =?us-ascii?Q?KsVmfyQcB+olR/EVY2IPHySym5glgzfK7H0Cx+/sY8RzfYFp+EuGgKpx0RW2?= =?us-ascii?Q?QE7WF1JYTyYGEfbnCMhfZTNZ5kCxcXTKPUkYTaIsuvOXO0dKFxRXKKy+dawf?= =?us-ascii?Q?5Q4WAEd/GLlXC+D5JSkxhrSG4RF6eAW1WTepLqqFBBo8GWwiYac0OC5x9QtD?= =?us-ascii?Q?M2+sZda6nrLvkBI37zLyUn+qIvRgUuzSQkrzmaaZc/i2LqONmFSVrIP4Ai4X?= =?us-ascii?Q?7VEKhHXCRg99GN+6un3E96+EDvCx5R668tlqC0Z75tTqj2NaKZ8pSyvENdn+?= =?us-ascii?Q?kjkYvR6ZC6U0U9L9jZeQEMhkcM+j9z2dp2bNPf/Fjw6SJt4c86KlFuX0Z3E9?= =?us-ascii?Q?1SD7ajY5JnDHN/k1uAcLgpN7Y0rbj65sCgKHISoq080IIBlWUMN/VawgwCn1?= =?us-ascii?Q?s1Tc//TV84b22sgAxl8tTg/O?= 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: BN6SPR00MB239.namprd11.prod.outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: 06b9f109-7646-4048-7ae9-08d987d06f83 X-MS-Exchange-CrossTenant-originalarrivaltime: 05 Oct 2021 07:19:13.9822 (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: XC8zFuxblFLZ0B9d1SQPfE9sY2BR/gTHLAj9YGB6F/+BxqCU6e1hraK2EHXsaD/fj9agjq0upTM2Mn9zMYeRwqWcFTQC2S96ne9TNyQPAT4= X-MS-Exchange-Transport-CrossTenantHeadersStamped: BN7PR11MB2772 X-OriginatorOrg: intel.com Subject: Re: [dpdk-dev] [PATCH v5 1/5] eventdev/rx_adapter: add event buffer size configurability 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" > -----Original Message----- > From: Naga Harish K, S V > Sent: Monday, October 4, 2021 11:11 AM > To: jerinj@marvell.com; Jayatheerthan, Jay > Cc: dev@dpdk.org; Kundapura, Ganapati > Subject: [PATCH v5 1/5] eventdev/rx_adapter: add event buffer size config= urability >=20 > Currently event buffer is static array with a default size defined > internally. >=20 > To configure event buffer size from application, > ``rte_event_eth_rx_adapter_create_with_params`` api is added which > takes ``struct rte_event_eth_rx_adapter_params`` to configure event > buffer size in addition other params . The event buffer size is > rounded up for better buffer utilization and performance . In case > of NULL params argument, default event buffer size is used. >=20 > Signed-off-by: Naga Harish K S V > Signed-off-by: Ganapati Kundapura >=20 > --- > v5: > * reverted queue conf get unit test change >=20 > v4: > * rebased with latest dpdk-next-eventdev branch > * changed queue conf get unit test >=20 > v3: > * updated documentation and code comments as per review comments. > * updated new create api test case name with suitable one. >=20 > v2: > * Updated header file and rx adapter documentation as per review comments= . > * new api name is modified as rte_event_eth_rx_adapter_create_with_params > as per review comments. > * rxa_params pointer argument Value NULL is allowed to represent the > default values >=20 > v1: > * Initial implementation with documentation and unit tests. > --- > --- > .../prog_guide/event_ethernet_rx_adapter.rst | 7 ++ > lib/eventdev/rte_event_eth_rx_adapter.c | 98 +++++++++++++++++-- > lib/eventdev/rte_event_eth_rx_adapter.h | 41 +++++++- > lib/eventdev/version.map | 2 + > 4 files changed, 140 insertions(+), 8 deletions(-) >=20 > diff --git a/doc/guides/prog_guide/event_ethernet_rx_adapter.rst b/doc/gu= ides/prog_guide/event_ethernet_rx_adapter.rst > index ce23d8a474..8526aecf57 100644 > --- a/doc/guides/prog_guide/event_ethernet_rx_adapter.rst > +++ b/doc/guides/prog_guide/event_ethernet_rx_adapter.rst > @@ -62,6 +62,13 @@ service function and needs to create an event port for= it. The callback is > expected to fill the ``struct rte_event_eth_rx_adapter_conf structure`` > passed to it. >=20 > +If the application desires to control the event buffer size, it can use = the > +``rte_event_eth_rx_adapter_create_with_params()`` api. The event buffer = size is > +specified using ``struct rte_event_eth_rx_adapter_params::event_buf_size= ``. > +The function is passed the event device to be associated with the adapte= r > +and port configuration for the adapter to setup an event port if the > +adapter needs to use a service function. > + > Adding Rx Queues to the Adapter Instance > ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ >=20 > diff --git a/lib/eventdev/rte_event_eth_rx_adapter.c b/lib/eventdev/rte_e= vent_eth_rx_adapter.c > index 10491ca07b..606db241b8 100644 > --- a/lib/eventdev/rte_event_eth_rx_adapter.c > +++ b/lib/eventdev/rte_event_eth_rx_adapter.c > @@ -85,7 +85,9 @@ struct rte_eth_event_enqueue_buffer { > /* Count of events in this buffer */ > uint16_t count; > /* Array of events in this buffer */ > - struct rte_event events[ETH_EVENT_BUFFER_SIZE]; > + struct rte_event *events; > + /* size of event buffer */ > + uint16_t events_size; > /* Event enqueue happens from head */ > uint16_t head; > /* New packets from rte_eth_rx_burst is enqued from tail */ > @@ -946,7 +948,7 @@ rxa_buffer_mbufs(struct rte_event_eth_rx_adapter *rx_= adapter, > dropped =3D 0; > nb_cb =3D dev_info->cb_fn(eth_dev_id, rx_queue_id, > buf->last | > - (RTE_DIM(buf->events) & ~buf->last_mask), > + (buf->events_size & ~buf->last_mask), > buf->count >=3D BATCH_SIZE ? > buf->count - BATCH_SIZE : 0, > &buf->events[buf->tail], > @@ -972,7 +974,7 @@ rxa_pkt_buf_available(struct rte_eth_event_enqueue_bu= ffer *buf) > uint32_t nb_req =3D buf->tail + BATCH_SIZE; >=20 > if (!buf->last) { > - if (nb_req <=3D RTE_DIM(buf->events)) > + if (nb_req <=3D buf->events_size) > return true; >=20 > if (buf->head >=3D BATCH_SIZE) { > @@ -2206,12 +2208,15 @@ rxa_ctrl(uint8_t id, int start) > return 0; > } >=20 > -int > -rte_event_eth_rx_adapter_create_ext(uint8_t id, uint8_t dev_id, > - rte_event_eth_rx_adapter_conf_cb conf_cb, > - void *conf_arg) > +static int > +rxa_create(uint8_t id, uint8_t dev_id, > + struct rte_event_eth_rx_adapter_params *rxa_params, > + rte_event_eth_rx_adapter_conf_cb conf_cb, > + void *conf_arg) > { > struct rte_event_eth_rx_adapter *rx_adapter; > + struct rte_eth_event_enqueue_buffer *buf; > + struct rte_event *events; > int ret; > int socket_id; > uint16_t i; > @@ -2226,6 +2231,7 @@ rte_event_eth_rx_adapter_create_ext(uint8_t id, uin= t8_t dev_id, >=20 > RTE_EVENT_ETH_RX_ADAPTER_ID_VALID_OR_ERR_RET(id, -EINVAL); > RTE_EVENTDEV_VALID_DEVID_OR_ERR_RET(dev_id, -EINVAL); > + > if (conf_cb =3D=3D NULL) > return -EINVAL; >=20 > @@ -2273,11 +2279,30 @@ rte_event_eth_rx_adapter_create_ext(uint8_t id, u= int8_t dev_id, > rte_free(rx_adapter); > return -ENOMEM; > } > + > rte_spinlock_init(&rx_adapter->rx_lock); > + > for (i =3D 0; i < RTE_MAX_ETHPORTS; i++) > rx_adapter->eth_devices[i].dev =3D &rte_eth_devices[i]; >=20 > + /* Rx adapter event buffer allocation */ > + buf =3D &rx_adapter->event_enqueue_buffer; > + buf->events_size =3D RTE_ALIGN(rxa_params->event_buf_size, BATCH_SIZE); Do we need to align event_buf_size again here ? The caller seems to take ca= re of it. > + > + events =3D rte_zmalloc_socket(rx_adapter->mem_name, > + buf->events_size * sizeof(*events), > + 0, socket_id); > + if (events =3D=3D NULL) { > + RTE_EDEV_LOG_ERR("Failed to allocate mem for event buffer\n"); > + rte_free(rx_adapter->eth_devices); > + rte_free(rx_adapter); > + return -ENOMEM; > + } > + > + rx_adapter->event_enqueue_buffer.events =3D events; > + > event_eth_rx_adapter[id] =3D rx_adapter; > + > if (conf_cb =3D=3D rxa_default_conf_cb) > rx_adapter->default_cb_arg =3D 1; >=20 > @@ -2293,6 +2318,61 @@ rte_event_eth_rx_adapter_create_ext(uint8_t id, ui= nt8_t dev_id, > return 0; > } >=20 > +int > +rte_event_eth_rx_adapter_create_ext(uint8_t id, uint8_t dev_id, > + rte_event_eth_rx_adapter_conf_cb conf_cb, > + void *conf_arg) > +{ > + struct rte_event_eth_rx_adapter_params rxa_params; Can initialize rxa_params in case if more fields get added in future that w= e don't assign here. > + > + /* use default values for adapter params */ > + rxa_params.event_buf_size =3D ETH_EVENT_BUFFER_SIZE; > + > + return rxa_create(id, dev_id, &rxa_params, conf_cb, conf_arg); > +} > + > +int > +rte_event_eth_rx_adapter_create_with_params(uint8_t id, uint8_t dev_id, > + struct rte_event_port_conf *port_config, > + struct rte_event_eth_rx_adapter_params *rxa_params) > +{ > + struct rte_event_port_conf *pc; > + int ret; > + struct rte_event_eth_rx_adapter_params temp_params =3D {0}; > + > + if (port_config =3D=3D NULL) > + return -EINVAL; > + > + /* use default values if rxa_parmas is NULL */ > + if (rxa_params =3D=3D NULL) { > + rxa_params =3D &temp_params; > + rxa_params->event_buf_size =3D ETH_EVENT_BUFFER_SIZE; > + } > + > + if (rxa_params->event_buf_size =3D=3D 0) > + return -EINVAL; > + > + pc =3D rte_malloc(NULL, sizeof(*pc), 0); > + if (pc =3D=3D NULL) > + return -ENOMEM; > + > + *pc =3D *port_config; > + > + /* adjust event buff size with BATCH_SIZE used for fetching packets > + * from NIC rx queues to get full buffer utilization and prevent > + * unnecessary rollovers. > + */ > + rxa_params->event_buf_size =3D RTE_ALIGN(rxa_params->event_buf_size, > + BATCH_SIZE); > + rxa_params->event_buf_size +=3D BATCH_SIZE + BATCH_SIZE; Please add brackets to be more explicit and readable. > + > + ret =3D rxa_create(id, dev_id, rxa_params, rxa_default_conf_cb, pc); > + if (ret) > + rte_free(pc); > + > + return ret; > +} > + > int > rte_event_eth_rx_adapter_create(uint8_t id, uint8_t dev_id, > struct rte_event_port_conf *port_config) > @@ -2302,12 +2382,14 @@ rte_event_eth_rx_adapter_create(uint8_t id, uint8= _t dev_id, >=20 > if (port_config =3D=3D NULL) > return -EINVAL; > + > RTE_EVENT_ETH_RX_ADAPTER_ID_VALID_OR_ERR_RET(id, -EINVAL); >=20 > pc =3D rte_malloc(NULL, sizeof(*pc), 0); > if (pc =3D=3D NULL) > return -ENOMEM; > *pc =3D *port_config; > + > ret =3D rte_event_eth_rx_adapter_create_ext(id, dev_id, > rxa_default_conf_cb, > pc); > @@ -2336,6 +2418,7 @@ rte_event_eth_rx_adapter_free(uint8_t id) > if (rx_adapter->default_cb_arg) > rte_free(rx_adapter->conf_arg); > rte_free(rx_adapter->eth_devices); > + rte_free(rx_adapter->event_enqueue_buffer.events); > rte_free(rx_adapter); > event_eth_rx_adapter[id] =3D NULL; >=20 > @@ -2711,6 +2794,7 @@ rte_event_eth_rx_adapter_stats_get(uint8_t id, >=20 > stats->rx_packets +=3D dev_stats_sum.rx_packets; > stats->rx_enq_count +=3D dev_stats_sum.rx_enq_count; > + > return 0; > } >=20 > diff --git a/lib/eventdev/rte_event_eth_rx_adapter.h b/lib/eventdev/rte_e= vent_eth_rx_adapter.h > index 470543e434..846ca569e9 100644 > --- a/lib/eventdev/rte_event_eth_rx_adapter.h > +++ b/lib/eventdev/rte_event_eth_rx_adapter.h > @@ -26,6 +26,7 @@ > * The ethernet Rx event adapter's functions are: > * - rte_event_eth_rx_adapter_create_ext() > * - rte_event_eth_rx_adapter_create() > + * - rte_event_eth_rx_adapter_create_with_params() > * - rte_event_eth_rx_adapter_free() > * - rte_event_eth_rx_adapter_queue_add() > * - rte_event_eth_rx_adapter_queue_del() > @@ -37,7 +38,7 @@ > * > * The application creates an ethernet to event adapter using > * rte_event_eth_rx_adapter_create_ext() or rte_event_eth_rx_adapter_cre= ate() > - * functions. > + * or rte_event_eth_rx_adapter_create_with_params() functions. > * The adapter needs to know which ethernet rx queues to poll for mbufs = as well > * as event device parameters such as the event queue identifier, event > * priority and scheduling type that the adapter should use when constru= cting > @@ -257,6 +258,17 @@ struct rte_event_eth_rx_adapter_vector_limits { > */ > }; >=20 > +/** > + * A structure to hold adapter config params > + */ > +struct rte_event_eth_rx_adapter_params { > + uint16_t event_buf_size; > + /**< size of event buffer for the adapter. > + * This value is rounded up for better buffer utilization > + * and performance. > + */ > +}; > + > /** > * > * Callback function invoked by the SW adapter before it continues > @@ -357,6 +369,33 @@ int rte_event_eth_rx_adapter_create_ext(uint8_t id, = uint8_t dev_id, > int rte_event_eth_rx_adapter_create(uint8_t id, uint8_t dev_id, > struct rte_event_port_conf *port_config); >=20 > +/** > + * This is a variant of rte_event_eth_rx_adapter_create() with additiona= l > + * adapter params specified in ``struct rte_event_eth_rx_adapter_params`= `. > + * > + * @param id > + * The identifier of the ethernet Rx event adapter. > + * > + * @param dev_id > + * The identifier of the event device to configure. > + * > + * @param port_config > + * Argument of type *rte_event_port_conf* that is passed to the conf_cb > + * function. > + * > + * @param rxa_params > + * Pointer to struct rte_event_eth_rx_adapter_params. > + * In case of NULL, default values are used. > + * > + * @return > + * - 0: Success > + * - <0: Error code on failure > + */ > +__rte_experimental > +int rte_event_eth_rx_adapter_create_with_params(uint8_t id, uint8_t dev_= id, > + struct rte_event_port_conf *port_config, > + struct rte_event_eth_rx_adapter_params *rxa_params); > + > /** > * Free an event adapter > * > diff --git a/lib/eventdev/version.map b/lib/eventdev/version.map > index 9f280160fa..7de18497a6 100644 > --- a/lib/eventdev/version.map > +++ b/lib/eventdev/version.map > @@ -138,6 +138,8 @@ EXPERIMENTAL { > __rte_eventdev_trace_port_setup; > # added in 20.11 > rte_event_pmd_pci_probe_named; > + # added in 21.11 > + rte_event_eth_rx_adapter_create_with_params; >=20 > #added in 21.05 > rte_event_vector_pool_create; > -- > 2.25.1