All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH] eventdev: fix missing update to Rx adaper WRR position
@ 2018-06-03 11:41 Nikhil Rao
  2018-06-11 12:15 ` Jerin Jacob
  0 siblings, 1 reply; 2+ messages in thread
From: Nikhil Rao @ 2018-06-03 11:41 UTC (permalink / raw)
  To: jerin.jacob; +Cc: dev, Nikhil Rao, stable

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.eads@intel.com>
Signed-off-by: Nikhil Rao <nikhil.rao@intel.com>
Cc: stable@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

^ permalink raw reply related	[flat|nested] 2+ messages in thread

* Re: [PATCH] eventdev: fix missing update to Rx adaper WRR position
  2018-06-03 11:41 [PATCH] eventdev: fix missing update to Rx adaper WRR position Nikhil Rao
@ 2018-06-11 12:15 ` Jerin Jacob
  0 siblings, 0 replies; 2+ messages in thread
From: Jerin Jacob @ 2018-06-11 12:15 UTC (permalink / raw)
  To: Nikhil Rao; +Cc: dev, stable

-----Original Message-----
> Date: Sun, 3 Jun 2018 17:11:08 +0530
> From: Nikhil Rao <nikhil.rao@intel.com>
> To: jerin.jacob@caviumnetworks.com
> CC: dev@dpdk.org, Nikhil Rao <nikhil.rao@intel.com>, stable@dpdk.org
> Subject: [PATCH] eventdev: fix missing update to Rx adaper WRR position
> X-Mailer: git-send-email 1.8.3.1
> 
> 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.eads@intel.com>
> Signed-off-by: Nikhil Rao <nikhil.rao@intel.com>
> Cc: stable@dpdk.org


Applied to dpdk-next-eventdev/master. Thanks.


> ---
>  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
> 

^ permalink raw reply	[flat|nested] 2+ messages in thread

end of thread, other threads:[~2018-06-11 12:15 UTC | newest]

Thread overview: 2+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2018-06-03 11:41 [PATCH] eventdev: fix missing update to Rx adaper WRR position Nikhil Rao
2018-06-11 12:15 ` Jerin Jacob

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.