Lines Matching refs:usb

12 #include <linux/usb.h>
23 #include "usb.h"
36 void plfxlc_send_packet_from_data_queue(struct plfxlc_usb *usb)
38 struct plfxlc_usb_tx *tx = &usb->tx;
44 last_served_sidx = usb->sidx;
46 usb->sidx = (usb->sidx + 1) % MAX_STA_NUM;
47 if (!(tx->station[usb->sidx].flag & STATION_CONNECTED_FLAG))
49 if (!(tx->station[usb->sidx].flag & STATION_FIFO_FULL_FLAG))
50 skb = skb_peek(&tx->station[usb->sidx].data_list);
51 } while ((usb->sidx != last_served_sidx) && (!skb));
54 skb = skb_dequeue(&tx->station[usb->sidx].data_list);
55 plfxlc_usb_wreq_async(usb, skb->data, skb->len, USB_REQ_DATA_TX,
57 if (skb_queue_len(&tx->station[usb->sidx].data_list) <= 60)
58 ieee80211_wake_queues(plfxlc_usb_to_hw(usb));
63 static void handle_rx_packet(struct plfxlc_usb *usb, const u8 *buffer,
66 plfxlc_mac_rx(plfxlc_usb_to_hw(usb), buffer, length);
72 struct plfxlc_usb *usb;
87 usb = urb->context;
89 if (usb->initialized != 1) {
90 pr_err("usb is not initialized\n");
94 tx = &usb->tx;
124 if (usb->initialized && usb->link_up)
125 handle_rx_packet(usb, buffer, length);
133 dev_dbg(&usb->intf->dev,
140 dev_dbg(&usb->intf->dev, "FIFO full packet receipt\n");
145 plfxlc_send_packet_from_data_queue(usb);
148 usb->link_up = 1;
149 dev_dbg(&usb->intf->dev, "ST_CONNECT_MSG packet receipt\n");
152 usb->link_up = 0;
153 dev_dbg(&usb->intf->dev, "ST_DISCONN_MSG packet receipt\n");
156 dev_dbg(&usb->intf->dev, "Unknown packet receipt\n");
166 static struct urb *alloc_rx_urb(struct plfxlc_usb *usb)
168 struct usb_device *udev = plfxlc_usb_to_usbdev(usb);
185 rx_urb_complete, usb);
200 static int __lf_x_usb_enable_rx(struct plfxlc_usb *usb)
202 struct plfxlc_usb_rx *rx = &usb->rx;
212 urbs[i] = alloc_rx_urb(usb);
219 dev_dbg(plfxlc_usb_dev(usb), "irq_disabled %d\n", irqs_disabled());
254 int plfxlc_usb_enable_rx(struct plfxlc_usb *usb)
256 struct plfxlc_usb_rx *rx = &usb->rx;
260 r = __lf_x_usb_enable_rx(usb);
262 usb->rx_usb_enabled = 1;
269 static void __lf_x_usb_disable_rx(struct plfxlc_usb *usb)
271 struct plfxlc_usb_rx *rx = &usb->rx;
294 void plfxlc_usb_disable_rx(struct plfxlc_usb *usb)
296 struct plfxlc_usb_rx *rx = &usb->rx;
299 __lf_x_usb_disable_rx(usb);
300 usb->rx_usb_enabled = 0;
304 void plfxlc_usb_disable_tx(struct plfxlc_usb *usb)
306 struct plfxlc_usb_tx *tx = &usb->tx;
325 void plfxlc_usb_enable_tx(struct plfxlc_usb *usb)
327 struct plfxlc_usb_tx *tx = &usb->tx;
333 ieee80211_wake_queues(plfxlc_usb_to_hw(usb));
341 struct plfxlc_usb *usb;
346 /* grab 'usb' pointer before handing off the skb (since
349 usb = &plfxlc_hw_mac(info->rate_driver_data[0])->chip.usb;
368 plfxlc_send_packet_from_data_queue(usb);
372 static inline void init_usb_rx(struct plfxlc_usb *usb)
374 struct plfxlc_usb_rx *rx = &usb->rx;
379 if (interface_to_usbdev(usb->intf)->speed == USB_SPEED_HIGH)
385 dev_dbg(plfxlc_usb_dev(usb), "fragment_length error\n");
388 static inline void init_usb_tx(struct plfxlc_usb *usb)
390 struct plfxlc_usb_tx *tx = &usb->tx;
399 void plfxlc_usb_init(struct plfxlc_usb *usb, struct ieee80211_hw *hw,
402 memset(usb, 0, sizeof(*usb));
403 usb->intf = usb_get_intf(intf);
404 usb_set_intfdata(usb->intf, hw);
405 init_usb_tx(usb);
406 init_usb_rx(usb);
409 void plfxlc_usb_release(struct plfxlc_usb *usb)
411 plfxlc_op_stop(plfxlc_usb_to_hw(usb));
412 plfxlc_usb_disable_tx(usb);
413 plfxlc_usb_disable_rx(usb);
414 usb_set_intfdata(usb->intf, NULL);
415 usb_put_intf(usb->intf);
432 int plfxlc_usb_init_hw(struct plfxlc_usb *usb)
436 r = usb_reset_configuration(plfxlc_usb_to_usbdev(usb));
438 dev_err(plfxlc_usb_dev(usb), "cfg reset failed (%d)\n", r);
490 int plfxlc_usb_wreq_async(struct plfxlc_usb *usb, const u8 *buffer,
495 struct usb_device *udev = interface_to_usbdev(usb->ez_usb);
549 struct plfxlc_usb *usb = from_timer(usb, t, tx.tx_retry_timer);
551 plfxlc_send_packet_from_data_queue(usb);
552 timer_setup(&usb->tx.tx_retry_timer,
554 mod_timer(&usb->tx.tx_retry_timer, jiffies + TX_RETRY_BACKOFF_JIFF);
559 struct plfxlc_usb *usb = from_timer(usb, t, sta_queue_cleanup);
560 struct plfxlc_usb_tx *tx = &usb->tx;
573 timer_setup(&usb->sta_queue_cleanup,
575 mod_timer(&usb->sta_queue_cleanup, jiffies + STA_QUEUE_CLEANUP_JIFF);
585 struct plfxlc_usb *usb;
598 usb = &chip->usb;
599 usb->ez_usb = intf;
600 tx = &usb->tx;
640 r = plfxlc_usb_init_hw(usb);
661 r = plfxlc_usb_wreq(usb->ez_usb,
684 timer_setup(&usb->sta_queue_cleanup,
686 usb->sta_queue_cleanup.expires = jiffies + STA_QUEUE_CLEANUP_JIFF;
687 add_timer(&usb->sta_queue_cleanup);
690 usb->initialized = true;
706 struct plfxlc_usb *usb;
715 usb = &mac->chip.usb;
717 del_timer_sync(&usb->tx.tx_retry_timer);
718 del_timer_sync(&usb->sta_queue_cleanup);
735 static void plfxlc_usb_resume(struct plfxlc_usb *usb)
737 struct plfxlc_mac *mac = plfxlc_usb_to_mac(usb);
740 r = plfxlc_op_start(plfxlc_usb_to_hw(usb));
742 dev_warn(plfxlc_usb_dev(usb),
745 if (usb->was_running)
748 usb_queue_reset_device(usb->intf);
755 dev_dbg(plfxlc_usb_dev(usb),
762 static void plfxlc_usb_stop(struct plfxlc_usb *usb)
764 plfxlc_op_stop(plfxlc_usb_to_hw(usb));
765 plfxlc_usb_disable_tx(usb);
766 plfxlc_usb_disable_rx(usb);
768 usb->initialized = false;
775 struct plfxlc_usb *usb;
781 usb = &mac->chip.usb;
783 usb->was_running = test_bit(PURELIFI_DEVICE_RUNNING, &mac->flags);
785 plfxlc_usb_stop(usb);
794 struct plfxlc_usb *usb;
800 usb = &mac->chip.usb;
802 if (usb->was_running)
803 plfxlc_usb_resume(usb);
822 return &mac->chip.usb;
892 MODULE_DEVICE_TABLE(usb, usb_ids);