Lines Matching refs:srb
466 struct scsi_cmnd* srb) in usb_stor_bulk_srb() argument
469 int result = usb_stor_bulk_transfer_sglist(us, pipe, scsi_sglist(srb), in usb_stor_bulk_srb()
470 scsi_sg_count(srb), scsi_bufflen(srb), in usb_stor_bulk_srb()
473 scsi_set_resid(srb, scsi_bufflen(srb) - partial); in usb_stor_bulk_srb()
522 static void last_sector_hacks(struct us_data *us, struct scsi_cmnd *srb) in last_sector_hacks() argument
545 if (srb->cmnd[0] != READ_10 && srb->cmnd[0] != WRITE_10) in last_sector_hacks()
549 sector = (srb->cmnd[2] << 24) | (srb->cmnd[3] << 16) | in last_sector_hacks()
550 (srb->cmnd[4] << 8) | (srb->cmnd[5]); in last_sector_hacks()
551 disk = srb->request->rq_disk; in last_sector_hacks()
560 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()
588 if (srb->cmnd[0] != TEST_UNIT_READY) in last_sector_hacks()
597 void usb_stor_invoke_transport(struct scsi_cmnd *srb, struct us_data *us) in usb_stor_invoke_transport() argument
603 scsi_set_resid(srb, 0); in usb_stor_invoke_transport()
604 result = us->transport(srb, us); in usb_stor_invoke_transport()
611 srb->result = DID_ABORT << 16; in usb_stor_invoke_transport()
618 srb->result = DID_ERROR << 16; in usb_stor_invoke_transport()
624 srb->result = SAM_STAT_CHECK_CONDITION; in usb_stor_invoke_transport()
625 last_sector_hacks(us, srb); in usb_stor_invoke_transport()
629 srb->result = SAM_STAT_GOOD; in usb_stor_invoke_transport()
645 srb->sc_data_direction != DMA_FROM_DEVICE) { in usb_stor_invoke_transport()
666 if (unlikely((srb->cmnd[0] == ATA_16 || srb->cmnd[0] == ATA_12) && in usb_stor_invoke_transport()
670 !(srb->cmnd[2] & 0x20))) { in usb_stor_invoke_transport()
679 if ((scsi_get_resid(srb) > 0) && in usb_stor_invoke_transport()
680 !((srb->cmnd[0] == REQUEST_SENSE) || in usb_stor_invoke_transport()
681 (srb->cmnd[0] == INQUIRY) || in usb_stor_invoke_transport()
682 (srb->cmnd[0] == MODE_SENSE) || in usb_stor_invoke_transport()
683 (srb->cmnd[0] == LOG_SENSE) || in usb_stor_invoke_transport()
684 (srb->cmnd[0] == MODE_SENSE_10))) { in usb_stor_invoke_transport()
703 scsi_eh_prep_cmnd(srb, &ses, NULL, 0, sense_size); in usb_stor_invoke_transport()
708 srb->cmd_len = 6; in usb_stor_invoke_transport()
710 srb->cmd_len = 12; in usb_stor_invoke_transport()
713 scsi_set_resid(srb, 0); in usb_stor_invoke_transport()
714 temp_result = us->transport(us->srb, us); in usb_stor_invoke_transport()
717 scsi_eh_restore_cmnd(srb, &ses); in usb_stor_invoke_transport()
721 srb->result = DID_ABORT << 16; in usb_stor_invoke_transport()
753 srb->result = DID_ERROR << 16; in usb_stor_invoke_transport()
763 if (srb->sense_buffer[7] > (US_SENSE_SIZE - 8) && in usb_stor_invoke_transport()
766 (srb->sense_buffer[0] & 0x7C) == 0x70) { in usb_stor_invoke_transport()
775 srb->sense_buffer[7] + 8); in usb_stor_invoke_transport()
776 srb->sense_buffer[7] = (US_SENSE_SIZE - 8); in usb_stor_invoke_transport()
779 scsi_normalize_sense(srb->sense_buffer, SCSI_SENSE_BUFFERSIZE, in usb_stor_invoke_transport()
792 srb->result = SAM_STAT_CHECK_CONDITION; in usb_stor_invoke_transport()
794 scdd = scsi_sense_desc_find(srb->sense_buffer, in usb_stor_invoke_transport()
796 fm_ili = (scdd ? scdd[3] : srb->sense_buffer[2]) & 0xA0; in usb_stor_invoke_transport()
809 srb->result = SAM_STAT_GOOD; in usb_stor_invoke_transport()
810 srb->sense_buffer[0] = 0x0; in usb_stor_invoke_transport()
817 srb->result = DID_ERROR << 16; in usb_stor_invoke_transport()
819 srb->sense_buffer[1] = HARDWARE_ERROR; in usb_stor_invoke_transport()
821 srb->sense_buffer[2] = HARDWARE_ERROR; in usb_stor_invoke_transport()
835 srb->cmnd[0] == READ_10)) { in usb_stor_invoke_transport()
836 if (srb->result == SAM_STAT_GOOD) { in usb_stor_invoke_transport()
850 srb->result = DID_IMM_RETRY << 16; in usb_stor_invoke_transport()
851 srb->sense_buffer[0] = 0; in usb_stor_invoke_transport()
856 if ((srb->result == SAM_STAT_GOOD || srb->sense_buffer[2] == 0) && in usb_stor_invoke_transport()
857 scsi_bufflen(srb) - scsi_get_resid(srb) < srb->underflow) in usb_stor_invoke_transport()
858 srb->result = DID_ERROR << 16; in usb_stor_invoke_transport()
860 last_sector_hacks(us, srb); in usb_stor_invoke_transport()
888 last_sector_hacks(us, srb); in usb_stor_invoke_transport()
914 int usb_stor_CB_transport(struct scsi_cmnd *srb, struct us_data *us) in usb_stor_CB_transport() argument
916 unsigned int transfer_length = scsi_bufflen(srb); in usb_stor_CB_transport()
925 us->ifnum, srb->cmnd, srb->cmd_len); in usb_stor_CB_transport()
944 pipe = srb->sc_data_direction == DMA_FROM_DEVICE ? in usb_stor_CB_transport()
946 result = usb_stor_bulk_srb(us, pipe, srb); in usb_stor_CB_transport()
978 if (srb->cmnd[0] == REQUEST_SENSE || in usb_stor_CB_transport()
979 srb->cmnd[0] == INQUIRY) in usb_stor_CB_transport()
1063 int usb_stor_Bulk_transport(struct scsi_cmnd *srb, struct us_data *us) in usb_stor_Bulk_transport() argument
1067 unsigned int transfer_length = scsi_bufflen(srb); in usb_stor_Bulk_transport()
1083 bcb->Flags = srb->sc_data_direction == DMA_FROM_DEVICE ? in usb_stor_Bulk_transport()
1086 bcb->Lun = srb->device->lun; in usb_stor_Bulk_transport()
1088 bcb->Lun |= srb->device->id << 4; in usb_stor_Bulk_transport()
1089 bcb->Length = srb->cmd_len; in usb_stor_Bulk_transport()
1093 memcpy(bcb->CDB, srb->cmnd, bcb->Length); in usb_stor_Bulk_transport()
1117 unsigned int pipe = srb->sc_data_direction == DMA_FROM_DEVICE ? in usb_stor_Bulk_transport()
1119 result = usb_stor_bulk_srb(us, pipe, srb); in usb_stor_Bulk_transport()
1140 srb->sc_data_direction == DMA_FROM_DEVICE && in usb_stor_Bulk_transport()
1141 transfer_length - scsi_get_resid(srb) == in usb_stor_Bulk_transport()
1147 US_BULK_CS_WRAP_LEN, srb, &sg, in usb_stor_Bulk_transport()
1153 scsi_set_resid(srb, transfer_length); in usb_stor_Bulk_transport()
1229 scsi_get_resid(srb) == 0 && in usb_stor_Bulk_transport()
1230 ((srb->cmnd[0] == INQUIRY && in usb_stor_Bulk_transport()
1232 (srb->cmnd[0] == READ_CAPACITY && in usb_stor_Bulk_transport()
1238 scsi_set_resid(srb, max(scsi_get_resid(srb), in usb_stor_Bulk_transport()
1248 memcpy(srb->sense_buffer, in usb_stor_Bulk_transport()