diff options
Diffstat (limited to 'drivers/scsi/mpt3sas')
-rw-r--r-- | drivers/scsi/mpt3sas/mpt3sas_base.h | 2 | ||||
-rw-r--r-- | drivers/scsi/mpt3sas/mpt3sas_ctl.c | 2 | ||||
-rw-r--r-- | drivers/scsi/mpt3sas/mpt3sas_scsih.c | 24 |
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 | ||
994 | int mpt3sas_scsih_issue_tm(struct MPT3SAS_ADAPTER *ioc, u16 handle, | 994 | int 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); |
997 | void mpt3sas_scsih_set_tm_flag(struct MPT3SAS_ADAPTER *ioc, u16 handle); | 997 | void mpt3sas_scsih_set_tm_flag(struct MPT3SAS_ADAPTER *ioc, u16 handle); |
998 | void mpt3sas_scsih_clear_tm_flag(struct MPT3SAS_ADAPTER *ioc, u16 handle); | 998 | void mpt3sas_scsih_clear_tm_flag(struct MPT3SAS_ADAPTER *ioc, u16 handle); |
999 | void mpt3sas_expander_remove(struct MPT3SAS_ADAPTER *ioc, u64 sas_address); | 999 | void 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) | |||
2042 | int | 2041 | int |
2043 | mpt3sas_scsih_issue_tm(struct MPT3SAS_ADAPTER *ioc, u16 handle, uint channel, | 2042 | mpt3sas_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 | */ |
3531 | static int | 3528 | static 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 | } |
3662 | static 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 : " |