typedef void *(crypto_native_key_fn_t) (vnet_crypto_key_t * key);
-typedef struct
-{
- u8x16 cbc_iv[4];
-} crypto_native_per_thread_data_t;
-
typedef struct
{
u32 crypto_engine_index;
- crypto_native_per_thread_data_t *per_thread_data;
crypto_native_key_fn_t *key_fn[VNET_CRYPTO_N_ALGS];
void **key_data;
} crypto_native_main_t;
extern crypto_native_main_t crypto_native_main;
-clib_error_t *crypto_native_aes_cbc_init_sse42 (vlib_main_t * vm);
-clib_error_t *crypto_native_aes_cbc_init_avx2 (vlib_main_t * vm);
-clib_error_t *crypto_native_aes_cbc_init_avx512 (vlib_main_t * vm);
-clib_error_t *crypto_native_aes_cbc_init_vaes (vlib_main_t * vm);
-clib_error_t *crypto_native_aes_cbc_init_neon (vlib_main_t * vm);
+#define foreach_crypto_native_march_variant \
+ _ (slm) _ (hsw) _ (skx) _ (icl) _ (adl) _ (neon)
+
+#define _(v) \
+ clib_error_t __clib_weak *crypto_native_aes_cbc_init_##v (vlib_main_t *vm); \
+ clib_error_t __clib_weak *crypto_native_aes_ctr_init_##v (vlib_main_t *vm); \
+ clib_error_t __clib_weak *crypto_native_aes_gcm_init_##v (vlib_main_t *vm);
+
+foreach_crypto_native_march_variant;
+#undef _
-clib_error_t *crypto_native_aes_gcm_init_sse42 (vlib_main_t * vm);
-clib_error_t *crypto_native_aes_gcm_init_avx2 (vlib_main_t * vm);
-clib_error_t *crypto_native_aes_gcm_init_avx512 (vlib_main_t * vm);
-clib_error_t *crypto_native_aes_gcm_init_vaes (vlib_main_t * vm);
#endif /* __crypto_native_h__ */
/*