Lines Matching refs:pipe

79 	struct ath6kl_usb_pipe *pipe;  member
130 ath6kl_usb_alloc_urb_from_pipe(struct ath6kl_usb_pipe *pipe) in ath6kl_usb_alloc_urb_from_pipe() argument
135 spin_lock_irqsave(&pipe->ar_usb->cs_lock, flags); in ath6kl_usb_alloc_urb_from_pipe()
136 if (!list_empty(&pipe->urb_list_head)) { in ath6kl_usb_alloc_urb_from_pipe()
138 list_first_entry(&pipe->urb_list_head, in ath6kl_usb_alloc_urb_from_pipe()
141 pipe->urb_cnt--; in ath6kl_usb_alloc_urb_from_pipe()
143 spin_unlock_irqrestore(&pipe->ar_usb->cs_lock, flags); in ath6kl_usb_alloc_urb_from_pipe()
148 static void ath6kl_usb_free_urb_to_pipe(struct ath6kl_usb_pipe *pipe, in ath6kl_usb_free_urb_to_pipe() argument
153 spin_lock_irqsave(&pipe->ar_usb->cs_lock, flags); in ath6kl_usb_free_urb_to_pipe()
154 pipe->urb_cnt++; in ath6kl_usb_free_urb_to_pipe()
156 list_add(&urb_context->link, &pipe->urb_list_head); in ath6kl_usb_free_urb_to_pipe()
157 spin_unlock_irqrestore(&pipe->ar_usb->cs_lock, flags); in ath6kl_usb_free_urb_to_pipe()
165 ath6kl_usb_free_urb_to_pipe(urb_context->pipe, urb_context); in ath6kl_usb_cleanup_recv_urb()
174 static int ath6kl_usb_alloc_pipe_resources(struct ath6kl_usb_pipe *pipe, in ath6kl_usb_alloc_pipe_resources() argument
180 INIT_LIST_HEAD(&pipe->urb_list_head); in ath6kl_usb_alloc_pipe_resources()
181 init_usb_anchor(&pipe->urb_submitted); in ath6kl_usb_alloc_pipe_resources()
191 urb_context->pipe = pipe; in ath6kl_usb_alloc_pipe_resources()
197 pipe->urb_alloc++; in ath6kl_usb_alloc_pipe_resources()
198 ath6kl_usb_free_urb_to_pipe(pipe, urb_context); in ath6kl_usb_alloc_pipe_resources()
203 pipe->logical_pipe_num, pipe->usb_pipe_handle, in ath6kl_usb_alloc_pipe_resources()
204 pipe->urb_alloc); in ath6kl_usb_alloc_pipe_resources()
210 static void ath6kl_usb_free_pipe_resources(struct ath6kl_usb_pipe *pipe) in ath6kl_usb_free_pipe_resources() argument
214 if (pipe->ar_usb == NULL) { in ath6kl_usb_free_pipe_resources()
222 pipe->logical_pipe_num, pipe->usb_pipe_handle, in ath6kl_usb_free_pipe_resources()
223 pipe->urb_alloc, pipe->urb_cnt); in ath6kl_usb_free_pipe_resources()
225 if (pipe->urb_alloc != pipe->urb_cnt) { in ath6kl_usb_free_pipe_resources()
229 pipe->logical_pipe_num, pipe->usb_pipe_handle, in ath6kl_usb_free_pipe_resources()
230 pipe->urb_alloc, pipe->urb_cnt); in ath6kl_usb_free_pipe_resources()
234 urb_context = ath6kl_usb_alloc_urb_from_pipe(pipe); in ath6kl_usb_free_pipe_resources()
300 struct ath6kl_usb_pipe *pipe; in ath6kl_usb_setup_pipe_resources() local
344 pipe = &ar_usb->pipes[pipe_num]; in ath6kl_usb_setup_pipe_resources()
345 if (pipe->ar_usb != NULL) { in ath6kl_usb_setup_pipe_resources()
350 pipe->ar_usb = ar_usb; in ath6kl_usb_setup_pipe_resources()
351 pipe->logical_pipe_num = pipe_num; in ath6kl_usb_setup_pipe_resources()
352 pipe->ep_address = endpoint->bEndpointAddress; in ath6kl_usb_setup_pipe_resources()
353 pipe->max_packet_size = le16_to_cpu(endpoint->wMaxPacketSize); in ath6kl_usb_setup_pipe_resources()
356 if (ATH6KL_USB_IS_DIR_IN(pipe->ep_address)) { in ath6kl_usb_setup_pipe_resources()
357 pipe->usb_pipe_handle = in ath6kl_usb_setup_pipe_resources()
359 pipe->ep_address); in ath6kl_usb_setup_pipe_resources()
361 pipe->usb_pipe_handle = in ath6kl_usb_setup_pipe_resources()
363 pipe->ep_address); in ath6kl_usb_setup_pipe_resources()
366 if (ATH6KL_USB_IS_DIR_IN(pipe->ep_address)) { in ath6kl_usb_setup_pipe_resources()
367 pipe->usb_pipe_handle = in ath6kl_usb_setup_pipe_resources()
369 pipe->ep_address); in ath6kl_usb_setup_pipe_resources()
371 pipe->usb_pipe_handle = in ath6kl_usb_setup_pipe_resources()
373 pipe->ep_address); in ath6kl_usb_setup_pipe_resources()
377 if (ATH6KL_USB_IS_DIR_IN(pipe->ep_address)) { in ath6kl_usb_setup_pipe_resources()
378 pipe->usb_pipe_handle = in ath6kl_usb_setup_pipe_resources()
380 pipe->ep_address); in ath6kl_usb_setup_pipe_resources()
382 pipe->usb_pipe_handle = in ath6kl_usb_setup_pipe_resources()
384 pipe->ep_address); in ath6kl_usb_setup_pipe_resources()
388 pipe->ep_desc = endpoint; in ath6kl_usb_setup_pipe_resources()
390 if (!ATH6KL_USB_IS_DIR_IN(pipe->ep_address)) in ath6kl_usb_setup_pipe_resources()
391 pipe->flags |= ATH6KL_USB_PIPE_FLAG_TX; in ath6kl_usb_setup_pipe_resources()
393 status = ath6kl_usb_alloc_pipe_resources(pipe, urbcount); in ath6kl_usb_setup_pipe_resources()
492 struct ath6kl_usb_pipe *pipe = urb_context->pipe; in ath6kl_usb_recv_complete() local
498 pipe->logical_pipe_num, urb->status, urb->actual_length, in ath6kl_usb_recv_complete()
516 __func__, pipe->logical_pipe_num, in ath6kl_usb_recv_complete()
517 pipe->ep_address, urb->status); in ath6kl_usb_recv_complete()
533 skb_queue_tail(&pipe->io_comp_queue, skb); in ath6kl_usb_recv_complete()
534 schedule_work(&pipe->io_complete_work); in ath6kl_usb_recv_complete()
540 pipe->urb_cnt >= pipe->urb_cnt_thresh) { in ath6kl_usb_recv_complete()
542 ath6kl_usb_post_recv_transfers(pipe, ATH6KL_USB_RX_BUFFER_SIZE); in ath6kl_usb_recv_complete()
549 struct ath6kl_usb_pipe *pipe = urb_context->pipe; in ath6kl_usb_usb_transmit_complete() local
554 __func__, pipe->logical_pipe_num, urb->status, in ath6kl_usb_usb_transmit_complete()
560 __func__, pipe->logical_pipe_num, urb->status); in ath6kl_usb_usb_transmit_complete()
565 ath6kl_usb_free_urb_to_pipe(urb_context->pipe, urb_context); in ath6kl_usb_usb_transmit_complete()
568 skb_queue_tail(&pipe->io_comp_queue, skb); in ath6kl_usb_usb_transmit_complete()
569 schedule_work(&pipe->io_complete_work); in ath6kl_usb_usb_transmit_complete()
574 struct ath6kl_usb_pipe *pipe = container_of(work, in ath6kl_usb_io_comp_work() local
580 ar_usb = pipe->ar_usb; in ath6kl_usb_io_comp_work()
582 while ((skb = skb_dequeue(&pipe->io_comp_queue))) { in ath6kl_usb_io_comp_work()
583 if (pipe->flags & ATH6KL_USB_PIPE_FLAG_TX) { in ath6kl_usb_io_comp_work()
591 pipe->logical_pipe_num); in ath6kl_usb_io_comp_work()
617 struct ath6kl_usb_pipe *pipe; in ath6kl_usb_create() local
631 pipe = &ar_usb->pipes[i]; in ath6kl_usb_create()
632 INIT_WORK(&pipe->io_complete_work, in ath6kl_usb_create()
634 skb_queue_head_init(&pipe->io_comp_queue); in ath6kl_usb_create()
696 struct ath6kl_usb_pipe *pipe = &device->pipes[PipeID]; in ath6kl_usb_send() local
706 urb_context = ath6kl_usb_alloc_urb_from_pipe(pipe); in ath6kl_usb_send()
715 __func__, PipeID, pipe->urb_cnt); in ath6kl_usb_send()
728 ath6kl_usb_free_urb_to_pipe(urb_context->pipe, in ath6kl_usb_send()
735 pipe->usb_pipe_handle, in ath6kl_usb_send()
740 if ((len % pipe->max_packet_size) == 0) { in ath6kl_usb_send()
747 pipe->logical_pipe_num, pipe->usb_pipe_handle, in ath6kl_usb_send()
748 pipe->ep_address, len); in ath6kl_usb_send()
750 usb_anchor_urb(urb, &pipe->urb_submitted); in ath6kl_usb_send()
758 ath6kl_usb_free_urb_to_pipe(urb_context->pipe, in ath6kl_usb_send()