When get_queue_id_from_ring_info() fails to match a queue index
(returning UINT16_MAX), an early return skipped clearing the ring
entry and advancing the head pointer. This left the valid bit set,
causing the same malformed entry to be reprocessed on every
subsequent interrupt, blocking all further ring processing.
Replace the return with break so the entry is consumed and the
loop continues normally. Fix applies to both PF and VF paths.
Fixes: 3cabc8eaf524 ("baseband/acc200: support interrupt")
Cc: [email protected]
Signed-off-by: Hernan Vargas <[email protected]>
---
drivers/baseband/acc/rte_vrb_pmd.c | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/drivers/baseband/acc/rte_vrb_pmd.c
b/drivers/baseband/acc/rte_vrb_pmd.c
index b9ff027ce8..803e0c9177 100644
--- a/drivers/baseband/acc/rte_vrb_pmd.c
+++ b/drivers/baseband/acc/rte_vrb_pmd.c
@@ -454,7 +454,7 @@ vrb_dev_interrupt_handler(void *cb_arg)
rte_bbdev_log(ERR,
"Couldn't find queue:
aq_id: %u, qg_id: %u, vf_id: %u",
aq_id, qg_id, vf_id);
- return;
+ break;
}
rte_bbdev_pmd_callback_process(dev,
RTE_BBDEV_EVENT_DEQUEUE,
&deq_intr_det);
@@ -482,7 +482,7 @@ vrb_dev_interrupt_handler(void *cb_arg)
rte_bbdev_log(ERR,
"Couldn't find queue:
aq_id: %u, qg_id: %u",
aq_id, qg_id);
- return;
+ break;
}
rte_bbdev_pmd_callback_process(dev,
RTE_BBDEV_EVENT_DEQUEUE,
&deq_intr_det);
--
2.34.1