The hash_state_sz field in the QAT request descriptor for AES-CCM
operations was incorrectly set to the digest length. According to
the QAT firmware specification, this field should contain the
length of AAD in quadwords for CCM operations.
Fixes: ab56c4d9ed9a ("crypto/qat: support AES-CCM")
Signed-off-by: Emma Finn <[email protected]>
---
v2:
* Updated to use 16-byte alignment.
v3:
* split into two patches.
---
drivers/crypto/qat/qat_sym_session.c | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
diff --git a/drivers/crypto/qat/qat_sym_session.c
b/drivers/crypto/qat/qat_sym_session.c
index 98ab82ffb3..2ba4fc0a3a 100644
--- a/drivers/crypto/qat/qat_sym_session.c
+++ b/drivers/crypto/qat/qat_sym_session.c
@@ -2774,7 +2774,8 @@ static int qat_sym_cd_auth_set(struct qat_sym_session
*cdesc,
hash->auth_counter.counter = 0;
hash_cd_ctrl->outer_prefix_sz = digestsize;
- auth_param->hash_state_sz = digestsize;
+ auth_param->hash_state_sz =
(RTE_ALIGN_CEIL(auth_param->u2.aad_sz,
+ ICP_QAT_HW_CCM_AAD_ALIGNMENT)
>> 3);
memcpy(cdesc->cd_cur_ptr + state1_size, authkey, authkeylen);
break;
--
2.34.1