From 25b73ba6f3ea0894bf3cfc64e999f71a7e4f6787 Mon Sep 17 00:00:00 2001 From: Thierry Herbelot Date: Fri, 17 Nov 2017 14:51:34 +0100 Subject: [PATCH] net/mlx5: cleanup allocation of ethtool stats Simplify the computation for the needed size: - exact size for the structure header, - exact size for a number of 64-bit counters. Fixes: a4193ae3bc4f ("net/mlx5: support extended statistics") Cc: stable@dpdk.org Signed-off-by: Thierry Herbelot Acked-by: Nelio Laranjeiro --- drivers/net/mlx5/mlx5_stats.c | 8 +++----- 1 file changed, 3 insertions(+), 5 deletions(-) diff --git a/drivers/net/mlx5/mlx5_stats.c b/drivers/net/mlx5/mlx5_stats.c index 5e225d3740..2427585f71 100644 --- a/drivers/net/mlx5/mlx5_stats.c +++ b/drivers/net/mlx5/mlx5_stats.c @@ -143,11 +143,9 @@ priv_read_dev_counters(struct priv *priv, uint64_t *stats) struct mlx5_xstats_ctrl *xstats_ctrl = &priv->xstats_ctrl; unsigned int i; struct ifreq ifr; - unsigned int stats_sz = (xstats_ctrl->stats_n * sizeof(uint64_t)) + - sizeof(struct ethtool_stats); - struct ethtool_stats et_stats[(stats_sz + ( - sizeof(struct ethtool_stats) - 1)) / - sizeof(struct ethtool_stats)]; + unsigned int stats_sz = xstats_ctrl->stats_n * sizeof(uint64_t); + unsigned char et_stat_buf[sizeof(struct ethtool_stats) + stats_sz]; + struct ethtool_stats *et_stats = (struct ethtool_stats *)et_stat_buf; et_stats->cmd = ETHTOOL_GSTATS; et_stats->n_stats = xstats_ctrl->stats_n; -- 2.20.1