aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPetri Savolainen <petri.savolainen@linaro.org>2018-08-21 15:08:45 +0300
committerMaxim Uvarov <maxim.uvarov@linaro.org>2018-08-21 18:07:38 +0300
commitf850092201668db7a73258a58324be10b7fb1909 (patch)
treee276eeec3ec9b154aa61c0a2681c84959e85419f
parent912e026c108d7a496ac7467e953dea77dadaaa57 (diff)
linux-gen: queue: fix ordered queue issue
Also plain queue enqueue needs to call scheduler ordered enqueue function, so that scheduler can check re-ordering needs. Signed-off-by: Petri Savolainen <petri.savolainen@linaro.org> Reviewed-by: Dmitry Eremin-Solenikov <dmitry.ereminsolenikov@linaro.org> Reviewed-by: Bill Fischofer <bill.fischofer@linaro.org> Signed-off-by: Maxim Uvarov <maxim.uvarov@linaro.org>
-rw-r--r--platform/linux-generic/odp_queue_basic.c5
1 files changed, 4 insertions, 1 deletions
diff --git a/platform/linux-generic/odp_queue_basic.c b/platform/linux-generic/odp_queue_basic.c
index 22a76b935..e5d915643 100644
--- a/platform/linux-generic/odp_queue_basic.c
+++ b/platform/linux-generic/odp_queue_basic.c
@@ -489,13 +489,16 @@ static inline int _plain_queue_enq_multi(odp_queue_t handle,
odp_buffer_hdr_t *buf_hdr[], int num)
{
queue_entry_t *queue;
- int num_enq;
+ int ret, num_enq;
ring_st_t *ring_st;
uint32_t buf_idx[num];
queue = qentry_from_handle(handle);
ring_st = &queue->s.ring_st;
+ if (sched_fn->ord_enq_multi(handle, (void **)buf_hdr, num, &ret))
+ return ret;
+
buffer_index_from_buf(buf_idx, buf_hdr, num);
LOCK(queue);