History

IB/mlx5: Expose extended error counters

This patch adds below requester and responder side error counters, which will be exposed by hardware counters interface and are supported as part of query Q counters command extension. +---------------------------+-------------------------------------+ | Name | Description | |---------------------------+-------------------------------------| |resp_local_length_error | Number of times responder detected | | | local length errors | |---------------------------+-------------------------------------| |resp_cqe_error | Number of CQEs completed with error | | | at responder | |---------------------------+-------------------------------------| |req_cqe_error | Number of CQEs completed with error | | | at requester | |---------------------------+-------------------------------------| |req_remote_invalid_request | Number of times requester detected | | | remote invalid request error | |---------------------------+-------------------------------------| |req_remote_access_error | Number of times requester detected | | | remote access error | |---------------------------+-------------------------------------| |resp_remote_access_error | Number of times responder detected | | | remote access error | |---------------------------+-------------------------------------| |resp_cqe_flush_error | Number of CQEs completed with | | | flushed with error at responder | |---------------------------+-------------------------------------| |req_cqe_flush_error | Number of CQEs completed with | | | flushed with error at requester | +---------------------------+-------------------------------------+

Parav Pandit committed 9 years ago

Commit 58dcb601 parent 3fffc822 files · +64 −2Browse files

Unified · Split

2 files
  1. drivers/infiniband/hw/mlx5/main.c +22 −0
  2. include/linux/mlx5/mlx5_ifc.h +42 −2
drivers/infiniband/hw/mlx5/main.c+22−0
@@ -3432,6 +3432,17 @@ static const struct mlx5_ib_counter cong_cnts[] = { · 3431 unmodified lines
34323432 INIT_CONG_COUNTER(np_cnp_sent),
34333433 };
34343434
3435+static const struct mlx5_ib_counter extended_err_cnts[] = {
3436+ INIT_Q_COUNTER(resp_local_length_error),
3437+ INIT_Q_COUNTER(resp_cqe_error),
3438+ INIT_Q_COUNTER(req_cqe_error),
3439+ INIT_Q_COUNTER(req_remote_invalid_request),
3440+ INIT_Q_COUNTER(req_remote_access_errors),
3441+ INIT_Q_COUNTER(resp_remote_access_errors),
3442+ INIT_Q_COUNTER(resp_cqe_flush_error),
3443+ INIT_Q_COUNTER(req_cqe_flush_error),
3444+};
3445+
34353446 static void mlx5_ib_dealloc_counters(struct mlx5_ib_dev *dev)
34363447 {
34373448 unsigned int i;
@@ -3456,6 +3467,10 @@ static int __mlx5_ib_alloc_counters(struct mlx5_ib_dev *dev, · 18 unmodified lines
34563467
34573468 if (MLX5_CAP_GEN(dev->mdev, retransmission_q_counters))
34583469 num_counters += ARRAY_SIZE(retrans_q_cnts);
3470+
3471+ if (MLX5_CAP_GEN(dev->mdev, enhanced_error_q_counters))
3472+ num_counters += ARRAY_SIZE(extended_err_cnts);
3473+
34593474 cnts->num_q_counters = num_counters;
34603475
34613476 if (MLX5_CAP_GEN(dev->mdev, cc_query_allowed)) {
@@ -3505,6 +3520,13 @@ static void mlx5_ib_fill_counters(struct mlx5_ib_dev *dev, · 43 unmodified lines
35053520 }
35063521 }
35073522
3523+ if (MLX5_CAP_GEN(dev->mdev, enhanced_error_q_counters)) {
3524+ for (i = 0; i < ARRAY_SIZE(extended_err_cnts); i++, j++) {
3525+ names[j] = extended_err_cnts[i].name;
3526+ offsets[j] = extended_err_cnts[i].offset;
3527+ }
3528+ }
3529+
35083530 if (MLX5_CAP_GEN(dev->mdev, cc_query_allowed)) {
35093531 for (i = 0; i < ARRAY_SIZE(cong_cnts); i++, j++) {
35103532 names[j] = cong_cnts[i].name;
include/linux/mlx5/mlx5_ifc.h+42−2
@@ -858,7 +858,7 @@ struct mlx5_ifc_cmd_hca_cap_bits { · 857 unmodified lines
858858 u8 pcam_reg[0x1];
859859 u8 local_ca_ack_delay[0x5];
860860 u8 port_module_event[0x1];
861− u8 reserved_at_1b1[0x1];
861+ u8 enhanced_error_q_counters[0x1];
862862 u8 ports_check[0x1];
863863 u8 reserved_at_1b3[0x1];
864864 u8 disable_link_up[0x1];
@@ -3953,7 +3953,47 @@ struct mlx5_ifc_query_q_counter_out_bits { · 3088 unmodified lines
39533953
39543954 u8 local_ack_timeout_err[0x20];
39553955
3956− u8 reserved_at_320[0x4e0];
3956+ u8 reserved_at_320[0xa0];
3957+
3958+ u8 resp_local_length_error[0x20];
3959+
3960+ u8 req_local_length_error[0x20];
3961+
3962+ u8 resp_local_qp_error[0x20];
3963+
3964+ u8 local_operation_error[0x20];
3965+
3966+ u8 resp_local_protection[0x20];
3967+
3968+ u8 req_local_protection[0x20];
3969+
3970+ u8 resp_cqe_error[0x20];
3971+
3972+ u8 req_cqe_error[0x20];
3973+
3974+ u8 req_mw_binding[0x20];
3975+
3976+ u8 req_bad_response[0x20];
3977+
3978+ u8 req_remote_invalid_request[0x20];
3979+
3980+ u8 resp_remote_invalid_request[0x20];
3981+
3982+ u8 req_remote_access_errors[0x20];
3983+
3984+ u8 resp_remote_access_errors[0x20];
3985+
3986+ u8 req_remote_operation_errors[0x20];
3987+
3988+ u8 req_transport_retries_exceeded[0x20];
3989+
3990+ u8 cq_overflow[0x20];
3991+
3992+ u8 resp_cqe_flush_error[0x20];
3993+
3994+ u8 req_cqe_flush_error[0x20];
3995+
3996+ u8 reserved_at_620[0x1e0];
39573997 };
39583998
39593999 struct mlx5_ifc_query_q_counter_in_bits {

Keyboard shortcuts

General

Show keyboard shortcuts
?
Focus the current search
/

Issues and pull requests

Open filters
f

Issues, pull requests and Inbox

Select next item
j↓
Select previous item
k↑
Open selected item
Enter
Dismiss filters or clear selection
Esc

Repository code

Go to file
t