aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/scsi/mpt2sas/mpt2sas_ctl.c
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/scsi/mpt2sas/mpt2sas_ctl.c')
-rw-r--r--drivers/scsi/mpt2sas/mpt2sas_ctl.c13
1 files changed, 7 insertions, 6 deletions
diff --git a/drivers/scsi/mpt2sas/mpt2sas_ctl.c b/drivers/scsi/mpt2sas/mpt2sas_ctl.c
index ae55a912baf4..9860e7edd442 100644
--- a/drivers/scsi/mpt2sas/mpt2sas_ctl.c
+++ b/drivers/scsi/mpt2sas/mpt2sas_ctl.c
@@ -753,6 +753,10 @@ _ctl_do_mpt_command(struct MPT2SAS_ADAPTER *ioc,
753 Mpi2SCSITaskManagementRequest_t *tm_request = 753 Mpi2SCSITaskManagementRequest_t *tm_request =
754 (Mpi2SCSITaskManagementRequest_t *)mpi_request; 754 (Mpi2SCSITaskManagementRequest_t *)mpi_request;
755 755
756 dtmprintk(ioc, printk(MPT2SAS_DEBUG_FMT "TASK_MGMT: "
757 "handle(0x%04x), task_type(0x%02x)\n", ioc->name,
758 le16_to_cpu(tm_request->DevHandle), tm_request->TaskType));
759
756 if (tm_request->TaskType == 760 if (tm_request->TaskType ==
757 MPI2_SCSITASKMGMT_TASKTYPE_ABORT_TASK || 761 MPI2_SCSITASKMGMT_TASKTYPE_ABORT_TASK ||
758 tm_request->TaskType == 762 tm_request->TaskType ==
@@ -763,7 +767,6 @@ _ctl_do_mpt_command(struct MPT2SAS_ADAPTER *ioc,
763 } 767 }
764 } 768 }
765 769
766 mutex_lock(&ioc->tm_cmds.mutex);
767 mpt2sas_scsih_set_tm_flag(ioc, le16_to_cpu( 770 mpt2sas_scsih_set_tm_flag(ioc, le16_to_cpu(
768 tm_request->DevHandle)); 771 tm_request->DevHandle));
769 mpt2sas_base_put_smid_hi_priority(ioc, smid); 772 mpt2sas_base_put_smid_hi_priority(ioc, smid);
@@ -819,7 +822,6 @@ _ctl_do_mpt_command(struct MPT2SAS_ADAPTER *ioc,
819 if (mpi_request->Function == MPI2_FUNCTION_SCSI_TASK_MGMT) { 822 if (mpi_request->Function == MPI2_FUNCTION_SCSI_TASK_MGMT) {
820 Mpi2SCSITaskManagementRequest_t *tm_request = 823 Mpi2SCSITaskManagementRequest_t *tm_request =
821 (Mpi2SCSITaskManagementRequest_t *)mpi_request; 824 (Mpi2SCSITaskManagementRequest_t *)mpi_request;
822 mutex_unlock(&ioc->tm_cmds.mutex);
823 mpt2sas_scsih_clear_tm_flag(ioc, le16_to_cpu( 825 mpt2sas_scsih_clear_tm_flag(ioc, le16_to_cpu(
824 tm_request->DevHandle)); 826 tm_request->DevHandle));
825 } else if ((mpi_request->Function == MPI2_FUNCTION_SMP_PASSTHROUGH || 827 } else if ((mpi_request->Function == MPI2_FUNCTION_SMP_PASSTHROUGH ||
@@ -900,12 +902,11 @@ _ctl_do_mpt_command(struct MPT2SAS_ADAPTER *ioc,
900 "= (0x%04x)\n", ioc->name, 902 "= (0x%04x)\n", ioc->name,
901 le16_to_cpu(mpi_request->FunctionDependent1)); 903 le16_to_cpu(mpi_request->FunctionDependent1));
902 mpt2sas_halt_firmware(ioc); 904 mpt2sas_halt_firmware(ioc);
903 mutex_lock(&ioc->tm_cmds.mutex);
904 mpt2sas_scsih_issue_tm(ioc, 905 mpt2sas_scsih_issue_tm(ioc,
905 le16_to_cpu(mpi_request->FunctionDependent1), 0, 906 le16_to_cpu(mpi_request->FunctionDependent1), 0, 0,
906 MPI2_SCSITASKMGMT_TASKTYPE_TARGET_RESET, 0, 10); 907 0, MPI2_SCSITASKMGMT_TASKTYPE_TARGET_RESET, 0, 10,
908 NULL);
907 ioc->tm_cmds.status = MPT2_CMD_NOT_USED; 909 ioc->tm_cmds.status = MPT2_CMD_NOT_USED;
908 mutex_unlock(&ioc->tm_cmds.mutex);
909 } else 910 } else
910 mpt2sas_base_hard_reset_handler(ioc, CAN_SLEEP, 911 mpt2sas_base_hard_reset_handler(ioc, CAN_SLEEP,
911 FORCE_BIG_HAMMER); 912 FORCE_BIG_HAMMER);