From 9799e455df43ebe8d0a39b3660db0e3483863252 Mon Sep 17 00:00:00 2001 From: Matias Elo Date: Tue, 11 Sep 2018 08:48:46 +0300 Subject: Port cbf59d43 "linux-gen: queue: remove enq/deq from queue interface" Signed-off-by: Matias Elo --- platform/linux-dpdk/include/odp_buffer_internal.h | 5 ---- platform/linux-dpdk/odp_crypto.c | 1 + platform/linux-dpdk/odp_queue_basic.c | 30 ++++++++++++++--------- platform/linux-dpdk/odp_queue_spsc.c | 1 + platform/linux-dpdk/odp_timer.c | 1 + 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 +#include #include #include 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 #include #include +#include #include #include -- cgit v1.2.3