get:
Show a patch.

patch:
Update a patch.

put:
Update a patch.

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

{
    "id": 111060,
    "url": "http://patches.dpdk.org/api/patches/111060/?format=api",
    "web_url": "http://patches.dpdk.org/project/dpdk/patch/20220512124527.2031321-2-gakhil@marvell.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": "<20220512124527.2031321-2-gakhil@marvell.com>",
    "list_archive_url": "https://inbox.dpdk.org/dev/20220512124527.2031321-2-gakhil@marvell.com",
    "date": "2022-05-12T12:45:21",
    "name": "[v5,1/7] cryptodev: add APIs to get/set event metadata",
    "commit_ref": null,
    "pull_url": null,
    "state": "accepted",
    "archived": true,
    "hash": "d37163e2ba8d5db0d60cf72ae43ec11197905077",
    "submitter": {
        "id": 2094,
        "url": "http://patches.dpdk.org/api/people/2094/?format=api",
        "name": "Akhil Goyal",
        "email": "gakhil@marvell.com"
    },
    "delegate": {
        "id": 6690,
        "url": "http://patches.dpdk.org/api/users/6690/?format=api",
        "username": "akhil",
        "first_name": "akhil",
        "last_name": "goyal",
        "email": "gakhil@marvell.com"
    },
    "mbox": "http://patches.dpdk.org/project/dpdk/patch/20220512124527.2031321-2-gakhil@marvell.com/mbox/",
    "series": [
        {
            "id": 22913,
            "url": "http://patches.dpdk.org/api/series/22913/?format=api",
            "web_url": "http://patches.dpdk.org/project/dpdk/list/?series=22913",
            "date": "2022-05-12T12:45:20",
            "name": "Add new cryptodev op for event metadata",
            "version": 5,
            "mbox": "http://patches.dpdk.org/series/22913/mbox/"
        }
    ],
    "comments": "http://patches.dpdk.org/api/patches/111060/comments/",
    "check": "success",
    "checks": "http://patches.dpdk.org/api/patches/111060/checks/",
    "tags": {},
    "related": [],
    "headers": {
        "Return-Path": "<dev-bounces@dpdk.org>",
        "X-Original-To": "patchwork@inbox.dpdk.org",
        "Delivered-To": "patchwork@inbox.dpdk.org",
        "Received": [
            "from mails.dpdk.org (mails.dpdk.org [217.70.189.124])\n\tby inbox.dpdk.org (Postfix) with ESMTP id 844FFA00BE;\n\tThu, 12 May 2022 14:45:43 +0200 (CEST)",
            "from [217.70.189.124] (localhost [127.0.0.1])\n\tby mails.dpdk.org (Postfix) with ESMTP id 6303B42827;\n\tThu, 12 May 2022 14:45:40 +0200 (CEST)",
            "from mx0b-0016f401.pphosted.com (mx0a-0016f401.pphosted.com\n [67.231.148.174])\n by mails.dpdk.org (Postfix) with ESMTP id BDB7540E64\n for <dev@dpdk.org>; Thu, 12 May 2022 14:45:38 +0200 (CEST)",
            "from pps.filterd (m0045849.ppops.net [127.0.0.1])\n by mx0a-0016f401.pphosted.com (8.17.1.5/8.17.1.5) with ESMTP id\n 24C9a8DQ007758;\n Thu, 12 May 2022 05:45:37 -0700",
            "from dc5-exch02.marvell.com ([199.233.59.182])\n by mx0a-0016f401.pphosted.com (PPS) with ESMTPS id 3g0yqwgq2d-1\n (version=TLSv1.2 cipher=ECDHE-RSA-AES256-SHA384 bits=256 verify=NOT);\n Thu, 12 May 2022 05:45:37 -0700",
            "from DC5-EXCH01.marvell.com (10.69.176.38) by DC5-EXCH02.marvell.com\n (10.69.176.39) with Microsoft SMTP Server (TLS) id 15.0.1497.18;\n Thu, 12 May 2022 05:45:36 -0700",
            "from maili.marvell.com (10.69.176.80) by DC5-EXCH01.marvell.com\n (10.69.176.38) with Microsoft SMTP Server id 15.0.1497.2 via Frontend\n Transport; Thu, 12 May 2022 05:45:36 -0700",
            "from localhost.localdomain (unknown [10.28.48.55])\n by maili.marvell.com (Postfix) with ESMTP id 3364F3F7090;\n Thu, 12 May 2022 05:45:32 -0700 (PDT)"
        ],
        "DKIM-Signature": "v=1; a=rsa-sha256; c=relaxed/relaxed; d=marvell.com;\n h=from : to : cc :\n subject : date : message-id : in-reply-to : references : mime-version :\n content-transfer-encoding : content-type; s=pfpt0220;\n bh=Uc+X5oAJJ3XxEqqGxclRP+B+MCZ2cSi/myVSYPFGpQ4=;\n b=lVtCNYLvwEsAMie772SV3e7xPaTy1RG472EbK5+1RIhFeEsVr0znNL7TembI3ClOW+vK\n VwoEYb9sHsZbfOqgUc9IuDvCPrH8NrZU7ycrH8TRVQLo2Rx8wYqLoWM2reF6V/4R86dd\n PiPn0FlCNLswBcdbIO5PhWSSr6e/21pufzvDE/KKiatsCq54oKQBC38ZZsQaCMTIuyf8\n ZJTa20bYg5SXx0vB4ct16f0uDtDXuJJ8W+Gy9pzZiRBOpgySJOyLbXGifQZTMBVGpDpL\n l9t4YkuNyiGeeId60zJGL/bNHmotu4ZRJzKLHYoVEq3UvT9Qy6OwVr9E8Y/RXUHdgCGG Nw==",
        "From": "Akhil Goyal <gakhil@marvell.com>",
        "To": "<dev@dpdk.org>",
        "CC": "<anoobj@marvell.com>, <jerinj@marvell.com>, <abhinandan.gujjar@intel.com>,\n <jay.jayatheerthan@intel.com>, <narender.vangati@intel.com>,\n <vfialko@marvell.com>, Akhil Goyal <gakhil@marvell.com>, Fan Zhang\n <roy.fan.zhang@intel.com>, Abhinandan Gujjar <Abhinandan.gujjar@intel.com>",
        "Subject": "[PATCH v5 1/7] cryptodev: add APIs to get/set event metadata",
        "Date": "Thu, 12 May 2022 18:15:21 +0530",
        "Message-ID": "<20220512124527.2031321-2-gakhil@marvell.com>",
        "X-Mailer": "git-send-email 2.25.1",
        "In-Reply-To": "<20220512124527.2031321-1-gakhil@marvell.com>",
        "References": "<20220501192457.3670278-1-gakhil@marvell.com>\n <20220512124527.2031321-1-gakhil@marvell.com>",
        "MIME-Version": "1.0",
        "Content-Transfer-Encoding": "8bit",
        "Content-Type": "text/plain",
        "X-Proofpoint-ORIG-GUID": "RNrJ0WLWdOMJjA0wf5brkATi_A-YqbEt",
        "X-Proofpoint-GUID": "RNrJ0WLWdOMJjA0wf5brkATi_A-YqbEt",
        "X-Proofpoint-Virus-Version": "vendor=baseguard\n engine=ICAP:2.0.205,Aquarius:18.0.858,Hydra:6.0.486,FMLib:17.11.64.514\n definitions=2022-05-12_10,2022-05-12_01,2022-02-23_01",
        "X-BeenThere": "dev@dpdk.org",
        "X-Mailman-Version": "2.1.29",
        "Precedence": "list",
        "List-Id": "DPDK patches and discussions <dev.dpdk.org>",
        "List-Unsubscribe": "<https://mails.dpdk.org/options/dev>,\n <mailto:dev-request@dpdk.org?subject=unsubscribe>",
        "List-Archive": "<http://mails.dpdk.org/archives/dev/>",
        "List-Post": "<mailto:dev@dpdk.org>",
        "List-Help": "<mailto:dev-request@dpdk.org?subject=help>",
        "List-Subscribe": "<https://mails.dpdk.org/listinfo/dev>,\n <mailto:dev-request@dpdk.org?subject=subscribe>",
        "Errors-To": "dev-bounces@dpdk.org"
    },
    "content": "From: Volodymyr Fialko <vfialko@marvell.com>\n\nCurrently, crypto session userdata is used to set event crypto\nmetadata from the application and the driver is dereferencing it\nin driver which is not correct. User data is meant to be opaque\nto the driver.\nTo support this, new API is added to get and set event crypto\nmetadata. The new API, rte_cryptodev_set_session_event_mdata,\nallows setting event metadata in session private data which is\nfilled inside PMD using a new cryptodev op. This operation\ncan be performed on any of the PMD supported sessions\n(sym/asym/security).\nFor SW abstraction of event crypto adapter to be used by\neventdev library, a new field is added in asymmetric crypto\nsession for now and for symmetric case, current implementation\nof using userdata is used. Symmetric cases cannot be fixed now,\nas it will be ABI breakage which will be resolved in DPDK 22.11.\n\nSigned-off-by: Volodymyr Fialko <vfialko@marvell.com>\nSigned-off-by: Akhil Goyal <gakhil@marvell.com>\nAcked-by: Fan Zhang <roy.fan.zhang@intel.com>\nAcked-by: Abhinandan Gujjar <Abhinandan.gujjar@intel.com>\nAcked-by: Anoob Joseph <anoobj@marvell.com>\n---\n lib/cryptodev/cryptodev_pmd.c | 16 +++++++++++++\n lib/cryptodev/cryptodev_pmd.h | 36 +++++++++++++++++++++++++++++\n lib/cryptodev/rte_cryptodev.c | 43 +++++++++++++++++++++++++++++++++++\n lib/cryptodev/rte_cryptodev.h | 22 ++++++++++++++++++\n lib/cryptodev/version.map     |  4 ++++\n 5 files changed, 121 insertions(+)",
    "diff": "diff --git a/lib/cryptodev/cryptodev_pmd.c b/lib/cryptodev/cryptodev_pmd.c\nindex 739a0b3f34..1903ade388 100644\n--- a/lib/cryptodev/cryptodev_pmd.c\n+++ b/lib/cryptodev/cryptodev_pmd.c\n@@ -227,3 +227,19 @@ cryptodev_fp_ops_set(struct rte_crypto_fp_ops *fp_ops,\n \tfp_ops->qp.enq_cb = dev->enq_cbs;\n \tfp_ops->qp.deq_cb = dev->deq_cbs;\n }\n+\n+void *\n+rte_cryptodev_session_event_mdata_get(struct rte_crypto_op *op)\n+{\n+\tif (op->type == RTE_CRYPTO_OP_TYPE_SYMMETRIC &&\n+\t\t\top->sess_type == RTE_CRYPTO_OP_WITH_SESSION)\n+\t\treturn rte_cryptodev_sym_session_get_user_data(op->sym->session);\n+\telse if (op->type == RTE_CRYPTO_OP_TYPE_ASYMMETRIC &&\n+\t\t\top->sess_type == RTE_CRYPTO_OP_WITH_SESSION)\n+\t\treturn op->asym->session->event_mdata;\n+\telse if (op->sess_type == RTE_CRYPTO_OP_SESSIONLESS &&\n+\t\t\top->private_data_offset)\n+\t\treturn ((uint8_t *)op + op->private_data_offset);\n+\telse\n+\t\treturn NULL;\n+}\ndiff --git a/lib/cryptodev/cryptodev_pmd.h b/lib/cryptodev/cryptodev_pmd.h\nindex 2b1ce2da2d..7a7d3ee3f1 100644\n--- a/lib/cryptodev/cryptodev_pmd.h\n+++ b/lib/cryptodev/cryptodev_pmd.h\n@@ -398,6 +398,25 @@ typedef int (*cryptodev_sym_configure_raw_dp_ctx_t)(\n \tenum rte_crypto_op_sess_type sess_type,\n \tunion rte_cryptodev_session_ctx session_ctx, uint8_t is_update);\n \n+/**\n+ * Typedef that the driver provided to set event crypto meta data.\n+ *\n+ * @param\tdev\t\tCrypto device pointer.\n+ * @param\tsess\t\tCrypto or security session.\n+ * @param\top_type\t\tOperation type.\n+ * @param\tsess_type\tSession type.\n+ * @param\tev_mdata\tPointer to the event crypto meta data\n+ *\t\t\t\t(aka *union rte_event_crypto_metadata*)\n+ * @return\n+ *   - On success return 0.\n+ *   - On failure return negative integer.\n+ */\n+typedef int (*cryptodev_session_event_mdata_set_t)(\n+\tstruct rte_cryptodev *dev, void *sess,\n+\tenum rte_crypto_op_type op_type,\n+\tenum rte_crypto_op_sess_type sess_type,\n+\tvoid *ev_mdata);\n+\n /** Crypto device operations function pointer table */\n struct rte_cryptodev_ops {\n \tcryptodev_configure_t dev_configure;\t/**< Configure device. */\n@@ -442,6 +461,8 @@ struct rte_cryptodev_ops {\n \t\t\t/**< Initialize raw data path context data. */\n \t\t};\n \t};\n+\tcryptodev_session_event_mdata_set_t session_ev_mdata_set;\n+\t/**< Set a Crypto or Security session even meta data. */\n };\n \n \n@@ -603,6 +624,19 @@ void\n cryptodev_fp_ops_set(struct rte_crypto_fp_ops *fp_ops,\n \t\t     const struct rte_cryptodev *dev);\n \n+/**\n+ * Get session event meta data (aka *union rte_event_crypto_metadata*)\n+ *\n+ * @param\top            pointer to *rte_crypto_op* structure.\n+ *\n+ * @return\n+ *  - On success, pointer to event crypto metadata\n+ *  - On failure, NULL.\n+ */\n+__rte_internal\n+void *\n+rte_cryptodev_session_event_mdata_get(struct rte_crypto_op *op);\n+\n static inline void *\n get_sym_session_private_data(const struct rte_cryptodev_sym_session *sess,\n \t\tuint8_t driver_id) {\n@@ -637,6 +671,8 @@ RTE_STD_C11 struct rte_cryptodev_asym_session {\n \tuint16_t user_data_sz;\n \t/**< Session user data will be placed after sess_data */\n \tuint8_t padding[3];\n+\tvoid *event_mdata;\n+\t/**< Event metadata (aka *union rte_event_crypto_metadata*) */\n \tuint8_t sess_private_data[0];\n };\n \ndiff --git a/lib/cryptodev/rte_cryptodev.c b/lib/cryptodev/rte_cryptodev.c\nindex 3500a2d470..e16e6802aa 100644\n--- a/lib/cryptodev/rte_cryptodev.c\n+++ b/lib/cryptodev/rte_cryptodev.c\n@@ -2051,6 +2051,8 @@ rte_cryptodev_asym_session_free(uint8_t dev_id, void *sess)\n \n \tdev->dev_ops->asym_session_clear(dev, sess);\n \n+\trte_free(((struct rte_cryptodev_asym_session *)sess)->event_mdata);\n+\n \t/* Return session to mempool */\n \tsess_mp = rte_mempool_from_obj(sess);\n \trte_mempool_put(sess_mp, sess);\n@@ -2259,6 +2261,47 @@ rte_cryptodev_configure_raw_dp_ctx(uint8_t dev_id, uint16_t qp_id,\n \t\t\tsess_type, session_ctx, is_update);\n }\n \n+int\n+rte_cryptodev_session_event_mdata_set(uint8_t dev_id, void *sess,\n+\tenum rte_crypto_op_type op_type,\n+\tenum rte_crypto_op_sess_type sess_type,\n+\tvoid *ev_mdata,\n+\tuint16_t size)\n+{\n+\tstruct rte_cryptodev *dev;\n+\n+\tif (sess == NULL || ev_mdata == NULL)\n+\t\treturn -EINVAL;\n+\n+\tif (!rte_cryptodev_is_valid_dev(dev_id))\n+\t\tgoto skip_pmd_op;\n+\n+\tdev = rte_cryptodev_pmd_get_dev(dev_id);\n+\tif (dev->dev_ops->session_ev_mdata_set == NULL)\n+\t\tgoto skip_pmd_op;\n+\n+\treturn (*dev->dev_ops->session_ev_mdata_set)(dev, sess, op_type,\n+\t\t\tsess_type, ev_mdata);\n+\n+skip_pmd_op:\n+\tif (op_type == RTE_CRYPTO_OP_TYPE_SYMMETRIC)\n+\t\treturn rte_cryptodev_sym_session_set_user_data(sess, ev_mdata,\n+\t\t\t\tsize);\n+\telse if (op_type == RTE_CRYPTO_OP_TYPE_ASYMMETRIC) {\n+\t\tstruct rte_cryptodev_asym_session *s = sess;\n+\n+\t\tif (s->event_mdata == NULL) {\n+\t\t\ts->event_mdata = rte_malloc(NULL, size, 0);\n+\t\t\tif (s->event_mdata == NULL)\n+\t\t\t\treturn -ENOMEM;\n+\t\t}\n+\t\trte_memcpy(s->event_mdata, ev_mdata, size);\n+\n+\t\treturn 0;\n+\t} else\n+\t\treturn -ENOTSUP;\n+}\n+\n uint32_t\n rte_cryptodev_raw_enqueue_burst(struct rte_crypto_raw_dp_ctx *ctx,\n \tstruct rte_crypto_sym_vec *vec, union rte_crypto_sym_ofs ofs,\ndiff --git a/lib/cryptodev/rte_cryptodev.h b/lib/cryptodev/rte_cryptodev.h\nindex 45d33f4a50..2c2c2edeb7 100644\n--- a/lib/cryptodev/rte_cryptodev.h\n+++ b/lib/cryptodev/rte_cryptodev.h\n@@ -1269,6 +1269,28 @@ __rte_experimental\n int\n rte_cryptodev_get_raw_dp_ctx_size(uint8_t dev_id);\n \n+/**\n+ * Set session event meta data\n+ *\n+ * @param\tdev_id\t\tThe device identifier.\n+ * @param\tsess            Crypto or security session.\n+ * @param\top_type         Operation type.\n+ * @param\tsess_type       Session type.\n+ * @param\tev_mdata\tPointer to the event crypto meta data\n+ *\t\t\t\t(aka *union rte_event_crypto_metadata*)\n+ * @param\tsize            Size of ev_mdata.\n+ *\n+ * @return\n+ *  - On success, zero.\n+ *  - On failure, a negative value.\n+ */\n+__rte_experimental\n+int\n+rte_cryptodev_session_event_mdata_set(uint8_t dev_id, void *sess,\n+\tenum rte_crypto_op_type op_type,\n+\tenum rte_crypto_op_sess_type sess_type,\n+\tvoid *ev_mdata, uint16_t size);\n+\n /**\n  * Union of different crypto session types, including session-less xform\n  * pointer.\ndiff --git a/lib/cryptodev/version.map b/lib/cryptodev/version.map\nindex c7c5aefceb..f0abfaa47d 100644\n--- a/lib/cryptodev/version.map\n+++ b/lib/cryptodev/version.map\n@@ -105,6 +105,9 @@ EXPERIMENTAL {\n \trte_cryptodev_asym_session_pool_create;\n \trte_cryptodev_asym_session_set_user_data;\n \t__rte_cryptodev_trace_asym_session_pool_create;\n+\n+\t#added in 22.07\n+\trte_cryptodev_session_event_mdata_set;\n };\n \n INTERNAL {\n@@ -123,5 +126,6 @@ INTERNAL {\n \trte_cryptodev_pmd_parse_input_args;\n \trte_cryptodev_pmd_probing_finish;\n \trte_cryptodev_pmd_release_device;\n+\trte_cryptodev_session_event_mdata_get;\n \trte_cryptodevs;\n };\n",
    "prefixes": [
        "v5",
        "1/7"
    ]
}