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()
656 srb->cmnd[0] == SYNCHRONIZE_CACHE) { in usb_stor_invoke_transport()
677 if (unlikely((srb->cmnd[0] == ATA_16 || srb->cmnd[0] == ATA_12) && in usb_stor_invoke_transport()
681 !(srb->cmnd[2] & 0x20))) { in usb_stor_invoke_transport()
690 if ((scsi_get_resid(srb) > 0) && in usb_stor_invoke_transport()
691 !((srb->cmnd[0] == REQUEST_SENSE) || in usb_stor_invoke_transport()
692 (srb->cmnd[0] == INQUIRY) || in usb_stor_invoke_transport()
693 (srb->cmnd[0] == MODE_SENSE) || in usb_stor_invoke_transport()
694 (srb->cmnd[0] == LOG_SENSE) || in usb_stor_invoke_transport()
695 (srb->cmnd[0] == MODE_SENSE_10))) { in usb_stor_invoke_transport()
714 scsi_eh_prep_cmnd(srb, &ses, NULL, 0, sense_size); in usb_stor_invoke_transport()
719 srb->cmd_len = 6; in usb_stor_invoke_transport()
721 srb->cmd_len = 12; in usb_stor_invoke_transport()
724 scsi_set_resid(srb, 0); in usb_stor_invoke_transport()
725 temp_result = us->transport(us->srb, us); in usb_stor_invoke_transport()
728 scsi_eh_restore_cmnd(srb, &ses); in usb_stor_invoke_transport()
732 srb->result = DID_ABORT << 16; in usb_stor_invoke_transport()
766 srb->result = DID_ERROR << 16; in usb_stor_invoke_transport()
777 if (srb->sense_buffer[7] > (US_SENSE_SIZE - 8) && in usb_stor_invoke_transport()
780 (srb->sense_buffer[0] & 0x7C) == 0x70) { in usb_stor_invoke_transport()
790 srb->sense_buffer[7] + 8); in usb_stor_invoke_transport()
791 srb->sense_buffer[7] = (US_SENSE_SIZE - 8); in usb_stor_invoke_transport()
794 scsi_normalize_sense(srb->sense_buffer, SCSI_SENSE_BUFFERSIZE, in usb_stor_invoke_transport()
807 srb->result = SAM_STAT_CHECK_CONDITION; in usb_stor_invoke_transport()
809 scdd = scsi_sense_desc_find(srb->sense_buffer, in usb_stor_invoke_transport()
811 fm_ili = (scdd ? scdd[3] : srb->sense_buffer[2]) & 0xA0; in usb_stor_invoke_transport()
826 srb->result = SAM_STAT_GOOD; in usb_stor_invoke_transport()
827 srb->sense_buffer[0] = 0x0; in usb_stor_invoke_transport()
836 else if (srb->cmnd[0] == ATA_16 || in usb_stor_invoke_transport()
837 srb->cmnd[0] == ATA_12) { in usb_stor_invoke_transport()
847 srb->result = DID_ERROR << 16; in usb_stor_invoke_transport()
849 srb->sense_buffer[1] = HARDWARE_ERROR; in usb_stor_invoke_transport()
851 srb->sense_buffer[2] = HARDWARE_ERROR; in usb_stor_invoke_transport()
865 srb->cmnd[0] == READ_10)) { in usb_stor_invoke_transport()
866 if (srb->result == SAM_STAT_GOOD) { in usb_stor_invoke_transport()
880 srb->result = DID_IMM_RETRY << 16; in usb_stor_invoke_transport()
881 srb->sense_buffer[0] = 0; in usb_stor_invoke_transport()
886 if ((srb->result == SAM_STAT_GOOD || srb->sense_buffer[2] == 0) && in usb_stor_invoke_transport()
887 scsi_bufflen(srb) - scsi_get_resid(srb) < srb->underflow) in usb_stor_invoke_transport()
888 srb->result = DID_ERROR << 16; in usb_stor_invoke_transport()
890 last_sector_hacks(us, srb); in usb_stor_invoke_transport()
924 last_sector_hacks(us, srb); in usb_stor_invoke_transport()
952 int usb_stor_CB_transport(struct scsi_cmnd *srb, struct us_data *us) in usb_stor_CB_transport() argument
954 unsigned int transfer_length = scsi_bufflen(srb); in usb_stor_CB_transport()
964 memcpy(us->iobuf, srb->cmnd, srb->cmd_len); in usb_stor_CB_transport()
968 us->ifnum, us->iobuf, srb->cmd_len); in usb_stor_CB_transport()
987 pipe = srb->sc_data_direction == DMA_FROM_DEVICE ? in usb_stor_CB_transport()
989 result = usb_stor_bulk_srb(us, pipe, srb); in usb_stor_CB_transport()
1023 if (srb->cmnd[0] == REQUEST_SENSE || in usb_stor_CB_transport()
1024 srb->cmnd[0] == INQUIRY) in usb_stor_CB_transport()
1110 int usb_stor_Bulk_transport(struct scsi_cmnd *srb, struct us_data *us) in usb_stor_Bulk_transport() argument
1114 unsigned int transfer_length = scsi_bufflen(srb); in usb_stor_Bulk_transport()
1130 bcb->Flags = srb->sc_data_direction == DMA_FROM_DEVICE ? in usb_stor_Bulk_transport()
1133 bcb->Lun = srb->device->lun; in usb_stor_Bulk_transport()
1135 bcb->Lun |= srb->device->id << 4; in usb_stor_Bulk_transport()
1136 bcb->Length = srb->cmd_len; in usb_stor_Bulk_transport()
1140 memcpy(bcb->CDB, srb->cmnd, bcb->Length); in usb_stor_Bulk_transport()
1166 unsigned int pipe = srb->sc_data_direction == DMA_FROM_DEVICE ? in usb_stor_Bulk_transport()
1168 result = usb_stor_bulk_srb(us, pipe, srb); in usb_stor_Bulk_transport()
1190 srb->sc_data_direction == DMA_FROM_DEVICE && in usb_stor_Bulk_transport()
1191 transfer_length - scsi_get_resid(srb) == in usb_stor_Bulk_transport()
1197 US_BULK_CS_WRAP_LEN, srb, &sg, in usb_stor_Bulk_transport()
1203 scsi_set_resid(srb, transfer_length); in usb_stor_Bulk_transport()
1285 scsi_get_resid(srb) == 0 && in usb_stor_Bulk_transport()
1286 ((srb->cmnd[0] == INQUIRY && in usb_stor_Bulk_transport()
1288 (srb->cmnd[0] == READ_CAPACITY && in usb_stor_Bulk_transport()
1294 scsi_set_resid(srb, max(scsi_get_resid(srb), residue)); in usb_stor_Bulk_transport()
1303 memcpy(srb->sense_buffer, in usb_stor_Bulk_transport()