Increase the minimum required IPsec MB library version to 2.0 As a consequence, clean up the aesni_mb PMD code.
Signed-off-by: Radu Nicolau <[email protected]> --- doc/guides/cryptodevs/aesni_gcm.rst | 7 +++--- doc/guides/cryptodevs/aesni_mb.rst | 7 +++--- doc/guides/cryptodevs/qat.rst | 2 +- doc/guides/cryptodevs/snow3g.rst | 3 ++- doc/guides/cryptodevs/zuc.rst | 3 ++- doc/guides/rel_notes/release_26_11.rst | 4 +++ drivers/common/qat/meson.build | 4 +-- drivers/crypto/ipsec_mb/meson.build | 2 +- drivers/crypto/ipsec_mb/pmd_aesni_mb.c | 28 +++------------------ drivers/crypto/ipsec_mb/pmd_aesni_mb_priv.h | 8 ------ 10 files changed, 23 insertions(+), 45 deletions(-) diff --git a/doc/guides/cryptodevs/aesni_gcm.rst b/doc/guides/cryptodevs/aesni_gcm.rst index 4683e9dd86..aefc1cedcb 100644 --- a/doc/guides/cryptodevs/aesni_gcm.rst +++ b/doc/guides/cryptodevs/aesni_gcm.rst @@ -40,8 +40,8 @@ Installation To build DPDK with the AESNI_GCM_PMD the user is required to download the multi-buffer library from `here <https://github.com/01org/intel-ipsec-mb>`_ and compile it on their user system before building DPDK. -The latest version of the library supported by this PMD is v1.5, which -can be downloaded in `<https://github.com/01org/intel-ipsec-mb/archive/v1.5.zip>`_. +The latest version of the library supported by this PMD is v2.0, which +can be downloaded from `<https://github.com/01org/intel-ipsec-mb/archive/v2.0.zip>`_. For Arm system, ARM64 port of the multi-buffer library can be downloaded from https://gitlab.arm.com/arm-reference-solutions/ipsec-mb/-/tree/main/. @@ -77,7 +77,8 @@ and the external crypto libraries supported by them: ============= ================================ 20.11 - 21.08 Multi-buffer library 0.53 - 1.3 21.11 - 24.07 Multi-buffer library 1.0 - 1.5 - 24.11+ Multi-buffer library 1.4+ + 24.11 - 26.07 Multi-buffer library 1.4 - 2.0 + 26.11+ Multi-buffer library 2.0+ ============= ================================ Initialization diff --git a/doc/guides/cryptodevs/aesni_mb.rst b/doc/guides/cryptodevs/aesni_mb.rst index ab7a6138a8..add3c03b74 100644 --- a/doc/guides/cryptodevs/aesni_mb.rst +++ b/doc/guides/cryptodevs/aesni_mb.rst @@ -96,8 +96,8 @@ Installation To build DPDK with the AESNI_MB_PMD the user is required to download the multi-buffer library from `here <https://github.com/01org/intel-ipsec-mb>`_ and compile it on their user system before building DPDK. -The latest version of the library supported by this PMD is v1.5, which -can be downloaded from `<https://github.com/01org/intel-ipsec-mb/archive/v1.5.zip>`_. +The latest version of the library supported by this PMD is v2.0, which +can be downloaded from `<https://github.com/01org/intel-ipsec-mb/archive/v2.0.zip>`_. For Arm system, ARM64 port of the multi-buffer library can be downloaded from https://gitlab.arm.com/arm-reference-solutions/ipsec-mb/-/tree/main/. @@ -132,7 +132,8 @@ and the Multi-Buffer library version supported by them: ============== ============================ 20.11 - 21.08 0.53 - 1.3 21.11 - 24.07 1.0 - 1.5 - 24.11+ 1.4+ + 24.11 - 26.07 1.4 - 2.0 + 26.11+ 2.0+ ============== ============================ Initialization diff --git a/doc/guides/cryptodevs/qat.rst b/doc/guides/cryptodevs/qat.rst index 6c96c5f88d..1738152435 100644 --- a/doc/guides/cryptodevs/qat.rst +++ b/doc/guides/cryptodevs/qat.rst @@ -360,7 +360,7 @@ that were previously used for HMAC precomputes. **On x86 platforms:** -* Intel IPsec MB library (v1.4.0+) is required for HMAC precomputes. +* Intel IPsec MB library (v2.0+) is required for HMAC precomputes. * OpenSSL (3.0+) is optional for DOCSIS BPI cipher fallback. **On ARM platforms:** diff --git a/doc/guides/cryptodevs/snow3g.rst b/doc/guides/cryptodevs/snow3g.rst index e1db5d39ad..e3a47263e1 100644 --- a/doc/guides/cryptodevs/snow3g.rst +++ b/doc/guides/cryptodevs/snow3g.rst @@ -82,7 +82,8 @@ and the external crypto libraries supported by them: ============= ================================ 20.02 - 21.08 Multi-buffer library 0.53 - 1.3 21.11 - 24.07 Multi-buffer library 1.0 - 1.5 - 24.11+ Multi-buffer library 1.4+ + 24.11 - 26.07 Multi-buffer library 1.4 - 2.0 + 26.11+ Multi-buffer library 2.0+ ============= ================================ Initialization diff --git a/doc/guides/cryptodevs/zuc.rst b/doc/guides/cryptodevs/zuc.rst index 91b7267362..22b70bc750 100644 --- a/doc/guides/cryptodevs/zuc.rst +++ b/doc/guides/cryptodevs/zuc.rst @@ -81,7 +81,8 @@ and the external crypto libraries supported by them: ============= ================================ 20.02 - 21.08 Multi-buffer library 0.53 - 1.3 21.11 - 24.07 Multi-buffer library 1.0 - 1.5 - 24.11+ Multi-buffer library 1.4+ + 24.11 - 26.07 Multi-buffer library 1.4 - 2.0 + 26.11+ Multi-buffer library 2.0+ ============= ================================ Initialization diff --git a/doc/guides/rel_notes/release_26_11.rst b/doc/guides/rel_notes/release_26_11.rst index c8cc86295d..7fc97ca4c9 100644 --- a/doc/guides/rel_notes/release_26_11.rst +++ b/doc/guides/rel_notes/release_26_11.rst @@ -59,6 +59,10 @@ New Features Removed Items ------------- +* **Updated AESNI_MB crypto driver.** + + * Remove support for versions older than 2.0 of IPsec MB Library. + .. This section should contain removed items in this release. Sample format: * Add a short 1-2 sentence description of the removed item diff --git a/drivers/common/qat/meson.build b/drivers/common/qat/meson.build index b946354a42..17526d3940 100644 --- a/drivers/common/qat/meson.build +++ b/drivers/common/qat/meson.build @@ -38,7 +38,7 @@ endif # IPsec MB is REQUIRED for HMAC precomputes (no OpenSSL 3.0 alternative) # OpenSSL is OPTIONAL for DOCSIS BPI cipher fallback -IMB_required_ver = '1.4.0' +IMB_required_ver = '2.0.0' # Only check IPsec MB if qat_crypto wasn't already disabled if qat_crypto @@ -47,8 +47,6 @@ if qat_crypto else IMB_header = '#include<intel-ipsec-mb.h>' endif - - # Check for IPsec MB library (required) libipsecmb = cc.find_library('IPSec_MB', required: false) if libipsecmb.found() and cc.links( 'int main(void) {return 0;}', dependencies: libipsecmb) diff --git a/drivers/crypto/ipsec_mb/meson.build b/drivers/crypto/ipsec_mb/meson.build index eb2085725b..41362c2f4f 100644 --- a/drivers/crypto/ipsec_mb/meson.build +++ b/drivers/crypto/ipsec_mb/meson.build @@ -9,7 +9,7 @@ endif cflags += no_wvla_cflag -IMB_required_ver = '1.4.0' +IMB_required_ver = '2.0.0' IMB_header = '#include<intel-ipsec-mb.h>' if arch_subdir == 'arm' IMB_header = '#include<ipsec-mb.h>' diff --git a/drivers/crypto/ipsec_mb/pmd_aesni_mb.c b/drivers/crypto/ipsec_mb/pmd_aesni_mb.c index 4c5b6e70b5..02bacd020b 100644 --- a/drivers/crypto/ipsec_mb/pmd_aesni_mb.c +++ b/drivers/crypto/ipsec_mb/pmd_aesni_mb.c @@ -20,10 +20,8 @@ is_aead_algo(IMB_HASH_ALG hash_alg, IMB_CIPHER_MODE cipher_mode) { return (hash_alg == IMB_AUTH_CHACHA20_POLY1305 || hash_alg == IMB_AUTH_AES_CCM || - cipher_mode == IMB_CIPHER_GCM -#if IMB_VERSION(1, 5, 0) < IMB_VERSION_NUM - || cipher_mode == IMB_CIPHER_SM4_GCM -#endif + cipher_mode == IMB_CIPHER_GCM || + cipher_mode == IMB_CIPHER_SM4_GCM ); } @@ -295,14 +293,12 @@ aesni_mb_set_session_auth_parameters(IMB_MGR *mb_mgr, sess->template_job.hash_alg = IMB_AUTH_SHA_512; auth_precompute = 0; break; -#if IMB_VERSION(1, 5, 0) <= IMB_VERSION_NUM case RTE_CRYPTO_AUTH_SM3: sess->template_job.hash_alg = IMB_AUTH_SM3; break; case RTE_CRYPTO_AUTH_SM3_HMAC: sess->template_job.hash_alg = IMB_AUTH_HMAC_SM3; break; -#endif default: IPSEC_MB_LOG(ERR, "Unsupported authentication algorithm selection"); @@ -353,9 +349,7 @@ aesni_mb_set_session_cipher_parameters(const IMB_MGR *mb_mgr, uint8_t is_zuc = 0; uint8_t is_snow3g = 0; uint8_t is_kasumi = 0; -#if IMB_VERSION(1, 5, 0) <= IMB_VERSION_NUM uint8_t is_sm4 = 0; -#endif if (xform == NULL) { sess->template_job.cipher_mode = IMB_CIPHER_NULL; @@ -426,7 +420,6 @@ aesni_mb_set_session_cipher_parameters(const IMB_MGR *mb_mgr, sess->iv.offset = xform->cipher.iv.offset; sess->template_job.iv_len_in_bytes = xform->cipher.iv.length; return 0; -#if IMB_VERSION(1, 5, 0) <= IMB_VERSION_NUM case RTE_CRYPTO_CIPHER_SM4_CBC: sess->template_job.cipher_mode = IMB_CIPHER_SM4_CBC; is_sm4 = 1; @@ -435,13 +428,10 @@ aesni_mb_set_session_cipher_parameters(const IMB_MGR *mb_mgr, sess->template_job.cipher_mode = IMB_CIPHER_SM4_ECB; is_sm4 = 1; break; -#endif -#if IMB_VERSION(1, 5, 0) < IMB_VERSION_NUM case RTE_CRYPTO_CIPHER_SM4_CTR: sess->template_job.cipher_mode = IMB_CIPHER_SM4_CNTR; is_sm4 = 1; break; -#endif default: IPSEC_MB_LOG(ERR, "Unsupported cipher mode parameter"); return -ENOTSUP; @@ -576,7 +566,6 @@ aesni_mb_set_session_cipher_parameters(const IMB_MGR *mb_mgr, &sess->cipher.pKeySched_kasumi_cipher); sess->template_job.enc_keys = &sess->cipher.pKeySched_kasumi_cipher; sess->template_job.dec_keys = &sess->cipher.pKeySched_kasumi_cipher; -#if IMB_VERSION(1, 5, 0) <= IMB_VERSION_NUM } else if (is_sm4) { sess->template_job.key_len_in_bytes = IMB_KEY_128_BYTES; IMB_SM4_KEYEXP(mb_mgr, xform->cipher.key.data, @@ -584,7 +573,6 @@ aesni_mb_set_session_cipher_parameters(const IMB_MGR *mb_mgr, sess->cipher.expanded_sm4_keys.decode); sess->template_job.enc_keys = sess->cipher.expanded_sm4_keys.encode; sess->template_job.dec_keys = sess->cipher.expanded_sm4_keys.decode; -#endif } else { if (xform->cipher.key.length != 8) { IPSEC_MB_LOG(ERR, "Invalid cipher key length"); @@ -724,7 +712,6 @@ aesni_mb_set_session_aead_parameters(IMB_MGR *mb_mgr, return -EINVAL; } break; -#if IMB_VERSION(1, 5, 0) < IMB_VERSION_NUM case RTE_CRYPTO_AEAD_SM4_GCM: sess->template_job.cipher_mode = IMB_CIPHER_SM4_GCM; sess->template_job.hash_alg = IMB_AUTH_SM4_GCM; @@ -739,7 +726,6 @@ aesni_mb_set_session_aead_parameters(IMB_MGR *mb_mgr, sess->template_job.enc_keys = &sess->cipher.gcm_key; sess->template_job.dec_keys = &sess->cipher.gcm_key; break; -#endif default: IPSEC_MB_LOG(ERR, "Unsupported aead mode parameter"); return -ENOTSUP; @@ -1065,11 +1051,11 @@ set_cpu_mb_job_params(IMB_JOB *job, struct aesni_mb_session *session, job->u.CHACHA20_POLY1305.aad = aad->va; break; -#if IMB_VERSION(1, 5, 0) < IMB_VERSION_NUM + case IMB_AUTH_SM4_GCM: job->u.GCM.aad = aad->va; break; -#endif + default: break; @@ -1618,11 +1604,9 @@ set_mb_job_params(IMB_JOB *job, struct ipsec_mb_qp *qp, imb_set_session(mb_mgr, job); } break; -#if IMB_VERSION(1, 5, 0) < IMB_VERSION_NUM case IMB_AUTH_SM4_GCM: job->u.GCM.aad = op->sym->aead.aad.data; break; -#endif default: break; } @@ -1753,7 +1737,6 @@ set_mb_job_params(IMB_JOB *job, struct ipsec_mb_qp *qp, job->iv = rte_crypto_op_ctod_offset(op, uint8_t *, session->iv.offset); break; -#if IMB_VERSION(1, 5, 0) < IMB_VERSION_NUM case IMB_AUTH_SM4_GCM: job->hash_start_src_offset_in_bytes = 0; /* @@ -1766,7 +1749,6 @@ set_mb_job_params(IMB_JOB *job, struct ipsec_mb_qp *qp, job->iv = rte_crypto_op_ctod_offset(op, uint8_t *, session->iv.offset); break; -#endif default: job->hash_start_src_offset_in_bytes = auth_start_offset( @@ -1813,11 +1795,9 @@ set_mb_job_params(IMB_JOB *job, struct ipsec_mb_qp *qp, job->msg_len_to_cipher_in_bytes = 0; job->cipher_start_src_offset_in_bytes = 0; break; -#if IMB_VERSION(1, 5, 0) < IMB_VERSION_NUM case IMB_CIPHER_SM4_GCM: job->msg_len_to_cipher_in_bytes = op->sym->aead.data.length; break; -#endif default: job->cipher_start_src_offset_in_bytes = op->sym->cipher.data.offset; diff --git a/drivers/crypto/ipsec_mb/pmd_aesni_mb_priv.h b/drivers/crypto/ipsec_mb/pmd_aesni_mb_priv.h index 6dc90a9849..ad38a1e28a 100644 --- a/drivers/crypto/ipsec_mb/pmd_aesni_mb_priv.h +++ b/drivers/crypto/ipsec_mb/pmd_aesni_mb_priv.h @@ -725,7 +725,6 @@ static const struct rte_cryptodev_capabilities aesni_mb_capabilities[] = { }, } }, } }, -#if IMB_VERSION(1, 5, 0) <= IMB_VERSION_NUM { /* SM3 */ .op = RTE_CRYPTO_OP_TYPE_SYMMETRIC, {.sym = { @@ -804,8 +803,6 @@ static const struct rte_cryptodev_capabilities aesni_mb_capabilities[] = { }, } }, } }, -#endif -#if IMB_VERSION(1, 5, 0) < IMB_VERSION_NUM { /* SM4 CTR */ .op = RTE_CRYPTO_OP_TYPE_SYMMETRIC, {.sym = { @@ -856,7 +853,6 @@ static const struct rte_cryptodev_capabilities aesni_mb_capabilities[] = { }, } }, } }, -#endif RTE_CRYPTODEV_END_OF_CAPABILITIES_LIST() }; @@ -964,10 +960,8 @@ static const unsigned int auth_digest_byte_lengths[] = { [IMB_AUTH_ZUC_EIA3_BITLEN] = 4, [IMB_AUTH_SNOW3G_UIA2_BITLEN] = 4, [IMB_AUTH_KASUMI_UIA1] = 4, -#if IMB_VERSION(1, 5, 0) <= IMB_VERSION_NUM [IMB_AUTH_SM3] = 32, [IMB_AUTH_HMAC_SM3] = 32, -#endif /**< Vector mode dependent pointer table of the multi-buffer APIs */ }; @@ -1029,7 +1023,6 @@ struct __rte_cache_aligned aesni_mb_session { /* *< SNOW3G scheduled cipher key */ kasumi_key_sched_t pKeySched_kasumi_cipher; /* *< KASUMI scheduled cipher key */ -#if IMB_VERSION(1, 5, 0) <= IMB_VERSION_NUM struct { alignas(16) uint32_t encode[IMB_SM4_KEY_SCHEDULE_ROUNDS]; /* *< encode key */ @@ -1039,7 +1032,6 @@ struct __rte_cache_aligned aesni_mb_session { /* *< Expanded SM4 keys - Original 128 bit key is * expanded into 32 round keys, each 32 bits. */ -#endif }; } cipher; -- 2.52.0

