aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/scsi/lpfc
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/scsi/lpfc')
-rw-r--r--drivers/scsi/lpfc/lpfc_init.c22
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 **/
1471static int 1471static int
1472lpfc_sli4_port_sta_fn_reset(struct lpfc_hba *phba, int mbx_action) 1472lpfc_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 &&