cryptodev: remove opaque data pointer in crypto op
Storing a pointer to the user data is unnecessary, since user can store additional data, after the crypto operation. Signed-off-by: Pablo de Lara <pablo.de.lara.guarch@intel.com> Acked-by: Declan Doherty <declan.doherty@intel.com> Acked-by: Akhil Goyal <akhil.goyal@nxp.com> Acked-by: Fiona Trahe <fiona.trahe@intel.com>
This commit is contained in:
parent
4943cb4ad2
commit
b1f6192b77
@ -66,6 +66,10 @@ struct cperf_latency_ctx {
|
||||
struct cperf_op_result *res;
|
||||
};
|
||||
|
||||
struct priv_op_data {
|
||||
struct cperf_op_result *result;
|
||||
};
|
||||
|
||||
#define max(a, b) (a > b ? (uint64_t)a : (uint64_t)b)
|
||||
#define min(a, b) (a < b ? (uint64_t)a : (uint64_t)b)
|
||||
|
||||
@ -276,9 +280,11 @@ cperf_latency_test_constructor(uint8_t dev_id, uint16_t qp_id,
|
||||
snprintf(pool_name, sizeof(pool_name), "cperf_op_pool_cdev_%d",
|
||||
dev_id);
|
||||
|
||||
uint16_t priv_size = sizeof(struct priv_op_data);
|
||||
ctx->crypto_op_pool = rte_crypto_op_pool_create(pool_name,
|
||||
RTE_CRYPTO_OP_TYPE_SYMMETRIC, options->pool_sz, 512, 0,
|
||||
rte_socket_id());
|
||||
RTE_CRYPTO_OP_TYPE_SYMMETRIC, options->pool_sz,
|
||||
512, priv_size, rte_socket_id());
|
||||
|
||||
if (ctx->crypto_op_pool == NULL)
|
||||
goto err;
|
||||
|
||||
@ -295,11 +301,20 @@ cperf_latency_test_constructor(uint8_t dev_id, uint16_t qp_id,
|
||||
return NULL;
|
||||
}
|
||||
|
||||
static inline void
|
||||
store_timestamp(struct rte_crypto_op *op, uint64_t timestamp)
|
||||
{
|
||||
struct priv_op_data *priv_data;
|
||||
|
||||
priv_data = (struct priv_op_data *) (op->sym + 1);
|
||||
priv_data->result->status = op->status;
|
||||
priv_data->result->tsc_end = timestamp;
|
||||
}
|
||||
|
||||
int
|
||||
cperf_latency_test_runner(void *arg)
|
||||
{
|
||||
struct cperf_latency_ctx *ctx = arg;
|
||||
struct cperf_op_result *pres;
|
||||
uint16_t test_burst_size;
|
||||
uint8_t burst_size_idx = 0;
|
||||
|
||||
@ -311,6 +326,7 @@ cperf_latency_test_runner(void *arg)
|
||||
struct rte_crypto_op *ops[ctx->options->max_burst_size];
|
||||
struct rte_crypto_op *ops_processed[ctx->options->max_burst_size];
|
||||
uint64_t i;
|
||||
struct priv_op_data *priv_data;
|
||||
|
||||
uint32_t lcore = rte_lcore_id();
|
||||
|
||||
@ -400,7 +416,12 @@ cperf_latency_test_runner(void *arg)
|
||||
|
||||
for (i = 0; i < ops_enqd; i++) {
|
||||
ctx->res[tsc_idx].tsc_start = tsc_start;
|
||||
ops[i]->opaque_data = (void *)&ctx->res[tsc_idx];
|
||||
/*
|
||||
* Private data structure starts after the end of the
|
||||
* rte_crypto_sym_op structure.
|
||||
*/
|
||||
priv_data = (struct priv_op_data *) (ops[i]->sym + 1);
|
||||
priv_data->result = (void *)&ctx->res[tsc_idx];
|
||||
tsc_idx++;
|
||||
}
|
||||
|
||||
@ -411,12 +432,9 @@ cperf_latency_test_runner(void *arg)
|
||||
* the crypto operation will change the data and cause
|
||||
* failures.
|
||||
*/
|
||||
for (i = 0; i < ops_deqd; i++) {
|
||||
pres = (struct cperf_op_result *)
|
||||
(ops_processed[i]->opaque_data);
|
||||
pres->status = ops_processed[i]->status;
|
||||
pres->tsc_end = tsc_end;
|
||||
}
|
||||
for (i = 0; i < ops_deqd; i++)
|
||||
store_timestamp(ops_processed[i], tsc_end);
|
||||
|
||||
rte_mempool_put_bulk(ctx->crypto_op_pool,
|
||||
(void **)ops_processed, ops_deqd);
|
||||
|
||||
@ -447,12 +465,9 @@ cperf_latency_test_runner(void *arg)
|
||||
tsc_end = rte_rdtsc_precise();
|
||||
|
||||
if (ops_deqd != 0) {
|
||||
for (i = 0; i < ops_deqd; i++) {
|
||||
pres = (struct cperf_op_result *)
|
||||
(ops_processed[i]->opaque_data);
|
||||
pres->status = ops_processed[i]->status;
|
||||
pres->tsc_end = tsc_end;
|
||||
}
|
||||
for (i = 0; i < ops_deqd; i++)
|
||||
store_timestamp(ops_processed[i], tsc_end);
|
||||
|
||||
rte_mempool_put_bulk(ctx->crypto_op_pool,
|
||||
(void **)ops_processed, ops_deqd);
|
||||
|
||||
|
@ -363,8 +363,7 @@ The operation structure includes the operation type, the operation status
|
||||
and the session type (session-based/less), a reference to the operation
|
||||
specific data, which can vary in size and content depending on the operation
|
||||
being provisioned. It also contains the source mempool for the operation,
|
||||
if it allocate from a mempool. Finally an opaque pointer for user specific
|
||||
data is provided.
|
||||
if it allocated from a mempool.
|
||||
|
||||
If Crypto operations are allocated from a Crypto operation mempool, see next
|
||||
section, there is also the ability to allocate private memory with the
|
||||
|
@ -98,6 +98,7 @@ New Features
|
||||
* Added field ``rte_crypto_op_sess_type``.
|
||||
* Enumerations ``rte_crypto_op_status`` and ``rte_crypto_op_type``
|
||||
have been modified to be uint8_t values.
|
||||
* Removed the field ``opaque_data``.
|
||||
|
||||
|
||||
Resolved Issues
|
||||
|
@ -122,9 +122,6 @@ struct rte_crypto_op {
|
||||
phys_addr_t phys_addr;
|
||||
/**< physical address of crypto operation */
|
||||
|
||||
void *opaque_data;
|
||||
/**< Opaque pointer for user data */
|
||||
|
||||
RTE_STD_C11
|
||||
union {
|
||||
struct rte_crypto_sym_op *sym;
|
||||
@ -158,8 +155,6 @@ __rte_crypto_op_reset(struct rte_crypto_op *op, enum rte_crypto_op_type type)
|
||||
default:
|
||||
break;
|
||||
}
|
||||
|
||||
op->opaque_data = NULL;
|
||||
}
|
||||
|
||||
/**
|
||||
|
Loading…
Reference in New Issue
Block a user