diff options
Diffstat (limited to 'drivers/scsi/mpt2sas/mpt2sas_scsih.c')
-rw-r--r-- | drivers/scsi/mpt2sas/mpt2sas_scsih.c | 24 |
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) | |||
2381 | int | 2380 | int |
2382 | mpt2sas_scsih_issue_tm(struct MPT2SAS_ADAPTER *ioc, u16 handle, uint channel, | 2381 | mpt2sas_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 | */ |
3955 | static int | 3952 | static 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 | ||
4086 | static 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 : " |