diff options
Diffstat (limited to 'drivers/scsi/lpfc')
-rw-r--r-- | drivers/scsi/lpfc/lpfc_init.c | 22 |
1 files changed, 14 insertions, 8 deletions
diff --git a/drivers/scsi/lpfc/lpfc_init.c b/drivers/scsi/lpfc/lpfc_init.c index f31a36827512..f622c8811344 100644 --- a/drivers/scsi/lpfc/lpfc_init.c +++ b/drivers/scsi/lpfc/lpfc_init.c | |||
@@ -1469,7 +1469,8 @@ lpfc_handle_eratt_s3(struct lpfc_hba *phba) | |||
1469 | * for handling possible port resource change. | 1469 | * for handling possible port resource change. |
1470 | **/ | 1470 | **/ |
1471 | static int | 1471 | static int |
1472 | lpfc_sli4_port_sta_fn_reset(struct lpfc_hba *phba, int mbx_action) | 1472 | lpfc_sli4_port_sta_fn_reset(struct lpfc_hba *phba, int mbx_action, |
1473 | bool en_rn_msg) | ||
1473 | { | 1474 | { |
1474 | int rc; | 1475 | int rc; |
1475 | uint32_t intr_mode; | 1476 | uint32_t intr_mode; |
@@ -1481,9 +1482,10 @@ lpfc_sli4_port_sta_fn_reset(struct lpfc_hba *phba, int mbx_action) | |||
1481 | rc = lpfc_sli4_pdev_status_reg_wait(phba); | 1482 | rc = lpfc_sli4_pdev_status_reg_wait(phba); |
1482 | if (!rc) { | 1483 | if (!rc) { |
1483 | /* need reset: attempt for port recovery */ | 1484 | /* need reset: attempt for port recovery */ |
1484 | lpfc_printf_log(phba, KERN_ERR, LOG_INIT, | 1485 | if (en_rn_msg) |
1485 | "2887 Reset Needed: Attempting Port " | 1486 | lpfc_printf_log(phba, KERN_ERR, LOG_INIT, |
1486 | "Recovery...\n"); | 1487 | "2887 Reset Needed: Attempting Port " |
1488 | "Recovery...\n"); | ||
1487 | lpfc_offline_prep(phba, mbx_action); | 1489 | lpfc_offline_prep(phba, mbx_action); |
1488 | lpfc_offline(phba); | 1490 | lpfc_offline(phba); |
1489 | /* release interrupt for possible resource change */ | 1491 | /* release interrupt for possible resource change */ |
@@ -1523,6 +1525,7 @@ lpfc_handle_eratt_s4(struct lpfc_hba *phba) | |||
1523 | uint32_t reg_err1, reg_err2; | 1525 | uint32_t reg_err1, reg_err2; |
1524 | uint32_t uerrlo_reg, uemasklo_reg; | 1526 | uint32_t uerrlo_reg, uemasklo_reg; |
1525 | uint32_t pci_rd_rc1, pci_rd_rc2; | 1527 | uint32_t pci_rd_rc1, pci_rd_rc2; |
1528 | bool en_rn_msg = true; | ||
1526 | int rc; | 1529 | int rc; |
1527 | 1530 | ||
1528 | /* If the pci channel is offline, ignore possible errors, since | 1531 | /* If the pci channel is offline, ignore possible errors, since |
@@ -1573,10 +1576,12 @@ lpfc_handle_eratt_s4(struct lpfc_hba *phba) | |||
1573 | break; | 1576 | break; |
1574 | } | 1577 | } |
1575 | if (reg_err1 == SLIPORT_ERR1_REG_ERR_CODE_2 && | 1578 | if (reg_err1 == SLIPORT_ERR1_REG_ERR_CODE_2 && |
1576 | reg_err2 == SLIPORT_ERR2_REG_FW_RESTART) | 1579 | reg_err2 == SLIPORT_ERR2_REG_FW_RESTART) { |
1577 | lpfc_printf_log(phba, KERN_ERR, LOG_INIT, | 1580 | lpfc_printf_log(phba, KERN_ERR, LOG_INIT, |
1578 | "3143 Port Down: Firmware Restarted\n"); | 1581 | "3143 Port Down: Firmware Update " |
1579 | else if (reg_err1 == SLIPORT_ERR1_REG_ERR_CODE_2 && | 1582 | "Detected\n"); |
1583 | en_rn_msg = false; | ||
1584 | } else if (reg_err1 == SLIPORT_ERR1_REG_ERR_CODE_2 && | ||
1580 | reg_err2 == SLIPORT_ERR2_REG_FORCED_DUMP) | 1585 | reg_err2 == SLIPORT_ERR2_REG_FORCED_DUMP) |
1581 | lpfc_printf_log(phba, KERN_ERR, LOG_INIT, | 1586 | lpfc_printf_log(phba, KERN_ERR, LOG_INIT, |
1582 | "3144 Port Down: Debug Dump\n"); | 1587 | "3144 Port Down: Debug Dump\n"); |
@@ -1586,7 +1591,8 @@ lpfc_handle_eratt_s4(struct lpfc_hba *phba) | |||
1586 | "3145 Port Down: Provisioning\n"); | 1591 | "3145 Port Down: Provisioning\n"); |
1587 | 1592 | ||
1588 | /* Check port status register for function reset */ | 1593 | /* Check port status register for function reset */ |
1589 | rc = lpfc_sli4_port_sta_fn_reset(phba, LPFC_MBX_NO_WAIT); | 1594 | rc = lpfc_sli4_port_sta_fn_reset(phba, LPFC_MBX_NO_WAIT, |
1595 | en_rn_msg); | ||
1590 | if (rc == 0) { | 1596 | if (rc == 0) { |
1591 | /* don't report event on forced debug dump */ | 1597 | /* don't report event on forced debug dump */ |
1592 | if (reg_err1 == SLIPORT_ERR1_REG_ERR_CODE_2 && | 1598 | if (reg_err1 == SLIPORT_ERR1_REG_ERR_CODE_2 && |