summaryrefslogtreecommitdiffstats
path: root/src/plugins/crypto_sw_scheduler/main.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/plugins/crypto_sw_scheduler/main.c')
-rw-r--r--src/plugins/crypto_sw_scheduler/main.c9
1 files changed, 7 insertions, 2 deletions
diff --git a/src/plugins/crypto_sw_scheduler/main.c b/src/plugins/crypto_sw_scheduler/main.c
index 29f91b36345..980fa14e5f1 100644
--- a/src/plugins/crypto_sw_scheduler/main.c
+++ b/src/plugins/crypto_sw_scheduler/main.c
@@ -148,6 +148,8 @@ 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)
@@ -249,12 +251,15 @@ 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;
- integ_op->flags = fe->flags & ~VNET_CRYPTO_OP_FLAG_INIT_IV;
+ 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;
crypto_op->user_data = integ_op->user_data = index;
}