Add service core configuration for Rx adapter. The configuration picks
the least used service core to run the service on.

Signed-off-by: Pavan Nikhilesh <pbhagavat...@caviumnetworks.com>
---
 app/test-eventdev/evt_common.h       | 41 ++++++++++++++++--------------------
 app/test-eventdev/test_perf_atq.c    | 12 +++++++----
 app/test-eventdev/test_perf_common.c | 13 ++++++++++++
 app/test-eventdev/test_perf_queue.c  | 12 +++++++----
 4 files changed, 47 insertions(+), 31 deletions(-)

diff --git a/app/test-eventdev/evt_common.h b/app/test-eventdev/evt_common.h
index 0fadab4a0..042823a52 100644
--- a/app/test-eventdev/evt_common.h
+++ b/app/test-eventdev/evt_common.h
@@ -94,41 +94,36 @@ evt_has_all_types_queue(uint8_t dev_id)
 }
 
 static inline int
-evt_service_setup(uint8_t dev_id)
+evt_service_setup(uint32_t service_id)
 {
-       uint32_t service_id;
        int32_t core_cnt;
        unsigned int lcore = 0;
        uint32_t core_array[RTE_MAX_LCORE];
        uint8_t cnt;
        uint8_t min_cnt = UINT8_MAX;
 
-       if (evt_has_distributed_sched(dev_id))
-               return 0;
-
        if (!rte_service_lcore_count())
                return -ENOENT;
 
-       if (!rte_event_dev_service_id_get(dev_id, &service_id)) {
-               core_cnt = rte_service_lcore_list(core_array,
-                               RTE_MAX_LCORE);
-               if (core_cnt < 0)
-                       return -ENOENT;
-               /* Get the core which has least number of services running. */
-               while (core_cnt--) {
-                       /* Reset default mapping */
-                       rte_service_map_lcore_set(service_id,
-                                       core_array[core_cnt], 0);
-                       cnt = rte_service_lcore_count_services(
-                                       core_array[core_cnt]);
-                       if (cnt < min_cnt) {
-                               lcore = core_array[core_cnt];
-                               min_cnt = cnt;
-                       }
+       core_cnt = rte_service_lcore_list(core_array,
+                       RTE_MAX_LCORE);
+       if (core_cnt < 0)
+               return -ENOENT;
+       /* Get the core which has least number of services running. */
+       while (core_cnt--) {
+               /* Reset default mapping */
+               rte_service_map_lcore_set(service_id,
+                               core_array[core_cnt], 0);
+               cnt = rte_service_lcore_count_services(
+                               core_array[core_cnt]);
+               if (cnt < min_cnt) {
+                       lcore = core_array[core_cnt];
+                       min_cnt = cnt;
                }
-               if (rte_service_map_lcore_set(service_id, lcore, 1))
-                       return -ENOENT;
        }
+       if (rte_service_map_lcore_set(service_id, lcore, 1))
+               return -ENOENT;
+
        return 0;
 }
 
diff --git a/app/test-eventdev/test_perf_atq.c 
b/app/test-eventdev/test_perf_atq.c
index 1fe16ed63..8ca07d4f8 100644
--- a/app/test-eventdev/test_perf_atq.c
+++ b/app/test-eventdev/test_perf_atq.c
@@ -239,10 +239,14 @@ perf_atq_eventdev_setup(struct evt_test *test, struct 
evt_options *opt)
        if (ret)
                return ret;
 
-       ret = evt_service_setup(opt->dev_id);
-       if (ret) {
-               evt_err("No service lcore found to run event dev.");
-               return ret;
+       if (!evt_has_distributed_sched(opt->dev_id)) {
+               uint32_t service_id;
+               rte_event_dev_service_id_get(opt->dev_id, &service_id);
+               ret = evt_service_setup(service_id);
+               if (ret) {
+                       evt_err("No service lcore found to run event dev.");
+                       return ret;
+               }
        }
 
        ret = rte_event_dev_start(opt->dev_id);
diff --git a/app/test-eventdev/test_perf_common.c 
b/app/test-eventdev/test_perf_common.c
index 1fd7ef8b1..9aff31f20 100644
--- a/app/test-eventdev/test_perf_common.c
+++ b/app/test-eventdev/test_perf_common.c
@@ -267,6 +267,19 @@ perf_event_rx_adapter_setup(struct evt_options *opt, 
uint8_t stride,
                        return ret;
                }
 
+               if (!(cap & RTE_EVENT_ETH_RX_ADAPTER_CAP_INTERNAL_PORT)) {
+                       uint32_t service_id;
+
+                       rte_event_eth_rx_adapter_service_id_get(prod,
+                                       &service_id);
+                       ret = evt_service_setup(service_id);
+                       if (ret) {
+                               evt_err("Failed to setup service core"
+                                               " for Rx adapter\n");
+                               return ret;
+                       }
+               }
+
                ret = rte_eth_dev_start(prod);
                if (ret) {
                        evt_err("Ethernet dev [%d] failed to start."
diff --git a/app/test-eventdev/test_perf_queue.c 
b/app/test-eventdev/test_perf_queue.c
index e446c5437..4583122b3 100644
--- a/app/test-eventdev/test_perf_queue.c
+++ b/app/test-eventdev/test_perf_queue.c
@@ -252,10 +252,14 @@ perf_queue_eventdev_setup(struct evt_test *test, struct 
evt_options *opt)
        if (ret)
                return ret;
 
-       ret = evt_service_setup(opt->dev_id);
-       if (ret) {
-               evt_err("No service lcore found to run event dev.");
-               return ret;
+       if (!evt_has_distributed_sched(opt->dev_id)) {
+               uint32_t service_id;
+               rte_event_dev_service_id_get(opt->dev_id, &service_id);
+               ret = evt_service_setup(service_id);
+               if (ret) {
+                       evt_err("No service lcore found to run event dev.");
+                       return ret;
+               }
        }
 
        ret = rte_event_dev_start(opt->dev_id);
-- 
2.14.1

Reply via email to