diff options
author | Gal Pressman | 2016-04-24 21:51:49 +0200 |
---|---|---|
committer | David S. Miller | 2016-04-26 21:58:01 +0200 |
commit | cf678570d5a1022c4c4dbda7792f2a36f0b9fec0 (patch) | |
tree | 84817384dde37174df8861d9e298005120fcd4ea /drivers/net/ethernet/mellanox/mlx5/core/en_main.c | |
parent | net/mlx5e: Rename VPort counters (diff) | |
download | kernel-qcow2-linux-cf678570d5a1022c4c4dbda7792f2a36f0b9fec0.tar.gz kernel-qcow2-linux-cf678570d5a1022c4c4dbda7792f2a36f0b9fec0.tar.xz kernel-qcow2-linux-cf678570d5a1022c4c4dbda7792f2a36f0b9fec0.zip |
net/mlx5e: Add per priority group to PPort counters
Expose counters providing information for each priority level (PCP) through
ethtool -S option and DCBNL.
This includes rx/tx bytes, frames, and pause counters.
Signed-off-by: Gal Pressman <galp@mellanox.com>
Signed-off-by: Saeed Mahameed <saeedm@mellanox.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'drivers/net/ethernet/mellanox/mlx5/core/en_main.c')
-rw-r--r-- | drivers/net/ethernet/mellanox/mlx5/core/en_main.c | 9 |
1 files changed, 9 insertions, 0 deletions
diff --git a/drivers/net/ethernet/mellanox/mlx5/core/en_main.c b/drivers/net/ethernet/mellanox/mlx5/core/en_main.c index 0c532367ff13..ef66ba65f5cd 100644 --- a/drivers/net/ethernet/mellanox/mlx5/core/en_main.c +++ b/drivers/net/ethernet/mellanox/mlx5/core/en_main.c @@ -161,6 +161,7 @@ static void mlx5e_update_pport_counters(struct mlx5e_priv *priv) struct mlx5e_pport_stats *pstats = &priv->stats.pport; struct mlx5_core_dev *mdev = priv->mdev; int sz = MLX5_ST_SZ_BYTES(ppcnt_reg); + int prio; void *out; u32 *in; @@ -182,6 +183,14 @@ static void mlx5e_update_pport_counters(struct mlx5e_priv *priv) MLX5_SET(ppcnt_reg, in, grp, MLX5_RFC_2819_COUNTERS_GROUP); mlx5_core_access_reg(mdev, in, sz, out, sz, MLX5_REG_PPCNT, 0, 0); + MLX5_SET(ppcnt_reg, in, grp, MLX5_PER_PRIORITY_COUNTERS_GROUP); + for (prio = 0; prio < NUM_PPORT_PRIO; prio++) { + out = pstats->per_prio_counters[prio]; + MLX5_SET(ppcnt_reg, in, prio_tc, prio); + mlx5_core_access_reg(mdev, in, sz, out, sz, + MLX5_REG_PPCNT, 0, 0); + } + free_out: kvfree(in); } |