crypto/dpaa2_sec: fix offset calculation for GCM
authorAkhil Goyal <akhil.goyal@nxp.com>
Wed, 27 Mar 2019 11:53:32 +0000 (11:53 +0000)
committerAkhil Goyal <akhil.goyal@nxp.com>
Tue, 2 Apr 2019 14:50:24 +0000 (16:50 +0200)
In case of gcm, output buffer should have aad space
before the actual buffer which needs to be written.
CAAM will not write into the aad anything, it will skip
auth_only_len (aad) and write the buffer afterwards.

Fixes: 37f96eb01bce ("crypto/dpaa2_sec: support scatter gather")
Cc: stable@dpdk.org
Signed-off-by: Akhil Goyal <akhil.goyal@nxp.com>
drivers/crypto/dpaa2_sec/dpaa2_sec_dpseci.c

index d955ffc..7e762d4 100644 (file)
@@ -236,8 +236,8 @@ build_authenc_gcm_sg_fd(dpaa2_sec_session *sess,
 
        /* Configure Output SGE for Encap/Decap */
        DPAA2_SET_FLE_ADDR(sge, DPAA2_MBUF_VADDR_TO_IOVA(mbuf));
-       DPAA2_SET_FLE_OFFSET(sge, mbuf->data_off + sym_op->aead.data.offset -
-                                                               auth_only_len);
+       DPAA2_SET_FLE_OFFSET(sge, mbuf->data_off +
+                       RTE_ALIGN_CEIL(auth_only_len, 16) - auth_only_len);
        sge->length = mbuf->data_len - sym_op->aead.data.offset + auth_only_len;
 
        mbuf = mbuf->next;
@@ -400,8 +400,8 @@ build_authenc_gcm_fd(dpaa2_sec_session *sess,
 
        /* Configure Output SGE for Encap/Decap */
        DPAA2_SET_FLE_ADDR(sge, DPAA2_MBUF_VADDR_TO_IOVA(dst));
-       DPAA2_SET_FLE_OFFSET(sge, sym_op->aead.data.offset +
-                               dst->data_off - auth_only_len);
+       DPAA2_SET_FLE_OFFSET(sge, dst->data_off +
+                       RTE_ALIGN_CEIL(auth_only_len, 16) - auth_only_len);
        sge->length = sym_op->aead.data.length + auth_only_len;
 
        if (sess->dir == DIR_ENC) {