aboutsummaryrefslogtreecommitdiff
path: root/platform
diff options
context:
space:
mode:
Diffstat (limited to 'platform')
-rw-r--r--platform/linux-keystone2/odp_queue.c14
1 files changed, 12 insertions, 2 deletions
diff --git a/platform/linux-keystone2/odp_queue.c b/platform/linux-keystone2/odp_queue.c
index f161b8a5..8a88a8ce 100644
--- a/platform/linux-keystone2/odp_queue.c
+++ b/platform/linux-keystone2/odp_queue.c
@@ -429,13 +429,19 @@ int queue_poll_enq_multi(queue_entry_t *entry, const odp_event_t ev[], int num)
odp_event_t queue_poll_deq(queue_entry_t *entry)
{
+ odp_event_t ev;
Cppi_HostDesc *desc;
desc = (void *)QMSS_DESC_PTR(Qmss_queuePop(entry->qmss_queue));
odp_pr_vdbg("queue: %s, buf: %p, qmss_queue: %d\n",
entry->name, desc, entry->qmss_queue);
- return _cppi_desc_to_odp_ev(desc);
+ ev = _cppi_desc_to_odp_ev(desc);
+
+ if (ev != ODP_EVENT_INVALID)
+ pktin_update_event(ev, entry);
+
+ return ev;
}
int queue_poll_deq_multi(queue_entry_t *entry, odp_event_t ev[], int num)
@@ -446,8 +452,12 @@ int queue_poll_deq_multi(queue_entry_t *entry, odp_event_t ev[], int num)
/** @todo: Implement multi dequeue a lower level */
desc = Qmss_queuePop(entry->qmss_queue);
desc = (void *)QMSS_DESC_PTR(desc);
+
ev[i] = _cppi_desc_to_odp_ev(desc);
- if (!ev[i])
+
+ if (ev[i] != ODP_EVENT_INVALID)
+ pktin_update_event(ev[i], entry);
+ else
break;
}