Lines Matching refs:urb
70 struct urb *cmd_urb;
71 struct urb *data_in_urb;
72 struct urb *data_out_urb;
177 static void uas_sense(struct urb *urb, struct scsi_cmnd *cmnd)
179 struct sense_iu *sense_iu = urb->transfer_buffer;
182 if (urb->actual_length > 16) {
184 if (len + 16 != urb->actual_length) {
185 int newlen = min(len + 16, urb->actual_length) - 16;
188 sdev_printk(KERN_INFO, sdev, "%s: urb length %d "
191 urb->actual_length, len, newlen);
263 static void uas_xfer_data(struct urb *urb, struct scsi_cmnd *cmnd,
299 static void uas_stat_cmplt(struct urb *urb)
301 struct iu *iu = urb->transfer_buffer;
302 struct Scsi_Host *shost = urb->context;
304 struct urb *data_in_urb = NULL;
305 struct urb *data_out_urb = NULL;
310 int status = urb->status;
320 dev_err(&urb->dev->dev, "stat urb: status %d\n", status);
326 dev_err(&urb->dev->dev,
327 "stat urb: no pending cmd for uas-tag %d\n", idx + 1);
341 uas_sense(urb, cmnd);
356 uas_xfer_data(urb, cmnd, SUBMIT_DATA_IN_URB);
364 uas_xfer_data(urb, cmnd, SUBMIT_DATA_OUT_URB);
380 usb_free_urb(urb);
394 static void uas_data_cmplt(struct urb *urb)
396 struct scsi_cmnd *cmnd = urb->context;
401 int status = urb->status;
405 if (cmdinfo->data_in_urb == urb) {
408 } else if (cmdinfo->data_out_urb == urb) {
416 /* Data urbs should not complete before the cmd urb is submitted */
428 scsi_set_resid(cmnd, sdb->length - urb->actual_length);
432 usb_free_urb(urb);
436 static void uas_cmd_cmplt(struct urb *urb)
438 if (urb->status)
439 dev_err(&urb->dev->dev, "cmd cmplt err %d\n", urb->status);
441 usb_free_urb(urb);
444 static struct urb *uas_alloc_data_urb(struct uas_dev_info *devinfo, gfp_t gfp,
450 struct urb *urb = usb_alloc_urb(0, gfp);
455 if (!urb)
457 usb_fill_bulk_urb(urb, udev, pipe, NULL, sdb->length,
460 urb->stream_id = cmdinfo->uas_tag;
461 urb->num_sgs = udev->bus->sg_tablesize ? sdb->table.nents : 0;
462 urb->sg = sdb->table.sgl;
464 return urb;
467 static struct urb *uas_alloc_sense_urb(struct uas_dev_info *devinfo, gfp_t gfp,
472 struct urb *urb = usb_alloc_urb(0, gfp);
475 if (!urb)
482 usb_fill_bulk_urb(urb, udev, devinfo->status_pipe, iu, sizeof(*iu),
485 urb->stream_id = cmdinfo->uas_tag;
486 urb->transfer_flags |= URB_FREE_BUFFER;
488 return urb;
490 usb_free_urb(urb);
494 static struct urb *uas_alloc_cmd_urb(struct uas_dev_info *devinfo, gfp_t gfp,
500 struct urb *urb = usb_alloc_urb(0, gfp);
504 if (!urb)
522 usb_fill_bulk_urb(urb, udev, devinfo->cmd_pipe, iu, sizeof(*iu) + len,
524 urb->transfer_flags |= URB_FREE_BUFFER;
526 return urb;
528 usb_free_urb(urb);
538 static struct urb *uas_submit_sense_urb(struct scsi_cmnd *cmnd, gfp_t gfp)
541 struct urb *urb;
544 urb = uas_alloc_sense_urb(devinfo, gfp, cmnd);
545 if (!urb)
547 usb_anchor_urb(urb, &devinfo->sense_urbs);
548 err = usb_submit_urb(urb, gfp);
550 usb_unanchor_urb(urb);
552 usb_free_urb(urb);
555 return urb;
562 struct urb *urb;
567 urb = uas_submit_sense_urb(cmnd, GFP_ATOMIC);
568 if (!urb)
737 struct urb *data_in_urb = NULL;
738 struct urb *data_out_urb = NULL;