aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/message/fusion/mptsas.c
diff options
context:
space:
mode:
authorKashyap, Desai <kashyap.desai@lsi.com>2010-03-18 09:42:17 -0400
committerJames Bottomley <James.Bottomley@suse.de>2010-04-11 10:24:04 -0400
commitd0f698c46141e1d179fb3a86a0ae668d2fd12916 (patch)
treea66e2ba2f34ea63d1568a46270c5414e842dad1d /drivers/message/fusion/mptsas.c
parent1a7d7eac6f651c00e954023dd2542f0c65ef66b7 (diff)
[SCSI] mptfusion: Added new less expensive RESET (Message Unit Reset)
Message Unit Reset - instructs the IOC to reset the Reply Post and Free FIFO's. All the Message Frames on Reply Free FIFO are discarded. All posted buffers are freed, and event notification is turned off. IOC doesnt reply to any outstanding request. This will transfer IOC to READY state. Message unit ready is less expensive operations than Hard Reset. soft reset will not force Firmware to reload again, it only do clean up of Message units. mpt_Soft_Hard_ResetHandler will first try for Soft Reset,if it fails then go for big hammer reset which is Hard Reset. Signed-off-by: Kashyap Desai <kashyap.desai@lsi.com> Signed-off-by: James Bottomley <James.Bottomley@suse.de>
Diffstat (limited to 'drivers/message/fusion/mptsas.c')
-rw-r--r--drivers/message/fusion/mptsas.c8
1 files changed, 4 insertions, 4 deletions
diff --git a/drivers/message/fusion/mptsas.c b/drivers/message/fusion/mptsas.c
index 76687126b573..e5e9bf3487db 100644
--- a/drivers/message/fusion/mptsas.c
+++ b/drivers/message/fusion/mptsas.c
@@ -2041,7 +2041,7 @@ static int mptsas_phy_reset(struct sas_phy *phy, int hard_reset)
2041 if (!timeleft) { 2041 if (!timeleft) {
2042 /* On timeout reset the board */ 2042 /* On timeout reset the board */
2043 mpt_free_msg_frame(ioc, mf); 2043 mpt_free_msg_frame(ioc, mf);
2044 mpt_HardResetHandler(ioc, CAN_SLEEP); 2044 mpt_Soft_Hard_ResetHandler(ioc, CAN_SLEEP);
2045 error = -ETIMEDOUT; 2045 error = -ETIMEDOUT;
2046 goto out_unlock; 2046 goto out_unlock;
2047 } 2047 }
@@ -2226,7 +2226,7 @@ static int mptsas_smp_handler(struct Scsi_Host *shost, struct sas_rphy *rphy,
2226 if (!timeleft) { 2226 if (!timeleft) {
2227 printk(MYIOC_s_ERR_FMT "%s: smp timeout!\n", ioc->name, __func__); 2227 printk(MYIOC_s_ERR_FMT "%s: smp timeout!\n", ioc->name, __func__);
2228 /* On timeout reset the board */ 2228 /* On timeout reset the board */
2229 mpt_HardResetHandler(ioc, CAN_SLEEP); 2229 mpt_Soft_Hard_ResetHandler(ioc, CAN_SLEEP);
2230 ret = -ETIMEDOUT; 2230 ret = -ETIMEDOUT;
2231 goto unmap; 2231 goto unmap;
2232 } 2232 }
@@ -2833,7 +2833,7 @@ mptsas_exp_repmanufacture_info(MPT_ADAPTER *ioc,
2833 if (ioc->sas_mgmt.status & MPT_MGMT_STATUS_DID_IOCRESET) 2833 if (ioc->sas_mgmt.status & MPT_MGMT_STATUS_DID_IOCRESET)
2834 goto out_free; 2834 goto out_free;
2835 if (!timeleft) 2835 if (!timeleft)
2836 mpt_HardResetHandler(ioc, CAN_SLEEP); 2836 mpt_Soft_Hard_ResetHandler(ioc, CAN_SLEEP);
2837 goto out_free; 2837 goto out_free;
2838 } 2838 }
2839 2839
@@ -4717,7 +4717,7 @@ mptsas_broadcast_primative_work(struct fw_event_work *fw_event)
4717 if (issue_reset) { 4717 if (issue_reset) {
4718 printk(MYIOC_s_WARN_FMT "Issuing Reset from %s!!\n", 4718 printk(MYIOC_s_WARN_FMT "Issuing Reset from %s!!\n",
4719 ioc->name, __func__); 4719 ioc->name, __func__);
4720 mpt_HardResetHandler(ioc, CAN_SLEEP); 4720 mpt_Soft_Hard_ResetHandler(ioc, CAN_SLEEP);
4721 } 4721 }
4722 mptsas_free_fw_event(ioc, fw_event); 4722 mptsas_free_fw_event(ioc, fw_event);
4723} 4723}