aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMatias Elo <matias.elo@nokia.com>2018-09-11 08:48:46 +0300
committerMatias Elo <matias.elo@nokia.com>2018-09-17 11:15:14 +0300
commit9799e455df43ebe8d0a39b3660db0e3483863252 (patch)
treeae64e35cd95104c9a8d76b2cb169ca36af3312c2
parenta3c03da21f9c17394ad2ae7c38c20b8e00ecb1e0 (diff)
Port cbf59d43 "linux-gen: queue: remove enq/deq from queue interface"
Signed-off-by: Matias Elo <matias.elo@nokia.com>
-rw-r--r--platform/linux-dpdk/include/odp_buffer_internal.h5
-rw-r--r--platform/linux-dpdk/odp_crypto.c1
-rw-r--r--platform/linux-dpdk/odp_queue_basic.c30
-rw-r--r--platform/linux-dpdk/odp_queue_spsc.c1
-rw-r--r--platform/linux-dpdk/odp_timer.c1
5 files changed, 22 insertions, 16 deletions
diff --git a/platform/linux-dpdk/include/odp_buffer_internal.h b/platform/linux-dpdk/include/odp_buffer_internal.h
index 15ef8c12b..235fc46fc 100644
--- a/platform/linux-dpdk/include/odp_buffer_internal.h
+++ b/platform/linux-dpdk/include/odp_buffer_internal.h
@@ -115,11 +115,6 @@ static inline void _odp_buffer_event_type_set(odp_buffer_t buf, int ev)
buf_hdl_to_hdr(buf)->event_type = ev;
}
-static inline odp_event_t event_from_buf_hdr(odp_buffer_hdr_t *hdr)
-{
- return (odp_event_t)hdr;
-}
-
#ifdef __cplusplus
}
#endif
diff --git a/platform/linux-dpdk/odp_crypto.c b/platform/linux-dpdk/odp_crypto.c
index 4016ac6da..9324c590c 100644
--- a/platform/linux-dpdk/odp_crypto.c
+++ b/platform/linux-dpdk/odp_crypto.c
@@ -24,6 +24,7 @@
/* Inlined API functions */
#include <odp/api/plat/event_inlines.h>
+#include <odp/api/plat/queue_inlines.h>
#include <rte_config.h>
#include <rte_crypto.h>
diff --git a/platform/linux-dpdk/odp_queue_basic.c b/platform/linux-dpdk/odp_queue_basic.c
index c579edcfe..54491724b 100644
--- a/platform/linux-dpdk/odp_queue_basic.c
+++ b/platform/linux-dpdk/odp_queue_basic.c
@@ -289,9 +289,9 @@ static odp_queue_t queue_create(const char *name,
if (!queue->s.spsc &&
param->nonblocking == ODP_NONBLOCKING_LF) {
- queue_lf_func_t *lf_func;
+ queue_lf_func_t *lf_fn;
- lf_func = &queue_glb->queue_lf_func;
+ lf_fn = &queue_glb->queue_lf_func;
queue_lf = queue_lf_create(queue);
@@ -301,10 +301,11 @@ static odp_queue_t queue_create(const char *name,
}
queue->s.queue_lf = queue_lf;
- queue->s.enqueue = lf_func->enq;
- queue->s.enqueue_multi = lf_func->enq_multi;
- queue->s.dequeue = lf_func->deq;
- queue->s.dequeue_multi = lf_func->deq_multi;
+ queue->s.enqueue = lf_fn->enq;
+ queue->s.enqueue_multi = lf_fn->enq_multi;
+ queue->s.dequeue = lf_fn->deq;
+ queue->s.dequeue_multi = lf_fn->deq_multi;
+ queue->s.orig_dequeue_multi = lf_fn->deq_multi;
}
type = queue->s.type;
@@ -677,6 +678,8 @@ static int queue_init(queue_entry_t *queue, const char *name,
queue->s.enqueue_multi = queue_int_enq_multi;
queue->s.dequeue_multi = queue_int_deq_multi;
+ queue->s.orig_dequeue_multi = queue_int_deq_multi;
+
queue->s.ring_st = ring_st_create(queue->s.name, queue_size);
if (queue->s.ring_st == NULL)
return -1;
@@ -861,6 +864,14 @@ static void queue_set_enq_deq_func(odp_queue_t handle,
qentry->s.dequeue_multi = deq_multi;
}
+static int queue_orig_multi(odp_queue_t handle,
+ odp_buffer_hdr_t **buf_hdr, int num)
+{
+ queue_entry_t *queue = qentry_from_handle(handle);
+
+ return queue->s.orig_dequeue_multi(handle, buf_hdr, num);
+}
+
/* API functions */
_odp_queue_api_fn_t queue_basic_api = {
.queue_create = queue_create,
@@ -888,13 +899,10 @@ queue_fn_t queue_basic_fn = {
.term_global = queue_term_global,
.init_local = queue_init_local,
.term_local = queue_term_local,
- .enq = queue_int_enq,
- .enq_multi = queue_int_enq_multi,
- .deq = queue_int_deq,
- .deq_multi = queue_int_deq_multi,
.get_pktout = queue_get_pktout,
.set_pktout = queue_set_pktout,
.get_pktin = queue_get_pktin,
.set_pktin = queue_set_pktin,
- .set_enq_deq_fn = queue_set_enq_deq_func
+ .set_enq_deq_fn = queue_set_enq_deq_func,
+ .orig_deq_multi = queue_orig_multi
};
diff --git a/platform/linux-dpdk/odp_queue_spsc.c b/platform/linux-dpdk/odp_queue_spsc.c
index ff217df22..26ff223fd 100644
--- a/platform/linux-dpdk/odp_queue_spsc.c
+++ b/platform/linux-dpdk/odp_queue_spsc.c
@@ -86,6 +86,7 @@ void queue_spsc_init(queue_entry_t *queue, uint32_t queue_size)
queue->s.dequeue = queue_spsc_deq;
queue->s.enqueue_multi = queue_spsc_enq_multi;
queue->s.dequeue_multi = queue_spsc_deq_multi;
+ queue->s.orig_dequeue_multi = queue_spsc_deq_multi;
queue->s.ring_spsc = ring_spsc_create(queue->s.name, queue_size);
if (queue->s.ring_spsc == NULL)
diff --git a/platform/linux-dpdk/odp_timer.c b/platform/linux-dpdk/odp_timer.c
index 7aac36c77..31d07009c 100644
--- a/platform/linux-dpdk/odp_timer.c
+++ b/platform/linux-dpdk/odp_timer.c
@@ -11,6 +11,7 @@
#include <odp/api/shared_memory.h>
#include <odp/api/ticketlock.h>
#include <odp/api/timer.h>
+#include <odp/api/plat/queue_inlines.h>
#include <odp_init_internal.h>
#include <odp_debug_internal.h>