From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-13.5 required=3.0 tests=BAYES_00,DKIM_INVALID, DKIM_SIGNED,HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_CR_TRAILER,INCLUDES_PATCH, MAILING_LIST_MULTI,SPF_HELO_NONE,SPF_PASS,URIBL_BLOCKED autolearn=ham autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id A4130C433EF for ; Tue, 21 Sep 2021 20:24:37 +0000 (UTC) Received: from mails.dpdk.org (mails.dpdk.org [217.70.189.124]) by mail.kernel.org (Postfix) with ESMTP id 0D4F861168 for ; Tue, 21 Sep 2021 20:24:36 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.4.1 mail.kernel.org 0D4F861168 Authentication-Results: mail.kernel.org; dmarc=fail (p=none dis=none) header.from=marvell.com Authentication-Results: mail.kernel.org; spf=pass smtp.mailfrom=dpdk.org Received: from [217.70.189.124] (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id 0FC384003F; Tue, 21 Sep 2021 22:24:36 +0200 (CEST) Received: from mx0b-0016f401.pphosted.com (mx0a-0016f401.pphosted.com [67.231.148.174]) by mails.dpdk.org (Postfix) with ESMTP id 7C59C4003C for ; Tue, 21 Sep 2021 22:24:34 +0200 (CEST) Received: from pps.filterd (m0045849.ppops.net [127.0.0.1]) by mx0a-0016f401.pphosted.com (8.16.1.2/8.16.1.2) with SMTP id 18LGsnOU011085; Tue, 21 Sep 2021 13:24:33 -0700 Received: from nam11-dm6-obe.outbound.protection.outlook.com (mail-dm6nam11lp2173.outbound.protection.outlook.com [104.47.57.173]) by mx0a-0016f401.pphosted.com with ESMTP id 3b7kb4gt8u-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Tue, 21 Sep 2021 13:24:33 -0700 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=UXwbPWK8xNQWamF5BsakB4xnX5E6GUPdhip9ZbR7IkaXHTm4KlROF+yCruTqsNcu19ys7qu26LUAmXrtr4rngIr/YZnxqxt4dT73Pe0S7qjV65EbWfuJb2LyFrKG8DIo84LwATpEmootX9QlZIQKGQtoI8yE1mb4MbuBmJwlySY5/XV4O/dt+g4R0Xa8e4CGxCn+zCwar+sWNeS5CnetJgZE3D2BkMH3Df2Y/Tj78vdXDxT/8dg/MB0840sdJhju/TAbEEhzZ4n/Xy6B+D9k77tz9mXZjDMLNg3ECyhSnMR4GfMOLMiRa0SMUvwUC7WDSWNJXRH3M+lkbyXwLek91A== 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; bh=KOWKCsKyn687u88yft9SAvBddmxcm2PMA+yvGRPZv4c=; b=UM4HAr5jywg/m5X9vvQ3Alidmeye/GrrKC5TfiBf1p9hYfEl7TqvPlAcOo6rDPuGDM7j3H0TaTQQ4R/IIfhx8r6Jq8asRiPxuKgR5+qzMjvv8P1r0QVF5KJ53DLd+Qfmodbye6AeLoTWOEkSNnRL7FB9QWLvRaoQTPmC0+49vhFPZgUkMlLg8sFXiEMD20BCpaFiL6kpzdZVkjqbQsJZxf6oohrW2ds/xGGvfInFvZDlNMfWn3xMh2dH5HblBmTkFws29NqZWOwbUJytTGdZlr06DODDvP/uKV4AC2hkqpudAjNTtsxMSCxuN1xcg82JTVEsLtRSwV1Vu16yakYtmg== 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=KOWKCsKyn687u88yft9SAvBddmxcm2PMA+yvGRPZv4c=; b=L6EPutWeQmHUAP2yhIhcdFmndhBqmSbV08zbA2BAohtPgSVg4ecGT6p9DJgXbAy9yt6E39mRgdXKFMxZ5fPSCULeDdM8TI8lMGbuJjco+jn5OL2jA2FvZej8sFjZ49jTvRChBPTdwFRJ+i0KDBAXRX5MeYe3R6azrP95O7cc+FI= Received: from PH0PR18MB4086.namprd18.prod.outlook.com (2603:10b6:510:3::9) by PH0PR18MB3816.namprd18.prod.outlook.com (2603:10b6:510:49::9) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4523.16; Tue, 21 Sep 2021 20:24:30 +0000 Received: from PH0PR18MB4086.namprd18.prod.outlook.com ([fe80::94d1:2b0c:115f:5a75]) by PH0PR18MB4086.namprd18.prod.outlook.com ([fe80::94d1:2b0c:115f:5a75%7]) with mapi id 15.20.4523.018; Tue, 21 Sep 2021 20:24:30 +0000 From: Pavan Nikhilesh Bhagavatula To: Naga Harish K S V , Jerin Jacob Kollanukkaran , "jay.jayatheerthan@intel.com" CC: "dev@dpdk.org" , Ganapati Kundapura Thread-Topic: [EXT] [dpdk-dev] [PATCH v2 1/5] eventdev/rx_adapter: add support to configure event buffer size Thread-Index: AQHXrs2L0N/4/3T6Yke+MM0Jl0hE0auu7Z7A Date: Tue, 21 Sep 2021 20:24:30 +0000 Message-ID: References: <20210918131140.3543317-1-s.v.naga.harish.k@intel.com> <20210921094559.1788022-1-s.v.naga.harish.k@intel.com> In-Reply-To: <20210921094559.1788022-1-s.v.naga.harish.k@intel.com> Accept-Language: en-IN, en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: x-ms-publictraffictype: Email x-ms-office365-filtering-correlation-id: f2eb28a7-226b-428c-5c6f-08d97d3dd12e x-ms-traffictypediagnostic: PH0PR18MB3816: x-ms-exchange-transport-forked: True x-microsoft-antispam-prvs: x-ms-oob-tlc-oobclassifiers: OLM:7691; x-ms-exchange-senderadcheck: 1 x-ms-exchange-antispam-relay: 0 x-microsoft-antispam: BCL:0; x-microsoft-antispam-message-info: pjby21bCziZBPOwvWeNp8GgZAxKHy/b/oGNf+v+IIcAUr3j4m+dRcpjzmeMfvGTioWI68ruMVa/Jz7GAvrXmWkr2Jh06KUeBgj1Y1xMJ5Fk66eRS510N7LddMYz4lYzNu9yzw2W4H5jl2ns4pAhnrmoY4NoNTFph2yrTyEBeELYVWZyH5LaRVfdXEa+o2TrGrmtflVRu3I1HhKzw1QyDhKJB+gshFmsR54OJhH0V1F7wSxCCjL2AR1avv36k6Ut2YdYDTp0AVIQlqefVvhwBl9v00qTFzh7jD9wpkgemIJoVAMjwfM6VUEGFk+ywHnFMRYL2K9Bj5TmnvOuZSzfosu0V8U7exFLzazf7Q15CP9aA9Vrad4Yf4Ggt++7gq7rs6HQ36qaLRb6QMax404mA+MNdmzkUjvs+piZR3PJAd1G/iOMDKWLilzBkETYdSPxHLqGCwN/virejwg8HBE1cbxqIAlOTRQzUnrzrB4knO7T2p/XJfHyH6xwoxpLq2L7evyXs453/xwKFg3SeJmlXfiznOv/6BH8VLjrYV+rNuJICFx1JFYbUW4nbGUdLIkQXsIURuBngRrW4MQF4K0bfo6dn+w3tyh+IaXCE1rdbRQhACupvrc6PjaS9GRiUIdQTZJryS5ohM9KAIu9bJZoW/a4q9qlHbyiZNmPYWtTZ83zgWqt8NrPhRZOCoUIF4n531p2QONoKe1RlklW6hEJW9A== 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)(366004)(33656002)(8936002)(9686003)(83380400001)(316002)(55016002)(86362001)(508600001)(30864003)(110136005)(38070700005)(54906003)(2906002)(8676002)(5660300002)(186003)(66446008)(66476007)(7696005)(76116006)(66946007)(64756008)(38100700002)(4326008)(6506007)(52536014)(66556008)(122000001)(71200400001); DIR:OUT; SFP:1101; x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?us-ascii?Q?F6IPNTzQjJKjQ9QFx+uryoSuBfEgRZdjLv13S5NhW9xtYEyesQ+NBFtq1b05?= =?us-ascii?Q?kZv+Ym9AVoBjRt+khaUbOzb0c63Vi1T2NFhzx0MZogufbmjFlcjeGgbX6emL?= =?us-ascii?Q?D3Ge/WzrZD/Li3YU7HaQr/H1ul800RW29dKEy5mJQUYMWsXfRMTRXlg1dHkL?= =?us-ascii?Q?BQLXBMaBNuie5TvubmJQIFXjExq79ScJkTKbuuGL/kmsKAw67XOMkfCapI/k?= =?us-ascii?Q?zDr4NX0u794I2xkh9Wv/xjDTj1b0qNOCToaqhpu8hBHi6ipkWdjde8EmJaUU?= =?us-ascii?Q?Zh9xS3Ola2cAcH4S9Zc4/nk29fQ1Nv5/+k8nUAncUNQNA6WtyUo9/Z9R5nln?= =?us-ascii?Q?rN+q7MtqoVns1dDnZlxXfRDP20TOaUKUKOeVmMqC4T2TK6jIIil1LygY97tJ?= =?us-ascii?Q?EN8PNXb1W6fin8cr7XBYBBj/nYjSlqVCWXa9xYBFNVi/lVun2ukozpBbfe4g?= =?us-ascii?Q?0EOYaI4y8dfRCr2cgG6ed1Hf2kojeAKLENnBzsudxMuIw9NpjIrTmE34TsTu?= =?us-ascii?Q?KTWrOXTryT1iSf4FW5VpbuFwW4ZGhSYlNoeTV8eYdJujGLhnYR5UdcaBqkm2?= =?us-ascii?Q?6EwBZQNpxfJ+DNds8/vtPe26Od+mFdrY9Px9CXHLjFw/2WVYYhhuMMAdXRys?= =?us-ascii?Q?yMSCtsuwy0RSUFP4ZT41mswu/+zDUKq4DhAfujIAK7r0gCRAKr5EYnDxPlQi?= =?us-ascii?Q?w8eXKpYs9Bts0a1kR4RKstXheLlZ+bpUvke6xxIEz/1zWqlnPs9oULPwfK/w?= =?us-ascii?Q?eGhND0s6thKbKRCc50BPs/Akr9S98rrTKic5KnmcBDnpVH8LSx+xt9IXrp8l?= =?us-ascii?Q?voNOUsx0pGIdgdxtx9H/alE3dgMhkpOIOpfZmfFnzkgX6REsCyCH24b149sx?= =?us-ascii?Q?3XUWoaANB+1xV34Fsy2R141eyay1EUB9NXI8Lu4onRhDYaVVM7h03TS0mKhp?= =?us-ascii?Q?wSnft75gv1gClyf/ofY/2K9GBmibDjPaEWxlyP6iKN9DFhfrHS6ULycilyqN?= =?us-ascii?Q?Q3TlamtosmIXZJzi7LwTxvt0RhIVfUT3BSYofhlLVh2D1S7UVzOPZYWcvfWh?= =?us-ascii?Q?/OWi+lW1FW+g06+VxOxgOjuXkSTAbLHNZXMUaPPJaHYd4l4o+O/KecaNPjMv?= =?us-ascii?Q?0XTsJTUUfnKw2j8pIGAfTOcg01XYmU2xtYxDnyKY2Ho69xsGN1of0bRXw+qd?= =?us-ascii?Q?sEzUkEtb0+pl5Iocr4+v4tcksOZrt89Ju1aBtCpDR5ALPCLafNDtsqXZu21I?= =?us-ascii?Q?Pr2LDVBdsoMdxo0qr1tm6qrVde6dUR3Zjt+yN1pnZhZ1D/znSG0n0mXxi8n8?= =?us-ascii?Q?c110ugy/lFCvkeY3FXS9RJ24KqWmSfFgHbTAbQLJDBCGwDFj21d6G7T+ASL0?= =?us-ascii?Q?pGZgpQkZhbKJ0EZmcTMdXZa2w/zF?= 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: f2eb28a7-226b-428c-5c6f-08d97d3dd12e X-MS-Exchange-CrossTenant-originalarrivaltime: 21 Sep 2021 20:24:30.4175 (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: CjbgNeQwUokIS1hkJuqJXmXB4/UNYi3kn5jJ8PqyPuGOhErMvp9E2ka3UCrYzpGpN7laRPbKeFjLncEk8qYcImsF+CzxxQRHfUVsisRaTTI= X-MS-Exchange-Transport-CrossTenantHeadersStamped: PH0PR18MB3816 X-Proofpoint-ORIG-GUID: LAptiLlpVumabkLELtMalSMDFbqKFV96 X-Proofpoint-GUID: LAptiLlpVumabkLELtMalSMDFbqKFV96 X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.182.1,Aquarius:18.0.790,Hydra:6.0.391,FMLib:17.0.607.475 definitions=2021-09-21_06,2021-09-20_01,2020-04-07_01 Subject: Re: [dpdk-dev] [EXT] [PATCH v2 1/5] eventdev/rx_adapter: add support to configure event buffer size 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" >Currently Rx event buffer is static array with a default size >of 192(6*BATCH_SIZE). > >``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 is >allocated from heap after aligning the size to BATCH_SIZE and >adding 2*BATCH_SIZE. In case of NULL params argument, default event >buffer size is used. > >Signed-off-by: Naga Harish K S V >Signed-off-by: Ganapati Kundapura > >--- >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 > >v1: >* Initial implementation with documentation and unit tests. >--- > .../prog_guide/event_ethernet_rx_adapter.rst | 7 ++ > lib/eventdev/rte_event_eth_rx_adapter.c | 94 >+++++++++++++++++-- > lib/eventdev/rte_event_eth_rx_adapter.h | 40 +++++++- > lib/eventdev/version.map | 2 + > 4 files changed, 135 insertions(+), 8 deletions(-) > >diff --git a/doc/guides/prog_guide/event_ethernet_rx_adapter.rst >b/doc/guides/prog_guide/event_ethernet_rx_adapter.rst >index 0780b6f711..dd753613bd 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. > >+If the application desires to control the event buffer size, it can use t= he >+``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 >adapter >+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 > ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ > >diff --git a/lib/eventdev/rte_event_eth_rx_adapter.c >b/lib/eventdev/rte_event_eth_rx_adapter.c >index f2dc69503d..df1653b497 100644 >--- a/lib/eventdev/rte_event_eth_rx_adapter.c >+++ b/lib/eventdev/rte_event_eth_rx_adapter.c >@@ -82,7 +82,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 */ >@@ -919,7 +921,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], >@@ -945,7 +947,7 @@ rxa_pkt_buf_available(struct >rte_eth_event_enqueue_buffer *buf) > uint32_t nb_req =3D buf->tail + BATCH_SIZE; > > if (!buf->last) { >- if (nb_req <=3D RTE_DIM(buf->events)) >+ if (nb_req <=3D buf->events_size) > return true; > > if (buf->head >=3D BATCH_SIZE) { >@@ -2164,12 +2166,15 @@ rxa_ctrl(uint8_t id, int start) > return 0; > } > >-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; >@@ -2184,6 +2189,7 @@ >rte_event_eth_rx_adapter_create_ext(uint8_t id, uint8_t dev_id, > > 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; > >@@ -2231,11 +2237,30 @@ >rte_event_eth_rx_adapter_create_ext(uint8_t id, uint8_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]; > >+ /* 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); >+ >+ 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; > rte_eventdev_trace_eth_rx_adapter_create(id, dev_id, >conf_cb, >@@ -2243,6 +2268,57 @@ >rte_event_eth_rx_adapter_create_ext(uint8_t id, uint8_t dev_id, > return 0; > } > >+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; >+ >+ /* Event buffer with default size =3D 6*BATCH_SIZE */ Why is it a multiple of 6, if its not documented please add a line here. >+ 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; >+ >+ /* event buff size aligned to BATCH_SIZE + 2*BATCH_SIZE */ >+ 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; >+ >+ 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) >@@ -2252,12 +2328,14 @@ rte_event_eth_rx_adapter_create(uint8_t >id, uint8_t dev_id, > > if (port_config =3D=3D NULL) > return -EINVAL; >+ > RTE_EVENT_ETH_RX_ADAPTER_ID_VALID_OR_ERR_RET(id, - >EINVAL); > > 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); >@@ -2286,6 +2364,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; > >@@ -2658,6 +2737,7 @@ rte_event_eth_rx_adapter_stats_get(uint8_t >id, > > stats->rx_packets +=3D dev_stats_sum.rx_packets; > stats->rx_enq_count +=3D dev_stats_sum.rx_enq_count; >+ > return 0; > } > >diff --git a/lib/eventdev/rte_event_eth_rx_adapter.h >b/lib/eventdev/rte_event_eth_rx_adapter.h >index 3f8b362295..a7881097b4 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() >@@ -36,7 +37,7 @@ > * > * The application creates an ethernet to event adapter using > * rte_event_eth_rx_adapter_create_ext() or >rte_event_eth_rx_adapter_create() >- * 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 >constructing >@@ -256,6 +257,16 @@ struct >rte_event_eth_rx_adapter_vector_limits { > */ > }; > >+/** >+ * 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. >+ * the size is aligned to BATCH_SIZE and added (2 * BATCH_SIZE) >+ */ BATCH_SIZE is internal i.e. not exposed to application layer, can we please= define what is BATCH_SIZE here and why applications input needs to be aligned to B= ATCH_SIZE? and why 2*BATCH size is required. If this is an application driven parameter we shouldn't impose arbitrary co= nstraints like this. Maybe "Aligned to power of 2" would be sufficient. OR Extend rte_event_eth_rx_adapter_caps_get() to return optimal event_buf_size= if supported. >+}; >+ > /** > * > * Callback function invoked by the SW adapter before it continues >@@ -356,6 +367,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); > >+/** >+ * This is a variant of rte_event_eth_rx_adapter_create() with >additional >+ * 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 cd86d2d908..87586de879 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; > > #added in 21.05 > rte_event_vector_pool_create; >-- >2.25.1