1 /* SPDX-License-Identifier: BSD-3-Clause 2 * Copyright(c) 2016-2018 Intel Corporation 3 */ 4 5 #ifndef _ZUC_PMD_PRIVATE_H_ 6 #define _ZUC_PMD_PRIVATE_H_ 7 8 #include <intel-ipsec-mb.h> 9 10 #define CRYPTODEV_NAME_ZUC_PMD crypto_zuc 11 /**< ZUC PMD device name */ 12 13 /** ZUC PMD LOGTYPE DRIVER */ 14 extern int zuc_logtype_driver; 15 #define ZUC_LOG(level, fmt, ...) \ 16 rte_log(RTE_LOG_ ## level, zuc_logtype_driver, \ 17 "%s()... line %u: " fmt "\n", __func__, __LINE__, \ 18 ## __VA_ARGS__) 19 20 #define ZUC_IV_KEY_LENGTH 16 21 #define ZUC_DIGEST_LENGTH 4 22 23 /** private data structure for each virtual ZUC device */ 24 struct zuc_private { 25 unsigned max_nb_queue_pairs; 26 /**< Max number of queue pairs supported by device */ 27 MB_MGR *mb_mgr; 28 /**< Multi-buffer instance */ 29 }; 30 31 /** ZUC buffer queue pair */ 32 struct zuc_qp { 33 uint16_t id; 34 /**< Queue Pair Identifier */ 35 char name[RTE_CRYPTODEV_NAME_MAX_LEN]; 36 /**< Unique Queue Pair Name */ 37 struct rte_ring *processed_ops; 38 /**< Ring for placing processed ops */ 39 struct rte_mempool *sess_mp; 40 /**< Session Mempool */ 41 struct rte_mempool *sess_mp_priv; 42 /**< Session Private Data Mempool */ 43 struct rte_cryptodev_stats qp_stats; 44 /**< Queue pair statistics */ 45 uint8_t temp_digest[ZUC_DIGEST_LENGTH]; 46 /**< Buffer used to store the digest generated 47 * by the driver when verifying a digest provided 48 * by the user (using authentication verify operation) 49 */ 50 MB_MGR *mb_mgr; 51 /**< Multi-buffer instance */ 52 } __rte_cache_aligned; 53 54 enum zuc_operation { 55 ZUC_OP_ONLY_CIPHER, 56 ZUC_OP_ONLY_AUTH, 57 ZUC_OP_CIPHER_AUTH, 58 ZUC_OP_AUTH_CIPHER, 59 ZUC_OP_NOT_SUPPORTED 60 }; 61 62 /** ZUC private session structure */ 63 struct zuc_session { 64 enum zuc_operation op; 65 enum rte_crypto_auth_operation auth_op; 66 uint8_t pKey_cipher[ZUC_IV_KEY_LENGTH]; 67 uint8_t pKey_hash[ZUC_IV_KEY_LENGTH]; 68 uint16_t cipher_iv_offset; 69 uint16_t auth_iv_offset; 70 } __rte_cache_aligned; 71 72 73 extern int 74 zuc_set_session_parameters(struct zuc_session *sess, 75 const struct rte_crypto_sym_xform *xform); 76 77 78 /** device specific operations function pointer structure */ 79 extern struct rte_cryptodev_ops *rte_zuc_pmd_ops; 80 81 82 83 #endif /* _ZUC_PMD_PRIVATE_H_ */ 84