diff options
author | Damjan Marion <damarion@cisco.com> | 2020-05-11 14:03:29 +0200 |
---|---|---|
committer | Damjan Marion <damarion@cisco.com> | 2020-05-11 21:09:04 +0200 |
commit | 73a60b2da44847f3725d362a49207330d4d22aa5 (patch) | |
tree | 28cce70187bb368298dea6f2cfabed573a7e500f /src/plugins/crypto_native/main.c | |
parent | 1ae16c8f3bebe33b2404ad845a2f09f910a06390 (diff) |
crypto-native: properly deal with broken or outdated toolchains
Avoids crash due to missing symbol, when build system detects toolchain
which is not able to produce binaries for all targets we need....
Type: fix
Change-Id: I77ee63cb8dca3c9e4e83a6235c60f1439a472444
Signed-off-by: Damjan Marion <damarion@cisco.com>
Diffstat (limited to 'src/plugins/crypto_native/main.c')
-rw-r--r-- | src/plugins/crypto_native/main.c | 47 |
1 files changed, 30 insertions, 17 deletions
diff --git a/src/plugins/crypto_native/main.c b/src/plugins/crypto_native/main.c index 7a42e4b416b..5d6e647ed4c 100644 --- a/src/plugins/crypto_native/main.c +++ b/src/plugins/crypto_native/main.c @@ -77,39 +77,52 @@ crypto_native_init (vlib_main_t * vm) vnet_crypto_register_engine (vm, "native", 100, "Native ISA Optimized Crypto"); + if (0); #if __x86_64__ - if (clib_cpu_supports_vaes ()) - error = crypto_native_aes_cbc_init_vaes (vm); - else if (clib_cpu_supports_avx512f ()) - error = crypto_native_aes_cbc_init_avx512 (vm); - else if (clib_cpu_supports_avx2 ()) - error = crypto_native_aes_cbc_init_avx2 (vm); + else if (crypto_native_aes_cbc_init_icl && clib_cpu_supports_vaes ()) + error = crypto_native_aes_cbc_init_icl (vm); + else if (crypto_native_aes_cbc_init_skx && clib_cpu_supports_avx512f ()) + error = crypto_native_aes_cbc_init_skx (vm); + else if (crypto_native_aes_cbc_init_hsw && clib_cpu_supports_avx2 ()) + error = crypto_native_aes_cbc_init_hsw (vm); + else if (crypto_native_aes_cbc_init_slm) + error = crypto_native_aes_cbc_init_slm (vm); +#endif +#if __aarch64__ + else if (crypto_native_aes_cbc_init_neon) + error = crypto_native_aes_cbc_init_neon (vm); +#endif else - error = crypto_native_aes_cbc_init_sse42 (vm); + error = clib_error_return (0, "No AES CBC implemenation available"); if (error) goto error; +#if __x86_64__ if (clib_cpu_supports_pclmulqdq ()) { - if (clib_cpu_supports_vaes ()) - error = crypto_native_aes_gcm_init_vaes (vm); - else if (clib_cpu_supports_avx512f ()) - error = crypto_native_aes_gcm_init_avx512 (vm); - else if (clib_cpu_supports_avx2 ()) - error = crypto_native_aes_gcm_init_avx2 (vm); + if (crypto_native_aes_gcm_init_icl && clib_cpu_supports_vaes ()) + error = crypto_native_aes_gcm_init_icl (vm); + else if (crypto_native_aes_gcm_init_skx && clib_cpu_supports_avx512f ()) + error = crypto_native_aes_gcm_init_skx (vm); + else if (crypto_native_aes_gcm_init_hsw && clib_cpu_supports_avx2 ()) + error = crypto_native_aes_gcm_init_hsw (vm); + else if (crypto_native_aes_gcm_init_slm) + error = crypto_native_aes_gcm_init_slm (vm); else - error = crypto_native_aes_gcm_init_sse42 (vm); + error = clib_error_return (0, "No AES GCM implemenation available"); if (error) goto error; } #endif #if __aarch64__ - if ((error = crypto_native_aes_cbc_init_neon (vm))) - goto error; + if (crypto_native_aes_gcm_init_neon) + error = crypto_native_aes_gcm_init_neon (vm); + else + error = clib_error_return (0, "No AES GCM implemenation available"); - if ((error = crypto_native_aes_gcm_init_neon (vm))) + if (error) goto error; #endif |