summaryrefslogtreecommitdiffstats
path: root/src/plugins/crypto_native/aes_ctr.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/plugins/crypto_native/aes_ctr.c')
-rw-r--r--src/plugins/crypto_native/aes_ctr.c130
1 files changed, 0 insertions, 130 deletions
diff --git a/src/plugins/crypto_native/aes_ctr.c b/src/plugins/crypto_native/aes_ctr.c
deleted file mode 100644
index d02a7b69b9d..00000000000
--- a/src/plugins/crypto_native/aes_ctr.c
+++ /dev/null
@@ -1,130 +0,0 @@
-/* SPDX-License-Identifier: Apache-2.0
- * Copyright(c) 2024 Cisco Systems, Inc.
- */
-
-#include <vlib/vlib.h>
-#include <vnet/plugin/plugin.h>
-#include <vnet/crypto/crypto.h>
-#include <crypto_native/crypto_native.h>
-#include <vppinfra/crypto/aes_ctr.h>
-
-#if __GNUC__ > 4 && !__clang__ && CLIB_DEBUG == 0
-#pragma GCC optimize("O3")
-#endif
-
-static_always_inline u32
-aes_ops_aes_ctr (vlib_main_t *vm, vnet_crypto_op_t *ops[], u32 n_ops,
- vnet_crypto_op_chunk_t *chunks, aes_key_size_t ks,
- int maybe_chained)
-{
- crypto_native_main_t *cm = &crypto_native_main;
- vnet_crypto_op_t *op = ops[0];
- aes_ctr_key_data_t *kd;
- aes_ctr_ctx_t ctx;
- u32 n_left = n_ops;
-
-next:
- kd = (aes_ctr_key_data_t *) cm->key_data[op->key_index];
-
- clib_aes_ctr_init (&ctx, kd, op->iv, ks);
- if (op->flags & VNET_CRYPTO_OP_FLAG_CHAINED_BUFFERS)
- {
- vnet_crypto_op_chunk_t *chp = chunks + op->chunk_index;
- for (int j = 0; j < op->n_chunks; j++, chp++)
- clib_aes_ctr_transform (&ctx, chp->src, chp->dst, chp->len, ks);
- }
- else
- clib_aes_ctr_transform (&ctx, op->src, op->dst, op->len, ks);
-
- op->status = VNET_CRYPTO_OP_STATUS_COMPLETED;
-
- if (--n_left)
- {
- op += 1;
- goto next;
- }
-
- return n_ops;
-}
-
-static_always_inline void *
-aes_ctr_key_exp (vnet_crypto_key_t *key, aes_key_size_t ks)
-{
- aes_ctr_key_data_t *kd;
-
- kd = clib_mem_alloc_aligned (sizeof (*kd), CLIB_CACHE_LINE_BYTES);
-
- clib_aes_ctr_key_expand (kd, key->data, ks);
-
- return kd;
-}
-
-#define foreach_aes_ctr_handler_type _ (128) _ (192) _ (256)
-
-#define _(x) \
- static u32 aes_ops_aes_ctr_##x (vlib_main_t *vm, vnet_crypto_op_t *ops[], \
- u32 n_ops) \
- { \
- return aes_ops_aes_ctr (vm, ops, n_ops, 0, AES_KEY_##x, 0); \
- } \
- static u32 aes_ops_aes_ctr_##x##_chained ( \
- vlib_main_t *vm, vnet_crypto_op_t *ops[], vnet_crypto_op_chunk_t *chunks, \
- u32 n_ops) \
- { \
- return aes_ops_aes_ctr (vm, ops, n_ops, chunks, AES_KEY_##x, 1); \
- } \
- static void *aes_ctr_key_exp_##x (vnet_crypto_key_t *key) \
- { \
- return aes_ctr_key_exp (key, AES_KEY_##x); \
- }
-
-foreach_aes_ctr_handler_type;
-#undef _
-
-static int
-probe ()
-{
-#if defined(__VAES__) && defined(__AVX512F__)
- if (clib_cpu_supports_vaes () && clib_cpu_supports_avx512f ())
- return 50;
-#elif defined(__VAES__)
- if (clib_cpu_supports_vaes ())
- return 40;
-#elif defined(__AVX512F__)
- if (clib_cpu_supports_avx512f ())
- return 30;
-#elif defined(__AVX2__)
- if (clib_cpu_supports_avx2 ())
- return 20;
-#elif __AES__
- if (clib_cpu_supports_aes ())
- return 10;
-#elif __aarch64__
- if (clib_cpu_supports_aarch64_aes ())
- return 10;
-#endif
- return -1;
-}
-
-#define _(b) \
- CRYPTO_NATIVE_OP_HANDLER (aes_##b##_ctr_enc) = { \
- .op_id = VNET_CRYPTO_OP_AES_##b##_CTR_ENC, \
- .fn = aes_ops_aes_ctr_##b, \
- .cfn = aes_ops_aes_ctr_##b##_chained, \
- .probe = probe, \
- }; \
- \
- CRYPTO_NATIVE_OP_HANDLER (aes_##b##_ctr_dec) = { \
- .op_id = VNET_CRYPTO_OP_AES_##b##_CTR_DEC, \
- .fn = aes_ops_aes_ctr_##b, \
- .cfn = aes_ops_aes_ctr_##b##_chained, \
- .probe = probe, \
- }; \
- CRYPTO_NATIVE_KEY_HANDLER (aes_##b##_ctr) = { \
- .alg_id = VNET_CRYPTO_ALG_AES_##b##_CTR, \
- .key_fn = aes_ctr_key_exp_##b, \
- .probe = probe, \
- };
-
-_ (128) _ (192) _ (256)
-#undef _