X-Git-Url: http://git.droids-corp.org/?a=blobdiff_plain;f=drivers%2Fcrypto%2Farmv8%2Frte_armv8_pmd.c;h=3f6cb66ba220f03286f06fd3ec934d27e12414eb;hb=e863fe3a13da89787fdf3b5c590101a3c0f10af6;hp=d2b7ab5e033fc0529a9a461d7069b994ba0ecd64;hpb=94b686e5026e2612038b8ea5382e22729553738a;p=dpdk.git diff --git a/drivers/crypto/armv8/rte_armv8_pmd.c b/drivers/crypto/armv8/rte_armv8_pmd.c index d2b7ab5e03..3f6cb66ba2 100644 --- a/drivers/crypto/armv8/rte_armv8_pmd.c +++ b/drivers/crypto/armv8/rte_armv8_pmd.c @@ -143,7 +143,8 @@ crypto_chain_order[] = { crypto_func_tbl_t *func_tbl = \ (crypto_chain_order[(order)])[(cop)]; \ \ - ((*func_tbl)[(calg)][(aalg)][KEYL(keyl)]); \ + ((calg >= CRYPTO_CIPHER_MAX) || (aalg >= CRYPTO_AUTH_MAX)) ? \ + NULL : ((*func_tbl)[(calg)][(aalg)][KEYL(keyl)]); \ }) /*----------------------------------------------------------------------------*/ @@ -188,7 +189,8 @@ crypto_key_sched_dir[] = { ({ \ crypto_key_sched_tbl_t *ks_tbl = crypto_key_sched_dir[(cop)]; \ \ - ((*ks_tbl)[(calg)][KEYL(keyl)]); \ + (calg >= CRYPTO_CIPHER_MAX) ? \ + NULL : ((*ks_tbl)[(calg)][KEYL(keyl)]); \ }) /*----------------------------------------------------------------------------*/ @@ -436,7 +438,8 @@ armv8_crypto_set_session_chained_parameters(struct armv8_crypto_session *sess, return -ENOTSUP; } - if (unlikely(sess->crypto_func == NULL)) { + if (unlikely(sess->crypto_func == NULL || + sess->cipher.key_sched == NULL)) { /* * If we got here that means that there must be a bug * in the algorithms selection above. Nevertheless keep @@ -630,7 +633,7 @@ process_armv8_chained_op(struct armv8_crypto_qp *qp, struct rte_crypto_op *op, arg.cipher.key = sess->cipher.key.data; /* Acquire combined mode function */ crypto_func = sess->crypto_func; - ARMV8_CRYPTO_ASSERT(crypto_func != NULL); + RTE_VERIFY(crypto_func != NULL); error = crypto_func(csrc, cdst, clen, asrc, adst, alen, &arg); if (error != 0) { op->status = RTE_CRYPTO_OP_STATUS_INVALID_ARGS; @@ -674,8 +677,8 @@ process_op(struct armv8_crypto_qp *qp, struct rte_crypto_op *op, memset(op->sym->session, 0, rte_cryptodev_sym_get_existing_header_session_size( op->sym->session)); - rte_mempool_put(qp->sess_mp, sess); - rte_mempool_put(qp->sess_mp_priv, op->sym->session); + rte_mempool_put(qp->sess_mp_priv, sess); + rte_mempool_put(qp->sess_mp, op->sym->session); op->sym->session = NULL; } @@ -792,7 +795,8 @@ cryptodev_armv8_crypto_create(const char *name, dev->feature_flags = RTE_CRYPTODEV_FF_SYMMETRIC_CRYPTO | RTE_CRYPTODEV_FF_SYM_OPERATION_CHAINING | RTE_CRYPTODEV_FF_CPU_NEON | - RTE_CRYPTODEV_FF_CPU_ARM_CE; + RTE_CRYPTODEV_FF_CPU_ARM_CE | + RTE_CRYPTODEV_FF_SYM_SESSIONLESS; internals = dev->data->dev_private; @@ -860,6 +864,8 @@ static struct rte_vdev_driver armv8_crypto_pmd_drv = { static struct cryptodev_driver armv8_crypto_drv; +RTE_LOG_REGISTER(crypto_armv8_log_type, pmd.crypto.armv8, ERR); + RTE_PMD_REGISTER_VDEV(CRYPTODEV_NAME_ARMV8_PMD, armv8_crypto_pmd_drv); RTE_PMD_REGISTER_ALIAS(CRYPTODEV_NAME_ARMV8_PMD, cryptodev_armv8_pmd); RTE_PMD_REGISTER_PARAM_STRING(CRYPTODEV_NAME_ARMV8_PMD,