diff options
Diffstat (limited to 'drivers/infiniband/hw/ipath/ipath_intr.c')
-rw-r--r-- | drivers/infiniband/hw/ipath/ipath_intr.c | 13 |
1 files changed, 5 insertions, 8 deletions
diff --git a/drivers/infiniband/hw/ipath/ipath_intr.c b/drivers/infiniband/hw/ipath/ipath_intr.c index d9cdd00c8233..948091f7d5ac 100644 --- a/drivers/infiniband/hw/ipath/ipath_intr.c +++ b/drivers/infiniband/hw/ipath/ipath_intr.c | |||
@@ -93,7 +93,8 @@ void ipath_disarm_senderrbufs(struct ipath_devdata *dd, int rewrite) | |||
93 | 93 | ||
94 | if (sbuf[0] || sbuf[1] || (piobcnt > 128 && (sbuf[2] || sbuf[3]))) { | 94 | if (sbuf[0] || sbuf[1] || (piobcnt > 128 && (sbuf[2] || sbuf[3]))) { |
95 | int i; | 95 | int i; |
96 | if (ipath_debug & (__IPATH_PKTDBG|__IPATH_DBG)) { | 96 | if (ipath_debug & (__IPATH_PKTDBG|__IPATH_DBG) && |
97 | dd->ipath_lastcancel > jiffies) { | ||
97 | __IPATH_DBG_WHICH(__IPATH_PKTDBG|__IPATH_DBG, | 98 | __IPATH_DBG_WHICH(__IPATH_PKTDBG|__IPATH_DBG, |
98 | "SendbufErrs %lx %lx", sbuf[0], | 99 | "SendbufErrs %lx %lx", sbuf[0], |
99 | sbuf[1]); | 100 | sbuf[1]); |
@@ -108,7 +109,8 @@ void ipath_disarm_senderrbufs(struct ipath_devdata *dd, int rewrite) | |||
108 | ipath_clrpiobuf(dd, i); | 109 | ipath_clrpiobuf(dd, i); |
109 | ipath_disarm_piobufs(dd, i, 1); | 110 | ipath_disarm_piobufs(dd, i, 1); |
110 | } | 111 | } |
111 | dd->ipath_lastcancel = jiffies+3; /* no armlaunch for a bit */ | 112 | /* ignore armlaunch errs for a bit */ |
113 | dd->ipath_lastcancel = jiffies+3; | ||
112 | } | 114 | } |
113 | } | 115 | } |
114 | 116 | ||
@@ -290,12 +292,7 @@ static void handle_e_ibstatuschanged(struct ipath_devdata *dd, | |||
290 | * Flush all queued sends when link went to DOWN or INIT, | 292 | * Flush all queued sends when link went to DOWN or INIT, |
291 | * to be sure that they don't block SMA and other MAD packets | 293 | * to be sure that they don't block SMA and other MAD packets |
292 | */ | 294 | */ |
293 | ipath_write_kreg(dd, dd->ipath_kregs->kr_sendctrl, | 295 | ipath_cancel_sends(dd); |
294 | INFINIPATH_S_ABORT); | ||
295 | ipath_disarm_piobufs(dd, dd->ipath_lastport_piobuf, | ||
296 | (unsigned)(dd->ipath_piobcnt2k + | ||
297 | dd->ipath_piobcnt4k) - | ||
298 | dd->ipath_lastport_piobuf); | ||
299 | } | 296 | } |
300 | else if (lstate == IPATH_IBSTATE_INIT || lstate == IPATH_IBSTATE_ARM || | 297 | else if (lstate == IPATH_IBSTATE_INIT || lstate == IPATH_IBSTATE_ARM || |
301 | lstate == IPATH_IBSTATE_ACTIVE) { | 298 | lstate == IPATH_IBSTATE_ACTIVE) { |