mptfusion: Check for command status is added after completion.
Subsystems (2)
PATCH 9/12 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 <[email protected]>
---
drivers/message/fusion/mptsas.c +16 -10
@@ -1893,7 +1893,7 @@ static struct scsi_host_template mptsas_driver_template = { .module = THIS_MODULE, .proc_name = "mptsas", .proc_info = mptscsih_proc_info, - .name = "MPT SPI Host", + .name = "MPT SAS Host", .info = mptscsih_info, .queuecommand = mptsas_qcmd, .target_alloc = mptsas_target_alloc,
@@ -2037,11 +2037,13 @@ static int mptsas_phy_reset(struct sas_phy *phy, int hard_reset) timeleft =wait_for_completion_timeout (&ioc->sas_mgmt.done,10 *HZ ); -if (!timeleft) { -/* On timeout reset the board */ +if (!(ioc->sas_mgmt.status &MPT_MGMT_STATUS_COMMAND_GOOD )) { + error = -ETIME ;mpt_free_msg_frame (ioc, mf); -mpt_Soft_Hard_ResetHandler (ioc,CAN_SLEEP ); - error = -ETIMEDOUT ; +if (ioc->sas_mgmt.status &MPT_MGMT_STATUS_DID_IOCRESET ) + goto out_unlock; +if (!timeleft) +mpt_Soft_Hard_ResetHandler (ioc,CAN_SLEEP ); goto out_unlock; }
@@ -2222,11 +2224,14 @@ static int mptsas_smp_handler(struct Scsi_Host *shost, struct sas_rphy *rphy,mpt_put_msg_frame (mptsasMgmtCtx, ioc, mf); timeleft =wait_for_completion_timeout (&ioc->sas_mgmt.done,10 *HZ ); -if (!timeleft) { -printk (MYIOC_s_ERR_FMT"%s: smp timeout!\n" , ioc->name, __func__); -/* On timeout reset the board */ -mpt_Soft_Hard_ResetHandler (ioc,CAN_SLEEP ); - ret = -ETIMEDOUT ; +if (!(ioc->sas_mgmt.status &MPT_MGMT_STATUS_COMMAND_GOOD )) { + ret = -ETIME ; +mpt_free_msg_frame (ioc, mf); + mf =NULL ; +if (ioc->sas_mgmt.status &MPT_MGMT_STATUS_DID_IOCRESET ) + goto unmap; +if (!timeleft) +mpt_Soft_Hard_ResetHandler (ioc,CAN_SLEEP ); goto unmap; } mf =NULL ;
@@ -4097,6 +4102,7 @@ mptsas_adding_inactive_raid_components(MPT_ADAPTER *ioc, u8 channel, u8 id) cfg.pageAddr = (channel <<8 ) + id; cfg.cfghdr.hdr = &hdr; cfg.action =MPI_CONFIG_ACTION_PAGE_HEADER ; + cfg.timeout =SAS_CONFIG_PAGE_TIMEOUT ;if (mpt_config (ioc, &cfg) !=0 ) goto out;