get:
Show a patch.

patch:
Update a patch.

put:
Update a patch.

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

{
    "id": 19355,
    "url": "http://patches.dpdk.org/api/patches/19355/?format=api",
    "web_url": "http://patches.dpdk.org/project/dpdk/patch/1484320997-1224-2-git-send-email-tomaszx.kulasek@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": "<1484320997-1224-2-git-send-email-tomaszx.kulasek@intel.com>",
    "list_archive_url": "https://inbox.dpdk.org/dev/1484320997-1224-2-git-send-email-tomaszx.kulasek@intel.com",
    "date": "2017-01-13T15:23:15",
    "name": "[dpdk-dev,v5,1/3] crypto: add sgl support in sw PMDs",
    "commit_ref": null,
    "pull_url": null,
    "state": "accepted",
    "archived": true,
    "hash": "48b7370aded58cc960b0265e13ef1d546c049197",
    "submitter": {
        "id": 155,
        "url": "http://patches.dpdk.org/api/people/155/?format=api",
        "name": "Tomasz Kulasek",
        "email": "tomaszx.kulasek@intel.com"
    },
    "delegate": {
        "id": 22,
        "url": "http://patches.dpdk.org/api/users/22/?format=api",
        "username": "pdelarag",
        "first_name": "Pablo",
        "last_name": "de Lara Guarch",
        "email": "pablo.de.lara.guarch@intel.com"
    },
    "mbox": "http://patches.dpdk.org/project/dpdk/patch/1484320997-1224-2-git-send-email-tomaszx.kulasek@intel.com/mbox/",
    "series": [],
    "comments": "http://patches.dpdk.org/api/patches/19355/comments/",
    "check": "success",
    "checks": "http://patches.dpdk.org/api/patches/19355/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 [IPv6:::1])\n\tby dpdk.org (Postfix) with ESMTP id E08C4F937;\n\tFri, 13 Jan 2017 16:27:07 +0100 (CET)",
            "from mga05.intel.com (mga05.intel.com [192.55.52.43])\n\tby dpdk.org (Postfix) with ESMTP id D471FBD30\n\tfor <dev@dpdk.org>; Fri, 13 Jan 2017 16:26:57 +0100 (CET)",
            "from orsmga001.jf.intel.com ([10.7.209.18])\n\tby fmsmga105.fm.intel.com with ESMTP; 13 Jan 2017 07:26:57 -0800",
            "from unknown (HELO Sent) ([10.103.102.79])\n\tby orsmga001.jf.intel.com with SMTP; 13 Jan 2017 07:26:54 -0800",
            "by Sent (sSMTP sendmail emulation); Fri, 13 Jan 2017 16:26:55 +0100"
        ],
        "X-ExtLoop1": "1",
        "X-IronPort-AV": "E=Sophos; i=\"5.33,222,1477983600\"; d=\"scan'208\";\n\ta=\"1082600141\"",
        "From": "Tomasz Kulasek <tomaszx.kulasek@intel.com>",
        "To": "dev@dpdk.org",
        "Date": "Fri, 13 Jan 2017 16:23:15 +0100",
        "Message-Id": "<1484320997-1224-2-git-send-email-tomaszx.kulasek@intel.com>",
        "X-Mailer": "git-send-email 2.1.4",
        "In-Reply-To": "<1484320997-1224-1-git-send-email-tomaszx.kulasek@intel.com>",
        "References": "<1483634768-35012-1-git-send-email-tomaszx.kulasek@intel.com>\n\t<1484320997-1224-1-git-send-email-tomaszx.kulasek@intel.com>",
        "Subject": "[dpdk-dev] [PATCH v5 1/3] crypto: add sgl support in sw PMDs",
        "X-BeenThere": "dev@dpdk.org",
        "X-Mailman-Version": "2.1.15",
        "Precedence": "list",
        "List-Id": "DPDK patches and discussions <dev.dpdk.org>",
        "List-Unsubscribe": "<http://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": "<http://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 RTE_CRYPTODEV_FF_MBUF_SCATTER_GATHER feature flag\ninforming that selected crypto device supports segmented mbufs natively\nand doesn't need to be coalesced before crypto operation.\n\nWhile using segmented buffers in crypto devices may have unpredictable\nresults, for PMDs which doesn't support it natively, additional check is\nmade for debug compilation.\n\nSigned-off-by: Tomasz Kulasek <tomaszx.kulasek@intel.com>\n---\n drivers/crypto/aesni_gcm/aesni_gcm_pmd.c   |   14 ++++++++++++++\n drivers/crypto/aesni_mb/rte_aesni_mb_pmd.c |   19 ++++++++++++++++---\n drivers/crypto/kasumi/rte_kasumi_pmd.c     |   13 +++++++++++++\n drivers/crypto/null/null_crypto_pmd.c      |    3 ++-\n drivers/crypto/snow3g/rte_snow3g_pmd.c     |   15 +++++++++++++++\n drivers/crypto/zuc/rte_zuc_pmd.c           |   13 +++++++++++++\n lib/librte_cryptodev/rte_cryptodev.c       |    4 ++--\n lib/librte_cryptodev/rte_cryptodev.h       |    2 ++\n 8 files changed, 77 insertions(+), 6 deletions(-)",
    "diff": "diff --git a/drivers/crypto/aesni_gcm/aesni_gcm_pmd.c b/drivers/crypto/aesni_gcm/aesni_gcm_pmd.c\nindex af3d60f..5af22f7 100644\n--- a/drivers/crypto/aesni_gcm/aesni_gcm_pmd.c\n+++ b/drivers/crypto/aesni_gcm/aesni_gcm_pmd.c\n@@ -377,6 +377,20 @@\n \t\t\tbreak;\n \t\t}\n \n+#ifdef RTE_LIBRTE_PMD_AESNI_GCM_DEBUG\n+\t\tif (!rte_pktmbuf_is_contiguous(ops[i]->sym->m_src) ||\n+\t\t\t\t(ops[i]->sym->m_dst != NULL &&\n+\t\t\t\t!rte_pktmbuf_is_contiguous(\n+\t\t\t\t\t\tops[i]->sym->m_dst))) {\n+\t\t\tops[i]->status = RTE_CRYPTO_OP_STATUS_INVALID_ARGS;\n+\t\t\tGCM_LOG_ERR(\"PMD supports only contiguous mbufs, \"\n+\t\t\t\t\"op (%p) provides noncontiguous mbuf as \"\n+\t\t\t\t\"source/destination buffer.\\n\", ops[i]);\n+\t\t\tqp->qp_stats.enqueue_err_count++;\n+\t\t\tbreak;\n+\t\t}\n+#endif\n+\n \t\tretval = process_gcm_crypto_op(qp, ops[i]->sym, sess);\n \t\tif (retval < 0) {\n \t\t\tops[i]->status = RTE_CRYPTO_OP_STATUS_INVALID_ARGS;\ndiff --git a/drivers/crypto/aesni_mb/rte_aesni_mb_pmd.c b/drivers/crypto/aesni_mb/rte_aesni_mb_pmd.c\nindex 6d27d75..25f681b 100644\n--- a/drivers/crypto/aesni_mb/rte_aesni_mb_pmd.c\n+++ b/drivers/crypto/aesni_mb/rte_aesni_mb_pmd.c\n@@ -571,15 +571,28 @@\n \tint i, processed_jobs = 0;\n \n \tfor (i = 0; i < nb_ops; i++) {\n-#ifdef RTE_LIBRTE_AESNI_MB_DEBUG\n-\t\tif (unlikely(op->type != RTE_CRYPTO_OP_TYPE_SYMMETRIC)) {\n+#ifdef RTE_LIBRTE_PMD_AESNI_MB_DEBUG\n+\t\tif (unlikely(ops[i]->type != RTE_CRYPTO_OP_TYPE_SYMMETRIC)) {\n \t\t\tMB_LOG_ERR(\"PMD only supports symmetric crypto \"\n \t\t\t\t\"operation requests, op (%p) is not a \"\n-\t\t\t\t\"symmetric operation.\", op);\n+\t\t\t\t\"symmetric operation.\", ops[i]);\n+\t\t\tqp->stats.enqueue_err_count++;\n+\t\t\tgoto flush_jobs;\n+\t\t}\n+\n+\t\tif (!rte_pktmbuf_is_contiguous(ops[i]->sym->m_src) ||\n+\t\t\t\t(ops[i]->sym->m_dst != NULL &&\n+\t\t\t\t!rte_pktmbuf_is_contiguous(\n+\t\t\t\t\t\tops[i]->sym->m_dst))) {\n+\t\t\tMB_LOG_ERR(\"PMD supports only contiguous mbufs, \"\n+\t\t\t\t\"op (%p) provides noncontiguous mbuf as \"\n+\t\t\t\t\"source/destination buffer.\\n\", ops[i]);\n+\t\t\tops[i]->status = RTE_CRYPTO_OP_STATUS_INVALID_ARGS;\n \t\t\tqp->stats.enqueue_err_count++;\n \t\t\tgoto flush_jobs;\n \t\t}\n #endif\n+\n \t\tsess = get_session(qp, ops[i]);\n \t\tif (unlikely(sess == NULL)) {\n \t\t\tqp->stats.enqueue_err_count++;\ndiff --git a/drivers/crypto/kasumi/rte_kasumi_pmd.c b/drivers/crypto/kasumi/rte_kasumi_pmd.c\nindex b119da2..4bdd7bb 100644\n--- a/drivers/crypto/kasumi/rte_kasumi_pmd.c\n+++ b/drivers/crypto/kasumi/rte_kasumi_pmd.c\n@@ -455,6 +455,19 @@\n \tfor (i = 0; i < nb_ops; i++) {\n \t\tcurr_c_op = ops[i];\n \n+#ifdef RTE_LIBRTE_PMD_KASUMI_DEBUG\n+\t\tif (!rte_pktmbuf_is_contiguous(curr_c_op->sym->m_src) ||\n+\t\t\t\t(curr_c_op->sym->m_dst != NULL &&\n+\t\t\t\t!rte_pktmbuf_is_contiguous(\n+\t\t\t\t\t\tcurr_c_op->sym->m_dst))) {\n+\t\t\tKASUMI_LOG_ERR(\"PMD supports only contiguous mbufs, \"\n+\t\t\t\t\"op (%p) provides noncontiguous mbuf as \"\n+\t\t\t\t\"source/destination buffer.\\n\", curr_c_op);\n+\t\t\tcurr_c_op->status = RTE_CRYPTO_OP_STATUS_INVALID_ARGS;\n+\t\t\tbreak;\n+\t\t}\n+#endif\n+\n \t\t/* Set status as enqueued (not processed yet) by default. */\n \t\tcurr_c_op->status = RTE_CRYPTO_OP_STATUS_NOT_PROCESSED;\n \ndiff --git a/drivers/crypto/null/null_crypto_pmd.c b/drivers/crypto/null/null_crypto_pmd.c\nindex c69606b..c37d3d6 100644\n--- a/drivers/crypto/null/null_crypto_pmd.c\n+++ b/drivers/crypto/null/null_crypto_pmd.c\n@@ -216,7 +216,8 @@\n \tdev->enqueue_burst = null_crypto_pmd_enqueue_burst;\n \n \tdev->feature_flags = RTE_CRYPTODEV_FF_SYMMETRIC_CRYPTO |\n-\t\t\tRTE_CRYPTODEV_FF_SYM_OPERATION_CHAINING;\n+\t\t\tRTE_CRYPTODEV_FF_SYM_OPERATION_CHAINING |\n+\t\t\tRTE_CRYPTODEV_FF_MBUF_SCATTER_GATHER;\n \n \tinternals = dev->data->dev_private;\n \ndiff --git a/drivers/crypto/snow3g/rte_snow3g_pmd.c b/drivers/crypto/snow3g/rte_snow3g_pmd.c\nindex 3b4292a..9a6f16d 100644\n--- a/drivers/crypto/snow3g/rte_snow3g_pmd.c\n+++ b/drivers/crypto/snow3g/rte_snow3g_pmd.c\n@@ -330,6 +330,21 @@\n \tunsigned i;\n \tunsigned enqueued_ops, processed_ops;\n \n+#ifdef RTE_LIBRTE_PMD_SNOW3G_DEBUG\n+\tfor (i = 0; i < num_ops; i++) {\n+\t\tif (!rte_pktmbuf_is_contiguous(ops[i]->sym->m_src) ||\n+\t\t\t\t(ops[i]->sym->m_dst != NULL &&\n+\t\t\t\t!rte_pktmbuf_is_contiguous(\n+\t\t\t\t\t\tops[i]->sym->m_dst))) {\n+\t\t\tSNOW3G_LOG_ERR(\"PMD supports only contiguous mbufs, \"\n+\t\t\t\t\"op (%p) provides noncontiguous mbuf as \"\n+\t\t\t\t\"source/destination buffer.\\n\", ops[i]);\n+\t\t\tops[i]->status = RTE_CRYPTO_OP_STATUS_INVALID_ARGS;\n+\t\t\treturn 0;\n+\t\t}\n+\t}\n+#endif\n+\n \tswitch (session->op) {\n \tcase SNOW3G_OP_ONLY_CIPHER:\n \t\tprocessed_ops = process_snow3g_cipher_op(ops,\ndiff --git a/drivers/crypto/zuc/rte_zuc_pmd.c b/drivers/crypto/zuc/rte_zuc_pmd.c\nindex 3849119..bf53f76 100644\n--- a/drivers/crypto/zuc/rte_zuc_pmd.c\n+++ b/drivers/crypto/zuc/rte_zuc_pmd.c\n@@ -211,6 +211,19 @@\n \t\t\tbreak;\n \t\t}\n \n+#ifdef RTE_LIBRTE_PMD_ZUC_DEBUG\n+\t\tif (!rte_pktmbuf_is_contiguous(ops[i]->sym->m_src) ||\n+\t\t\t\t(ops[i]->sym->m_dst != NULL &&\n+\t\t\t\t!rte_pktmbuf_is_contiguous(\n+\t\t\t\t\t\tops[i]->sym->m_dst))) {\n+\t\t\tZUC_LOG_ERR(\"PMD supports only contiguous mbufs, \"\n+\t\t\t\t\"op (%p) provides noncontiguous mbuf as \"\n+\t\t\t\t\"source/destination buffer.\\n\", ops[i]);\n+\t\t\tops[i]->status = RTE_CRYPTO_OP_STATUS_INVALID_ARGS;\n+\t\t\tbreak;\n+\t\t}\n+#endif\n+\n \t\tsrc[i] = rte_pktmbuf_mtod(ops[i]->sym->m_src, uint8_t *) +\n \t\t\t\t(ops[i]->sym->cipher.data.offset >> 3);\n \t\tdst[i] = ops[i]->sym->m_dst ?\ndiff --git a/lib/librte_cryptodev/rte_cryptodev.c b/lib/librte_cryptodev/rte_cryptodev.c\nindex 54e95d5..bbab4b3 100644\n--- a/lib/librte_cryptodev/rte_cryptodev.c\n+++ b/lib/librte_cryptodev/rte_cryptodev.c\n@@ -211,13 +211,13 @@ struct rte_cryptodev_callback {\n \t\treturn \"CPU_AESNI\";\n \tcase RTE_CRYPTODEV_FF_HW_ACCELERATED:\n \t\treturn \"HW_ACCELERATED\";\n-\n+\tcase RTE_CRYPTODEV_FF_MBUF_SCATTER_GATHER:\n+\t\treturn \"MBUF_SCATTER_GATHER\";\n \tdefault:\n \t\treturn NULL;\n \t}\n }\n \n-\n int\n rte_cryptodev_create_vdev(const char *name, const char *args)\n {\ndiff --git a/lib/librte_cryptodev/rte_cryptodev.h b/lib/librte_cryptodev/rte_cryptodev.h\nindex 29d8eec..fa311a9 100644\n--- a/lib/librte_cryptodev/rte_cryptodev.h\n+++ b/lib/librte_cryptodev/rte_cryptodev.h\n@@ -227,6 +227,8 @@ struct rte_cryptodev_capabilities {\n /**< Operations are off-loaded to an external hardware accelerator */\n #define\tRTE_CRYPTODEV_FF_CPU_AVX512\t\t(1ULL << 8)\n /**< Utilises CPU SIMD AVX512 instructions */\n+#define\tRTE_CRYPTODEV_FF_MBUF_SCATTER_GATHER\t(1ULL << 9)\n+/**< Scatter-gather mbufs are supported */\n \n \n /**\n",
    "prefixes": [
        "dpdk-dev",
        "v5",
        "1/3"
    ]
}