1*f23c977dSAshish Gupta.. SPDX-License-Identifier: BSD-3-Clause 2*f23c977dSAshish Gupta Copyright(c) 2018 Cavium Networks. 3*f23c977dSAshish Gupta 4*f23c977dSAshish GuptaOcteontx ZIP Compression Poll Mode Driver 5*f23c977dSAshish Gupta========================================= 6*f23c977dSAshish Gupta 7*f23c977dSAshish GuptaThe Octeontx ZIP PMD (**librte_pmd_octeontx_zip**) provides poll mode 8*f23c977dSAshish Guptacompression & decompression driver for ZIP HW offload device, found in 9*f23c977dSAshish Gupta**Cavium OCTEONTX** SoC family. 10*f23c977dSAshish Gupta 11*f23c977dSAshish GuptaMore information can be found at `Cavium, Inc Official Website 12*f23c977dSAshish Gupta<http://www.cavium.com/OCTEON-TX_ARM_Processors.html>`_. 13*f23c977dSAshish Gupta 14*f23c977dSAshish GuptaFeatures 15*f23c977dSAshish Gupta-------- 16*f23c977dSAshish Gupta 17*f23c977dSAshish GuptaOcteontx ZIP PMD has support for: 18*f23c977dSAshish Gupta 19*f23c977dSAshish GuptaCompression/Decompression algorithm: 20*f23c977dSAshish Gupta 21*f23c977dSAshish Gupta* DEFLATE 22*f23c977dSAshish Gupta 23*f23c977dSAshish GuptaHuffman code type: 24*f23c977dSAshish Gupta 25*f23c977dSAshish Gupta* FIXED 26*f23c977dSAshish Gupta* DYNAMIC 27*f23c977dSAshish Gupta 28*f23c977dSAshish GuptaWindow size support: 29*f23c977dSAshish Gupta 30*f23c977dSAshish Gupta* 2 to 2^14 31*f23c977dSAshish Gupta 32*f23c977dSAshish GuptaLimitations 33*f23c977dSAshish Gupta----------- 34*f23c977dSAshish Gupta 35*f23c977dSAshish Gupta* Chained mbufs are not supported. 36*f23c977dSAshish Gupta 37*f23c977dSAshish GuptaSupported OCTEONTX SoCs 38*f23c977dSAshish Gupta----------------------- 39*f23c977dSAshish Gupta 40*f23c977dSAshish Gupta- CN83xx 41*f23c977dSAshish Gupta 42*f23c977dSAshish GuptaSteps To Setup Platform 43*f23c977dSAshish Gupta----------------------- 44*f23c977dSAshish Gupta 45*f23c977dSAshish Gupta Octeontx SDK includes kernel image which provides Octeontx ZIP PF 46*f23c977dSAshish Gupta driver to manage configuration of ZIPVF device 47*f23c977dSAshish Gupta Required version of SDK is "OCTEONTX-SDK-6.2.0-build35" or above. 48*f23c977dSAshish Gupta 49*f23c977dSAshish Gupta SDK can be install by using below command. 50*f23c977dSAshish Gupta #rpm -ivh CTEONTX-SDK-6.2.0-build35.x86_64.rpm --force --nodeps 51*f23c977dSAshish Gupta It will install OCTEONTX-SDK at following default location 52*f23c977dSAshish Gupta /usr/local/Cavium_Networks/OCTEONTX-SDK/ 53*f23c977dSAshish Gupta 54*f23c977dSAshish Gupta For more information on building and booting linux kernel on OCTEONTX 55*f23c977dSAshish Gupta please refer /usr/local/Cavium_Networks/OCTEONTX-SDK/docs/OcteonTX-SDK-UG_6.2.0.pdf. 56*f23c977dSAshish Gupta 57*f23c977dSAshish Gupta SDK and related information can be obtained from: `Cavium support site <https://support.cavium.com/>`_. 58*f23c977dSAshish Gupta 59*f23c977dSAshish GuptaInstallation 60*f23c977dSAshish Gupta------------ 61*f23c977dSAshish Gupta 62*f23c977dSAshish GuptaDriver Compilation 63*f23c977dSAshish Gupta~~~~~~~~~~~~~~~~~~ 64*f23c977dSAshish Gupta 65*f23c977dSAshish GuptaTo compile the OCTEONTX ZIP PMD for Linux arm64 gcc target, run the 66*f23c977dSAshish Guptafollowing ``make`` command: 67*f23c977dSAshish Gupta 68*f23c977dSAshish Gupta .. code-block:: console 69*f23c977dSAshish Gupta 70*f23c977dSAshish Gupta cd <DPDK-source-directory> 71*f23c977dSAshish Gupta make config T=arm64-thunderx-linuxapp-gcc install 72*f23c977dSAshish Gupta 73*f23c977dSAshish Gupta 74*f23c977dSAshish GuptaInitialization 75*f23c977dSAshish Gupta-------------- 76*f23c977dSAshish Gupta 77*f23c977dSAshish GuptaThe octeontx zip is exposed as pci device which consists of a set of 78*f23c977dSAshish GuptaPCIe VF devices. On EAL initialization, ZIP PCIe VF devices will be 79*f23c977dSAshish Guptaprobed. To use the PMD in an application, user must: 80*f23c977dSAshish Gupta 81*f23c977dSAshish Gupta* run dev_bind script to bind eight ZIP PCIe VFs to the ``vfio-pci`` driver: 82*f23c977dSAshish Gupta 83*f23c977dSAshish Gupta .. code-block:: console 84*f23c977dSAshish Gupta 85*f23c977dSAshish Gupta ./usertools/dpdk-devbind.py -b vfio-pci 0001:04:00.1 86*f23c977dSAshish Gupta ./usertools/dpdk-devbind.py -b vfio-pci 0001:04:00.2 87*f23c977dSAshish Gupta ./usertools/dpdk-devbind.py -b vfio-pci 0001:04:00.3 88*f23c977dSAshish Gupta ./usertools/dpdk-devbind.py -b vfio-pci 0001:04:00.4 89*f23c977dSAshish Gupta ./usertools/dpdk-devbind.py -b vfio-pci 0001:04:00.5 90*f23c977dSAshish Gupta ./usertools/dpdk-devbind.py -b vfio-pci 0001:04:00.6 91*f23c977dSAshish Gupta ./usertools/dpdk-devbind.py -b vfio-pci 0001:04:00.7 92*f23c977dSAshish Gupta ./usertools/dpdk-devbind.py -b vfio-pci 0001:04:01.0 93*f23c977dSAshish Gupta 94*f23c977dSAshish Gupta* The unit test cases can be tested as below: 95*f23c977dSAshish Gupta 96*f23c977dSAshish Gupta .. code-block:: console 97*f23c977dSAshish Gupta 98*f23c977dSAshish Gupta reserve enough huge pages 99*f23c977dSAshish Gupta cd to the top-level DPDK directory 100*f23c977dSAshish Gupta export RTE_TARGET=arm64-thunderx-linuxapp-gcc 101*f23c977dSAshish Gupta export RTE_SDK=`pwd` 102*f23c977dSAshish Gupta cd to test/test 103*f23c977dSAshish Gupta type the command "make" to compile 104*f23c977dSAshish Gupta run the tests with "./test" 105*f23c977dSAshish Gupta type the command "compressdev_autotest" to test 106