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 1E5D1A0A02; Sat, 27 Mar 2021 07:04:35 +0100 (CET) Received: from [217.70.189.124] (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id 9673440686; Sat, 27 Mar 2021 07:04:34 +0100 (CET) Received: from mx0b-0016f401.pphosted.com (mx0b-0016f401.pphosted.com [67.231.156.173]) by mails.dpdk.org (Postfix) with ESMTP id 0F60C4067B for ; Sat, 27 Mar 2021 07:04:32 +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 12R612H3031027; Fri, 26 Mar 2021 23:04:32 -0700 Received: from nam12-mw2-obe.outbound.protection.outlook.com (mail-mw2nam12lp2047.outbound.protection.outlook.com [104.47.66.47]) by mx0b-0016f401.pphosted.com with ESMTP id 37h11pmy80-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Fri, 26 Mar 2021 23:04:32 -0700 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=h4mHqq9QaxGHGy7vd7vDmcfPPZPezXuuQoO2DWi/mGgz1tsd+vIp4fu7Zptqyj+c3BZZSXYaVYakas79/Dobesxz/9ug5SOei2+SvkerxeFws1ZIQAgdy5nHujbmF3Xsvsu/dy0JQpjYA/GH4/VMgKnbEhY5Y8e75btLbJMHUNThZ/QcFwLgyXi9RQfih9uFfUDXIgK2ZX5p4DK5+KiLsroNnHQZzFy/BicX5dj6pSANmYI/T82idLeXt8YxUVW0Mewuq/bol7Ax0FcrvR7yX4DAFKxQnD86qLcdFDK7E6v+NwLZ+n9Z63MPkGl4RIOAGxLgektLhNnag5o+mm4xAg== 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=8P+dqAqp8iVz/dm8qhfxJ83kBQlWryfNDhTcwYZijeQ=; b=E8QFZS1CCwFCR42yLrU9cdF2TPwpv1vVOkZHCtk/ZGnhKoq8y/UB1/WAZ3dLAXltpMcPdX9Dt9sEZmA9t256HD4+Pz53dEYdKaPhcl4FjshlHZhU38KHHz38qpz7GIYApPGAPNNEkaSMSX5DqIc5K9/cAZ9cYj+DtAZfobWo5F694J+vJOrkxUEuAwJSopbGOFmKMhj1Mm+MrW/lhMRLDwCEMKY78RGvGSkfD4+m5kurDIrMebMHYeeYcCWC/rKp+Vq726biy5GefNkKt6AWGPLAhZGnGLKZU9H5pfdRMn+6/YYHwlKsXDzLej/YwOcAH5UKRo6ZLC1KcQep2jp/Aw== 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=8P+dqAqp8iVz/dm8qhfxJ83kBQlWryfNDhTcwYZijeQ=; b=NC68OZciZCWcQ6GePhJDk0t0SsLfjc7BD2/uDeJC4IwB11WjkQfwP53H2OcaC3HlscygV6qhnm+9BmrSITYMbYLs0t9O9vJtHW4F0WOqcOLv5KktNl0amXuW/UUbL7XCZTG16dCIUD8NVYct7W043JbR2zoSt7r1b4ngr3/B8gw= Received: from PH0PR18MB4086.namprd18.prod.outlook.com (2603:10b6:510:3::9) by PH0PR18MB3848.namprd18.prod.outlook.com (2603:10b6:510:2b::24) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.3977.29; Sat, 27 Mar 2021 06:04:29 +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.032; Sat, 27 Mar 2021 06:04:28 +0000 From: Pavan Nikhilesh Bhagavatula To: Shijith Thotton , "dev@dpdk.org" CC: Akhil Goyal , "thomas@monjalon.net" , Jerin Jacob Kollanukkaran , "abhinandan.gujjar@intel.com" , "hemant.agrawal@nxp.com" , "nipun.gupta@nxp.com" , "sachin.saxena@oss.nxp.com" , Anoob Joseph , "matan@nvidia.com" , "roy.fan.zhang@intel.com" , "g.singh@nxp.com" , "erik.g.carrillo@intel.com" , "jay.jayatheerthan@intel.com" , "harry.van.haaren@intel.com" , Shijith Thotton Thread-Topic: [PATCH v1 1/2] eventdev: introduce crypto adapter enqueue API Thread-Index: AQHXIiBxMe4cPgrtJ0GI2wjrkeBubaqXWNkQ Date: Sat, 27 Mar 2021 06:04:28 +0000 Message-ID: References: <20210318181254.418679-1-gakhil@marvell.com> In-Reply-To: Accept-Language: en-IN, en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: x-originating-ip: [49.37.166.152] x-ms-publictraffictype: Email x-ms-office365-filtering-correlation-id: 0a906a27-c867-4e63-eb1c-08d8f0e62eb0 x-ms-traffictypediagnostic: PH0PR18MB3848: x-ms-exchange-transport-forked: True x-microsoft-antispam-prvs: x-ms-oob-tlc-oobclassifiers: OLM:9508; x-ms-exchange-senderadcheck: 1 x-microsoft-antispam: BCL:0; x-microsoft-antispam-message-info: +VQGMtiENMaGwy2D9rNNsTqaThdQcBbUZcttrVnP7IBym+Pbsx/aUD00MP9IVYep7Azz7GxEik60wRHiueLm0Hz3aPTFLxH2WVMaKroLXZ1324m3sIY703kVz+6lbrwomdfIi21bT7mcptgbF96ZpbaECshaxer/khOFf06FSSlhyQkwLX1Iiic4vleCngO9J12C7Z/eF/SvwoYux7/aj/L67hlTweImDEMamPU7fT7Sj/m2mEQLpMHxQG2jkELSzJQ3a9w9FuIefN4ZrMHRGlizy1+cP2FMb3dxsDizYN9g3LIdhD2EEihzBNJ3fgL9InNHLeadHC099tr01NG9xXA0OusAeXwWr4g0s3Zq2+ldc1qBo+KJcRK5QORc98FhOhHiiLmUg6LUAa3N9wVerUDnrtpOmdoEQ4p0cZx1668Atpu1nTirPbxxYlN21jTwHtZssdfpqQcBTg1BKOY4Yeia3McXOfThSKmoVZqJhx8MCb8SMigSAcewmQ7Wjo5/WsC5Mojmw4DhoAh887eNPtHoyuyFz4Z7HRVzdh0lmlucOOyUfiNDm7aWPgsq41/m8OHp6kcCz7YKqzqDqjRJ1vF0fVSwcXk0kCWEBLD+HIB/OHUEb3TztMCkYGeEv7zcsupBiDVCalKyAIY6uGod7krllh+macbVViwdyeO6ViY= 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)(136003)(366004)(396003)(346002)(39850400004)(376002)(83380400001)(38100700001)(66556008)(76116006)(33656002)(66446008)(2906002)(54906003)(66476007)(107886003)(55016002)(316002)(52536014)(186003)(4326008)(66946007)(110136005)(9686003)(30864003)(26005)(7416002)(64756008)(5660300002)(86362001)(8936002)(8676002)(7696005)(6506007)(71200400001)(478600001); DIR:OUT; SFP:1101; x-ms-exchange-antispam-messagedata: =?us-ascii?Q?CqriLsqENgmccgD7sMfA4xz6loh/9KTBGz00fFDkAFPLG11yQ2kn3rVO6Gul?= =?us-ascii?Q?bJoO3im06ywqWhXrxqgMUiCxLhCoskOgYEMFF/5JacpVDZ6D/ANWCmAyS6jK?= =?us-ascii?Q?jVCQAvt9m1SvuZ1zeiEG5Fo+xG5eGTVnVouMLR8+l6rdCAfln+CtnNskcjRc?= =?us-ascii?Q?f0dbif11++PFttgysYSTXbYc6+56CjIcgfv14Xkbe1+ksePS5v2Co6xZgDuI?= =?us-ascii?Q?8chu0U8UDFzVKP+sU2z2Dpkwy2hxGEHPsIryRn1zYhCyKDST+WwBL4C+AUwC?= =?us-ascii?Q?ZGJXBIhYhM/FpPpPSf6V86oKW+oStXFNqRalz5XhjDZYmYrzL8gEQFYn9dQ6?= =?us-ascii?Q?HdYrCnalDLEv5XQPT7S9lLXS8bJwWYSaj7Mzek+8mi8OL5zdc+Ng5o7WK0zD?= =?us-ascii?Q?UNANGGbve/4zG0k5gBqyAtJdn3ie8/OkcLtXJsA+618npj8lSE2UnjGOCrN9?= =?us-ascii?Q?WUoKhMn3R92W4aNFwMWk6DDlcUx0XrBTWHbl9Jx6p39vQeU6gMYvR8B45H6J?= =?us-ascii?Q?MqXGDCLn4TKD0CVSsWZ/dfgP4MjfRVBFEGqnH1l5aik8ZE/CUhB3JaV8o1ws?= =?us-ascii?Q?KFi4fa8aDc4zeHFs92NIJ7u8EM9sDkwiH+nrd4PUhDoVmpnCBhBrvgxThWPx?= =?us-ascii?Q?kAou04k7f0DI2ADvhtJ6tOyBgw8dbmw6BA5hzwSgTq1H8+o7Cg8FI3e3M+A2?= =?us-ascii?Q?pLj6gx/zGvlreQK3/F9uKqbwbZ8lQoOcGTVZPaX1KGzzwT8isehScRiYh+qh?= =?us-ascii?Q?3BpyKZcSCffQr4/sXGmb8spyTNyw95gQMGGMF4wGxFtqFvdLOD5JKXxNmCq0?= =?us-ascii?Q?kq3r61xtC7icM1cDAAKQhKuOcfiCOENhj9auMEk9AgusbXBueErL7a9catfi?= =?us-ascii?Q?g8WCPgeIQc0vU2E+a45Jqkzj87UyLhcq19qhKmaWb9FUuXzR7YWUcYSvpkNu?= =?us-ascii?Q?4SW/zNQ+FW40PtGj3dEx9y0B1KObwTp7Wy2vu6A6YusyG8VseJ9wdEq1wVgH?= =?us-ascii?Q?Zt/F0oB6FTShZDA0MckWLgXAEeAvACIaEoxtVKKYuFWkcjvN3xY5hqo8jHl5?= =?us-ascii?Q?W3UsnuOh3eTI0vZRCPGIWb3q1XwX0zXMdQTr7tQKae0qoqgzI7odMgrwBwH6?= =?us-ascii?Q?dTq+tiAi0qZuhFBNRZ10Qm8oEMm4wfUEiYyvufuC6F4uhg2N917403Gal3BL?= =?us-ascii?Q?U7vWCdi19EXiijtPdruPrqdLUlV4WyWMBWREPj5FSTmY2LkwzIrkI/T3+f9Q?= =?us-ascii?Q?IiyhTT29o7Drc3nUf+FRH47xnOBwB0qPm4I8WR2lSpyz3qIzGBzIYHgio0Yn?= =?us-ascii?Q?HsSe0GzAikB2hnwreFJgur3y?= 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: 0a906a27-c867-4e63-eb1c-08d8f0e62eb0 X-MS-Exchange-CrossTenant-originalarrivaltime: 27 Mar 2021 06:04:28.8141 (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: PYEMxC8ZQUhOrcuHt4urB1U4TlNhRlkxDC3Vhn6KaJN3zAgqBh/DE4P9SvC0RLjl1osvTmLlB0z831RORTsI3qj4KBqMIJOEG2lR8EY73WE= X-MS-Exchange-Transport-CrossTenantHeadersStamped: PH0PR18MB3848 X-Proofpoint-ORIG-GUID: icBVBY7enp7HozBDoIrgJgedhWPHq0Xw X-Proofpoint-GUID: icBVBY7enp7HozBDoIrgJgedhWPHq0Xw X-Proofpoint-Virus-Version: vendor=fsecure engine=2.50.10434:6.0.369, 18.0.761 definitions=2021-03-27_01:2021-03-26, 2021-03-27 signatures=0 Subject: Re: [dpdk-dev] [PATCH v1 1/2] eventdev: introduce crypto adapter enqueue API 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" >Subject: [PATCH v1 1/2] eventdev: introduce crypto adapter enqueue >API > >From: Akhil Goyal > >In case an event from a previous stage is required to be forwarded >to a crypto adapter and PMD supports internal event port in crypto >adapter, exposed via capability >RTE_EVENT_CRYPTO_ADAPTER_CAP_INTERNAL_PORT_OP_FWD, we >do not have >a way to check in the API rte_event_enqueue_burst(), whether it is >for crypto adapter or for eth tx adapter. > >Hence we need a new API similar to >rte_event_eth_tx_adapter_enqueue(), >which can send to a crypto adapter. > >Note that RTE_EVENT_TYPE_* cannot be used to make that decision, >as it is meant for event source and not event destination. >And event port designated for crypto adapter is designed to be used >for OP_NEW mode. > >Hence, in order to support an event PMD which has an internal event >port >in crypto adapter (RTE_EVENT_CRYPTO_ADAPTER_OP_FORWARD >mode), exposed >via capability >RTE_EVENT_CRYPTO_ADAPTER_CAP_INTERNAL_PORT_OP_FWD, >application should use rte_event_crypto_adapter_enqueue() API to >enqueue >events. > >When internal port is not >available(RTE_EVENT_CRYPTO_ADAPTER_OP_NEW mode), >application can use API rte_event_enqueue_burst() as it was doing >earlier, >i.e. retrieve event port used by crypto adapter and bind its event queues >to that port and enqueue events using the API >rte_event_enqueue_burst(). > >Signed-off-by: Akhil Goyal >--- > .../prog_guide/event_crypto_adapter.rst | 69 ++++++++++++------- > lib/librte_eventdev/eventdev_trace_points.c | 3 + > .../rte_event_crypto_adapter.h | 66 ++++++++++++++++++ > lib/librte_eventdev/rte_eventdev.c | 10 +++ > lib/librte_eventdev/rte_eventdev.h | 8 ++- > lib/librte_eventdev/rte_eventdev_trace_fp.h | 10 +++ > lib/librte_eventdev/version.map | 3 + Please update release notes. > 7 files changed, 142 insertions(+), 27 deletions(-) > >diff --git a/doc/guides/prog_guide/event_crypto_adapter.rst >b/doc/guides/prog_guide/event_crypto_adapter.rst >index 1e3eb7139..4fb5c688e 100644 >--- a/doc/guides/prog_guide/event_crypto_adapter.rst >+++ b/doc/guides/prog_guide/event_crypto_adapter.rst >@@ -55,21 +55,22 @@ which is needed to enqueue an event after the >crypto operation is completed. > RTE_EVENT_CRYPTO_ADAPTER_OP_FORWARD mode > ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ > >-In the RTE_EVENT_CRYPTO_ADAPTER_OP_FORWARD mode, if HW >supports >-RTE_EVENT_CRYPTO_ADAPTER_CAP_INTERNAL_PORT_OP_FWD >capability the application >-can directly submit the crypto operations to the cryptodev. >-If not, application retrieves crypto adapter's event port using >-rte_event_crypto_adapter_event_port_get() API. Then, links its event >-queue to this port and starts enqueuing crypto operations as events >-to the eventdev. The adapter then dequeues the events and submits >the >-crypto operations to the cryptodev. After the crypto completions, the >-adapter enqueues events to the event device. >-Application can use this mode, when ingress packet ordering is needed. >-In this mode, events dequeued from the adapter will be treated as >-forwarded events. The application needs to specify the cryptodev ID >-and queue pair ID (request information) needed to enqueue a crypto >-operation in addition to the event information (response information) >-needed to enqueue an event after the crypto operation has completed. >+In the ``RTE_EVENT_CRYPTO_ADAPTER_OP_FORWARD`` mode, if the >event PMD and crypto >+PMD supports internal event port >+(``RTE_EVENT_CRYPTO_ADAPTER_CAP_INTERNAL_PORT_OP_FWD``), >the application should >+use ``rte_event_crypto_adapter_enqueue()`` API to enqueue crypto >operations as >+events to crypto adapter. If not, application retrieves crypto adapter's >event >+port using ``rte_event_crypto_adapter_event_port_get()`` API, links its >event >+queue to this port and starts enqueuing crypto operations as events to >eventdev >+using ``rte_event_enqueue_burst()``. The adapter then dequeues the >events and >+submits the crypto operations to the cryptodev. After the crypto >operation is >+complete, the adapter enqueues events to the event device. The >application can >+use this mode when ingress packet ordering is needed. In this mode, >events >+dequeued from the adapter will be treated as forwarded events. The >application >+needs to specify the cryptodev ID and queue pair ID (request >information) needed >+to enqueue a crypto operation in addition to the event information >(response >+information) needed to enqueue an event after the crypto operation >has >+completed. > > .. _figure_event_crypto_adapter_op_forward: > >@@ -120,28 +121,44 @@ service function and needs to create an >event port for it. The callback is > expected to fill the ``struct rte_event_crypto_adapter_conf`` structure > passed to it. > >-For RTE_EVENT_CRYPTO_ADAPTER_OP_FORWARD mode, the event >port created by adapter >-can be retrieved using ``rte_event_crypto_adapter_event_port_get()`` >API. >-Application can use this event port to link with event queue on which it >-enqueues events towards the crypto adapter. >+In the ``RTE_EVENT_CRYPTO_ADAPTER_OP_FORWARD`` mode, if the >event PMD and crypto >+PMD supports internal event port >+(``RTE_EVENT_CRYPTO_ADAPTER_CAP_INTERNAL_PORT_OP_FWD``), >events with crypto >+operations should be enqueued to the crypto adapter using >+``rte_event_crypto_adapter_enqueue()`` API. If not, the event port >created by >+the adapter can be retrieved using >``rte_event_crypto_adapter_event_port_get()`` >+API. An application can use this event port to link with an event queue, >on >+which it enqueues events towards the crypto adapter using >+``rte_event_enqueue_burst()``. > > .. code-block:: c > >- uint8_t id, evdev, crypto_ev_port_id, app_qid; >+ uint8_t id, evdev_id, cdev_id, crypto_ev_port_id, app_qid; > struct rte_event ev; >+ uint32_t cap; > int ret; > >- ret =3D rte_event_crypto_adapter_event_port_get(id, >&crypto_ev_port_id); >- ret =3D rte_event_queue_setup(evdev, app_qid, NULL); >- ret =3D rte_event_port_link(evdev, crypto_ev_port_id, &app_qid, >NULL, 1); >- > // Fill in event info and update event_ptr with rte_crypto_op > memset(&ev, 0, sizeof(ev)); >- ev.queue_id =3D app_qid; > . > . > ev.event_ptr =3D op; >- ret =3D rte_event_enqueue_burst(evdev, app_ev_port_id, ev, >nb_events); >+ >+ ret =3D rte_event_crypto_adapter_caps_get(evdev_id, cdev_id, >&cap); >+ if (cap & >RTE_EVENT_CRYPTO_ADAPTER_CAP_INTERNAL_PORT_OP_FWD) { >+ ret =3D rte_event_crypto_adapter_enqueue(evdev_id, >app_ev_port_id, >+ ev, nb_events); >+ } else { >+ ret =3D rte_event_crypto_adapter_event_port_get(id, >+ &crypto_ev_port_i= d); >+ ret =3D rte_event_queue_setup(evdev_id, app_qid, NULL); >+ ret =3D rte_event_port_link(evdev_id, crypto_ev_port_id, >&app_qid, >+ NULL, 1); >+ ev.queue_id =3D app_qid; >+ ret =3D rte_event_enqueue_burst(evdev_id, app_ev_port_id,= ev, >+ nb_events); >+ } >+ > > Querying adapter capabilities > ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ >diff --git a/lib/librte_eventdev/eventdev_trace_points.c >b/lib/librte_eventdev/eventdev_trace_points.c >index 1a0ccc448..3867ec800 100644 >--- a/lib/librte_eventdev/eventdev_trace_points.c >+++ b/lib/librte_eventdev/eventdev_trace_points.c >@@ -118,3 +118,6 @@ >RTE_TRACE_POINT_REGISTER(rte_eventdev_trace_crypto_adapter_sta >rt, > > >RTE_TRACE_POINT_REGISTER(rte_eventdev_trace_crypto_adapter_sto >p, > lib.eventdev.crypto.stop) >+ >+RTE_TRACE_POINT_REGISTER(rte_eventdev_trace_crypto_adapter_e >nqueue, >+ lib.eventdev.crypto.enq) >diff --git a/lib/librte_eventdev/rte_event_crypto_adapter.h >b/lib/librte_eventdev/rte_event_crypto_adapter.h >index 60630ef66..003667759 100644 >--- a/lib/librte_eventdev/rte_event_crypto_adapter.h >+++ b/lib/librte_eventdev/rte_event_crypto_adapter.h >@@ -522,6 +522,72 @@ >rte_event_crypto_adapter_service_id_get(uint8_t id, uint32_t >*service_id); > int > rte_event_crypto_adapter_event_port_get(uint8_t id, uint8_t >*event_port_id); > >+/** >+ * Enqueue a burst of crypto operations as events object supplied in >*rte_event* >+ * structure on an event crypto adapter designated by its event >*dev_id* through >+ * the event port specified by *port_id*. This function is supported if >the >+ * eventdev PMD has the >#RTE_EVENT_CRYPTO_ADAPTER_CAP_INTERNAL_PORT_OP_FWD >+ * capability flag set. >+ * >+ * The *nb_events* parameter is the number of event objects to >enqueue which are >+ * supplied in the *ev* array of *rte_event* structure. >+ * >+ * The rte_event_crypto_adapter_enqueue() function returns the >number of >+ * events objects it actually enqueued. A return value equal to >*nb_events* >+ * means that all event objects have been enqueued. >+ * >+ * @param dev_id >+ * The identifier of the device. >+ * @param port_id >+ * The identifier of the event port. >+ * @param ev >+ * Points to an array of *nb_events* objects of type *rte_event* >structure >+ * which contain the event object enqueue operations to be >processed. >+ * @param nb_events >+ * The number of event objects to enqueue, typically number of >+ * >rte_event_port_attr_get(...RTE_EVENT_PORT_ATTR_ENQ_DEPTH...) >+ * available for this port. >+ * >+ * @return >+ * The number of event objects actually enqueued on the event >device. The >+ * return value can be less than the value of the *nb_events* >parameter when >+ * the event devices queue is full or if invalid parameters are specifi= ed >in a >+ * *rte_event*. If the return value is less than *nb_events*, the >remaining >+ * events at the end of ev[] are not consumed and the caller has to >take care >+ * of them, and rte_errno is set accordingly. Possible errno values >include: >+ * - EINVAL The port ID is invalid, device ID is invalid, an event's >queue >+ * ID is invalid, or an event's sched type doesn't match the >+ * capabilities of the destination queue. >+ * - ENOSPC The event port was backpressured and unable to >enqueue >+ * one or more events. This error code is only applicable to >+ * closed systems. >+ */ >+static inline uint16_t >+rte_event_crypto_adapter_enqueue(uint8_t dev_id, >+ uint8_t port_id, >+ struct rte_event ev[], >+ uint16_t nb_events) >+{ >+ const struct rte_eventdev *dev =3D &rte_eventdevs[dev_id]; >+ >+#ifdef RTE_LIBRTE_EVENTDEV_DEBUG >+ if (dev_id >=3D RTE_EVENT_MAX_DEVS || >+ !rte_eventdevs[dev_id].attached) { >+ rte_errno =3D EINVAL; >+ return 0; Please use RTE_EVENTDEV_VALID_DEVID_OR_ERR_RET >+ } >+ >+ if (port_id >=3D dev->data->nb_ports) { >+ rte_errno =3D EINVAL; >+ return 0; >+ } >+#endif >+ rte_eventdev_trace_crypto_adapter_enqueue(dev_id, port_id, >ev, >+ nb_events); >+ >+ return dev->ca_enqueue(dev->data->ports[port_id], ev, >nb_events); >+} >+ > #ifdef __cplusplus > } > #endif >diff --git a/lib/librte_eventdev/rte_eventdev.c >b/lib/librte_eventdev/rte_eventdev.c >index b57363f80..5674bd38e 100644 >--- a/lib/librte_eventdev/rte_eventdev.c >+++ b/lib/librte_eventdev/rte_eventdev.c >@@ -1405,6 +1405,15 @@ >rte_event_tx_adapter_enqueue(__rte_unused void *port, > return 0; > } > >+static uint16_t >+rte_event_crypto_adapter_enqueue(__rte_unused void *port, >+ __rte_unused struct rte_event ev[], >+ __rte_unused uint16_t nb_events) >+{ >+ rte_errno =3D ENOTSUP; >+ return 0; >+} >+ > struct rte_eventdev * > rte_event_pmd_allocate(const char *name, int socket_id) > { >@@ -1427,6 +1436,7 @@ rte_event_pmd_allocate(const char *name, >int socket_id) > > eventdev->txa_enqueue =3D rte_event_tx_adapter_enqueue; > eventdev->txa_enqueue_same_dest =3D >rte_event_tx_adapter_enqueue; >+ eventdev->ca_enqueue =3D rte_event_crypto_adapter_enqueue; > > if (eventdev->data =3D=3D NULL) { > struct rte_eventdev_data *eventdev_data =3D NULL; >diff --git a/lib/librte_eventdev/rte_eventdev.h >b/lib/librte_eventdev/rte_eventdev.h >index 9fc39e9ca..b50027f88 100644 >--- a/lib/librte_eventdev/rte_eventdev.h >+++ b/lib/librte_eventdev/rte_eventdev.h >@@ -1276,6 +1276,10 @@ typedef uint16_t >(*event_tx_adapter_enqueue_same_dest)(void *port, > * burst having same destination Ethernet port & Tx queue. > */ > >+typedef uint16_t (*event_crypto_adapter_enqueue)(void *port, >+ struct rte_event ev[], uint16_t >nb_events); >+/**< @internal Enqueue burst of events on crypto adapter */ >+ > #define RTE_EVENTDEV_NAME_MAX_LEN (64) > /**< @internal Max length of name of event PMD */ > >@@ -1347,6 +1351,8 @@ struct rte_eventdev { > */ > event_tx_adapter_enqueue txa_enqueue; > /**< Pointer to PMD eth Tx adapter enqueue function. */ >+ event_crypto_adapter_enqueue ca_enqueue; >+ /**< Pointer to PMD crypto adapter enqueue function. */ > struct rte_eventdev_data *data; > /**< Pointer to device data */ > struct rte_eventdev_ops *dev_ops; >@@ -1359,7 +1365,7 @@ struct rte_eventdev { > /**< Flag indicating the device is attached */ > > uint64_t reserved_64s[4]; /**< Reserved for future fields */ >- void *reserved_ptrs[4]; /**< Reserved for future fields */ >+ void *reserved_ptrs[3]; /**< Reserved for future fields */ > } __rte_cache_aligned; > > extern struct rte_eventdev *rte_eventdevs; >diff --git a/lib/librte_eventdev/rte_eventdev_trace_fp.h >b/lib/librte_eventdev/rte_eventdev_trace_fp.h >index 349129c0f..5639e0b83 100644 >--- a/lib/librte_eventdev/rte_eventdev_trace_fp.h >+++ b/lib/librte_eventdev/rte_eventdev_trace_fp.h >@@ -49,6 +49,16 @@ RTE_TRACE_POINT_FP( > rte_trace_point_emit_u8(flags); > ) > >+RTE_TRACE_POINT_FP( >+ rte_eventdev_trace_crypto_adapter_enqueue, >+ RTE_TRACE_POINT_ARGS(uint8_t dev_id, uint8_t port_id, void >*ev_table, >+ uint16_t nb_events), >+ rte_trace_point_emit_u8(dev_id); >+ rte_trace_point_emit_u8(port_id); >+ rte_trace_point_emit_ptr(ev_table); >+ rte_trace_point_emit_u16(nb_events); >+) >+ > RTE_TRACE_POINT_FP( > rte_eventdev_trace_timer_arm_burst, > RTE_TRACE_POINT_ARGS(const void *adapter, void >**evtims_table, >diff --git a/lib/librte_eventdev/version.map >b/lib/librte_eventdev/version.map >index 3e5c09cfd..c63ba7a9c 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_eventdev_trace_crypto_adapter_enqueue; > }; > > INTERNAL { >-- >2.25.1