Added addition crypto adapter API calls and enabled services to use
software implementation of crypto adapter.

Signed-off-by: Shijith Thotton <sthot...@marvell.com>
---
 app/test-eventdev/test_perf_atq.c    | 16 +++++++++-
 app/test-eventdev/test_perf_common.c | 48 ++++++++++++++++++++++++----
 app/test-eventdev/test_perf_common.h |  1 +
 app/test-eventdev/test_perf_queue.c  | 16 +++++++++-
 4 files changed, 72 insertions(+), 9 deletions(-)

diff --git a/app/test-eventdev/test_perf_atq.c 
b/app/test-eventdev/test_perf_atq.c
index 67ff681666..b9c22effd6 100644
--- a/app/test-eventdev/test_perf_atq.c
+++ b/app/test-eventdev/test_perf_atq.c
@@ -301,9 +301,23 @@ perf_atq_eventdev_setup(struct evt_test *test, struct 
evt_options *opt)
                                return ret;
                        }
                }
+
+               if (t->ca_sw_cap) {
+                       uint32_t service_id;
+
+                       rte_event_crypto_adapter_service_id_get(TEST_PERF_CA_ID,
+                                                               &service_id);
+                       ret = evt_service_setup(service_id);
+                       if (ret) {
+                               evt_err("Failed to setup crypto adapter 
service");
+                               return ret;
+                       }
+
+                       ret = rte_event_crypto_adapter_start(TEST_PERF_CA_ID);
+               }
        }
 
-       return 0;
+       return ret;
 }
 
 static void
diff --git a/app/test-eventdev/test_perf_common.c 
b/app/test-eventdev/test_perf_common.c
index ca83e41555..dc644692eb 100644
--- a/app/test-eventdev/test_perf_common.c
+++ b/app/test-eventdev/test_perf_common.c
@@ -4,6 +4,8 @@
 
 #include <math.h>
 
+#include <eventdev_pmd.h>
+
 #include "test_perf_common.h"
 
 #define NB_CRYPTODEV_DESCRIPTORS 128
@@ -336,10 +338,10 @@ crypto_adapter_enq_op_fwd(struct prod_data *p)
        struct rte_crypto_sym_op *sym_op;
        uint32_t flow_counter = 0;
        struct rte_crypto_op *op;
+       uint16_t len, nb_events;
        struct rte_event ev;
        struct rte_mbuf *m;
        uint64_t count = 0;
-       uint16_t len;
 
        if (opt->verbose_level > 1)
                printf("%s(): lcore %d port %d queue %d cdev_id %u cdev_qp_id 
%u\n",
@@ -369,9 +371,16 @@ crypto_adapter_enq_op_fwd(struct prod_data *p)
                        op, crypto_sess[flow_counter++ % nb_flows]);
                ev.event_ptr = op;
 
-               while (rte_event_crypto_adapter_enqueue(dev_id, port, &ev, 1) 
!= 1 &&
-                      t->done == false)
+               do {
+                       if (t->ca_sw_cap)
+                               nb_events = rte_event_enqueue_burst(
+                                       dev_id, port, &ev, 1);
+                       else
+                               nb_events = rte_event_crypto_adapter_enqueue(
+                                       dev_id, port, &ev, 1);
+
                        rte_pause();
+               } while (nb_events != 1 && t->done == false);
 
                count++;
        }
@@ -674,10 +683,16 @@ perf_event_crypto_adapter_setup(struct test_perf *t, 
struct prod_data *p)
                return ret;
        }
 
