After dequeuing Rx packets and enqueueing them to the temporary buffer towards eventdev, the packet Rx loop exits if the temporary buffer is full but the current WRR position is not saved.
Save away the current value of the WRR position, so packets are dequeued from the correct Rx queue in the next invocation. Fixes: 9c38b704d280 ("eventdev: add eth Rx adapter implementation") Suggested-by: Gage Eads <gage.e...@intel.com> Signed-off-by: Nikhil Rao <nikhil....@intel.com> Cc: sta...@dpdk.org --- lib/librte_eventdev/rte_event_eth_rx_adapter.c | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/lib/librte_eventdev/rte_event_eth_rx_adapter.c b/lib/librte_eventdev/rte_event_eth_rx_adapter.c index 6f70509..53a3788 100644 --- a/lib/librte_eventdev/rte_event_eth_rx_adapter.c +++ b/lib/librte_eventdev/rte_event_eth_rx_adapter.c @@ -517,8 +517,10 @@ static uint16_t gcd_u16(uint16_t a, uint16_t b) */ if (buf->count >= BATCH_SIZE) flush_event_buffer(rx_adapter); - if (BATCH_SIZE > (ETH_EVENT_BUFFER_SIZE - buf->count)) + if (BATCH_SIZE > (ETH_EVENT_BUFFER_SIZE - buf->count)) { + rx_adapter->wrr_pos = wrr_pos; break; + } stats->rx_poll_count++; n = rte_eth_rx_burst(d, qid, mbufs, BATCH_SIZE); -- 1.8.3.1