app/eventdev: add service core configuration
authorPavan Nikhilesh <pbhagavatula@caviumnetworks.com>
Mon, 11 Dec 2017 15:13:45 +0000 (20:43 +0530)
committerJerin Jacob <jerin.jacob@caviumnetworks.com>
Fri, 19 Jan 2018 15:09:56 +0000 (16:09 +0100)
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 <pbhagavatula@caviumnetworks.com>
app/test-eventdev/evt_common.h
app/test-eventdev/test_perf_atq.c
app/test-eventdev/test_perf_common.c
app/test-eventdev/test_perf_queue.c

index 463e062..21d3c10 100644 (file)
@@ -66,41 +66,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;
 }
 
index 4b9b439..5a48ffd 100644 (file)
@@ -211,10 +211,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);
index 26122a5..e82cc93 100644 (file)
@@ -239,6 +239,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."
index f8a5cd0..63379ce 100644 (file)
@@ -224,10 +224,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);