From: Alok Makhariya <alok.makhar...@nxp.com>

Enable out of place buffer test cases in nxp dpaa2_sec

Signed-off-by: Alok Makhariya <alok.makhar...@nxp.com>
---
 drivers/crypto/dpaa2_sec/dpaa2_sec_dpseci.c | 42 +++++++++++++++++++++++------
 test/test/test_cryptodev.c                  |  6 +++++
 test/test/test_cryptodev_aes_test_vectors.h | 12 ++++++---
 test/test/test_cryptodev_des_test_vectors.h |  6 +++--
 4 files changed, 52 insertions(+), 14 deletions(-)

diff --git a/drivers/crypto/dpaa2_sec/dpaa2_sec_dpseci.c 
b/drivers/crypto/dpaa2_sec/dpaa2_sec_dpseci.c
index 62b9203..d466979 100644
--- a/drivers/crypto/dpaa2_sec/dpaa2_sec_dpseci.c
+++ b/drivers/crypto/dpaa2_sec/dpaa2_sec_dpseci.c
@@ -90,11 +90,17 @@ build_authenc_gcm_fd(dpaa2_sec_session *sess,
        uint32_t auth_only_len = sess->ext_params.aead_ctxt.auth_only_len;
        int icv_len = sess->digest_length, retval;
        uint8_t *old_icv;
+       struct rte_mbuf *dst;
        uint8_t *IV_ptr = rte_crypto_op_ctod_offset(op, uint8_t *,
                        sess->iv.offset);
 
        PMD_INIT_FUNC_TRACE();
 
+       if (sym_op->m_dst)
+               dst = sym_op->m_dst;
+       else
+               dst = sym_op->m_src;
+
        /* TODO we are using the first FLE entry to store Mbuf and session ctxt.
         * Currently we donot know which FLE has the mbuf stored.
         * So while retreiving we can go back 1 FLE from the FD -ADDR
@@ -155,9 +161,9 @@ build_authenc_gcm_fd(dpaa2_sec_session *sess,
        DPAA2_SET_FLE_SG_EXT(fle);
 
        /* Configure Output SGE for Encap/Decap */
-       DPAA2_SET_FLE_ADDR(sge, DPAA2_MBUF_VADDR_TO_IOVA(sym_op->m_src));
+       DPAA2_SET_FLE_ADDR(sge, DPAA2_MBUF_VADDR_TO_IOVA(dst));
        DPAA2_SET_FLE_OFFSET(sge, sym_op->aead.data.offset +
-                               sym_op->m_src->data_off - auth_only_len);
+                               dst->data_off - auth_only_len);
        sge->length = sym_op->aead.data.length + auth_only_len;
 
        if (sess->dir == DIR_ENC) {
@@ -235,9 +241,15 @@ build_authenc_fd(dpaa2_sec_session *sess,
        uint8_t *old_icv;
        uint8_t *iv_ptr = rte_crypto_op_ctod_offset(op, uint8_t *,
                        sess->iv.offset);
+       struct rte_mbuf *dst;
 
        PMD_INIT_FUNC_TRACE();
 
+       if (sym_op->m_dst)
+               dst = sym_op->m_dst;
+       else
+               dst = sym_op->m_src;
+
        /* we are using the first FLE entry to store Mbuf.
         * Currently we donot know which FLE has the mbuf stored.
         * So while retreiving we can go back 1 FLE from the FD -ADDR
@@ -300,9 +312,9 @@ build_authenc_fd(dpaa2_sec_session *sess,
        DPAA2_SET_FLE_SG_EXT(fle);
 
        /* Configure Output SGE for Encap/Decap */
-       DPAA2_SET_FLE_ADDR(sge, DPAA2_MBUF_VADDR_TO_IOVA(sym_op->m_src));
+       DPAA2_SET_FLE_ADDR(sge, DPAA2_MBUF_VADDR_TO_IOVA(dst));
        DPAA2_SET_FLE_OFFSET(sge, sym_op->cipher.data.offset +
-                               sym_op->m_src->data_off);
+                               dst->data_off);
        sge->length = sym_op->cipher.data.length;
 
        if (sess->dir == DIR_ENC) {
@@ -456,9 +468,15 @@ build_cipher_fd(dpaa2_sec_session *sess, struct 
rte_crypto_op *op,
        struct ctxt_priv *priv = sess->ctxt;
        uint8_t *iv_ptr = rte_crypto_op_ctod_offset(op, uint8_t *,
                        sess->iv.offset);
+       struct rte_mbuf *dst;
 
        PMD_INIT_FUNC_TRACE();
 
+       if (sym_op->m_dst)
+               dst = sym_op->m_dst;
+       else
+               dst = sym_op->m_src;
+
        retval = rte_mempool_get(priv->fle_pool, (void **)(&fle));
        if (retval) {
                RTE_LOG(ERR, PMD, "Memory alloc failed for SGE\n");
@@ -503,9 +521,9 @@ build_cipher_fd(dpaa2_sec_session *sess, struct 
rte_crypto_op *op,
                   sess->iv.length,
                   sym_op->m_src->data_off);
 
-       DPAA2_SET_FLE_ADDR(fle, DPAA2_MBUF_VADDR_TO_IOVA(sym_op->m_src));
+       DPAA2_SET_FLE_ADDR(fle, DPAA2_MBUF_VADDR_TO_IOVA(dst));
        DPAA2_SET_FLE_OFFSET(fle, sym_op->cipher.data.offset +
-                            sym_op->m_src->data_off);
+                            dst->data_off);
 
        fle->length = sym_op->cipher.data.length + sess->iv.length;
 
@@ -657,6 +675,7 @@ sec_fd_to_mbuf(const struct qbman_fd *fd)
        struct qbman_fle *fle;
        struct rte_crypto_op *op;
        struct ctxt_priv *priv;
+       struct rte_mbuf *dst, *src;
 
        fle = (struct qbman_fle *)DPAA2_IOVA_TO_VADDR(DPAA2_GET_FD_ADDR(fd));
 
@@ -679,10 +698,17 @@ sec_fd_to_mbuf(const struct qbman_fd *fd)
                        DPAA2_GET_FLE_ADDR((fle - 1)));
 
        /* Prefeth op */
-       rte_prefetch0(op->sym->m_src);
+       src = op->sym->m_src;
+       rte_prefetch0(src);
+
+       if (op->sym->m_dst) {
+               dst = op->sym->m_dst;
+               rte_prefetch0(dst);
+       } else
+               dst = src;
 
        PMD_RX_LOG(DEBUG, "mbuf %p BMAN buf addr %p",
-                  (void *)op->sym->m_src, op->sym->m_src->buf_addr);
+                  (void *)dst, dst->buf_addr);
 
        PMD_RX_LOG(DEBUG, "fdaddr =%p bpid =%d meta =%d off =%d, len =%d",
                   (void *)DPAA2_GET_FD_ADDR(fd),
diff --git a/test/test/test_cryptodev.c b/test/test/test_cryptodev.c
index df84430..f889ecd 100644
--- a/test/test/test_cryptodev.c
+++ b/test/test/test_cryptodev.c
@@ -8837,6 +8837,12 @@ static struct unit_test_suite 
cryptodev_openssl_testsuite  = {
                TEST_CASE_ST(ut_setup, ut_teardown,
                        auth_decryption_AES128CBC_HMAC_SHA1_fail_tag_corrupt),
 
+               /** Out of place tests */
+               TEST_CASE_ST(ut_setup, ut_teardown,
+                       test_mb_AES_GCM_authenticated_encryption_oop),
+               TEST_CASE_ST(ut_setup, ut_teardown,
+                       test_mb_AES_GCM_authenticated_decryption_oop),
+
                TEST_CASES_END() /**< NULL terminate unit test array */
        }
 };
diff --git a/test/test/test_cryptodev_aes_test_vectors.h 
b/test/test/test_cryptodev_aes_test_vectors.h
index 0c7e48f..32c5deb 100644
--- a/test/test/test_cryptodev_aes_test_vectors.h
+++ b/test/test/test_cryptodev_aes_test_vectors.h
@@ -1431,7 +1431,8 @@ static const struct blockcipher_test_case 
aes_chain_test_cases[] = {
                .feature_mask = BLOCKCIPHER_TEST_FEATURE_OOP,
                .pmd_mask = BLOCKCIPHER_TEST_TARGET_PMD_ARMV8 |
                        BLOCKCIPHER_TEST_TARGET_PMD_QAT |
-                       BLOCKCIPHER_TEST_TARGET_PMD_OPENSSL
+                       BLOCKCIPHER_TEST_TARGET_PMD_OPENSSL |
+                       BLOCKCIPHER_TEST_TARGET_PMD_DPAA2_SEC
        },
        {
                .test_descr = "AES-128-CBC HMAC-SHA1 Decryption Digest "
@@ -1441,7 +1442,8 @@ static const struct blockcipher_test_case 
aes_chain_test_cases[] = {
                .feature_mask = BLOCKCIPHER_TEST_FEATURE_OOP,
                .pmd_mask = BLOCKCIPHER_TEST_TARGET_PMD_ARMV8 |
                        BLOCKCIPHER_TEST_TARGET_PMD_QAT |
-                       BLOCKCIPHER_TEST_TARGET_PMD_OPENSSL
+                       BLOCKCIPHER_TEST_TARGET_PMD_OPENSSL |
+                       BLOCKCIPHER_TEST_TARGET_PMD_DPAA2_SEC
        },
        {
                .test_descr = "AES-128-CBC HMAC-SHA224 Encryption Digest",
@@ -1591,7 +1593,8 @@ static const struct blockcipher_test_case 
aes_cipheronly_test_cases[] = {
                .op_mask = BLOCKCIPHER_TEST_OP_ENCRYPT,
                .feature_mask = BLOCKCIPHER_TEST_FEATURE_OOP,
                .pmd_mask = BLOCKCIPHER_TEST_TARGET_PMD_OPENSSL |
-                       BLOCKCIPHER_TEST_TARGET_PMD_QAT
+                       BLOCKCIPHER_TEST_TARGET_PMD_QAT |
+                       BLOCKCIPHER_TEST_TARGET_PMD_DPAA2_SEC
        },
        {
                .test_descr = "AES-256-CBC OOP Decryption",
@@ -1599,7 +1602,8 @@ static const struct blockcipher_test_case 
aes_cipheronly_test_cases[] = {
                .op_mask = BLOCKCIPHER_TEST_OP_DECRYPT,
                .feature_mask = BLOCKCIPHER_TEST_FEATURE_OOP,
                .pmd_mask = BLOCKCIPHER_TEST_TARGET_PMD_OPENSSL |
-                       BLOCKCIPHER_TEST_TARGET_PMD_QAT
+                       BLOCKCIPHER_TEST_TARGET_PMD_QAT |
+                       BLOCKCIPHER_TEST_TARGET_PMD_DPAA2_SEC
        },
        {
                .test_descr = "AES-128-CTR Encryption",
diff --git a/test/test/test_cryptodev_des_test_vectors.h 
b/test/test/test_cryptodev_des_test_vectors.h
index ebf8869..e4efd23 100644
--- a/test/test/test_cryptodev_des_test_vectors.h
+++ b/test/test/test_cryptodev_des_test_vectors.h
@@ -1181,7 +1181,8 @@ static const struct blockcipher_test_case 
triple_des_chain_test_cases[] = {
                .op_mask = BLOCKCIPHER_TEST_OP_ENC_AUTH_GEN,
                .feature_mask = BLOCKCIPHER_TEST_FEATURE_OOP,
                .pmd_mask = BLOCKCIPHER_TEST_TARGET_PMD_OPENSSL |
-                       BLOCKCIPHER_TEST_TARGET_PMD_QAT
+                       BLOCKCIPHER_TEST_TARGET_PMD_QAT |
+                       BLOCKCIPHER_TEST_TARGET_PMD_DPAA2_SEC
        },
        {
                .test_descr = "3DES-128-CBC HMAC-SHA1 Decryption Digest"
@@ -1190,7 +1191,8 @@ static const struct blockcipher_test_case 
triple_des_chain_test_cases[] = {
                .op_mask = BLOCKCIPHER_TEST_OP_AUTH_VERIFY_DEC,
                .feature_mask = BLOCKCIPHER_TEST_FEATURE_OOP,
                .pmd_mask = BLOCKCIPHER_TEST_TARGET_PMD_OPENSSL |
-                       BLOCKCIPHER_TEST_TARGET_PMD_QAT
+                       BLOCKCIPHER_TEST_TARGET_PMD_QAT |
+                       BLOCKCIPHER_TEST_TARGET_PMD_DPAA2_SEC
        },
        {
                .test_descr = "3DES-128-CBC HMAC-SHA1 Encryption Digest"
-- 
2.9.3

Reply via email to