Skip to content

Commit

Permalink
linux-gen: queue: combine queue interface set functions
Browse files Browse the repository at this point in the history
Decrease queue interface size by combining four queue operation
set functions into a single function.

Signed-off-by: Petri Savolainen <petri.savolainen@linaro.org>
Reviewed-and-tested-by: Bill Fischofer <bill.fischofer@linaro.org>
Signed-off-by: Maxim Uvarov <maxim.uvarov@linaro.org>
  • Loading branch information
Petri Savolainen authored and muvarov committed Jul 11, 2017
1 parent f72ae9c commit 98b09c8
Show file tree
Hide file tree
Showing 4 changed files with 44 additions and 50 deletions.
16 changes: 6 additions & 10 deletions platform/linux-generic/include/odp_queue_if.h
Expand Up @@ -66,12 +66,11 @@ typedef void (*queue_set_pktout_fn_t)(queue_t q_int, odp_pktio_t pktio,
typedef odp_pktin_queue_t (*queue_get_pktin_fn_t)(queue_t q_int);
typedef void (*queue_set_pktin_fn_t)(queue_t q_int, odp_pktio_t pktio,
int index);
typedef void (*queue_set_enq_fn_t)(queue_t q_int, queue_enq_fn_t func);
typedef void (*queue_set_enq_multi_fn_t)(queue_t q_int,
queue_enq_multi_fn_t func);
typedef void (*queue_set_deq_fn_t)(queue_t q_int, queue_deq_fn_t func);
typedef void (*queue_set_deq_multi_fn_t)(queue_t q_int,
queue_deq_multi_fn_t func);
typedef void (*queue_set_enq_deq_fn_t)(queue_t q_int,
queue_enq_fn_t enq,
queue_enq_multi_fn_t enq_multi,
queue_deq_fn_t deq,
queue_deq_multi_fn_t deq_multi);
typedef void (*queue_set_type_fn_t)(queue_t q_int, odp_queue_type_t type);

/* Queue functions towards other internal components */
Expand All @@ -90,10 +89,7 @@ typedef struct {
queue_set_pktout_fn_t set_pktout;
queue_get_pktin_fn_t get_pktin;
queue_set_pktin_fn_t set_pktin;
queue_set_enq_fn_t set_enq_fn;
queue_set_enq_multi_fn_t set_enq_multi_fn;
queue_set_deq_fn_t set_deq_fn;
queue_set_deq_multi_fn_t set_deq_multi_fn;
queue_set_enq_deq_fn_t set_enq_deq_fn;
queue_set_type_fn_t set_type;
} queue_fn_t;

Expand Down
38 changes: 19 additions & 19 deletions platform/linux-generic/odp_packet_io.c
Expand Up @@ -1154,30 +1154,30 @@ int odp_pktio_stats_reset(odp_pktio_t pktio)
return ret;
}

static int pktin_enqueue(queue_t q_int ODP_UNUSED,
odp_buffer_hdr_t *buf_hdr ODP_UNUSED)
static int abort_pktin_enqueue(queue_t q_int ODP_UNUSED,
odp_buffer_hdr_t *buf_hdr ODP_UNUSED)
{
ODP_ABORT("attempted enqueue to a pktin queue");
return -1;
}

static int pktin_enq_multi(queue_t q_int ODP_UNUSED,
odp_buffer_hdr_t *buf_hdr[] ODP_UNUSED,
int num ODP_UNUSED)
static int abort_pktin_enq_multi(queue_t q_int ODP_UNUSED,
odp_buffer_hdr_t *buf_hdr[] ODP_UNUSED,
int num ODP_UNUSED)
{
ODP_ABORT("attempted enqueue to a pktin queue");
return 0;
}

static odp_buffer_hdr_t *pktout_dequeue(queue_t q_int ODP_UNUSED)
static odp_buffer_hdr_t *abort_pktout_dequeue(queue_t q_int ODP_UNUSED)
{
ODP_ABORT("attempted dequeue from a pktout queue");
return NULL;
}

