1dddfb0d9SAndrew Boyer /* SPDX-License-Identifier: BSD-3-Clause
2dddfb0d9SAndrew Boyer * Copyright 2021-2024 Advanced Micro Devices, Inc.
3dddfb0d9SAndrew Boyer */
4dddfb0d9SAndrew Boyer
5dddfb0d9SAndrew Boyer #include <rte_cryptodev.h>
6dddfb0d9SAndrew Boyer
7dddfb0d9SAndrew Boyer #include "ionic_crypto.h"
8dddfb0d9SAndrew Boyer
9dddfb0d9SAndrew Boyer static const struct rte_cryptodev_capabilities iocpt_sym_caps[] = {
10*80518852SAndrew Boyer { /* AES GCM */
11*80518852SAndrew Boyer .op = RTE_CRYPTO_OP_TYPE_SYMMETRIC,
12*80518852SAndrew Boyer {.sym = {
13*80518852SAndrew Boyer .xform_type = RTE_CRYPTO_SYM_XFORM_AEAD,
14*80518852SAndrew Boyer {.aead = {
15*80518852SAndrew Boyer .algo = RTE_CRYPTO_AEAD_AES_GCM,
16*80518852SAndrew Boyer .block_size = 16,
17*80518852SAndrew Boyer .key_size = {
18*80518852SAndrew Boyer .min = 16,
19*80518852SAndrew Boyer .max = 32,
20*80518852SAndrew Boyer .increment = 16
21*80518852SAndrew Boyer },
22*80518852SAndrew Boyer .digest_size = {
23*80518852SAndrew Boyer .min = 16,
24*80518852SAndrew Boyer .max = 16,
25*80518852SAndrew Boyer .increment = 0
26*80518852SAndrew Boyer },
27*80518852SAndrew Boyer .aad_size = {
28*80518852SAndrew Boyer .min = 0,
29*80518852SAndrew Boyer .max = 1024,
30*80518852SAndrew Boyer .increment = 1
31*80518852SAndrew Boyer },
32*80518852SAndrew Boyer .iv_size = {
33*80518852SAndrew Boyer .min = 12,
34*80518852SAndrew Boyer .max = 12,
35*80518852SAndrew Boyer .increment = 0
36*80518852SAndrew Boyer }
37*80518852SAndrew Boyer }, }
38*80518852SAndrew Boyer }, }
39*80518852SAndrew Boyer },
40dddfb0d9SAndrew Boyer RTE_CRYPTODEV_END_OF_CAPABILITIES_LIST()
41dddfb0d9SAndrew Boyer };
42dddfb0d9SAndrew Boyer
43dddfb0d9SAndrew Boyer static const struct rte_cryptodev_capabilities iocpt_asym_caps[] = {
44dddfb0d9SAndrew Boyer /* None */
45dddfb0d9SAndrew Boyer RTE_CRYPTODEV_END_OF_CAPABILITIES_LIST()
46dddfb0d9SAndrew Boyer };
47dddfb0d9SAndrew Boyer
48dddfb0d9SAndrew Boyer const struct rte_cryptodev_capabilities *
iocpt_get_caps(uint64_t flags)49dddfb0d9SAndrew Boyer iocpt_get_caps(uint64_t flags)
50dddfb0d9SAndrew Boyer {
51dddfb0d9SAndrew Boyer if (flags & RTE_CRYPTODEV_FF_ASYMMETRIC_CRYPTO)
52dddfb0d9SAndrew Boyer return iocpt_asym_caps;
53dddfb0d9SAndrew Boyer else
54dddfb0d9SAndrew Boyer return iocpt_sym_caps;
55dddfb0d9SAndrew Boyer }
56