[Patch v2] net/netvsc: report correct stats values

Ferruh Yigit ferruh.yigit at xilinx.com
Tue Apr 26 23:56:14 CEST 2022


On 3/24/2022 5:45 PM, longli at linuxonhyperv.com wrote:
> From: Long Li <longli at microsoft.com>
> 
> The netvsc should add to the values from the VF and report the sum.
> 

Per port stats already accumulated, like:
'stats->opackets += txq->stats.packets;'

> Fixes: 4e9c73e96e ("net/netvsc: add Hyper-V network device")
> Cc: stable at dpdk.org
> Signed-off-by: Long Li <longli at microsoft.com>
> ---
>   drivers/net/netvsc/hn_ethdev.c | 10 +++++-----
>   1 file changed, 5 insertions(+), 5 deletions(-)
> 
> diff --git a/drivers/net/netvsc/hn_ethdev.c b/drivers/net/netvsc/hn_ethdev.c
> index 0a357d3645..a6202d898b 100644
> --- a/drivers/net/netvsc/hn_ethdev.c
> +++ b/drivers/net/netvsc/hn_ethdev.c
> @@ -804,8 +804,8 @@ static int hn_dev_stats_get(struct rte_eth_dev *dev,
>   		stats->oerrors += txq->stats.errors;
>   
>   		if (i < RTE_ETHDEV_QUEUE_STAT_CNTRS) {
> -			stats->q_opackets[i] = txq->stats.packets;
> -			stats->q_obytes[i] = txq->stats.bytes;
> +			stats->q_opackets[i] += txq->stats.packets;
> +			stats->q_obytes[i] += txq->stats.bytes;

This is per queue stats, 'stats->q_opackets[i]', in next iteration of 
the loop, 'i' will be increased and 'txq' will be updated, so as far as 
I can see the above change has no affect.

>   		}
>   	}
>   
> @@ -821,12 +821,12 @@ static int hn_dev_stats_get(struct rte_eth_dev *dev,
>   		stats->imissed += rxq->stats.ring_full;
>   
>   		if (i < RTE_ETHDEV_QUEUE_STAT_CNTRS) {
> -			stats->q_ipackets[i] = rxq->stats.packets;
> -			stats->q_ibytes[i] = rxq->stats.bytes;
> +			stats->q_ipackets[i] += rxq->stats.packets;
> +			stats->q_ibytes[i] += rxq->stats.bytes;
>   		}
>   	}
>   
> -	stats->rx_nombuf = dev->data->rx_mbuf_alloc_failed;
> +	stats->rx_nombuf += dev->data->rx_mbuf_alloc_failed;

Why '+='? Is 'dev->data->rx_mbuf_alloc_failed' reset somewhere between 
two consecutive stats get call?

Anyway, above line has no affect, since the 'stats->rx_nombuf' is 
overwritten by 'rte_eth_stats_get()'. So above line can be removed.

>   	return 0;
>   }
>   



More information about the stable mailing list