From a5e05ab6431802f87b27a656d983226b86c307d7 Mon Sep 17 00:00:00 2001 From: Akhil Goyal Date: Wed, 27 Mar 2019 11:53:32 +0000 Subject: [PATCH] crypto/dpaa2_sec: fix offset calculation for GCM 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 --- drivers/crypto/dpaa2_sec/dpaa2_sec_dpseci.c | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/drivers/crypto/dpaa2_sec/dpaa2_sec_dpseci.c b/drivers/crypto/dpaa2_sec/dpaa2_sec_dpseci.c index d955ffc456..7e762d4b86 100644 --- a/drivers/crypto/dpaa2_sec/dpaa2_sec_dpseci.c +++ b/drivers/crypto/dpaa2_sec/dpaa2_sec_dpseci.c @@ -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) { -- 2.20.1