crypto/octeontx2: fix lookaside IPsec IV pointer
authorTejasree Kondoj <ktejasree@marvell.com>
Fri, 16 Jul 2021 10:44:47 +0000 (16:14 +0530)
committerAkhil Goyal <gakhil@marvell.com>
Tue, 20 Jul 2021 08:32:05 +0000 (10:32 +0200)
In case of AES-GCM/CCM, nonce/salt comes along
with IV, hence can be copied in a single memcpy.
This patch fixes the IV copy in lookaside IPsec
outbound instruction.

Fixes: fab634eb87ca ("crypto/octeontx2: support security session data path")
Cc: stable@dpdk.org
Signed-off-by: Tejasree Kondoj <ktejasree@marvell.com>
Acked-by: Akhil Goyal <gakhil@marvell.com>
drivers/crypto/octeontx2/otx2_ipsec_po_ops.h

index 58b199f..25ee10f 100644 (file)
@@ -61,7 +61,6 @@ process_outb_sa(struct rte_crypto_op *cop,
        uint32_t dlen, rlen, extend_head, extend_tail;
        struct rte_crypto_sym_op *sym_op = cop->sym;
        struct rte_mbuf *m_src = sym_op->m_src;
-       struct otx2_ipsec_po_sa_ctl *ctl_wrd;
        struct cpt_request_info *req = NULL;
        struct otx2_ipsec_po_out_hdr *hdr;
        struct otx2_ipsec_po_out_sa *sa;
@@ -70,7 +69,6 @@ process_outb_sa(struct rte_crypto_op *cop,
        char *mdata, *data;
 
        sa = &sess->out_sa;
-       ctl_wrd = &sa->ctl;
        hdr_len = sizeof(*hdr);
 
        dlen = rte_pktmbuf_pkt_len(m_src) + hdr_len;
@@ -107,14 +105,8 @@ process_outb_sa(struct rte_crypto_op *cop,
        hdr = (struct otx2_ipsec_po_out_hdr *)rte_pktmbuf_adj(m_src,
                                                        RTE_ETHER_HDR_LEN);
 
-       if (ctl_wrd->enc_type == OTX2_IPSEC_FP_SA_ENC_AES_GCM) {
-               memcpy(&hdr->iv[0], &sa->iv.gcm.nonce, 4);
-               memcpy(&hdr->iv[4], rte_crypto_op_ctod_offset(cop, uint8_t *,
-                       sess->iv_offset), sess->iv_length);
-       } else if (ctl_wrd->auth_type == OTX2_IPSEC_PO_SA_AUTH_SHA1) {
-               memcpy(&hdr->iv[0], rte_crypto_op_ctod_offset(cop, uint8_t *,
-                       sess->iv_offset), sess->iv_length);
-       }
+       memcpy(&hdr->iv[0], rte_crypto_op_ctod_offset(cop, uint8_t *,
+               sess->iv_offset), sess->iv_length);
 
        /* Prepare CPT instruction */
        word0.u64 = sess->ucmd_w0;