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