Replaced pktio handle with pktio index in scheduler interface.
Indexes are used in implementation internal interfaces for
performance reasons.

Signed-off-by: Petri Savolainen <[email protected]>
---
 platform/linux-generic/include/odp_schedule_if.h |  3 +--
 platform/linux-generic/odp_packet_io.c           |  2 +-
 platform/linux-generic/odp_schedule.c            | 15 +++++++--------
 platform/linux-generic/odp_schedule_sp.c         | 12 ++++++------
 4 files changed, 15 insertions(+), 17 deletions(-)

diff --git a/platform/linux-generic/include/odp_schedule_if.h 
b/platform/linux-generic/include/odp_schedule_if.h
index 86a117f..029a767 100644
--- a/platform/linux-generic/include/odp_schedule_if.h
+++ b/platform/linux-generic/include/odp_schedule_if.h
@@ -12,7 +12,6 @@ extern "C" {
 #endif
 
 #include <odp/api/queue.h>
-#include <odp/api/packet_io.h>
 #include <odp/api/schedule.h>
 
 /* Constants defined by the scheduler. These should be converted into interface
@@ -21,7 +20,7 @@ extern "C" {
 /* Number of ordered locks per queue */
 #define SCHEDULE_ORDERED_LOCKS_PER_QUEUE 2
 
-typedef void (*schedule_pktio_start_fn_t)(odp_pktio_t pktio, int num_in_queue,
+typedef void (*schedule_pktio_start_fn_t)(int pktio_index, int num_in_queue,
                                          int in_queue_idx[]);
 typedef int (*schedule_thr_add_fn_t)(odp_schedule_group_t group, int thr);
 typedef int (*schedule_thr_rem_fn_t)(odp_schedule_group_t group, int thr);
diff --git a/platform/linux-generic/odp_packet_io.c 
b/platform/linux-generic/odp_packet_io.c
index 9dff9f6..518b53e 100644
--- a/platform/linux-generic/odp_packet_io.c
+++ b/platform/linux-generic/odp_packet_io.c
@@ -456,7 +456,7 @@ int odp_pktio_start(odp_pktio_t hdl)
                        }
                }
 
-               sched_fn->pktio_start(hdl, num, index);
+               sched_fn->pktio_start(pktio_to_id(hdl), num, index);
        }
 
        return res;
diff --git a/platform/linux-generic/odp_schedule.c 
b/platform/linux-generic/odp_schedule.c
index f572468..3aaf696 100644
--- a/platform/linux-generic/odp_schedule.c
+++ b/platform/linux-generic/odp_schedule.c
@@ -98,7 +98,6 @@ typedef struct {
                };
 
                struct {
-                       odp_pktio_t   pktio;
                        int           pktio_index;
                        int           num;
                        int           index[MAX_PKTIN];
@@ -404,12 +403,12 @@ static void schedule_destroy_queue(uint32_t queue_index)
        sched->queue[queue_index].prio      = 0;
 }
 
-static int poll_cmd_queue_idx(odp_pktio_t pktio, int in_queue_idx)
+static int poll_cmd_queue_idx(int pktio_index, int in_queue_idx)
 {
-       return (POLL_CMD_QUEUES - 1) & (odp_pktio_index(pktio) ^ in_queue_idx);
+       return (POLL_CMD_QUEUES - 1) & (pktio_index ^ in_queue_idx);
 }
 
-static void schedule_pktio_start(odp_pktio_t pktio, int num_in_queue,
+static void schedule_pktio_start(int pktio_index, int num_in_queue,
                                 int in_queue_idx[])
 {
        odp_buffer_t buf;
@@ -429,12 +428,11 @@ static void schedule_pktio_start(odp_pktio_t pktio, int 
num_in_queue,
 
                sched_cmd        = odp_buffer_addr(buf);
                sched_cmd->cmd   = SCHED_CMD_POLL_PKTIN;
-               sched_cmd->pktio = pktio;
-               sched_cmd->pktio_index = odp_pktio_index(pktio);
+               sched_cmd->pktio_index = pktio_index;
                sched_cmd->num   = 1;
                sched_cmd->index[0] = in_queue_idx[i];
 
-               idx = poll_cmd_queue_idx(pktio, in_queue_idx[i]);
+               idx = poll_cmd_queue_idx(pktio_index, in_queue_idx[i]);
 
                odp_spinlock_lock(&sched->poll_cmd_lock);
                sched->poll_cmd[idx].num++;
@@ -449,7 +447,8 @@ static void schedule_pktio_start(odp_pktio_t pktio, int 
num_in_queue,
 
 static void schedule_pktio_stop(sched_cmd_t *sched_cmd)
 {
-       int idx = poll_cmd_queue_idx(sched_cmd->pktio, sched_cmd->index[0]);
+       int idx = poll_cmd_queue_idx(sched_cmd->pktio_index,
+                                    sched_cmd->index[0]);
 
        odp_spinlock_lock(&sched->poll_cmd_lock);
        sched->poll_cmd[idx].num--;
diff --git a/platform/linux-generic/odp_schedule_sp.c 
b/platform/linux-generic/odp_schedule_sp.c
index 7162c7b..0a21b2c 100644
--- a/platform/linux-generic/odp_schedule_sp.c
+++ b/platform/linux-generic/odp_schedule_sp.c
@@ -7,6 +7,7 @@
 #include <string.h>
 #include <odp/api/ticketlock.h>
 #include <odp/api/thread.h>
+#include <odp/api/time.h>
 #include <odp/api/schedule.h>
 #include <odp_schedule_if.h>
 #include <odp_debug_internal.h>
@@ -340,16 +341,15 @@ static int ord_enq_multi(uint32_t queue_index, void 
*buf_hdr[], int num,
        return 0;
 }
 
-static void pktio_start(odp_pktio_t pktio, int num, int pktin_idx[])
+static void pktio_start(int pktio_index, int num, int pktin_idx[])
 {
-       int pi, i;
+       int i;
        sched_cmd_t *cmd;
 
-       ODP_DBG("pktio:%" PRIu64 ", %i pktin queues %i\n",
-               odp_pktio_to_u64(pktio), num, pktin_idx[0]);
+       ODP_DBG("pktio index: %i, %i pktin queues %i\n",
+               pktio_index, num, pktin_idx[0]);
 
-       pi  = odp_pktio_index(pktio);
-       cmd = &sched_global.pktio_cmd[pi];
+       cmd = &sched_global.pktio_cmd[pktio_index];
 
        if (num > NUM_PKTIN)
                ODP_ABORT("Supports only %i pktin queues per interface\n",
-- 
2.8.1

_______________________________________________
lng-odp mailing list
[email protected]
https://lists.linaro.org/mailman/listinfo/lng-odp

Reply via email to