aboutsummaryrefslogtreecommitdiffstats
path: root/drivers
diff options
context:
space:
mode:
authorBryan O'Sullivan <bos@pathscale.com>2006-07-01 07:36:09 -0400
committerLinus Torvalds <torvalds@g5.osdl.org>2006-07-01 12:56:01 -0400
commitfba75200ad92892bf32d8d6f1443c6f1e4f48676 (patch)
tree289d5db3b7fc9f9ce4c49f9f1299bbf3985b87d4 /drivers
parent85322947d761d08bd84165500f35b93c702aaaf3 (diff)
[PATCH] IB/ipath: fixes to performance get counters for IB compliance
This patch fixes some problems uncovered during IB compliance testing to return the right values for error counters returned by the Performance Get Counters packet. Signed-off-by: Ralph Campbell <ralph.campbell@qlogic.com> Signed-off-by: Bryan O'Sullivan <bryan.osullivan@qlogic.com> Cc: "Michael S. Tsirkin" <mst@mellanox.co.il> Cc: Roland Dreier <rolandd@cisco.com> Signed-off-by: Andrew Morton <akpm@osdl.org> Signed-off-by: Linus Torvalds <torvalds@osdl.org>
Diffstat (limited to 'drivers')
-rw-r--r--drivers/infiniband/hw/ipath/ipath_driver.c17
-rw-r--r--drivers/infiniband/hw/ipath/ipath_intr.c1
-rw-r--r--drivers/infiniband/hw/ipath/ipath_kernel.h5
-rw-r--r--drivers/infiniband/hw/ipath/ipath_layer.c9
-rw-r--r--drivers/infiniband/hw/ipath/ipath_layer.h2
-rw-r--r--drivers/infiniband/hw/ipath/ipath_mad.c52
-rw-r--r--drivers/infiniband/hw/ipath/ipath_ud.c11
-rw-r--r--drivers/infiniband/hw/ipath/ipath_verbs.c20
-rw-r--r--drivers/infiniband/hw/ipath/ipath_verbs.h3
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
512extern struct list_head ipath_dev_list; 517extern 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 */
982static void *ipath_register_ib_device(int unit, struct ipath_devdata *dd) 982static 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;