xref: /dpdk/drivers/crypto/uadk/uadk_crypto_pmd_private.h (revision 2b843cac232eb3f2fa79e4254e21766817e2019f)
18c515d96SZhangfei Gao /* SPDX-License-Identifier: BSD-3-Clause
28c515d96SZhangfei Gao  * Copyright 2022-2023 Huawei Technologies Co.,Ltd. All rights reserved.
38c515d96SZhangfei Gao  * Copyright 2022-2023 Linaro ltd.
48c515d96SZhangfei Gao  */
58c515d96SZhangfei Gao 
68c515d96SZhangfei Gao #ifndef _UADK_CRYPTO_PMD_PRIVATE_H_
78c515d96SZhangfei Gao #define _UADK_CRYPTO_PMD_PRIVATE_H_
88c515d96SZhangfei Gao 
953ae1393SZhangfei Gao /* Maximum length for digest (SHA-512 needs 64 bytes) */
1053ae1393SZhangfei Gao #define DIGEST_LENGTH_MAX 64
1153ae1393SZhangfei Gao 
1227595cd8STyler Retzlaff struct __rte_cache_aligned uadk_qp {
1353ae1393SZhangfei Gao 	/* Ring for placing process packets */
1453ae1393SZhangfei Gao 	struct rte_ring *processed_pkts;
1553ae1393SZhangfei Gao 	/* Queue pair statistics */
1653ae1393SZhangfei Gao 	struct rte_cryptodev_stats qp_stats;
1753ae1393SZhangfei Gao 	/* Queue Pair Identifier */
1853ae1393SZhangfei Gao 	uint16_t id;
1953ae1393SZhangfei Gao 	/* Unique Queue Pair Name */
2053ae1393SZhangfei Gao 	char name[RTE_CRYPTODEV_NAME_MAX_LEN];
2153ae1393SZhangfei Gao 	/* Buffer used to store the digest generated
2253ae1393SZhangfei Gao 	 * by the driver when verifying a digest provided
2353ae1393SZhangfei Gao 	 * by the user (using authentication verify operation)
2453ae1393SZhangfei Gao 	 */
2553ae1393SZhangfei Gao 	uint8_t temp_digest[DIGEST_LENGTH_MAX];
2627595cd8STyler Retzlaff };
2753ae1393SZhangfei Gao 
283b3cd89eSZhangfei Gao enum uadk_chain_order {
293b3cd89eSZhangfei Gao 	UADK_CHAIN_ONLY_CIPHER,
30ec23c286SZhangfei Gao 	UADK_CHAIN_ONLY_AUTH,
31ec23c286SZhangfei Gao 	UADK_CHAIN_CIPHER_AUTH,
32ec23c286SZhangfei Gao 	UADK_CHAIN_AUTH_CIPHER,
333b3cd89eSZhangfei Gao 	UADK_CHAIN_NOT_SUPPORTED
343b3cd89eSZhangfei Gao };
353b3cd89eSZhangfei Gao 
3627595cd8STyler Retzlaff struct __rte_cache_aligned uadk_crypto_session {
373b3cd89eSZhangfei Gao 	handle_t handle_cipher;
38ec23c286SZhangfei Gao 	handle_t handle_digest;
393b3cd89eSZhangfei Gao 	enum uadk_chain_order chain_order;
403b3cd89eSZhangfei Gao 
413b3cd89eSZhangfei Gao 	/* IV parameters */
423b3cd89eSZhangfei Gao 	struct {
433b3cd89eSZhangfei Gao 		uint16_t length;
443b3cd89eSZhangfei Gao 		uint16_t offset;
453b3cd89eSZhangfei Gao 	} iv;
463b3cd89eSZhangfei Gao 
473b3cd89eSZhangfei Gao 	/* Cipher Parameters */
483b3cd89eSZhangfei Gao 	struct {
493b3cd89eSZhangfei Gao 		enum rte_crypto_cipher_operation direction;
503b3cd89eSZhangfei Gao 		struct wd_cipher_req req;
513b3cd89eSZhangfei Gao 	} cipher;
52ec23c286SZhangfei Gao 
53ec23c286SZhangfei Gao 	/* Authentication Parameters */
54ec23c286SZhangfei Gao 	struct {
55ec23c286SZhangfei Gao 		struct wd_digest_req req;
56ec23c286SZhangfei Gao 		enum rte_crypto_auth_operation operation;
57ec23c286SZhangfei Gao 		uint16_t digest_length;
58ec23c286SZhangfei Gao 	} auth;
5927595cd8STyler Retzlaff };
603b3cd89eSZhangfei Gao 
618c515d96SZhangfei Gao enum uadk_crypto_version {
628c515d96SZhangfei Gao 	UADK_CRYPTO_V2,
638c515d96SZhangfei Gao 	UADK_CRYPTO_V3,
648c515d96SZhangfei Gao };
658c515d96SZhangfei Gao 
6627595cd8STyler Retzlaff struct __rte_cache_aligned uadk_crypto_priv {
673b3cd89eSZhangfei Gao 	bool env_cipher_init;
68ec23c286SZhangfei Gao 	bool env_auth_init;
698c515d96SZhangfei Gao 	enum uadk_crypto_version version;
70a8ca598cSZhangfei Gao 	unsigned int max_nb_qpairs;
7127595cd8STyler Retzlaff };
728c515d96SZhangfei Gao 
738c515d96SZhangfei Gao extern int uadk_crypto_logtype;
74*2b843cacSDavid Marchand #define RTE_LOGTYPE_UADK_CRYPTO uadk_crypto_logtype
758c515d96SZhangfei Gao 
76*2b843cacSDavid Marchand #define UADK_LOG(level, ...)  \
77*2b843cacSDavid Marchand 	RTE_LOG_LINE_PREFIX(level, UADK_CRYPTO, "%s() line %u: ", \
78*2b843cacSDavid Marchand 		__func__ RTE_LOG_COMMA __LINE__, __VA_ARGS__)
798c515d96SZhangfei Gao 
808c515d96SZhangfei Gao #endif /* _UADK_CRYPTO_PMD_PRIVATE_H_ */
81