ethdev: make flow API thread safe
[dpdk.git] / doc / guides / cryptodevs / bcmfs.rst
1 ..  SPDX-License-Identifier: BSD-3-Clause
2     Copyright(C) 2020 Broadcom
3
4 Broadcom FlexSparc Crypto Poll Mode Driver
5 ==========================================
6
7 The FlexSparc crypto poll mode driver (BCMFS PMD) provides support for offloading
8 cryptographic operations to the Broadcom SoCs having FlexSparc4/FlexSparc5 unit.
9 Detailed information about SoCs can be found at `Broadcom Official Website
10 <https://www.broadcom.com/products/ethernet-connectivity/network-adapters/smartnic>`__.
11
12 Supported Broadcom SoCs
13 -----------------------
14
15 * Stingray
16 * Stingray2
17
18 Features
19 --------
20
21 The BCMFS SYM PMD has support for:
22
23 Cipher algorithms:
24
25 * ``RTE_CRYPTO_CIPHER_3DES_CBC``
26 * ``RTE_CRYPTO_CIPHER_3DES_CTR``
27 * ``RTE_CRYPTO_CIPHER_AES128_CBC``
28 * ``RTE_CRYPTO_CIPHER_AES192_CBC``
29 * ``RTE_CRYPTO_CIPHER_AES256_CBC``
30 * ``RTE_CRYPTO_CIPHER_AES128_CTR``
31 * ``RTE_CRYPTO_CIPHER_AES192_CTR``
32 * ``RTE_CRYPTO_CIPHER_AES256_CTR``
33 * ``RTE_CRYPTO_CIPHER_AES_XTS``
34 * ``RTE_CRYPTO_CIPHER_DES_CBC``
35
36 Hash algorithms:
37
38 * ``RTE_CRYPTO_AUTH_SHA1``
39 * ``RTE_CRYPTO_AUTH_SHA1_HMAC``
40 * ``RTE_CRYPTO_AUTH_SHA224``
41 * ``RTE_CRYPTO_AUTH_SHA224_HMAC``
42 * ``RTE_CRYPTO_AUTH_SHA256``
43 * ``RTE_CRYPTO_AUTH_SHA256_HMAC``
44 * ``RTE_CRYPTO_AUTH_SHA384``
45 * ``RTE_CRYPTO_AUTH_SHA384_HMAC``
46 * ``RTE_CRYPTO_AUTH_SHA512``
47 * ``RTE_CRYPTO_AUTH_SHA512_HMAC``
48 * ``RTE_CRYPTO_AUTH_AES_XCBC_MAC``
49 * ``RTE_CRYPTO_AUTH_AES_CBC_MAC``
50 * ``RTE_CRYPTO_AUTH_MD5_HMAC``
51 * ``RTE_CRYPTO_AUTH_AES_GMAC``
52 * ``RTE_CRYPTO_AUTH_AES_CMAC``
53
54 Supported AEAD algorithms:
55
56 * ``RTE_CRYPTO_AEAD_AES_GCM``
57 * ``RTE_CRYPTO_AEAD_AES_CCM``
58
59 Installation
60 ------------
61 Information about kernel, rootfs and toolchain can be found at
62 `Broadcom Official Website <https://www.broadcom.com/products/ethernet-connectivity
63 /network-adapters/smartnic/stingray-software>`__.
64
65     .. Note::
66         To execute BCMFS PMD, it must be compiled with VFIO_PRESENT flag on the
67         compiling platform and same gets enabled in rte_vfio.h.
68
69 The BCMFS crypto PMD may be compiled natively on a Stingray/Stingray2 platform or
70 cross-compiled on an x86 platform. For example, below commands can be executed
71 for cross compiling on x86 platform.
72
73 .. code-block:: console
74
75     cd <DPDK-source-directory>
76     meson <dest-dir> --cross-file config/arm/arm64_stingray_linux_gcc
77     cd <dest-dir>
78     ninja
79
80 Initialization
81 --------------
82 The supported platform devices should be present in the
83 */sys/bus/platform/devices/fs<version>/<dev_name>* path on the booted kernel.
84 To get BCMFS PMD executing, device node must be owned by VFIO platform module only.
85 For example, below commands can be run to get hold of a device node by VFIO.
86
87 .. code-block:: console
88
89     SETUP_SYSFS_DEV_NAME=67000000.crypto_mbox
90     io_device_name="vfio-platform"
91     echo $io_device_name > /sys/bus/platform/devices/${SETUP_SYSFS_DEV_NAME}/driver_override
92     echo ${SETUP_SYSFS_DEV_NAME} > /sys/bus/platform/drivers_probe
93
94 Limitations
95 -----------
96
97 * Only supports the session-oriented API implementation (session-less APIs are not supported).
98 * CCM is not supported on Broadcom`s SoCs having FlexSparc4 unit.
99
100 Testing
101 -------
102
103 The symmetric crypto operations on BCMFS crypto PMD may be verified by running the test
104 application:
105
106 .. code-block:: console
107
108     ./dpdk-test
109     RTE>>cryptodev_bcmfs_autotest