Lines Matching refs:srb
467 struct scsi_cmnd* srb)
470 int result = usb_stor_bulk_transfer_sglist(us, pipe, scsi_sglist(srb),
471 scsi_sg_count(srb), scsi_bufflen(srb),
474 scsi_set_resid(srb, scsi_bufflen(srb) - partial);
524 static void last_sector_hacks(struct us_data *us, struct scsi_cmnd *srb)
548 if (srb->cmnd[0] != READ_10 && srb->cmnd[0] != WRITE_10)
552 sector = (srb->cmnd[2] << 24) | (srb->cmnd[3] << 16) |
553 (srb->cmnd[4] << 8) | (srb->cmnd[5]);
554 disk = scsi_cmd_to_rq(srb)->q->disk;
563 if (srb->result == SAM_STAT_GOOD && scsi_get_resid(srb) == 0) {
583 srb->result = SAM_STAT_CHECK_CONDITION;
584 memcpy(srb->sense_buffer, record_not_found,
594 if (srb->cmnd[0] != TEST_UNIT_READY)
604 void usb_stor_invoke_transport(struct scsi_cmnd *srb, struct us_data *us)
610 scsi_set_resid(srb, 0);
611 result = us->transport(srb, us);
619 srb->result = DID_ABORT << 16;
626 srb->result = DID_ERROR << 16;
632 srb->result = SAM_STAT_CHECK_CONDITION;
633 last_sector_hacks(us, srb);
637 srb->result = SAM_STAT_GOOD;
654 srb->sc_data_direction != DMA_FROM_DEVICE) {
661 srb->cmnd[0] == SYNCHRONIZE_CACHE) {
682 if (unlikely((srb->cmnd[0] == ATA_16 || srb->cmnd[0] == ATA_12) &&
686 !(srb->cmnd[2] & 0x20))) {
695 if ((scsi_get_resid(srb) > 0) &&
696 !((srb->cmnd[0] == REQUEST_SENSE) ||
697 (srb->cmnd[0] == INQUIRY) ||
698 (srb->cmnd[0] == MODE_SENSE) ||
699 (srb->cmnd[0] == LOG_SENSE) ||
700 (srb->cmnd[0] == MODE_SENSE_10))) {
719 scsi_eh_prep_cmnd(srb, &ses, NULL, 0, sense_size);
724 srb->cmd_len = 6;
726 srb->cmd_len = 12;
729 scsi_set_resid(srb, 0);
730 temp_result = us->transport(us->srb, us);
733 scsi_eh_restore_cmnd(srb, &ses);
737 srb->result = DID_ABORT << 16;
771 srb->result = DID_ERROR << 16;
782 if (srb->sense_buffer[7] > (US_SENSE_SIZE - 8) &&
785 (srb->sense_buffer[0] & 0x7C) == 0x70) {
795 srb->sense_buffer[7] + 8);
796 srb->sense_buffer[7] = (US_SENSE_SIZE - 8);
799 scsi_normalize_sense(srb->sense_buffer, SCSI_SENSE_BUFFERSIZE,
812 srb->result = SAM_STAT_CHECK_CONDITION;
814 scdd = scsi_sense_desc_find(srb->sense_buffer,
816 fm_ili = (scdd ? scdd[3] : srb->sense_buffer[2]) & 0xA0;
831 srb->result = SAM_STAT_GOOD;
832 srb->sense_buffer[0] = 0x0;
841 else if (srb->cmnd[0] == ATA_16 ||
842 srb->cmnd[0] == ATA_12) {
852 srb->result = DID_ERROR << 16;
854 srb->sense_buffer[1] = HARDWARE_ERROR;
856 srb->sense_buffer[2] = HARDWARE_ERROR;
870 srb->cmnd[0] == READ_10)) {
871 if (srb->result == SAM_STAT_GOOD) {
885 srb->result = DID_IMM_RETRY << 16;
886 srb->sense_buffer[0] = 0;
891 if ((srb->result == SAM_STAT_GOOD || srb->sense_buffer[2] == 0) &&
892 scsi_bufflen(srb) - scsi_get_resid(srb) < srb->underflow)
893 srb->result = DID_ERROR << 16;
895 last_sector_hacks(us, srb);
929 last_sector_hacks(us, srb);
957 int usb_stor_CB_transport(struct scsi_cmnd *srb, struct us_data *us)
959 unsigned int transfer_length = scsi_bufflen(srb);
969 memcpy(us->iobuf, srb->cmnd, srb->cmd_len);
973 us->ifnum, us->iobuf, srb->cmd_len);
992 pipe = srb->sc_data_direction == DMA_FROM_DEVICE ?
994 result = usb_stor_bulk_srb(us, pipe, srb);
1028 if (srb->cmnd[0] == REQUEST_SENSE ||
1029 srb->cmnd[0] == INQUIRY)
1115 int usb_stor_Bulk_transport(struct scsi_cmnd *srb, struct us_data *us)
1119 unsigned int transfer_length = scsi_bufflen(srb);
1135 bcb->Flags = srb->sc_data_direction == DMA_FROM_DEVICE ?
1138 bcb->Lun = srb->device->lun;
1140 bcb->Lun |= srb->device->id << 4;
1141 bcb->Length = srb->cmd_len;
1145 memcpy(bcb->CDB, srb->cmnd, bcb->Length);
1171 unsigned int pipe = srb->sc_data_direction == DMA_FROM_DEVICE ?
1173 result = usb_stor_bulk_srb(us, pipe, srb);
1195 srb->sc_data_direction == DMA_FROM_DEVICE &&
1196 transfer_length - scsi_get_resid(srb) ==
1202 US_BULK_CS_WRAP_LEN, srb, &sg,
1208 scsi_set_resid(srb, transfer_length);
1290 scsi_get_resid(srb) == 0 &&
1291 ((srb->cmnd[0] == INQUIRY &&
1293 (srb->cmnd[0] == READ_CAPACITY &&
1299 scsi_set_resid(srb, max(scsi_get_resid(srb), residue));
1308 memcpy(srb->sense_buffer,