Lines Matching refs:urb
211 static struct urb *usbatm_pop_urb(struct usbatm_channel *channel) in usbatm_pop_urb()
213 struct urb *urb; in usbatm_pop_urb() local
221 urb = list_entry(channel->list.next, struct urb, urb_list); in usbatm_pop_urb()
222 list_del(&urb->urb_list); in usbatm_pop_urb()
225 return urb; in usbatm_pop_urb()
228 static int usbatm_submit_urb(struct urb *urb) in usbatm_submit_urb() argument
230 struct usbatm_channel *channel = urb->context; in usbatm_submit_urb()
236 ret = usb_submit_urb(urb, GFP_ATOMIC); in usbatm_submit_urb()
240 __func__, urb, ret); in usbatm_submit_urb()
243 urb->status = -EAGAIN; in usbatm_submit_urb()
247 list_add(&urb->urb_list, &channel->list); in usbatm_submit_urb()
258 static void usbatm_complete(struct urb *urb) in usbatm_complete() argument
260 struct usbatm_channel *channel = urb->context; in usbatm_complete()
262 int status = urb->status; in usbatm_complete()
271 list_add_tail(&urb->urb_list, &channel->list); in usbatm_complete()
283 __func__, urb, status); in usbatm_complete()
531 struct urb *urb; in usbatm_rx_process() local
533 while ((urb = usbatm_pop_urb(&instance->rx_channel))) { in usbatm_rx_process()
535 "%s: processing urb 0x%p", __func__, urb); in usbatm_rx_process()
537 if (usb_pipeisoc(urb->pipe)) { in usbatm_rx_process()
543 for (i = 0; i < urb->number_of_packets; i++) { in usbatm_rx_process()
544 if (!urb->iso_frame_desc[i].status) { in usbatm_rx_process()
545 unsigned int actual_length = urb->iso_frame_desc[i].actual_length; in usbatm_rx_process()
548 merge_start = (unsigned char *)urb->transfer_buffer + urb->iso_frame_desc[i].offset; in usbatm_rx_process()
555 atm_rldbg(instance, "%s: status %d in frame %d!\n", __func__, urb->status, i); in usbatm_rx_process()
566 if (!urb->status) in usbatm_rx_process()
567 usbatm_extract_cells(instance, urb->transfer_buffer, urb->actual_length); in usbatm_rx_process()
571 if (usbatm_submit_urb(urb)) in usbatm_rx_process()
585 struct urb *urb = NULL; in usbatm_tx_process() local
594 if (!urb) { in usbatm_tx_process()
595 urb = usbatm_pop_urb(&instance->tx_channel); in usbatm_tx_process()
596 if (!urb) in usbatm_tx_process()
598 buffer = urb->transfer_buffer; in usbatm_tx_process()
599 bytes_written = (urb->status == -EAGAIN) ? in usbatm_tx_process()
600 urb->transfer_buffer_length : 0; in usbatm_tx_process()
609 __func__, bytes_written, skb, urb); in usbatm_tx_process()
621 urb->transfer_buffer_length = bytes_written; in usbatm_tx_process()
623 if (usbatm_submit_urb(urb)) in usbatm_tx_process()
625 urb = NULL; in usbatm_tx_process()
1032 …instance = kzalloc(sizeof(*instance) + sizeof(struct urb *) * (num_rcv_urbs + num_snd_urbs), GFP_K… in usbatm_usb_probe()
1137 struct urb *urb; in usbatm_usb_probe() local
1140 urb = usb_alloc_urb(iso_packets, GFP_KERNEL); in usbatm_usb_probe()
1141 if (!urb) { in usbatm_usb_probe()
1147 instance->urbs[i] = urb; in usbatm_usb_probe()
1157 usb_fill_bulk_urb(urb, instance->usb_dev, channel->endpoint, in usbatm_usb_probe()
1161 urb->interval = 1; in usbatm_usb_probe()
1162 urb->transfer_flags = URB_ISO_ASAP; in usbatm_usb_probe()
1163 urb->number_of_packets = iso_packets; in usbatm_usb_probe()
1165 urb->iso_frame_desc[j].offset = channel->packet_size * j; in usbatm_usb_probe()
1166 urb->iso_frame_desc[j].length = channel->packet_size; in usbatm_usb_probe()
1172 list_add_tail(&urb->urb_list, &channel->list); in usbatm_usb_probe()
1175 __func__, urb->transfer_buffer, urb->transfer_buffer_length, urb); in usbatm_usb_probe()