xref: /dpdk/doc/guides/cryptodevs/octeontx.rst (revision 33bcaae5f85ad805ee287bee42013e61a1cff6fa)
19c4491cfSAnoob Joseph.. SPDX-License-Identifier: BSD-3-Clause
29c4491cfSAnoob Joseph   Copyright(c) 2018 Cavium, Inc
39c4491cfSAnoob Joseph
49c4491cfSAnoob JosephCavium OCTEON TX Crypto Poll Mode Driver
59c4491cfSAnoob Joseph========================================
69c4491cfSAnoob Joseph
79c4491cfSAnoob JosephThe OCTEON TX crypto poll mode driver provides support for offloading
89c4491cfSAnoob Josephcryptographic operations to cryptographic accelerator units on
99c4491cfSAnoob Joseph**OCTEON TX** :sup:`®` family of processors (CN8XXX). The OCTEON TX crypto
109c4491cfSAnoob Josephpoll mode driver enqueues the crypto request to this accelerator and dequeues
119c4491cfSAnoob Josephthe response once the operation is completed.
129c4491cfSAnoob Joseph
13*33bcaae5SKanaka Durga KotamarthySupported Symmetric Crypto Algorithms
14*33bcaae5SKanaka Durga Kotamarthy-------------------------------------
159c4491cfSAnoob Joseph
169c4491cfSAnoob JosephCipher Algorithms
179c4491cfSAnoob Joseph~~~~~~~~~~~~~~~~~
189c4491cfSAnoob Joseph
199c4491cfSAnoob Joseph* ``RTE_CRYPTO_CIPHER_NULL``
209c4491cfSAnoob Joseph* ``RTE_CRYPTO_CIPHER_3DES_CBC``
219c4491cfSAnoob Joseph* ``RTE_CRYPTO_CIPHER_3DES_ECB``
229c4491cfSAnoob Joseph* ``RTE_CRYPTO_CIPHER_AES_CBC``
239c4491cfSAnoob Joseph* ``RTE_CRYPTO_CIPHER_AES_CTR``
249c4491cfSAnoob Joseph* ``RTE_CRYPTO_CIPHER_AES_XTS``
259c4491cfSAnoob Joseph* ``RTE_CRYPTO_CIPHER_DES_CBC``
269c4491cfSAnoob Joseph* ``RTE_CRYPTO_CIPHER_KASUMI_F8``
279c4491cfSAnoob Joseph* ``RTE_CRYPTO_CIPHER_SNOW3G_UEA2``
289c4491cfSAnoob Joseph* ``RTE_CRYPTO_CIPHER_ZUC_EEA3``
299c4491cfSAnoob Joseph
309c4491cfSAnoob JosephHash Algorithms
319c4491cfSAnoob Joseph~~~~~~~~~~~~~~~
329c4491cfSAnoob Joseph
339c4491cfSAnoob Joseph* ``RTE_CRYPTO_AUTH_NULL``
349c4491cfSAnoob Joseph* ``RTE_CRYPTO_AUTH_AES_GMAC``
359c4491cfSAnoob Joseph* ``RTE_CRYPTO_AUTH_KASUMI_F9``
369c4491cfSAnoob Joseph* ``RTE_CRYPTO_AUTH_MD5``
379c4491cfSAnoob Joseph* ``RTE_CRYPTO_AUTH_MD5_HMAC``
389c4491cfSAnoob Joseph* ``RTE_CRYPTO_AUTH_SHA1``
399c4491cfSAnoob Joseph* ``RTE_CRYPTO_AUTH_SHA1_HMAC``
409c4491cfSAnoob Joseph* ``RTE_CRYPTO_AUTH_SHA224``
419c4491cfSAnoob Joseph* ``RTE_CRYPTO_AUTH_SHA224_HMAC``
429c4491cfSAnoob Joseph* ``RTE_CRYPTO_AUTH_SHA256``
439c4491cfSAnoob Joseph* ``RTE_CRYPTO_AUTH_SHA256_HMAC``
449c4491cfSAnoob Joseph* ``RTE_CRYPTO_AUTH_SHA384``
459c4491cfSAnoob Joseph* ``RTE_CRYPTO_AUTH_SHA384_HMAC``
469c4491cfSAnoob Joseph* ``RTE_CRYPTO_AUTH_SHA512``
479c4491cfSAnoob Joseph* ``RTE_CRYPTO_AUTH_SHA512_HMAC``
489c4491cfSAnoob Joseph* ``RTE_CRYPTO_AUTH_SNOW3G_UIA2``
499c4491cfSAnoob Joseph* ``RTE_CRYPTO_AUTH_ZUC_EIA3``
509c4491cfSAnoob Joseph
519c4491cfSAnoob JosephAEAD Algorithms
529c4491cfSAnoob Joseph~~~~~~~~~~~~~~~
539c4491cfSAnoob Joseph
549c4491cfSAnoob Joseph* ``RTE_CRYPTO_AEAD_AES_GCM``
559c4491cfSAnoob Joseph
56*33bcaae5SKanaka Durga KotamarthySupported Asymmetric Crypto Algorithms
57*33bcaae5SKanaka Durga Kotamarthy--------------------------------------
58*33bcaae5SKanaka Durga Kotamarthy
59*33bcaae5SKanaka Durga Kotamarthy* ``RTE_CRYPTO_ASYM_XFORM_RSA``
60*33bcaae5SKanaka Durga Kotamarthy* ``RTE_CRYPTO_ASYM_XFORM_MODEX``
61*33bcaae5SKanaka Durga Kotamarthy
62474fd349SAnoob JosephConfig flags
63474fd349SAnoob Joseph------------
649c4491cfSAnoob Joseph
659c4491cfSAnoob JosephFor compiling the OCTEON TX crypto poll mode driver, please check if the
669c4491cfSAnoob JosephCONFIG_RTE_LIBRTE_PMD_OCTEONTX_CRYPTO setting is set to `y` in
679c4491cfSAnoob Josephconfig/common_base file.
689c4491cfSAnoob Joseph
699c4491cfSAnoob Joseph* ``CONFIG_RTE_LIBRTE_PMD_OCTEONTX_CRYPTO=y``
709c4491cfSAnoob Joseph
71474fd349SAnoob JosephCompilation
72474fd349SAnoob Joseph-----------
739c4491cfSAnoob Joseph
74474fd349SAnoob JosephThe OCTEON TX crypto poll mode driver can be compiled either natively on
75474fd349SAnoob Joseph**OCTEON TX** :sup:`®` board or cross-compiled on an x86 based platform.
769c4491cfSAnoob Joseph
77474fd349SAnoob JosephRefer :doc:`../platform/octeontx` for details about setting up the platform
78474fd349SAnoob Josephand building DPDK applications.
799c4491cfSAnoob Joseph
80474fd349SAnoob Joseph.. note::
819c4491cfSAnoob Joseph
82474fd349SAnoob Joseph   OCTEON TX crypto PF driver needs microcode to be available at `/lib/firmware/` directory.
83474fd349SAnoob Joseph   Refer SDK documents for further information.
849c4491cfSAnoob Joseph
85474fd349SAnoob JosephSDK and related information can be obtained from: `Cavium support site <https://support.cavium.com/>`_.
869c4491cfSAnoob Joseph
879c4491cfSAnoob JosephExecution
889c4491cfSAnoob Joseph---------
899c4491cfSAnoob Joseph
909c4491cfSAnoob JosephThe number of crypto VFs to be enabled can be controlled by setting sysfs entry,
919c4491cfSAnoob Joseph`sriov_numvfs`, for the corresponding PF driver.
929c4491cfSAnoob Joseph
939c4491cfSAnoob Joseph.. code-block:: console
949c4491cfSAnoob Joseph
959c4491cfSAnoob Joseph        echo <num_vfs> > /sys/bus/pci/devices/<dev_bus_id>/sriov_numvfs
969c4491cfSAnoob Joseph
979c4491cfSAnoob JosephThe device bus ID, `dev_bus_id`, to be used in the above step can be found out
989c4491cfSAnoob Josephby using dpdk-devbind.py script. The OCTEON TX crypto PF device need to be
999c4491cfSAnoob Josephidentified and the corresponding device number can be used to tune various PF
1009c4491cfSAnoob Josephproperties.
1019c4491cfSAnoob Joseph
1029c4491cfSAnoob Joseph
1039c4491cfSAnoob JosephOnce the required VFs are enabled, dpdk-devbind.py script can be used to
1049c4491cfSAnoob Josephidentify the VFs. To be accessible from DPDK, VFs need to be bound to vfio-pci
1059c4491cfSAnoob Josephdriver:
1069c4491cfSAnoob Joseph
1079c4491cfSAnoob Joseph.. code-block:: console
1089c4491cfSAnoob Joseph
1099c4491cfSAnoob Joseph        cd <dpdk directory>
1109c4491cfSAnoob Joseph        ./usertools/dpdk-devbind.py -u <vf device no>
1119c4491cfSAnoob Joseph        ./usertools/dpdk-devbind.py -b vfio-pci <vf device no>
1129c4491cfSAnoob Joseph
1139c4491cfSAnoob JosephAppropriate huge page need to be setup in order to run the DPDK example
1149c4491cfSAnoob Josephapplications.
1159c4491cfSAnoob Joseph
1169c4491cfSAnoob Joseph.. code-block:: console
1179c4491cfSAnoob Joseph
1189c4491cfSAnoob Joseph        echo 8 > /sys/kernel/mm/hugepages/hugepages-524288kB/nr_hugepages
1199c4491cfSAnoob Joseph        mkdir /mnt/huge
1209c4491cfSAnoob Joseph        mount -t hugetlbfs nodev /mnt/huge
1219c4491cfSAnoob Joseph
1229c4491cfSAnoob JosephExample applications can now be executed with crypto operations offloaded to
1239c4491cfSAnoob JosephOCTEON TX crypto PMD.
1249c4491cfSAnoob Joseph
1259c4491cfSAnoob Joseph.. code-block:: console
1269c4491cfSAnoob Joseph
1279c4491cfSAnoob Joseph        ./build/ipsec-secgw --log-level=8 -c 0xff -- -P -p 0x3 -u 0x2 --config
1289c4491cfSAnoob Joseph        "(1,0,0),(0,0,0)" -f ep1.cfg
129