ad33c66de7482721a26b6ad3dad849dc18a9411b
[dpdk.git] / doc / guides / cryptodevs / octeontx2.rst
1 ..  SPDX-License-Identifier: BSD-3-Clause
2     Copyright(c) 2019 Marvell International Ltd.
3
4
5 Marvell OCTEON TX2 Crypto Poll Mode Driver
6 ==========================================
7
8 The OCTEON TX2 crypto poll mode driver provides support for offloading
9 cryptographic operations to cryptographic accelerator units on the
10 **OCTEON TX2** :sup:`®` family of processors (CN9XXX).
11
12 More information about OCTEON TX2 SoCs may be obtained from `<https://www.marvell.com>`_
13
14 Features
15 --------
16
17 The OCTEON TX2 crypto PMD has support for:
18
19 Symmetric Crypto Algorithms
20 ~~~~~~~~~~~~~~~~~~~~~~~~~~~
21
22 Cipher algorithms:
23
24 * ``RTE_CRYPTO_CIPHER_NULL``
25 * ``RTE_CRYPTO_CIPHER_3DES_CBC``
26 * ``RTE_CRYPTO_CIPHER_3DES_ECB``
27 * ``RTE_CRYPTO_CIPHER_AES_CBC``
28 * ``RTE_CRYPTO_CIPHER_AES_CTR``
29 * ``RTE_CRYPTO_CIPHER_AES_XTS``
30 * ``RTE_CRYPTO_CIPHER_DES_CBC``
31 * ``RTE_CRYPTO_CIPHER_KASUMI_F8``
32 * ``RTE_CRYPTO_CIPHER_SNOW3G_UEA2``
33 * ``RTE_CRYPTO_CIPHER_ZUC_EEA3``
34
35 Hash algorithms:
36
37 * ``RTE_CRYPTO_AUTH_NULL``
38 * ``RTE_CRYPTO_AUTH_AES_GMAC``
39 * ``RTE_CRYPTO_AUTH_KASUMI_F9``
40 * ``RTE_CRYPTO_AUTH_MD5``
41 * ``RTE_CRYPTO_AUTH_MD5_HMAC``
42 * ``RTE_CRYPTO_AUTH_SHA1``
43 * ``RTE_CRYPTO_AUTH_SHA1_HMAC``
44 * ``RTE_CRYPTO_AUTH_SHA224``
45 * ``RTE_CRYPTO_AUTH_SHA224_HMAC``
46 * ``RTE_CRYPTO_AUTH_SHA256``
47 * ``RTE_CRYPTO_AUTH_SHA256_HMAC``
48 * ``RTE_CRYPTO_AUTH_SHA384``
49 * ``RTE_CRYPTO_AUTH_SHA384_HMAC``
50 * ``RTE_CRYPTO_AUTH_SHA512``
51 * ``RTE_CRYPTO_AUTH_SHA512_HMAC``
52 * ``RTE_CRYPTO_AUTH_SNOW3G_UIA2``
53 * ``RTE_CRYPTO_AUTH_ZUC_EIA3``
54
55 AEAD algorithms:
56
57 * ``RTE_CRYPTO_AEAD_AES_GCM``
58
59 Asymmetric Crypto Algorithms
60 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~
61
62 * ``RTE_CRYPTO_ASYM_XFORM_RSA``
63 * ``RTE_CRYPTO_ASYM_XFORM_MODEX``
64
65
66 Installation
67 ------------
68
69 The OCTEON TX2 crypto PMD may be compiled natively on an OCTEON TX2 platform or
70 cross-compiled on an x86 platform.
71
72 Enable OCTEON TX2 crypto PMD in your config file:
73
74 * ``CONFIG_RTE_LIBRTE_PMD_OCTEONTX2_CRYPTO=y``
75
76 Refer to :doc:`../platform/octeontx2` for instructions to build your DPDK
77 application.
78
79 .. note::
80
81    The OCTEON TX2 crypto PMD uses services from the kernel mode OCTEON TX2
82    crypto PF driver in linux. This driver is included in the OCTEON TX SDK.
83
84 Initialization
85 --------------
86
87 List the CPT PF devices available on your OCTEON TX2 platform:
88
89 .. code-block:: console
90
91     lspci -d:a0fd
92
93 ``a0fd`` is the CPT PF device id. You should see output similar to:
94
95 .. code-block:: console
96
97     0002:10:00.0 Class 1080: Device 177d:a0fd
98
99 Set ``sriov_numvfs`` on the CPT PF device, to create a VF:
100
101 .. code-block:: console
102
103     echo 1 > /sys/bus/pci/drivers/octeontx2-cpt/0002:10:00.0/sriov_numvfs
104
105 Bind the CPT VF device to the vfio_pci driver:
106
107 .. code-block:: console
108
109     echo '177d a0fe' > /sys/bus/pci/drivers/vfio-pci/new_id
110     echo 0002:10:00.1 > /sys/bus/pci/devices/0002:10:00.1/driver/unbind
111     echo 0002:10:00.1 > /sys/bus/pci/drivers/vfio-pci/bind
112
113 Another way to bind the VF would be to use the ``dpdk-devbind.py`` script:
114
115 .. code-block:: console
116
117     cd <dpdk directory>
118     ./usertools/dpdk-devbind.py -u 0002:10:00.1
119     ./usertools/dpdk-devbind.py -b vfio-pci 0002:10.00.1
120
121 .. note::
122
123     Ensure that sufficient huge pages are available for your application::
124
125         echo 8 > /sys/kernel/mm/hugepages/hugepages-524288kB/nr_hugepages
126
127     Refer to :ref:`linux_gsg_hugepages` for more details.
128
129 Debugging Options
130 -----------------
131
132 .. _table_octeontx2_crypto_debug_options:
133
134 .. table:: OCTEON TX2 crypto PMD debug options
135
136     +---+------------+-------------------------------------------------------+
137     | # | Component  | EAL log command                                       |
138     +===+============+=======================================================+
139     | 1 | CPT        | --log-level='pmd\.crypto\.octeontx2,8'                |
140     +---+------------+-------------------------------------------------------+
141
142 Testing
143 -------
144
145 The symmetric crypto operations on OCTEON TX2 crypto PMD may be verified by running the test
146 application:
147
148 .. code-block:: console
149
150     ./test
151     RTE>>cryptodev_octeontx2_autotest