aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/scsi/mpt2sas/mpt2sas_ctl.c
diff options
context:
space:
mode:
authornagalakshmi.nandigama@lsi.com <nagalakshmi.nandigama@lsi.com>2011-11-30 21:13:58 -0500
committerJames Bottomley <JBottomley@Parallels.com>2011-12-15 01:57:32 -0500
commitf01690d31d905d46aaf2df8021a33231a71cd744 (patch)
tree05a0250988347c5a861cfbd10ff7a7129dde1080 /drivers/scsi/mpt2sas/mpt2sas_ctl.c
parent23edb6e71696a5da9c5f3987d22221e12370dbce (diff)
[SCSI] mpt2sas: Rearrange the the code so that the completion queues are initialized prior to sending the request to controller firmware
Signed-off-by: Nagalakshmi Nandigama <nagalakshmi.nandigama@lsi.com> Signed-off-by: James Bottomley <JBottomley@Parallels.com>
Diffstat (limited to 'drivers/scsi/mpt2sas/mpt2sas_ctl.c')
-rw-r--r--drivers/scsi/mpt2sas/mpt2sas_ctl.c8
1 files changed, 4 insertions, 4 deletions
diff --git a/drivers/scsi/mpt2sas/mpt2sas_ctl.c b/drivers/scsi/mpt2sas/mpt2sas_ctl.c
index aabcb911706e..7fceb899029e 100644
--- a/drivers/scsi/mpt2sas/mpt2sas_ctl.c
+++ b/drivers/scsi/mpt2sas/mpt2sas_ctl.c
@@ -818,6 +818,7 @@ _ctl_do_mpt_command(struct MPT2SAS_ADAPTER *ioc,
818 _ctl_display_some_debug(ioc, smid, "ctl_request", NULL); 818 _ctl_display_some_debug(ioc, smid, "ctl_request", NULL);
819#endif 819#endif
820 820
821 init_completion(&ioc->ctl_cmds.done);
821 switch (mpi_request->Function) { 822 switch (mpi_request->Function) {
822 case MPI2_FUNCTION_SCSI_IO_REQUEST: 823 case MPI2_FUNCTION_SCSI_IO_REQUEST:
823 case MPI2_FUNCTION_RAID_SCSI_IO_PASSTHROUGH: 824 case MPI2_FUNCTION_RAID_SCSI_IO_PASSTHROUGH:
@@ -903,7 +904,6 @@ _ctl_do_mpt_command(struct MPT2SAS_ADAPTER *ioc,
903 timeout = MPT2_IOCTL_DEFAULT_TIMEOUT; 904 timeout = MPT2_IOCTL_DEFAULT_TIMEOUT;
904 else 905 else
905 timeout = karg.timeout; 906 timeout = karg.timeout;
906 init_completion(&ioc->ctl_cmds.done);
907 timeleft = wait_for_completion_timeout(&ioc->ctl_cmds.done, 907 timeleft = wait_for_completion_timeout(&ioc->ctl_cmds.done,
908 timeout*HZ); 908 timeout*HZ);
909 if (mpi_request->Function == MPI2_FUNCTION_SCSI_TASK_MGMT) { 909 if (mpi_request->Function == MPI2_FUNCTION_SCSI_TASK_MGMT) {
@@ -1477,8 +1477,8 @@ _ctl_diag_register_2(struct MPT2SAS_ADAPTER *ioc,
1477 mpi_request->ProductSpecific[i] = 1477 mpi_request->ProductSpecific[i] =
1478 cpu_to_le32(ioc->product_specific[buffer_type][i]); 1478 cpu_to_le32(ioc->product_specific[buffer_type][i]);
1479 1479
1480 mpt2sas_base_put_smid_default(ioc, smid);
1481 init_completion(&ioc->ctl_cmds.done); 1480 init_completion(&ioc->ctl_cmds.done);
1481 mpt2sas_base_put_smid_default(ioc, smid);
1482 timeleft = wait_for_completion_timeout(&ioc->ctl_cmds.done, 1482 timeleft = wait_for_completion_timeout(&ioc->ctl_cmds.done,
1483 MPT2_IOCTL_DEFAULT_TIMEOUT*HZ); 1483 MPT2_IOCTL_DEFAULT_TIMEOUT*HZ);
1484 1484
@@ -1821,8 +1821,8 @@ _ctl_send_release(struct MPT2SAS_ADAPTER *ioc, u8 buffer_type, u8 *issue_reset)
1821 mpi_request->VF_ID = 0; /* TODO */ 1821 mpi_request->VF_ID = 0; /* TODO */
1822 mpi_request->VP_ID = 0; 1822 mpi_request->VP_ID = 0;
1823 1823
1824 mpt2sas_base_put_smid_default(ioc, smid);
1825 init_completion(&ioc->ctl_cmds.done); 1824 init_completion(&ioc->ctl_cmds.done);
1825 mpt2sas_base_put_smid_default(ioc, smid);
1826 timeleft = wait_for_completion_timeout(&ioc->ctl_cmds.done, 1826 timeleft = wait_for_completion_timeout(&ioc->ctl_cmds.done,
1827 MPT2_IOCTL_DEFAULT_TIMEOUT*HZ); 1827 MPT2_IOCTL_DEFAULT_TIMEOUT*HZ);
1828 1828
@@ -2095,8 +2095,8 @@ _ctl_diag_read_buffer(void __user *arg, enum block_state state)
2095 mpi_request->VF_ID = 0; /* TODO */ 2095 mpi_request->VF_ID = 0; /* TODO */
2096 mpi_request->VP_ID = 0; 2096 mpi_request->VP_ID = 0;
2097 2097
2098 mpt2sas_base_put_smid_default(ioc, smid);
2099 init_completion(&ioc->ctl_cmds.done); 2098 init_completion(&ioc->ctl_cmds.done);
2099 mpt2sas_base_put_smid_default(ioc, smid);
2100 timeleft = wait_for_completion_timeout(&ioc->ctl_cmds.done, 2100 timeleft = wait_for_completion_timeout(&ioc->ctl_cmds.done,
2101 MPT2_IOCTL_DEFAULT_TIMEOUT*HZ); 2101 MPT2_IOCTL_DEFAULT_TIMEOUT*HZ);
2102 2102