13f84076aSAnoob Joseph /* SPDX-License-Identifier: BSD-3-Clause 23f84076aSAnoob Joseph * Copyright(C) 2024 Marvell. 33f84076aSAnoob Joseph */ 43f84076aSAnoob Joseph 53f84076aSAnoob Joseph #ifndef __CN10K_CRYPTODEV_SEC_H__ 63f84076aSAnoob Joseph #define __CN10K_CRYPTODEV_SEC_H__ 73f84076aSAnoob Joseph 8f343cddfSAnoob Joseph #include <rte_common.h> 93f84076aSAnoob Joseph #include <rte_security.h> 103f84076aSAnoob Joseph 113f84076aSAnoob Joseph #include "roc_constants.h" 123f84076aSAnoob Joseph #include "roc_cpt.h" 133f84076aSAnoob Joseph 143f84076aSAnoob Joseph #include "cn10k_ipsec.h" 15ffa1a704SVidya Sagar Velumuri #include "cn10k_tls.h" 163f84076aSAnoob Joseph 173f84076aSAnoob Joseph #define SEC_SESS_SIZE sizeof(struct rte_security_session) 183f84076aSAnoob Joseph 199a126e7cSVidya Sagar Velumuri struct cn10k_tls_opt { 209a126e7cSVidya Sagar Velumuri uint16_t pad_shift : 3; 219a126e7cSVidya Sagar Velumuri uint16_t enable_padding : 1; 229a126e7cSVidya Sagar Velumuri uint16_t tail_fetch_len : 2; 239a126e7cSVidya Sagar Velumuri uint16_t tls_ver : 2; 249a126e7cSVidya Sagar Velumuri uint16_t is_write : 1; 259a126e7cSVidya Sagar Velumuri uint16_t mac_len : 7; 269a126e7cSVidya Sagar Velumuri }; 279a126e7cSVidya Sagar Velumuri __rte_aligned(ROC_ALIGN)28*27595cd8STyler Retzlaffstruct __rte_aligned(ROC_ALIGN) cn10k_sec_session { 293f84076aSAnoob Joseph uint8_t rte_sess[SEC_SESS_SIZE]; 303f84076aSAnoob Joseph 313f84076aSAnoob Joseph /** PMD private space */ 32f343cddfSAnoob Joseph alignas(RTE_CACHE_LINE_MIN_SIZE) RTE_MARKER cacheline1; 333f84076aSAnoob Joseph 343f84076aSAnoob Joseph /** Pre-populated CPT inst words */ 353f84076aSAnoob Joseph struct cnxk_cpt_inst_tmpl inst; 363f84076aSAnoob Joseph uint16_t max_extended_len; 373f84076aSAnoob Joseph uint16_t iv_offset; 38f343cddfSAnoob Joseph uint8_t proto; 393f84076aSAnoob Joseph uint8_t iv_length; 403f84076aSAnoob Joseph union { 419a126e7cSVidya Sagar Velumuri uint16_t u16; 429a126e7cSVidya Sagar Velumuri struct cn10k_tls_opt tls_opt; 433f84076aSAnoob Joseph struct { 443f84076aSAnoob Joseph uint8_t ip_csum; 45f343cddfSAnoob Joseph uint8_t is_outbound : 1; 463f84076aSAnoob Joseph } ipsec; 473f84076aSAnoob Joseph }; 483f84076aSAnoob Joseph /** Queue pair */ 493f84076aSAnoob Joseph struct cnxk_cpt_qp *qp; 503f84076aSAnoob Joseph /** Userdata to be set for Rx inject */ 513f84076aSAnoob Joseph void *userdata; 523f84076aSAnoob Joseph 533f84076aSAnoob Joseph /** 543f84076aSAnoob Joseph * End of SW mutable area 553f84076aSAnoob Joseph */ 563f84076aSAnoob Joseph union { 573f84076aSAnoob Joseph struct cn10k_ipsec_sa sa; 58ffa1a704SVidya Sagar Velumuri struct cn10k_tls_record tls_rec; 593f84076aSAnoob Joseph }; 60*27595cd8STyler Retzlaff }; 613f84076aSAnoob Joseph 623f84076aSAnoob Joseph static inline uint64_t cpt_inst_w7_get(struct roc_cpt * roc_cpt,void * cptr)633f84076aSAnoob Josephcpt_inst_w7_get(struct roc_cpt *roc_cpt, void *cptr) 643f84076aSAnoob Joseph { 653f84076aSAnoob Joseph union cpt_inst_w7 w7; 663f84076aSAnoob Joseph 673f84076aSAnoob Joseph w7.u64 = 0; 683f84076aSAnoob Joseph w7.s.egrp = roc_cpt->eng_grp[CPT_ENG_TYPE_IE]; 693f84076aSAnoob Joseph w7.s.ctx_val = 1; 703f84076aSAnoob Joseph w7.s.cptr = (uint64_t)cptr; 713f84076aSAnoob Joseph rte_mb(); 723f84076aSAnoob Joseph 733f84076aSAnoob Joseph return w7.u64; 743f84076aSAnoob Joseph } 753f84076aSAnoob Joseph 763f84076aSAnoob Joseph void cn10k_sec_ops_override(void); 773f84076aSAnoob Joseph 783f84076aSAnoob Joseph #endif /* __CN10K_CRYPTODEV_SEC_H__ */ 79