xref: /dpdk/drivers/crypto/cnxk/cn9k_ipsec.h (revision 27595cd83053b2d39634a159d6709b3ce3cdf3b0)
138f66464SArchana Muniganti /* SPDX-License-Identifier: BSD-3-Clause
238f66464SArchana Muniganti  * Copyright(C) 2021 Marvell.
338f66464SArchana Muniganti  */
438f66464SArchana Muniganti 
538f66464SArchana Muniganti #ifndef __CN9K_IPSEC_H__
638f66464SArchana Muniganti #define __CN9K_IPSEC_H__
738f66464SArchana Muniganti 
8af37f4e4SAnoob Joseph #include <rte_security_driver.h>
9af37f4e4SAnoob Joseph 
1038f66464SArchana Muniganti #include "cnxk_ipsec.h"
1138f66464SArchana Muniganti #include "cnxk_security.h"
12b00ae6f8SArchana Muniganti #include "cnxk_security_ar.h"
1338f66464SArchana Muniganti 
14*27595cd8STyler Retzlaff struct __rte_aligned(8) cn9k_ipsec_sa {
1538f66464SArchana Muniganti 	union {
1638f66464SArchana Muniganti 		/** Inbound SA */
1738f66464SArchana Muniganti 		struct roc_ie_on_inb_sa in_sa;
1838f66464SArchana Muniganti 		/** Outbound SA */
1938f66464SArchana Muniganti 		struct roc_ie_on_outb_sa out_sa;
2038f66464SArchana Muniganti 	};
21*27595cd8STyler Retzlaff };
22af37f4e4SAnoob Joseph 
2358064289SStephen Hemminger #define SEC_SESS_SIZE sizeof(struct rte_security_session)
2458064289SStephen Hemminger 
25*27595cd8STyler Retzlaff struct __rte_cache_aligned cn9k_sec_session {
2658064289SStephen Hemminger 	uint8_t rte_sess[SEC_SESS_SIZE];
27af37f4e4SAnoob Joseph 
28af37f4e4SAnoob Joseph 	/** PMD private space */
29af37f4e4SAnoob Joseph 
3038f66464SArchana Muniganti 	/** ESN */
3138f66464SArchana Muniganti 	union {
3238f66464SArchana Muniganti 		uint64_t esn;
3338f66464SArchana Muniganti 		struct {
3438f66464SArchana Muniganti 			uint32_t seq_lo;
3538f66464SArchana Muniganti 			uint32_t seq_hi;
3638f66464SArchana Muniganti 		};
3738f66464SArchana Muniganti 	};
38af37f4e4SAnoob Joseph 	/** IPsec SA direction */
39af37f4e4SAnoob Joseph 	uint8_t is_outbound;
40af37f4e4SAnoob Joseph 	/* ESN enable flag */
41af37f4e4SAnoob Joseph 	uint8_t esn_en;
42af37f4e4SAnoob Joseph 	/** Pre-populated CPT inst words */
43af37f4e4SAnoob Joseph 	struct cnxk_cpt_inst_tmpl inst;
44af37f4e4SAnoob Joseph 	/** Response length calculation data */
45af37f4e4SAnoob Joseph 	struct cnxk_ipsec_outb_rlens rlens;
46b00ae6f8SArchana Muniganti 	/** Anti replay window size */
47b00ae6f8SArchana Muniganti 	uint32_t replay_win_sz;
48af37f4e4SAnoob Joseph 	/** Cipher IV offset in bytes */
49af37f4e4SAnoob Joseph 	uint16_t cipher_iv_off;
50af37f4e4SAnoob Joseph 	/** Cipher IV length in bytes */
51af37f4e4SAnoob Joseph 	uint8_t cipher_iv_len;
52af37f4e4SAnoob Joseph 	/** Outbound custom header length */
53af37f4e4SAnoob Joseph 	uint8_t custom_hdr_len;
54af37f4e4SAnoob Joseph 	/** Anti replay */
55af37f4e4SAnoob Joseph 	struct cnxk_on_ipsec_ar ar;
5697ebfda8SVolodymyr Fialko 	/** Queue pair */
5797ebfda8SVolodymyr Fialko 	struct cnxk_cpt_qp *qp;
5838f66464SArchana Muniganti 
5938f66464SArchana Muniganti 	struct cn9k_ipsec_sa sa;
60*27595cd8STyler Retzlaff };
6138f66464SArchana Muniganti 
6238f66464SArchana Muniganti void cn9k_sec_ops_override(void);
6338f66464SArchana Muniganti 
6438f66464SArchana Muniganti #endif /* __CN9K_IPSEC_H__ */
65