xref: /dpdk/doc/guides/compressdevs/octeontx.rst (revision f23c977d0362dd428f396d6ba932ad02cd47443c)
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