xform->type = RTE_CRYPTO_SYM_XFORM_AEAD;
xform->aead.algo = c->alg;
- xform->aead.key.data = sa->crypto_key;
+ xform->aead.key.data = sa->crypto_key.data;
xform->aead.key.length = c->key_len;
xform->aead.iv.offset =
crypto_op_get_priv_offset () + offsetof (dpdk_op_priv_t, cb);
xform->type = RTE_CRYPTO_SYM_XFORM_CIPHER;
xform->cipher.algo = c->alg;
- xform->cipher.key.data = sa->crypto_key;
+ xform->cipher.key.data = sa->crypto_key.data;
xform->cipher.key.length = c->key_len;
xform->cipher.iv.offset =
crypto_op_get_priv_offset () + offsetof (dpdk_op_priv_t, cb);
xform->type = RTE_CRYPTO_SYM_XFORM_AUTH;
xform->auth.algo = a->alg;
- xform->auth.key.data = sa->integ_key;
+ xform->auth.key.data = sa->integ_key.data;
xform->auth.key.length = a->key_len;
xform->auth.digest_length = a->trunc_size;
xform->next = NULL;
struct rte_crypto_sym_xform auth_xform = { 0 };
struct rte_crypto_sym_xform *xfs;
struct rte_cryptodev_sym_session **s;
- clib_error_t *erorr = 0;
+ clib_error_t *error = 0;
sa = pool_elt_at_index (im->sad, sa_idx);
if (!session[0])
{
data->session_h_failed += 1;
- erorr = clib_error_return (0, "failed to create session header");
+ error = clib_error_return (0, "failed to create session header");
goto done;
}
hash_set (data->session_by_sa_index, sa_idx, session[0]);
if (ret)
{
data->session_drv_failed[res->drv_id] += 1;
- erorr = clib_error_return (0, "failed to init session for drv %u",
+ error = clib_error_return (0, "failed to init session for drv %u",
res->drv_id);
goto done;
}
done:
clib_spinlock_unlock_if_init (&data->lockp);
- return erorr;
+ return error;
}
static void __attribute__ ((unused)) clear_and_free_obj (void *obj)
get_session_private_data (const struct rte_cryptodev_sym_session *sess,
uint8_t driver_id)
{
+#if RTE_VERSION < RTE_VERSION_NUM(19, 2, 0, 0)
return sess->sess_private_data[driver_id];
+#else
+ if (unlikely (sess->nb_drivers <= driver_id))
+ return 0;
+
+ return sess->sess_data[driver_id].data;
+#endif
}
/* This is from rte_cryptodev_pmd.h */
set_session_private_data (struct rte_cryptodev_sym_session *sess,
uint8_t driver_id, void *private_data)
{
+#if RTE_VERSION < RTE_VERSION_NUM(19, 2, 0, 0)
sess->sess_private_data[driver_id] = private_data;
+#else
+ if (unlikely (sess->nb_drivers <= driver_id))
+ return;
+ sess->sess_data[driver_id].data = private_data;
+#endif
}
static clib_error_t *
case IPSEC_CRYPTO_ALG_AES_GCM_128:
case IPSEC_CRYPTO_ALG_AES_GCM_192:
case IPSEC_CRYPTO_ALG_AES_GCM_256:
- clib_memcpy (&sa->salt, &sa->crypto_key[sa->crypto_key_len - 4], 4);
+ clib_memcpy (&sa->salt,
+ &sa->crypto_key.data[sa->crypto_key.len - 4], 4);
break;
default:
seed = (u32) clib_cpu_time_now ();
static clib_error_t *
crypto_dev_conf (u8 dev, u16 n_qp, u8 numa)
{
- struct rte_cryptodev_config dev_conf;
- struct rte_cryptodev_qp_conf qp_conf;
+ struct rte_cryptodev_config dev_conf = { 0 };
+ struct rte_cryptodev_qp_conf qp_conf = { 0 };
i32 ret;
u16 qp;
char *error_str;
qp_conf.nb_descriptors = DPDK_CRYPTO_N_QUEUE_DESC;
for (qp = 0; qp < n_qp; qp++)
{
+#if RTE_VERSION < RTE_VERSION_NUM(19, 2, 0, 0)
ret = rte_cryptodev_queue_pair_setup (dev, qp, &qp_conf, numa, NULL);
+#else
+ ret = rte_cryptodev_queue_pair_setup (dev, qp, &qp_conf, numa);
+#endif
if (ret < 0)
return clib_error_return (0, error_str, dev, qp);
}
{
dpdk_crypto_main_t *dcm = &dpdk_crypto_main;
struct rte_cryptodev *cryptodev;
- struct rte_cryptodev_info info;
+ struct rte_cryptodev_info info = { 0 };
crypto_dev_t *dev;
crypto_resource_t *res;
clib_error_t *error;
elt_size = rte_cryptodev_sym_get_header_session_size ();
- mp =
- rte_mempool_create ((char *) pool_name, DPDK_CRYPTO_NB_SESS_OBJS,
- elt_size, 512, 0, NULL, NULL, NULL, NULL, numa, 0);
-
+#if RTE_VERSION < RTE_VERSION_NUM(19, 2, 0, 0)
+ mp = rte_mempool_create ((char *) pool_name, DPDK_CRYPTO_NB_SESS_OBJS,
+ elt_size, 512, 0, NULL, NULL, NULL, NULL, numa, 0);
+#else
+ /* XXX Experimental tag in DPDK 19.02 */
+ mp = rte_cryptodev_sym_session_pool_create ((char *) pool_name,
+ DPDK_CRYPTO_NB_SESS_OBJS,
+ elt_size, 512, 0, numa);
+#endif
vec_free (pool_name);
if (!mp)