diff --git a/drivers/net/mlx5/mlx5_stats.c b/drivers/net/mlx5/mlx5_stats.c index 732775954a..72ba0161f0 100644 --- a/drivers/net/mlx5/mlx5_stats.c +++ b/drivers/net/mlx5/mlx5_stats.c @@ -42,17 +42,20 @@ mlx5_xstats_get(struct rte_eth_dev *dev, struct rte_eth_xstat *stats, unsigned int i; uint64_t counters[n]; struct mlx5_xstats_ctrl *xstats_ctrl = &priv->xstats_ctrl; - uint16_t mlx5_stats_n = xstats_ctrl->mlx5_stats_n; + uint16_t mlx5_stats_n; + int stats_n; + + stats_n = mlx5_os_get_stats_n(dev); + if (stats_n < 0) + return stats_n; + + if (xstats_ctrl->stats_n != stats_n) + mlx5_os_stats_init(dev); + + mlx5_stats_n = xstats_ctrl->mlx5_stats_n; if (n >= mlx5_stats_n && stats) { - int stats_n; int ret; - - stats_n = mlx5_os_get_stats_n(dev); - if (stats_n < 0) - return stats_n; - if (xstats_ctrl->stats_n != stats_n) - mlx5_os_stats_init(dev); ret = mlx5_os_read_dev_counters(dev, counters); if (ret) return ret;