X-Git-Url: http://git.droids-corp.org/?a=blobdiff_plain;f=drivers%2Fnet%2Fmlx5%2Fmlx5_stats.c;h=ae2f5668a74d3e041145763fc85edda4dca6f501;hb=b3bc560bd6bdf3c9851d25bc0a66cb24aa1fd48c;hp=a9b33ee77eec867e2918189706629bd24e294cdc;hpb=73bf9235e977239759f0da0e621d52b9263716c3;p=dpdk.git diff --git a/drivers/net/mlx5/mlx5_stats.c b/drivers/net/mlx5/mlx5_stats.c index a9b33ee77e..ae2f5668a7 100644 --- a/drivers/net/mlx5/mlx5_stats.c +++ b/drivers/net/mlx5/mlx5_stats.c @@ -8,7 +8,7 @@ #include #include -#include +#include #include #include @@ -16,7 +16,9 @@ #include "mlx5_defs.h" #include "mlx5.h" -#include "mlx5_rxtx.h" +#include "mlx5_rx.h" +#include "mlx5_tx.h" +#include "mlx5_malloc.h" /** * DPDK callback to get extended device statistics. @@ -75,6 +77,7 @@ mlx5_xstats_get(struct rte_eth_dev *dev, struct rte_eth_xstat *stats, } } } + mlx5_stats_n = mlx5_txpp_xstats_get(dev, stats, n, mlx5_stats_n); return mlx5_stats_n; } @@ -215,8 +218,7 @@ mlx5_xstats_reset(struct rte_eth_dev *dev) struct mlx5_xstats_ctrl *xstats_ctrl = &priv->xstats_ctrl; int stats_n; unsigned int i; - unsigned int n = xstats_ctrl->mlx5_stats_n; - uint64_t counters[n]; + uint64_t *counters; int ret; stats_n = mlx5_os_get_stats_n(dev); @@ -227,17 +229,29 @@ mlx5_xstats_reset(struct rte_eth_dev *dev) } if (xstats_ctrl->stats_n != stats_n) mlx5_os_stats_init(dev); + counters = mlx5_malloc(MLX5_MEM_SYS, sizeof(*counters) * + xstats_ctrl->mlx5_stats_n, 0, + SOCKET_ID_ANY); + if (!counters) { + DRV_LOG(WARNING, "port %u unable to allocate memory for xstats " + "counters", + dev->data->port_id); + rte_errno = ENOMEM; + return -rte_errno; + } ret = mlx5_os_read_dev_counters(dev, counters); if (ret) { DRV_LOG(ERR, "port %u cannot read device counters: %s", dev->data->port_id, strerror(rte_errno)); + mlx5_free(counters); return ret; } - for (i = 0; i != n; ++i) { + for (i = 0; i != xstats_ctrl->mlx5_stats_n; ++i) { xstats_ctrl->base[i] = counters[i]; xstats_ctrl->hw_stats[i] = 0; } - + mlx5_txpp_xstats_reset(dev); + mlx5_free(counters); return 0; } @@ -255,7 +269,7 @@ mlx5_xstats_reset(struct rte_eth_dev *dev) * Number of xstats names. */ int -mlx5_xstats_get_names(struct rte_eth_dev *dev __rte_unused, +mlx5_xstats_get_names(struct rte_eth_dev *dev, struct rte_eth_xstat_name *xstats_names, unsigned int n) { unsigned int i; @@ -271,5 +285,7 @@ mlx5_xstats_get_names(struct rte_eth_dev *dev __rte_unused, xstats_names[i].name[RTE_ETH_XSTATS_NAME_SIZE - 1] = 0; } } + mlx5_xstats_n = mlx5_txpp_xstats_get_names(dev, xstats_names, + n, mlx5_xstats_n); return mlx5_xstats_n; }