crypto-native: add AES-CTR
[vpp.git] / src / plugins / crypto_native / crypto_native.h
index 0b6116a..c15b8cb 100644 (file)
 
 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__ */
 
 /*