static int pktout_deq_multi(queue_t q_int ODP_UNUSED,
odp_buffer_hdr_t *buf_hdr[] ODP_UNUSED,
int num ODP_UNUSED)
static int abort_pktout_deq_multi(queue_t q_int ODP_UNUSED,
odp_buffer_hdr_t *buf_hdr[] ODP_UNUSED,
int num ODP_UNUSED)
{
ODP_ABORT("attempted dequeue from a pktout queue");
return 0;
Expand Down Expand Up @@ -1272,12 +1272,11 @@ int odp_pktin_queue_config(odp_pktio_t pktio,

if (mode == ODP_PKTIN_MODE_QUEUE) {
queue_fn->set_pktin(q_int, pktio, i);
queue_fn->set_enq_fn(q_int, pktin_enqueue);
queue_fn->set_deq_fn(q_int, pktin_dequeue);
queue_fn->set_enq_multi_fn(q_int,
pktin_enq_multi);
queue_fn->set_deq_multi_fn(q_int,
pktin_deq_multi);
queue_fn->set_enq_deq_fn(q_int,
abort_pktin_enqueue,
abort_pktin_enq_multi,
pktin_dequeue,
pktin_deq_multi);
}

entry->s.in_queue[i].queue = queue;
Expand Down Expand Up @@ -1401,10 +1400,11 @@ int odp_pktout_queue_config(odp_pktio_t pktio,
queue_fn->set_pktout(q_int, pktio, i);

/* Override default enqueue / dequeue functions */
queue_fn->set_enq_fn(q_int, pktout_enqueue);
queue_fn->set_deq_fn(q_int, pktout_dequeue);
queue_fn->set_enq_multi_fn(q_int, pktout_enq_multi);
queue_fn->set_deq_multi_fn(q_int, pktout_deq_multi);
queue_fn->set_enq_deq_fn(q_int,
pktout_enqueue,
pktout_enq_multi,
abort_pktout_dequeue,
abort_pktout_deq_multi);

entry->s.out_queue[i].queue = queue;
}
Expand Down
34 changes: 16 additions & 18 deletions platform/linux-generic/odp_queue.c
Expand Up @@ -748,24 +748,25 @@ static void queue_set_pktin(queue_t q_int, odp_pktio_t pktio, int index)
qentry->s.pktin.index = index;
}

static void queue_set_enq_func(queue_t q_int, queue_enq_fn_t func)
static void queue_set_enq_deq_func(queue_t q_int,
queue_enq_fn_t enq,
queue_enq_multi_fn_t enq_multi,
queue_deq_fn_t deq,
queue_deq_multi_fn_t deq_multi)
{
qentry_from_int(q_int)->s.enqueue = func;
}
queue_entry_t *qentry = qentry_from_int(q_int);

static void queue_set_enq_multi_func(queue_t q_int, queue_enq_multi_fn_t func)
{
qentry_from_int(q_int)->s.enqueue_multi = func;
}
if (enq)
qentry->s.enqueue = enq;

static void queue_set_deq_func(queue_t q_int, queue_deq_fn_t func)
{
qentry_from_int(q_int)->s.dequeue = func;
}
if (enq_multi)
qentry->s.enqueue_multi = enq_multi;

static void queue_set_deq_multi_func(queue_t q_int, queue_deq_multi_fn_t func)
{
qentry_from_int(q_int)->s.dequeue_multi = func;
if (deq)
qentry->s.dequeue = deq;

if (deq_multi)
qentry->s.dequeue_multi = deq_multi;
}

static void queue_set_type(queue_t q_int, odp_queue_type_t type)
Expand Down Expand Up @@ -821,9 +822,6 @@ queue_fn_t queue_default_fn = {
.set_pktout = queue_set_pktout,
.get_pktin = queue_get_pktin,
.set_pktin = queue_set_pktin,
.set_enq_fn = queue_set_enq_func,
.set_enq_multi_fn = queue_set_enq_multi_func,
.set_deq_fn = queue_set_deq_func,
.set_deq_multi_fn = queue_set_deq_multi_func,
.set_enq_deq_fn = queue_set_enq_deq_func,
.set_type = queue_set_type
};
6 changes: 3 additions & 3 deletions platform/linux-generic/odp_traffic_mngr.c
Expand Up @@ -3927,9 +3927,9 @@ odp_tm_queue_t odp_tm_queue_create(odp_tm_t odp_tm,
}
tm_queue_obj->tm_qentry = queue_fn->from_ext(queue);
queue_fn->set_type(tm_queue_obj->tm_qentry, QUEUE_TYPE_TM);
queue_fn->set_enq_fn(tm_queue_obj->tm_qentry, queue_tm_reenq);
queue_fn->set_enq_multi_fn(tm_queue_obj->tm_qentry,
queue_tm_reenq_multi);
queue_fn->set_enq_deq_fn(tm_queue_obj->tm_qentry,
queue_tm_reenq, queue_tm_reenq_multi,
NULL, NULL);

tm_system->queue_num_tbl[tm_queue_obj->queue_num - 1] = tm_queue_obj;
odp_ticketlock_lock(&tm_system->tm_system_lock);
Expand Down

0 comments on commit 98b09c8

Please sign in to comment.