Patch Detail
get:
Show a patch.
patch:
Update a patch.
put:
Update a patch.
GET /api/patches/39525/?format=api
http://patches.dpdk.org/api/patches/39525/?format=api", "web_url": "http://patches.dpdk.org/project/dpdk/patch/1525853881-140647-2-git-send-email-abhinandan.gujjar@intel.com/", "project": { "id": 1, "url": "http://patches.dpdk.org/api/projects/1/?format=api", "name": "DPDK", "link_name": "dpdk", "list_id": "dev.dpdk.org", "list_email": "dev@dpdk.org", "web_url": "http://core.dpdk.org", "scm_url": "git://dpdk.org/dpdk", "webscm_url": "http://git.dpdk.org/dpdk", "list_archive_url": "https://inbox.dpdk.org/dev", "list_archive_url_format": "https://inbox.dpdk.org/dev/{}", "commit_url_format": "" }, "msgid": "<1525853881-140647-2-git-send-email-abhinandan.gujjar@intel.com>", "list_archive_url": "https://inbox.dpdk.org/dev/1525853881-140647-2-git-send-email-abhinandan.gujjar@intel.com", "date": "2018-05-09T08:17:57", "name": "[dpdk-dev,v5,1/5] eventdev: introduce event crypto adapter", "commit_ref": null, "pull_url": null, "state": "accepted", "archived": true, "hash": "af87bd8cda23a1b92aaee5f9a6f1a16a82d231ef", "submitter": { "id": 883, "url": "http://patches.dpdk.org/api/people/883/?format=api", "name": "Gujjar, Abhinandan S", "email": "abhinandan.gujjar@intel.com" }, "delegate": { "id": 310, "url": "http://patches.dpdk.org/api/users/310/?format=api", "username": "jerin", "first_name": "Jerin", "last_name": "Jacob", "email": "jerinj@marvell.com" }, "mbox": "http://patches.dpdk.org/project/dpdk/patch/1525853881-140647-2-git-send-email-abhinandan.gujjar@intel.com/mbox/", "series": [], "comments": "http://patches.dpdk.org/api/patches/39525/comments/", "check": "warning", "checks": "http://patches.dpdk.org/api/patches/39525/checks/", "tags": {}, "related": [], "headers": { "Return-Path": "<dev-bounces@dpdk.org>", "X-Original-To": "patchwork@dpdk.org", "Delivered-To": "patchwork@dpdk.org", "Received": [ "from [92.243.14.124] (localhost [127.0.0.1])\n\tby dpdk.org (Postfix) with ESMTP id 44EDFAAA7;\n\tWed, 9 May 2018 10:17:35 +0200 (CEST)", "from mga01.intel.com (mga01.intel.com [192.55.52.88])\n\tby dpdk.org (Postfix) with ESMTP id 2E934AA9B\n\tfor <dev@dpdk.org>; Wed, 9 May 2018 10:17:34 +0200 (CEST)", "from fmsmga001.fm.intel.com ([10.253.24.23])\n\tby fmsmga101.fm.intel.com with ESMTP/TLS/DHE-RSA-AES256-GCM-SHA384;\n\t09 May 2018 01:17:33 -0700", "from unknown (HELO localhost.localdomain) ([10.224.122.195])\n\tby fmsmga001.fm.intel.com with ESMTP; 09 May 2018 01:17:31 -0700" ], "X-Amp-Result": "SKIPPED(no attachment in message)", "X-Amp-File-Uploaded": "False", "X-ExtLoop1": "1", "X-IronPort-AV": "E=Sophos;i=\"5.49,381,1520924400\"; d=\"scan'208\";a=\"53647792\"", "From": "Abhinandan Gujjar <abhinandan.gujjar@intel.com>", "To": "jerin.jacob@caviumnetworks.com, hemant.agrawal@nxp.com,\n\takhil.goyal@nxp.com, dev@dpdk.org", "Cc": "narender.vangati@intel.com, abhinandan.gujjar@intel.com,\n\tnikhil.rao@intel.com, gage.eads@intel.com", "Date": "Wed, 9 May 2018 13:47:57 +0530", "Message-Id": "<1525853881-140647-2-git-send-email-abhinandan.gujjar@intel.com>", "X-Mailer": "git-send-email 1.9.1", "In-Reply-To": "<1525853881-140647-1-git-send-email-abhinandan.gujjar@intel.com>", "References": "<1525853881-140647-1-git-send-email-abhinandan.gujjar@intel.com>", "Subject": "[dpdk-dev] [v5,1/5] eventdev: introduce event crypto adapter", "X-BeenThere": "dev@dpdk.org", "X-Mailman-Version": "2.1.15", "Precedence": "list", "List-Id": "DPDK patches and discussions <dev.dpdk.org>", "List-Unsubscribe": "<https://dpdk.org/ml/options/dev>,\n\t<mailto:dev-request@dpdk.org?subject=unsubscribe>", "List-Archive": "<http://dpdk.org/ml/archives/dev/>", "List-Post": "<mailto:dev@dpdk.org>", "List-Help": "<mailto:dev-request@dpdk.org?subject=help>", "List-Subscribe": "<https://dpdk.org/ml/listinfo/dev>,\n\t<mailto:dev-request@dpdk.org?subject=subscribe>", "Errors-To": "dev-bounces@dpdk.org", "Sender": "\"dev\" <dev-bounces@dpdk.org>" }, "content": "This patch introduces event crypto adapter APIs. It\nalso provides information on working model/adapter\nmodes & their usage. Application is expected to use\nthis interface to transfer packets between the crypto\ndevice & the event device.\n\nSigned-off-by: Abhinandan Gujjar <abhinandan.gujjar@intel.com>\nSigned-off-by: Nikhil Rao <nikhil.rao@intel.com>\nSigned-off-by: Gage Eads <gage.eads@intel.com>\nAcked-by: Akhil Goyal <akhil.goyal@nxp.com>\n---\n MAINTAINERS | 5 +\n lib/librte_eventdev/rte_event_crypto_adapter.h | 575 +++++++++++++++++++++++++\n 2 files changed, 580 insertions(+)\n create mode 100644 lib/librte_eventdev/rte_event_crypto_adapter.h", "diff": "diff --git a/MAINTAINERS b/MAINTAINERS\nindex ce06e93..991b465 100644\n--- a/MAINTAINERS\n+++ b/MAINTAINERS\n@@ -362,6 +362,11 @@ F: lib/librte_eventdev/*timer_adapter*\n F: test/test/test_event_timer_adapter.c\n F: doc/guides/prog_guide/event_timer_adapter.rst\n \n+Eventdev Crypto Adapter API - EXPERIMENTAL\n+M: Abhinandan Gujjar <abhinandan.gujjar@intel.com>\n+T: git://dpdk.org/next/dpdk-next-eventdev\n+F: lib/librte_eventdev/*crypto_adapter*\n+\n Raw device API - EXPERIMENTAL\n M: Shreyansh Jain <shreyansh.jain@nxp.com>\n M: Hemant Agrawal <hemant.agrawal@nxp.com>\ndiff --git a/lib/librte_eventdev/rte_event_crypto_adapter.h b/lib/librte_eventdev/rte_event_crypto_adapter.h\nnew file mode 100644\nindex 0000000..d367309\n--- /dev/null\n+++ b/lib/librte_eventdev/rte_event_crypto_adapter.h\n@@ -0,0 +1,575 @@\n+/* SPDX-License-Identifier: BSD-3-Clause\n+ * Copyright(c) 2018 Intel Corporation.\n+ * All rights reserved.\n+ */\n+\n+#ifndef _RTE_EVENT_CRYPTO_ADAPTER_\n+#define _RTE_EVENT_CRYPTO_ADAPTER_\n+\n+/**\n+ * @file\n+ *\n+ * RTE Event crypto adapter\n+ *\n+ * Eventdev library provides couple of adapters to bridge between various\n+ * components for providing new event source. The event crypto adapter is\n+ * one of those adapters which is intended to bridge between event devices\n+ * and crypto devices.\n+ *\n+ * The crypto adapter adds support to enqueue/dequeue crypto operations to/\n+ * from event device. The packet flow between crypto device and the event\n+ * device can be accomplished using both SW and HW based transfer mechanisms.\n+ * The adapter uses an EAL service core function for SW based packet transfer\n+ * and uses the eventdev PMD functions to configure HW based packet transfer\n+ * between the crypto device and the event device.\n+ *\n+ * The application can choose to submit a crypto operation directly to\n+ * crypto device or send it to the crypto adapter via eventdev based on\n+ * RTE_EVENT_CRYPTO_ADAPTER_CAP_INTERNAL_PORT_OP_FWD capability.\n+ * The first mode is known as the event new(RTE_EVENT_CRYPTO_ADAPTER_OP_NEW)\n+ * mode and the second as the event forward(RTE_EVENT_CRYPTO_ADAPTER_OP_FORWARD)\n+ * mode. The choice of mode can be specified while creating the adapter.\n+ * In the former mode, it is an application responsibility to enable ingress\n+ * packet ordering. In the latter mode, it is the adapter responsibility to\n+ * enable the ingress packet ordering.\n+ *\n+ *\n+ * Working model of RTE_EVENT_CRYPTO_ADAPTER_OP_NEW mode:\n+ *\n+ * +--------------+ +--------------+\n+ * | | | Crypto stage |\n+ * | Application |---[2]-->| + enqueue to |\n+ * | | | cryptodev |\n+ * +--------------+ +--------------+\n+ * ^ ^ |\n+ * | | [3]\n+ * [6] [1] |\n+ * | | |\n+ * +--------------+ |\n+ * | | |\n+ * | Event device | |\n+ * | | |\n+ * +--------------+ |\n+ * ^ |\n+ * | |\n+ * [5] |\n+ * | v\n+ * +--------------+ +--------------+\n+ * | | | |\n+ * |Crypto adapter|<--[4]---| Cryptodev |\n+ * | | | |\n+ * +--------------+ +--------------+\n+ *\n+ *\n+ * [1] Application dequeues events from the previous stage.\n+ * [2] Application prepares the crypto operations.\n+ * [3] Crypto operations are submitted to cryptodev by application.\n+ * [4] Crypto adapter dequeues crypto completions from cryptodev.\n+ * [5] Crypto adapter enqueues events to the eventdev.\n+ * [6] Application dequeues from eventdev and prepare for further\n+ * processing.\n+ *\n+ * In the RTE_EVENT_CRYPTO_ADAPTER_OP_NEW mode, application submits crypto\n+ * operations directly to crypto device. The adapter then dequeues crypto\n+ * completions from crypto device and enqueue events to the event device.\n+ * This mode does not ensure ingress ordering, if the application directly\n+ * enqueues to cryptodev without going through crypto/atomic stage i.e.\n+ * removing item [1] and [2].\n+ * Events dequeued from the adapter will be treated as new events.\n+ * In this mode, application needs to specify event information (response\n+ * information) which is needed to enqueue an event after the crypto operation\n+ * is completed.\n+ *\n+ *\n+ * Working model of RTE_EVENT_CRYPTO_ADAPTER_OP_FORWARD mode:\n+ *\n+ * +--------------+ +--------------+\n+ * --[1]-->| |---[2]-->| Application |\n+ * | Event device | | in |\n+ * <--[8]--| |<--[3]---| Ordered stage|\n+ * +--------------+ +--------------+\n+ * ^ |\n+ * | [4]\n+ * [7] |\n+ * | v\n+ * +----------------+ +--------------+\n+ * | |--[5]->| |\n+ * | Crypto adapter | | Cryptodev |\n+ * | |<-[6]--| |\n+ * +----------------+ +--------------+\n+ *\n+ *\n+ * [1] Events from the previous stage.\n+ * [2] Application in ordered stage dequeues events from eventdev.\n+ * [3] Application enqueues crypto operations as events to eventdev.\n+ * [4] Crypto adapter dequeues event from eventdev.\n+ * [5] Crypto adapter submits crypto operations to cryptodev\n+ * (Atomic stage).\n+ * [6] Crypto adapter dequeues crypto completions from cryptodev\n+ * [7] Crypto adapter enqueues events to the eventdev\n+ * [8] Events to the next stage\n+ *\n+ * In the RTE_EVENT_CRYPTO_ADAPTER_OP_FORWARD mode, if HW supports\n+ * RTE_EVENT_CRYPTO_ADAPTER_CAP_INTERNAL_PORT_OP_FWD capability the application\n+ * can directly submit the crypto operations to the cryptodev.\n+ * If not, application retrieves crypto adapter's event port using\n+ * rte_event_crypto_adapter_event_port_get() API. Then, links its event\n+ * queue to this port and starts enqueuing crypto operations as events\n+ * to the eventdev. The adapter then dequeues the events and submits the\n+ * crypto operations to the cryptodev. After the crypto completions, the\n+ * adapter enqueues events to the event device.\n+ * Application can use this mode, when ingress packet ordering is needed.\n+ * Events dequeued from the adapter will be treated as forwarded events.\n+ * In this mode, the application needs to specify the cryptodev ID\n+ * and queue pair ID (request information) needed to enqueue a crypto\n+ * operation in addition to the event information (response information)\n+ * needed to enqueue an event after the crypto operation has completed.\n+ *\n+ *\n+ * The event crypto adapter provides common APIs to configure the packet flow\n+ * from the crypto device to event devices for both SW and HW based transfers.\n+ * The crypto event adapter's functions are:\n+ * - rte_event_crypto_adapter_create_ext()\n+ * - rte_event_crypto_adapter_create()\n+ * - rte_event_crypto_adapter_free()\n+ * - rte_event_crypto_adapter_queue_pair_add()\n+ * - rte_event_crypto_adapter_queue_pair_del()\n+ * - rte_event_crypto_adapter_start()\n+ * - rte_event_crypto_adapter_stop()\n+ * - rte_event_crypto_adapter_stats_get()\n+ * - rte_event_crypto_adapter_stats_reset()\n+\n+ * The applicaton creates an instance using rte_event_crypto_adapter_create()\n+ * or rte_event_crypto_adapter_create_ext().\n+ *\n+ * Cryptodev queue pair addition/deletion is done using the\n+ * rte_event_crypto_adapter_queue_pair_xxx() APIs. If HW supports\n+ * RTE_EVENT_CRYPTO_ADAPTER_CAP_INTERNAL_PORT_QP_EV_BIND capability, event\n+ * information must be passed to the add API.\n+ *\n+ * The SW adapter or HW PMD uses rte_crypto_op::sess_type to decide whether\n+ * request/response(private) data is located in the crypto/security session\n+ * or at an offset in the rte_crypto_op.\n+ *\n+ * For session-based operations, the set and get API provides a mechanism for\n+ * an application to store and retrieve the data information stored\n+ * along with the crypto session.\n+ * The RTE_EVENT_CRYPTO_ADAPTER_CAP_SESSION_PRIVATE_DATA capability indicates\n+ * whether HW or SW supports this feature.\n+ *\n+ * For session-less mode, the adapter gets the private data information placed\n+ * along with the ``struct rte_crypto_op``.\n+ * The rte_crypto_op::private_data_offset provides an offset to locate the\n+ * request/response information in the rte_crypto_op. This offset is counted\n+ * from the start of the rte_crypto_op including initialization vector (IV).\n+ */\n+\n+#ifdef __cplusplus\n+extern \"C\" {\n+#endif\n+\n+#include <stdint.h>\n+\n+#include \"rte_eventdev.h\"\n+\n+/**\n+ * @warning\n+ * @b EXPERIMENTAL: this enum may change without prior notice\n+ *\n+ * Crypto event adapter mode\n+ */\n+enum rte_event_crypto_adapter_mode {\n+\tRTE_EVENT_CRYPTO_ADAPTER_OP_NEW,\n+\t/**< Start the crypto adapter in event new mode.\n+\t * @see RTE_EVENT_OP_NEW.\n+\t * Application submits crypto operations to the cryptodev.\n+\t * Adapter only dequeues the crypto completions from cryptodev\n+\t * and enqueue events to the eventdev.\n+\t */\n+\tRTE_EVENT_CRYPTO_ADAPTER_OP_FORWARD,\n+\t/**< Start the crypto adapter in event forward mode.\n+\t * @see RTE_EVENT_OP_FORWARD.\n+\t * Application submits crypto requests as events to the crypto\n+\t * adapter or crypto device based on\n+\t * RTE_EVENT_CRYPTO_ADAPTER_CAP_INTERNAL_PORT_OP_FWD capability.\n+\t * Crypto completions are enqueued back to the eventdev by\n+\t * crypto adapter.\n+\t */\n+};\n+\n+/**\n+ * @warning\n+ * @b EXPERIMENTAL: this structure may change without prior notice\n+ *\n+ * Crypto event request structure will be filled by application to\n+ * provide event request information to the adapter.\n+ */\n+struct rte_event_crypto_request {\n+\tuint8_t resv[8];\n+\t/**< Overlaps with first 8 bytes of struct rte_event\n+\t * that encode the response event information. Application\n+\t * is expected to fill in struct rte_event response_info.\n+\t */\n+\tuint16_t cdev_id;\n+\t/**< cryptodev ID to be used */\n+\tuint16_t queue_pair_id;\n+\t/**< cryptodev queue pair ID to be used */\n+\tuint32_t resv1;\n+\t/**< Reserved bits */\n+};\n+\n+/**\n+ * @warning\n+ * @b EXPERIMENTAL: this structure may change without prior notice\n+ *\n+ * Crypto event metadata structure will be filled by application\n+ * to provide crypto request and event response information.\n+ *\n+ * If crypto events are enqueued using a HW mechanism, the cryptodev\n+ * PMD will use the event response information to set up the event\n+ * that is enqueued back to eventdev after completion of the crypto\n+ * operation. If the transfer is done by SW, event response information\n+ * will be used by the adapter.\n+ */\n+union rte_event_crypto_metadata {\n+\tstruct rte_event_crypto_request request_info;\n+\t/**< Request information to be filled in by application\n+\t * for RTE_EVENT_CRYPTO_ADAPTER_OP_FORWARD mode.\n+\t */\n+\tstruct rte_event response_info;\n+\t/**< Response information to be filled in by application\n+\t * for RTE_EVENT_CRYPTO_ADAPTER_OP_NEW and\n+\t * RTE_EVENT_CRYPTO_ADAPTER_OP_FORWARD mode.\n+\t */\n+};\n+\n+/**\n+ * @warning\n+ * @b EXPERIMENTAL: this structure may change without prior notice\n+ *\n+ * Adapter configuration structure that the adapter configuration callback\n+ * function is expected to fill out\n+ * @see rte_event_crypto_adapter_conf_cb\n+ */\n+struct rte_event_crypto_adapter_conf {\n+\tuint8_t event_port_id;\n+\t/**< Event port identifier, the adapter enqueues events to this\n+\t * port and dequeues crypto request events in\n+\t * RTE_EVENT_CRYPTO_ADAPTER_OP_FORWARD mode.\n+\t */\n+\tuint32_t max_nb;\n+\t/**< The adapter can return early if it has processed at least\n+\t * max_nb crypto ops. This isn't treated as a requirement; batching\n+\t * may cause the adapter to process more than max_nb crypto ops.\n+\t */\n+};\n+\n+/**\n+ * @warning\n+ * @b EXPERIMENTAL: this API may change without prior notice\n+ *\n+ * Function type used for adapter configuration callback. The callback is\n+ * used to fill in members of the struct rte_event_crypto_adapter_conf, this\n+ * callback is invoked when creating a SW service for packet transfer from\n+ * cryptodev queue pair to the event device. The SW service is created within\n+ * the rte_event_crypto_adapter_queue_pair_add() function if SW based packet\n+ * transfers from cryptodev queue pair to the event device are required.\n+ *\n+ * @param id\n+ * Adapter identifier.\n+ *\n+ * @param dev_id\n+ * Event device identifier.\n+ *\n+ * @param conf\n+ * Structure that needs to be populated by this callback.\n+ *\n+ * @param arg\n+ * Argument to the callback. This is the same as the conf_arg passed to the\n+ * rte_event_crypto_adapter_create_ext().\n+ */\n+typedef int (*rte_event_crypto_adapter_conf_cb) (uint8_t id, uint8_t dev_id,\n+\t\t\tstruct rte_event_crypto_adapter_conf *conf,\n+\t\t\tvoid *arg);\n+\n+/**\n+ * @warning\n+ * @b EXPERIMENTAL: this structure may change without prior notice\n+ *\n+ * A structure used to retrieve statistics for an event crypto adapter\n+ * instance.\n+ */\n+\n+struct rte_event_crypto_adapter_stats {\n+\tuint64_t event_poll_count;\n+\t/**< Event port poll count */\n+\tuint64_t event_deq_count;\n+\t/**< Event dequeue count */\n+\tuint64_t crypto_enq_count;\n+\t/**< Cryptodev enqueue count */\n+\tuint64_t crypto_enq_fail;\n+\t/**< Cryptodev enqueue failed count */\n+\tuint64_t crypto_deq_count;\n+\t/**< Cryptodev dequeue count */\n+\tuint64_t event_enq_count;\n+\t/**< Event enqueue count */\n+\tuint64_t event_enq_retry_count;\n+\t/**< Event enqueue retry count */\n+\tuint64_t event_enq_fail_count;\n+\t/**< Event enqueue fail count */\n+};\n+\n+/**\n+ * @warning\n+ * @b EXPERIMENTAL: this API may change without prior notice\n+ *\n+ * Create a new event crypto adapter with the specified identifier.\n+ *\n+ * @param id\n+ * Adapter identifier.\n+ *\n+ * @param dev_id\n+ * Event device identifier.\n+ *\n+ * @param conf_cb\n+ * Callback function that fills in members of a\n+ * struct rte_event_crypto_adapter_conf struct passed into\n+ * it.\n+ *\n+ * @param mode\n+ * Flag to indicate the mode of the adapter.\n+ * @see rte_event_crypto_adapter_mode\n+ *\n+ * @param conf_arg\n+ * Argument that is passed to the conf_cb function.\n+ *\n+ * @return\n+ * - 0: Success\n+ * - <0: Error code on failure\n+ */\n+int __rte_experimental\n+rte_event_crypto_adapter_create_ext(uint8_t id, uint8_t dev_id,\n+\t\t\t\t rte_event_crypto_adapter_conf_cb conf_cb,\n+\t\t\t\t enum rte_event_crypto_adapter_mode mode,\n+\t\t\t\t void *conf_arg);\n+\n+/**\n+ * @warning\n+ * @b EXPERIMENTAL: this API may change without prior notice\n+ *\n+ * Create a new event crypto adapter with the specified identifier.\n+ * This function uses an internal configuration function that creates an event\n+ * port. This default function reconfigures the event device with an\n+ * additional event port and set up the event port using the port_config\n+ * parameter passed into this function. In case the application needs more\n+ * control in configuration of the service, it should use the\n+ * rte_event_crypto_adapter_create_ext() version.\n+ *\n+ * @param id\n+ * Adapter identifier.\n+ *\n+ * @param dev_id\n+ * Event device identifier.\n+ *\n+ * @param port_config\n+ * Argument of type *rte_event_port_conf* that is passed to the conf_cb\n+ * function.\n+ *\n+ * @param mode\n+ * Flag to indicate the mode of the adapter.\n+ * @see rte_event_crypto_adapter_mode\n+ *\n+ * @return\n+ * - 0: Success\n+ * - <0: Error code on failure\n+ */\n+int __rte_experimental\n+rte_event_crypto_adapter_create(uint8_t id, uint8_t dev_id,\n+\t\t\t\tstruct rte_event_port_conf *port_config,\n+\t\t\t\tenum rte_event_crypto_adapter_mode mode);\n+\n+/**\n+ * @warning\n+ * @b EXPERIMENTAL: this API may change without prior notice\n+ *\n+ * Free an event crypto adapter\n+ *\n+ * @param id\n+ * Adapter identifier.\n+ *\n+ * @return\n+ * - 0: Success\n+ * - <0: Error code on failure, If the adapter still has queue pairs\n+ * added to it, the function returns -EBUSY.\n+ */\n+int __rte_experimental\n+rte_event_crypto_adapter_free(uint8_t id);\n+\n+/**\n+ * @warning\n+ * @b EXPERIMENTAL: this API may change without prior notice\n+ *\n+ * Add a queue pair to an event crypto adapter.\n+ *\n+ * @param id\n+ * Adapter identifier.\n+ *\n+ * @param cdev_id\n+ * Cryptodev identifier.\n+ *\n+ * @param queue_pair_id\n+ * Cryptodev queue pair identifier. If queue_pair_id is set -1,\n+ * adapter adds all the pre configured queue pairs to the instance.\n+ *\n+ * @param event\n+ * if HW supports cryptodev queue pair to event queue binding, application is\n+ * expected to fill in event information, else it will be NULL.\n+ * @see RTE_EVENT_CRYPTO_ADAPTER_CAP_INTERNAL_PORT_QP_EV_BIND\n+ *\n+ * @return\n+ * - 0: Success, queue pair added correctly.\n+ * - <0: Error code on failure.\n+ */\n+int __rte_experimental\n+rte_event_crypto_adapter_queue_pair_add(uint8_t id,\n+\t\t\tuint8_t cdev_id,\n+\t\t\tint32_t queue_pair_id,\n+\t\t\tconst struct rte_event *event);\n+\n+/**\n+ * @warning\n+ * @b EXPERIMENTAL: this API may change without prior notice\n+ *\n+ * Delete a queue pair from an event crypto adapter.\n+ *\n+ * @param id\n+ * Adapter identifier.\n+ *\n+ * @param cdev_id\n+ * Cryptodev identifier.\n+ *\n+ * @param queue_pair_id\n+ * Cryptodev queue pair identifier.\n+ *\n+ * @return\n+ * - 0: Success, queue pair deleted successfully.\n+ * - <0: Error code on failure.\n+ */\n+int __rte_experimental\n+rte_event_crypto_adapter_queue_pair_del(uint8_t id, uint8_t cdev_id,\n+\t\t\t\t\tint32_t queue_pair_id);\n+\n+/**\n+ * @warning\n+ * @b EXPERIMENTAL: this API may change without prior notice\n+ *\n+ * Start event crypto adapter\n+ *\n+ * @param id\n+ * Adapter identifier.\n+ *\n+ *\n+ * @return\n+ * - 0: Success, adapter started successfully.\n+ * - <0: Error code on failure.\n+ */\n+int __rte_experimental\n+rte_event_crypto_adapter_start(uint8_t id);\n+\n+/**\n+ * @warning\n+ * @b EXPERIMENTAL: this API may change without prior notice\n+ *\n+ * Stop event crypto adapter\n+ *\n+ * @param id\n+ * Adapter identifier.\n+ *\n+ * @return\n+ * - 0: Success, adapter stopped successfully.\n+ * - <0: Error code on failure.\n+ */\n+int __rte_experimental\n+rte_event_crypto_adapter_stop(uint8_t id);\n+\n+/**\n+ * @warning\n+ * @b EXPERIMENTAL: this API may change without prior notice\n+ *\n+ * Retrieve statistics for an adapter\n+ *\n+ * @param id\n+ * Adapter identifier.\n+ *\n+ * @param [out] stats\n+ * A pointer to structure used to retrieve statistics for an adapter.\n+ *\n+ * @return\n+ * - 0: Success, retrieved successfully.\n+ * - <0: Error code on failure.\n+ */\n+int __rte_experimental\n+rte_event_crypto_adapter_stats_get(uint8_t id,\n+\t\t\t\tstruct rte_event_crypto_adapter_stats *stats);\n+\n+/**\n+ * @warning\n+ * @b EXPERIMENTAL: this API may change without prior notice\n+ *\n+ * Reset statistics for an adapter.\n+ *\n+ * @param id\n+ * Adapter identifier.\n+ *\n+ * @return\n+ * - 0: Success, statistics reset successfully.\n+ * - <0: Error code on failure.\n+ */\n+int __rte_experimental\n+rte_event_crypto_adapter_stats_reset(uint8_t id);\n+\n+/**\n+ * @warning\n+ * @b EXPERIMENTAL: this API may change without prior notice\n+ *\n+ * Retrieve the service ID of an adapter. If the adapter doesn't use\n+ * a rte_service function, this function returns -ESRCH.\n+ *\n+ * @param id\n+ * Adapter identifier.\n+ *\n+ * @param [out] service_id\n+ * A pointer to a uint32_t, to be filled in with the service id.\n+ *\n+ * @return\n+ * - 0: Success\n+ * - <0: Error code on failure, if the adapter doesn't use a rte_service\n+ * function, this function returns -ESRCH.\n+ */\n+int __rte_experimental\n+rte_event_crypto_adapter_service_id_get(uint8_t id, uint32_t *service_id);\n+\n+/**\n+ * @warning\n+ * @b EXPERIMENTAL: this API may change without prior notice\n+ *\n+ * Retrieve the event port of an adapter.\n+ *\n+ * @param id\n+ * Adapter identifier.\n+ *\n+ * @param [out] event_port_id\n+ * Application links its event queue to this adapter port which is used\n+ * in RTE_EVENT_CRYPTO_ADAPTER_OP_FORWARD mode.\n+ *\n+ * @return\n+ * - 0: Success\n+ * - <0: Error code on failure.\n+ */\n+int __rte_experimental\n+rte_event_crypto_adapter_event_port_get(uint8_t id, uint8_t *event_port_id);\n+\n+#ifdef __cplusplus\n+}\n+#endif\n+#endif\t/* _RTE_EVENT_CRYPTO_ADAPTER_ */\n", "prefixes": [ "dpdk-dev", "v5", "1/5" ] }{ "id": 39525, "url": "