aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/scsi/mpt2sas/mpt2sas_scsih.c
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/scsi/mpt2sas/mpt2sas_scsih.c')
-rw-r--r--drivers/scsi/mpt2sas/mpt2sas_scsih.c24
1 files changed, 9 insertions, 15 deletions
diff --git a/drivers/scsi/mpt2sas/mpt2sas_scsih.c b/drivers/scsi/mpt2sas/mpt2sas_scsih.c
index 6fd7d40b2c4d..5055f925d2cd 100644
--- a/drivers/scsi/mpt2sas/mpt2sas_scsih.c
+++ b/drivers/scsi/mpt2sas/mpt2sas_scsih.c
@@ -2368,7 +2368,6 @@ mpt2sas_scsih_clear_tm_flag(struct MPT2SAS_ADAPTER *ioc, u16 handle)
2368 * @type: MPI2_SCSITASKMGMT_TASKTYPE__XXX (defined in mpi2_init.h) 2368 * @type: MPI2_SCSITASKMGMT_TASKTYPE__XXX (defined in mpi2_init.h)
2369 * @smid_task: smid assigned to the task 2369 * @smid_task: smid assigned to the task
2370 * @timeout: timeout in seconds 2370 * @timeout: timeout in seconds
2371 * @serial_number: the serial_number from scmd
2372 * @m_type: TM_MUTEX_ON or TM_MUTEX_OFF 2371 * @m_type: TM_MUTEX_ON or TM_MUTEX_OFF
2373 * Context: user 2372 * Context: user
2374 * 2373 *
@@ -2381,7 +2380,7 @@ mpt2sas_scsih_clear_tm_flag(struct MPT2SAS_ADAPTER *ioc, u16 handle)
2381int 2380int
2382mpt2sas_scsih_issue_tm(struct MPT2SAS_ADAPTER *ioc, u16 handle, uint channel, 2381mpt2sas_scsih_issue_tm(struct MPT2SAS_ADAPTER *ioc, u16 handle, uint channel,
2383 uint id, uint lun, u8 type, u16 smid_task, ulong timeout, 2382 uint id, uint lun, u8 type, u16 smid_task, ulong timeout,
2384 unsigned long serial_number, enum mutex_type m_type) 2383 enum mutex_type m_type)
2385{ 2384{
2386 Mpi2SCSITaskManagementRequest_t *mpi_request; 2385 Mpi2SCSITaskManagementRequest_t *mpi_request;
2387 Mpi2SCSITaskManagementReply_t *mpi_reply; 2386 Mpi2SCSITaskManagementReply_t *mpi_reply;
@@ -2634,8 +2633,7 @@ _scsih_abort(struct scsi_cmnd *scmd)
2634 handle = sas_device_priv_data->sas_target->handle; 2633 handle = sas_device_priv_data->sas_target->handle;
2635 r = mpt2sas_scsih_issue_tm(ioc, handle, scmd->device->channel, 2634 r = mpt2sas_scsih_issue_tm(ioc, handle, scmd->device->channel,
2636 scmd->device->id, scmd->device->lun, 2635 scmd->device->id, scmd->device->lun,
2637 MPI2_SCSITASKMGMT_TASKTYPE_ABORT_TASK, smid, 30, 2636 MPI2_SCSITASKMGMT_TASKTYPE_ABORT_TASK, smid, 30, TM_MUTEX_ON);
2638 scmd->serial_number, TM_MUTEX_ON);
2639 2637
2640 out: 2638 out:
2641 sdev_printk(KERN_INFO, scmd->device, "task abort: %s scmd(%p)\n", 2639 sdev_printk(KERN_INFO, scmd->device, "task abort: %s scmd(%p)\n",
@@ -2696,8 +2694,7 @@ _scsih_dev_reset(struct scsi_cmnd *scmd)
2696 2694
2697 r = mpt2sas_scsih_issue_tm(ioc, handle, scmd->device->channel, 2695 r = mpt2sas_scsih_issue_tm(ioc, handle, scmd->device->channel,
2698 scmd->device->id, scmd->device->lun, 2696 scmd->device->id, scmd->device->lun,
2699 MPI2_SCSITASKMGMT_TASKTYPE_LOGICAL_UNIT_RESET, 0, 30, 0, 2697 MPI2_SCSITASKMGMT_TASKTYPE_LOGICAL_UNIT_RESET, 0, 30, TM_MUTEX_ON);
2700 TM_MUTEX_ON);
2701 2698
2702 out: 2699 out:
2703 sdev_printk(KERN_INFO, scmd->device, "device reset: %s scmd(%p)\n", 2700 sdev_printk(KERN_INFO, scmd->device, "device reset: %s scmd(%p)\n",
@@ -2757,7 +2754,7 @@ _scsih_target_reset(struct scsi_cmnd *scmd)
2757 2754
2758 r = mpt2sas_scsih_issue_tm(ioc, handle, scmd->device->channel, 2755 r = mpt2sas_scsih_issue_tm(ioc, handle, scmd->device->channel,
2759 scmd->device->id, 0, MPI2_SCSITASKMGMT_TASKTYPE_TARGET_RESET, 0, 2756 scmd->device->id, 0, MPI2_SCSITASKMGMT_TASKTYPE_TARGET_RESET, 0,
2760 30, 0, TM_MUTEX_ON); 2757 30, TM_MUTEX_ON);
2761 2758
2762 out: 2759 out:
2763 starget_printk(KERN_INFO, starget, "target reset: %s scmd(%p)\n", 2760 starget_printk(KERN_INFO, starget, "target reset: %s scmd(%p)\n",
@@ -3953,9 +3950,9 @@ _scsih_setup_direct_io(struct MPT2SAS_ADAPTER *ioc, struct scsi_cmnd *scmd,
3953 * SCSI_MLQUEUE_HOST_BUSY if the entire host queue is full 3950 * SCSI_MLQUEUE_HOST_BUSY if the entire host queue is full
3954 */ 3951 */
3955static int 3952static int
3956_scsih_qcmd_lck(struct scsi_cmnd *scmd, void (*done)(struct scsi_cmnd *)) 3953_scsih_qcmd(struct Scsi_Host *shost, struct scsi_cmnd *scmd)
3957{ 3954{
3958 struct MPT2SAS_ADAPTER *ioc = shost_priv(scmd->device->host); 3955 struct MPT2SAS_ADAPTER *ioc = shost_priv(shost);
3959 struct MPT2SAS_DEVICE *sas_device_priv_data; 3956 struct MPT2SAS_DEVICE *sas_device_priv_data;
3960 struct MPT2SAS_TARGET *sas_target_priv_data; 3957 struct MPT2SAS_TARGET *sas_target_priv_data;
3961 struct _raid_device *raid_device; 3958 struct _raid_device *raid_device;
@@ -3963,7 +3960,6 @@ _scsih_qcmd_lck(struct scsi_cmnd *scmd, void (*done)(struct scsi_cmnd *))
3963 u32 mpi_control; 3960 u32 mpi_control;
3964 u16 smid; 3961 u16 smid;
3965 3962
3966 scmd->scsi_done = done;
3967 sas_device_priv_data = scmd->device->hostdata; 3963 sas_device_priv_data = scmd->device->hostdata;
3968 if (!sas_device_priv_data || !sas_device_priv_data->sas_target) { 3964 if (!sas_device_priv_data || !sas_device_priv_data->sas_target) {
3969 scmd->result = DID_NO_CONNECT << 16; 3965 scmd->result = DID_NO_CONNECT << 16;
@@ -4039,7 +4035,7 @@ _scsih_qcmd_lck(struct scsi_cmnd *scmd, void (*done)(struct scsi_cmnd *))
4039 MPT_TARGET_FLAGS_RAID_COMPONENT) 4035 MPT_TARGET_FLAGS_RAID_COMPONENT)
4040 mpi_request->Function = MPI2_FUNCTION_RAID_SCSI_IO_PASSTHROUGH; 4036 mpi_request->Function = MPI2_FUNCTION_RAID_SCSI_IO_PASSTHROUGH;
4041 else 4037 else
4042 mpi_request->Function = MPI2_FUNCTION_SCSI_IO_REQUEST; 4038 mpi_request->Function = MPI2_FUNCTION_SCSI_IO_REQUEST;
4043 mpi_request->DevHandle = 4039 mpi_request->DevHandle =
4044 cpu_to_le16(sas_device_priv_data->sas_target->handle); 4040 cpu_to_le16(sas_device_priv_data->sas_target->handle);
4045 mpi_request->DataLength = cpu_to_le32(scsi_bufflen(scmd)); 4041 mpi_request->DataLength = cpu_to_le32(scsi_bufflen(scmd));
@@ -4083,8 +4079,6 @@ _scsih_qcmd_lck(struct scsi_cmnd *scmd, void (*done)(struct scsi_cmnd *))
4083 return SCSI_MLQUEUE_HOST_BUSY; 4079 return SCSI_MLQUEUE_HOST_BUSY;
4084} 4080}
4085 4081
4086static DEF_SCSI_QCMD(_scsih_qcmd)
4087
4088/** 4082/**
4089 * _scsih_normalize_sense - normalize descriptor and fixed format sense data 4083 * _scsih_normalize_sense - normalize descriptor and fixed format sense data
4090 * @sense_buffer: sense data returned by target 4084 * @sense_buffer: sense data returned by target
@@ -5880,7 +5874,7 @@ broadcast_aen_retry:
5880 5874
5881 spin_unlock_irqrestore(&ioc->scsi_lookup_lock, flags); 5875 spin_unlock_irqrestore(&ioc->scsi_lookup_lock, flags);
5882 r = mpt2sas_scsih_issue_tm(ioc, handle, 0, 0, lun, 5876 r = mpt2sas_scsih_issue_tm(ioc, handle, 0, 0, lun,
5883 MPI2_SCSITASKMGMT_TASKTYPE_QUERY_TASK, smid, 30, 0, 5877 MPI2_SCSITASKMGMT_TASKTYPE_QUERY_TASK, smid, 30,
5884 TM_MUTEX_OFF); 5878 TM_MUTEX_OFF);
5885 if (r == FAILED) { 5879 if (r == FAILED) {
5886 sdev_printk(KERN_WARNING, sdev, 5880 sdev_printk(KERN_WARNING, sdev,
@@ -5922,7 +5916,7 @@ broadcast_aen_retry:
5922 5916
5923 r = mpt2sas_scsih_issue_tm(ioc, handle, sdev->channel, sdev->id, 5917 r = mpt2sas_scsih_issue_tm(ioc, handle, sdev->channel, sdev->id,
5924 sdev->lun, MPI2_SCSITASKMGMT_TASKTYPE_ABORT_TASK, smid, 30, 5918 sdev->lun, MPI2_SCSITASKMGMT_TASKTYPE_ABORT_TASK, smid, 30,
5925 scmd->serial_number, TM_MUTEX_OFF); 5919 TM_MUTEX_OFF);
5926 if (r == FAILED) { 5920 if (r == FAILED) {
5927 sdev_printk(KERN_WARNING, sdev, 5921 sdev_printk(KERN_WARNING, sdev,
5928 "mpt2sas_scsih_issue_tm: ABORT_TASK: FAILED : " 5922 "mpt2sas_scsih_issue_tm: ABORT_TASK: FAILED : "