From 14864c4217ce95c9615da3c553698eb698c4d74d Mon Sep 17 00:00:00 2001 From: Archana Muniganti Date: Fri, 8 Apr 2022 15:48:34 +0530 Subject: [PATCH] test/crypto-perf: populate mbuf in latency test For decrypt, ICV mismatch can come as data is dummy and latency will be calculated for error path. Hence populate mbuf with test vector data. Signed-off-by: Archana Muniganti Acked-by: Akhil Goyal --- app/test-crypto-perf/cperf_ops.c | 3 +- app/test-crypto-perf/cperf_test_common.c | 36 +++++++++++++++++++++++ app/test-crypto-perf/cperf_test_common.h | 5 ++++ app/test-crypto-perf/cperf_test_latency.c | 6 ++++ app/test-crypto-perf/cperf_test_verify.c | 36 ----------------------- 5 files changed, 49 insertions(+), 37 deletions(-) diff --git a/app/test-crypto-perf/cperf_ops.c b/app/test-crypto-perf/cperf_ops.c index 7bb7a2611d..cbefce8d6c 100644 --- a/app/test-crypto-perf/cperf_ops.c +++ b/app/test-crypto-perf/cperf_ops.c @@ -620,7 +620,8 @@ cperf_set_ops_aead(struct rte_crypto_op **ops, } } - if (options->test == CPERF_TEST_TYPE_VERIFY) { + if ((options->test == CPERF_TEST_TYPE_VERIFY) || + (options->test == CPERF_TEST_TYPE_LATENCY)) { for (i = 0; i < nb_ops; i++) { uint8_t *iv_ptr = rte_crypto_op_ctod_offset(ops[i], uint8_t *, iv_offset); diff --git a/app/test-crypto-perf/cperf_test_common.c b/app/test-crypto-perf/cperf_test_common.c index 97a1ea47ad..00aadc9a47 100644 --- a/app/test-crypto-perf/cperf_test_common.c +++ b/app/test-crypto-perf/cperf_test_common.c @@ -262,3 +262,39 @@ cperf_alloc_common_memory(const struct cperf_options *options, return 0; } + +void +cperf_mbuf_set(struct rte_mbuf *mbuf, + const struct cperf_options *options, + const struct cperf_test_vector *test_vector) +{ + uint32_t segment_sz = options->segment_sz; + uint8_t *mbuf_data; + uint8_t *test_data; + uint32_t remaining_bytes = options->max_buffer_size; + + if (options->op_type == CPERF_AEAD) { + test_data = (options->aead_op == RTE_CRYPTO_AEAD_OP_ENCRYPT) ? + test_vector->plaintext.data : + test_vector->ciphertext.data; + } else { + test_data = + (options->cipher_op == RTE_CRYPTO_CIPHER_OP_ENCRYPT) ? + test_vector->plaintext.data : + test_vector->ciphertext.data; + } + + while (remaining_bytes) { + mbuf_data = rte_pktmbuf_mtod(mbuf, uint8_t *); + + if (remaining_bytes <= segment_sz) { + memcpy(mbuf_data, test_data, remaining_bytes); + return; + } + + memcpy(mbuf_data, test_data, segment_sz); + remaining_bytes -= segment_sz; + test_data += segment_sz; + mbuf = mbuf->next; + } +} diff --git a/app/test-crypto-perf/cperf_test_common.h b/app/test-crypto-perf/cperf_test_common.h index 3ace0d2e58..a603a607d5 100644 --- a/app/test-crypto-perf/cperf_test_common.h +++ b/app/test-crypto-perf/cperf_test_common.h @@ -21,4 +21,9 @@ cperf_alloc_common_memory(const struct cperf_options *options, uint32_t *dst_buf_offset, struct rte_mempool **pool); +void +cperf_mbuf_set(struct rte_mbuf *mbuf, + const struct cperf_options *options, + const struct cperf_test_vector *test_vector); + #endif /* _CPERF_TEST_COMMON_H_ */ diff --git a/app/test-crypto-perf/cperf_test_latency.c b/app/test-crypto-perf/cperf_test_latency.c index 9ada431660..6f972cea49 100644 --- a/app/test-crypto-perf/cperf_test_latency.c +++ b/app/test-crypto-perf/cperf_test_latency.c @@ -201,6 +201,12 @@ cperf_latency_test_runner(void *arg) ctx->test_vector, iv_offset, &imix_idx, &tsc_start); + /* Populate the mbuf with the test vector */ + for (i = 0; i < burst_size; i++) + cperf_mbuf_set(ops[i]->sym->m_src, + ctx->options, + ctx->test_vector); + tsc_start = rte_rdtsc_precise(); #ifdef CPERF_LINEARIZATION_ENABLE diff --git a/app/test-crypto-perf/cperf_test_verify.c b/app/test-crypto-perf/cperf_test_verify.c index c031330afc..5c0dc82290 100644 --- a/app/test-crypto-perf/cperf_test_verify.c +++ b/app/test-crypto-perf/cperf_test_verify.c @@ -195,42 +195,6 @@ out: return !!res; } -static void -cperf_mbuf_set(struct rte_mbuf *mbuf, - const struct cperf_options *options, - const struct cperf_test_vector *test_vector) -{ - uint32_t segment_sz = options->segment_sz; - uint8_t *mbuf_data; - uint8_t *test_data; - uint32_t remaining_bytes = options->max_buffer_size; - - if (options->op_type == CPERF_AEAD) { - test_data = (options->aead_op == RTE_CRYPTO_AEAD_OP_ENCRYPT) ? - test_vector->plaintext.data : - test_vector->ciphertext.data; - } else { - test_data = - (options->cipher_op == RTE_CRYPTO_CIPHER_OP_ENCRYPT) ? - test_vector->plaintext.data : - test_vector->ciphertext.data; - } - - while (remaining_bytes) { - mbuf_data = rte_pktmbuf_mtod(mbuf, uint8_t *); - - if (remaining_bytes <= segment_sz) { - memcpy(mbuf_data, test_data, remaining_bytes); - return; - } - - memcpy(mbuf_data, test_data, segment_sz); - remaining_bytes -= segment_sz; - test_data += segment_sz; - mbuf = mbuf->next; - } -} - int cperf_verify_test_runner(void *test_ctx) { -- 2.20.1