Lines Matching refs:cmnd

46 	struct scsi_cmnd *cmnd[MAX_CMNDS];  member
76 static int uas_submit_urbs(struct scsi_cmnd *cmnd,
79 static int uas_try_complete(struct scsi_cmnd *cmnd, const char *caller);
81 static void uas_log_cmd_state(struct scsi_cmnd *cmnd, const char *prefix,
89 struct scsi_cmnd *cmnd; in uas_do_work() local
99 if (!devinfo->cmnd[i]) in uas_do_work()
102 cmnd = devinfo->cmnd[i]; in uas_do_work()
103 cmdinfo = (void *)&cmnd->SCp; in uas_do_work()
108 err = uas_submit_urbs(cmnd, cmnd->device->hostdata, GFP_ATOMIC); in uas_do_work()
121 struct scsi_cmnd *cmnd = container_of(scp, struct scsi_cmnd, SCp); in uas_add_work() local
122 struct uas_dev_info *devinfo = cmnd->device->hostdata; in uas_add_work()
132 struct scsi_cmnd *cmnd; in uas_zap_pending() local
138 if (!devinfo->cmnd[i]) in uas_zap_pending()
141 cmnd = devinfo->cmnd[i]; in uas_zap_pending()
142 cmdinfo = (void *)&cmnd->SCp; in uas_zap_pending()
143 uas_log_cmd_state(cmnd, __func__, 0); in uas_zap_pending()
146 cmnd->result = result << 16; in uas_zap_pending()
147 err = uas_try_complete(cmnd, __func__); in uas_zap_pending()
153 static void uas_sense(struct urb *urb, struct scsi_cmnd *cmnd) in uas_sense() argument
156 struct scsi_device *sdev = cmnd->device; in uas_sense()
170 memcpy(cmnd->sense_buffer, sense_iu->sense, len); in uas_sense()
173 cmnd->result = sense_iu->status; in uas_sense()
176 static void uas_log_cmd_state(struct scsi_cmnd *cmnd, const char *prefix, in uas_log_cmd_state() argument
179 struct uas_cmd_info *ci = (void *)&cmnd->SCp; in uas_log_cmd_state()
180 struct uas_cmd_info *cmdinfo = (void *)&cmnd->SCp; in uas_log_cmd_state()
182 scmd_printk(KERN_INFO, cmnd, in uas_log_cmd_state()
197 scsi_print_command(cmnd); in uas_log_cmd_state()
200 static void uas_free_unsubmitted_urbs(struct scsi_cmnd *cmnd) in uas_free_unsubmitted_urbs() argument
204 if (!cmnd) in uas_free_unsubmitted_urbs()
207 cmdinfo = (void *)&cmnd->SCp; in uas_free_unsubmitted_urbs()
219 static int uas_try_complete(struct scsi_cmnd *cmnd, const char *caller) in uas_try_complete() argument
221 struct uas_cmd_info *cmdinfo = (void *)&cmnd->SCp; in uas_try_complete()
222 struct uas_dev_info *devinfo = (void *)cmnd->device->hostdata; in uas_try_complete()
230 devinfo->cmnd[cmdinfo->uas_tag - 1] = NULL; in uas_try_complete()
231 uas_free_unsubmitted_urbs(cmnd); in uas_try_complete()
232 cmnd->scsi_done(cmnd); in uas_try_complete()
236 static void uas_xfer_data(struct urb *urb, struct scsi_cmnd *cmnd, in uas_xfer_data() argument
239 struct uas_cmd_info *cmdinfo = (void *)&cmnd->SCp; in uas_xfer_data()
243 err = uas_submit_urbs(cmnd, cmnd->device->hostdata, GFP_ATOMIC); in uas_xfer_data()
256 struct scsi_cmnd *cmnd; in uas_stat_cmplt() local
274 if (idx >= MAX_CMNDS || !devinfo->cmnd[idx]) { in uas_stat_cmplt()
280 cmnd = devinfo->cmnd[idx]; in uas_stat_cmplt()
281 cmdinfo = (void *)&cmnd->SCp; in uas_stat_cmplt()
284 uas_log_cmd_state(cmnd, "unexpected status cmplt", 0); in uas_stat_cmplt()
290 uas_sense(urb, cmnd); in uas_stat_cmplt()
291 if (cmnd->result != 0) { in uas_stat_cmplt()
297 uas_try_complete(cmnd, __func__); in uas_stat_cmplt()
302 uas_log_cmd_state(cmnd, "unexpected read rdy", 0); in uas_stat_cmplt()
305 uas_xfer_data(urb, cmnd, SUBMIT_DATA_IN_URB); in uas_stat_cmplt()
310 uas_log_cmd_state(cmnd, "unexpected write rdy", 0); in uas_stat_cmplt()
313 uas_xfer_data(urb, cmnd, SUBMIT_DATA_OUT_URB); in uas_stat_cmplt()
316 uas_log_cmd_state(cmnd, "unexpected response iu", in uas_stat_cmplt()
322 cmnd->result = DID_ERROR << 16; in uas_stat_cmplt()
323 uas_try_complete(cmnd, __func__); in uas_stat_cmplt()
326 uas_log_cmd_state(cmnd, "bogus IU", iu->iu_id); in uas_stat_cmplt()
345 struct scsi_cmnd *cmnd = urb->context; in uas_data_cmplt() local
346 struct uas_cmd_info *cmdinfo = (void *)&cmnd->SCp; in uas_data_cmplt()
347 struct uas_dev_info *devinfo = (void *)cmnd->device->hostdata; in uas_data_cmplt()
355 sdb = scsi_in(cmnd); in uas_data_cmplt()
359 sdb = scsi_out(cmnd); in uas_data_cmplt()
373 uas_log_cmd_state(cmnd, "unexpected data cmplt", 0); in uas_data_cmplt()
379 uas_log_cmd_state(cmnd, "data cmplt err", status); in uas_data_cmplt()
385 uas_try_complete(cmnd, __func__); in uas_data_cmplt()
400 struct scsi_cmnd *cmnd, in uas_alloc_data_urb() argument
404 struct uas_cmd_info *cmdinfo = (void *)&cmnd->SCp; in uas_alloc_data_urb()
407 ? scsi_in(cmnd) : scsi_out(cmnd); in uas_alloc_data_urb()
414 uas_data_cmplt, cmnd); in uas_alloc_data_urb()
424 struct scsi_cmnd *cmnd) in uas_alloc_sense_urb() argument
427 struct uas_cmd_info *cmdinfo = (void *)&cmnd->SCp; in uas_alloc_sense_urb()
439 uas_stat_cmplt, cmnd->device->host); in uas_alloc_sense_urb()
451 struct scsi_cmnd *cmnd) in uas_alloc_cmd_urb() argument
454 struct scsi_device *sdev = cmnd->device; in uas_alloc_cmd_urb()
455 struct uas_cmd_info *cmdinfo = (void *)&cmnd->SCp; in uas_alloc_cmd_urb()
463 len = cmnd->cmd_len - 16; in uas_alloc_cmd_urb()
476 memcpy(iu->cdb, cmnd->cmnd, cmnd->cmd_len); in uas_alloc_cmd_urb()
494 static struct urb *uas_submit_sense_urb(struct scsi_cmnd *cmnd, gfp_t gfp) in uas_submit_sense_urb() argument
496 struct uas_dev_info *devinfo = cmnd->device->hostdata; in uas_submit_sense_urb()
500 urb = uas_alloc_sense_urb(devinfo, gfp, cmnd); in uas_submit_sense_urb()
507 uas_log_cmd_state(cmnd, "sense submit err", err); in uas_submit_sense_urb()
514 static int uas_submit_urbs(struct scsi_cmnd *cmnd, in uas_submit_urbs() argument
517 struct uas_cmd_info *cmdinfo = (void *)&cmnd->SCp; in uas_submit_urbs()
523 urb = uas_submit_sense_urb(cmnd, gfp); in uas_submit_urbs()
531 cmnd, DMA_FROM_DEVICE); in uas_submit_urbs()
542 uas_log_cmd_state(cmnd, "data in submit err", err); in uas_submit_urbs()
551 cmnd, DMA_TO_DEVICE); in uas_submit_urbs()
562 uas_log_cmd_state(cmnd, "data out submit err", err); in uas_submit_urbs()
570 cmdinfo->cmd_urb = uas_alloc_cmd_urb(devinfo, gfp, cmnd); in uas_submit_urbs()
581 uas_log_cmd_state(cmnd, "cmd submit err", err); in uas_submit_urbs()
592 static int uas_queuecommand_lck(struct scsi_cmnd *cmnd, in uas_queuecommand_lck() argument
595 struct scsi_device *sdev = cmnd->device; in uas_queuecommand_lck()
597 struct uas_cmd_info *cmdinfo = (void *)&cmnd->SCp; in uas_queuecommand_lck()
604 if (cmnd->device->host->host_self_blocked) in uas_queuecommand_lck()
608 (cmnd->cmnd[0] == ATA_12 || cmnd->cmnd[0] == ATA_16)) { in uas_queuecommand_lck()
609 memcpy(cmnd->sense_buffer, usb_stor_sense_invalidCDB, in uas_queuecommand_lck()
611 cmnd->result = SAM_STAT_CHECK_CONDITION; in uas_queuecommand_lck()
612 cmnd->scsi_done(cmnd); in uas_queuecommand_lck()
619 cmnd->result = DID_ERROR << 16; in uas_queuecommand_lck()
620 cmnd->scsi_done(cmnd); in uas_queuecommand_lck()
627 if (!devinfo->cmnd[idx]) in uas_queuecommand_lck()
635 cmnd->scsi_done = done; in uas_queuecommand_lck()
641 switch (cmnd->sc_data_direction) { in uas_queuecommand_lck()
656 err = uas_submit_urbs(cmnd, devinfo, GFP_ATOMIC); in uas_queuecommand_lck()
666 devinfo->cmnd[idx] = cmnd; in uas_queuecommand_lck()
678 static int uas_eh_abort_handler(struct scsi_cmnd *cmnd) in DEF_SCSI_QCMD()
680 struct uas_cmd_info *cmdinfo = (void *)&cmnd->SCp; in DEF_SCSI_QCMD()
681 struct uas_dev_info *devinfo = (void *)cmnd->device->hostdata; in DEF_SCSI_QCMD()
688 uas_log_cmd_state(cmnd, __func__, 0); in DEF_SCSI_QCMD()
694 devinfo->cmnd[cmdinfo->uas_tag - 1] = NULL; in DEF_SCSI_QCMD()
700 uas_free_unsubmitted_urbs(cmnd); in DEF_SCSI_QCMD()
716 static int uas_eh_bus_reset_handler(struct scsi_cmnd *cmnd) in uas_eh_bus_reset_handler() argument
718 struct scsi_device *sdev = cmnd->device; in uas_eh_bus_reset_handler()
978 if (devinfo->cmnd[i]) { in uas_cmnd_list_empty()