xref: /dpdk/drivers/crypto/mvsam/mrvl_pmd_private.h (revision 2b843cac232eb3f2fa79e4254e21766817e2019f)
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