From f539578bac8b64886b57c460c9d74273e6613f8b Mon Sep 17 00:00:00 2001 From: Fan Zhang Date: Wed, 29 Apr 2020 14:00:03 +0100 Subject: crypto: introduce async crypto infra Type: feature Signed-off-by: Damjan Marion Signed-off-by: Filip Tehlar Signed-off-by: Fan Zhang Signed-off-by: Piotr Bronowski Signed-off-by: Dariusz Kazimierski Signed-off-by: Piotr Kleski Change-Id: I4c3fcccf55c36842b7b48aed260fef2802b5c54b --- src/vnet/ipsec/ipsec_sa.h | 46 +++++++++++++++++++++++++++++++++++++++++++--- 1 file changed, 43 insertions(+), 3 deletions(-) (limited to 'src/vnet/ipsec/ipsec_sa.h') diff --git a/src/vnet/ipsec/ipsec_sa.h b/src/vnet/ipsec/ipsec_sa.h index 0997eb7d8bc..de9b51ea66a 100644 --- a/src/vnet/ipsec/ipsec_sa.h +++ b/src/vnet/ipsec/ipsec_sa.h @@ -127,9 +127,27 @@ typedef struct vnet_crypto_key_index_t crypto_key_index; vnet_crypto_key_index_t integ_key_index; - vnet_crypto_op_id_t crypto_enc_op_id:16; - vnet_crypto_op_id_t crypto_dec_op_id:16; - vnet_crypto_op_id_t integ_op_id:16; + + /* Union data shared by sync and async ops, updated when mode is + * changed. */ + union + { + struct + { + vnet_crypto_op_id_t crypto_enc_op_id:16; + vnet_crypto_op_id_t crypto_dec_op_id:16; + vnet_crypto_op_id_t integ_op_id:16; + }; + + struct + { + vnet_crypto_async_op_id_t crypto_async_enc_op_id:16; + vnet_crypto_async_op_id_t crypto_async_dec_op_id:16; + vnet_crypto_key_index_t linked_key_index; + }; + + u64 crypto_op_data; + }; /* data accessed by dataplane code should be above this comment */ CLIB_CACHE_LINE_ALIGN_MARK (cacheline1); @@ -165,6 +183,28 @@ typedef struct /* Salt used in GCM modes - stored in network byte order */ u32 salt; u64 gcm_iv_counter; + + union + { + struct + { + vnet_crypto_op_id_t crypto_enc_op_id:16; + vnet_crypto_op_id_t crypto_dec_op_id:16; + vnet_crypto_op_id_t integ_op_id:16; + }; + u64 data; + } sync_op_data; + + union + { + struct + { + vnet_crypto_async_op_id_t crypto_async_enc_op_id:16; + vnet_crypto_async_op_id_t crypto_async_dec_op_id:16; + vnet_crypto_key_index_t linked_key_index; + }; + u64 data; + } async_op_data; } ipsec_sa_t; STATIC_ASSERT_OFFSET_OF (ipsec_sa_t, cacheline1, CLIB_CACHE_LINE_BYTES); -- cgit 1.2.3-korg