xref: /dpdk/doc/guides/cryptodevs/ccp.rst (revision 33f32941ee509f3b66c0c51c44a0288b9c4eec5b)
14433ced9SRavi Kumar.. SPDX-License-Identifier: BSD-3-Clause
24433ced9SRavi Kumar   Copyright(c) 2018 Advanced Micro Devices, Inc. All rights reserved.
34433ced9SRavi Kumar
44433ced9SRavi KumarAMD CCP Poll Mode Driver
54433ced9SRavi Kumar========================
64433ced9SRavi Kumar
74433ced9SRavi KumarThis code provides the initial implementation of the ccp poll mode driver.
88809f78cSBruce RichardsonThe CCP poll mode driver library (**librte_crypto_ccp**) implements support for
94433ced9SRavi KumarAMD’s cryptographic co-processor (CCP). The CCP PMD is a virtual crypto
104433ced9SRavi Kumarpoll mode driver which schedules crypto operations to one or more available
114433ced9SRavi KumarCCP hardware engines on the platform. The CCP PMD provides poll mode crypto
124433ced9SRavi Kumardriver support for the following hardware accelerator devices::
134433ced9SRavi Kumar
144433ced9SRavi Kumar	AMD Cryptographic Co-processor (0x1456)
154433ced9SRavi Kumar	AMD Cryptographic Co-processor (0x1468)
164433ced9SRavi Kumar
174433ced9SRavi KumarFeatures
184433ced9SRavi Kumar--------
194433ced9SRavi Kumar
204433ced9SRavi KumarCCP crypto PMD has support for:
214433ced9SRavi Kumar
224433ced9SRavi KumarCipher algorithms:
234433ced9SRavi Kumar
244433ced9SRavi Kumar* ``RTE_CRYPTO_CIPHER_AES_CBC``
254433ced9SRavi Kumar* ``RTE_CRYPTO_CIPHER_AES_ECB``
264433ced9SRavi Kumar* ``RTE_CRYPTO_CIPHER_AES_CTR``
274433ced9SRavi Kumar* ``RTE_CRYPTO_CIPHER_3DES_CBC``
284433ced9SRavi Kumar
294433ced9SRavi KumarHash algorithms:
304433ced9SRavi Kumar
314433ced9SRavi Kumar* ``RTE_CRYPTO_AUTH_SHA1``
324433ced9SRavi Kumar* ``RTE_CRYPTO_AUTH_SHA1_HMAC``
334433ced9SRavi Kumar* ``RTE_CRYPTO_AUTH_SHA224``
344433ced9SRavi Kumar* ``RTE_CRYPTO_AUTH_SHA224_HMAC``
354433ced9SRavi Kumar* ``RTE_CRYPTO_AUTH_SHA256``
364433ced9SRavi Kumar* ``RTE_CRYPTO_AUTH_SHA256_HMAC``
374433ced9SRavi Kumar* ``RTE_CRYPTO_AUTH_SHA384``
384433ced9SRavi Kumar* ``RTE_CRYPTO_AUTH_SHA384_HMAC``
394433ced9SRavi Kumar* ``RTE_CRYPTO_AUTH_SHA512``
404433ced9SRavi Kumar* ``RTE_CRYPTO_AUTH_SHA512_HMAC``
414433ced9SRavi Kumar* ``RTE_CRYPTO_AUTH_MD5_HMAC``
424433ced9SRavi Kumar* ``RTE_CRYPTO_AUTH_AES_CMAC``
434433ced9SRavi Kumar* ``RTE_CRYPTO_AUTH_SHA3_224``
444433ced9SRavi Kumar* ``RTE_CRYPTO_AUTH_SHA3_224_HMAC``
454433ced9SRavi Kumar* ``RTE_CRYPTO_AUTH_SHA3_256``
464433ced9SRavi Kumar* ``RTE_CRYPTO_AUTH_SHA3_256_HMAC``
474433ced9SRavi Kumar* ``RTE_CRYPTO_AUTH_SHA3_384``
484433ced9SRavi Kumar* ``RTE_CRYPTO_AUTH_SHA3_384_HMAC``
494433ced9SRavi Kumar* ``RTE_CRYPTO_AUTH_SHA3_512``
504433ced9SRavi Kumar* ``RTE_CRYPTO_AUTH_SHA3_512_HMAC``
514433ced9SRavi Kumar
524433ced9SRavi KumarAEAD algorithms:
534433ced9SRavi Kumar
544433ced9SRavi Kumar* ``RTE_CRYPTO_AEAD_AES_GCM``
554433ced9SRavi Kumar
564433ced9SRavi KumarInstallation
574433ced9SRavi Kumar------------
584433ced9SRavi Kumar
59fd5f9fb9SCiara PowerTo compile ccp PMD, openssl packages have to be installed in the build
60fd5f9fb9SCiara Powerenvironment.
614433ced9SRavi Kumar
62e0d88a39SRavi KumarFor Ubuntu 16.04 LTS use below to install openssl in the build system:
63e0d88a39SRavi Kumar
64e0d88a39SRavi Kumar.. code-block:: console
65e0d88a39SRavi Kumar
66e0d88a39SRavi Kumar	sudo apt-get install openssl
674433ced9SRavi Kumar
684433ced9SRavi KumarThis code was verified on Ubuntu 16.04.
694433ced9SRavi Kumar
704433ced9SRavi KumarInitialization
714433ced9SRavi Kumar--------------
724433ced9SRavi Kumar
73*33f32941SDavid MarchandBind the CCP devices to ``vfio_pci`` or ``igb_uio`` (see :ref:`linux_gsg_binding_kernel`)
74*33f32941SDavid Marchandbefore running the CCP PMD stack.
754433ced9SRavi Kumar
76e0d88a39SRavi KumarTo use the PMD in an application, user must:
77e0d88a39SRavi Kumar
78e0d88a39SRavi Kumar* Call rte_vdev_init("crypto_ccp") within the application.
79e0d88a39SRavi Kumar
80e0d88a39SRavi Kumar* Use --vdev="crypto_ccp" in the EAL options, which will call rte_vdev_init() internally.
81e0d88a39SRavi Kumar
82e0d88a39SRavi KumarThe following parameters (all optional) can be provided in the previous two calls:
83e0d88a39SRavi Kumar
84e0d88a39SRavi Kumar* socket_id: Specify the socket where the memory for the device is going to be allocated.
85e0d88a39SRavi Kumar  (by default, socket_id will be the socket where the core that is creating the PMD is running on).
86e0d88a39SRavi Kumar
87e0d88a39SRavi Kumar* max_nb_queue_pairs: Specify the maximum number of queue pairs in the device.
88e0d88a39SRavi Kumar
89e0d88a39SRavi Kumar* max_nb_sessions: Specify the maximum number of sessions that can be created (2048 by default).
90e0d88a39SRavi Kumar
91e0d88a39SRavi Kumar* ccp_auth_opt: Specify authentication operations to perform on CPU using openssl APIs.
92e0d88a39SRavi Kumar
9335bd0a5cSSean MorrisseyTo validate ccp PMD, l2fwd-crypto example can be used with following command:
944433ced9SRavi Kumar
954433ced9SRavi Kumar.. code-block:: console
964433ced9SRavi Kumar
97fd5f9fb9SCiara Power        sudo ./<build_dir>/examples/dpdk-l2fwd-crypto -l 1 -n 4 --vdev "crypto_ccp" -- -p 0x1
981151b4aeSAmaranath Somalapuram        --chain CIPHER_HASH --cipher_op ENCRYPT --cipher_algo aes-cbc
994433ced9SRavi Kumar        --cipher_key 00:01:02:03:04:05:06:07:08:09:0a:0b:0c:0d:0e:0f
1001151b4aeSAmaranath Somalapuram        --cipher_iv 00:01:02:03:04:05:06:07:08:09:0a:0b:0c:0d:0e:ff
1011151b4aeSAmaranath Somalapuram        --auth_op GENERATE --auth_algo sha1-hmac
1024433ced9SRavi Kumar        --auth_key 11:11:11:11:11:11:11:11:11:11:11:11:11:11:11:11:11:11:11:11:11:11
1034433ced9SRavi Kumar        :11:11:11:11:11:11:11:11:11:11:11:11:11:11:11:11:11:11:11:11:11:11:11:11:11
1044433ced9SRavi Kumar        :11:11:11:11:11:11:11:11:11:11:11:11:11:11:11:11:11
1054433ced9SRavi Kumar
106e0d88a39SRavi KumarThe CCP PMD also supports computing authentication over CPU with cipher offloaded to CCP.
107e0d88a39SRavi KumarTo enable this feature, pass an additional argument as ccp_auth_opt=1 to --vdev parameters as
108e0d88a39SRavi Kumarfollowing:
109e0d88a39SRavi Kumar
110e0d88a39SRavi Kumar.. code-block:: console
111e0d88a39SRavi Kumar
112fd5f9fb9SCiara Power        sudo ./<build_dir>/examples/dpdk-l2fwd-crypto -l 1 -n 4 --vdev "crypto_ccp,ccp_auth_opt=1" -- -p 0x1
1131151b4aeSAmaranath Somalapuram        --chain CIPHER_HASH --cipher_op ENCRYPT --cipher_algo aes-cbc
114e0d88a39SRavi Kumar        --cipher_key 00:01:02:03:04:05:06:07:08:09:0a:0b:0c:0d:0e:0f
1151151b4aeSAmaranath Somalapuram        --cipher_iv 00:01:02:03:04:05:06:07:08:09:0a:0b:0c:0d:0e:ff
1161151b4aeSAmaranath Somalapuram        --auth_op GENERATE --auth_algo sha1-hmac
117e0d88a39SRavi Kumar        --auth_key 11:11:11:11:11:11:11:11:11:11:11:11:11:11:11:11:11:11:11:11:11:11
118e0d88a39SRavi Kumar        :11:11:11:11:11:11:11:11:11:11:11:11:11:11:11:11:11:11:11:11:11:11:11:11:11
119e0d88a39SRavi Kumar        :11:11:11:11:11:11:11:11:11:11:11:11:11:11:11:11:11
120e0d88a39SRavi Kumar
1214433ced9SRavi KumarLimitations
1224433ced9SRavi Kumar-----------
1234433ced9SRavi Kumar
124e0d88a39SRavi Kumar* Chained mbufs are not supported.
125e0d88a39SRavi Kumar* MD5_HMAC is supported only for CPU based authentication.
126