[dpdk-stable] [PATCH v1] net/tap: fix blocked rx packets error

Ananyev, Konstantin konstantin.ananyev at intel.com
Tue Sep 3 15:15:14 CEST 2019



> -----Original Message-----
> From: Smoczynski, MarcinX
> Sent: Monday, September 2, 2019 12:43 PM
> To: Ananyev, Konstantin <konstantin.ananyev at intel.com>; Wiles, Keith <keith.wiles at intel.com>; adrien.mazarguil at 6wind.com
> Cc: dev at dpdk.org; stable at dpdk.org; Smoczynski, MarcinX <marcinx.smoczynski at intel.com>; Drost, MariuszX <mariuszx.drost at intel.com>
> Subject: [PATCH v1] net/tap: fix blocked rx packets error
> 
> When OS sends more packets than are beaing read with a single
> 'rte_eth_rx_burst' call, rx packets are getting stucked in the tap pmd
> and are unable to receive, because trigger_seen is getting updated
> and consecutive calls are not getting any packets.
> 
> Do not update trigger_seen unless less than a max number of packets were
> received allowing next call to receive the rest.
> 
> Fixes: a0d8e807d9 ("net/tap: add Rx trigger")
> Cc: stable at dpdk.org
> 
> Tested-by: Mariusz Drost <mariuszx.drost at intel.com>
> Signed-off-by: Marcin Smoczynski <marcinx.smoczynski at intel.com>
> ---
>  drivers/net/tap/rte_eth_tap.c | 6 ++++--
>  1 file changed, 4 insertions(+), 2 deletions(-)
> 
> diff --git a/drivers/net/tap/rte_eth_tap.c b/drivers/net/tap/rte_eth_tap.c
> index 64bd04911..60121ae56 100644
> --- a/drivers/net/tap/rte_eth_tap.c
> +++ b/drivers/net/tap/rte_eth_tap.c
> @@ -353,8 +353,7 @@ pmd_rx_burst(void *queue, struct rte_mbuf **bufs, uint16_t nb_pkts)
> 
>  	if (trigger == rxq->trigger_seen)
>  		return 0;
> -	if (trigger)
> -		rxq->trigger_seen = trigger;
> +
>  	process_private = rte_eth_devices[rxq->in_port].process_private;
>  	rte_compiler_barrier();
>  	for (num_rx = 0; num_rx < nb_pkts; ) {
> @@ -433,6 +432,9 @@ pmd_rx_burst(void *queue, struct rte_mbuf **bufs, uint16_t nb_pkts)
>  	rxq->stats.ipackets += num_rx;
>  	rxq->stats.ibytes += num_rx_bytes;
> 
> +	if (trigger && num_rx < nb_pkts)
> +		rxq->trigger_seen = trigger;
> +
>  	return num_rx;
>  }
> 
> --

Acked-by: Konstantin Ananyev <konstantin.ananyev at intel.com>
Tested-by: Konstantin Ananyev <konstantin.ananyev at intel.com>

> 2.17.1



More information about the stable mailing list