1b28f28aeSDharmik Thakkar /* SPDX-License-Identifier: BSD-3-Clause 2b28f28aeSDharmik Thakkar * Copyright(c) 2017 Marvell International Ltd. 3b28f28aeSDharmik Thakkar * Copyright(c) 2017 Semihalf. 4b28f28aeSDharmik Thakkar * All rights reserved. 5b28f28aeSDharmik Thakkar */ 6b28f28aeSDharmik Thakkar 7b28f28aeSDharmik Thakkar #ifndef _MRVL_PMD_PRIVATE_H_ 8b28f28aeSDharmik Thakkar #define _MRVL_PMD_PRIVATE_H_ 9b28f28aeSDharmik Thakkar 10b28f28aeSDharmik Thakkar #include "rte_mrvl_compat.h" 11b28f28aeSDharmik Thakkar 12b28f28aeSDharmik Thakkar #define CRYPTODEV_NAME_MRVL_PMD crypto_mvsam 13b28f28aeSDharmik Thakkar /**< Marvell PMD device name */ 14b28f28aeSDharmik Thakkar 15b28f28aeSDharmik Thakkar /** MRVL PMD LOGTYPE DRIVER */ 166da6baf7SLukasz Wojciechowski extern int mrvl_logtype_driver; 17*2b843cacSDavid Marchand #define RTE_LOGTYPE_MRVL_DRIVER mrvl_logtype_driver 18b28f28aeSDharmik Thakkar 19*2b843cacSDavid Marchand #define MRVL_LOG(level, ...) \ 20*2b843cacSDavid Marchand RTE_LOG_LINE_PREFIX(level, MRVL_DRIVER, "%s() line %u: ", \ 21*2b843cacSDavid Marchand __func__ RTE_LOG_COMMA __LINE__, __VA_ARGS__) 22b28f28aeSDharmik Thakkar 23b28f28aeSDharmik Thakkar /** 24b28f28aeSDharmik Thakkar * Handy bits->bytes conversion macro. 25b28f28aeSDharmik Thakkar */ 26b28f28aeSDharmik Thakkar #define BITS2BYTES(x) ((x) >> 3) 27b28f28aeSDharmik Thakkar 28b28f28aeSDharmik Thakkar #define MRVL_MAX_SEGMENTS 16 29b28f28aeSDharmik Thakkar 30b28f28aeSDharmik Thakkar /** The operation order mode enumerator. */ 31b28f28aeSDharmik Thakkar enum mrvl_crypto_chain_order { 32b28f28aeSDharmik Thakkar MRVL_CRYPTO_CHAIN_CIPHER_ONLY, 33b28f28aeSDharmik Thakkar MRVL_CRYPTO_CHAIN_AUTH_ONLY, 34b28f28aeSDharmik Thakkar MRVL_CRYPTO_CHAIN_CIPHER_AUTH, 35b28f28aeSDharmik Thakkar MRVL_CRYPTO_CHAIN_AUTH_CIPHER, 36b28f28aeSDharmik Thakkar MRVL_CRYPTO_CHAIN_COMBINED, 37b28f28aeSDharmik Thakkar MRVL_CRYPTO_CHAIN_NOT_SUPPORTED, 38b28f28aeSDharmik Thakkar }; 39b28f28aeSDharmik Thakkar 40b28f28aeSDharmik Thakkar /** Private data structure for each crypto device. */ 41b28f28aeSDharmik Thakkar struct mrvl_crypto_private { 42b28f28aeSDharmik Thakkar unsigned int max_nb_qpairs; /**< Max number of queue pairs */ 43b28f28aeSDharmik Thakkar unsigned int max_nb_sessions; /**< Max number of sessions */ 44b28f28aeSDharmik Thakkar }; 45b28f28aeSDharmik Thakkar 46b28f28aeSDharmik Thakkar /** MRVL crypto queue pair structure. */ 4727595cd8STyler Retzlaff struct __rte_cache_aligned mrvl_crypto_qp { 48b28f28aeSDharmik Thakkar /** SAM CIO (MUSDK Queue Pair equivalent).*/ 49b28f28aeSDharmik Thakkar struct sam_cio *cio; 50b28f28aeSDharmik Thakkar 51b28f28aeSDharmik Thakkar /** Session Mempool. */ 52b28f28aeSDharmik Thakkar struct rte_mempool *sess_mp; 53b28f28aeSDharmik Thakkar 54b28f28aeSDharmik Thakkar /** Session Private Data Mempool. */ 55b28f28aeSDharmik Thakkar struct rte_mempool *sess_mp_priv; 56b28f28aeSDharmik Thakkar 57b28f28aeSDharmik Thakkar /** Queue pair statistics. */ 58b28f28aeSDharmik Thakkar struct rte_cryptodev_stats stats; 59b28f28aeSDharmik Thakkar 60b28f28aeSDharmik Thakkar /** CIO initialization parameters.*/ 61b28f28aeSDharmik Thakkar struct sam_cio_params cio_params; 6227595cd8STyler Retzlaff }; 63b28f28aeSDharmik Thakkar 64b28f28aeSDharmik Thakkar /** MRVL crypto private session structure. */ 6527595cd8STyler Retzlaff struct __rte_cache_aligned mrvl_crypto_session { 66b28f28aeSDharmik Thakkar /** Crypto operations chain order. */ 67b28f28aeSDharmik Thakkar enum mrvl_crypto_chain_order chain_order; 68b28f28aeSDharmik Thakkar 69b28f28aeSDharmik Thakkar /** Session initialization parameters. */ 70b28f28aeSDharmik Thakkar struct sam_session_params sam_sess_params; 71b28f28aeSDharmik Thakkar 72b28f28aeSDharmik Thakkar /** SAM session pointer. */ 73b28f28aeSDharmik Thakkar struct sam_sa *sam_sess; 74b28f28aeSDharmik Thakkar 75b28f28aeSDharmik Thakkar /** Cipher IV offset. */ 76b28f28aeSDharmik Thakkar uint16_t cipher_iv_offset; 7727595cd8STyler Retzlaff }; 78b28f28aeSDharmik Thakkar 7927595cd8STyler Retzlaff struct __rte_cache_aligned mrvl_crypto_src_table { 80b28f28aeSDharmik Thakkar uint16_t iter_ops; 81b28f28aeSDharmik Thakkar struct sam_buf_info src_bd[MRVL_MAX_SEGMENTS]; 8227595cd8STyler Retzlaff }; 83b28f28aeSDharmik Thakkar 84b28f28aeSDharmik Thakkar /** Set and validate MRVL crypto session parameters */ 85e0f89d5eSMichael Shamis int 86b28f28aeSDharmik Thakkar mrvl_crypto_set_session_parameters(struct mrvl_crypto_session *sess, 87b28f28aeSDharmik Thakkar const struct rte_crypto_sym_xform *xform); 88b28f28aeSDharmik Thakkar 89e0f89d5eSMichael Shamis int 90e0f89d5eSMichael Shamis mrvl_ipsec_set_session_parameters(struct mrvl_crypto_session *sess, 91e0f89d5eSMichael Shamis struct rte_security_ipsec_xform *ipsec_xform, 92e0f89d5eSMichael Shamis struct rte_crypto_sym_xform *crypto_xform); 93e0f89d5eSMichael Shamis 94b28f28aeSDharmik Thakkar /** device specific operations function pointer structure */ 95b28f28aeSDharmik Thakkar extern struct rte_cryptodev_ops *rte_mrvl_crypto_pmd_ops; 96e0f89d5eSMichael Shamis extern struct rte_security_ops *rte_mrvl_security_pmd_ops; 97b28f28aeSDharmik Thakkar 98b28f28aeSDharmik Thakkar #endif /* _MRVL_PMD_PRIVATE_H_ */ 99