New upstream version 18.02
[deb_dpdk.git] / doc / guides / cryptodevs / armv8.rst
1 ..  SPDX-License-Identifier: BSD-3-Clause
2     Copyright(c) 2017 Cavium, Inc
3
4 ARMv8 Crypto Poll Mode Driver
5 =============================
6
7 This code provides the initial implementation of the ARMv8 crypto PMD.
8 The driver uses ARMv8 cryptographic extensions to process chained crypto
9 operations in an optimized way. The core functionality is provided by
10 a low-level library, written in the assembly code.
11
12 Features
13 --------
14
15 ARMv8 Crypto PMD has support for the following algorithm pairs:
16
17 Supported cipher algorithms:
18
19 * ``RTE_CRYPTO_CIPHER_AES_CBC``
20
21 Supported authentication algorithms:
22
23 * ``RTE_CRYPTO_AUTH_SHA1_HMAC``
24 * ``RTE_CRYPTO_AUTH_SHA256_HMAC``
25
26 Installation
27 ------------
28
29 In order to enable this virtual crypto PMD, user must:
30
31 * Download ARMv8 crypto library source code from
32   `here <https://github.com/caviumnetworks/armv8_crypto>`_
33
34 * Export the environmental variable ARMV8_CRYPTO_LIB_PATH with
35   the path where the ``armv8_crypto`` library was downloaded
36   or cloned.
37
38 * Build the library by invoking:
39
40 .. code-block:: console
41
42         make -C $ARMV8_CRYPTO_LIB_PATH/
43
44 * Set CONFIG_RTE_LIBRTE_PMD_ARMV8_CRYPTO=y in
45   config/defconfig_arm64-armv8a-linuxapp-gcc
46
47 The corresponding device can be created only if the following features
48 are supported by the CPU:
49
50 * ``RTE_CPUFLAG_AES``
51 * ``RTE_CPUFLAG_SHA1``
52 * ``RTE_CPUFLAG_SHA2``
53 * ``RTE_CPUFLAG_NEON``
54
55 Initialization
56 --------------
57
58 User can use app/test application to check how to use this PMD and to verify
59 crypto processing.
60
61 Test name is cryptodev_sw_armv8_autotest.
62 For performance test cryptodev_sw_armv8_perftest can be used.
63
64 Limitations
65 -----------
66
67 * Maximum number of sessions is 2048.
68 * Only chained operations are supported.
69 * AES-128-CBC is the only supported cipher variant.
70 * Cipher input data has to be a multiple of 16 bytes.
71 * Digest input data has to be a multiple of 8 bytes.