> -----Original Message-----
> From: Smoczynski, MarcinX
> Sent: Monday, September 2, 2019 12:43 PM
> To: Ananyev, Konstantin <konstantin.anan...@intel.com>; Wiles, Keith 
> <keith.wi...@intel.com>; adrien.mazarg...@6wind.com
> Cc: dev@dpdk.org; sta...@dpdk.org; Smoczynski, MarcinX 
> <marcinx.smoczyn...@intel.com>; Drost, MariuszX <mariuszx.dr...@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: sta...@dpdk.org
> 
> Tested-by: Mariusz Drost <mariuszx.dr...@intel.com>
> Signed-off-by: Marcin Smoczynski <marcinx.smoczyn...@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.anan...@intel.com>
Tested-by: Konstantin Ananyev <konstantin.anan...@intel.com>

> 2.17.1

Reply via email to