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

Reply via email to