#define ROC_CPT_DFLT_ENG_GRP_AE 2UL
#define ROC_CPT_MAX_LFS 64
+#define ROC_CPT_MAX_BLKS 2
#define ROC_CN10K_CPT_INST_DW_M1 \
((uint64_t)(((sizeof(struct cpt_inst_s) / 16) - 1) & 0x7))
#define ROC_CN10K_TWO_CPT_INST_DW_M1 \
#define ROC_CPT_AES_GCM_MAC_LEN 16
#define ROC_CPT_AES_CBC_IV_LEN 16
#define ROC_CPT_SHA1_HMAC_LEN 12
-#define ROC_CPT_AUTH_KEY_LEN_MAX 64
-
-#define ROC_CPT_DES3_KEY_LEN 24
-#define ROC_CPT_AES128_KEY_LEN 16
-#define ROC_CPT_AES192_KEY_LEN 24
-#define ROC_CPT_AES256_KEY_LEN 32
-#define ROC_CPT_MD5_KEY_LENGTH 16
-#define ROC_CPT_SHA1_KEY_LENGTH 20
-#define ROC_CPT_SHA256_KEY_LENGTH 32
-#define ROC_CPT_SHA384_KEY_LENGTH 48
-#define ROC_CPT_SHA512_KEY_LENGTH 64
-#define ROC_CPT_AUTH_KEY_LEN_MAX 64
+#define ROC_CPT_SHA2_HMAC_LEN 16
+
+#define ROC_CPT_DES3_KEY_LEN 24
+#define ROC_CPT_AES128_KEY_LEN 16
+#define ROC_CPT_AES192_KEY_LEN 24
+#define ROC_CPT_AES256_KEY_LEN 32
+#define ROC_CPT_MD5_KEY_LENGTH 16
+#define ROC_CPT_SHA1_KEY_LENGTH 20
+#define ROC_CPT_SHA256_KEY_LENGTH 32
+#define ROC_CPT_SHA384_KEY_LENGTH 48
+#define ROC_CPT_SHA512_KEY_LENGTH 64
+#define ROC_CPT_AES_XCBC_KEY_LENGTH 16
+#define ROC_CPT_AUTH_KEY_LEN_MAX 64
#define ROC_CPT_DES_BLOCK_LENGTH 8
#define ROC_CPT_AES_BLOCK_LENGTH 16
#define ROC_CPT_TUNNEL_IPV4_HDR_LEN 20
#define ROC_CPT_TUNNEL_IPV6_HDR_LEN 40
+#define ROC_CPT_CCM_AAD_DATA 1
+#define ROC_CPT_CCM_MSG_LEN 4
+#define ROC_CPT_CCM_ICV_LEN 16
+#define ROC_CPT_CCM_FLAGS \
+ ((ROC_CPT_CCM_AAD_DATA << 6) | \
+ (((ROC_CPT_CCM_ICV_LEN - 2) / 2) << 3) | (ROC_CPT_CCM_MSG_LEN - 1))
+#define ROC_CPT_CCM_SALT_LEN 3
+
+#define ROC_CPT_RES_ALIGN 16
+
+enum {
+ ROC_CPT_REVISION_ID_83XX = 0,
+ ROC_CPT_REVISION_ID_96XX_B0 = 1,
+ ROC_CPT_REVISION_ID_96XX_C0 = 2,
+ ROC_CPT_REVISION_ID_98XX = 3,
+ ROC_CPT_REVISION_ID_106XX = 4,
+};
+
struct roc_cpt_lmtline {
uint64_t io_addr;
uint64_t *fc_addr;
/**< CPT device capabilities */
union cpt_eng_caps hw_caps[CPT_MAX_ENG_TYPES];
uint8_t eng_grp[CPT_MAX_ENG_TYPES];
+ uint8_t cpt_revision;
#define ROC_CPT_MEM_SZ (6 * 1024)
uint8_t reserved[ROC_CPT_MEM_SZ] __plt_cache_aligned;
void __roc_api roc_cpt_dev_clear(struct roc_cpt *roc_cpt);
int __roc_api roc_cpt_lf_init(struct roc_cpt *roc_cpt, struct roc_cpt_lf *lf);
void __roc_api roc_cpt_lf_fini(struct roc_cpt_lf *lf);
-int __roc_api roc_cpt_lf_ctx_flush(struct roc_cpt_lf *lf, uint64_t cptr);
+int __roc_api roc_cpt_lf_ctx_flush(struct roc_cpt_lf *lf, void *cptr,
+ bool inval);
+int __roc_api roc_cpt_lf_ctx_reload(struct roc_cpt_lf *lf, void *cptr);
int __roc_api roc_cpt_inline_ipsec_cfg(struct dev *dev, uint8_t slot,
struct roc_nix *nix);
int __roc_api roc_cpt_inline_ipsec_inb_cfg(struct roc_cpt *roc_cpt,
int __roc_api roc_cpt_lmtline_init(struct roc_cpt *roc_cpt,
struct roc_cpt_lmtline *lmtline, int lf_id);
+void __roc_api roc_cpt_parse_hdr_dump(const struct cpt_parse_hdr_s *cpth);
+int __roc_api roc_cpt_ctx_write(struct roc_cpt_lf *lf, void *sa_dptr,
+ void *sa_cptr, uint16_t sa_len);
+
#endif /* _ROC_CPT_H_ */