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
