diff options
Diffstat (limited to 'drivers/infiniband/hw/ipath/ipath_iba6120.c')
-rw-r--r-- | drivers/infiniband/hw/ipath/ipath_iba6120.c | 16 |
1 files changed, 13 insertions, 3 deletions
diff --git a/drivers/infiniband/hw/ipath/ipath_iba6120.c b/drivers/infiniband/hw/ipath/ipath_iba6120.c index b931057bb3e8..0c34555d4979 100644 --- a/drivers/infiniband/hw/ipath/ipath_iba6120.c +++ b/drivers/infiniband/hw/ipath/ipath_iba6120.c | |||
@@ -430,8 +430,19 @@ static void ipath_pe_handle_hwerrors(struct ipath_devdata *dd, char *msg, | |||
430 | *dd->ipath_statusp |= IPATH_STATUS_HWERROR; | 430 | *dd->ipath_statusp |= IPATH_STATUS_HWERROR; |
431 | dd->ipath_flags &= ~IPATH_INITTED; | 431 | dd->ipath_flags &= ~IPATH_INITTED; |
432 | } else { | 432 | } else { |
433 | ipath_dbg("Clearing freezemode on ignored hardware " | 433 | static u32 freeze_cnt; |
434 | "error\n"); | 434 | |
435 | freeze_cnt++; | ||
436 | ipath_dbg("Clearing freezemode on ignored or recovered " | ||
437 | "hardware error (%u)\n", freeze_cnt); | ||
438 | /* | ||
439 | * clear all sends, becauase they have may been | ||
440 | * completed by usercode while in freeze mode, and | ||
441 | * therefore would not be sent, and eventually | ||
442 | * might cause the process to run out of bufs | ||
443 | */ | ||
444 | ipath_cancel_sends(dd); | ||
445 | ctrl &= ~INFINIPATH_C_FREEZEMODE; | ||
435 | ipath_write_kreg(dd, dd->ipath_kregs->kr_control, | 446 | ipath_write_kreg(dd, dd->ipath_kregs->kr_control, |
436 | dd->ipath_control); | 447 | dd->ipath_control); |
437 | } | 448 | } |
@@ -1371,7 +1382,6 @@ static int ipath_pe_txe_recover(struct ipath_devdata *dd) | |||
1371 | dev_info(&dd->pcidev->dev, | 1382 | dev_info(&dd->pcidev->dev, |
1372 | "Recovering from TXE PIO parity error\n"); | 1383 | "Recovering from TXE PIO parity error\n"); |
1373 | } | 1384 | } |
1374 | ipath_disarm_senderrbufs(dd, 1); | ||
1375 | return 1; | 1385 | return 1; |
1376 | } | 1386 | } |
1377 | 1387 | ||