1 /* SPDX-License-Identifier: BSD-3-Clause
2 * Copyright (c) 2021 NVIDIA Corporation & Affiliates
10 #include <rte_cryptodev.h>
11 #include <rte_cryptodev_pmd.h>
13 #include <mlx5_common_utils.h>
15 #define MLX5_CRYPTO_DEK_HTABLE_SZ (1 << 11)
16 #define MLX5_CRYPTO_KEY_LENGTH 80
18 struct mlx5_crypto_priv {
19 TAILQ_ENTRY(mlx5_crypto_priv) next;
20 struct ibv_context *ctx; /* Device context. */
21 struct rte_pci_device *pci_dev;
22 struct rte_cryptodev *crypto_dev;
23 void *uar; /* User Access Region. */
24 uint32_t pdn; /* Protection Domain number. */
26 struct mlx5_hlist *dek_hlist; /* Dek hash list. */
27 struct rte_cryptodev_config dev_config;
30 struct mlx5_crypto_dek {
31 struct mlx5_list_entry entry; /* Pointer to DEK hash list entry. */
32 struct mlx5_devx_obj *obj; /* Pointer to DEK DevX object. */
33 uint8_t data[MLX5_CRYPTO_KEY_LENGTH]; /* DEK key data. */
34 bool size_is_48; /* Whether the key\data size is 48 bytes or not. */
35 } __rte_cache_aligned;
38 mlx5_crypto_dek_destroy(struct mlx5_crypto_priv *priv,
39 struct mlx5_crypto_dek *dek);
41 struct mlx5_crypto_dek *
42 mlx5_crypto_dek_prepare(struct mlx5_crypto_priv *priv,
43 struct rte_crypto_cipher_xform *cipher);
46 mlx5_crypto_dek_setup(struct mlx5_crypto_priv *priv);
49 mlx5_crypto_dek_unset(struct mlx5_crypto_priv *priv);
51 #endif /* MLX5_CRYPTO_H_ */