Lines Matching refs:scmd
1695 struct scsi_cmnd *scmd; in _scsih_scsi_lookup_find_by_target() local
1699 scmd = mpt3sas_scsih_scsi_lookup_get(ioc, smid); in _scsih_scsi_lookup_find_by_target()
1700 if (!scmd) in _scsih_scsi_lookup_find_by_target()
1702 if (scmd->device->id == id && in _scsih_scsi_lookup_find_by_target()
1703 scmd->device->channel == channel) in _scsih_scsi_lookup_find_by_target()
1725 struct scsi_cmnd *scmd; in _scsih_scsi_lookup_find_by_lun() local
1729 scmd = mpt3sas_scsih_scsi_lookup_get(ioc, smid); in _scsih_scsi_lookup_find_by_lun()
1730 if (!scmd) in _scsih_scsi_lookup_find_by_lun()
1732 if (scmd->device->id == id && in _scsih_scsi_lookup_find_by_lun()
1733 scmd->device->channel == channel && in _scsih_scsi_lookup_find_by_lun()
1734 scmd->device->lun == lun) in _scsih_scsi_lookup_find_by_lun()
1751 struct scsi_cmnd *scmd = NULL; in mpt3sas_scsih_scsi_lookup_get() local
1770 return scmd; in mpt3sas_scsih_scsi_lookup_get()
1772 scmd = scsi_host_find_tag(ioc->shost, unique_tag); in mpt3sas_scsih_scsi_lookup_get()
1773 if (scmd) { in mpt3sas_scsih_scsi_lookup_get()
1774 st = scsi_cmd_priv(scmd); in mpt3sas_scsih_scsi_lookup_get()
1776 scmd = NULL; in mpt3sas_scsih_scsi_lookup_get()
1779 return scmd; in mpt3sas_scsih_scsi_lookup_get()
3214 _scsih_tm_display_info(struct MPT3SAS_ADAPTER *ioc, struct scsi_cmnd *scmd) in _scsih_tm_display_info() argument
3216 struct scsi_target *starget = scmd->device->sdev_target; in _scsih_tm_display_info()
3230 scsi_print_command(scmd); in _scsih_tm_display_info()
3295 scsih_abort(struct scsi_cmnd *scmd) in scsih_abort() argument
3297 struct MPT3SAS_ADAPTER *ioc = shost_priv(scmd->device->host); in scsih_abort()
3299 struct scsiio_tracker *st = scsi_cmd_priv(scmd); in scsih_abort()
3305 sdev_printk(KERN_INFO, scmd->device, "attempting task abort!" in scsih_abort()
3307 scmd, jiffies_to_msecs(jiffies - scmd->jiffies_at_alloc), in scsih_abort()
3308 (scsi_cmd_to_rq(scmd)->timeout / HZ) * 1000); in scsih_abort()
3309 _scsih_tm_display_info(ioc, scmd); in scsih_abort()
3311 sas_device_priv_data = scmd->device->hostdata; in scsih_abort()
3314 sdev_printk(KERN_INFO, scmd->device, in scsih_abort()
3315 "device been deleted! scmd(0x%p)\n", scmd); in scsih_abort()
3316 scmd->result = DID_NO_CONNECT << 16; in scsih_abort()
3317 scsi_done(scmd); in scsih_abort()
3324 sdev_printk(KERN_INFO, scmd->device, "No reference found at " in scsih_abort()
3325 "driver, assuming scmd(0x%p) might have completed\n", scmd); in scsih_abort()
3326 scmd->result = DID_RESET << 16; in scsih_abort()
3335 scmd->result = DID_RESET << 16; in scsih_abort()
3347 r = mpt3sas_scsih_issue_locked_tm(ioc, handle, scmd->device->channel, in scsih_abort()
3348 scmd->device->id, scmd->device->lun, in scsih_abort()
3355 sdev_printk(KERN_INFO, scmd->device, "task abort: %s scmd(0x%p)\n", in scsih_abort()
3356 ((r == SUCCESS) ? "SUCCESS" : "FAILED"), scmd); in scsih_abort()
3369 scsih_dev_reset(struct scsi_cmnd *scmd) in scsih_dev_reset() argument
3371 struct MPT3SAS_ADAPTER *ioc = shost_priv(scmd->device->host); in scsih_dev_reset()
3380 struct scsi_target *starget = scmd->device->sdev_target; in scsih_dev_reset()
3383 sdev_printk(KERN_INFO, scmd->device, in scsih_dev_reset()
3384 "attempting device reset! scmd(0x%p)\n", scmd); in scsih_dev_reset()
3385 _scsih_tm_display_info(ioc, scmd); in scsih_dev_reset()
3387 sas_device_priv_data = scmd->device->hostdata; in scsih_dev_reset()
3390 sdev_printk(KERN_INFO, scmd->device, in scsih_dev_reset()
3391 "device been deleted! scmd(0x%p)\n", scmd); in scsih_dev_reset()
3392 scmd->result = DID_NO_CONNECT << 16; in scsih_dev_reset()
3393 scsi_done(scmd); in scsih_dev_reset()
3410 scmd->result = DID_RESET << 16; in scsih_dev_reset()
3424 r = mpt3sas_scsih_issue_locked_tm(ioc, handle, scmd->device->channel, in scsih_dev_reset()
3425 scmd->device->id, scmd->device->lun, in scsih_dev_reset()
3429 if (r == SUCCESS && scsi_device_busy(scmd->device)) in scsih_dev_reset()
3432 sdev_printk(KERN_INFO, scmd->device, "device reset: %s scmd(0x%p)\n", in scsih_dev_reset()
3433 ((r == SUCCESS) ? "SUCCESS" : "FAILED"), scmd); in scsih_dev_reset()
3450 scsih_target_reset(struct scsi_cmnd *scmd) in scsih_target_reset() argument
3452 struct MPT3SAS_ADAPTER *ioc = shost_priv(scmd->device->host); in scsih_target_reset()
3460 struct scsi_target *starget = scmd->device->sdev_target; in scsih_target_reset()
3464 "attempting target reset! scmd(0x%p)\n", scmd); in scsih_target_reset()
3465 _scsih_tm_display_info(ioc, scmd); in scsih_target_reset()
3467 sas_device_priv_data = scmd->device->hostdata; in scsih_target_reset()
3471 "target been deleted! scmd(0x%p)\n", scmd); in scsih_target_reset()
3472 scmd->result = DID_NO_CONNECT << 16; in scsih_target_reset()
3473 scsi_done(scmd); in scsih_target_reset()
3490 scmd->result = DID_RESET << 16; in scsih_target_reset()
3503 r = mpt3sas_scsih_issue_locked_tm(ioc, handle, scmd->device->channel, in scsih_target_reset()
3504 scmd->device->id, 0, in scsih_target_reset()
3512 ((r == SUCCESS) ? "SUCCESS" : "FAILED"), scmd); in scsih_target_reset()
3529 scsih_host_reset(struct scsi_cmnd *scmd) in scsih_host_reset() argument
3531 struct MPT3SAS_ADAPTER *ioc = shost_priv(scmd->device->host); in scsih_host_reset()
3534 ioc_info(ioc, "attempting host reset! scmd(0x%p)\n", scmd); in scsih_host_reset()
3535 scsi_print_command(scmd); in scsih_host_reset()
3547 r == SUCCESS ? "SUCCESS" : "FAILED", scmd); in scsih_host_reset()
4303 struct scsi_cmnd *scmd) in _scsih_allow_scmd_to_device() argument
4318 switch (scmd->cmnd[0]) { in _scsih_allow_scmd_to_device()
4991 static int _scsih_set_satl_pending(struct scsi_cmnd *scmd, bool pending) in _scsih_set_satl_pending() argument
4993 struct MPT3SAS_DEVICE *priv = scmd->device->hostdata; in _scsih_set_satl_pending()
4995 if (scmd->cmnd[0] != ATA_12 && scmd->cmnd[0] != ATA_16) in _scsih_set_satl_pending()
5015 struct scsi_cmnd *scmd; in _scsih_flush_running_cmds() local
5021 scmd = mpt3sas_scsih_scsi_lookup_get(ioc, smid); in _scsih_flush_running_cmds()
5022 if (!scmd) in _scsih_flush_running_cmds()
5025 _scsih_set_satl_pending(scmd, false); in _scsih_flush_running_cmds()
5026 st = scsi_cmd_priv(scmd); in _scsih_flush_running_cmds()
5028 scsi_dma_unmap(scmd); in _scsih_flush_running_cmds()
5030 scmd->result = DID_NO_CONNECT << 16; in _scsih_flush_running_cmds()
5032 scmd->result = DID_RESET << 16; in _scsih_flush_running_cmds()
5033 scsi_done(scmd); in _scsih_flush_running_cmds()
5047 _scsih_setup_eedp(struct MPT3SAS_ADAPTER *ioc, struct scsi_cmnd *scmd, in _scsih_setup_eedp() argument
5054 switch (scsi_get_prot_op(scmd)) { in _scsih_setup_eedp()
5065 if (scmd->prot_flags & SCSI_PROT_GUARD_CHECK) in _scsih_setup_eedp()
5068 if (scmd->prot_flags & SCSI_PROT_REF_CHECK) in _scsih_setup_eedp()
5071 if (scmd->prot_flags & SCSI_PROT_REF_INCREMENT) { in _scsih_setup_eedp()
5075 cpu_to_be32(scsi_prot_ref_tag(scmd)); in _scsih_setup_eedp()
5078 mpi_request_3v->EEDPBlockSize = cpu_to_le16(scsi_prot_interval(scmd)); in _scsih_setup_eedp()
5091 _scsih_eedp_error_handling(struct scsi_cmnd *scmd, u16 ioc_status) in _scsih_eedp_error_handling() argument
5109 scsi_build_sense(scmd, 0, ILLEGAL_REQUEST, 0x10, ascq); in _scsih_eedp_error_handling()
5110 set_host_byte(scmd, DID_ABORT); in _scsih_eedp_error_handling()
5125 scsih_qcmd(struct Scsi_Host *shost, struct scsi_cmnd *scmd) in scsih_qcmd() argument
5131 struct request *rq = scsi_cmd_to_rq(scmd); in scsih_qcmd()
5140 scsi_print_command(scmd); in scsih_qcmd()
5142 sas_device_priv_data = scmd->device->hostdata; in scsih_qcmd()
5144 scmd->result = DID_NO_CONNECT << 16; in scsih_qcmd()
5145 scsi_done(scmd); in scsih_qcmd()
5149 if (!(_scsih_allow_scmd_to_device(ioc, scmd))) { in scsih_qcmd()
5150 scmd->result = DID_NO_CONNECT << 16; in scsih_qcmd()
5151 scsi_done(scmd); in scsih_qcmd()
5164 if (scmd->device->host->shost_state == SHOST_RECOVERY && in scsih_qcmd()
5165 scmd->cmnd[0] == TEST_UNIT_READY) { in scsih_qcmd()
5166 scsi_build_sense(scmd, 0, UNIT_ATTENTION, 0x29, 0x07); in scsih_qcmd()
5167 scsi_done(scmd); in scsih_qcmd()
5173 scmd->result = DID_NO_CONNECT << 16; in scsih_qcmd()
5174 scsi_done(scmd); in scsih_qcmd()
5184 scmd->result = DID_NO_CONNECT << 16; in scsih_qcmd()
5185 scsi_done(scmd); in scsih_qcmd()
5201 } while (_scsih_set_satl_pending(scmd, true)); in scsih_qcmd()
5203 if (scmd->sc_data_direction == DMA_FROM_DEVICE) in scsih_qcmd()
5205 else if (scmd->sc_data_direction == DMA_TO_DEVICE) in scsih_qcmd()
5221 if (((!ioc->is_warpdrive && !scsih_is_raid(&scmd->device->sdev_gendev)) in scsih_qcmd()
5222 && !scsih_is_nvme(&scmd->device->sdev_gendev)) in scsih_qcmd()
5223 && sas_is_tlr_enabled(scmd->device) && scmd->cmd_len != 32) in scsih_qcmd()
5226 smid = mpt3sas_base_get_smid_scsiio(ioc, ioc->scsi_io_cb_idx, scmd); in scsih_qcmd()
5229 _scsih_set_satl_pending(scmd, false); in scsih_qcmd()
5234 _scsih_setup_eedp(ioc, scmd, mpi_request); in scsih_qcmd()
5236 if (scmd->cmd_len == 32) in scsih_qcmd()
5245 mpi_request->DataLength = cpu_to_le32(scsi_bufflen(scmd)); in scsih_qcmd()
5247 mpi_request->IoFlags = cpu_to_le16(scmd->cmd_len); in scsih_qcmd()
5255 memcpy(mpi_request->CDB.CDB32, scmd->cmnd, scmd->cmd_len); in scsih_qcmd()
5259 if (ioc->build_sg_scmd(ioc, scmd, smid, pcie_device)) { in scsih_qcmd()
5261 _scsih_set_satl_pending(scmd, false); in scsih_qcmd()
5269 mpt3sas_setup_direct_io(ioc, scmd, in scsih_qcmd()
5274 mpi_request->IoFlags = cpu_to_le16(scmd->cmd_len | in scsih_qcmd()
5321 _scsih_scsi_ioc_info(struct MPT3SAS_ADAPTER *ioc, struct scsi_cmnd *scmd, in _scsih_scsi_ioc_info() argument
5336 struct scsi_target *starget = scmd->device->sdev_target; in _scsih_scsi_ioc_info()
5463 scsi_print_command(scmd); in _scsih_scsi_ioc_info()
5500 scsi_bufflen(scmd), scmd->underflow, scsi_get_resid(scmd)); in _scsih_scsi_ioc_info()
5503 le32_to_cpu(mpi_reply->TransferCount), scmd->result); in _scsih_scsi_ioc_info()
5509 _scsih_normalize_sense(scmd->sense_buffer, &data); in _scsih_scsi_ioc_info()
5710 struct scsi_cmnd *scmd; in _scsih_io_done() local
5722 scmd = mpt3sas_scsih_scsi_lookup_get(ioc, smid); in _scsih_io_done()
5723 if (scmd == NULL) in _scsih_io_done()
5726 _scsih_set_satl_pending(scmd, false); in _scsih_io_done()
5731 scmd->result = DID_OK << 16; in _scsih_io_done()
5735 sas_device_priv_data = scmd->device->hostdata; in _scsih_io_done()
5738 scmd->result = DID_NO_CONNECT << 16; in _scsih_io_done()
5747 st = scsi_cmd_priv(scmd); in _scsih_io_done()
5752 st->scmd = scmd; in _scsih_io_done()
5753 memcpy(mpi_request->CDB.CDB32, scmd->cmnd, scmd->cmd_len); in _scsih_io_done()
5768 !scsih_is_raid(&scmd->device->sdev_gendev) && in _scsih_io_done()
5769 !scsih_is_nvme(&scmd->device->sdev_gendev)) in _scsih_io_done()
5770 && sas_is_tlr_enabled(scmd->device) && in _scsih_io_done()
5772 sas_disable_tlr(scmd->device); in _scsih_io_done()
5773 sdev_printk(KERN_INFO, scmd->device, "TLR disabled\n"); in _scsih_io_done()
5778 scsi_set_resid(scmd, scsi_bufflen(scmd) - xfer_cnt); in _scsih_io_done()
5799 memcpy(scmd->sense_buffer, sense_data, sz); in _scsih_io_done()
5800 _scsih_normalize_sense(scmd->sense_buffer, &data); in _scsih_io_done()
5808 ((scmd->sense_buffer[2] == UNIT_ATTENTION) || in _scsih_io_done()
5809 (scmd->sense_buffer[2] == MEDIUM_ERROR) || in _scsih_io_done()
5810 (scmd->sense_buffer[2] == HARDWARE_ERROR))) in _scsih_io_done()
5811 _scsih_scsi_ioc_info(ioc, scmd, mpi_reply, smid); in _scsih_io_done()
5816 scmd->result = SAM_STAT_BUSY; in _scsih_io_done()
5820 scmd->result = DID_NO_CONNECT << 16; in _scsih_io_done()
5825 scmd->result = DID_TRANSPORT_DISRUPTED << 16; in _scsih_io_done()
5829 if (scmd->retries > 2) { in _scsih_io_done()
5830 scmd->result = DID_NO_CONNECT << 16; in _scsih_io_done()
5831 scsi_device_set_state(scmd->device, in _scsih_io_done()
5834 scmd->result = DID_SOFT_ERROR << 16; in _scsih_io_done()
5835 scmd->device->expecting_cc_ua = 1; in _scsih_io_done()
5839 scmd->result = DID_RESET << 16; in _scsih_io_done()
5841 } else if ((scmd->device->channel == RAID_CHANNEL) && in _scsih_io_done()
5844 scmd->result = DID_RESET << 16; in _scsih_io_done()
5847 scmd->result = DID_SOFT_ERROR << 16; in _scsih_io_done()
5851 scmd->result = DID_RESET << 16; in _scsih_io_done()
5855 if ((xfer_cnt == 0) || (scmd->underflow > xfer_cnt)) in _scsih_io_done()
5856 scmd->result = DID_SOFT_ERROR << 16; in _scsih_io_done()
5858 scmd->result = (DID_OK << 16) | scsi_status; in _scsih_io_done()
5862 scmd->result = (DID_OK << 16) | scsi_status; in _scsih_io_done()
5867 if (xfer_cnt < scmd->underflow) { in _scsih_io_done()
5869 scmd->result = SAM_STAT_BUSY; in _scsih_io_done()
5871 scmd->result = DID_SOFT_ERROR << 16; in _scsih_io_done()
5874 scmd->result = DID_SOFT_ERROR << 16; in _scsih_io_done()
5876 scmd->result = DID_RESET << 16; in _scsih_io_done()
5877 else if (!xfer_cnt && scmd->cmnd[0] == REPORT_LUNS) { in _scsih_io_done()
5880 scsi_build_sense(scmd, 0, ILLEGAL_REQUEST, in _scsih_io_done()
5886 scsi_set_resid(scmd, 0); in _scsih_io_done()
5890 scmd->result = (DID_OK << 16) | scsi_status; in _scsih_io_done()
5895 scmd->result = DID_SOFT_ERROR << 16; in _scsih_io_done()
5897 scmd->result = DID_RESET << 16; in _scsih_io_done()
5903 _scsih_eedp_error_handling(scmd, ioc_status); in _scsih_io_done()
5916 scmd->result = DID_SOFT_ERROR << 16; in _scsih_io_done()
5921 if (scmd->result && (ioc->logging_level & MPT_DEBUG_REPLY)) in _scsih_io_done()
5922 _scsih_scsi_ioc_info(ioc , scmd, mpi_reply, smid); in _scsih_io_done()
5926 scsi_dma_unmap(scmd); in _scsih_io_done()
5928 scsi_done(scmd); in _scsih_io_done()
8659 struct scsi_cmnd *scmd; in _scsih_sas_broadcast_primitive_event() local
8701 scmd = mpt3sas_scsih_scsi_lookup_get(ioc, smid); in _scsih_sas_broadcast_primitive_event()
8702 if (!scmd) in _scsih_sas_broadcast_primitive_event()
8704 st = scsi_cmd_priv(scmd); in _scsih_sas_broadcast_primitive_event()
8705 sdev = scmd->device; in _scsih_sas_broadcast_primitive_event()
8736 "QUERY_TASK: scmd(%p)\n", scmd); in _scsih_sas_broadcast_primitive_event()
8745 ioc_status, scmd); in _scsih_sas_broadcast_primitive_event()
8777 "scmd(%p)\n", scmd); in _scsih_sas_broadcast_primitive_event()
8785 task_abort_retries - 1, scmd); in _scsih_sas_broadcast_primitive_event()