Lines Matching refs:srb

462 		      struct scsi_cmnd* srb)  in usb_stor_bulk_srb()  argument
465 int result = usb_stor_bulk_transfer_sglist(us, pipe, scsi_sglist(srb), in usb_stor_bulk_srb()
466 scsi_sg_count(srb), scsi_bufflen(srb), in usb_stor_bulk_srb()
469 scsi_set_resid(srb, scsi_bufflen(srb) - partial); in usb_stor_bulk_srb()
519 static void last_sector_hacks(struct us_data *us, struct scsi_cmnd *srb) in last_sector_hacks() argument
543 if (srb->cmnd[0] != READ_10 && srb->cmnd[0] != WRITE_10) in last_sector_hacks()
547 sector = (srb->cmnd[2] << 24) | (srb->cmnd[3] << 16) | in last_sector_hacks()
548 (srb->cmnd[4] << 8) | (srb->cmnd[5]); in last_sector_hacks()
549 disk = srb->request->rq_disk; in last_sector_hacks()
558 if (srb->result == SAM_STAT_GOOD && scsi_get_resid(srb) == 0) { in last_sector_hacks()
578 srb->result = SAM_STAT_CHECK_CONDITION; in last_sector_hacks()
579 memcpy(srb->sense_buffer, record_not_found, in last_sector_hacks()
589 if (srb->cmnd[0] != TEST_UNIT_READY) in last_sector_hacks()
599 void usb_stor_invoke_transport(struct scsi_cmnd *srb, struct us_data *us) in usb_stor_invoke_transport() argument
605 scsi_set_resid(srb, 0); in usb_stor_invoke_transport()
606 result = us->transport(srb, us); in usb_stor_invoke_transport()
614 srb->result = DID_ABORT << 16; in usb_stor_invoke_transport()
621 srb->result = DID_ERROR << 16; in usb_stor_invoke_transport()
627 srb->result = SAM_STAT_CHECK_CONDITION; in usb_stor_invoke_transport()
628 last_sector_hacks(us, srb); in usb_stor_invoke_transport()
632 srb->result = SAM_STAT_GOOD; in usb_stor_invoke_transport()
649 srb->sc_data_direction != DMA_FROM_DEVICE) { in usb_stor_invoke_transport()
670 if (unlikely((srb->cmnd[0] == ATA_16 || srb->cmnd[0] == ATA_12) && in usb_stor_invoke_transport()
674 !(srb->cmnd[2] & 0x20))) { in usb_stor_invoke_transport()
683 if ((scsi_get_resid(srb) > 0) && in usb_stor_invoke_transport()
684 !((srb->cmnd[0] == REQUEST_SENSE) || in usb_stor_invoke_transport()
685 (srb->cmnd[0] == INQUIRY) || in usb_stor_invoke_transport()
686 (srb->cmnd[0] == MODE_SENSE) || in usb_stor_invoke_transport()
687 (srb->cmnd[0] == LOG_SENSE) || in usb_stor_invoke_transport()
688 (srb->cmnd[0] == MODE_SENSE_10))) { in usb_stor_invoke_transport()
707 scsi_eh_prep_cmnd(srb, &ses, NULL, 0, sense_size); in usb_stor_invoke_transport()
712 srb->cmd_len = 6; in usb_stor_invoke_transport()
714 srb->cmd_len = 12; in usb_stor_invoke_transport()
717 scsi_set_resid(srb, 0); in usb_stor_invoke_transport()
718 temp_result = us->transport(us->srb, us); in usb_stor_invoke_transport()
721 scsi_eh_restore_cmnd(srb, &ses); in usb_stor_invoke_transport()
725 srb->result = DID_ABORT << 16; in usb_stor_invoke_transport()
759 srb->result = DID_ERROR << 16; in usb_stor_invoke_transport()
770 if (srb->sense_buffer[7] > (US_SENSE_SIZE - 8) && in usb_stor_invoke_transport()
773 (srb->sense_buffer[0] & 0x7C) == 0x70) { in usb_stor_invoke_transport()
783 srb->sense_buffer[7] + 8); in usb_stor_invoke_transport()
784 srb->sense_buffer[7] = (US_SENSE_SIZE - 8); in usb_stor_invoke_transport()
787 scsi_normalize_sense(srb->sense_buffer, SCSI_SENSE_BUFFERSIZE, in usb_stor_invoke_transport()
800 srb->result = SAM_STAT_CHECK_CONDITION; in usb_stor_invoke_transport()
802 scdd = scsi_sense_desc_find(srb->sense_buffer, in usb_stor_invoke_transport()
804 fm_ili = (scdd ? scdd[3] : srb->sense_buffer[2]) & 0xA0; in usb_stor_invoke_transport()
819 srb->result = SAM_STAT_GOOD; in usb_stor_invoke_transport()
820 srb->sense_buffer[0] = 0x0; in usb_stor_invoke_transport()
829 else if (srb->cmnd[0] == ATA_16 || in usb_stor_invoke_transport()
830 srb->cmnd[0] == ATA_12) { in usb_stor_invoke_transport()
840 srb->result = DID_ERROR << 16; in usb_stor_invoke_transport()
842 srb->sense_buffer[1] = HARDWARE_ERROR; in usb_stor_invoke_transport()
844 srb->sense_buffer[2] = HARDWARE_ERROR; in usb_stor_invoke_transport()
858 srb->cmnd[0] == READ_10)) { in usb_stor_invoke_transport()
859 if (srb->result == SAM_STAT_GOOD) { in usb_stor_invoke_transport()
873 srb->result = DID_IMM_RETRY << 16; in usb_stor_invoke_transport()
874 srb->sense_buffer[0] = 0; in usb_stor_invoke_transport()
879 if ((srb->result == SAM_STAT_GOOD || srb->sense_buffer[2] == 0) && in usb_stor_invoke_transport()
880 scsi_bufflen(srb) - scsi_get_resid(srb) < srb->underflow) in usb_stor_invoke_transport()
881 srb->result = DID_ERROR << 16; in usb_stor_invoke_transport()
883 last_sector_hacks(us, srb); in usb_stor_invoke_transport()
917 last_sector_hacks(us, srb); in usb_stor_invoke_transport()
945 int usb_stor_CB_transport(struct scsi_cmnd *srb, struct us_data *us) in usb_stor_CB_transport() argument
947 unsigned int transfer_length = scsi_bufflen(srb); in usb_stor_CB_transport()
957 memcpy(us->iobuf, srb->cmnd, srb->cmd_len); in usb_stor_CB_transport()
961 us->ifnum, us->iobuf, srb->cmd_len); in usb_stor_CB_transport()
980 pipe = srb->sc_data_direction == DMA_FROM_DEVICE ? in usb_stor_CB_transport()
982 result = usb_stor_bulk_srb(us, pipe, srb); in usb_stor_CB_transport()
1016 if (srb->cmnd[0] == REQUEST_SENSE || in usb_stor_CB_transport()
1017 srb->cmnd[0] == INQUIRY) in usb_stor_CB_transport()
1103 int usb_stor_Bulk_transport(struct scsi_cmnd *srb, struct us_data *us) in usb_stor_Bulk_transport() argument
1107 unsigned int transfer_length = scsi_bufflen(srb); in usb_stor_Bulk_transport()
1123 bcb->Flags = srb->sc_data_direction == DMA_FROM_DEVICE ? in usb_stor_Bulk_transport()
1126 bcb->Lun = srb->device->lun; in usb_stor_Bulk_transport()
1128 bcb->Lun |= srb->device->id << 4; in usb_stor_Bulk_transport()
1129 bcb->Length = srb->cmd_len; in usb_stor_Bulk_transport()
1133 memcpy(bcb->CDB, srb->cmnd, bcb->Length); in usb_stor_Bulk_transport()
1159 unsigned int pipe = srb->sc_data_direction == DMA_FROM_DEVICE ? in usb_stor_Bulk_transport()
1161 result = usb_stor_bulk_srb(us, pipe, srb); in usb_stor_Bulk_transport()
1183 srb->sc_data_direction == DMA_FROM_DEVICE && in usb_stor_Bulk_transport()
1184 transfer_length - scsi_get_resid(srb) == in usb_stor_Bulk_transport()
1190 US_BULK_CS_WRAP_LEN, srb, &sg, in usb_stor_Bulk_transport()
1196 scsi_set_resid(srb, transfer_length); in usb_stor_Bulk_transport()
1278 scsi_get_resid(srb) == 0 && in usb_stor_Bulk_transport()
1279 ((srb->cmnd[0] == INQUIRY && in usb_stor_Bulk_transport()
1281 (srb->cmnd[0] == READ_CAPACITY && in usb_stor_Bulk_transport()
1287 scsi_set_resid(srb, max(scsi_get_resid(srb), in usb_stor_Bulk_transport()
1297 memcpy(srb->sense_buffer, in usb_stor_Bulk_transport()