diff options
author | Benoît Ganne <bganne@cisco.com> | 2021-01-22 18:11:37 +0100 |
---|---|---|
committer | Damjan Marion <dmarion@me.com> | 2021-03-04 11:08:36 +0000 |
commit | 30ad571cc35e4dc6d4d7e50b81b97f83f8770eea (patch) | |
tree | 6ca91cdc8ab5ef0d4a7ec96c6e81ff867e2373e9 | |
parent | 40ee2003bc79baca594dc71f1cd0b7540a774c85 (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>
-rw-r--r-- | src/plugins/crypto_sw_scheduler/main.c | 9 |
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; } |