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.6 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 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 79BF6C433EF for ; Wed, 22 Sep 2021 15:36:10 +0000 (UTC) Received: from mails.dpdk.org (mails.dpdk.org [217.70.189.124]) by mail.kernel.org (Postfix) with ESMTP id D6282611CA for ; Wed, 22 Sep 2021 15:36:09 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.4.1 mail.kernel.org D6282611CA Authentication-Results: mail.kernel.org; dmarc=fail (p=none dis=none) header.from=intel.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 E1824411EC; Wed, 22 Sep 2021 17:36:08 +0200 (CEST) Received: from mga02.intel.com (mga02.intel.com [134.134.136.20]) by mails.dpdk.org (Postfix) with ESMTP id 21C20411A8 for ; Wed, 22 Sep 2021 17:36:06 +0200 (CEST) X-IronPort-AV: E=McAfee;i="6200,9189,10115"; a="210859563" X-IronPort-AV: E=Sophos;i="5.85,314,1624345200"; d="scan'208";a="210859563" Received: from fmsmga006.fm.intel.com ([10.253.24.20]) by orsmga101.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 22 Sep 2021 08:36:04 -0700 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.85,314,1624345200"; d="scan'208";a="702298528" Received: from orsmsx604.amr.corp.intel.com ([10.22.229.17]) by fmsmga006.fm.intel.com with ESMTP; 22 Sep 2021 08:36:03 -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; Wed, 22 Sep 2021 08:36:02 -0700 Received: from orsmsx604.amr.corp.intel.com (10.22.229.17) 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; Wed, 22 Sep 2021 08:36:02 -0700 Received: from ORSEDG602.ED.cps.intel.com (10.7.248.7) 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 via Frontend Transport; Wed, 22 Sep 2021 08:36:02 -0700 Received: from NAM12-MW2-obe.outbound.protection.outlook.com (104.47.66.48) 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; Wed, 22 Sep 2021 08:36:02 -0700 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=YAb1MK4B/Vp9lXSX44IpXP3qBkD895EkpRCfIIr0MRUj3j0CLFn/n7P+4Hfb8Fy0YKuoMqU0f8H1r3AEcbakm1+HqCDw7PM8xKLWg0/tfktmWfIKfghaxtcMElJddyotuesluZ7ZbfpL7XZF+PNKYjeUFIJ1ka1Wdquku8wKxcZovvTBUEYyO106rMBIzrQZhz7Jk+HZtJn936t8BQvbMTj5kjcf+IOC8keyUADBsBrx+9TOg29XtORewLuB/ialnzZ6gII7njedzTaEp+9oNotK7overijsCLUM4tV6yOSLOwle5gNmgYhwjKRDDjnXQW+M1LmS9at2xvYHxN7QRA== 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=Fqe4gUHWnIpFErOIlwA0o9Bbp3jqssHN2/ZImxRzZGU=; b=KxagkIZrJp+3nKMOtQai3d3IKcZghovj8cC0SlwUKn13nV8hrkKgCyMNb9Eyr/3QhewmbYeEEP3LoMxJBDhwjUkYnXKLVs2HoY79pQl2ZTgaATLbr1HvF/h5/kQ2YGxfSQ3ZY8Bd4zvjnxbWvSr/wzjH83Tu/8ZDf6Ar7HVWqzAKwCAdLLik10bCH1lQEHJrjD59eNEABhrwMTRhELX1qJ2B6WXK93V5ObKwzkxqN9Y2MwM7XvCJIHyUsX4xno9UZUy6EOhBG4Ld2EQv884wQDKCrrNMwOZkigs4jPjLwtcGbg1dC88yl+xBAujPT3YKghvvyv+5yUa/14ZSouIwoQ== 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=Fqe4gUHWnIpFErOIlwA0o9Bbp3jqssHN2/ZImxRzZGU=; b=DGJKnJQI6d9AVUIiYJ754DtNJEXo78nxF+MsON0p0OU8i1sXKbUUB59jp8HGbbTYqyJ8OSrXvxanjBIQfNbFQccX85vFg9hUg2BTs6/Kkq7kAH8nZxCiGhVUFUg0LPaFfLSv2XAcLkqJT2nG/fL2kTLR6PlWtEJJk7wu/kvQh6o= Received: from DM6PR11MB3868.namprd11.prod.outlook.com (10.255.61.13) by DM4PR11MB5422.namprd11.prod.outlook.com (13.101.60.172) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4544.13; Wed, 22 Sep 2021 15:36:01 +0000 Received: from DM6PR11MB3868.namprd11.prod.outlook.com ([fe80::a4b7:7005:e8:ac15]) by DM6PR11MB3868.namprd11.prod.outlook.com ([fe80::a4b7:7005:e8:ac15%5]) with mapi id 15.20.4523.019; Wed, 22 Sep 2021 15:36:01 +0000 From: "Naga Harish K, S V" To: Pavan Nikhilesh Bhagavatula , "Jerin Jacob Kollanukkaran" , "Jayatheerthan, Jay" CC: "dev@dpdk.org" , "Kundapura, Ganapati" Thread-Topic: [EXT] [dpdk-dev] [PATCH v2 1/5] eventdev/rx_adapter: add support to configure event buffer size Thread-Index: AQHXrs2L0N/4/3T6Yke+MM0Jl0hE0auu7Z7AgAE/uEA= Date: Wed, 22 Sep 2021 15:36:01 +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: 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: marvell.com; dkim=none (message not signed) header.d=none;marvell.com; dmarc=none action=none header.from=intel.com; x-ms-publictraffictype: Email x-ms-office365-filtering-correlation-id: 3146aa1e-876f-4dc7-7863-08d97ddeaea7 x-ms-traffictypediagnostic: DM4PR11MB5422: x-ms-exchange-transport-forked: True x-microsoft-antispam-prvs: x-ms-oob-tlc-oobclassifiers: OLM:576; x-ms-exchange-senderadcheck: 1 x-ms-exchange-antispam-relay: 0 x-microsoft-antispam: BCL:0; x-microsoft-antispam-message-info: J1GCBsqgGX45n9yu1egSRBQnVRZ3lFQjL7vMjw+O9AB8itNyIB/z6Kix9lLwx9dIwJEyR5hfRzBshmR7wASbpHeosWH/Ut/GkBk1glstLlo24z+sKYCthVjp8OT/Mzrxt3KDIDp2WdsDUcbqLL+xPeH7QWSmtZ6TWTcFgPI3L7wfnlTwkgvkENUG+9C0Zro21X9m84ALTFThUjg2tpLx1P8oCjgDLshIv2PitoEUsXXPL9TYBkQQBR30QLoNGaqFxhMtmIDagq/BBL2JlUOlEXmxMBWVib2FRygFjix2v723EBqwoSGdbu95oJILViJTSvzf74AR8LsEHbPdacVcDb7pU9mLU7fOQQ1qa4Bee0bfocvy7Zv11eedTXqi8knt60ozX+iuo0Vle0ZReu+pXRRSrt0V5iE7JJQAJ1WLB61mtQ3GgKDeLbzVZXehYr42MKB0dTp7XMV7ZsMybp9txSFvGDvakzJYetiDqLxykF/frr74wRg0ycWfrs7gFS8ZV4fy7TGoeAAxUK53IZRpEQjrS45n28OGIaeYhImwuwhGCvRbehmJwJNPmxx8zXjIt0Fa0gJfG1T7zzMfPCKp9p3dR9pe/B2X53bsMoUu8mKyffXTaUDQLx5zDTAe2MZsXF0BChVHIXnJfCGPYD2LuvmJia8/HkbKh9n+max/5VppYEhd3QBsHhIuCyiNTa5XW5wC2SgnFO1VlNsjLkVYwg== x-forefront-antispam-report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:DM6PR11MB3868.namprd11.prod.outlook.com; PTR:; CAT:NONE; SFS:(4636009)(366004)(55236004)(33656002)(38070700005)(122000001)(8676002)(52536014)(5660300002)(83380400001)(71200400001)(86362001)(4326008)(6506007)(53546011)(9686003)(55016002)(38100700002)(76116006)(64756008)(66446008)(2906002)(26005)(7696005)(66556008)(110136005)(66946007)(54906003)(8936002)(107886003)(66476007)(30864003)(6636002)(316002)(186003)(508600001); DIR:OUT; SFP:1102; x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?us-ascii?Q?OdqDV9/taGs2/2tyLYayjJCyISD+yHUrOVZNMtfijHlL0CRokiIZpuxSSpjj?= =?us-ascii?Q?NeaPIwgcEy1E0XNHwKO8fViiDmkPJjnkaVArJcZw0x7kyXvnkTI9tPWlnzYO?= =?us-ascii?Q?uZSwdtiUW4qkNIsYOx6ELVNZUbZAztuegKlgIgaFWq+HFom7U5Hv4/2lArvR?= =?us-ascii?Q?1UGsydfTNjoiLG3IEIAtdoAKPxXfEfGuA0AUOJoWC/slGKjkBq+i62XLb9aD?= =?us-ascii?Q?pUhe1OCZTlwiiNLpDOI3IYoBfaJ2PIRM6/DIIi/mm3xlVSEWai5QnyWzRYaQ?= =?us-ascii?Q?0WzkH+Qmz+ElMqIyH50aJwBvrrFCJ8FKtBXD7kTjNnxCgEH0YckPX2oO/nyA?= =?us-ascii?Q?WhVgtglRRlh7km9MWie2SCXn6Xw3l+BmQ/AXkf7qz/0WfHFegUEm34l85gH/?= =?us-ascii?Q?rdWNzX92fsLpTWNsw9WRwv9DOhv/QtqGvAyltemsUFgkvt2CY1gu+9EgMPN9?= =?us-ascii?Q?d452no8199H5pHB2lKoChc1Y3iar/CN/5XkzwffipXgzM9t43AmwOH2B6Kcf?= =?us-ascii?Q?Y5wUH8vwy9CFScbZIgG/O90AUurTYIRojKe1ghkI6AX+x5iPUdYVXHUARrvM?= =?us-ascii?Q?gkf1Q424Kix9nIiiJ/D1eBMlb6n786uN3ZrDaOzawtNHejgVjzvTiSxpCYcT?= =?us-ascii?Q?6GAi5SNg2QIpMFpoesYbQ0kI3aWSCMoSC5cFVO52jX3XPmuN73NiCvKjJQ/w?= =?us-ascii?Q?S1EjQCAvSmKreiETe0QwExp/v0uZPvVJCH2Rv1RuRbiNZsoAVpX5x74Kd0dT?= =?us-ascii?Q?sUyEHOcA4OGG5i/PVcJQjGI646jasIoqj9n6kCY3f1d/BG8Z7rRZBM6P/AME?= =?us-ascii?Q?dWujxe8OD9qWckFbXGwSxVeKZztyIG3W34wEcCuj6DCptNBvTzU+1XGnJ38t?= =?us-ascii?Q?6r/bNuJd4RRH7eYkhDhdDY/fxGb8rsVXBmzsAvtyV4HE4YF/Zy8vqFD1orEQ?= =?us-ascii?Q?esI1KCypthk+q7y20VuDFQ+OTZ1zRltL62nWgpMTo+jnh9RVNUBxu4kuGYIK?= =?us-ascii?Q?AiSX6FBsTyrSxxe8I+9+PKgELpmoQQFRc/cuggcEEMZ/KPXJG8qXn88ZvuTg?= =?us-ascii?Q?71lTanDZrHgle11ljpe2e1xhLX/LhfjSEQ6pBgllF/dlkG9HSQAffos/IV7t?= =?us-ascii?Q?OXzexOPsUf9hhmCaS5bVCz3S0kww59NRA1pCXCRa+co8c8XY7dJYUKacLXGY?= =?us-ascii?Q?D7wX+Js1WJnIxOviXpMT8T1ekbULC0YblwG6CIAj/BJicUKPIQrx3je0ze7S?= =?us-ascii?Q?ANfXrrfPJwRP5gIpyUvW5g04pOPvfJRfq2MuE/eblBKDaiUPqpAItccVeoWK?= =?us-ascii?Q?pxy4zKDe+cMOZ4ALe5mE4JfV?= 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: DM6PR11MB3868.namprd11.prod.outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: 3146aa1e-876f-4dc7-7863-08d97ddeaea7 X-MS-Exchange-CrossTenant-originalarrivaltime: 22 Sep 2021 15:36:01.4839 (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: xx+HyrCTWHekbN+KFSL46OsD3rKfP4bbdSEkbQbYt98BKzrXFf+bq0t85hGUr2UKE9mb3enVcD/8n/r/EEIjJwX5XbjjQrBifUKmpNqWrbY= X-MS-Exchange-Transport-CrossTenantHeadersStamped: DM4PR11MB5422 X-OriginatorOrg: intel.com 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" Hi Pavan, > -----Original Message----- > From: Pavan Nikhilesh Bhagavatula > Sent: Wednesday, September 22, 2021 1:55 AM > To: Naga Harish K, S V ; Jerin Jacob > Kollanukkaran ; Jayatheerthan, Jay > > Cc: dev@dpdk.org; Kundapura, Ganapati > Subject: RE: [EXT] [dpdk-dev] [PATCH v2 1/5] eventdev/rx_adapter: add > support to configure event buffer size >=20 > >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 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 > >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 */ >=20 > Why is it a multiple of 6, if its not documented please add a line here. This is the existing default event buffer size and continued its usage. There is no hard rule to decide the default size. >=20 > >+ 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) > >+ */ >=20 > BATCH_SIZE is internal i.e. not exposed to application layer, can we plea= se > define what is BATCH_SIZE here and why applications input needs to be > aligned to BATCH_SIZE? > and why 2*BATCH size is required. BATCH_SIZE is the size used to dequeue packets form NIC rx queues.=20 If the event buffer size aligned to BATCH_SIZE, the buffer utilization will= be upto Its fullest and avoid wastage of buffer space during rollover conditions. The additional adjustment is to make sure that, the buffer usage is at leas= t upto The user requested size under overload conditions. =20 >=20 > If this is an application driven parameter we shouldn't impose arbitrary > constraints like this. > Maybe "Aligned to power of 2" would be sufficient. >=20 > OR >=20 > Extend rte_event_eth_rx_adapter_caps_get() to return optimal > event_buf_size if supported. >=20 >=20 > >+}; > >+ > > /** > > * > > * 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