From 524dc20023b2e00cd9a021ae60cb4b91f51786e6 Mon Sep 17 00:00:00 2001 From: Nikhil Rao Date: Sun, 3 Jun 2018 17:11:08 +0530 Subject: [PATCH] eventdev: fix missing update to Rx adaper WRR position 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") Cc: stable@dpdk.org Suggested-by: Gage Eads Signed-off-by: Nikhil Rao --- 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 273df1e9b3..c2b5d4d83a 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 @@ eth_rx_poll(struct rte_event_eth_rx_adapter *rx_adapter) */ 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); -- 2.20.1