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