staging/rdma/hfi1: unknown frame messages are not errors
authorDean Luick <dean.luick@intel.com>
Tue, 1 Dec 2015 20:38:23 +0000 (15:38 -0500)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Mon, 21 Dec 2015 21:51:55 +0000 (13:51 -0800)
Change reported unknown frame messages into a counter.
These are informational, no errors.

Reviewed-by: Dennis Dalessandro <dennis.dalessandro@intel.com>
Signed-off-by: Dean Luick <dean.luick@intel.com>
Signed-off-by: Jubin John <jubin.john@intel.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
drivers/staging/rdma/hfi1/chip.c
drivers/staging/rdma/hfi1/chip.h
drivers/staging/rdma/hfi1/hfi.h

index 719e3f1e4499dab7340d45440d00f20086e075d1..cb73243c497a2cb8775c28309a498e3fdd2d072a 100644 (file)
@@ -1418,6 +1418,17 @@ static u64 access_sw_link_up_cnt(const struct cntr_entry *entry, void *context,
        return read_write_sw(ppd->dd, &ppd->link_up, mode, data);
 }
 
+static u64 access_sw_unknown_frame_cnt(const struct cntr_entry *entry,
+                                      void *context, int vl, int mode,
+                                      u64 data)
+{
+       struct hfi1_pportdata *ppd = (struct hfi1_pportdata *)context;
+
+       if (vl != CNTR_INVALID_VL)
+               return 0;
+       return read_write_sw(ppd->dd, &ppd->unknown_frame_count, mode, data);
+}
+
 static u64 access_sw_xmit_discards(const struct cntr_entry *entry,
                                    void *context, int vl, int mode, u64 data)
 {
@@ -4879,6 +4890,8 @@ static struct cntr_entry port_cntrs[PORT_CNTR_LAST] = {
                        access_sw_link_dn_cnt),
 [C_SW_LINK_UP] = CNTR_ELEM("SwLinkUp", 0, 0, CNTR_SYNTH | CNTR_32BIT,
                        access_sw_link_up_cnt),
+[C_SW_UNKNOWN_FRAME] = CNTR_ELEM("UnknownFrame", 0, 0, CNTR_NORMAL,
+                                access_sw_unknown_frame_cnt),
 [C_SW_XMIT_DSCD] = CNTR_ELEM("XmitDscd", 0, 0, CNTR_SYNTH | CNTR_32BIT,
                        access_sw_xmit_discards),
 [C_SW_XMIT_DSCD_VL] = CNTR_ELEM("XmitDscdVl", 0, 0,
@@ -7235,6 +7248,11 @@ static void handle_8051_interrupt(struct hfi1_devdata *dd, u32 unused, u64 reg)
                        }
                        err &= ~(u64)FAILED_LNI;
                }
+               /* unknown frames can happen durning LNI, just count */
+               if (err & UNKNOWN_FRAME) {
+                       ppd->unknown_frame_count++;
+                       err &= ~(u64)UNKNOWN_FRAME;
+               }
                if (err) {
                        /* report remaining errors, but do not do anything */
                        dd_dev_err(dd, "8051 info error: %s\n",
index ceed637a763497fc272d5a4f8cb3bebe7136ca22..5b375ddc345d88bb8441f20bd1c7274669f8722e 100644 (file)
@@ -1078,6 +1078,7 @@ enum {
        C_RX_WORDS,
        C_SW_LINK_DOWN,
        C_SW_LINK_UP,
+       C_SW_UNKNOWN_FRAME,
        C_SW_XMIT_DSCD,
        C_SW_XMIT_DSCD_VL,
        C_SW_XMIT_CSTR_ERR,
index 9ee3951af1285b92fb18bbf2fd8657fef653e67c..7f8cafa841b5c0a4b9220ffc3ab915bae8837388 100644 (file)
@@ -713,6 +713,8 @@ struct hfi1_pportdata {
        u64 link_downed;
        /* number of times link retrained successfully */
        u64 link_up;
+       /* number of times a link unknown frame was reported */
+       u64 unknown_frame_count;
        /* port_ltp_crc_mode is returned in 'portinfo' MADs */
        u16 port_ltp_crc_mode;
        /* port_crc_mode_enabled is the crc we support */