diff options
Diffstat (limited to 'drivers/message/fusion/mptctl.c')
-rw-r--r-- | drivers/message/fusion/mptctl.c | 14 |
1 files changed, 11 insertions, 3 deletions
diff --git a/drivers/message/fusion/mptctl.c b/drivers/message/fusion/mptctl.c index f06b29193b4e..9bd89cebb5a9 100644 --- a/drivers/message/fusion/mptctl.c +++ b/drivers/message/fusion/mptctl.c | |||
@@ -261,10 +261,16 @@ mptctl_reply(MPT_ADAPTER *ioc, MPT_FRAME_HDR *req, MPT_FRAME_HDR *reply) | |||
261 | /* We are done, issue wake up | 261 | /* We are done, issue wake up |
262 | */ | 262 | */ |
263 | if (ioc->ioctl_cmds.status & MPT_MGMT_STATUS_PENDING) { | 263 | if (ioc->ioctl_cmds.status & MPT_MGMT_STATUS_PENDING) { |
264 | if (req->u.hdr.Function == MPI_FUNCTION_SCSI_TASK_MGMT) | 264 | if (req->u.hdr.Function == MPI_FUNCTION_SCSI_TASK_MGMT) { |
265 | mpt_clear_taskmgmt_in_progress_flag(ioc); | 265 | mpt_clear_taskmgmt_in_progress_flag(ioc); |
266 | ioc->ioctl_cmds.status &= ~MPT_MGMT_STATUS_PENDING; | 266 | ioc->ioctl_cmds.status &= ~MPT_MGMT_STATUS_PENDING; |
267 | complete(&ioc->ioctl_cmds.done); | 267 | complete(&ioc->ioctl_cmds.done); |
268 | if (ioc->bus_type == SAS) | ||
269 | ioc->schedule_target_reset(ioc); | ||
270 | } else { | ||
271 | ioc->ioctl_cmds.status &= ~MPT_MGMT_STATUS_PENDING; | ||
272 | complete(&ioc->ioctl_cmds.done); | ||
273 | } | ||
268 | } | 274 | } |
269 | 275 | ||
270 | out_continuation: | 276 | out_continuation: |
@@ -298,6 +304,8 @@ mptctl_taskmgmt_reply(MPT_ADAPTER *ioc, MPT_FRAME_HDR *mf, MPT_FRAME_HDR *mr) | |||
298 | mpt_clear_taskmgmt_in_progress_flag(ioc); | 304 | mpt_clear_taskmgmt_in_progress_flag(ioc); |
299 | ioc->taskmgmt_cmds.status &= ~MPT_MGMT_STATUS_PENDING; | 305 | ioc->taskmgmt_cmds.status &= ~MPT_MGMT_STATUS_PENDING; |
300 | complete(&ioc->taskmgmt_cmds.done); | 306 | complete(&ioc->taskmgmt_cmds.done); |
307 | if (ioc->bus_type == SAS) | ||
308 | ioc->schedule_target_reset(ioc); | ||
301 | return 1; | 309 | return 1; |
302 | } | 310 | } |
303 | return 0; | 311 | return 0; |