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