summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorBenoît Ganne <bganne@cisco.com>2021-01-22 18:11:37 +0100
committerDamjan Marion <dmarion@me.com>2021-03-04 11:08:36 +0000
commit30ad571cc35e4dc6d4d7e50b81b97f83f8770eea (patch)
tree6ca91cdc8ab5ef0d4a7ec96c6e81ff867e2373e9 /src
parent40ee2003bc79baca594dc71f1cd0b7540a774c85 (diff)
crypto: fix ops flags in crypto sw scheduler
The sw crypto scheduler converts crypto frames to individual crypto operations. This is done by reusing per-thread vectors for crypto, integrity and chained operations. The crypto op flags must be reset to frame flags minus invalid values depending of the operation. The previous tentative also cleared the chained buffer flag, breaking jumbo support. Type: fix Change-Id: Icce6887a9e0dae8c300c56e97b977e203e784713 Signed-off-by: Benoît Ganne <bganne@cisco.com>
Diffstat (limited to 'src')
-rw-r--r--src/plugins/crypto_sw_scheduler/main.c9
1 files changed, 2 insertions, 7 deletions
diff --git a/src/plugins/crypto_sw_scheduler/main.c b/src/plugins/crypto_sw_scheduler/main.c
index 980fa14e5f1..29f91b36345 100644
--- a/src/plugins/crypto_sw_scheduler/main.c
+++ b/src/plugins/crypto_sw_scheduler/main.c
@@ -148,8 +148,6 @@ cryptodev_sw_scheduler_sgl (vlib_main_t * vm,
u32 n_chunks = 0;
u32 chunk_index = vec_len (ptd->chunks);
- op->flags |= VNET_CRYPTO_OP_FLAG_CHAINED_BUFFERS;
-
while (len)
{
if (nb->current_data + nb->current_length > offset)
@@ -251,15 +249,12 @@ crypto_sw_scheduler_convert_link_crypto (vlib_main_t * vm,
crypto_op->iv = fe->iv;
crypto_op->key_index = key->index_crypto;
crypto_op->user_data = 0;
+ crypto_op->flags = fe->flags & ~VNET_CRYPTO_OP_FLAG_HMAC_CHECK;
integ_op->op = integ_op_id;
integ_op->digest = fe->digest;
integ_op->digest_len = digest_len;
integ_op->key_index = key->index_integ;
- crypto_op->flags = integ_op->flags = 0;
- if (is_enc)
- crypto_op->flags |= VNET_CRYPTO_OP_FLAG_INIT_IV;
- else
- integ_op->flags |= VNET_CRYPTO_OP_FLAG_HMAC_CHECK;
+ integ_op->flags = fe->flags & ~VNET_CRYPTO_OP_FLAG_INIT_IV;
crypto_op->user_data = integ_op->user_data = index;
}