Patch Detail
get:
Show a patch.
patch:
Update a patch.
put:
Update a patch.
GET /api/patches/42409/?format=api
http://patches.dpdk.org/api/patches/42409/?format=api", "web_url": "http://patches.dpdk.org/project/dpdk/patch/1530806730-11822-17-git-send-email-fiona.trahe@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": "<1530806730-11822-17-git-send-email-fiona.trahe@intel.com>", "list_archive_url": "https://inbox.dpdk.org/dev/1530806730-11822-17-git-send-email-fiona.trahe@intel.com", "date": "2018-07-05T16:05:30", "name": "[v2,16/16] docs/qat: refactor docs adding compression guide", "commit_ref": null, "pull_url": null, "state": "superseded", "archived": true, "hash": "f749cc8d8e4f2ec1230aaf0c0d784978dabfc5e8", "submitter": { "id": 423, "url": "http://patches.dpdk.org/api/people/423/?format=api", "name": "Fiona Trahe", "email": "fiona.trahe@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/1530806730-11822-17-git-send-email-fiona.trahe@intel.com/mbox/", "series": [ { "id": 424, "url": "http://patches.dpdk.org/api/series/424/?format=api", "web_url": "http://patches.dpdk.org/project/dpdk/list/?series=424", "date": "2018-07-05T16:05:14", "name": "compress/qat: add compression PMD", "version": 2, "mbox": "http://patches.dpdk.org/series/424/mbox/" } ], "comments": "http://patches.dpdk.org/api/patches/42409/comments/", "check": "warning", "checks": "http://patches.dpdk.org/api/patches/42409/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 EE6A21C020;\n\tThu, 5 Jul 2018 18:06:13 +0200 (CEST)", "from mga17.intel.com (mga17.intel.com [192.55.52.151])\n\tby dpdk.org (Postfix) with ESMTP id 2D5831BF9E\n\tfor <dev@dpdk.org>; Thu, 5 Jul 2018 18:06:07 +0200 (CEST)", "from orsmga004.jf.intel.com ([10.7.209.38])\n\tby fmsmga107.fm.intel.com with ESMTP/TLS/DHE-RSA-AES256-GCM-SHA384;\n\t05 Jul 2018 09:06:06 -0700", "from sivswdev01.ir.intel.com (HELO localhost.localdomain)\n\t([10.237.217.45])\n\tby orsmga004.jf.intel.com with ESMTP; 05 Jul 2018 09:06:05 -0700" ], "X-Amp-Result": "SKIPPED(no attachment in message)", "X-Amp-File-Uploaded": "False", "X-ExtLoop1": "1", "X-IronPort-AV": "E=Sophos;i=\"5.51,313,1526367600\"; d=\"scan'208\";a=\"213680525\"", "From": "Fiona Trahe <fiona.trahe@intel.com>", "To": "dev@dpdk.org", "Cc": "pablo.de.lara.guarch@intel.com, fiona.trahe@intel.com,\n\ttomaszx.jozwiak@intel.com", "Date": "Thu, 5 Jul 2018 17:05:30 +0100", "Message-Id": "<1530806730-11822-17-git-send-email-fiona.trahe@intel.com>", "X-Mailer": "git-send-email 1.7.0.7", "In-Reply-To": "<1527100807-30814-1-git-send-email-fiona.trahe@intel.com>", "References": "<1527100807-30814-1-git-send-email-fiona.trahe@intel.com>", "Subject": "[dpdk-dev] [PATCH v2 16/16] docs/qat: refactor docs adding\n\tcompression guide", "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": "Extend QAT guide to cover crypto and compression and common\ninformationi, particularly about kernel driver.\nUpdate release note.\nUpdate compression feature ist for qat.\n\nChange-Id: I7d9bde8b71d23e5e160170243ae4705aaa4cff3d\nSigned-off-by: Fiona Trahe <fiona.trahe@intel.com>\n---\n config/common_base | 2 +-\n doc/guides/compressdevs/features/qat.ini | 22 ++++\n doc/guides/compressdevs/index.rst | 1 +\n doc/guides/compressdevs/qat_comp.rst | 49 +++++++++\n doc/guides/cryptodevs/qat.rst | 183 +++++++++++++++++++++----------\n doc/guides/rel_notes/release_18_08.rst | 5 +\n 6 files changed, 203 insertions(+), 59 deletions(-)\n create mode 100644 doc/guides/compressdevs/features/qat.ini\n create mode 100644 doc/guides/compressdevs/qat_comp.rst", "diff": "diff --git a/config/common_base b/config/common_base\nindex 93c8857..402231d 100644\n--- a/config/common_base\n+++ b/config/common_base\n@@ -482,7 +482,7 @@ CONFIG_RTE_LIBRTE_DPAA_MAX_CRYPTODEV=4\n CONFIG_RTE_DPAA_SEC_PMD_MAX_NB_SESSIONS=2048\n \n #\n-# Compile PMD for QuickAssist based devices\n+# Compile PMD for QuickAssist based devices - see docs for details\n #\n CONFIG_RTE_LIBRTE_PMD_QAT=y\n CONFIG_RTE_LIBRTE_PMD_QAT_SYM=n\ndiff --git a/doc/guides/compressdevs/features/qat.ini b/doc/guides/compressdevs/features/qat.ini\nnew file mode 100644\nindex 0000000..68f36c8\n--- /dev/null\n+++ b/doc/guides/compressdevs/features/qat.ini\n@@ -0,0 +1,22 @@\n+;\n+; Refer to default.ini for the full list of available PMD features.\n+;\n+; Supported features of 'QAT' compression driver.\n+;\n+[Features]\n+HW Accelerated = Y\n+CPU SSE =\n+CPU AVX =\n+CPU AVX2 =\n+CPU AVX512 =\n+CPU NEON =\n+Stateful =\n+By-Pass =\n+Chained mbufs =\n+Deflate = Y\n+LZS =\n+Adler32 = Y\n+Crc32 = Y\n+Adler32&Crc32 = Y\n+Fixed = Y\n+Dynamic =\ndiff --git a/doc/guides/compressdevs/index.rst b/doc/guides/compressdevs/index.rst\nindex bc59ce8..4228768 100644\n--- a/doc/guides/compressdevs/index.rst\n+++ b/doc/guides/compressdevs/index.rst\n@@ -11,3 +11,4 @@ Compression Device Drivers\n \n overview\n isal\n+ qat_comp\ndiff --git a/doc/guides/compressdevs/qat_comp.rst b/doc/guides/compressdevs/qat_comp.rst\nnew file mode 100644\nindex 0000000..167f816\n--- /dev/null\n+++ b/doc/guides/compressdevs/qat_comp.rst\n@@ -0,0 +1,49 @@\n+.. SPDX-License-Identifier: BSD-3-Clause\n+ Copyright(c) 2018 Intel Corporation.\n+\n+Intel(R) QuickAssist (QAT) Compression Poll Mode Driver\n+=======================================================\n+\n+The QAT compression PMD provides poll mode compression & decompression driver\n+support for the following hardware accelerator devices:\n+\n+* ``Intel QuickAssist Technology C62x``\n+* ``Intel QuickAssist Technology C3xxx``\n+\n+\n+Features\n+--------\n+\n+QAT compression PMD has support for:\n+\n+Compression/Decompression algorithm:\n+\n+ * DEFLATE\n+\n+Huffman code type:\n+\n+ * FIXED\n+\n+Window size support:\n+\n+ * 32K\n+\n+Checksum generation:\n+\n+ * CRC32, Adler and combined checksum\n+\n+Limitations\n+-----------\n+\n+* Chained mbufs are not yet supported, therefore max data size which can be passed to the PMD in a single mbuf is 64K - 1. If data is larger than this it will need to be split up and sent as multiple operations.\n+\n+* Compressdev level 0, no compression, is not supported.\n+\n+* Dynamic Huffman encoding is not yet supported.\n+\n+Installation\n+------------\n+\n+The QAT compression PMD is built by default with a standard DPDK build.\n+\n+It depends on a QAT kernel driver, see :ref:`qat_kernel_installation`.\ndiff --git a/doc/guides/cryptodevs/qat.rst b/doc/guides/cryptodevs/qat.rst\nindex b899985..bdc58eb 100644\n--- a/doc/guides/cryptodevs/qat.rst\n+++ b/doc/guides/cryptodevs/qat.rst\n@@ -68,12 +68,32 @@ Limitations\n * Queue pairs are not thread-safe (that is, within a single queue pair, RX and TX from different lcores is not supported).\n \n \n-Installation\n-------------\n+Extra notes on KASUMI F9\n+------------------------\n+\n+When using KASUMI F9 authentication algorithm, the input buffer must be\n+constructed according to the 3GPP KASUMI specifications (section 4.4, page 13):\n+`<http://cryptome.org/3gpp/35201-900.pdf>`_.\n+Input buffer has to have COUNT (4 bytes), FRESH (4 bytes), MESSAGE and DIRECTION (1 bit)\n+concatenated. After the DIRECTION bit, a single '1' bit is appended, followed by\n+between 0 and 7 '0' bits, so that the total length of the buffer is multiple of 8 bits.\n+Note that the actual message can be any length, specified in bits.\n \n-To enable QAT in DPDK, follow the instructions for modifying the compile-time\n+Once this buffer is passed this way, when creating the crypto operation,\n+length of data to authenticate (op.sym.auth.data.length) must be the length\n+of all the items described above, including the padding at the end.\n+Also, offset of data to authenticate (op.sym.auth.data.offset)\n+must be such that points at the start of the COUNT bytes.\n+\n+\n+Building the DPDK QAT cryptodev PMD\n+-----------------------------------\n+\n+\n+To enable QAT crypto in DPDK, follow the instructions for modifying the compile-time\n configuration file as described `here <http://dpdk.org/doc/guides/linux_gsg/build_dpdk.html>`_.\n \n+\n Quick instructions are as follows:\n \n .. code-block:: console\n@@ -81,29 +101,95 @@ Quick instructions are as follows:\n \tcd to the top-level DPDK directory\n \tmake config T=x86_64-native-linuxapp-gcc\n \tsed -i 's,\\(CONFIG_RTE_LIBRTE_PMD_QAT\\)=n,\\1=y,' build/.config\n+\tsed -i 's,\\(CONFIG_RTE_LIBRTE_PMD_QAT_SYM\\)=n,\\1=y,' build/.config\n \tmake\n \n-To use the DPDK QAT PMD an SRIOV-enabled QAT kernel driver is required. The VF\n-devices exposed by this driver will be used by the QAT PMD. The devices and\n-available kernel drivers and device ids are :\n+\n+.. _qat_kernel_installation:\n+\n+Dependency on the QAT kernel driver\n+-----------------------------------\n+\n+To use the QAT PMD an SRIOV-enabled QAT kernel driver is required. The VF\n+devices created and initialised by this driver will be used by the QAT PMD.\n+\n+Instructions for installation are below, but first an explanation of the\n+relationships between the PF/VF devices and the PMDs visible to\n+DPDK applications.\n+\n+\n+Acceleration services - cryptography and compression - are provided to DPDK\n+applications via PMDs which register to implement the corresponding\n+cryptodev and compressdev APIs.\n+\n+Each QuickAssist VF device can expose one cryptodev PMD and/or one compressdev PMD.\n+These QAT PMDs share the same underlying device and pci-mgmt code, but are\n+enumerated independently on their respective APIs and appear as independent\n+devices to applications.\n+\n+.. Note::\n+\n+ Each VF can only be used by one DPDK process. It is not possible to share\n+ the same VF across multiple processes, even if these processes are using\n+ different acceleration services.\n+\n+ Conversely one DPDK process can use one or more QAT VFs and can expose both\n+ cryptodev and compressdev instances on each of those VFs.\n+\n+\n+\n+Device and driver naming\n+------------------------\n+\n+* The qat cryptodev driver name is \"crypto_qat\".\n+ The rte_cryptodev_devices_get() returns the devices exposed by this driver.\n+\n+* Each qat crypto device has a unique name, in format\n+ <pci bdf>_<service>, e.g. \"0000:41:01.0_qat_sym\".\n+ This name can be passed to rte_cryptodev_get_dev_id() to get the device_id.\n+\n+.. Note::\n+\n+\tThe qat crypto driver name is passed to the dpdk-test-crypto-perf tool in the -devtype parameter.\n+\n+\tThe qat crypto device name is in the format of the slave parameter passed to the crypto scheduler.\n+\n+* The qat compressdev driver name is \"comp_qat\".\n+ The rte_compressdev_devices_get() returns the devices exposed by this driver.\n+\n+* Each qat compression device has a unique name, in format\n+ <pci bdf>_<service>, e.g. \"0000:41:01.0_qat_comp\".\n+ This name can be passed to rte_compressdev_get_dev_id() to get the device_id.\n+\n+\n+Available kernel drivers\n+------------------------\n+\n+Kernel drivers for each device are listed in the following table. Scroll right\n+to check that the driver and device supports the servic you require.\n+\n \n .. _table_qat_pmds_drivers:\n \n .. table:: QAT device generations, devices and drivers\n \n- +-----+----------+--------+---------------+------------+--------+------+--------+--------+\n- | Gen | Device | Driver | Kernel Module | Pci Driver | PF Did | #PFs | Vf Did | VFs/PF |\n- +=====+==========+========+===============+============+========+======+========+========+\n- | 1 | DH895xCC | 01.org | icp_qa_al | n/a | 435 | 1 | 443 | 32 |\n- +-----+----------+--------+---------------+------------+--------+------+--------+--------+\n- | 1 | DH895xCC | 4.4+ | qat_dh895xcc | dh895xcc | 435 | 1 | 443 | 32 |\n- +-----+----------+--------+---------------+------------+--------+------+--------+--------+\n- | 2 | C62x | 4.5+ | qat_c62x | c6xx | 37c8 | 3 | 37c9 | 16 |\n- +-----+----------+--------+---------------+------------+--------+------+--------+--------+\n- | 2 | C3xxx | 4.5+ | qat_c3xxx | c3xxx | 19e2 | 1 | 19e3 | 16 |\n- +-----+----------+--------+---------------+------------+--------+------+--------+--------+\n- | 2 | D15xx | p | qat_d15xx | d15xx | 6f54 | 1 | 6f55 | 16 |\n- +-----+----------+--------+---------------+------------+--------+------+--------+--------+\n+ +-----+----------+---------------+---------------+------------+--------+------+--------+--------+-----------+-------------+\n+ | Gen | Device | Driver/ver | Kernel Module | Pci Driver | PF Did | #PFs | VF Did | VFs/PF | cryptodev | compressdev |\n+ +=====+==========+===============+===============+============+========+======+========+========+===========+=============+\n+ | 1 | DH895xCC | linux/4.4+ | qat_dh895xcc | dh895xcc | 435 | 1 | 443 | 32 | Yes | No |\n+ +-----+----------+---------------+---------------+------------+--------+------+--------+--------+-----------+-------------+\n+ | \" | \" | 01.org/4.2.0+ | \" | \" | \" | \" | \" | \" | Yes | No |\n+ +-----+----------+---------------+---------------+------------+--------+------+--------+--------+-----------+-------------+\n+ | 2 | C62x | linux/4.5+ | qat_c62x | c6xx | 37c8 | 3 | 37c9 | 16 | Yes | No |\n+ +-----+----------+---------------+---------------+------------+--------+------+--------+--------+-----------+-------------+\n+ | \" | \" | 01.org/4.2.0+ | \" | \" | \" | \" | \" | \" | Yes | Yes |\n+ +-----+----------+---------------+---------------+------------+--------+------+--------+--------+-----------+-------------+\n+ | 2 | C3xxx | linux/4.5+ | qat_c3xxx | c3xxx | 19e2 | 1 | 19e3 | 16 | Yes | No |\n+ +-----+----------+---------------+---------------+------------+--------+------+--------+--------+-----------+-------------+\n+ | \" | \" | 01.org/4.2.0+ | \" | \" | \" | \" | \" | \" | Yes | Yes |\n+ +-----+----------+---------------+---------------+------------+--------+------+--------+--------+-----------+-------------+\n+ | 2 | D15xx | p | qat_d15xx | d15xx | 6f54 | 1 | 6f55 | 16 | Yes | No |\n+ +-----+----------+---------------+---------------+------------+--------+------+--------+--------+-----------+-------------+\n \n \n The ``Driver`` column indicates either the Linux kernel version in which\n@@ -196,9 +282,9 @@ Consult the *Getting Started Guide* at the same URL for further information.\n \n The steps below assume you are:\n \n-* Building on a platform with one ``DH895xCC`` device.\n-* Using package ``qatmux.l.2.3.0-34.tgz``.\n-* On Fedora21 kernel ``3.17.4-301.fc21.x86_64``.\n+* Building on a platform with one ``C62x`` device.\n+* Using package ``qat1.7.l.4.2.0-000xx.tar.gz``.\n+* On Fedora26 kernel ``4.11.11-300.fc26.x86_64``.\n \n In the BIOS ensure that SRIOV is enabled and VT-d is disabled.\n \n@@ -206,21 +292,30 @@ Uninstall any existing QAT driver, for example by running:\n \n * ``./installer.sh uninstall`` in the directory where originally installed.\n \n-* or ``rmmod qat_dh895xcc; rmmod intel_qat``.\n \n Build and install the SRIOV-enabled QAT driver::\n \n mkdir /QAT\n cd /QAT\n \n- # Copy qatmux.l.2.3.0-34.tgz to this location\n- tar zxof qatmux.l.2.3.0-34.tgz\n+ # Copy the package to this location and unpack\n+ tar zxof qat1.7.l.4.2.0-000xx.tar.gz\n \n- export ICP_WITHOUT_IOMMU=1\n- ./installer.sh install QAT1.6 host\n+ ./configure --enable-icp-sriov=host\n+ make install\n+\n+You can use ``cat /sys/kernel/debug/qat<your device type and bdf>/version/fw`` to confirm the driver is correctly installed and is using firmware version 4.2.0.\n+You can use ``lspci -d:37c9`` to confirm the presence of the 16 VF devices available per ``C62x`` PF.\n+\n+Confirm the driver is correctly installed and is using firmware version 4.2.0::\n+\n+ cat /sys/kernel/debug/qat<your device type and bdf>/version/fw\n+\n+\n+Confirm the presence of 48 VF devices - 16 per PF::\n+\n+ lspci -d:37c9\n \n-You can use ``cat /proc/icp_dh895xcc_dev0/version`` to confirm the driver is correctly installed.\n-You can use ``lspci -d:443`` to confirm the of the 32 VF devices available per ``DH895xCC`` device.\n \n To complete the installation - follow instructions in `Binding the available VFs to the DPDK UIO driver`_.\n \n@@ -261,6 +356,7 @@ To complete the installation - follow instructions in `Binding the available VFs\n \n sudo yum install zlib-devel\n sudo yum install openssl-devel\n+ sudo yum install libudev-devel\n \n .. Note::\n \n@@ -343,35 +439,6 @@ Another way to bind the VFs to the DPDK UIO driver is by using the\n ./usertools/dpdk-devbind.py -b igb_uio 0000:03:01.1\n \n \n-Extra notes on KASUMI F9\n-------------------------\n-\n-When using KASUMI F9 authentication algorithm, the input buffer must be\n-constructed according to the 3GPP KASUMI specifications (section 4.4, page 13):\n-`<http://cryptome.org/3gpp/35201-900.pdf>`_.\n-Input buffer has to have COUNT (4 bytes), FRESH (4 bytes), MESSAGE and DIRECTION (1 bit)\n-concatenated. After the DIRECTION bit, a single '1' bit is appended, followed by\n-between 0 and 7 '0' bits, so that the total length of the buffer is multiple of 8 bits.\n-Note that the actual message can be any length, specified in bits.\n-\n-Once this buffer is passed this way, when creating the crypto operation,\n-length of data to authenticate (op.sym.auth.data.length) must be the length\n-of all the items described above, including the padding at the end.\n-Also, offset of data to authenticate (op.sym.auth.data.offset)\n-must be such that points at the start of the COUNT bytes.\n-\n-Device and driver naming\n-------------------------\n-\n-The qat crypto driver name is \"crypto_qat\".\n-This name is passed to the dpdk-test-crypto-perf tool in the -devtype parameter.\n-The rte_cryptodev_devices_get() can return the devices exposed by a driver.\n-\n-Each qat crypto device has a unique name, in format\n-<pci bdf>_<service>, e.g. \"0000:41:01.0_qat_sym\".\n-This name can be passed to rte_cryptodev_get_dev_id() to get the device_id.\n-This is also the format of the slave parameter passed to the crypto scheduler.\n-\n Debugging\n ----------------------------------------\n \ndiff --git a/doc/guides/rel_notes/release_18_08.rst b/doc/guides/rel_notes/release_18_08.rst\nindex bc01242..2230d3e 100644\n--- a/doc/guides/rel_notes/release_18_08.rst\n+++ b/doc/guides/rel_notes/release_18_08.rst\n@@ -46,6 +46,11 @@ New Features\n Flow API support has been added to CXGBE Poll Mode Driver to offload\n flows to Chelsio T5/T6 NICs.\n \n+* **Added a new compression PMD using Intel's QuickAssist (QAT) device family.**\n+\n+ Added the new ``QAT`` compression driver, for compression and decompression\n+ operations in software. See the :doc:`../compressdevs/qat_comp` compression\n+ driver guide for details on this new driver.\n \n API Changes\n -----------\n", "prefixes": [ "v2", "16/16" ] }{ "id": 42409, "url": "