-       if (((opt->crypto_adptr_mode == RTE_EVENT_CRYPTO_ADAPTER_OP_NEW) &&
-            !(cap & RTE_EVENT_CRYPTO_ADAPTER_CAP_INTERNAL_PORT_OP_NEW)) ||
-           ((opt->crypto_adptr_mode == RTE_EVENT_CRYPTO_ADAPTER_OP_FORWARD) &&
-            !(cap & RTE_EVENT_CRYPTO_ADAPTER_CAP_INTERNAL_PORT_OP_FWD))) {
+       if (cap == RTE_EVENT_CRYPTO_ADAPTER_SW_CAP) {
+               t->ca_sw_cap = 1;
+       } else if (((opt->crypto_adptr_mode ==
+                    RTE_EVENT_CRYPTO_ADAPTER_OP_NEW) &&
+                   !(cap &
+                     RTE_EVENT_CRYPTO_ADAPTER_CAP_INTERNAL_PORT_OP_NEW)) ||
+                  ((opt->crypto_adptr_mode ==
+                    RTE_EVENT_CRYPTO_ADAPTER_OP_FORWARD) &&
+                   !(cap &
+                     RTE_EVENT_CRYPTO_ADAPTER_CAP_INTERNAL_PORT_OP_FWD))) {
                evt_err("crypto adapter %s mode unsupported\n",
                        opt->crypto_adptr_mode ? "OP_FORWARD" : "OP_NEW");
                return -EINVAL;
@@ -706,6 +721,22 @@ perf_event_crypto_adapter_setup(struct test_perf *t, 
struct prod_data *p)
                        TEST_PERF_CA_ID, p->ca.cdev_id, p->ca.cdev_qp_id, NULL);
        }
 
+       if (ret)
+               return ret;
+
+       if (t->ca_sw_cap) {
+               uint8_t sw_event_port;
+               uint32_t service_id;
+
+               rte_event_crypto_adapter_event_port_get(TEST_PERF_CA_ID,
+                                                       &sw_event_port);
+               rte_event_port_link(p->dev_id, sw_event_port, &p->queue_id,
+                                   NULL, 1);
+
+               rte_event_dev_service_id_get(p->dev_id, &service_id);
+               ret = evt_service_setup(service_id);
+       }
+
        return ret;
 }
 
@@ -1239,6 +1270,9 @@ perf_cryptodev_destroy(struct evt_test *test, struct 
evt_options *opt)
        if (opt->prod_type != EVT_PROD_TYPE_EVENT_CRYPTO_ADPTR)
                return;
 
+       if (t->ca_sw_cap)
+               rte_event_crypto_adapter_stop(TEST_PERF_CA_ID);
+
        for (port = t->nb_workers; port < perf_nb_event_ports(opt); port++) {
                struct prod_data *p = &t->prod[port];
 
diff --git a/app/test-eventdev/test_perf_common.h 
b/app/test-eventdev/test_perf_common.h
index ea0907d61a..c3402696fc 100644
--- a/app/test-eventdev/test_perf_common.h
+++ b/app/test-eventdev/test_perf_common.h
@@ -67,6 +67,7 @@ struct test_perf {
        uint8_t sched_type_list[EVT_MAX_STAGES] __rte_cache_aligned;
        struct rte_event_timer_adapter *timer_adptr[
                RTE_EVENT_TIMER_ADAPTER_NUM_MAX] __rte_cache_aligned;
+       uint8_t ca_sw_cap;
        struct rte_mempool *ca_op_pool;
        struct rte_mempool *ca_sess_pool;
        struct rte_mempool *ca_sess_priv_pool;
diff --git a/app/test-eventdev/test_perf_queue.c 
b/app/test-eventdev/test_perf_queue.c
index dcf6d82947..a2158c65da 100644
--- a/app/test-eventdev/test_perf_queue.c
+++ b/app/test-eventdev/test_perf_queue.c
@@ -317,9 +317,23 @@ perf_queue_eventdev_setup(struct evt_test *test, struct 
evt_options *opt)
                                return ret;
                        }
                }
+
+               if (t->ca_sw_cap) {
+                       uint32_t service_id;
+
+                       rte_event_crypto_adapter_service_id_get(TEST_PERF_CA_ID,
+                                                               &service_id);
+                       ret = evt_service_setup(service_id);
+                       if (ret) {
+                               evt_err("Failed to setup crypto adapter 
service");
+                               return ret;
+                       }
+
+                       ret = rte_event_crypto_adapter_start(TEST_PERF_CA_ID);
+               }
        }
 
-       return 0;
+       return ret;
 }
 
 static void
-- 
2.25.1

Reply via email to