From mboxrd@z Thu Jan 1 00:00:00 1970 From: Deepak Kumar Jain Subject: [PATCH v2] crypto/qat: add Intel(R) QuickAssist C3xxx device Date: Wed, 14 Sep 2016 10:56:33 +0100 Message-ID: <1473846993-29139-1-git-send-email-deepak.k.jain@intel.com> References: <1472214451-163515-1-git-send-email-deepak.k.jain@intel.com> Cc: pablo.de.lara.guarch@intel.com, Deepak Kumar JAIN To: dev@dpdk.org Return-path: Received: from mga01.intel.com (mga01.intel.com [192.55.52.88]) by dpdk.org (Postfix) with ESMTP id C13A98D91 for ; Wed, 14 Sep 2016 11:56:48 +0200 (CEST) In-Reply-To: <1472214451-163515-1-git-send-email-deepak.k.jain@intel.com> List-Id: patches and discussions about DPDK List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dev-bounces@dpdk.org Sender: "dev" From: Deepak Kumar JAIN Signed-off-by: Deepak Kumar Jain Acked-by: Fiona Trahe --- Changes in v2: Added new feature information in release_16_11.rst file. doc/guides/cryptodevs/qat.rst | 76 +++++++++++++++++++++++++++++++--- doc/guides/rel_notes/release_16_11.rst | 3 ++ drivers/crypto/qat/rte_qat_cryptodev.c | 3 ++ 3 files changed, 76 insertions(+), 6 deletions(-) diff --git a/doc/guides/cryptodevs/qat.rst b/doc/guides/cryptodevs/qat.rst index 3819e51..78cadc4 100644 --- a/doc/guides/cryptodevs/qat.rst +++ b/doc/guides/cryptodevs/qat.rst @@ -31,8 +31,8 @@ Intel(R) QuickAssist (QAT) Crypto Poll Mode Driver ================================================== The QAT PMD provides poll mode crypto driver support for **Intel QuickAssist -Technology DH895xxC** and **Intel QuickAssist Technology C62x** -hardware accelerator. +Technology DH895xxC** , **Intel QuickAssist Technology C62x** and +**Intel QuickAssist Technology C3xxx** hardware accelerator. Features @@ -75,6 +75,7 @@ Limitations * Snow3g(UEA2) supported only if cipher length, cipher offset fields are byte-aligned. * Snow3g(UIA2) supported only if hash length, hash offset fields are byte-aligned. * No BSD support as BSD QAT kernel driver not available. +* Snow3g (UIA2) not supported in the PMD of **Intel QuickAssist Technology C3xxx** device. Installation @@ -98,14 +99,16 @@ If you are running on kernel 4.4 or greater, see instructions for `Installation using kernel.org driver`_ below. If you are on a kernel earlier than 4.4, see `Installation using 01.org QAT driver`_. -For **Intel QuickAssist Technology C62x** device, kernel 4.5 or greater is -needed. See instructions for `Installation using kernel.org driver`_ below. +For **Intel QuickAssist Technology C62x** and **Intel QuickAssist Technology C3xxx** +device, kernel 4.5 or greater is needed. +See instructions for `Installation using kernel.org driver`_ below. Installation using 01.org QAT driver ------------------------------------ -NOTE: There is no driver available for **Intel QuickAssist Technology C62x** on 01.org. +NOTE: There is no driver available for **Intel QuickAssist Technology C62x** and +**Intel QuickAssist Technology C3xxx** devices on 01.org. Download the latest QuickAssist Technology Driver from `01.org `_ @@ -184,6 +187,7 @@ Installation using kernel.org driver ------------------------------------ For **Intel QuickAssist Technology DH895xxC**: + Assuming you are running on at least a 4.4 kernel, you can use the stock kernel.org QAT driver to start the QAT hardware. @@ -242,7 +246,6 @@ cd to your linux source root directory and start the qat kernel modules: **Note**:The following warning in /var/log/messages can be ignored: ``IOMMU should be enabled for SR-IOV to work correctly`` - For **Intel QuickAssist Technology C62x**: Assuming you are running on at least a 4.5 kernel, you can use the stock kernel.org QAT driver to start the QAT hardware. @@ -287,6 +290,47 @@ the bdf of the 48 VF devices are available per ``C62x`` device. To complete the installation - follow instructions in `Binding the available VFs to the DPDK UIO driver`_. +For **Intel QuickAssist Technology C3xxx**: +Assuming you are running on at least a 4.5 kernel, you can use the stock kernel.org QAT +driver to start the QAT hardware. + +The steps below assume you are: + +* Running DPDK on a platform with one ``C3xxx`` device. +* On a kernel at least version 4.5. + +In BIOS ensure that SRIOV is enabled and VT-d is disabled. + +Ensure the QAT driver is loaded on your system, by executing:: + + lsmod | grep qat + +You should see the following output:: + + qat_c3xxx 16384 0 + intel_qat 122880 1 qat_c3xxx + +Next, you need to expose the Virtual Functions (VFs) using the sysfs file system. + +First find the bdf of the physical function (PF) of the C3xxx device + + lspci -d:19e2 + +You should see output similar to:: + + 01:00.0 Co-processor: Intel Corporation Device 19e2 + +For c3xxx device there is 1 PFs. +Using the sysfs, enable the 16 VFs:: + + echo 16 > /sys/bus/pci/drivers/c3xxx/0000\:01\:00.0/sriov_numvfs + +If you get an error, it's likely you're using a QAT kernel driver earlier than kernel 4.5. + +To verify that the VFs are available for use - use ``lspci -d:19e3`` to confirm +the bdf of the 16 VF devices are available per ``C3xxx`` device. +To complete the installation - follow instructions in `Binding the available VFs to the DPDK UIO driver`_. + Binding the available VFs to the DPDK UIO driver ------------------------------------------------ @@ -332,3 +376,23 @@ if yours are different adjust the unbind command below:: echo "8086 37c9" > /sys/bus/pci/drivers/igb_uio/new_id You can use ``lspci -vvd:37c9`` to confirm that all devices are now in use by igb_uio kernel driver. + +For **Intel(R) QuickAssist Technology C3xxx** device: +The unbind command below assumes ``bdfs`` of ``01:01.00-01:02.07``, +if yours are different adjust the unbind command below:: + + cd $RTE_SDK + modprobe uio + insmod ./build/kmod/igb_uio.ko + + for device in $(seq 1 2); do \ + for fn in $(seq 0 7); do \ + echo -n 0000:01:0${device}.${fn} > \ + /sys/bus/pci/devices/0000\:01\:0${device}.${fn}/driver/unbind; \ + + done; \ + done + + echo "8086 19e3" > /sys/bus/pci/drivers/igb_uio/new_id + +You can use ``lspci -vvd:19e3`` to confirm that all devices are now in use by igb_uio kernel driver. diff --git a/doc/guides/rel_notes/release_16_11.rst b/doc/guides/rel_notes/release_16_11.rst index 5db495e..4bc67e0 100644 --- a/doc/guides/rel_notes/release_16_11.rst +++ b/doc/guides/rel_notes/release_16_11.rst @@ -36,6 +36,9 @@ New Features This section is a comment. Make sure to start the actual text at the margin. +* ** Added support of C3xxx Device in QAT PMD.** + Support for Device c3xxx has been enabled in QAT PMD. + * ** Added support of C62XX Device in QAT PMD.** Support for Device c62xx has been enabled in QAT PMD. diff --git a/drivers/crypto/qat/rte_qat_cryptodev.c b/drivers/crypto/qat/rte_qat_cryptodev.c index e606eb5..eb929b5 100644 --- a/drivers/crypto/qat/rte_qat_cryptodev.c +++ b/drivers/crypto/qat/rte_qat_cryptodev.c @@ -74,6 +74,9 @@ static struct rte_pci_id pci_id_qat_map[] = { { RTE_PCI_DEVICE(0x8086, 0x37c9), }, + { + RTE_PCI_DEVICE(0x8086, 0x19e3), + }, {.device_id = 0}, }; -- 2.5.5