From patchwork Wed Nov 29 11:41:56 2017 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: Jerin Jacob X-Patchwork-Id: 31752 Return-Path: X-Original-To: patchwork@dpdk.org Delivered-To: patchwork@dpdk.org Received: from [92.243.14.124] (localhost [127.0.0.1]) by dpdk.org (Postfix) with ESMTP id 8F2323230; Wed, 29 Nov 2017 12:42:28 +0100 (CET) Received: from NAM02-SN1-obe.outbound.protection.outlook.com (mail-sn1nam02on0076.outbound.protection.outlook.com [104.47.36.76]) by dpdk.org (Postfix) with ESMTP id 6E5963195 for ; Wed, 29 Nov 2017 12:42:27 +0100 (CET) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=CAVIUMNETWORKS.onmicrosoft.com; s=selector1-cavium-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version; bh=LQtOliH4CRHT39EPtZDjvVP36zILte8A2qjiWZBEDc4=; b=nvLgIpvg5YiCQprXP1MYJgQfdRytZ+sQHrx6/gO3FJhnIbSxyZnRou5xKWXX+vQ+lXvp9OOEbmGe9nhq4XGMy8GEcn8SeVIDemrY50Q3p9wPV9PN4+lmvo00aCUb4MQKJ5VWe5an99dormlhtKSBAMkobyoKao/VGH/naO1bxYQ= Authentication-Results: spf=none (sender IP is ) smtp.mailfrom=Jerin.JacobKollanukkaran@cavium.com; Received: from jerin (14.140.2.178) by SN2PR07MB2527.namprd07.prod.outlook.com (10.167.14.155) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384_P256) id 15.20.260.4; Wed, 29 Nov 2017 11:42:20 +0000 Date: Wed, 29 Nov 2017 17:11:56 +0530 From: Jerin Jacob To: Abhinandan Gujjar Cc: dev@dpdk.org, narender.vangati@intel.com, Nikhil Rao , Gage Eads , hemant.agrawal@nxp.com, declan.doherty@intel.com, nidadavolu.murthy@cavium.com, nithin.dabilpuram@cavium.com, narayanaprasad.athreya@cavium.com Message-ID: <20171129114153.GA16467@jerin> References: <1510210453-61428-1-git-send-email-abhinandan.gujjar@intel.com> MIME-Version: 1.0 Content-Disposition: inline In-Reply-To: <1510210453-61428-1-git-send-email-abhinandan.gujjar@intel.com> User-Agent: Mutt/1.9.1 (2017-09-22) X-Originating-IP: [14.140.2.178] X-ClientProxiedBy: BM1PR0101CA0056.INDPRD01.PROD.OUTLOOK.COM (10.174.220.146) To SN2PR07MB2527.namprd07.prod.outlook.com (10.167.14.155) X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: 05d0a6c9-8eeb-4f5f-b6f6-08d5371e42ee X-Microsoft-Antispam: UriScan:; BCL:0; PCL:0; RULEID:(5600026)(4604075)(4534020)(4602075)(7168020)(4627115)(201703031133081)(201702281549075)(2017052603199); SRVR:SN2PR07MB2527; X-Microsoft-Exchange-Diagnostics: 1; SN2PR07MB2527; 3:LtOngccw7MQhQigg4K1gmUvRkz98YdsxupTjOaAnPTi56fFgMO0tCyIcflYgdoxcEsRgkIpsQB9V+DW3q3y+dae429NCXyX4DoJsekBAbIqU+yN5xgbi9iZDPOg184ytZPH1KnZdJ87JQDhkLdHvY+NviSqUWvuCIPz42YU9YPjTuWKKpu653YMelGj2No0M/zrR17X/7gi6MNmnE3Lp9HFDsOoksN8TnD0O0qefphhaF4KEPwGeMnhddK+/OToe; 25:DIkOs2nhDYP9cqcC+BwlSSjiOIANHY1HtC3Yj+kPgBnoRX4v05XeQSFyfHmHtdA94xe3mlAgTp1BWmSLD5ZWyQ0e4jRpeMzxEHwleutohkzIYkJBrvb0DCk5VJ9QzjS6U49YadukbYWtWnWGpi8s8iY/EUB7ZHHvzSrQOD7AwoWu6dRz6lL3Uy/4AlV7aXg6/7e9Nmd5iwbsGu6NS5R3Cd9ZoCA1wncY9rO6oAf3qBuc/VLjbgPMNG0rPYyLMvzqPVd25xSm2eDcGmm/giyaQhrBv1QW/9dwTVcsVvR7B1zt//rycjVDWBn+Dw2ahxGhWFf7qO+yvimOJejqV+ZF4A==; 31:MGdOkFepSQQmA6u8t5Y78TqdiN+TML+Py148OD5ZXQaXpPPxbwqVZ5UP3fDclV2pWMTTJQhN7HZL+gugWGgUN/Yaqdu0WFH/GvXT5QTDs7aqVQWy5knG9ALYNUK29ZavCwT8LJ+LVM31UsCVs1HkI+APUXsJV9MJfv33ubkexQULIta3WfJbiBa+BooBFateSXQDVLq6NjZybp81p0n0/vUFulWw5oVgN7w8uP7ZiKI= X-MS-TrafficTypeDiagnostic: SN2PR07MB2527: X-Microsoft-Exchange-Diagnostics: 1; SN2PR07MB2527; 20:vlZZLYTXc1Y9CVFNK0rWQv+8dkB3YEMxq5tcdKyGgLsz/Ev0TQJDXKBRQSLFaQR4nbFyA4hVLspzYNrpk8tzl3iblU0IS7XXJY3Dls0NIFgBQam1DhzzVJQtnUjDXQFHxtK75/4WrGLowFk9Y1i1++970tDwOkkD+kqDYPnuHi1GN6Rju1kw2F8a40SqtUQH8oHNhKFmzQ+TvJ6Dlbg41mdWHHopzaRisItQwXfbdQyZTOUjyNWuyCI2+KKUG2Pkmi8YtvX48g7Fk50of+viYb5iai63uKrlUVlxc+ltbRxNCH9YlMxC1eSrvipNnOn0KwhYSclOPfhSw/BzNIU9nplwoC8SU+ugjmHKvlRFJpiIpKW6rHEdMzm56NaxFK3pGEFpaYQ1Gh2Cmun+rd448AdUswlO3DR20YR1hum/0SsO/IuhdznB9OtDXgcNvsEFH4Y2LS8YJEEGKoI4jJcOI97+b+evXh3SXjb4TX7HZzhaDpBmIngVQeh2/qlDh8NnNcQ+w/qTTAaypf1nmijiipSt3oW823BRSYpW9YV+TDUmk2a+WXIZz/6fI6vU97hTLxol8009JDW1AYdKJQHe6nzqMg18JULsCDchwJUrUG0=; 4:14e4UpikQm9lE/7afJi1gGpySUtOhtKE4rLaZwFfkXaA15CmQa02ixAkUFInDIQ+rartL2RIIYddkE75j6GiNQq5cClI1E7aEVTeWVEdAhTcFIjx3ACtqsvtGW4sxUpz50MyZEsduojZMWfGBPybt0Lbqy7hiO024rZ1XN6HZtdP93A37OG5CwMe3Usn4g8LuA4ZYX3wr4zezrQ/7Rm1D0OQ5C3FsljuyOStV/Nj0zK8gyu8UYw+zsior6jpaLPHfcPnrG/2fSqtCpt822mzcEag3oiJK+DUJjixMU/RscfEhUVa4fp1c3zVtsBEnqNx X-Microsoft-Antispam-PRVS: X-Exchange-Antispam-Report-Test: UriScan:(228905959029699); X-Exchange-Antispam-Report-CFA-Test: BCL:0; PCL:0; RULEID:(6040450)(2401047)(5005006)(8121501046)(93006095)(10201501046)(3231022)(3002001)(6041248)(20161123558100)(20161123560025)(20161123564025)(20161123562025)(20161123555025)(201703131423075)(201702281528075)(201703061421075)(201703061406153)(6072148)(201708071742011); SRVR:SN2PR07MB2527; BCL:0; PCL:0; RULEID:(100000803101)(100110400095); SRVR:SN2PR07MB2527; X-Forefront-PRVS: 05066DEDBB X-Forefront-Antispam-Report: SFV:NSPM; SFS:(10009020)(6009001)(366004)(376002)(346002)(13464003)(199003)(189002)(83506002)(33656002)(8656006)(8676002)(229853002)(76176999)(81156014)(55236003)(6496006)(54356999)(50986999)(101416001)(81166006)(33716001)(50466002)(53936002)(6666003)(42882006)(6916009)(2950100002)(9686003)(55016002)(189998001)(106356001)(305945005)(105586002)(7736002)(6246003)(5890100001)(107886003)(5660300001)(8936002)(4326008)(6116002)(3846002)(68736007)(1076002)(478600001)(25786009)(2486003)(52116002)(52146003)(72206003)(23676004)(58126008)(54906003)(316002)(47776003)(66066001)(16526018)(2906002)(5009440100003)(2870700001)(97736004)(110426004)(18370500001)(21314002); DIR:OUT; SFP:1101; SCL:1; SRVR:SN2PR07MB2527; H:jerin; FPR:; SPF:None; PTR:InfoNoRecords; A:1; MX:1; LANG:en; Received-SPF: None (protection.outlook.com: cavium.com does not designate permitted sender hosts) X-Microsoft-Exchange-Diagnostics: =?utf-8?q?1=3BSN2PR07MB2527=3B23=3ALOS8?= =?utf-8?q?pwenvT96YBft023wHRtWXHNx4uu4yhD2gKAFfBeGHg/EaqNhCd+q+Axm?= =?utf-8?q?yRR0BfqPDx5pphyZUoHKb2Y9xJb4AWwKl/sr9NGvQQm3DsOpYfHvEs7I?= =?utf-8?q?dIfuMkg129kmWjpCrsnhTbPKjuv2+VFUBktVw0mO+FgsL0uveImp60yb?= =?utf-8?q?QJ/XOiL02F+LTSobo1gSRKn6jyQZbrfGqiD4oiO6E2z8rA7lovZRRKeu?= =?utf-8?q?EeM28CuFBFio7js9KPkWWXu+x3gt1yQxwJS6iXhNnRWkVVp4eIhiCJIp?= =?utf-8?q?GWHgKujgm86W1UO5nAzQdsWpf4FnpAPC4O+6xnjNnQsDpRgjriLwxski?= =?utf-8?q?wLkl5+icw85FAuMRAlogNryvi3HU2NOwYVfjVjBIv225vxttStcuyOWR?= =?utf-8?q?MLisoUp9REVeTt8xrpdZLZ3agAdxnOxrlf6AxLsm0G4gr8S5g9Lmy3he?= =?utf-8?q?ThBW4wi6XKnFtcv8yoB4Y9NQZj7Urelraa0ywrbAq4HGcA/wRUDTh6qP?= =?utf-8?q?kZaCjcZTugQO2/2wQcWRsMjuD+LCEBQTg4u2ffe+wufLdkoBJ6JboyAu?= =?utf-8?q?4OJRF70AhPuNzxwpkj+oRGuwGMjXT7rhQlzEvQ6hBatTLWDn3sNJQVAq?= =?utf-8?q?U3EgH1uFVTTco1DBElJ9LXKRKZdITP2cAfZpIHHYomAKpnjNQd3eNHQk?= =?utf-8?q?dDinWdfQpz7WrxX/3oJdx2zfgZ/tQLIPNjjtLQpB+0/EOatcy4FIzfcD?= =?utf-8?q?fg+wFdwUXv+hrxOJ4O0J1OzUioTwa5X1O960eVHcY3ie6iKJWHgn8UkI?= =?utf-8?q?cWcVQDWHqRlGhL2teLUBjVwTGvxspPwKrmSm0M7fIK2jWv9eMJaMFNzO?= =?utf-8?q?CZU62qbCEm8PDI4po5vHjIIVSMis/z38dAdSxrWFjFMZwxNTiNG6IsWa?= =?utf-8?q?c+Oh9KrjZwXsJ8/wNV71iejwe7tkzD4T7JUtXf1+xw987eJkdcCVjonI?= =?utf-8?q?GB5SfFp++H3Oj77efeeVuD8fkzRsZX8hiMGpnV+hC2r2g/H8fZkP0I0r?= =?utf-8?q?1bHXUhdxQml8Wzlhm7vZ4sj1/uUmG1vSrvq5bjuDTHcVA4TwyOdM1Kh1?= =?utf-8?q?G6uluMnfF8WxTvQXgqVRmfe1Rd3Flqa6GPY8P97WA8LkUAFbWeKXpvOE?= =?utf-8?q?UJR6q3dH33QUyJF1/pU9EV3UZmAsn3zKIJFQdYEuefrNhhMDMGGDb0nJ?= =?utf-8?q?bXY/Ww28QSXmwOeMQgdfdavJRkgwPY6C250Hwet8CHVzFduVuppYO70F?= =?utf-8?q?msAuNZ6nvjKRgFejErVOr6K0kT2RYz2mAhBrH3CAFVTB8S6jAyPTn0uv?= =?utf-8?q?1pJ5R2mVFAKJiBYi92fWTLWIHWzBmkqlzdw1D5rYhW0j64PY4aaPLG7c?= =?utf-8?q?o4/6ly5Q/rixjFTim72/18kSmqMMVK4cmCnxZLUXs3fPlg7AZkBtM0Cv?= =?utf-8?q?FBUR4OZyJ/Ld7YjfrfWyFZ4V/XSThwgRiTSsnSac20KvCPIh7034rqQn?= =?utf-8?q?xRIRsIGygXAY?= X-Microsoft-Exchange-Diagnostics: 1; SN2PR07MB2527; 6:Oz3/XOUx4XUWofpuVRLoRIEjZ1g+cVsqaTiR26EAah384HF5W92TXtavz7JRKwBmiewt9Yr5ccNZ5ysZCRfI9bp2kp6DFrZRsj3Oe6kxL98hJAO9XLKsv/KKOykdAqKu3iEpka7KuhOVoUID1rIdXKfe+Jv7R3jx2fB8w7JJPYcLo5p9ckupbSI2ltzaXOjpSpMbxVUtGVCNcv8M9q1vN85qG937Gm7KPlDn20+g8BIYqesA3g0ne/+20/ZTDwQzAUXXYAB3AIMxtfTrmMlauqkbfNhTzOULwSjh/wTPDQwNL/bS48bViQ89gnEb7TicYBwrt4AiNRK/MzEHsONvyIyCENL11h5EwWsyEq8e7s8=; 5:L+Nj2rsbhBww1yMbac6B4rLUAJ7P6ZgkoOUxOWqMywXi5Ss0Ck6IVsf0ug68wc6v2UzTJfe3KBLOYhOJQnMLviA9o0geGfd7nC4sRVQPUrKVkGG0L6+phgdwm775qo1p26ehLOX4PGM4niKognvg2J6DNsHo9cwt7cpwd8/gtgo=; 24:h+MNIsJYJD0Saq+Q9zMUIoL9oPBMTccDlSMyGZxbnIXkWFs8087KR3B7EzNSxA0Xjhfo4HruxqYx23JOUh8kZiFXzpmByMas0esbP8/ra/s=; 7:SuZgjgbEHjI52vqqbpe3bw6nbO0HGhAf04ySc9h58YLgJoo28+5OmIXnrzbWZucw9TG8h/qZY4vNluK+TOfvyaasz1B1R6fzXZRQMrHE+pJLBksC+UCyRDie9L0H6DxTTRlreqATNqB2ro4c018vnawx8bjYzy+HPk6NxO8a0azkyxo9KqdvfyS/AkQCMuK/X081GhFxoUGA1aDRT/Pmk8BKptDYoUbZHDB6iZAR+zqkj4/PWpk8w2m7nwQjiVbJ SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-OriginatorOrg: caviumnetworks.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 29 Nov 2017 11:42:20.7404 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: 05d0a6c9-8eeb-4f5f-b6f6-08d5371e42ee X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 711e4ccf-2e9b-4bcf-a551-4094005b6194 X-MS-Exchange-Transport-CrossTenantHeadersStamped: SN2PR07MB2527 Subject: Re: [dpdk-dev] [RFC] eventdev: add crypto adapter API header X-BeenThere: dev@dpdk.org X-Mailman-Version: 2.1.15 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----- > Date: Thu, 9 Nov 2017 12:24:13 +0530 > From: Abhinandan Gujjar > To: jerin.jacob@caviumnetworks.com > CC: dev@dpdk.org, narender.vangati@intel.com, Abhinandan Gujjar > , Nikhil Rao , Gage > Eads > Subject: [RFC] eventdev: add crypto adapter API header > X-Mailer: git-send-email 1.9.1 > > Signed-off-by: Abhinandan Gujjar > Signed-off-by: Nikhil Rao > Signed-off-by: Gage Eads > --- > lib/librte_eventdev/Makefile | 1 + > lib/librte_eventdev/rte_event_crypto_adapter.h | 474 +++++++++++++++++++++++++ > 2 files changed, 475 insertions(+) > create mode 100644 lib/librte_eventdev/rte_event_crypto_adapter.h > > diff --git a/lib/librte_eventdev/Makefile b/lib/librte_eventdev/Makefile > index 5ac22cd..9cbe1a6 100644 > --- a/lib/librte_eventdev/Makefile > +++ b/lib/librte_eventdev/Makefile > @@ -53,6 +53,7 @@ SYMLINK-y-include += rte_eventdev_pmd_pci.h > SYMLINK-y-include += rte_eventdev_pmd_vdev.h > SYMLINK-y-include += rte_event_ring.h > SYMLINK-y-include += rte_event_eth_rx_adapter.h > +SYMLINK-y-include += rte_event_crypto_adapter.h > > # versioning export map > EXPORT_MAP := rte_eventdev_version.map > diff --git a/lib/librte_eventdev/rte_event_crypto_adapter.h b/lib/librte_eventdev/rte_event_crypto_adapter.h > new file mode 100644 > index 0000000..080c3ed > --- /dev/null > +++ b/lib/librte_eventdev/rte_event_crypto_adapter.h > @@ -0,0 +1,474 @@ > +/* > + * Copyright(c) 2017 Intel Corporation. All rights reserved. > + * All rights reserved. > + * > + * Redistribution and use in source and binary forms, with or without > + * modification, are permitted provided that the following conditions > + * are met: > + * > + * * Redistributions of source code must retain the above copyright > + * notice, this list of conditions and the following disclaimer. > + * * Redistributions in binary form must reproduce the above copyright > + * notice, this list of conditions and the following disclaimer in > + * the documentation and/or other materials provided with the > + * distribution. > + * * Neither the name of Intel Corporation nor the names of its > + * contributors may be used to endorse or promote products derived > + * from this software without specific prior written permission. > + * > + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS > + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT > + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR > + * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT > + * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, > + * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT > + * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, > + * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY > + * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT > + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE > + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. > + */ > + > +#ifndef _RTE_EVENT_CRYPTO_ADAPTER_ > +#define _RTE_EVENT_CRYPTO_ADAPTER_ > + > +/** > + * This adapter adds support to enqueue crypto completion to event device. > + * The packet flow from cryptodev to the event device can be accomplished > + * using either HW or SW mechanisms. > + * The adapter uses a EAL service core function for SW based packet transfer > + * and uses the eventdev PMD functions to configure HW based packet transfer > + * between the cryptodev and the event device. > + * > + * The event crypto adapter provides common APIs to configure the packet flow > + * from the cryptodev to event devices on both HW and SW. > + * The crypto event adapter's functions are: > + * - rte_event_crypto_adapter_create_ext() > + * - rte_event_crypto_adapter_create() > + * - rte_event_crypto_adapter_free() > + * - rte_event_crypto_adapter_queue_pair_add() > + * - rte_event_crypto_adapter_queue_pair_del() > + * - rte_event_crypto_adapter_start() > + * - rte_event_crypto_adapter_stop() > + * - rte_event_crypto_adapter_stats_get() > + * - rte_event_crypto_adapter_stats_reset() > + > + * The applicaton creates an instance using rte_event_crypto_adapter_create() > + * or rte_event_crypto_adapter_create_ext(). > + * > + * Cryptodev queue pair addition/deletion is done > + * using rte_event_crypto_adapter_queue_pair_xxx() API. > + * > + * Adapter uses rte_event_crypto_queue_pair_conf to decide whether the event > + * enqueue is based on RTE_EVENT_CRYPTO_ENQ_MULTI_EVENTQ or > + * RTE_EVENT_CRYPTO_ENQ_MBUF_MULTI_EVENTQ. > + * In case of RTE_EVENT_CRYPTO_ENQ_MULTI_EVENTQ, > + * rte_event_crypto_queue_pair_conf::ev will be used for event enqueue. > + * In case of RTE_EVENT_CRYPTO_ENQ_MBUF_MULTI_EVENTQ, > + * members of rte_event_crypto_metadata will be used for event enqueue. Adding Declan and Hemant. IMO, RTE_EVENT_CRYPTO_ENQ_MULTI_EVENTQ may not be very useful from application perceptive as the scope is very limited. In real world use cases, we will be attaching destination event queue information to the session, not to the queue pair. IMO, RTE_EVENT_CRYPTO_ENQ_MBUF_MULTI_EVENTQ scheme may not very convenient for application writers as # it relies on mbuf private area memory. So it has additional memory alloc/free requirements. # additional overhead for application/PMD to write/read the event queue metadata information per packet. Since we already have meta data structure in the crypto area, How about adding the destination event queue attributes in the PMD crypto session area and for, _session less_, we can add it in rte_crypto_op stricture? This will help in: # Offloading HW specific meta data generation for event queue attributes to slow path. # From the application perspective, most likely the event queue parameters will be different for each session not per packet nor per event queue pair. Something like below to share my view. Exact details may be we can work it out. ➜ [master][dpdk.org] $ git diff > + * > + * The metadata offset is used to configure the location of the > + * rte_event_crypto_metadata structure within the mbuf's private metadata area. > + * > + * When the application sends crypto operations to the adapter, > + * the crypto queue pair identifier needs to be specified, similarly eventdev > + * parameters such as the flow id, scheduling type etc are needed by the > + * adapter when it enqueues mbufs from completed crypto operations to eventdev. > + */ > + > +#ifdef __cplusplus > +extern "C" { > +#endif > + > +#include > +#include > + > +#include "rte_eventdev.h" > + > +#define RTE_EVENT_CRYPTO_ADAPTER_MAX_INSTANCE 32 > + > + /** > + * @warning > + * @b EXPERIMENTAL: this enum may change without prior notice > + * > + * Crypto event queue conf type > + */ > +enum rte_event_crypto_conf_type { > + RTE_EVENT_CRYPTO_CONF_TYPE_EVENT = 1, > + /**< Refer RTE_EVENT_CRYPTO_ADAPTER_CAP_MULTI_EVENTQ */ > + RTE_EVENT_CRYPTO_CONF_TYPE_MBUF, > + /**< Refer RTE_EVENT_CRYPTO_ADAPTER_CAP_MBUF_MULTI_EVENTQ */ > + RTE_EVENT_CRYPTO_CONF_TYPE_MAX > +}; See above. > + > + /** > + * @warning > + * @b EXPERIMENTAL: this enum may change without prior notice > + * > + * Crypto event adapter type > + */ > +enum rte_event_crypto_adapter_type { > + RTE_EVENT_CRYPTO_ADAPTER_RX_ONLY = 1, > + /**< Start only Rx part of crypto adapter. > + * Packets dequeued from cryptodev are new to eventdev and > + * events will be treated as RTE_EVENT_OP_NEW */ > + RTE_EVENT_CRYPTO_ADAPTER_RX_TX, > + /**< Start both Rx & Tx part of crypto adapter. > + * Packet's event context will be retained and > + * event will be treated as RTE_EVENT_OP_FORWARD */ > +}; How about leveraging ev.op based schematics as mentioned above? diff --git a/lib/librte_cryptodev/rte_crypto.h b/lib/librte_cryptodev/rte_crypto.h index 3d672fe7d..b44ef673b 100644 --- a/lib/librte_cryptodev/rte_crypto.h +++ b/lib/librte_cryptodev/rte_crypto.h @@ -115,6 +115,9 @@ struct rte_crypto_op { uint8_t reserved[5]; /**< Reserved bytes to fill 64 bits for future additions */ +#if 0 + Crypto completion event attribute. For _session less_ crypto enqueue operation, + The will field shall be used by application to post the crypto completion event + upon the crypto enqueue operation complete. + Note: In the case of session based crypto operation, SW based crypto adapter can use + this memory to store crypto event completion attributes from the PMD + specific session area. + + Note: ev.event_ptr will point to struct rte_crypto_op *op, So + that core can free the ops memory on event_dequeue(). +#endif + + struct rte_event ev; struct rte_mempool *mempool; /**< crypto operation mempool which operation is allocated from * */ diff --git a/lib/librte_cryptodev/rte_cryptodev.h b/lib/librte_cryptodev/rte_cryptodev.h index dade5548f..540b29e66 100644 --- a/lib/librte_cryptodev/rte_cryptodev.h +++ b/lib/librte_cryptodev/rte_cryptodev.h @@ -945,6 +945,13 @@ rte_cryptodev_sym_session_init(uint8_t dev_id, struct rte_crypto_sym_xform *xforms, struct rte_mempool *mempool); +#if 0 + Create PMD specific session meta data for the destination event queue + attribute to post the crypto completion event on crypto work complete. +#endif +int +rte_cryptodev_sym_session_event_init(uint8_t dev_id, + struct rte_cryptodev_sym_session *sess, + struct rte_crypto_sym_xform *xforms, + struct rte_mempool *mempool, + struct rte_event ev); + /** * Frees private data for the device id, based on its device type, * returning it to its mempool.