Lines Matching refs:urb
30 * usbatm_usb_send_data_context->urb to a pointer and adding code
42 * 1.3: - Added multiple send urb support
96 #define THROTTLE_MSECS 100 /* delay to recover processing after urb submission fails */
196 static struct urb *usbatm_pop_urb(struct usbatm_channel *channel)
198 struct urb *urb;
206 urb = list_entry(channel->list.next, struct urb, urb_list);
207 list_del(&urb->urb_list);
210 return urb;
213 static int usbatm_submit_urb(struct urb *urb)
215 struct usbatm_channel *channel = urb->context;
218 /* vdbg("%s: submitting urb 0x%p, size %u",
219 __func__, urb, urb->transfer_buffer_length); */
221 ret = usb_submit_urb(urb, GFP_ATOMIC);
224 atm_warn(channel->usbatm, "%s: urb 0x%p submission failed (%d)!\n",
225 __func__, urb, ret);
228 urb->status = -EAGAIN;
232 list_add(&urb->urb_list, &channel->list);
243 static void usbatm_complete(struct urb *urb)
245 struct usbatm_channel *channel = urb->context;
247 int status = urb->status;
249 /* vdbg("%s: urb 0x%p, status %d, actual_length %d",
250 __func__, urb, status, urb->actual_length); */
256 list_add_tail(&urb->urb_list, &channel->list);
267 atm_warn(channel->usbatm, "%s: urb 0x%p failed (%d)!\n",
268 __func__, urb, status);
518 struct urb *urb;
520 while ((urb = usbatm_pop_urb(&instance->rx_channel))) {
522 "%s: processing urb 0x%p", __func__, urb);
524 if (usb_pipeisoc(urb->pipe)) {
530 for (i = 0; i < urb->number_of_packets; i++) {
531 if (!urb->iso_frame_desc[i].status) {
532 unsigned int actual_length = urb->iso_frame_desc[i].actual_length;
535 merge_start = (unsigned char *)urb->transfer_buffer + urb->iso_frame_desc[i].offset;
542 atm_rldbg(instance, "%s: status %d in frame %d!\n", __func__, urb->status, i);
553 if (!urb->status)
554 usbatm_extract_cells(instance, urb->transfer_buffer, urb->actual_length);
558 if (usbatm_submit_urb(urb))
573 struct urb *urb = NULL;
582 if (!urb) {
583 urb = usbatm_pop_urb(&instance->tx_channel);
584 if (!urb)
586 buffer = urb->transfer_buffer;
587 bytes_written = (urb->status == -EAGAIN) ?
588 urb->transfer_buffer_length : 0;
596 "%s: wrote %u bytes from skb 0x%p to urb 0x%p",
597 __func__, bytes_written, skb, urb);
609 urb->transfer_buffer_length = bytes_written;
611 if (usbatm_submit_urb(urb))
613 urb = NULL;
1020 instance = kzalloc(sizeof(*instance) + sizeof(struct urb *) * (num_rcv_urbs + num_snd_urbs), GFP_KERNEL);
1123 struct urb *urb;
1126 urb = usb_alloc_urb(iso_packets, GFP_KERNEL);
1127 if (!urb) {
1132 instance->urbs[i] = urb;
1141 usb_fill_bulk_urb(urb, instance->usb_dev, channel->endpoint,
1145 urb->interval = 1;
1146 urb->transfer_flags = URB_ISO_ASAP;
1147 urb->number_of_packets = iso_packets;
1149 urb->iso_frame_desc[j].offset = channel->packet_size * j;
1150 urb->iso_frame_desc[j].length = channel->packet_size;
1156 list_add_tail(&urb->urb_list, &channel->list);
1158 vdbg(&intf->dev, "%s: alloced buffer 0x%p buf size %u urb 0x%p",
1159 __func__, urb->transfer_buffer, urb->transfer_buffer_length, urb);