1.. SPDX-License-Identifier: BSD-3-Clause 2 Copyright(c) 2021 Marvell. 3 4Marvell cnxk Crypto Poll Mode Driver 5==================================== 6 7The cnxk crypto poll mode driver provides support for offloading 8cryptographic operations to cryptographic accelerator units on the 9**Marvell OCTEON cnxk** SoC family. 10 11The cnxk crypto PMD code is organized into different sets of files. 12The file names starting with cn9k and cn10k provides support for CN9XX 13and CN10XX respectively. The common code between the SoCs is present 14in file names starting with cnxk. 15 16More information about OCTEON cnxk SoCs may be obtained from `<https://www.marvell.com>`_ 17 18Supported OCTEON cnxk SoCs 19-------------------------- 20 21- CN9XX 22- CN10XX 23 24Features 25-------- 26 27The OCTEON cnxk crypto PMD has support for: 28 29Symmetric Crypto Algorithms 30~~~~~~~~~~~~~~~~~~~~~~~~~~~ 31 32Cipher algorithms: 33 34* ``RTE_CRYPTO_CIPHER_NULL`` 35* ``RTE_CRYPTO_CIPHER_3DES_CBC`` 36* ``RTE_CRYPTO_CIPHER_3DES_ECB`` 37* ``RTE_CRYPTO_CIPHER_AES_CBC`` 38* ``RTE_CRYPTO_CIPHER_AES_CTR`` 39* ``RTE_CRYPTO_CIPHER_AES_XTS`` 40* ``RTE_CRYPTO_CIPHER_DES_CBC`` 41* ``RTE_CRYPTO_CIPHER_KASUMI_F8`` 42* ``RTE_CRYPTO_CIPHER_SNOW3G_UEA2`` 43* ``RTE_CRYPTO_CIPHER_ZUC_EEA3`` 44 45Hash algorithms: 46 47* ``RTE_CRYPTO_AUTH_NULL`` 48* ``RTE_CRYPTO_AUTH_AES_GMAC`` 49* ``RTE_CRYPTO_AUTH_KASUMI_F9`` 50* ``RTE_CRYPTO_AUTH_MD5`` 51* ``RTE_CRYPTO_AUTH_MD5_HMAC`` 52* ``RTE_CRYPTO_AUTH_SHA1`` 53* ``RTE_CRYPTO_AUTH_SHA1_HMAC`` 54* ``RTE_CRYPTO_AUTH_SHA224`` 55* ``RTE_CRYPTO_AUTH_SHA224_HMAC`` 56* ``RTE_CRYPTO_AUTH_SHA256`` 57* ``RTE_CRYPTO_AUTH_SHA256_HMAC`` 58* ``RTE_CRYPTO_AUTH_SHA384`` 59* ``RTE_CRYPTO_AUTH_SHA384_HMAC`` 60* ``RTE_CRYPTO_AUTH_SHA512`` 61* ``RTE_CRYPTO_AUTH_SHA512_HMAC`` 62* ``RTE_CRYPTO_AUTH_SNOW3G_UIA2`` 63* ``RTE_CRYPTO_AUTH_ZUC_EIA3`` 64 65AEAD algorithms: 66 67* ``RTE_CRYPTO_AEAD_AES_GCM`` 68* ``RTE_CRYPTO_AEAD_CHACHA20_POLY1305`` 69 70Asymmetric Crypto Algorithms 71~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 72 73* ``RTE_CRYPTO_ASYM_XFORM_RSA`` 74* ``RTE_CRYPTO_ASYM_XFORM_MODEX`` 75 76Installation 77------------ 78 79The OCTEON cnxk crypto PMD may be compiled natively on an OCTEON cnxk platform 80or cross-compiled on an x86 platform. 81 82Refer to :doc:`../platform/cnxk` for instructions to build your DPDK 83application. 84 85.. note:: 86 87 The OCTEON cnxk crypto PMD uses services from the kernel mode OCTEON cnxk 88 crypto PF driver in linux. This driver is included in the OCTEON TX SDK. 89 90Initialization 91-------------- 92 93``CN9K Initialization`` 94 95List the CPT PF devices available on cn9k platform: 96 97.. code-block:: console 98 99 lspci -d:a0fd 100 101``a0fd`` is the CPT PF device id. You should see output similar to: 102 103.. code-block:: console 104 105 0002:10:00.0 Class 1080: Device 177d:a0fd 106 107Set ``sriov_numvfs`` on the CPT PF device, to create a VF: 108 109.. code-block:: console 110 111 echo 1 > /sys/bus/pci/devices/0002:10:00.0/sriov_numvfs 112 113Bind the CPT VF device to the vfio_pci driver: 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 * For CN98xx SoC, it is recommended to use even and odd DBDF VFs to achieve 124 higher performance as even VF uses one crypto engine and odd one uses 125 another crypto engine. 126 127 * Ensure that sufficient huge pages are available for your application:: 128 129 dpdk-hugepages.py --setup 4G --pagesize 512M 130 131 Refer to :ref:`linux_gsg_hugepages` for more details. 132 133``CN10K Initialization`` 134 135List the CPT PF devices available on cn10k platform: 136 137.. code-block:: console 138 139 lspci -d:a0f2 140 141``a0f2`` is the CPT PF device id. You should see output similar to: 142 143.. code-block:: console 144 145 0002:20:00.0 Class 1080: Device 177d:a0f2 146 147Set ``sriov_numvfs`` on the CPT PF device, to create a VF: 148 149.. code-block:: console 150 151 echo 1 > /sys/bus/pci/devices/0002:20:00.0/sriov_numvfs 152 153Bind the CPT VF device to the vfio_pci driver: 154 155.. code-block:: console 156 157 cd <dpdk directory> 158 ./usertools/dpdk-devbind.py -u 0002:20:00.1 159 ./usertools/dpdk-devbind.py -b vfio-pci 0002:20:00.1 160 161Debugging Options 162----------------- 163 164.. _table_octeon_cnxk_crypto_debug_options: 165 166.. table:: OCTEON cnxk crypto PMD debug options 167 168 +---+------------+-------------------------------------------------------+ 169 | # | Component | EAL log command | 170 +===+============+=======================================================+ 171 | 1 | CPT | --log-level='pmd\.crypto\.cnxk,8' | 172 +---+------------+-------------------------------------------------------+ 173 174Testing 175------- 176 177The symmetric crypto operations on OCTEON cnxk crypto PMD may be verified by 178running the test application: 179 180``CN9K`` 181 182.. code-block:: console 183 184 ./dpdk-test 185 RTE>>cryptodev_cn9k_autotest 186 187``CN10K`` 188 189.. code-block:: console 190 191 ./dpdk-test 192 RTE>>cryptodev_cn10k_autotest 193 194The asymmetric crypto operations on OCTEON cnxk crypto PMD may be verified by 195running the test application: 196 197``CN9K`` 198 199.. code-block:: console 200 201 ./dpdk-test 202 RTE>>cryptodev_cn9k_asym_autotest 203 204``CN10K`` 205 206.. code-block:: console 207 208 ./dpdk-test 209 RTE>>cryptodev_cn10k_asym_autotest 210 211Lookaside IPsec Support 212----------------------- 213 214The OCTEON cnxk SoCs can accelerate IPsec traffic in lookaside protocol mode, 215with its **cryptographic accelerator (CPT)**. ``OCTEON cnxk crypto PMD`` implements 216this as an ``RTE_SECURITY_ACTION_TYPE_LOOKASIDE_PROTOCOL`` offload. 217 218Refer to :doc:`../prog_guide/rte_security` for more details on protocol offloads. 219 220This feature can be tested with ipsec-secgw sample application. 221 222Supported OCTEON cnxk SoCs 223~~~~~~~~~~~~~~~~~~~~~~~~~~ 224 225- CN9XX 226- CN10XX 227 228CN9XX Features supported 229~~~~~~~~~~~~~~~~~~~~~~~~ 230 231* IPv4 232* ESP 233* Tunnel mode 234* UDP Encapsulation 235* AES-128/192/256-GCM 236 237CN10XX Features supported 238~~~~~~~~~~~~~~~~~~~~~~~~~ 239 240* IPv4 241* ESP 242* Tunnel mode 243* Transport mode 244* UDP Encapsulation 245* AES-128/192/256-GCM 246* AES-128/192/256-CBC-SHA1-HMAC 247 248Limitations 249----------- 250 251Multiple lcores may not operate on the same crypto queue pair. The lcore that 252enqueues to a queue pair is the one that must dequeue from it. 253