1/* SPDX-License-Identifier: BSD-3-Clause 2 * Copyright (C) 2020 Marvell International Ltd. 3 */ 4 5#ifndef __OTX2_CRYPTODEV_SEC_H__ 6#define __OTX2_CRYPTODEV_SEC_H__ 7 8#include <rte_cryptodev.h> 9 10#include "otx2_ipsec_po.h" 11 12struct otx2_sec_session_ipsec_lp { 13 RTE_STD_C11 14 union { 15 /* Inbound SA */ 16 struct otx2_ipsec_po_in_sa in_sa; 17 /* Outbound SA */ 18 struct otx2_ipsec_po_out_sa out_sa; 19 }; 20 21 uint64_t cpt_inst_w7; 22 union { 23 uint64_t ucmd_w0; 24 struct { 25 uint16_t ucmd_dlen; 26 uint16_t ucmd_param2; 27 uint16_t ucmd_param1; 28 uint16_t ucmd_opcode; 29 }; 30 }; 31 32 uint8_t partial_len; 33 uint8_t roundup_len; 34 uint8_t roundup_byte; 35 uint16_t ip_id; 36 union { 37 uint64_t esn; 38 struct { 39 uint32_t seq_lo; 40 uint32_t seq_hi; 41 }; 42 }; 43 44 /** Context length in 8-byte words */ 45 size_t ctx_len; 46 /** Auth IV offset in bytes */ 47 uint16_t auth_iv_offset; 48 /** IV offset in bytes */ 49 uint16_t iv_offset; 50 /** AAD length */ 51 uint16_t aad_length; 52 /** MAC len in bytes */ 53 uint8_t mac_len; 54 /** IV length in bytes */ 55 uint8_t iv_length; 56 /** Auth IV length in bytes */ 57 uint8_t auth_iv_length; 58 /** IPsec mode and tunnel type */ 59 enum otx2_ipsec_po_mode_type mode_type; 60}; 61 62int otx2_crypto_sec_ctx_create(struct rte_cryptodev *crypto_dev); 63 64void otx2_crypto_sec_ctx_destroy(struct rte_cryptodev *crypto_dev); 65 66#endif /* __OTX2_CRYPTODEV_SEC_H__ */ 67