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 1333bcaae5SKanaka Durga KotamarthySupported Symmetric Crypto Algorithms 1433bcaae5SKanaka 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 5633bcaae5SKanaka Durga KotamarthySupported Asymmetric Crypto Algorithms 5733bcaae5SKanaka Durga Kotamarthy-------------------------------------- 5833bcaae5SKanaka Durga Kotamarthy 5933bcaae5SKanaka Durga Kotamarthy* ``RTE_CRYPTO_ASYM_XFORM_RSA`` 6033bcaae5SKanaka Durga Kotamarthy* ``RTE_CRYPTO_ASYM_XFORM_MODEX`` 6133bcaae5SKanaka Durga Kotamarthy 629c4491cfSAnoob Joseph 63474fd349SAnoob JosephCompilation 64474fd349SAnoob Joseph----------- 659c4491cfSAnoob Joseph 66474fd349SAnoob JosephThe OCTEON TX crypto poll mode driver can be compiled either natively on 67474fd349SAnoob Joseph**OCTEON TX** :sup:`®` board or cross-compiled on an x86 based platform. 689c4491cfSAnoob Joseph 69474fd349SAnoob JosephRefer :doc:`../platform/octeontx` for details about setting up the platform 70474fd349SAnoob Josephand building DPDK applications. 719c4491cfSAnoob Joseph 72474fd349SAnoob Joseph.. note:: 739c4491cfSAnoob Joseph 74474fd349SAnoob Joseph OCTEON TX crypto PF driver needs microcode to be available at `/lib/firmware/` directory. 75474fd349SAnoob Joseph Refer SDK documents for further information. 769c4491cfSAnoob Joseph 77474fd349SAnoob JosephSDK and related information can be obtained from: `Cavium support site <https://support.cavium.com/>`_. 789c4491cfSAnoob Joseph 799c4491cfSAnoob JosephExecution 809c4491cfSAnoob Joseph--------- 819c4491cfSAnoob Joseph 829c4491cfSAnoob JosephThe number of crypto VFs to be enabled can be controlled by setting sysfs entry, 839c4491cfSAnoob Joseph`sriov_numvfs`, for the corresponding PF driver. 849c4491cfSAnoob Joseph 859c4491cfSAnoob Joseph.. code-block:: console 869c4491cfSAnoob Joseph 879c4491cfSAnoob Joseph echo <num_vfs> > /sys/bus/pci/devices/<dev_bus_id>/sriov_numvfs 889c4491cfSAnoob Joseph 899c4491cfSAnoob JosephThe device bus ID, `dev_bus_id`, to be used in the above step can be found out 909c4491cfSAnoob Josephby using dpdk-devbind.py script. The OCTEON TX crypto PF device need to be 919c4491cfSAnoob Josephidentified and the corresponding device number can be used to tune various PF 929c4491cfSAnoob Josephproperties. 939c4491cfSAnoob Joseph 949c4491cfSAnoob Joseph 959c4491cfSAnoob JosephOnce the required VFs are enabled, dpdk-devbind.py script can be used to 969c4491cfSAnoob Josephidentify the VFs. To be accessible from DPDK, VFs need to be bound to vfio-pci 979c4491cfSAnoob Josephdriver: 989c4491cfSAnoob Joseph 999c4491cfSAnoob Joseph.. code-block:: console 1009c4491cfSAnoob Joseph 1019c4491cfSAnoob Joseph cd <dpdk directory> 1029c4491cfSAnoob Joseph ./usertools/dpdk-devbind.py -u <vf device no> 1039c4491cfSAnoob Joseph ./usertools/dpdk-devbind.py -b vfio-pci <vf device no> 1049c4491cfSAnoob Joseph 1059c4491cfSAnoob JosephAppropriate huge page need to be setup in order to run the DPDK example 1069c4491cfSAnoob Josephapplications. 1079c4491cfSAnoob Joseph 1089c4491cfSAnoob Joseph.. code-block:: console 1099c4491cfSAnoob Joseph 110*de34aaa9SThomas Monjalon dpdk-hugepages.py --setup 4G --pagesize 512M 1119c4491cfSAnoob Joseph 1129c4491cfSAnoob JosephExample applications can now be executed with crypto operations offloaded to 1139c4491cfSAnoob JosephOCTEON TX crypto PMD. 1149c4491cfSAnoob Joseph 1159c4491cfSAnoob Joseph.. code-block:: console 1169c4491cfSAnoob Joseph 1179c4491cfSAnoob Joseph ./build/ipsec-secgw --log-level=8 -c 0xff -- -P -p 0x3 -u 0x2 --config 1189c4491cfSAnoob Joseph "(1,0,0),(0,0,0)" -f ep1.cfg 11988d664aaSSunila Sahu 12088d664aaSSunila SahuTesting 12188d664aaSSunila Sahu------- 12288d664aaSSunila Sahu 12388d664aaSSunila SahuThe symmetric crypto operations on OCTEON TX crypto PMD may be verified by running the test 12488d664aaSSunila Sahuapplication: 12588d664aaSSunila Sahu 12688d664aaSSunila Sahu.. code-block:: console 12788d664aaSSunila Sahu 128fd5f9fb9SCiara Power ./dpdk-test 12988d664aaSSunila Sahu RTE>>cryptodev_octeontx_autotest 13088d664aaSSunila Sahu 13188d664aaSSunila SahuThe asymmetric crypto operations on OCTEON TX crypto PMD may be verified by running the test 13288d664aaSSunila Sahuapplication: 13388d664aaSSunila Sahu 13488d664aaSSunila Sahu.. code-block:: console 13588d664aaSSunila Sahu 136fd5f9fb9SCiara Power ./dpdk-test 13788d664aaSSunila Sahu RTE>>cryptodev_octeontx_asym_autotest 138