xref: /dpdk/doc/guides/cryptodevs/armv8.rst (revision e24b8ad46b2124d09a97d2f9e911ba197b4f83d1)
1..  SPDX-License-Identifier: BSD-3-Clause
2    Copyright(c) 2017 Cavium, Inc
3
4ARMv8 Crypto Poll Mode Driver
5=============================
6
7This code provides the initial implementation of the ARMv8 crypto PMD.
8The driver uses ARMv8 cryptographic extensions to process chained crypto
9operations in an optimized way. The core functionality is provided by
10a low-level library, written in the assembly code.
11
12Features
13--------
14
15ARMv8 Crypto PMD has support for the following algorithm pairs:
16
17Supported cipher algorithms:
18
19* ``RTE_CRYPTO_CIPHER_AES_CBC``
20
21Supported authentication algorithms:
22
23* ``RTE_CRYPTO_AUTH_SHA1_HMAC``
24* ``RTE_CRYPTO_AUTH_SHA256_HMAC``
25
26Installation
27------------
28
29To build DPDK with this virtual crypto PMD, the user is required to:
30
31* Download AArch64 crypto library source code from
32  `here <https://github.com/ARM-software/AArch64cryptolib>`_.
33
34* Build the ``AArch64cryptolib`` library:
35
36.. code-block:: console
37
38   make
39
40* Add path to `libAArch64crypto.pc` in `PKG_CONFIG_PATH` environment variable:
41
42.. code-block:: console
43
44   export PKG_CONFIG_PATH=<path_to_AArch64cryptolib>/pkgconfig/:$PKG_CONFIG_PATH
45
46* Build DPDK:
47
48.. code-block:: console
49
50   meson setup build
51   ninja -C build
52
53The corresponding device can be created only if the following features
54are supported by the CPU:
55
56* ``RTE_CPUFLAG_AES``
57* ``RTE_CPUFLAG_SHA1``
58* ``RTE_CPUFLAG_SHA2``
59* ``RTE_CPUFLAG_NEON``
60
61Initialization
62--------------
63
64Use ``--vdev "crypto_armv8"`` in the EAL options to create virtual crypto device.
65
66User can use app/test application to check how to use this PMD and to verify
67crypto processing.
68
69Test name is cryptodev_sw_armv8_autotest.
70
71Limitations
72-----------
73
74* Maximum number of sessions is 2048.
75* Only chained operations are supported.
76* AES-128-CBC is the only supported cipher variant.
77* Cipher input data has to be a multiple of 16 bytes.
78* Digest input data has to be a multiple of 8 bytes.
79