Show a cover letter.

GET /api/covers/76878/?format=api
HTTP 200 OK
Allow: GET, HEAD, OPTIONS
Content-Type: application/json
Vary: Accept

{
    "id": 76878,
    "url": "http://patches.dpdk.org/api/covers/76878/?format=api",
    "web_url": "http://patches.dpdk.org/project/dpdk/cover/20200908084253.81022-1-roy.fan.zhang@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": "<20200908084253.81022-1-roy.fan.zhang@intel.com>",
    "list_archive_url": "https://inbox.dpdk.org/dev/20200908084253.81022-1-roy.fan.zhang@intel.com",
    "date": "2020-09-08T08:42:49",
    "name": "[v9,0/4] cryptodev: add data-path service APIs",
    "submitter": {
        "id": 304,
        "url": "http://patches.dpdk.org/api/people/304/?format=api",
        "name": "Fan Zhang",
        "email": "roy.fan.zhang@intel.com"
    },
    "mbox": "http://patches.dpdk.org/project/dpdk/cover/20200908084253.81022-1-roy.fan.zhang@intel.com/mbox/",
    "series": [
        {
            "id": 12013,
            "url": "http://patches.dpdk.org/api/series/12013/?format=api",
            "web_url": "http://patches.dpdk.org/project/dpdk/list/?series=12013",
            "date": "2020-09-08T08:42:49",
            "name": "cryptodev: add data-path service APIs",
            "version": 9,
            "mbox": "http://patches.dpdk.org/series/12013/mbox/"
        }
    ],
    "comments": "http://patches.dpdk.org/api/covers/76878/comments/",
    "headers": {
        "Return-Path": "<dev-bounces@dpdk.org>",
        "X-Original-To": "patchwork@inbox.dpdk.org",
        "Delivered-To": "patchwork@inbox.dpdk.org",
        "Received": [
            "from dpdk.org (dpdk.org [92.243.14.124])\n\tby inbox.dpdk.org (Postfix) with ESMTP id 023CCA04AA;\n\tTue,  8 Sep 2020 10:43:01 +0200 (CEST)",
            "from [92.243.14.124] (localhost [127.0.0.1])\n\tby dpdk.org (Postfix) with ESMTP id 020742BAB;\n\tTue,  8 Sep 2020 10:43:01 +0200 (CEST)",
            "from mga09.intel.com (mga09.intel.com [134.134.136.24])\n by dpdk.org (Postfix) with ESMTP id 87F2F2BA8\n for <dev@dpdk.org>; Tue,  8 Sep 2020 10:42:58 +0200 (CEST)",
            "from fmsmga003.fm.intel.com ([10.253.24.29])\n by orsmga102.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384;\n 08 Sep 2020 01:42:57 -0700",
            "from silpixa00398673.ir.intel.com (HELO\n silpixa00398673.ger.corp.intel.com) ([10.237.223.136])\n by FMSMGA003.fm.intel.com with ESMTP; 08 Sep 2020 01:42:55 -0700"
        ],
        "IronPort-SDR": [
            "\n iqKgHYk/pAJ6dE9rNndTQRUpfo/0oaU/ONX3BAWrg23n+LFkVR023qMmNbl1YNfNyCT78gKBnv\n xr+PQMDb3H1g==",
            "\n 7OQtAyO/xbDVREufELs1BwYz4wjmAETQ88o3FObcnOMUAqzQ8B0jqlqB7/iSmTI/0rpIfomi8S\n HBQh4o2wyWVw=="
        ],
        "X-IronPort-AV": [
            "E=McAfee;i=\"6000,8403,9737\"; a=\"159068001\"",
            "E=Sophos;i=\"5.76,405,1592895600\"; d=\"scan'208\";a=\"159068001\"",
            "E=Sophos;i=\"5.76,405,1592895600\"; d=\"scan'208\";a=\"341105544\""
        ],
        "X-Amp-Result": "SKIPPED(no attachment in message)",
        "X-Amp-File-Uploaded": "False",
        "X-ExtLoop1": "1",
        "From": "Fan Zhang <roy.fan.zhang@intel.com>",
        "To": "dev@dpdk.org",
        "Cc": "akhil.goyal@nxp.com, fiona.trahe@intel.com, arkadiuszx.kusztal@intel.com,\n adamx.dybkowski@intel.com, Fan Zhang <roy.fan.zhang@intel.com>",
        "Date": "Tue,  8 Sep 2020 09:42:49 +0100",
        "Message-Id": "<20200908084253.81022-1-roy.fan.zhang@intel.com>",
        "X-Mailer": "git-send-email 2.20.1",
        "In-Reply-To": "<20200904152539.20608-1-roy.fan.zhang@intel.com>",
        "References": "<20200904152539.20608-1-roy.fan.zhang@intel.com>",
        "MIME-Version": "1.0",
        "Content-Transfer-Encoding": "8bit",
        "Subject": "[dpdk-dev] [dpdk-dev v9 0/4] cryptodev: add data-path service APIs",
        "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 <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",
        "Sender": "\"dev\" <dev-bounces@dpdk.org>"
    },
    "content": "Direct crypto data-path service are a set of APIs that especially provided for\nthe external libraries/applications who want to take advantage of the rich\nfeatures provided by cryptodev, but not necessarily depend on cryptodev\noperations, mempools, or mbufs in the their data-path implementations.\n\nThe direct crypto data-path service has the following advantages:\n- Supports raw data pointer and physical addresses as input.\n- Do not require specific data structure allocated from heap, such as\n  cryptodev operation.\n- Enqueue in a burst or single operation. The service allow enqueuing in\n  a burst similar to ``rte_cryptodev_enqueue_burst`` operation, or only\n  enqueue one job at a time but maintaining necessary context data locally for\n  next single job enqueue operation. The latter method is especially helpful\n  when the user application's crypto operations are clustered into a burst.\n  Allowing enqueue one operation at a time helps reducing one additional loop\n  and also reduced the cache misses during the double \"looping\" situation.\n- Customerizable dequeue count. Instead of dequeue maximum possible operations\n  as same as ``rte_cryptodev_dequeue_burst`` operation, the service allows the\n  user to provide a callback function to decide how many operations to be\n  dequeued. This is especially helpful when the expected dequeue count is\n  hidden inside the opaque data stored during enqueue. The user can provide\n  the callback function to parse the opaque data structure.\n- Abandon enqueue and dequeue anytime. One of the drawbacks of\n  ``rte_cryptodev_enqueue_burst`` and ``rte_cryptodev_dequeue_burst``\n  operations are: once an operation is enqueued/dequeued there is no way to\n  undo the operation. The service make the operation abandon possible by\n  creating a local copy of the queue operation data in the service context\n  data. The data will be written back to driver maintained operation data\n  when enqueue or dequeue done function is called.\n\nThe cryptodev data-path service uses\n\nCryptodev PMDs who supports this feature will have\n``RTE_CRYPTODEV_FF_SYM_HW_DIRECT_API`` feature flag presented. To use this\nfeature the function ``rte_cryptodev_get_dp_service_ctx_data_size`` should\nbe called to get the data path service context data size. The user should\ncreates a local buffer at least this size long and initialize it using\n``rte_cryptodev_dp_configure_service`` function call.\n\nThe ``rte_cryptodev_dp_configure_service`` function call initialize or\nupdates the ``struct rte_crypto_dp_service_ctx`` buffer, in which contains the\ndriver specific queue pair data pointer and service context buffer, and a\nset of function pointers to enqueue and dequeue different algorithms'\noperations. The ``rte_cryptodev_dp_configure_service`` should be called when:\n\n- Before enqueuing or dequeuing starts (set ``is_update`` parameter to 0).\n- When different cryptodev session, security session, or session-less xform\n  is used (set ``is_update`` parameter to 1).\n\nTwo different enqueue functions are provided.\n\n- ``rte_cryptodev_dp_sym_submit_vec``: submit a burst of operations stored in\n  the ``rte_crypto_sym_vec`` structure.\n- ``rte_cryptodev_dp_submit_single_job``: submit single operation.\n\nEither enqueue functions will not command the crypto device to start processing\nuntil ``rte_cryptodev_dp_submit_done`` function is called. Before then the user\nshall expect the driver only stores the necessory context data in the\n``rte_crypto_dp_service_ctx`` buffer for the next enqueue operation. If the user\nwants to abandon the submitted operations, simply call\n``rte_cryptodev_dp_configure_service`` function instead with the parameter\n``is_update`` set to 0. The driver will recover the service context data to\nthe previous state.\n\nTo dequeue the operations the user also have two operations:\n\n- ``rte_cryptodev_dp_sym_dequeue``: fully customizable deuqueue operation. The\n  user needs to provide the callback function for the driver to get the\n  dequeue count and perform post processing such as write the status field.\n- ``rte_cryptodev_dp_sym_dequeue_single_job``: dequeue single job.\n\nSame as enqueue, the function ``rte_cryptodev_dp_dequeue_done`` is used to\nmerge user's local service context data with the driver's queue operation\ndata. Also to abandon the dequeue operation (still keep the operations in the\nqueue), the user shall avoid ``rte_cryptodev_dp_dequeue_done`` function call\nbut calling ``rte_cryptodev_dp_configure_service`` function with the parameter\n``is_update`` set to 0.\n\nThere are a few limitations to the data path service:\n\n* Only support in-place operations.\n* APIs are NOT thread-safe.\n* CANNOT mix the direct API's enqueue with rte_cryptodev_enqueue_burst, or\n  vice versa.\n\nv9:\n- Changed return types of submit_done() and dequeue_done() APIs.\n- Added release note update. \n\nv8:\n- Updated following by comments.\n- Fixed a few bugs.\n- Fixed ARM build error.\n- Updated the unit test covering all tests.\n\nv7:\n- Fixed a few typos.\n- Fixed length calculation bugs.\n\nv6:\n- Rebased on top of DPDK 20.08.\n- Changed to service ctx and added single job submit/dequeue.\n\nv5:\n- Changed to use rte_crypto_sym_vec as input.\n- Changed to use public APIs instead of use function pointer.\n\nv4:\n- Added missed patch.\n\nv3:\n- Instead of QAT only API, moved the API to cryptodev.\n- Added cryptodev feature flags.\n\nv2:\n- Used a structure to simplify parameters.\n- Added unit tests.\n- Added documentation.\n\nFan Zhang (4):\n  cryptodev: add crypto data-path service APIs\n  crypto/qat: add crypto data-path service API support\n  test/crypto: add unit-test for cryptodev direct APIs\n  doc: add cryptodev service APIs guide\n\n app/test/test_cryptodev.c                     | 461 ++++++++-\n app/test/test_cryptodev.h                     |   7 +\n app/test/test_cryptodev_blockcipher.c         |  51 +-\n doc/guides/prog_guide/cryptodev_lib.rst       |  90 ++\n doc/guides/rel_notes/release_20_11.rst        |   7 +\n drivers/common/qat/Makefile                   |   1 +\n drivers/crypto/qat/meson.build                |   1 +\n drivers/crypto/qat/qat_sym.h                  |  13 +\n drivers/crypto/qat/qat_sym_hw_dp.c            | 947 ++++++++++++++++++\n drivers/crypto/qat/qat_sym_pmd.c              |   9 +-\n lib/librte_cryptodev/rte_crypto.h             |   9 +\n lib/librte_cryptodev/rte_crypto_sym.h         |  49 +-\n lib/librte_cryptodev/rte_cryptodev.c          |  98 ++\n lib/librte_cryptodev/rte_cryptodev.h          | 335 ++++++-\n lib/librte_cryptodev/rte_cryptodev_pmd.h      |  48 +-\n .../rte_cryptodev_version.map                 |  10 +\n 16 files changed, 2062 insertions(+), 74 deletions(-)\n create mode 100644 drivers/crypto/qat/qat_sym_hw_dp.c"
}