mirror of
https://github.com/AuxXxilium/linux_dsm_epyc7002.git
synced 2024-11-25 10:30:54 +07:00
[SCSI] mptfusion: Check for command status is added after completion.
1) Corrected name string as "MPT SAS HOST" 2) Added proper check conditions for MPT_MGMT_STATUS_COMMAND_GOOD. Signed-off-by: Kashyap Desai <kashyap.desai@lsi.com> Signed-off-by: James Bottomley <James.Bottomley@suse.de>
This commit is contained in:
parent
69b2e9b443
commit
568da76929
@ -1894,7 +1894,7 @@ static struct scsi_host_template mptsas_driver_template = {
|
|||||||
.module = THIS_MODULE,
|
.module = THIS_MODULE,
|
||||||
.proc_name = "mptsas",
|
.proc_name = "mptsas",
|
||||||
.proc_info = mptscsih_proc_info,
|
.proc_info = mptscsih_proc_info,
|
||||||
.name = "MPT SPI Host",
|
.name = "MPT SAS Host",
|
||||||
.info = mptscsih_info,
|
.info = mptscsih_info,
|
||||||
.queuecommand = mptsas_qcmd,
|
.queuecommand = mptsas_qcmd,
|
||||||
.target_alloc = mptsas_target_alloc,
|
.target_alloc = mptsas_target_alloc,
|
||||||
@ -2038,11 +2038,13 @@ static int mptsas_phy_reset(struct sas_phy *phy, int hard_reset)
|
|||||||
|
|
||||||
timeleft = wait_for_completion_timeout(&ioc->sas_mgmt.done,
|
timeleft = wait_for_completion_timeout(&ioc->sas_mgmt.done,
|
||||||
10 * HZ);
|
10 * HZ);
|
||||||
if (!timeleft) {
|
if (!(ioc->sas_mgmt.status & MPT_MGMT_STATUS_COMMAND_GOOD)) {
|
||||||
/* On timeout reset the board */
|
error = -ETIME;
|
||||||
mpt_free_msg_frame(ioc, mf);
|
mpt_free_msg_frame(ioc, mf);
|
||||||
mpt_Soft_Hard_ResetHandler(ioc, CAN_SLEEP);
|
if (ioc->sas_mgmt.status & MPT_MGMT_STATUS_DID_IOCRESET)
|
||||||
error = -ETIMEDOUT;
|
goto out_unlock;
|
||||||
|
if (!timeleft)
|
||||||
|
mpt_Soft_Hard_ResetHandler(ioc, CAN_SLEEP);
|
||||||
goto out_unlock;
|
goto out_unlock;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -2223,11 +2225,14 @@ static int mptsas_smp_handler(struct Scsi_Host *shost, struct sas_rphy *rphy,
|
|||||||
mpt_put_msg_frame(mptsasMgmtCtx, ioc, mf);
|
mpt_put_msg_frame(mptsasMgmtCtx, ioc, mf);
|
||||||
|
|
||||||
timeleft = wait_for_completion_timeout(&ioc->sas_mgmt.done, 10 * HZ);
|
timeleft = wait_for_completion_timeout(&ioc->sas_mgmt.done, 10 * HZ);
|
||||||
if (!timeleft) {
|
if (!(ioc->sas_mgmt.status & MPT_MGMT_STATUS_COMMAND_GOOD)) {
|
||||||
printk(MYIOC_s_ERR_FMT "%s: smp timeout!\n", ioc->name, __func__);
|
ret = -ETIME;
|
||||||
/* On timeout reset the board */
|
mpt_free_msg_frame(ioc, mf);
|
||||||
mpt_Soft_Hard_ResetHandler(ioc, CAN_SLEEP);
|
mf = NULL;
|
||||||
ret = -ETIMEDOUT;
|
if (ioc->sas_mgmt.status & MPT_MGMT_STATUS_DID_IOCRESET)
|
||||||
|
goto unmap;
|
||||||
|
if (!timeleft)
|
||||||
|
mpt_Soft_Hard_ResetHandler(ioc, CAN_SLEEP);
|
||||||
goto unmap;
|
goto unmap;
|
||||||
}
|
}
|
||||||
mf = NULL;
|
mf = NULL;
|
||||||
@ -4098,6 +4103,7 @@ mptsas_adding_inactive_raid_components(MPT_ADAPTER *ioc, u8 channel, u8 id)
|
|||||||
cfg.pageAddr = (channel << 8) + id;
|
cfg.pageAddr = (channel << 8) + id;
|
||||||
cfg.cfghdr.hdr = &hdr;
|
cfg.cfghdr.hdr = &hdr;
|
||||||
cfg.action = MPI_CONFIG_ACTION_PAGE_HEADER;
|
cfg.action = MPI_CONFIG_ACTION_PAGE_HEADER;
|
||||||
|
cfg.timeout = SAS_CONFIG_PAGE_TIMEOUT;
|
||||||
|
|
||||||
if (mpt_config(ioc, &cfg) != 0)
|
if (mpt_config(ioc, &cfg) != 0)
|
||||||
goto out;
|
goto out;
|
||||||
|
Loading…
Reference in New Issue
Block a user