For asymmetric op, private test data should be stored after rte_crypto_asym_op struct.
Fixes: a538d1d2d01e ("test/crypto-perf: extend asymmetric crypto throughput test") Cc: sta...@dpdk.org Signed-off-by: Gowrishankar Muthukrishnan <gmuthukri...@marvell.com> --- app/test-crypto-perf/cperf_test_common.c | 6 ++++-- app/test-crypto-perf/cperf_test_latency.c | 14 +++++++++++--- 2 files changed, 15 insertions(+), 5 deletions(-) diff --git a/app/test-crypto-perf/cperf_test_common.c b/app/test-crypto-perf/cperf_test_common.c index 94d39fb177..6b8ab65731 100644 --- a/app/test-crypto-perf/cperf_test_common.c +++ b/app/test-crypto-perf/cperf_test_common.c @@ -149,11 +149,11 @@ cperf_alloc_common_memory(const struct cperf_options *options, int ret; /* Calculate the object size */ - uint16_t crypto_op_size = sizeof(struct rte_crypto_op) + - sizeof(struct rte_crypto_sym_op); + uint16_t crypto_op_size = sizeof(struct rte_crypto_op); uint16_t crypto_op_private_size; if (options->op_type == CPERF_ASYM_MODEX) { + crypto_op_size += sizeof(struct rte_crypto_asym_op); snprintf(pool_name, RTE_MEMPOOL_NAMESIZE, "perf_asym_op_pool%u", rte_socket_id()); *pool = rte_crypto_op_pool_create( @@ -170,6 +170,8 @@ cperf_alloc_common_memory(const struct cperf_options *options, return 0; } + crypto_op_size += sizeof(struct rte_crypto_sym_op); + /* * If doing AES-CCM, IV field needs to be 16 bytes long, * and AAD field needs to be long enough to have 18 bytes, diff --git a/app/test-crypto-perf/cperf_test_latency.c b/app/test-crypto-perf/cperf_test_latency.c index b8ad6bf4d4..376847e761 100644 --- a/app/test-crypto-perf/cperf_test_latency.c +++ b/app/test-crypto-perf/cperf_test_latency.c @@ -122,7 +122,11 @@ 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); + if (op->type == RTE_CRYPTO_OP_TYPE_SYMMETRIC) + priv_data = (struct priv_op_data *) (op->sym + 1); + else + priv_data = (struct priv_op_data *) (op->asym + 1); + priv_data->result->status = op->status; priv_data->result->tsc_end = timestamp; } @@ -251,9 +255,13 @@ cperf_latency_test_runner(void *arg) ctx->res[tsc_idx].tsc_start = tsc_start; /* * Private data structure starts after the end of the - * rte_crypto_sym_op structure. + * rte_crypto_sym_op (or rte_crypto_asym_op) structure. */ - priv_data = (struct priv_op_data *) (ops[i]->sym + 1); + if (ops[i]->type == RTE_CRYPTO_OP_TYPE_SYMMETRIC) + priv_data = (struct priv_op_data *) (ops[i]->sym + 1); + else + priv_data = (struct priv_op_data *) (ops[i]->asym + 1); + priv_data->result = (void *)&ctx->res[tsc_idx]; tsc_idx++; } -- 2.25.1