aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/scsi/mpt3sas
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/scsi/mpt3sas')
-rw-r--r--drivers/scsi/mpt3sas/mpt3sas_base.h2
-rw-r--r--drivers/scsi/mpt3sas/mpt3sas_ctl.c2
-rw-r--r--drivers/scsi/mpt3sas/mpt3sas_scsih.c24
3 files changed, 11 insertions, 17 deletions
diff --git a/drivers/scsi/mpt3sas/mpt3sas_base.h b/drivers/scsi/mpt3sas/mpt3sas_base.h
index 0ebf5d913c80..9b90a6fef706 100644
--- a/drivers/scsi/mpt3sas/mpt3sas_base.h
+++ b/drivers/scsi/mpt3sas/mpt3sas_base.h
@@ -993,7 +993,7 @@ void mpt3sas_scsih_reset_handler(struct MPT3SAS_ADAPTER *ioc, int reset_phase);
993 993
994int mpt3sas_scsih_issue_tm(struct MPT3SAS_ADAPTER *ioc, u16 handle, 994int mpt3sas_scsih_issue_tm(struct MPT3SAS_ADAPTER *ioc, u16 handle,
995 uint channel, uint id, uint lun, u8 type, u16 smid_task, 995 uint channel, uint id, uint lun, u8 type, u16 smid_task,
996 ulong timeout, unsigned long serial_number, enum mutex_type m_type); 996 ulong timeout, enum mutex_type m_type);
997void mpt3sas_scsih_set_tm_flag(struct MPT3SAS_ADAPTER *ioc, u16 handle); 997void mpt3sas_scsih_set_tm_flag(struct MPT3SAS_ADAPTER *ioc, u16 handle);
998void mpt3sas_scsih_clear_tm_flag(struct MPT3SAS_ADAPTER *ioc, u16 handle); 998void mpt3sas_scsih_clear_tm_flag(struct MPT3SAS_ADAPTER *ioc, u16 handle);
999void mpt3sas_expander_remove(struct MPT3SAS_ADAPTER *ioc, u64 sas_address); 999void mpt3sas_expander_remove(struct MPT3SAS_ADAPTER *ioc, u64 sas_address);
diff --git a/drivers/scsi/mpt3sas/mpt3sas_ctl.c b/drivers/scsi/mpt3sas/mpt3sas_ctl.c
index 9b89de14a0a3..ba9cbe598a91 100644
--- a/drivers/scsi/mpt3sas/mpt3sas_ctl.c
+++ b/drivers/scsi/mpt3sas/mpt3sas_ctl.c
@@ -980,7 +980,7 @@ _ctl_do_mpt_command(struct MPT3SAS_ADAPTER *ioc, struct mpt3_ioctl_command karg,
980 mpt3sas_scsih_issue_tm(ioc, 980 mpt3sas_scsih_issue_tm(ioc,
981 le16_to_cpu(mpi_request->FunctionDependent1), 0, 0, 981 le16_to_cpu(mpi_request->FunctionDependent1), 0, 0,
982 0, MPI2_SCSITASKMGMT_TASKTYPE_TARGET_RESET, 0, 30, 982 0, MPI2_SCSITASKMGMT_TASKTYPE_TARGET_RESET, 0, 30,
983 0, TM_MUTEX_ON); 983 TM_MUTEX_ON);
984 } else 984 } else
985 mpt3sas_base_hard_reset_handler(ioc, CAN_SLEEP, 985 mpt3sas_base_hard_reset_handler(ioc, CAN_SLEEP,
986 FORCE_BIG_HAMMER); 986 FORCE_BIG_HAMMER);
diff --git a/drivers/scsi/mpt3sas/mpt3sas_scsih.c b/drivers/scsi/mpt3sas/mpt3sas_scsih.c
index a961fe11b527..18e713db1d32 100644
--- a/drivers/scsi/mpt3sas/mpt3sas_scsih.c
+++ b/drivers/scsi/mpt3sas/mpt3sas_scsih.c
@@ -2029,7 +2029,6 @@ mpt3sas_scsih_clear_tm_flag(struct MPT3SAS_ADAPTER *ioc, u16 handle)
2029 * @type: MPI2_SCSITASKMGMT_TASKTYPE__XXX (defined in mpi2_init.h) 2029 * @type: MPI2_SCSITASKMGMT_TASKTYPE__XXX (defined in mpi2_init.h)
2030 * @smid_task: smid assigned to the task 2030 * @smid_task: smid assigned to the task
2031 * @timeout: timeout in seconds 2031 * @timeout: timeout in seconds
2032 * @serial_number: the serial_number from scmd
2033 * @m_type: TM_MUTEX_ON or TM_MUTEX_OFF 2032 * @m_type: TM_MUTEX_ON or TM_MUTEX_OFF
2034 * Context: user 2033 * Context: user
2035 * 2034 *
@@ -2042,7 +2041,7 @@ mpt3sas_scsih_clear_tm_flag(struct MPT3SAS_ADAPTER *ioc, u16 handle)
2042int 2041int
2043mpt3sas_scsih_issue_tm(struct MPT3SAS_ADAPTER *ioc, u16 handle, uint channel, 2042mpt3sas_scsih_issue_tm(struct MPT3SAS_ADAPTER *ioc, u16 handle, uint channel,
2044 uint id, uint lun, u8 type, u16 smid_task, ulong timeout, 2043 uint id, uint lun, u8 type, u16 smid_task, ulong timeout,
2045 unsigned long serial_number, enum mutex_type m_type) 2044 enum mutex_type m_type)
2046{ 2045{
2047 Mpi2SCSITaskManagementRequest_t *mpi_request; 2046 Mpi2SCSITaskManagementRequest_t *mpi_request;
2048 Mpi2SCSITaskManagementReply_t *mpi_reply; 2047 Mpi2SCSITaskManagementReply_t *mpi_reply;
@@ -2293,8 +2292,7 @@ _scsih_abort(struct scsi_cmnd *scmd)
2293 handle = sas_device_priv_data->sas_target->handle; 2292 handle = sas_device_priv_data->sas_target->handle;
2294 r = mpt3sas_scsih_issue_tm(ioc, handle, scmd->device->channel, 2293 r = mpt3sas_scsih_issue_tm(ioc, handle, scmd->device->channel,
2295 scmd->device->id, scmd->device->lun, 2294 scmd->device->id, scmd->device->lun,
2296 MPI2_SCSITASKMGMT_TASKTYPE_ABORT_TASK, smid, 30, 2295 MPI2_SCSITASKMGMT_TASKTYPE_ABORT_TASK, smid, 30, TM_MUTEX_ON);
2297 scmd->serial_number, TM_MUTEX_ON);
2298 2296
2299 out: 2297 out:
2300 sdev_printk(KERN_INFO, scmd->device, "task abort: %s scmd(%p)\n", 2298 sdev_printk(KERN_INFO, scmd->device, "task abort: %s scmd(%p)\n",
@@ -2353,8 +2351,7 @@ _scsih_dev_reset(struct scsi_cmnd *scmd)
2353 2351
2354 r = mpt3sas_scsih_issue_tm(ioc, handle, scmd->device->channel, 2352 r = mpt3sas_scsih_issue_tm(ioc, handle, scmd->device->channel,
2355 scmd->device->id, scmd->device->lun, 2353 scmd->device->id, scmd->device->lun,
2356 MPI2_SCSITASKMGMT_TASKTYPE_LOGICAL_UNIT_RESET, 0, 30, 0, 2354 MPI2_SCSITASKMGMT_TASKTYPE_LOGICAL_UNIT_RESET, 0, 30, TM_MUTEX_ON);
2357 TM_MUTEX_ON);
2358 2355
2359 out: 2356 out:
2360 sdev_printk(KERN_INFO, scmd->device, "device reset: %s scmd(%p)\n", 2357 sdev_printk(KERN_INFO, scmd->device, "device reset: %s scmd(%p)\n",
@@ -2414,7 +2411,7 @@ _scsih_target_reset(struct scsi_cmnd *scmd)
2414 2411
2415 r = mpt3sas_scsih_issue_tm(ioc, handle, scmd->device->channel, 2412 r = mpt3sas_scsih_issue_tm(ioc, handle, scmd->device->channel,
2416 scmd->device->id, 0, MPI2_SCSITASKMGMT_TASKTYPE_TARGET_RESET, 0, 2413 scmd->device->id, 0, MPI2_SCSITASKMGMT_TASKTYPE_TARGET_RESET, 0,
2417 30, 0, TM_MUTEX_ON); 2414 30, TM_MUTEX_ON);
2418 2415
2419 out: 2416 out:
2420 starget_printk(KERN_INFO, starget, "target reset: %s scmd(%p)\n", 2417 starget_printk(KERN_INFO, starget, "target reset: %s scmd(%p)\n",
@@ -3518,7 +3515,7 @@ _scsih_eedp_error_handling(struct scsi_cmnd *scmd, u16 ioc_status)
3518 3515
3519 3516
3520/** 3517/**
3521 * _scsih_qcmd_lck - main scsi request entry point 3518 * _scsih_qcmd - main scsi request entry point
3522 * @scmd: pointer to scsi command object 3519 * @scmd: pointer to scsi command object
3523 * @done: function pointer to be invoked on completion 3520 * @done: function pointer to be invoked on completion
3524 * 3521 *
@@ -3529,9 +3526,9 @@ _scsih_eedp_error_handling(struct scsi_cmnd *scmd, u16 ioc_status)
3529 * SCSI_MLQUEUE_HOST_BUSY if the entire host queue is full 3526 * SCSI_MLQUEUE_HOST_BUSY if the entire host queue is full
3530 */ 3527 */
3531static int 3528static int
3532_scsih_qcmd_lck(struct scsi_cmnd *scmd, void (*done)(struct scsi_cmnd *)) 3529_scsih_qcmd(struct Scsi_Host *shost, struct scsi_cmnd *scmd)
3533{ 3530{
3534 struct MPT3SAS_ADAPTER *ioc = shost_priv(scmd->device->host); 3531 struct MPT3SAS_ADAPTER *ioc = shost_priv(shost);
3535 struct MPT3SAS_DEVICE *sas_device_priv_data; 3532 struct MPT3SAS_DEVICE *sas_device_priv_data;
3536 struct MPT3SAS_TARGET *sas_target_priv_data; 3533 struct MPT3SAS_TARGET *sas_target_priv_data;
3537 Mpi2SCSIIORequest_t *mpi_request; 3534 Mpi2SCSIIORequest_t *mpi_request;
@@ -3544,7 +3541,6 @@ _scsih_qcmd_lck(struct scsi_cmnd *scmd, void (*done)(struct scsi_cmnd *))
3544 scsi_print_command(scmd); 3541 scsi_print_command(scmd);
3545#endif 3542#endif
3546 3543
3547 scmd->scsi_done = done;
3548 sas_device_priv_data = scmd->device->hostdata; 3544 sas_device_priv_data = scmd->device->hostdata;
3549 if (!sas_device_priv_data || !sas_device_priv_data->sas_target) { 3545 if (!sas_device_priv_data || !sas_device_priv_data->sas_target) {
3550 scmd->result = DID_NO_CONNECT << 16; 3546 scmd->result = DID_NO_CONNECT << 16;
@@ -3659,8 +3655,6 @@ _scsih_qcmd_lck(struct scsi_cmnd *scmd, void (*done)(struct scsi_cmnd *))
3659 out: 3655 out:
3660 return SCSI_MLQUEUE_HOST_BUSY; 3656 return SCSI_MLQUEUE_HOST_BUSY;
3661} 3657}
3662static DEF_SCSI_QCMD(_scsih_qcmd)
3663
3664 3658
3665/** 3659/**
3666 * _scsih_normalize_sense - normalize descriptor and fixed format sense data 3660 * _scsih_normalize_sense - normalize descriptor and fixed format sense data
@@ -5425,7 +5419,7 @@ _scsih_sas_broadcast_primitive_event(struct MPT3SAS_ADAPTER *ioc,
5425 5419
5426 spin_unlock_irqrestore(&ioc->scsi_lookup_lock, flags); 5420 spin_unlock_irqrestore(&ioc->scsi_lookup_lock, flags);
5427 r = mpt3sas_scsih_issue_tm(ioc, handle, 0, 0, lun, 5421 r = mpt3sas_scsih_issue_tm(ioc, handle, 0, 0, lun,
5428 MPI2_SCSITASKMGMT_TASKTYPE_QUERY_TASK, smid, 30, 0, 5422 MPI2_SCSITASKMGMT_TASKTYPE_QUERY_TASK, smid, 30,
5429 TM_MUTEX_OFF); 5423 TM_MUTEX_OFF);
5430 if (r == FAILED) { 5424 if (r == FAILED) {
5431 sdev_printk(KERN_WARNING, sdev, 5425 sdev_printk(KERN_WARNING, sdev,
@@ -5467,7 +5461,7 @@ _scsih_sas_broadcast_primitive_event(struct MPT3SAS_ADAPTER *ioc,
5467 5461
5468 r = mpt3sas_scsih_issue_tm(ioc, handle, sdev->channel, sdev->id, 5462 r = mpt3sas_scsih_issue_tm(ioc, handle, sdev->channel, sdev->id,
5469 sdev->lun, MPI2_SCSITASKMGMT_TASKTYPE_ABORT_TASK, smid, 30, 5463 sdev->lun, MPI2_SCSITASKMGMT_TASKTYPE_ABORT_TASK, smid, 30,
5470 scmd->serial_number, TM_MUTEX_OFF); 5464 TM_MUTEX_OFF);
5471 if (r == FAILED) { 5465 if (r == FAILED) {
5472 sdev_printk(KERN_WARNING, sdev, 5466 sdev_printk(KERN_WARNING, sdev,
5473 "mpt3sas_scsih_issue_tm: ABORT_TASK: FAILED : " 5467 "mpt3sas_scsih_issue_tm: ABORT_TASK: FAILED : "