xref: /dpdk/doc/guides/cryptodevs/octeontx.rst (revision 9c4491cf5c89a015cf358011151a92b9cba78560)
1*9c4491cfSAnoob Joseph.. SPDX-License-Identifier: BSD-3-Clause
2*9c4491cfSAnoob Joseph   Copyright(c) 2018 Cavium, Inc
3*9c4491cfSAnoob Joseph
4*9c4491cfSAnoob JosephCavium OCTEON TX Crypto Poll Mode Driver
5*9c4491cfSAnoob Joseph========================================
6*9c4491cfSAnoob Joseph
7*9c4491cfSAnoob JosephThe OCTEON TX crypto poll mode driver provides support for offloading
8*9c4491cfSAnoob Josephcryptographic operations to cryptographic accelerator units on
9*9c4491cfSAnoob Joseph**OCTEON TX** :sup:`®` family of processors (CN8XXX). The OCTEON TX crypto
10*9c4491cfSAnoob Josephpoll mode driver enqueues the crypto request to this accelerator and dequeues
11*9c4491cfSAnoob Josephthe response once the operation is completed.
12*9c4491cfSAnoob Joseph
13*9c4491cfSAnoob JosephSupported Algorithms
14*9c4491cfSAnoob Joseph--------------------
15*9c4491cfSAnoob Joseph
16*9c4491cfSAnoob JosephCipher Algorithms
17*9c4491cfSAnoob Joseph~~~~~~~~~~~~~~~~~
18*9c4491cfSAnoob Joseph
19*9c4491cfSAnoob Joseph* ``RTE_CRYPTO_CIPHER_NULL``
20*9c4491cfSAnoob Joseph* ``RTE_CRYPTO_CIPHER_3DES_CBC``
21*9c4491cfSAnoob Joseph* ``RTE_CRYPTO_CIPHER_3DES_ECB``
22*9c4491cfSAnoob Joseph* ``RTE_CRYPTO_CIPHER_AES_CBC``
23*9c4491cfSAnoob Joseph* ``RTE_CRYPTO_CIPHER_AES_CTR``
24*9c4491cfSAnoob Joseph* ``RTE_CRYPTO_CIPHER_AES_XTS``
25*9c4491cfSAnoob Joseph* ``RTE_CRYPTO_CIPHER_DES_CBC``
26*9c4491cfSAnoob Joseph* ``RTE_CRYPTO_CIPHER_KASUMI_F8``
27*9c4491cfSAnoob Joseph* ``RTE_CRYPTO_CIPHER_SNOW3G_UEA2``
28*9c4491cfSAnoob Joseph* ``RTE_CRYPTO_CIPHER_ZUC_EEA3``
29*9c4491cfSAnoob Joseph
30*9c4491cfSAnoob JosephHash Algorithms
31*9c4491cfSAnoob Joseph~~~~~~~~~~~~~~~
32*9c4491cfSAnoob Joseph
33*9c4491cfSAnoob Joseph* ``RTE_CRYPTO_AUTH_NULL``
34*9c4491cfSAnoob Joseph* ``RTE_CRYPTO_AUTH_AES_GMAC``
35*9c4491cfSAnoob Joseph* ``RTE_CRYPTO_AUTH_KASUMI_F9``
36*9c4491cfSAnoob Joseph* ``RTE_CRYPTO_AUTH_MD5``
37*9c4491cfSAnoob Joseph* ``RTE_CRYPTO_AUTH_MD5_HMAC``
38*9c4491cfSAnoob Joseph* ``RTE_CRYPTO_AUTH_SHA1``
39*9c4491cfSAnoob Joseph* ``RTE_CRYPTO_AUTH_SHA1_HMAC``
40*9c4491cfSAnoob Joseph* ``RTE_CRYPTO_AUTH_SHA224``
41*9c4491cfSAnoob Joseph* ``RTE_CRYPTO_AUTH_SHA224_HMAC``
42*9c4491cfSAnoob Joseph* ``RTE_CRYPTO_AUTH_SHA256``
43*9c4491cfSAnoob Joseph* ``RTE_CRYPTO_AUTH_SHA256_HMAC``
44*9c4491cfSAnoob Joseph* ``RTE_CRYPTO_AUTH_SHA384``
45*9c4491cfSAnoob Joseph* ``RTE_CRYPTO_AUTH_SHA384_HMAC``
46*9c4491cfSAnoob Joseph* ``RTE_CRYPTO_AUTH_SHA512``
47*9c4491cfSAnoob Joseph* ``RTE_CRYPTO_AUTH_SHA512_HMAC``
48*9c4491cfSAnoob Joseph* ``RTE_CRYPTO_AUTH_SNOW3G_UIA2``
49*9c4491cfSAnoob Joseph* ``RTE_CRYPTO_AUTH_ZUC_EIA3``
50*9c4491cfSAnoob Joseph
51*9c4491cfSAnoob JosephAEAD Algorithms
52*9c4491cfSAnoob Joseph~~~~~~~~~~~~~~~
53*9c4491cfSAnoob Joseph
54*9c4491cfSAnoob Joseph* ``RTE_CRYPTO_AEAD_AES_GCM``
55*9c4491cfSAnoob Joseph
56*9c4491cfSAnoob JosephCompilation
57*9c4491cfSAnoob Joseph-----------
58*9c4491cfSAnoob Joseph
59*9c4491cfSAnoob JosephThe **OCTEON TX** :sup:`®` board must be running the linux kernel based on
60*9c4491cfSAnoob Josephsdk-6.2.0 patch 3. In this, the OCTEON TX crypto PF driver is already built in.
61*9c4491cfSAnoob Joseph
62*9c4491cfSAnoob JosephFor compiling the OCTEON TX crypto poll mode driver, please check if the
63*9c4491cfSAnoob JosephCONFIG_RTE_LIBRTE_PMD_OCTEONTX_CRYPTO setting is set to `y` in
64*9c4491cfSAnoob Josephconfig/common_base file.
65*9c4491cfSAnoob Joseph
66*9c4491cfSAnoob Joseph* ``CONFIG_RTE_LIBRTE_PMD_OCTEONTX_CRYPTO=y``
67*9c4491cfSAnoob Joseph
68*9c4491cfSAnoob JosephThe following are the steps to compile the OCTEON TX crypto poll mode driver:
69*9c4491cfSAnoob Joseph
70*9c4491cfSAnoob Joseph.. code-block:: console
71*9c4491cfSAnoob Joseph
72*9c4491cfSAnoob Joseph        cd <dpdk directory>
73*9c4491cfSAnoob Joseph        make config T=arm64-thunderx-linuxapp-gcc
74*9c4491cfSAnoob Joseph        make
75*9c4491cfSAnoob Joseph
76*9c4491cfSAnoob JosephThe example applications can be compiled using the following:
77*9c4491cfSAnoob Joseph
78*9c4491cfSAnoob Joseph.. code-block:: console
79*9c4491cfSAnoob Joseph
80*9c4491cfSAnoob Joseph        cd <dpdk directory>
81*9c4491cfSAnoob Joseph        export RTE_SDK=$PWD
82*9c4491cfSAnoob Joseph        export RTE_TARGET=build
83*9c4491cfSAnoob Joseph        cd examples/<application>
84*9c4491cfSAnoob Joseph        make
85*9c4491cfSAnoob Joseph
86*9c4491cfSAnoob JosephExecution
87*9c4491cfSAnoob Joseph---------
88*9c4491cfSAnoob Joseph
89*9c4491cfSAnoob JosephThe number of crypto VFs to be enabled can be controlled by setting sysfs entry,
90*9c4491cfSAnoob Joseph`sriov_numvfs`, for the corresponding PF driver.
91*9c4491cfSAnoob Joseph
92*9c4491cfSAnoob Joseph.. code-block:: console
93*9c4491cfSAnoob Joseph
94*9c4491cfSAnoob Joseph        echo <num_vfs> > /sys/bus/pci/devices/<dev_bus_id>/sriov_numvfs
95*9c4491cfSAnoob Joseph
96*9c4491cfSAnoob JosephThe device bus ID, `dev_bus_id`, to be used in the above step can be found out
97*9c4491cfSAnoob Josephby using dpdk-devbind.py script. The OCTEON TX crypto PF device need to be
98*9c4491cfSAnoob Josephidentified and the corresponding device number can be used to tune various PF
99*9c4491cfSAnoob Josephproperties.
100*9c4491cfSAnoob Joseph
101*9c4491cfSAnoob Joseph
102*9c4491cfSAnoob JosephOnce the required VFs are enabled, dpdk-devbind.py script can be used to
103*9c4491cfSAnoob Josephidentify the VFs. To be accessible from DPDK, VFs need to be bound to vfio-pci
104*9c4491cfSAnoob Josephdriver:
105*9c4491cfSAnoob Joseph
106*9c4491cfSAnoob Joseph.. code-block:: console
107*9c4491cfSAnoob Joseph
108*9c4491cfSAnoob Joseph        cd <dpdk directory>
109*9c4491cfSAnoob Joseph        ./usertools/dpdk-devbind.py -u <vf device no>
110*9c4491cfSAnoob Joseph        ./usertools/dpdk-devbind.py -b vfio-pci <vf device no>
111*9c4491cfSAnoob Joseph
112*9c4491cfSAnoob JosephAppropriate huge page need to be setup in order to run the DPDK example
113*9c4491cfSAnoob Josephapplications.
114*9c4491cfSAnoob Joseph
115*9c4491cfSAnoob Joseph.. code-block:: console
116*9c4491cfSAnoob Joseph
117*9c4491cfSAnoob Joseph        echo 8 > /sys/kernel/mm/hugepages/hugepages-524288kB/nr_hugepages
118*9c4491cfSAnoob Joseph        mkdir /mnt/huge
119*9c4491cfSAnoob Joseph        mount -t hugetlbfs nodev /mnt/huge
120*9c4491cfSAnoob Joseph
121*9c4491cfSAnoob JosephExample applications can now be executed with crypto operations offloaded to
122*9c4491cfSAnoob JosephOCTEON TX crypto PMD.
123*9c4491cfSAnoob Joseph
124*9c4491cfSAnoob Joseph.. code-block:: console
125*9c4491cfSAnoob Joseph
126*9c4491cfSAnoob Joseph        ./build/ipsec-secgw --log-level=8 -c 0xff -- -P -p 0x3 -u 0x2 --config
127*9c4491cfSAnoob Joseph        "(1,0,0),(0,0,0)" -f ep1.cfg
128