common/cnxk: support tunnel header verification
[dpdk.git] / drivers / common / cpt / cpt_pmd_ops_helper.c
index 1c18180..2cddddf 100644 (file)
@@ -11,6 +11,8 @@
 
 #define CPT_MAX_IV_LEN 16
 #define CPT_OFFSET_CONTROL_BYTES 8
+#define CPT_MAX_ASYM_OP_NUM_PARAMS 5
+#define CPT_MAX_ASYM_OP_MOD_LEN 1024
 
 int32_t
 cpt_pmd_ops_helper_get_mlen_direct_mode(void)
@@ -33,9 +35,23 @@ cpt_pmd_ops_helper_get_mlen_sg_mode(void)
 
        len += sizeof(struct cpt_request_info);
        len += CPT_OFFSET_CONTROL_BYTES + CPT_MAX_IV_LEN;
-       len += ROUNDUP8(SG_LIST_HDR_SIZE +
-                       (ROUNDUP4(CPT_MAX_SG_IN_OUT_CNT) >> 2) * SG_ENTRY_SIZE);
+       len += RTE_ALIGN_CEIL((SG_LIST_HDR_SIZE +
+                       (RTE_ALIGN_CEIL(CPT_MAX_SG_IN_OUT_CNT, 4) >> 2) *
+                       SG_ENTRY_SIZE), 8);
        len += 2 * COMPLETION_CODE_SIZE;
        len += 2 * sizeof(cpt_res_s_t);
        return len;
 }
+
+int
+cpt_pmd_ops_helper_asym_get_mlen(void)
+{
+       uint32_t len;
+
+       /* Get meta len for linear buffer (direct) mode */
+       len = cpt_pmd_ops_helper_get_mlen_direct_mode();
+
+       /* Get meta len for asymmetric operations */
+       len += CPT_MAX_ASYM_OP_NUM_PARAMS * CPT_MAX_ASYM_OP_MOD_LEN;
+       return len;
+}