Commit 229adb0e authored by James Smart's avatar James Smart Committed by James Bottomley

[SCSI] lpfc 8.3.39: Fix driver issues with SCSI Host reset

Signed-off-by: default avatarJames Smart <james.smart@emulex.com>
Signed-off-by: default avatarJames Bottomley <JBottomley@Parallels.com>
parent a22e7db3
...@@ -674,6 +674,9 @@ lpfc_do_offline(struct lpfc_hba *phba, uint32_t type) ...@@ -674,6 +674,9 @@ lpfc_do_offline(struct lpfc_hba *phba, uint32_t type)
int i; int i;
int rc; int rc;
if (phba->pport->fc_flag & FC_OFFLINE_MODE)
return 0;
init_completion(&online_compl); init_completion(&online_compl);
rc = lpfc_workq_post_event(phba, &status, &online_compl, rc = lpfc_workq_post_event(phba, &status, &online_compl,
LPFC_EVT_OFFLINE_PREP); LPFC_EVT_OFFLINE_PREP);
...@@ -741,7 +744,8 @@ lpfc_selective_reset(struct lpfc_hba *phba) ...@@ -741,7 +744,8 @@ lpfc_selective_reset(struct lpfc_hba *phba)
int status = 0; int status = 0;
int rc; int rc;
if (!phba->cfg_enable_hba_reset) if ((!phba->cfg_enable_hba_reset) ||
(phba->pport->fc_flag & FC_OFFLINE_MODE))
return -EACCES; return -EACCES;
status = lpfc_do_offline(phba, LPFC_EVT_OFFLINE); status = lpfc_do_offline(phba, LPFC_EVT_OFFLINE);
...@@ -895,6 +899,7 @@ lpfc_sli4_pdev_reg_request(struct lpfc_hba *phba, uint32_t opcode) ...@@ -895,6 +899,7 @@ lpfc_sli4_pdev_reg_request(struct lpfc_hba *phba, uint32_t opcode)
pci_disable_sriov(pdev); pci_disable_sriov(pdev);
phba->cfg_sriov_nr_virtfn = 0; phba->cfg_sriov_nr_virtfn = 0;
} }
status = lpfc_do_offline(phba, LPFC_EVT_OFFLINE); status = lpfc_do_offline(phba, LPFC_EVT_OFFLINE);
if (status != 0) if (status != 0)
......
...@@ -621,7 +621,7 @@ struct lpfc_register { ...@@ -621,7 +621,7 @@ struct lpfc_register {
#define lpfc_sliport_status_rdy_SHIFT 23 #define lpfc_sliport_status_rdy_SHIFT 23
#define lpfc_sliport_status_rdy_MASK 0x1 #define lpfc_sliport_status_rdy_MASK 0x1
#define lpfc_sliport_status_rdy_WORD word0 #define lpfc_sliport_status_rdy_WORD word0
#define MAX_IF_TYPE_2_RESETS 1000 #define MAX_IF_TYPE_2_RESETS 6
#define LPFC_CTL_PORT_CTL_OFFSET 0x408 #define LPFC_CTL_PORT_CTL_OFFSET 0x408
#define lpfc_sliport_ctrl_end_SHIFT 30 #define lpfc_sliport_ctrl_end_SHIFT 30
......
...@@ -7817,8 +7817,13 @@ lpfc_pci_function_reset(struct lpfc_hba *phba) ...@@ -7817,8 +7817,13 @@ lpfc_pci_function_reset(struct lpfc_hba *phba)
out: out:
/* Catch the not-ready port failure after a port reset. */ /* Catch the not-ready port failure after a port reset. */
if (num_resets >= MAX_IF_TYPE_2_RESETS) if (num_resets >= MAX_IF_TYPE_2_RESETS) {
lpfc_printf_log(phba, KERN_ERR, LOG_INIT,
"3317 HBA not functional: IP Reset Failed "
"after (%d) retries, try: "
"echo fw_reset > board_mode\n", num_resets);
rc = -ENODEV; rc = -ENODEV;
}
return rc; return rc;
} }
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment