X-Git-Url: http://git.droids-corp.org/?a=blobdiff_plain;ds=sidebyside;f=app%2Ftest-crypto-perf%2Fcperf_test_common.c;h=97a1ea47ad5b437dbf2aa317071ed16662e699b0;hb=39ddd5d1895e72ba2bc974eddbc12a3135639ed1;hp=85603eed5bf16d74b3c2e767a62de7345ddd0e61;hpb=8fd2b5a60d1cd0c7bc608452d6fd8c13f8761f1d;p=dpdk.git diff --git a/app/test-crypto-perf/cperf_test_common.c b/app/test-crypto-perf/cperf_test_common.c index 85603eed5b..97a1ea47ad 100644 --- a/app/test-crypto-perf/cperf_test_common.c +++ b/app/test-crypto-perf/cperf_test_common.c @@ -82,11 +82,25 @@ fill_multi_seg_mbuf(struct rte_mbuf *m, struct rte_mempool *mp, m->next = NULL; } +static void +mempool_asym_obj_init(struct rte_mempool *mp, __rte_unused void *opaque_arg, + void *obj, __rte_unused unsigned int i) +{ + struct rte_crypto_op *op = obj; + + /* Set crypto operation */ + op->type = RTE_CRYPTO_OP_TYPE_ASYMMETRIC; + op->status = RTE_CRYPTO_OP_STATUS_NOT_PROCESSED; + op->sess_type = RTE_CRYPTO_OP_WITH_SESSION; + op->phys_addr = rte_mem_virt2iova(obj); + op->mempool = mp; +} + static void mempool_obj_init(struct rte_mempool *mp, void *opaque_arg, void *obj, - __attribute__((unused)) unsigned int i) + __rte_unused unsigned int i) { struct obj_params *params = opaque_arg; struct rte_crypto_op *op = obj; @@ -140,6 +154,24 @@ cperf_alloc_common_memory(const struct cperf_options *options, uint16_t crypto_op_size = sizeof(struct rte_crypto_op) + sizeof(struct rte_crypto_sym_op); uint16_t crypto_op_private_size; + + if (options->op_type == CPERF_ASYM_MODEX) { + snprintf(pool_name, RTE_MEMPOOL_NAMESIZE, "perf_asym_op_pool%u", + rte_socket_id()); + *pool = rte_crypto_op_pool_create( + pool_name, RTE_CRYPTO_OP_TYPE_ASYMMETRIC, + options->pool_sz, RTE_MEMPOOL_CACHE_MAX_SIZE, 0, + rte_socket_id()); + if (*pool == NULL) { + RTE_LOG(ERR, USER1, + "Cannot allocate mempool for device %u\n", + dev_id); + return -1; + } + rte_mempool_obj_iter(*pool, mempool_asym_obj_init, NULL); + return 0; + } + /* * If doing AES-CCM, IV field needs to be 16 bytes long, * and AAD field needs to be long enough to have 18 bytes, @@ -194,7 +226,7 @@ cperf_alloc_common_memory(const struct cperf_options *options, (mbuf_size * segments_nb); params.dst_buf_offset = *dst_buf_offset; /* Destination buffer will be one segment only */ - obj_size += max_size; + obj_size += max_size + sizeof(struct rte_mbuf); } *pool = rte_mempool_create_empty(pool_name,