diff options
Diffstat (limited to 'drivers/scsi/mpt3sas/mpt3sas_scsih.c')
| -rw-r--r-- | drivers/scsi/mpt3sas/mpt3sas_scsih.c | 24 |
1 files changed, 9 insertions, 15 deletions
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 : " |
