get:
Show a patch.

patch:
Update a patch.

put:
Update a patch.

GET /api/patches/39525/?format=api
HTTP 200 OK
Allow: GET, PUT, PATCH, HEAD, OPTIONS
Content-Type: application/json
Vary: Accept

{
    "id": 39525,
    "url": "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"
    ]
}