From patchwork Fri Dec 21 00:03:24 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Fiona Trahe X-Patchwork-Id: 49221 X-Patchwork-Delegate: gakhil@marvell.com Return-Path: X-Original-To: patchwork@dpdk.org Delivered-To: patchwork@dpdk.org Received: from [92.243.14.124] (localhost [127.0.0.1]) by dpdk.org (Postfix) with ESMTP id 4944C1BCAA; Fri, 21 Dec 2018 01:03:32 +0100 (CET) Received: from mga03.intel.com (mga03.intel.com [134.134.136.65]) by dpdk.org (Postfix) with ESMTP id 33B751BC93 for ; Fri, 21 Dec 2018 01:03:30 +0100 (CET) X-Amp-Result: SKIPPED(no attachment in message) X-Amp-File-Uploaded: False Received: from fmsmga005.fm.intel.com ([10.253.24.32]) by orsmga103.jf.intel.com with ESMTP/TLS/DHE-RSA-AES256-GCM-SHA384; 20 Dec 2018 16:03:29 -0800 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.56,379,1539673200"; d="scan'208";a="305556134" Received: from sivswdev08.ir.intel.com (HELO localhost.localdomain) ([10.237.217.47]) by fmsmga005.fm.intel.com with ESMTP; 20 Dec 2018 16:03:27 -0800 From: Fiona Trahe To: dev@dpdk.org Cc: pablo.de.lara.guarch@intel.com, fiona.trahe@intel.com, roy.fan.zhang@intel.com, akhil.goyal@nxp.com, Paul Luse Date: Fri, 21 Dec 2018 00:03:24 +0000 Message-Id: <1545350604-7499-1-git-send-email-fiona.trahe@intel.com> X-Mailer: git-send-email 1.7.0.7 Subject: [dpdk-dev] [PATCH] crypto/aesni_mb: enable out of place processing X-BeenThere: dev@dpdk.org X-Mailman-Version: 2.1.15 Precedence: list List-Id: DPDK patches and discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dev-bounces@dpdk.org Sender: "dev" Add out-of-place processing, i.e. different source and destination m_bufs, plus related capability update, tests and documentation. Document limitation to cipher-only as lib doesn't support digest generation in encrypt & generate direction for out-of-place yet. Signed-off-by: Fiona Trahe Signed-off-by: Paul Luse --- doc/guides/cryptodevs/aesni_mb.rst | 4 +- doc/guides/cryptodevs/features/aesni_mb.ini | 1 + drivers/crypto/aesni_mb/rte_aesni_mb_pmd.c | 57 +++++++++++------------ drivers/crypto/aesni_mb/rte_aesni_mb_pmd_compat.c | 56 +++++++++++----------- test/test/test_cryptodev_aes_test_vectors.h | 27 +++++++---- test/test/test_cryptodev_des_test_vectors.h | 24 ++++++---- 6 files changed, 91 insertions(+), 78 deletions(-) diff --git a/doc/guides/cryptodevs/aesni_mb.rst b/doc/guides/cryptodevs/aesni_mb.rst index 26cb4d5b2..3f639466e 100644 --- a/doc/guides/cryptodevs/aesni_mb.rst +++ b/doc/guides/cryptodevs/aesni_mb.rst @@ -56,7 +56,9 @@ Limitations ----------- * Chained mbufs are not supported. -* Only in-place is currently supported (destination address is the same as source address). +* OOP (different source/destination m_bufs) is supported for Linear buffers, but + is limited to cipher-only in the encrypt direction, i.e. encrypt & generate is + not supported with OOP. * RTE_CRYPTO_HASH_AES_GMAC is supported by library version v0.51 or later. * RTE_CRYPTO_HASH_SHA* is supported by library version v0.52 or later. diff --git a/doc/guides/cryptodevs/features/aesni_mb.ini b/doc/guides/cryptodevs/features/aesni_mb.ini index f72957451..93a534f19 100644 --- a/doc/guides/cryptodevs/features/aesni_mb.ini +++ b/doc/guides/cryptodevs/features/aesni_mb.ini @@ -11,6 +11,7 @@ CPU AVX = Y CPU AVX2 = Y CPU AVX512 = Y CPU AESNI = Y +OOP LB In LB Out = Y ; ; Supported crypto algorithms of the 'aesni_mb' crypto driver. diff --git a/drivers/crypto/aesni_mb/rte_aesni_mb_pmd.c b/drivers/crypto/aesni_mb/rte_aesni_mb_pmd.c index 4e31735ca..030fd9bcc 100644 --- a/drivers/crypto/aesni_mb/rte_aesni_mb_pmd.c +++ b/drivers/crypto/aesni_mb/rte_aesni_mb_pmd.c @@ -754,9 +754,10 @@ static inline int set_mb_job_params(JOB_AES_HMAC *job, struct aesni_mb_qp *qp, struct rte_crypto_op *op, uint8_t *digest_idx) { - struct rte_mbuf *m_src = op->sym->m_src, *m_dst; + struct rte_mbuf *m_src = op->sym->m_src; + struct rte_mbuf *m_dst = op->sym->m_dst; struct aesni_mb_session *session; - uint16_t m_offset = 0; + uint16_t dst_offset = 0; session = get_session(qp, op); if (session == NULL) { @@ -840,30 +841,20 @@ set_mb_job_params(JOB_AES_HMAC *job, struct aesni_mb_qp *qp, } /* Mutable crypto operation parameters */ - if (op->sym->m_dst) { - m_src = m_dst = op->sym->m_dst; - - /* append space for output data to mbuf */ - char *odata = rte_pktmbuf_append(m_dst, - rte_pktmbuf_data_len(op->sym->m_src)); - if (odata == NULL) { - AESNI_MB_LOG(ERR, "failed to allocate space in destination " - "mbuf for source data"); - op->status = RTE_CRYPTO_OP_STATUS_ERROR; + if (!(op->sym->m_dst)) + /* in-place operation */ + m_dst = m_src; + else + /* out-of-place operation */ + /* lib doesn't support encrypt + generate for OOP yet + * so only allow for cipher-only in encrypt direction + */ + if ((session->chain_order == CIPHER_HASH) && + (session->auth.algo != NULL_HASH)) { + op->status = RTE_CRYPTO_OP_STATUS_INVALID_SESSION; return -1; } - memcpy(odata, rte_pktmbuf_mtod(op->sym->m_src, void*), - rte_pktmbuf_data_len(op->sym->m_src)); - } else { - m_dst = m_src; - if (job->hash_alg == AES_CCM || (job->hash_alg == AES_GMAC && - session->cipher.mode == GCM)) - m_offset = op->sym->aead.data.offset; - else - m_offset = op->sym->cipher.data.offset; - } - /* Set digest output location */ if (job->hash_alg != NULL_HASH && session->auth.operation == RTE_CRYPTO_AUTH_OP_VERIFY) { @@ -892,16 +883,15 @@ set_mb_job_params(JOB_AES_HMAC *job, struct aesni_mb_qp *qp, /* Set IV parameters */ job->iv_len_in_bytes = session->iv.length; - /* Data Parameter */ - job->src = rte_pktmbuf_mtod(m_src, uint8_t *); - job->dst = rte_pktmbuf_mtod_offset(m_dst, uint8_t *, m_offset); - + /* Data Parameters */ switch (job->hash_alg) { case AES_CCM: + dst_offset = op->sym->aead.data.offset; job->cipher_start_src_offset_in_bytes = op->sym->aead.data.offset; job->msg_len_to_cipher_in_bytes = op->sym->aead.data.length; - job->hash_start_src_offset_in_bytes = op->sym->aead.data.offset; + job->hash_start_src_offset_in_bytes = + op->sym->aead.data.offset; job->msg_len_to_hash_in_bytes = op->sym->aead.data.length; job->iv = rte_crypto_op_ctod_offset(op, uint8_t *, @@ -910,6 +900,7 @@ set_mb_job_params(JOB_AES_HMAC *job, struct aesni_mb_qp *qp, case AES_GMAC: if (session->cipher.mode == GCM) { + dst_offset = op->sym->aead.data.offset; job->cipher_start_src_offset_in_bytes = op->sym->aead.data.offset; job->hash_start_src_offset_in_bytes = @@ -919,6 +910,7 @@ set_mb_job_params(JOB_AES_HMAC *job, struct aesni_mb_qp *qp, job->msg_len_to_hash_in_bytes = op->sym->aead.data.length; } else { + dst_offset = op->sym->cipher.data.offset; job->cipher_start_src_offset_in_bytes = op->sym->auth.data.offset; job->hash_start_src_offset_in_bytes = @@ -932,6 +924,7 @@ set_mb_job_params(JOB_AES_HMAC *job, struct aesni_mb_qp *qp, break; default: + dst_offset = op->sym->cipher.data.offset; job->cipher_start_src_offset_in_bytes = op->sym->cipher.data.offset; job->msg_len_to_cipher_in_bytes = op->sym->cipher.data.length; @@ -942,6 +935,8 @@ set_mb_job_params(JOB_AES_HMAC *job, struct aesni_mb_qp *qp, job->iv = rte_crypto_op_ctod_offset(op, uint8_t *, session->iv.offset); } + job->src = rte_pktmbuf_mtod(m_src, uint8_t *); + job->dst = rte_pktmbuf_mtod_offset(m_dst, uint8_t *, dst_offset); /* Set user data to be crypto operation data struct */ job->user_data = op; @@ -961,7 +956,7 @@ static inline void generate_digest(JOB_AES_HMAC *job, struct rte_crypto_op *op, struct aesni_mb_session *sess) { - /* No extra copy neeed */ + /* No extra copy needed */ if (likely(sess->auth.req_digest_len == sess->auth.gen_digest_len)) return; @@ -1215,7 +1210,9 @@ cryptodev_aesni_mb_create(const char *name, dev->feature_flags = RTE_CRYPTODEV_FF_SYMMETRIC_CRYPTO | RTE_CRYPTODEV_FF_SYM_OPERATION_CHAINING | - RTE_CRYPTODEV_FF_CPU_AESNI; + RTE_CRYPTODEV_FF_CPU_AESNI | + RTE_CRYPTODEV_FF_OOP_LB_IN_LB_OUT; + mb_mgr = alloc_mb_mgr(0); if (mb_mgr == NULL) diff --git a/drivers/crypto/aesni_mb/rte_aesni_mb_pmd_compat.c b/drivers/crypto/aesni_mb/rte_aesni_mb_pmd_compat.c index 56ce54946..2bdb9c570 100644 --- a/drivers/crypto/aesni_mb/rte_aesni_mb_pmd_compat.c +++ b/drivers/crypto/aesni_mb/rte_aesni_mb_pmd_compat.c @@ -754,9 +754,10 @@ static inline int set_mb_job_params(JOB_AES_HMAC *job, struct aesni_mb_qp *qp, struct rte_crypto_op *op, uint8_t *digest_idx) { - struct rte_mbuf *m_src = op->sym->m_src, *m_dst; + struct rte_mbuf *m_src = op->sym->m_src; + struct rte_mbuf *m_dst = op->sym->m_dst; struct aesni_mb_session *session; - uint16_t m_offset = 0; + uint16_t dst_offset = 0; session = get_session(qp, op); if (session == NULL) { @@ -840,30 +841,20 @@ set_mb_job_params(JOB_AES_HMAC *job, struct aesni_mb_qp *qp, } /* Mutable crypto operation parameters */ - if (op->sym->m_dst) { - m_src = m_dst = op->sym->m_dst; - - /* append space for output data to mbuf */ - char *odata = rte_pktmbuf_append(m_dst, - rte_pktmbuf_data_len(op->sym->m_src)); - if (odata == NULL) { - AESNI_MB_LOG(ERR, "failed to allocate space in destination " - "mbuf for source data"); - op->status = RTE_CRYPTO_OP_STATUS_ERROR; + if (!(op->sym->m_dst)) + /* in-place operation */ + m_dst = m_src; + else + /* out-of-place operation */ + /* lib doesn't support encrypt + generate for OOP yet + * so only allow for cipher-only in encrypt direction + */ + if ((session->chain_order == CIPHER_HASH) && + (session->auth.algo != NULL_HASH)) { + op->status = RTE_CRYPTO_OP_STATUS_INVALID_SESSION; return -1; } - memcpy(odata, rte_pktmbuf_mtod(op->sym->m_src, void*), - rte_pktmbuf_data_len(op->sym->m_src)); - } else { - m_dst = m_src; - if (job->hash_alg == AES_CCM || (job->hash_alg == AES_GMAC && - session->cipher.mode == GCM)) - m_offset = op->sym->aead.data.offset; - else - m_offset = op->sym->cipher.data.offset; - } - /* Set digest output location */ if (job->hash_alg != NULL_HASH && session->auth.operation == RTE_CRYPTO_AUTH_OP_VERIFY) { @@ -892,16 +883,15 @@ set_mb_job_params(JOB_AES_HMAC *job, struct aesni_mb_qp *qp, /* Set IV parameters */ job->iv_len_in_bytes = session->iv.length; - /* Data Parameter */ - job->src = rte_pktmbuf_mtod(m_src, uint8_t *); - job->dst = rte_pktmbuf_mtod_offset(m_dst, uint8_t *, m_offset); - + /* Data Parameters */ switch (job->hash_alg) { case AES_CCM: + dst_offset = op->sym->aead.data.offset; job->cipher_start_src_offset_in_bytes = op->sym->aead.data.offset; job->msg_len_to_cipher_in_bytes = op->sym->aead.data.length; - job->hash_start_src_offset_in_bytes = op->sym->aead.data.offset; + job->hash_start_src_offset_in_bytes = + op->sym->aead.data.offset; job->msg_len_to_hash_in_bytes = op->sym->aead.data.length; job->iv = rte_crypto_op_ctod_offset(op, uint8_t *, @@ -910,6 +900,7 @@ set_mb_job_params(JOB_AES_HMAC *job, struct aesni_mb_qp *qp, case AES_GMAC: if (session->cipher.mode == GCM) { + dst_offset = op->sym->aead.data.offset; job->cipher_start_src_offset_in_bytes = op->sym->aead.data.offset; job->hash_start_src_offset_in_bytes = @@ -919,6 +910,7 @@ set_mb_job_params(JOB_AES_HMAC *job, struct aesni_mb_qp *qp, job->msg_len_to_hash_in_bytes = op->sym->aead.data.length; } else { + dst_offset = op->sym->cipher.data.offset; job->cipher_start_src_offset_in_bytes = op->sym->auth.data.offset; job->hash_start_src_offset_in_bytes = @@ -932,6 +924,7 @@ set_mb_job_params(JOB_AES_HMAC *job, struct aesni_mb_qp *qp, break; default: + dst_offset = op->sym->cipher.data.offset; job->cipher_start_src_offset_in_bytes = op->sym->cipher.data.offset; job->msg_len_to_cipher_in_bytes = op->sym->cipher.data.length; @@ -942,6 +935,8 @@ set_mb_job_params(JOB_AES_HMAC *job, struct aesni_mb_qp *qp, job->iv = rte_crypto_op_ctod_offset(op, uint8_t *, session->iv.offset); } + job->src = rte_pktmbuf_mtod(m_src, uint8_t *); + job->dst = rte_pktmbuf_mtod_offset(m_dst, uint8_t *, dst_offset); /* Set user data to be crypto operation data struct */ job->user_data = op; @@ -960,7 +955,7 @@ static inline void generate_digest(JOB_AES_HMAC *job, struct rte_crypto_op *op, struct aesni_mb_session *sess) { - /* No extra copy neeed */ + /* No extra copy needed */ if (likely(sess->auth.req_digest_len == sess->auth.gen_digest_len)) return; @@ -1210,7 +1205,8 @@ cryptodev_aesni_mb_create(const char *name, dev->feature_flags = RTE_CRYPTODEV_FF_SYMMETRIC_CRYPTO | RTE_CRYPTODEV_FF_SYM_OPERATION_CHAINING | - RTE_CRYPTODEV_FF_CPU_AESNI; + RTE_CRYPTODEV_FF_CPU_AESNI | + RTE_CRYPTODEV_FF_OOP_LB_IN_LB_OUT; switch (vector_mode) { case RTE_AESNI_MB_SSE: diff --git a/test/test/test_cryptodev_aes_test_vectors.h b/test/test/test_cryptodev_aes_test_vectors.h index 6dd8e5f96..7dc5fdeb5 100644 --- a/test/test/test_cryptodev_aes_test_vectors.h +++ b/test/test/test_cryptodev_aes_test_vectors.h @@ -1485,7 +1485,8 @@ static const struct blockcipher_test_case aes_chain_test_cases[] = { BLOCKCIPHER_TEST_TARGET_PMD_DPAA2_SEC | BLOCKCIPHER_TEST_TARGET_PMD_DPAA_SEC | BLOCKCIPHER_TEST_TARGET_PMD_CAAM_JR | - BLOCKCIPHER_TEST_TARGET_PMD_OCTEONTX + BLOCKCIPHER_TEST_TARGET_PMD_OCTEONTX | + BLOCKCIPHER_TEST_TARGET_PMD_MB }, { .test_descr = "AES-128-CBC HMAC-SHA224 Encryption Digest", @@ -1698,7 +1699,8 @@ static const struct blockcipher_test_case aes_cipheronly_test_cases[] = { BLOCKCIPHER_TEST_TARGET_PMD_DPAA_SEC | BLOCKCIPHER_TEST_TARGET_PMD_CAAM_JR | BLOCKCIPHER_TEST_TARGET_PMD_CCP | - BLOCKCIPHER_TEST_TARGET_PMD_VIRTIO + BLOCKCIPHER_TEST_TARGET_PMD_VIRTIO | + BLOCKCIPHER_TEST_TARGET_PMD_MB }, { .test_descr = "AES-256-CBC OOP Decryption", @@ -1711,7 +1713,8 @@ static const struct blockcipher_test_case aes_cipheronly_test_cases[] = { BLOCKCIPHER_TEST_TARGET_PMD_DPAA_SEC | BLOCKCIPHER_TEST_TARGET_PMD_CAAM_JR | BLOCKCIPHER_TEST_TARGET_PMD_CCP | - BLOCKCIPHER_TEST_TARGET_PMD_VIRTIO + BLOCKCIPHER_TEST_TARGET_PMD_VIRTIO | + BLOCKCIPHER_TEST_TARGET_PMD_MB }, { .test_descr = "AES-128-CTR Encryption", @@ -1873,42 +1876,48 @@ static const struct blockcipher_test_case aes_docsis_test_cases[] = { .test_data = &aes_test_data_docsis_1, .op_mask = BLOCKCIPHER_TEST_OP_ENCRYPT, .feature_mask = BLOCKCIPHER_TEST_FEATURE_OOP, - .pmd_mask = BLOCKCIPHER_TEST_TARGET_PMD_QAT + .pmd_mask = BLOCKCIPHER_TEST_TARGET_PMD_QAT | + BLOCKCIPHER_TEST_TARGET_PMD_MB }, { .test_descr = "AES-DOCSIS-BPI OOP Runt Block Encryption", .test_data = &aes_test_data_docsis_2, .op_mask = BLOCKCIPHER_TEST_OP_ENCRYPT, .feature_mask = BLOCKCIPHER_TEST_FEATURE_OOP, - .pmd_mask = BLOCKCIPHER_TEST_TARGET_PMD_QAT + .pmd_mask = BLOCKCIPHER_TEST_TARGET_PMD_QAT | + BLOCKCIPHER_TEST_TARGET_PMD_MB }, { .test_descr = "AES-DOCSIS-BPI OOP Uneven Block Encryption", .test_data = &aes_test_data_docsis_3, .op_mask = BLOCKCIPHER_TEST_OP_ENCRYPT, .feature_mask = BLOCKCIPHER_TEST_FEATURE_OOP, - .pmd_mask = BLOCKCIPHER_TEST_TARGET_PMD_QAT + .pmd_mask = BLOCKCIPHER_TEST_TARGET_PMD_QAT | + BLOCKCIPHER_TEST_TARGET_PMD_MB }, { .test_descr = "AES-DOCSIS-BPI OOP Full Block Decryption", .test_data = &aes_test_data_docsis_1, .op_mask = BLOCKCIPHER_TEST_OP_DECRYPT, .feature_mask = BLOCKCIPHER_TEST_FEATURE_OOP, - .pmd_mask = BLOCKCIPHER_TEST_TARGET_PMD_QAT + .pmd_mask = BLOCKCIPHER_TEST_TARGET_PMD_QAT | + BLOCKCIPHER_TEST_TARGET_PMD_MB }, { .test_descr = "AES-DOCSIS-BPI OOP Runt Block Decryption", .test_data = &aes_test_data_docsis_2, .op_mask = BLOCKCIPHER_TEST_OP_DECRYPT, .feature_mask = BLOCKCIPHER_TEST_FEATURE_OOP, - .pmd_mask = BLOCKCIPHER_TEST_TARGET_PMD_QAT + .pmd_mask = BLOCKCIPHER_TEST_TARGET_PMD_QAT | + BLOCKCIPHER_TEST_TARGET_PMD_MB }, { .test_descr = "AES-DOCSIS-BPI OOP Uneven Block Decryption", .test_data = &aes_test_data_docsis_3, .op_mask = BLOCKCIPHER_TEST_OP_DECRYPT, .feature_mask = BLOCKCIPHER_TEST_FEATURE_OOP, - .pmd_mask = BLOCKCIPHER_TEST_TARGET_PMD_QAT + .pmd_mask = BLOCKCIPHER_TEST_TARGET_PMD_QAT | + BLOCKCIPHER_TEST_TARGET_PMD_MB } }; #endif /* TEST_CRYPTODEV_AES_TEST_VECTORS_H_ */ diff --git a/test/test/test_cryptodev_des_test_vectors.h b/test/test/test_cryptodev_des_test_vectors.h index f1b8cbd45..a71b0e902 100644 --- a/test/test/test_cryptodev_des_test_vectors.h +++ b/test/test/test_cryptodev_des_test_vectors.h @@ -1016,7 +1016,8 @@ static const struct blockcipher_test_case des_docsis_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_MB }, { .test_descr = "DES-DOCSIS-BPI OOP Runt Block Encryption", @@ -1024,7 +1025,8 @@ static const struct blockcipher_test_case des_docsis_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_MB }, { .test_descr = "DES-DOCSIS-BPI OOP Uneven Encryption", @@ -1032,7 +1034,8 @@ static const struct blockcipher_test_case des_docsis_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_MB }, { .test_descr = "DES-DOCSIS-BPI OOP Full Block Decryption", @@ -1040,7 +1043,8 @@ static const struct blockcipher_test_case des_docsis_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_MB }, { .test_descr = "DES-DOCSIS-BPI OOP Runt Block Decryption", @@ -1048,7 +1052,8 @@ static const struct blockcipher_test_case des_docsis_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_MB }, { .test_descr = "DES-DOCSIS-BPI OOP Uneven Decryption", @@ -1056,7 +1061,8 @@ static const struct blockcipher_test_case des_docsis_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_MB } }; @@ -1200,7 +1206,8 @@ static const struct blockcipher_test_case triple_des_chain_test_cases[] = { BLOCKCIPHER_TEST_TARGET_PMD_QAT | BLOCKCIPHER_TEST_TARGET_PMD_DPAA2_SEC | BLOCKCIPHER_TEST_TARGET_PMD_DPAA_SEC | - BLOCKCIPHER_TEST_TARGET_PMD_CAAM_JR + BLOCKCIPHER_TEST_TARGET_PMD_CAAM_JR | + BLOCKCIPHER_TEST_TARGET_PMD_MB }, { .test_descr = "3DES-128-CBC HMAC-SHA1 Decryption Digest" @@ -1212,7 +1219,8 @@ static const struct blockcipher_test_case triple_des_chain_test_cases[] = { BLOCKCIPHER_TEST_TARGET_PMD_QAT | BLOCKCIPHER_TEST_TARGET_PMD_DPAA2_SEC | BLOCKCIPHER_TEST_TARGET_PMD_DPAA_SEC | - BLOCKCIPHER_TEST_TARGET_PMD_CAAM_JR + BLOCKCIPHER_TEST_TARGET_PMD_CAAM_JR | + BLOCKCIPHER_TEST_TARGET_PMD_MB }, { .test_descr = "3DES-128-CBC HMAC-SHA1 Encryption Digest"