diff options
Diffstat (limited to 'src/plugins')
-rw-r--r-- | src/plugins/dev_octeon/crypto.c | 24 | ||||
-rw-r--r-- | src/plugins/dev_octeon/crypto.h | 2 |
2 files changed, 16 insertions, 10 deletions
diff --git a/src/plugins/dev_octeon/crypto.c b/src/plugins/dev_octeon/crypto.c index df6670e2eab..7333da1119e 100644 --- a/src/plugins/dev_octeon/crypto.c +++ b/src/plugins/dev_octeon/crypto.c @@ -1181,7 +1181,7 @@ oct_crypto_link_session_update (vlib_main_t *vm, oct_crypto_sess_t *sess, key = vnet_crypto_get_key (key_index); - switch (key->async_alg) + switch (key->alg) { case VNET_CRYPTO_ALG_AES_128_CBC_SHA1_TAG12: case VNET_CRYPTO_ALG_AES_192_CBC_SHA1_TAG12: @@ -1264,8 +1264,8 @@ oct_crypto_link_session_update (vlib_main_t *vm, oct_crypto_sess_t *sess, break; default: clib_warning ( - "Cryptodev: Undefined link algo %u specified. Key index %u", - key->async_alg, key_index); + "Cryptodev: Undefined link algo %u specified. Key index %u", key->alg, + key_index); return -1; } @@ -1279,7 +1279,7 @@ oct_crypto_link_session_update (vlib_main_t *vm, oct_crypto_sess_t *sess, crypto_key = vnet_crypto_get_key (key->index_crypto); rv = roc_se_ciph_key_set (&sess->cpt_ctx, enc_type, crypto_key->data, - vec_len (crypto_key->data)); + crypto_key->length); if (rv) { clib_warning ("Cryptodev: Error in setting cipher key for enc type %u", @@ -1290,7 +1290,7 @@ oct_crypto_link_session_update (vlib_main_t *vm, oct_crypto_sess_t *sess, auth_key = vnet_crypto_get_key (key->index_integ); rv = roc_se_auth_key_set (&sess->cpt_ctx, auth_type, auth_key->data, - vec_len (auth_key->data), digest_len); + auth_key->length, digest_len); if (rv) { clib_warning ("Cryptodev: Error in setting auth key for auth type %u", @@ -1311,7 +1311,7 @@ oct_crypto_aead_session_update (vlib_main_t *vm, oct_crypto_sess_t *sess, u32 digest_len = ~0; i32 rv = 0; - switch (key->async_alg) + switch (key->alg) { case VNET_CRYPTO_ALG_AES_128_GCM: case VNET_CRYPTO_ALG_AES_192_GCM: @@ -1331,7 +1331,7 @@ oct_crypto_aead_session_update (vlib_main_t *vm, oct_crypto_sess_t *sess, default: clib_warning ( "Cryptodev: Undefined cipher algo %u specified. Key index %u", - key->async_alg, key_index); + key->alg, key_index); return -1; } @@ -1422,7 +1422,7 @@ oct_crypto_enqueue_enc_dec (vlib_main_t *vm, vnet_crypto_async_frame_t *frame, oct_crypto_key_t *key; vlib_buffer_t *buffer; u16 adj_len; - int ret; + int ret = 0; /* GCM packets having 8 bytes of aad and 8 bytes of iv */ u8 aad_iv = 8 + 8; @@ -1458,7 +1458,13 @@ oct_crypto_enqueue_enc_dec (vlib_main_t *vm, vnet_crypto_async_frame_t *frame, sess = key->sess; if (PREDICT_FALSE (!sess->initialised)) - oct_crypto_session_init (vm, sess, elts->key_index, type); + ret = oct_crypto_session_init (vm, sess, elts->key_index, type); + if (ret) + { + oct_crypto_update_frame_error_status ( + frame, i, VNET_CRYPTO_OP_STATUS_FAIL_ENGINE_ERR); + return -1; + } crypto_dev = sess->crypto_dev; diff --git a/src/plugins/dev_octeon/crypto.h b/src/plugins/dev_octeon/crypto.h index 0a3b796d3dd..bee2db8f9ed 100644 --- a/src/plugins/dev_octeon/crypto.h +++ b/src/plugins/dev_octeon/crypto.h @@ -143,7 +143,7 @@ typedef struct typedef struct { oct_crypto_dev_t *crypto_dev[OCT_MAX_N_CPT_DEV]; - oct_crypto_key_t *keys[VNET_CRYPTO_ASYNC_OP_N_TYPES]; + oct_crypto_key_t *keys[VNET_CRYPTO_OP_N_TYPES]; oct_crypto_pending_queue_t *pend_q; int n_cpt; u8 started; |