git.droids-corp.org
/
dpdk.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
eal/windows: add missing SPDX license tag
[dpdk.git]
/
drivers
/
crypto
/
armv8
/
rte_armv8_pmd.c
diff --git
a/drivers/crypto/armv8/rte_armv8_pmd.c
b/drivers/crypto/armv8/rte_armv8_pmd.c
index
fd81408
..
3f6cb66
100644
(file)
--- a/
drivers/crypto/armv8/rte_armv8_pmd.c
+++ b/
drivers/crypto/armv8/rte_armv8_pmd.c
@@
-86,12
+86,12
@@
crypto_op_ca_encrypt = {
static const crypto_func_tbl_t
crypto_op_ca_decrypt = {
static const crypto_func_tbl_t
crypto_op_ca_decrypt = {
- NULL
+ { {NULL} }
};
static const crypto_func_tbl_t
crypto_op_ac_encrypt = {
};
static const crypto_func_tbl_t
crypto_op_ac_encrypt = {
- NULL
+ { {NULL} }
};
static const crypto_func_tbl_t
};
static const crypto_func_tbl_t
@@
-143,7
+143,8
@@
crypto_chain_order[] = {
crypto_func_tbl_t *func_tbl = \
(crypto_chain_order[(order)])[(cop)]; \
\
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)]; \
\
({ \
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)]); \
})
/*----------------------------------------------------------------------------*/
})
/*----------------------------------------------------------------------------*/
@@
-377,7
+379,16
@@
armv8_crypto_set_session_chained_parameters(struct armv8_crypto_session *sess,
/* Select cipher key */
sess->cipher.key.length = cipher_xform->cipher.key.length;
/* Set cipher direction */
/* Select cipher key */
sess->cipher.key.length = cipher_xform->cipher.key.length;
/* Set cipher direction */
- cop = sess->cipher.direction;
+ switch (sess->cipher.direction) {
+ case RTE_CRYPTO_CIPHER_OP_ENCRYPT:
+ cop = ARMV8_CRYPTO_CIPHER_OP_ENCRYPT;
+ break;
+ case RTE_CRYPTO_CIPHER_OP_DECRYPT:
+ cop = ARMV8_CRYPTO_CIPHER_OP_DECRYPT;
+ break;
+ default:
+ return -ENOTSUP;
+ }
/* Set cipher algorithm */
calg = cipher_xform->cipher.algo;
/* Set cipher algorithm */
calg = cipher_xform->cipher.algo;
@@
-427,7
+438,8
@@
armv8_crypto_set_session_chained_parameters(struct armv8_crypto_session *sess,
return -ENOTSUP;
}
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
/*
* If we got here that means that there must be a bug
* in the algorithms selection above. Nevertheless keep
@@
-621,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;
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;
error = crypto_func(csrc, cdst, clen, asrc, adst, alen, &arg);
if (error != 0) {
op->status = RTE_CRYPTO_OP_STATUS_INVALID_ARGS;
@@
-665,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));
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;
}
op->sym->session = NULL;
}
@@
-783,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 |
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;
internals = dev->data->dev_private;
@@
-851,6
+864,8
@@
static struct rte_vdev_driver armv8_crypto_pmd_drv = {
static struct cryptodev_driver armv8_crypto_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,
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,