[v3] eventdev: fix Rx adapter event flush logic

Message ID 1557475690-42133-1-git-send-email-nikhil.rao@intel.com (mailing list archive)
State Accepted, archived
Headers
Series [v3] eventdev: fix Rx adapter event flush logic |

Checks

Context Check Description
ci/checkpatch success coding style OK
ci/Intel-compilation success Compilation OK
ci/mellanox-Performance-Testing success Performance Testing PASS
ci/intel-Performance-Testing success Performance Testing PASS

Commit Message

Rao, Nikhil May 10, 2019, 8:08 a.m. UTC
  The Rx adapter flushes events only if it has BATCH_SIZE
events buffered where BATCH_SIZE is set to 32, e.g., if a
single packet is sent, it is never passed to
eventdev. Fix this issue by adding an event buffer flush
either when a Rx queue is found to be empty or the adapter service
function has processed the max number of packets for an invocation.

Bugzilla ID: 277

Fixes: 6b83f5935543 ("eventdev: add event buffer flush in Rx adapter")

Reported-by: Matias Elo <matias.elo@nokia.com>

CC: stable@dpdk.org

Signed-off-by: Nikhil Rao <nikhil.rao@intel.com>
---
 lib/librte_eventdev/rte_event_eth_rx_adapter.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

v2:
* add Bugzilla ID

v3:
* add stable CC
* replace boolean check with check for > 0
  

Comments

Thomas Monjalon May 10, 2019, 1:30 p.m. UTC | #1
Any review please?

10/05/2019 10:08, Nikhil Rao:
> The Rx adapter flushes events only if it has BATCH_SIZE
> events buffered where BATCH_SIZE is set to 32, e.g., if a
> single packet is sent, it is never passed to
> eventdev. Fix this issue by adding an event buffer flush
> either when a Rx queue is found to be empty or the adapter service
> function has processed the max number of packets for an invocation.
> 
> Bugzilla ID: 277
> 
> Fixes: 6b83f5935543 ("eventdev: add event buffer flush in Rx adapter")
> 
> Reported-by: Matias Elo <matias.elo@nokia.com>
> 
> CC: stable@dpdk.org
> 
> Signed-off-by: Nikhil Rao <nikhil.rao@intel.com>
> ---
>  lib/librte_eventdev/rte_event_eth_rx_adapter.c | 2 +-
>  1 file changed, 1 insertion(+), 1 deletion(-)
> 
> v2:
> * add Bugzilla ID
> 
> v3:
> * add stable CC
> * replace boolean check with check for > 0
> 
> diff --git a/lib/librte_eventdev/rte_event_eth_rx_adapter.c b/lib/librte_eventdev/rte_event_eth_rx_adapter.c
> index 8b6e69d..b60674b 100644
> --- a/lib/librte_eventdev/rte_event_eth_rx_adapter.c
> +++ b/lib/librte_eventdev/rte_event_eth_rx_adapter.c
> @@ -872,7 +872,7 @@ static uint16_t rxa_gcd_u16(uint16_t a, uint16_t b)
>  			break;
>  	}
>  
> -	if (buf->count >= BATCH_SIZE)
> +	if (buf->count > 0)
>  		rxa_flush_event_buffer(rx_adapter);
>  
>  	return nb_rx;
>
  
Mattias Rönnblom May 10, 2019, 4:13 p.m. UTC | #2
On 2019-05-10 15:30, Thomas Monjalon wrote:
> Any review please?
> 

Reviewed-by: Mattias Rönnblom <mattias.ronnblom@ericsson.com>

Mattias Elo reported "Thanks, I’ve tested this patch and can confirm 
that it fixes the problem." for the (nearly identical) v2 of this patch.
  
Elo, Matias (Nokia - FI/Espoo) May 13, 2019, 4:20 a.m. UTC | #3
> On 2019-05-10 15:30, Thomas Monjalon wrote:
>> Any review please?
> 
> Reviewed-by: Mattias Rönnblom <mattias.ronnblom@ericsson.com>
> 
> Mattias Elo reported "Thanks, I’ve tested this patch and can confirm that it fixes the problem." for the (nearly identical) v2 of this patch.

I’ve now tested also the v3:

Tested-by: Matias Elo <matias.elo@nokia.com>
  
Thomas Monjalon May 13, 2019, 2 p.m. UTC | #4
13/05/2019 06:20, Elo, Matias (Nokia - FI/Espoo):
> 
> > On 2019-05-10 15:30, Thomas Monjalon wrote:
> >> Any review please?
> > 
> > Reviewed-by: Mattias Rönnblom <mattias.ronnblom@ericsson.com>
> > 
> > Mattias Elo reported "Thanks, I’ve tested this patch and can confirm that it fixes the problem." for the (nearly identical) v2 of this patch.
> 
> I’ve now tested also the v3:
> 
> Tested-by: Matias Elo <matias.elo@nokia.com>

Applied, thanks
  

Patch

diff --git a/lib/librte_eventdev/rte_event_eth_rx_adapter.c b/lib/librte_eventdev/rte_event_eth_rx_adapter.c
index 8b6e69d..b60674b 100644
--- a/lib/librte_eventdev/rte_event_eth_rx_adapter.c
+++ b/lib/librte_eventdev/rte_event_eth_rx_adapter.c
@@ -872,7 +872,7 @@  static uint16_t rxa_gcd_u16(uint16_t a, uint16_t b)
 			break;
 	}
 
-	if (buf->count >= BATCH_SIZE)
+	if (buf->count > 0)
 		rxa_flush_event_buffer(rx_adapter);
 
 	return nb_rx;