IB/mlx5: Expose RoCE accelerator counters
Introduce the following RoCE accelerator counters: * roce_adp_retrans - number of adaptive retransmission for RoCE traffic. * roce_adp_retrans_to - number of times RoCE traffic reached time out due to adaptive retransmission. * roce_slow_restart - number of times RoCE slow restart was used. * roce_slow_restart_cnps - number of times RoCE slow restart generate CNP packets. * roce_slow_restart_trans - number of times RoCE slow restart change state to slow restart. Link: https://lore.kernel.org/r/20200115145459.83280-3-leon@kernel.org Signed-off-by: Avihai Horon <avihaih@mellanox.com> Reviewed-by: Maor Gottlieb <maorg@mellanox.com> Signed-off-by: Leon Romanovsky <leonro@mellanox.com> Signed-off-by: Jason Gunthorpe <jgg@mellanox.com>
This commit is contained in:
parent
d6de0bb185
commit
d7fab91637
@ -5370,6 +5370,14 @@ static const struct mlx5_ib_counter extended_err_cnts[] = {
|
||||
INIT_Q_COUNTER(req_cqe_flush_error),
|
||||
};
|
||||
|
||||
static const struct mlx5_ib_counter roce_accl_cnts[] = {
|
||||
INIT_Q_COUNTER(roce_adp_retrans),
|
||||
INIT_Q_COUNTER(roce_adp_retrans_to),
|
||||
INIT_Q_COUNTER(roce_slow_restart),
|
||||
INIT_Q_COUNTER(roce_slow_restart_cnps),
|
||||
INIT_Q_COUNTER(roce_slow_restart_trans),
|
||||
};
|
||||
|
||||
#define INIT_EXT_PPCNT_COUNTER(_name) \
|
||||
{ .name = #_name, .offset = \
|
||||
MLX5_BYTE_OFF(ppcnt_reg, \
|
||||
@ -5418,6 +5426,9 @@ static int __mlx5_ib_alloc_counters(struct mlx5_ib_dev *dev,
|
||||
if (MLX5_CAP_GEN(dev->mdev, enhanced_error_q_counters))
|
||||
num_counters += ARRAY_SIZE(extended_err_cnts);
|
||||
|
||||
if (MLX5_CAP_GEN(dev->mdev, roce_accl))
|
||||
num_counters += ARRAY_SIZE(roce_accl_cnts);
|
||||
|
||||
cnts->num_q_counters = num_counters;
|
||||
|
||||
if (MLX5_CAP_GEN(dev->mdev, cc_query_allowed)) {
|
||||
@ -5478,6 +5489,13 @@ static void mlx5_ib_fill_counters(struct mlx5_ib_dev *dev,
|
||||
}
|
||||
}
|
||||
|
||||
if (MLX5_CAP_GEN(dev->mdev, roce_accl)) {
|
||||
for (i = 0; i < ARRAY_SIZE(roce_accl_cnts); i++, j++) {
|
||||
names[j] = roce_accl_cnts[i].name;
|
||||
offsets[j] = roce_accl_cnts[i].offset;
|
||||
}
|
||||
}
|
||||
|
||||
if (MLX5_CAP_GEN(dev->mdev, cc_query_allowed)) {
|
||||
for (i = 0; i < ARRAY_SIZE(cong_cnts); i++, j++) {
|
||||
names[j] = cong_cnts[i].name;
|
||||
|
Loading…
Reference in New Issue
Block a user