[v2] test/crypto: copy offset data to oop dst buffer
Checks
Commit Message
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: adamx.dybkowski@intel.com
Signed-off-by: Kai Ji <kai.ji@intel.com>
---
v2:
- rebase to head of for-main branch
app/test/test_cryptodev.c | 15 +++++++++++++++
1 file changed, 15 insertions(+)
Comments
> 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: adamx.dybkowski@intel.com
>
> Signed-off-by: Kai Ji <kai.ji@intel.com>
> ---
> v2:
> - rebase to head of for-main branch
>
Applied to dpdk-next-crypto
Thanks.
@@ -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) {