get:
Show a patch.

patch:
Update a patch.

put:
Update a patch.

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

{
    "id": 56012,
    "url": "http://patches.dpdk.org/api/patches/56012/?format=api",
    "web_url": "http://patches.dpdk.org/project/dpdk/patch/20190703111558.11552-4-damianx.nowak@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": "<20190703111558.11552-4-damianx.nowak@intel.com>",
    "list_archive_url": "https://inbox.dpdk.org/dev/20190703111558.11552-4-damianx.nowak@intel.com",
    "date": "2019-07-03T11:15:53",
    "name": "[v3,3/8] crypto/qat: extend support for digest-encrypted auth-cipher",
    "commit_ref": null,
    "pull_url": null,
    "state": "accepted",
    "archived": true,
    "hash": "e3cbe6752bc80eb467e652bd295c593cba927040",
    "submitter": {
        "id": 1184,
        "url": "http://patches.dpdk.org/api/people/1184/?format=api",
        "name": "Damian Nowak",
        "email": "damianx.nowak@intel.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/20190703111558.11552-4-damianx.nowak@intel.com/mbox/",
    "series": [
        {
            "id": 5309,
            "url": "http://patches.dpdk.org/api/series/5309/?format=api",
            "web_url": "http://patches.dpdk.org/project/dpdk/list/?series=5309",
            "date": "2019-07-03T11:15:50",
            "name": "cryptodev: support encrypted-digest use-cases",
            "version": 3,
            "mbox": "http://patches.dpdk.org/series/5309/mbox/"
        }
    ],
    "comments": "http://patches.dpdk.org/api/patches/56012/comments/",
    "check": "fail",
    "checks": "http://patches.dpdk.org/api/patches/56012/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 ABEFB1B958;\n\tWed,  3 Jul 2019 13:16:32 +0200 (CEST)",
            "from mga11.intel.com (mga11.intel.com [192.55.52.93])\n\tby dpdk.org (Postfix) with ESMTP id 021721B94E\n\tfor <dev@dpdk.org>; Wed,  3 Jul 2019 13:16:28 +0200 (CEST)",
            "from fmsmga001.fm.intel.com ([10.253.24.23])\n\tby fmsmga102.fm.intel.com with ESMTP/TLS/DHE-RSA-AES256-GCM-SHA384;\n\t03 Jul 2019 04:16:28 -0700",
            "from damiannx-mobl1.ger.corp.intel.com ([10.103.104.101])\n\tby fmsmga001.fm.intel.com with ESMTP; 03 Jul 2019 04:16:27 -0700"
        ],
        "X-Amp-Result": "SKIPPED(no attachment in message)",
        "X-Amp-File-Uploaded": "False",
        "X-ExtLoop1": "1",
        "X-IronPort-AV": "E=Sophos;i=\"5.63,446,1557212400\"; d=\"scan'208\";a=\"184724697\"",
        "From": "Damian Nowak <damianx.nowak@intel.com>",
        "To": "dev@dpdk.org",
        "Cc": "akhil.goyal@nxp.com, fiona.trahe@intel.com, arkadiuszx.kusztal@intel.com,\n\tDamian Nowak <damianx.nowak@intel.com>",
        "Date": "Wed,  3 Jul 2019 13:15:53 +0200",
        "Message-Id": "<20190703111558.11552-4-damianx.nowak@intel.com>",
        "X-Mailer": "git-send-email 2.21.0.windows.1",
        "In-Reply-To": "<20190703111558.11552-1-damianx.nowak@intel.com>",
        "References": "<20190607100608.16212-1-damianx.nowak@intel.com>\n\t<20190703111558.11552-1-damianx.nowak@intel.com>",
        "MIME-Version": "1.0",
        "Content-Transfer-Encoding": "8bit",
        "Subject": "[dpdk-dev] [PATCH v3 3/8] crypto/qat: extend support for\n\tdigest-encrypted auth-cipher",
        "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://mails.dpdk.org/options/dev>,\n\t<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\t<mailto:dev-request@dpdk.org?subject=subscribe>",
        "Errors-To": "dev-bounces@dpdk.org",
        "Sender": "\"dev\" <dev-bounces@dpdk.org>"
    },
    "content": "This patch adds condition to be met when using\nout-of-place auth-cipher operations. It checks\nif the digest location overlaps with the data to\nbe encrypted or decrypted and if so, treats as a\ndigest-encrypted case.\nPatch adds checking, if the digest is being\nencrypted or decrypted partially and extends PMD\nbuffers accordingly.\nIt also adds feature flag for QuickAssist\nTechnology to emphasize it's support for digest\nappended auth-cipher operations.\n\nSigned-off-by: Damian Nowak <damianx.nowak@intel.com>\n---\n doc/guides/cryptodevs/features/qat.ini |  1 +\n doc/guides/rel_notes/release_19_08.rst |  5 +++\n drivers/crypto/qat/qat_sym.c           | 63 ++++++++++++++++++++++++++--------\n drivers/crypto/qat/qat_sym_pmd.c       |  3 +-\n 4 files changed, 57 insertions(+), 15 deletions(-)",
    "diff": "diff --git a/doc/guides/cryptodevs/features/qat.ini b/doc/guides/cryptodevs/features/qat.ini\nindex e8f9060..0832e59 100644\n--- a/doc/guides/cryptodevs/features/qat.ini\n+++ b/doc/guides/cryptodevs/features/qat.ini\n@@ -12,6 +12,7 @@ OOP SGL In SGL Out     = Y\n OOP SGL In LB  Out     = Y\n OOP LB  In SGL Out     = Y\n OOP LB  In LB  Out     = Y\n+Digest encrypted       = Y\n \n ;\n ; Supported crypto algorithms of the 'qat' crypto driver.\ndiff --git a/doc/guides/rel_notes/release_19_08.rst b/doc/guides/rel_notes/release_19_08.rst\nindex c82b7f5..8cf4067 100644\n--- a/doc/guides/rel_notes/release_19_08.rst\n+++ b/doc/guides/rel_notes/release_19_08.rst\n@@ -126,6 +126,11 @@ New Features\n   Added telemetry mode to l3fwd-power application to report\n   application level busyness, empty and full polls of rte_eth_rx_burst().\n \n+* **Updated the QuickAssist Technology (QAT) symmetric crypto PMD.**\n+\n+  Added support for digest-encrypted cases where digest is appended\n+  to the data.\n+\n \n Removed Items\n -------------\ndiff --git a/drivers/crypto/qat/qat_sym.c b/drivers/crypto/qat/qat_sym.c\nindex 7515a55..2dc0614 100644\n--- a/drivers/crypto/qat/qat_sym.c\n+++ b/drivers/crypto/qat/qat_sym.c\n@@ -156,8 +156,9 @@ qat_sym_build_request(void *in_op, uint8_t *out_msg,\n \tuint32_t auth_len = 0, auth_ofs = 0;\n \tuint32_t min_ofs = 0;\n \tuint64_t src_buf_start = 0, dst_buf_start = 0;\n+\tuint64_t digest_start = 0;\n \tuint8_t do_sgl = 0;\n-\tuint8_t wireless_auth = 0, in_place = 1;\n+\tuint8_t in_place = 1;\n \tstruct rte_crypto_op *op = (struct rte_crypto_op *)in_op;\n \tstruct qat_sym_op_cookie *cookie =\n \t\t\t\t(struct qat_sym_op_cookie *)op_cookie;\n@@ -270,7 +271,6 @@ qat_sym_build_request(void *in_op, uint8_t *out_msg,\n \t\t\t}\n \t\t\tauth_ofs = op->sym->auth.data.offset >> 3;\n \t\t\tauth_len = op->sym->auth.data.length >> 3;\n-\t\t\twireless_auth = 1;\n \n \t\t\tauth_param->u1.aad_adr =\n \t\t\t\t\trte_crypto_op_ctophys_offset(op,\n@@ -493,6 +493,53 @@ qat_sym_build_request(void *in_op, uint8_t *out_msg,\n \t\t(cipher_param->cipher_offset + cipher_param->cipher_length)\n \t\t: (auth_param->auth_off + auth_param->auth_len);\n \n+\tif (do_auth && do_cipher) {\n+\t\tif (do_sgl) {\n+\t\t\tuint32_t remaining_off = auth_param->auth_off +\n+\t\t\t\tauth_param->auth_len;\n+\t\t\tstruct rte_mbuf *sgl_buf =\n+\t\t\t\t(in_place ?\n+\t\t\t\top->sym->m_src : op->sym->m_dst);\n+\t\t\twhile (remaining_off >= rte_pktmbuf_data_len(\n+\t\t\t\t\tsgl_buf)) {\n+\t\t\t\tremaining_off -= rte_pktmbuf_data_len(\n+\t\t\t\t\t\tsgl_buf);\n+\t\t\t\tsgl_buf = sgl_buf->next;\n+\t\t\t}\n+\t\t\tdigest_start = (uint64_t)rte_pktmbuf_iova_offset(\n+\t\t\t\tsgl_buf, remaining_off);\n+\t\t} else {\n+\t\t\tdigest_start = (in_place ?\n+\t\t\t\tsrc_buf_start : dst_buf_start) +\n+\t\t\t\tauth_param->auth_off + auth_param->auth_len;\n+\t\t}\n+\t\t/* Handle cases of auth-gen-then-cipher and\n+\t\t * cipher-decrypt-then-auth-verify with digest encrypted\n+\t\t */\n+\t\tif ((auth_param->auth_off + auth_param->auth_len <\n+\t\t\t\t\tcipher_param->cipher_offset +\n+\t\t\t\t\tcipher_param->cipher_length) &&\n+\t\t\t\t(op->sym->auth.digest.phys_addr ==\n+\t\t\t\t\tdigest_start)) {\n+\t\t\t/* Handle partial digest encryption */\n+\t\t\tif (cipher_param->cipher_offset +\n+\t\t\t\t\tcipher_param->cipher_length <\n+\t\t\t\t\tauth_param->auth_off +\n+\t\t\t\t\tauth_param->auth_len +\n+\t\t\t\t\tctx->digest_length)\n+\t\t\t\tqat_req->comn_mid.dst_length =\n+\t\t\t\t\tqat_req->comn_mid.src_length =\n+\t\t\t\t\tauth_param->auth_off +\n+\t\t\t\t\tauth_param->auth_len +\n+\t\t\t\t\tctx->digest_length;\n+\t\t\tstruct icp_qat_fw_comn_req_hdr *header =\n+\t\t\t\t&qat_req->comn_hdr;\n+\t\t\tICP_QAT_FW_LA_DIGEST_IN_BUFFER_SET(\n+\t\t\t\theader->serv_specif_flags,\n+\t\t\t\tICP_QAT_FW_LA_DIGEST_IN_BUFFER);\n+\t\t}\n+\t}\n+\n \tif (do_sgl) {\n \n \t\tICP_QAT_FW_COMN_PTR_TYPE_SET(qat_req->comn_hdr.comn_req_flags,\n@@ -535,18 +582,6 @@ qat_sym_build_request(void *in_op, uint8_t *out_msg,\n \t} else {\n \t\tqat_req->comn_mid.src_data_addr = src_buf_start;\n \t\tqat_req->comn_mid.dest_data_addr = dst_buf_start;\n-\t\t/* handle case of auth-gen-then-cipher with digest encrypted */\n-\t\tif (wireless_auth && in_place &&\n-\t\t    (op->sym->auth.digest.phys_addr ==\n-\t\t\t\tsrc_buf_start + auth_ofs + auth_len) &&\n-\t\t    (auth_ofs + auth_len + ctx->digest_length <=\n-\t\t\t\tcipher_ofs + cipher_len)) {\n-\t\t\tstruct icp_qat_fw_comn_req_hdr *header =\n-\t\t\t\t\t\t&qat_req->comn_hdr;\n-\t\t\tICP_QAT_FW_LA_DIGEST_IN_BUFFER_SET(\n-\t\t\t\theader->serv_specif_flags,\n-\t\t\t\tICP_QAT_FW_LA_DIGEST_IN_BUFFER);\n-\t\t}\n \t}\n \n #if RTE_LOG_DP_LEVEL >= RTE_LOG_DEBUG\ndiff --git a/drivers/crypto/qat/qat_sym_pmd.c b/drivers/crypto/qat/qat_sym_pmd.c\nindex af21270..71f21ce 100644\n--- a/drivers/crypto/qat/qat_sym_pmd.c\n+++ b/drivers/crypto/qat/qat_sym_pmd.c\n@@ -278,7 +278,8 @@ qat_sym_dev_create(struct qat_pci_device *qat_pci_dev)\n \t\t\tRTE_CRYPTODEV_FF_OOP_SGL_IN_SGL_OUT |\n \t\t\tRTE_CRYPTODEV_FF_OOP_SGL_IN_LB_OUT |\n \t\t\tRTE_CRYPTODEV_FF_OOP_LB_IN_SGL_OUT |\n-\t\t\tRTE_CRYPTODEV_FF_OOP_LB_IN_LB_OUT;\n+\t\t\tRTE_CRYPTODEV_FF_OOP_LB_IN_LB_OUT |\n+\t\t\tRTE_CRYPTODEV_FF_DIGEST_ENCRYPTED;\n \n \tinternals = cryptodev->data->dev_private;\n \tinternals->qat_dev = qat_pci_dev;\n",
    "prefixes": [
        "v3",
        "3/8"
    ]
}