diff options
Diffstat (limited to 'platform')
-rw-r--r-- | platform/linux-keystone2/odp_queue.c | 14 |
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; } |