xref: /dpdk/drivers/crypto/ionic/ionic_crypto_caps.c (revision 80518852e2f52bbe27b5763fb05031caf8da4788)
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