scsi: megaraid_sas: Do not set HBA Operational if FW is not in operational state

After issuing a adapter reset, driver blindly used to set adprecovery flag
to OPERATIONAL state.  Add a check to see if the FW is operational before
setting the flag and marking reset adapter successful.

Link: https://lore.kernel.org/r/1579000882-20246-7-git-send-email-anand.lodnoor@broadcom.com
Signed-off-by: Shivasharan S <shivasharan.srikanteshwara@broadcom.com>
Signed-off-by: Anand Lodnoor <anand.lodnoor@broadcom.com>
Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
This commit is contained in:
Anand Lodnoor 2020-01-14 16:51:17 +05:30 committed by Martin K. Petersen
parent 9330a0fd82
commit eeb63c23ff
1 changed files with 9 additions and 0 deletions

View File

@ -4991,6 +4991,15 @@ int megasas_reset_fusion(struct Scsi_Host *shost, int reason)
megasas_set_dynamic_target_properties(sdev, is_target_prop);
}
status_reg = instance->instancet->read_fw_status_reg
(instance);
abs_state = status_reg & MFI_STATE_MASK;
if (abs_state != MFI_STATE_OPERATIONAL) {
dev_info(&instance->pdev->dev,
"Adapter is not OPERATIONAL, state 0x%x for scsi:%d\n",
abs_state, instance->host->host_no);
goto out;
}
atomic_set(&instance->adprecovery, MEGASAS_HBA_OPERATIONAL);
dev_info(&instance->pdev->dev,