Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/drzeus/mmc
[cascardo/linux.git] / drivers / infiniband / hw / ipath / ipath_stats.c
index 70351b7..d8b5e4c 100644 (file)
@@ -31,8 +31,6 @@
  * SOFTWARE.
  */
 
-#include <linux/pci.h>
-
 #include "ipath_kernel.h"
 
 struct infinipath_stats ipath_stats;
@@ -207,7 +205,7 @@ void ipath_get_faststats(unsigned long opaque)
         * don't access the chip while running diags, or memory diags can
         * fail
         */
-       if (!dd->ipath_kregbase || !(dd->ipath_flags & IPATH_PRESENT) ||
+       if (!dd->ipath_kregbase || !(dd->ipath_flags & IPATH_INITTED) ||
            ipath_diag_inuse)
                /* but re-arm the timer, for diags case; won't hurt other */
                goto done;
@@ -237,11 +235,13 @@ void ipath_get_faststats(unsigned long opaque)
        if ((dd->ipath_maskederrs & ~dd->ipath_ignorederrs)
            && time_after(jiffies, dd->ipath_unmasktime)) {
                char ebuf[256];
-               ipath_decode_err(ebuf, sizeof ebuf,
+               int iserr;
+               iserr = ipath_decode_err(ebuf, sizeof ebuf,
                                 (dd->ipath_maskederrs & ~dd->
                                  ipath_ignorederrs));
                if ((dd->ipath_maskederrs & ~dd->ipath_ignorederrs) &
-                   ~(INFINIPATH_E_RRCVEGRFULL | INFINIPATH_E_RRCVHDRFULL))
+                               ~(INFINIPATH_E_RRCVEGRFULL | INFINIPATH_E_RRCVHDRFULL |
+                               INFINIPATH_E_PKTERRS ))
                        ipath_dev_err(dd, "Re-enabling masked errors "
                                      "(%s)\n", ebuf);
                else {
@@ -252,8 +252,12 @@ void ipath_get_faststats(unsigned long opaque)
                         * them.  So only complain about these at debug
                         * level.
                         */
-                       ipath_dbg("Disabling frequent queue full errors "
-                                 "(%s)\n", ebuf);
+                       if (iserr)
+                                       ipath_dbg("Re-enabling queue full errors (%s)\n",
+                                                       ebuf);
+                       else
+                               ipath_cdbg(ERRPKT, "Re-enabling packet"
+                                               " problem interrupt (%s)\n", ebuf);
                }
                dd->ipath_maskederrs = dd->ipath_ignorederrs;
                ipath_write_kreg(dd, dd->ipath_kregs->kr_errormask,
@@ -271,33 +275,6 @@ void ipath_get_faststats(unsigned long opaque)
                }
        }
 
-       if (dd->ipath_nosma_bufs) {
-               dd->ipath_nosma_secs += 5;
-               if (dd->ipath_nosma_secs >= 30) {
-                       ipath_cdbg(SMA, "No SMA bufs avail %u seconds; "
-                                  "cancelling pending sends\n",
-                                  dd->ipath_nosma_secs);
-                       /*
-                        * issue an abort as well, in case we have a packet
-                        * stuck in launch fifo.  This could corrupt an
-                        * outgoing user packet in the worst case,
-                        * but this is a pretty catastrophic, anyway.
-                        */
-                       ipath_write_kreg(dd, dd->ipath_kregs->kr_sendctrl,
-                                        INFINIPATH_S_ABORT);
-                       ipath_disarm_piobufs(dd, dd->ipath_lastport_piobuf,
-                                            dd->ipath_piobcnt2k +
-                                            dd->ipath_piobcnt4k -
-                                            dd->ipath_lastport_piobuf);
-                       /* start again, if necessary */
-                       dd->ipath_nosma_secs = 0;
-               } else
-                       ipath_cdbg(SMA, "No SMA bufs avail %u tries, "
-                                  "after %u seconds\n",
-                                  dd->ipath_nosma_bufs,
-                                  dd->ipath_nosma_secs);
-       }
-
 done:
        mod_timer(&dd->ipath_stats_timer, jiffies + HZ * 5);
 }