Lines Matching refs:urb
70 struct urb *cmd_urb;
71 struct urb *data_in_urb;
72 struct urb *data_out_urb;
153 static void uas_sense(struct urb *urb, struct scsi_cmnd *cmnd) in uas_sense() argument
155 struct sense_iu *sense_iu = urb->transfer_buffer; in uas_sense()
158 if (urb->actual_length > 16) { in uas_sense()
160 if (len + 16 != urb->actual_length) { in uas_sense()
161 int newlen = min(len + 16, urb->actual_length) - 16; in uas_sense()
167 urb->actual_length, len, newlen); in uas_sense()
236 static void uas_xfer_data(struct urb *urb, struct scsi_cmnd *cmnd, in uas_xfer_data() argument
249 static void uas_stat_cmplt(struct urb *urb) in uas_stat_cmplt() argument
251 struct iu *iu = urb->transfer_buffer; in uas_stat_cmplt()
252 struct Scsi_Host *shost = urb->context; in uas_stat_cmplt()
254 struct urb *data_in_urb = NULL; in uas_stat_cmplt()
255 struct urb *data_out_urb = NULL; in uas_stat_cmplt()
260 int status = urb->status; in uas_stat_cmplt()
269 dev_err(&urb->dev->dev, "stat urb: status %d\n", status); in uas_stat_cmplt()
275 dev_err(&urb->dev->dev, in uas_stat_cmplt()
290 uas_sense(urb, cmnd); in uas_stat_cmplt()
305 uas_xfer_data(urb, cmnd, SUBMIT_DATA_IN_URB); in uas_stat_cmplt()
313 uas_xfer_data(urb, cmnd, SUBMIT_DATA_OUT_URB); in uas_stat_cmplt()
329 usb_free_urb(urb); in uas_stat_cmplt()
343 static void uas_data_cmplt(struct urb *urb) in uas_data_cmplt() argument
345 struct scsi_cmnd *cmnd = urb->context; in uas_data_cmplt()
350 int status = urb->status; in uas_data_cmplt()
354 if (cmdinfo->data_in_urb == urb) { in uas_data_cmplt()
358 } else if (cmdinfo->data_out_urb == urb) { in uas_data_cmplt()
383 sdb->resid = sdb->length - urb->actual_length; in uas_data_cmplt()
387 usb_free_urb(urb); in uas_data_cmplt()
391 static void uas_cmd_cmplt(struct urb *urb) in uas_cmd_cmplt() argument
393 if (urb->status) in uas_cmd_cmplt()
394 dev_err(&urb->dev->dev, "cmd cmplt err %d\n", urb->status); in uas_cmd_cmplt()
396 usb_free_urb(urb); in uas_cmd_cmplt()
399 static struct urb *uas_alloc_data_urb(struct uas_dev_info *devinfo, gfp_t gfp, in uas_alloc_data_urb()
405 struct urb *urb = usb_alloc_urb(0, gfp); in uas_alloc_data_urb() local
411 if (!urb) in uas_alloc_data_urb()
413 usb_fill_bulk_urb(urb, udev, pipe, NULL, sdb->length, in uas_alloc_data_urb()
416 urb->stream_id = cmdinfo->uas_tag; in uas_alloc_data_urb()
417 urb->num_sgs = udev->bus->sg_tablesize ? sdb->table.nents : 0; in uas_alloc_data_urb()
418 urb->sg = sdb->table.sgl; in uas_alloc_data_urb()
420 return urb; in uas_alloc_data_urb()
423 static struct urb *uas_alloc_sense_urb(struct uas_dev_info *devinfo, gfp_t gfp, in uas_alloc_sense_urb()
428 struct urb *urb = usb_alloc_urb(0, gfp); in uas_alloc_sense_urb() local
431 if (!urb) in uas_alloc_sense_urb()
438 usb_fill_bulk_urb(urb, udev, devinfo->status_pipe, iu, sizeof(*iu), in uas_alloc_sense_urb()
441 urb->stream_id = cmdinfo->uas_tag; in uas_alloc_sense_urb()
442 urb->transfer_flags |= URB_FREE_BUFFER; in uas_alloc_sense_urb()
444 return urb; in uas_alloc_sense_urb()
446 usb_free_urb(urb); in uas_alloc_sense_urb()
450 static struct urb *uas_alloc_cmd_urb(struct uas_dev_info *devinfo, gfp_t gfp, in uas_alloc_cmd_urb()
456 struct urb *urb = usb_alloc_urb(0, gfp); in uas_alloc_cmd_urb() local
460 if (!urb) in uas_alloc_cmd_urb()
478 usb_fill_bulk_urb(urb, udev, devinfo->cmd_pipe, iu, sizeof(*iu) + len, in uas_alloc_cmd_urb()
480 urb->transfer_flags |= URB_FREE_BUFFER; in uas_alloc_cmd_urb()
482 return urb; in uas_alloc_cmd_urb()
484 usb_free_urb(urb); 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()
497 struct urb *urb; in uas_submit_sense_urb() local
500 urb = uas_alloc_sense_urb(devinfo, gfp, cmnd); in uas_submit_sense_urb()
501 if (!urb) in uas_submit_sense_urb()
503 usb_anchor_urb(urb, &devinfo->sense_urbs); in uas_submit_sense_urb()
504 err = usb_submit_urb(urb, gfp); in uas_submit_sense_urb()
506 usb_unanchor_urb(urb); in uas_submit_sense_urb()
508 usb_free_urb(urb); in uas_submit_sense_urb()
511 return urb; in uas_submit_sense_urb()
518 struct urb *urb; in uas_submit_urbs() local
523 urb = uas_submit_sense_urb(cmnd, gfp); in uas_submit_urbs()
524 if (!urb) in uas_submit_urbs()
682 struct urb *data_in_urb = NULL; in DEF_SCSI_QCMD()
683 struct urb *data_out_urb = NULL; in DEF_SCSI_QCMD()