diff options
-rw-r--r-- | drivers/infiniband/hw/ipath/ipath_driver.c | 17 | ||||
-rw-r--r-- | drivers/infiniband/hw/ipath/ipath_intr.c | 1 | ||||
-rw-r--r-- | drivers/infiniband/hw/ipath/ipath_kernel.h | 5 | ||||
-rw-r--r-- | drivers/infiniband/hw/ipath/ipath_layer.c | 9 | ||||
-rw-r--r-- | drivers/infiniband/hw/ipath/ipath_layer.h | 2 | ||||
-rw-r--r-- | drivers/infiniband/hw/ipath/ipath_mad.c | 52 | ||||
-rw-r--r-- | drivers/infiniband/hw/ipath/ipath_ud.c | 11 | ||||
-rw-r--r-- | drivers/infiniband/hw/ipath/ipath_verbs.c | 20 | ||||
-rw-r--r-- | drivers/infiniband/hw/ipath/ipath_verbs.h | 3 |
9 files changed, 93 insertions, 27 deletions
diff --git a/drivers/infiniband/hw/ipath/ipath_driver.c b/drivers/infiniband/hw/ipath/ipath_driver.c index 979ae2996be8..4109913c20a7 100644 --- a/drivers/infiniband/hw/ipath/ipath_driver.c +++ b/drivers/infiniband/hw/ipath/ipath_driver.c | |||
@@ -460,6 +460,8 @@ static int __devinit ipath_init_one(struct pci_dev *pdev, | |||
460 | * by ipath_setup_htconfig. | 460 | * by ipath_setup_htconfig. |
461 | */ | 461 | */ |
462 | dd->ipath_flags = 0; | 462 | dd->ipath_flags = 0; |
463 | dd->ipath_lli_counter = 0; | ||
464 | dd->ipath_lli_errors = 0; | ||
463 | 465 | ||
464 | if (dd->ipath_f_bus(dd, pdev)) | 466 | if (dd->ipath_f_bus(dd, pdev)) |
465 | ipath_dev_err(dd, "Failed to setup config space; " | 467 | ipath_dev_err(dd, "Failed to setup config space; " |
@@ -942,6 +944,18 @@ reloop: | |||
942 | "tlen=%x opcode=%x egridx=%x: %s\n", | 944 | "tlen=%x opcode=%x egridx=%x: %s\n", |
943 | eflags, l, etype, tlen, bthbytes[0], | 945 | eflags, l, etype, tlen, bthbytes[0], |
944 | ips_get_index((__le32 *) rc), emsg); | 946 | ips_get_index((__le32 *) rc), emsg); |
947 | /* Count local link integrity errors. */ | ||
948 | if (eflags & (INFINIPATH_RHF_H_ICRCERR | | ||
949 | INFINIPATH_RHF_H_VCRCERR)) { | ||
950 | u8 n = (dd->ipath_ibcctrl >> | ||
951 | INFINIPATH_IBCC_PHYERRTHRESHOLD_SHIFT) & | ||
952 | INFINIPATH_IBCC_PHYERRTHRESHOLD_MASK; | ||
953 | |||
954 | if (++dd->ipath_lli_counter > n) { | ||
955 | dd->ipath_lli_counter = 0; | ||
956 | dd->ipath_lli_errors++; | ||
957 | } | ||
958 | } | ||
945 | } else if (etype == RCVHQ_RCV_TYPE_NON_KD) { | 959 | } else if (etype == RCVHQ_RCV_TYPE_NON_KD) { |
946 | int ret = __ipath_verbs_rcv(dd, rc + 1, | 960 | int ret = __ipath_verbs_rcv(dd, rc + 1, |
947 | ebuf, tlen); | 961 | ebuf, tlen); |
@@ -949,6 +963,9 @@ reloop: | |||
949 | ipath_cdbg(VERBOSE, | 963 | ipath_cdbg(VERBOSE, |
950 | "received IB packet, " | 964 | "received IB packet, " |
951 | "not SMA (QP=%x)\n", qp); | 965 | "not SMA (QP=%x)\n", qp); |
966 | if (dd->ipath_lli_counter) | ||
967 | dd->ipath_lli_counter--; | ||
968 | |||
952 | } else if (etype == RCVHQ_RCV_TYPE_EAGER) { | 969 | } else if (etype == RCVHQ_RCV_TYPE_EAGER) { |
953 | if (qp == IPATH_KD_QP && | 970 | if (qp == IPATH_KD_QP && |
954 | bthbytes[0] == ipath_layer_rcv_opcode && | 971 | bthbytes[0] == ipath_layer_rcv_opcode && |
diff --git a/drivers/infiniband/hw/ipath/ipath_intr.c b/drivers/infiniband/hw/ipath/ipath_intr.c index f6ca59bdd16f..30160bcd1acf 100644 --- a/drivers/infiniband/hw/ipath/ipath_intr.c +++ b/drivers/infiniband/hw/ipath/ipath_intr.c | |||
@@ -262,6 +262,7 @@ static void handle_e_ibstatuschanged(struct ipath_devdata *dd, | |||
262 | | IPATH_LINKACTIVE | | 262 | | IPATH_LINKACTIVE | |
263 | IPATH_LINKARMED); | 263 | IPATH_LINKARMED); |
264 | *dd->ipath_statusp &= ~IPATH_STATUS_IB_READY; | 264 | *dd->ipath_statusp &= ~IPATH_STATUS_IB_READY; |
265 | dd->ipath_lli_counter = 0; | ||
265 | if (!noprint) { | 266 | if (!noprint) { |
266 | if (((dd->ipath_lastibcstat >> | 267 | if (((dd->ipath_lastibcstat >> |
267 | INFINIPATH_IBCS_LINKSTATE_SHIFT) & | 268 | INFINIPATH_IBCS_LINKSTATE_SHIFT) & |
diff --git a/drivers/infiniband/hw/ipath/ipath_kernel.h b/drivers/infiniband/hw/ipath/ipath_kernel.h index 493100dfbf59..fe3c862e23b5 100644 --- a/drivers/infiniband/hw/ipath/ipath_kernel.h +++ b/drivers/infiniband/hw/ipath/ipath_kernel.h | |||
@@ -507,6 +507,11 @@ struct ipath_devdata { | |||
507 | u8 ipath_pci_cacheline; | 507 | u8 ipath_pci_cacheline; |
508 | /* LID mask control */ | 508 | /* LID mask control */ |
509 | u8 ipath_lmc; | 509 | u8 ipath_lmc; |
510 | |||
511 | /* local link integrity counter */ | ||
512 | u32 ipath_lli_counter; | ||
513 | /* local link integrity errors */ | ||
514 | u32 ipath_lli_errors; | ||
510 | }; | 515 | }; |
511 | 516 | ||
512 | extern struct list_head ipath_dev_list; | 517 | extern struct list_head ipath_dev_list; |
diff --git a/drivers/infiniband/hw/ipath/ipath_layer.c b/drivers/infiniband/hw/ipath/ipath_layer.c index 0f8b5290ff19..6e3d9bf3354f 100644 --- a/drivers/infiniband/hw/ipath/ipath_layer.c +++ b/drivers/infiniband/hw/ipath/ipath_layer.c | |||
@@ -1032,19 +1032,22 @@ int ipath_layer_get_counters(struct ipath_devdata *dd, | |||
1032 | ipath_snap_cntr(dd, dd->ipath_cregs->cr_ibsymbolerrcnt); | 1032 | ipath_snap_cntr(dd, dd->ipath_cregs->cr_ibsymbolerrcnt); |
1033 | cntrs->link_error_recovery_counter = | 1033 | cntrs->link_error_recovery_counter = |
1034 | ipath_snap_cntr(dd, dd->ipath_cregs->cr_iblinkerrrecovcnt); | 1034 | ipath_snap_cntr(dd, dd->ipath_cregs->cr_iblinkerrrecovcnt); |
1035 | /* | ||
1036 | * The link downed counter counts when the other side downs the | ||
1037 | * connection. We add in the number of times we downed the link | ||
1038 | * due to local link integrity errors to compensate. | ||
1039 | */ | ||
1035 | cntrs->link_downed_counter = | 1040 | cntrs->link_downed_counter = |
1036 | ipath_snap_cntr(dd, dd->ipath_cregs->cr_iblinkdowncnt); | 1041 | ipath_snap_cntr(dd, dd->ipath_cregs->cr_iblinkdowncnt); |
1037 | cntrs->port_rcv_errors = | 1042 | cntrs->port_rcv_errors = |
1038 | ipath_snap_cntr(dd, dd->ipath_cregs->cr_rxdroppktcnt) + | 1043 | ipath_snap_cntr(dd, dd->ipath_cregs->cr_rxdroppktcnt) + |
1039 | ipath_snap_cntr(dd, dd->ipath_cregs->cr_rcvovflcnt) + | 1044 | ipath_snap_cntr(dd, dd->ipath_cregs->cr_rcvovflcnt) + |
1040 | ipath_snap_cntr(dd, dd->ipath_cregs->cr_portovflcnt) + | 1045 | ipath_snap_cntr(dd, dd->ipath_cregs->cr_portovflcnt) + |
1041 | ipath_snap_cntr(dd, dd->ipath_cregs->cr_errrcvflowctrlcnt) + | ||
1042 | ipath_snap_cntr(dd, dd->ipath_cregs->cr_err_rlencnt) + | 1046 | ipath_snap_cntr(dd, dd->ipath_cregs->cr_err_rlencnt) + |
1043 | ipath_snap_cntr(dd, dd->ipath_cregs->cr_invalidrlencnt) + | 1047 | ipath_snap_cntr(dd, dd->ipath_cregs->cr_invalidrlencnt) + |
1044 | ipath_snap_cntr(dd, dd->ipath_cregs->cr_erricrccnt) + | 1048 | ipath_snap_cntr(dd, dd->ipath_cregs->cr_erricrccnt) + |
1045 | ipath_snap_cntr(dd, dd->ipath_cregs->cr_errvcrccnt) + | 1049 | ipath_snap_cntr(dd, dd->ipath_cregs->cr_errvcrccnt) + |
1046 | ipath_snap_cntr(dd, dd->ipath_cregs->cr_errlpcrccnt) + | 1050 | ipath_snap_cntr(dd, dd->ipath_cregs->cr_errlpcrccnt) + |
1047 | ipath_snap_cntr(dd, dd->ipath_cregs->cr_errlinkcnt) + | ||
1048 | ipath_snap_cntr(dd, dd->ipath_cregs->cr_badformatcnt); | 1051 | ipath_snap_cntr(dd, dd->ipath_cregs->cr_badformatcnt); |
1049 | cntrs->port_rcv_remphys_errors = | 1052 | cntrs->port_rcv_remphys_errors = |
1050 | ipath_snap_cntr(dd, dd->ipath_cregs->cr_rcvebpcnt); | 1053 | ipath_snap_cntr(dd, dd->ipath_cregs->cr_rcvebpcnt); |
@@ -1058,6 +1061,8 @@ int ipath_layer_get_counters(struct ipath_devdata *dd, | |||
1058 | ipath_snap_cntr(dd, dd->ipath_cregs->cr_pktsendcnt); | 1061 | ipath_snap_cntr(dd, dd->ipath_cregs->cr_pktsendcnt); |
1059 | cntrs->port_rcv_packets = | 1062 | cntrs->port_rcv_packets = |
1060 | ipath_snap_cntr(dd, dd->ipath_cregs->cr_pktrcvcnt); | 1063 | ipath_snap_cntr(dd, dd->ipath_cregs->cr_pktrcvcnt); |
1064 | cntrs->local_link_integrity_errors = dd->ipath_lli_errors; | ||
1065 | cntrs->excessive_buffer_overrun_errors = 0; /* XXX */ | ||
1061 | 1066 | ||
1062 | ret = 0; | 1067 | ret = 0; |
1063 | 1068 | ||
diff --git a/drivers/infiniband/hw/ipath/ipath_layer.h b/drivers/infiniband/hw/ipath/ipath_layer.h index 5dcffc7e53cc..ee617e851a4d 100644 --- a/drivers/infiniband/hw/ipath/ipath_layer.h +++ b/drivers/infiniband/hw/ipath/ipath_layer.h | |||
@@ -55,6 +55,8 @@ struct ipath_layer_counters { | |||
55 | u64 port_rcv_data; | 55 | u64 port_rcv_data; |
56 | u64 port_xmit_packets; | 56 | u64 port_xmit_packets; |
57 | u64 port_rcv_packets; | 57 | u64 port_rcv_packets; |
58 | u32 local_link_integrity_errors; | ||
59 | u32 excessive_buffer_overrun_errors; | ||
58 | }; | 60 | }; |
59 | 61 | ||
60 | /* | 62 | /* |
diff --git a/drivers/infiniband/hw/ipath/ipath_mad.c b/drivers/infiniband/hw/ipath/ipath_mad.c index 8f765341d03d..95756924ecd2 100644 --- a/drivers/infiniband/hw/ipath/ipath_mad.c +++ b/drivers/infiniband/hw/ipath/ipath_mad.c | |||
@@ -613,6 +613,9 @@ struct ib_pma_portcounters { | |||
613 | #define IB_PMA_SEL_PORT_RCV_ERRORS __constant_htons(0x0008) | 613 | #define IB_PMA_SEL_PORT_RCV_ERRORS __constant_htons(0x0008) |
614 | #define IB_PMA_SEL_PORT_RCV_REMPHYS_ERRORS __constant_htons(0x0010) | 614 | #define IB_PMA_SEL_PORT_RCV_REMPHYS_ERRORS __constant_htons(0x0010) |
615 | #define IB_PMA_SEL_PORT_XMIT_DISCARDS __constant_htons(0x0040) | 615 | #define IB_PMA_SEL_PORT_XMIT_DISCARDS __constant_htons(0x0040) |
616 | #define IB_PMA_SEL_LOCAL_LINK_INTEGRITY_ERRORS __constant_htons(0x0200) | ||
617 | #define IB_PMA_SEL_EXCESSIVE_BUFFER_OVERRUNS __constant_htons(0x0400) | ||
618 | #define IB_PMA_SEL_PORT_VL15_DROPPED __constant_htons(0x0800) | ||
616 | #define IB_PMA_SEL_PORT_XMIT_DATA __constant_htons(0x1000) | 619 | #define IB_PMA_SEL_PORT_XMIT_DATA __constant_htons(0x1000) |
617 | #define IB_PMA_SEL_PORT_RCV_DATA __constant_htons(0x2000) | 620 | #define IB_PMA_SEL_PORT_RCV_DATA __constant_htons(0x2000) |
618 | #define IB_PMA_SEL_PORT_XMIT_PACKETS __constant_htons(0x4000) | 621 | #define IB_PMA_SEL_PORT_XMIT_PACKETS __constant_htons(0x4000) |
@@ -859,6 +862,10 @@ static int recv_pma_get_portcounters(struct ib_perf *pmp, | |||
859 | cntrs.port_rcv_data -= dev->z_port_rcv_data; | 862 | cntrs.port_rcv_data -= dev->z_port_rcv_data; |
860 | cntrs.port_xmit_packets -= dev->z_port_xmit_packets; | 863 | cntrs.port_xmit_packets -= dev->z_port_xmit_packets; |
861 | cntrs.port_rcv_packets -= dev->z_port_rcv_packets; | 864 | cntrs.port_rcv_packets -= dev->z_port_rcv_packets; |
865 | cntrs.local_link_integrity_errors -= | ||
866 | dev->z_local_link_integrity_errors; | ||
867 | cntrs.excessive_buffer_overrun_errors -= | ||
868 | dev->z_excessive_buffer_overrun_errors; | ||
862 | 869 | ||
863 | memset(pmp->data, 0, sizeof(pmp->data)); | 870 | memset(pmp->data, 0, sizeof(pmp->data)); |
864 | 871 | ||
@@ -896,6 +903,16 @@ static int recv_pma_get_portcounters(struct ib_perf *pmp, | |||
896 | else | 903 | else |
897 | p->port_xmit_discards = | 904 | p->port_xmit_discards = |
898 | cpu_to_be16((u16)cntrs.port_xmit_discards); | 905 | cpu_to_be16((u16)cntrs.port_xmit_discards); |
906 | if (cntrs.local_link_integrity_errors > 0xFUL) | ||
907 | cntrs.local_link_integrity_errors = 0xFUL; | ||
908 | if (cntrs.excessive_buffer_overrun_errors > 0xFUL) | ||
909 | cntrs.excessive_buffer_overrun_errors = 0xFUL; | ||
910 | p->lli_ebor_errors = (cntrs.local_link_integrity_errors << 4) | | ||
911 | cntrs.excessive_buffer_overrun_errors; | ||
912 | if (dev->n_vl15_dropped > 0xFFFFUL) | ||
913 | p->vl15_dropped = __constant_cpu_to_be16(0xFFFF); | ||
914 | else | ||
915 | p->vl15_dropped = cpu_to_be16((u16)dev->n_vl15_dropped); | ||
899 | if (cntrs.port_xmit_data > 0xFFFFFFFFUL) | 916 | if (cntrs.port_xmit_data > 0xFFFFFFFFUL) |
900 | p->port_xmit_data = __constant_cpu_to_be32(0xFFFFFFFF); | 917 | p->port_xmit_data = __constant_cpu_to_be32(0xFFFFFFFF); |
901 | else | 918 | else |
@@ -990,6 +1007,17 @@ static int recv_pma_set_portcounters(struct ib_perf *pmp, | |||
990 | if (p->counter_select & IB_PMA_SEL_PORT_XMIT_DISCARDS) | 1007 | if (p->counter_select & IB_PMA_SEL_PORT_XMIT_DISCARDS) |
991 | dev->z_port_xmit_discards = cntrs.port_xmit_discards; | 1008 | dev->z_port_xmit_discards = cntrs.port_xmit_discards; |
992 | 1009 | ||
1010 | if (p->counter_select & IB_PMA_SEL_LOCAL_LINK_INTEGRITY_ERRORS) | ||
1011 | dev->z_local_link_integrity_errors = | ||
1012 | cntrs.local_link_integrity_errors; | ||
1013 | |||
1014 | if (p->counter_select & IB_PMA_SEL_EXCESSIVE_BUFFER_OVERRUNS) | ||
1015 | dev->z_excessive_buffer_overrun_errors = | ||
1016 | cntrs.excessive_buffer_overrun_errors; | ||
1017 | |||
1018 | if (p->counter_select & IB_PMA_SEL_PORT_VL15_DROPPED) | ||
1019 | dev->n_vl15_dropped = 0; | ||
1020 | |||
993 | if (p->counter_select & IB_PMA_SEL_PORT_XMIT_DATA) | 1021 | if (p->counter_select & IB_PMA_SEL_PORT_XMIT_DATA) |
994 | dev->z_port_xmit_data = cntrs.port_xmit_data; | 1022 | dev->z_port_xmit_data = cntrs.port_xmit_data; |
995 | 1023 | ||
@@ -1275,32 +1303,8 @@ int ipath_process_mad(struct ib_device *ibdev, int mad_flags, u8 port_num, | |||
1275 | struct ib_wc *in_wc, struct ib_grh *in_grh, | 1303 | struct ib_wc *in_wc, struct ib_grh *in_grh, |
1276 | struct ib_mad *in_mad, struct ib_mad *out_mad) | 1304 | struct ib_mad *in_mad, struct ib_mad *out_mad) |
1277 | { | 1305 | { |
1278 | struct ipath_ibdev *dev = to_idev(ibdev); | ||
1279 | int ret; | 1306 | int ret; |
1280 | 1307 | ||
1281 | /* | ||
1282 | * Snapshot current HW counters to "clear" them. | ||
1283 | * This should be done when the driver is loaded except that for | ||
1284 | * some reason we get a zillion errors when brining up the link. | ||
1285 | */ | ||
1286 | if (dev->rcv_errors == 0) { | ||
1287 | struct ipath_layer_counters cntrs; | ||
1288 | |||
1289 | ipath_layer_get_counters(to_idev(ibdev)->dd, &cntrs); | ||
1290 | dev->rcv_errors++; | ||
1291 | dev->z_symbol_error_counter = cntrs.symbol_error_counter; | ||
1292 | dev->z_link_error_recovery_counter = | ||
1293 | cntrs.link_error_recovery_counter; | ||
1294 | dev->z_link_downed_counter = cntrs.link_downed_counter; | ||
1295 | dev->z_port_rcv_errors = cntrs.port_rcv_errors + 1; | ||
1296 | dev->z_port_rcv_remphys_errors = | ||
1297 | cntrs.port_rcv_remphys_errors; | ||
1298 | dev->z_port_xmit_discards = cntrs.port_xmit_discards; | ||
1299 | dev->z_port_xmit_data = cntrs.port_xmit_data; | ||
1300 | dev->z_port_rcv_data = cntrs.port_rcv_data; | ||
1301 | dev->z_port_xmit_packets = cntrs.port_xmit_packets; | ||
1302 | dev->z_port_rcv_packets = cntrs.port_rcv_packets; | ||
1303 | } | ||
1304 | switch (in_mad->mad_hdr.mgmt_class) { | 1308 | switch (in_mad->mad_hdr.mgmt_class) { |
1305 | case IB_MGMT_CLASS_SUBN_DIRECTED_ROUTE: | 1309 | case IB_MGMT_CLASS_SUBN_DIRECTED_ROUTE: |
1306 | case IB_MGMT_CLASS_SUBN_LID_ROUTED: | 1310 | case IB_MGMT_CLASS_SUBN_LID_ROUTED: |
diff --git a/drivers/infiniband/hw/ipath/ipath_ud.c b/drivers/infiniband/hw/ipath/ipath_ud.c index 3b6d00b9b8be..4b0502907f3c 100644 --- a/drivers/infiniband/hw/ipath/ipath_ud.c +++ b/drivers/infiniband/hw/ipath/ipath_ud.c | |||
@@ -560,7 +560,16 @@ void ipath_ud_rcv(struct ipath_ibdev *dev, struct ipath_ib_header *hdr, | |||
560 | spin_lock_irqsave(&rq->lock, flags); | 560 | spin_lock_irqsave(&rq->lock, flags); |
561 | if (rq->tail == rq->head) { | 561 | if (rq->tail == rq->head) { |
562 | spin_unlock_irqrestore(&rq->lock, flags); | 562 | spin_unlock_irqrestore(&rq->lock, flags); |
563 | dev->n_pkt_drops++; | 563 | /* |
564 | * Count VL15 packets dropped due to no receive buffer. | ||
565 | * Otherwise, count them as buffer overruns since usually, | ||
566 | * the HW will be able to receive packets even if there are | ||
567 | * no QPs with posted receive buffers. | ||
568 | */ | ||
569 | if (qp->ibqp.qp_num == 0) | ||
570 | dev->n_vl15_dropped++; | ||
571 | else | ||
572 | dev->rcv_errors++; | ||
564 | goto bail; | 573 | goto bail; |
565 | } | 574 | } |
566 | /* Silently drop packets which are too big. */ | 575 | /* Silently drop packets which are too big. */ |
diff --git a/drivers/infiniband/hw/ipath/ipath_verbs.c b/drivers/infiniband/hw/ipath/ipath_verbs.c index 059701d6a19d..ab4d5331e81e 100644 --- a/drivers/infiniband/hw/ipath/ipath_verbs.c +++ b/drivers/infiniband/hw/ipath/ipath_verbs.c | |||
@@ -981,6 +981,7 @@ static int ipath_verbs_register_sysfs(struct ib_device *dev); | |||
981 | */ | 981 | */ |
982 | static void *ipath_register_ib_device(int unit, struct ipath_devdata *dd) | 982 | static void *ipath_register_ib_device(int unit, struct ipath_devdata *dd) |
983 | { | 983 | { |
984 | struct ipath_layer_counters cntrs; | ||
984 | struct ipath_ibdev *idev; | 985 | struct ipath_ibdev *idev; |
985 | struct ib_device *dev; | 986 | struct ib_device *dev; |
986 | int ret; | 987 | int ret; |
@@ -1031,6 +1032,25 @@ static void *ipath_register_ib_device(int unit, struct ipath_devdata *dd) | |||
1031 | idev->pma_counter_select[5] = IB_PMA_PORT_XMIT_WAIT; | 1032 | idev->pma_counter_select[5] = IB_PMA_PORT_XMIT_WAIT; |
1032 | idev->link_width_enabled = 3; /* 1x or 4x */ | 1033 | idev->link_width_enabled = 3; /* 1x or 4x */ |
1033 | 1034 | ||
1035 | /* Snapshot current HW counters to "clear" them. */ | ||
1036 | ipath_layer_get_counters(dd, &cntrs); | ||
1037 | idev->z_symbol_error_counter = cntrs.symbol_error_counter; | ||
1038 | idev->z_link_error_recovery_counter = | ||
1039 | cntrs.link_error_recovery_counter; | ||
1040 | idev->z_link_downed_counter = cntrs.link_downed_counter; | ||
1041 | idev->z_port_rcv_errors = cntrs.port_rcv_errors; | ||
1042 | idev->z_port_rcv_remphys_errors = | ||
1043 | cntrs.port_rcv_remphys_errors; | ||
1044 | idev->z_port_xmit_discards = cntrs.port_xmit_discards; | ||
1045 | idev->z_port_xmit_data = cntrs.port_xmit_data; | ||
1046 | idev->z_port_rcv_data = cntrs.port_rcv_data; | ||
1047 | idev->z_port_xmit_packets = cntrs.port_xmit_packets; | ||
1048 | idev->z_port_rcv_packets = cntrs.port_rcv_packets; | ||
1049 | idev->z_local_link_integrity_errors = | ||
1050 | cntrs.local_link_integrity_errors; | ||
1051 | idev->z_excessive_buffer_overrun_errors = | ||
1052 | cntrs.excessive_buffer_overrun_errors; | ||
1053 | |||
1034 | /* | 1054 | /* |
1035 | * The system image GUID is supposed to be the same for all | 1055 | * The system image GUID is supposed to be the same for all |
1036 | * IB HCAs in a single system but since there can be other | 1056 | * IB HCAs in a single system but since there can be other |
diff --git a/drivers/infiniband/hw/ipath/ipath_verbs.h b/drivers/infiniband/hw/ipath/ipath_verbs.h index c57058ff5763..1cb797086679 100644 --- a/drivers/infiniband/hw/ipath/ipath_verbs.h +++ b/drivers/infiniband/hw/ipath/ipath_verbs.h | |||
@@ -460,6 +460,8 @@ struct ipath_ibdev { | |||
460 | u64 z_port_xmit_packets; /* starting count for PMA */ | 460 | u64 z_port_xmit_packets; /* starting count for PMA */ |
461 | u64 z_port_rcv_packets; /* starting count for PMA */ | 461 | u64 z_port_rcv_packets; /* starting count for PMA */ |
462 | u32 z_pkey_violations; /* starting count for PMA */ | 462 | u32 z_pkey_violations; /* starting count for PMA */ |
463 | u32 z_local_link_integrity_errors; /* starting count for PMA */ | ||
464 | u32 z_excessive_buffer_overrun_errors; /* starting count for PMA */ | ||
463 | u32 n_rc_resends; | 465 | u32 n_rc_resends; |
464 | u32 n_rc_acks; | 466 | u32 n_rc_acks; |
465 | u32 n_rc_qacks; | 467 | u32 n_rc_qacks; |
@@ -469,6 +471,7 @@ struct ipath_ibdev { | |||
469 | u32 n_other_naks; | 471 | u32 n_other_naks; |
470 | u32 n_timeouts; | 472 | u32 n_timeouts; |
471 | u32 n_pkt_drops; | 473 | u32 n_pkt_drops; |
474 | u32 n_vl15_dropped; | ||
472 | u32 n_wqe_errs; | 475 | u32 n_wqe_errs; |
473 | u32 n_rdma_dup_busy; | 476 | u32 n_rdma_dup_busy; |
474 | u32 n_piowait; | 477 | u32 n_piowait; |