1 /* SPDX-License-Identifier: BSD-3-Clause
2 * Copyright(C) 2021 Marvell.
10 /* Default engine groups */
11 #define ROC_CPT_DFLT_ENG_GRP_SE 0UL
12 #define ROC_CPT_DFLT_ENG_GRP_SE_IE 1UL
13 #define ROC_CPT_DFLT_ENG_GRP_AE 2UL
15 #define ROC_CPT_MAX_LFS 64
17 /* CPT helper macros */
18 #define ROC_CPT_AH_HDR_LEN 12
19 #define ROC_CPT_AES_GCM_IV_LEN 8
20 #define ROC_CPT_AES_GCM_MAC_LEN 16
21 #define ROC_CPT_AES_CBC_IV_LEN 16
22 #define ROC_CPT_SHA1_HMAC_LEN 12
23 #define ROC_CPT_AUTH_KEY_LEN_MAX 64
25 #define ROC_CPT_DES3_KEY_LEN 24
26 #define ROC_CPT_AES128_KEY_LEN 16
27 #define ROC_CPT_AES192_KEY_LEN 24
28 #define ROC_CPT_AES256_KEY_LEN 32
29 #define ROC_CPT_MD5_KEY_LENGTH 16
30 #define ROC_CPT_SHA1_KEY_LENGTH 20
31 #define ROC_CPT_SHA256_KEY_LENGTH 32
32 #define ROC_CPT_SHA384_KEY_LENGTH 48
33 #define ROC_CPT_SHA512_KEY_LENGTH 64
34 #define ROC_CPT_AUTH_KEY_LEN_MAX 64
36 #define ROC_CPT_DES_BLOCK_LENGTH 8
37 #define ROC_CPT_AES_BLOCK_LENGTH 16
39 #define ROC_CPT_AES_GCM_ROUNDUP_BYTE_LEN 4
40 #define ROC_CPT_AES_CBC_ROUNDUP_BYTE_LEN 16
42 /* Salt length for AES-CTR/GCM/CCM and AES-GMAC */
43 #define ROC_CPT_SALT_LEN 4
45 #define ROC_CPT_ESP_HDR_LEN 8
46 #define ROC_CPT_ESP_TRL_LEN 2
47 #define ROC_CPT_AH_HDR_LEN 12
48 #define ROC_CPT_TUNNEL_IPV4_HDR_LEN 20
49 #define ROC_CPT_TUNNEL_IPV6_HDR_LEN 40
52 /* Input parameters */
55 /* End of Input parameters */
56 struct plt_pci_device *pci_dev;
58 struct roc_cpt *roc_cpt;
66 struct roc_nix *inl_outb_nix;
67 } __plt_cache_aligned;
70 struct plt_pci_device *pci_dev;
71 struct roc_cpt_lf *lf[ROC_CPT_MAX_LFS];
75 /**< CPT device capabilities */
76 union cpt_eng_caps hw_caps[CPT_MAX_ENG_TYPES];
77 uint8_t eng_grp[CPT_MAX_ENG_TYPES];
79 #define ROC_CPT_MEM_SZ (6 * 1024)
80 uint8_t reserved[ROC_CPT_MEM_SZ] __plt_cache_aligned;
81 } __plt_cache_aligned;
83 struct roc_cpt_rxc_time_cfg {
85 uint16_t active_limit;
86 uint16_t active_thres;
87 uint16_t zombie_limit;
88 uint16_t zombie_thres;
91 int __roc_api roc_cpt_rxc_time_cfg(struct roc_cpt *roc_cpt,
92 struct roc_cpt_rxc_time_cfg *cfg);
93 int __roc_api roc_cpt_dev_init(struct roc_cpt *roc_cpt);
94 int __roc_api roc_cpt_dev_fini(struct roc_cpt *roc_cpt);
95 int __roc_api roc_cpt_eng_grp_add(struct roc_cpt *roc_cpt,
96 enum cpt_eng_type eng_type);
97 int __roc_api roc_cpt_dev_configure(struct roc_cpt *roc_cpt, int nb_lf);
98 void __roc_api roc_cpt_dev_clear(struct roc_cpt *roc_cpt);
99 int __roc_api roc_cpt_lf_init(struct roc_cpt *roc_cpt, struct roc_cpt_lf *lf);
100 void __roc_api roc_cpt_lf_fini(struct roc_cpt_lf *lf);
101 int __roc_api roc_cpt_lf_ctx_flush(struct roc_cpt_lf *lf, uint64_t cptr);
102 int __roc_api roc_cpt_inline_ipsec_cfg(struct dev *dev, uint8_t slot,
103 struct roc_nix *nix);
104 int __roc_api roc_cpt_inline_ipsec_inb_cfg(struct roc_cpt *roc_cpt,
105 uint16_t param1, uint16_t param2);
106 int __roc_api roc_cpt_afs_print(struct roc_cpt *roc_cpt);
107 int __roc_api roc_cpt_lfs_print(struct roc_cpt *roc_cpt);
108 void __roc_api roc_cpt_iq_disable(struct roc_cpt_lf *lf);
110 #endif /* _ROC_CPT_H_ */