From e19deb5af6edab846197dbd4f3cbbb2b83b3784f Mon Sep 17 00:00:00 2001 From: Kai Ji Date: Wed, 5 May 2021 15:45:13 +0100 Subject: [PATCH] test/crypto: copy offset data to OOP destination buffer Copy over the offset data required for auth in out-of-place op when auth offset and cipher offset are not aligned. Fixes: e847fc512817 ("test/crypto: add encrypted digest case for AES-CTR-CMAC") Cc: stable@dpdk.org Signed-off-by: Kai Ji --- app/test/test_cryptodev.c | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/app/test/test_cryptodev.c b/app/test/test_cryptodev.c index a677a21e36..2bd4ff96cb 100644 --- a/app/test/test_cryptodev.c +++ b/app/test/test_cryptodev.c @@ -2629,6 +2629,21 @@ create_wireless_algo_auth_cipher_operation( iv_ptr += cipher_iv_len; rte_memcpy(iv_ptr, auth_iv, auth_iv_len); + /* Only copy over the offset data needed from src to dst in OOP, + * if the auth and cipher offsets are not aligned + */ + if (op_mode == OUT_OF_PLACE) { + if (cipher_offset > auth_offset) + rte_memcpy( + rte_pktmbuf_mtod_offset( + sym_op->m_dst, + uint8_t *, auth_offset >> 3), + rte_pktmbuf_mtod_offset( + sym_op->m_src, + uint8_t *, auth_offset >> 3), + ((cipher_offset >> 3) - (auth_offset >> 3))); + } + if (cipher_algo == RTE_CRYPTO_CIPHER_SNOW3G_UEA2 || cipher_algo == RTE_CRYPTO_CIPHER_KASUMI_F8 || cipher_algo == RTE_CRYPTO_CIPHER_ZUC_EEA3) { -- 2.20.1