Lines Matching refs:tx_buf
255 struct tx_buf *tx_buf = urb->context; in hif_usb_tx_cb() local
259 if (!tx_buf || !tx_buf->hif_dev) in hif_usb_tx_cb()
262 hif_dev = tx_buf->hif_dev; in hif_usb_tx_cb()
280 ath9k_skb_queue_purge(hif_dev, &tx_buf->skb_queue); in hif_usb_tx_cb()
291 ath9k_skb_queue_complete(hif_dev, &tx_buf->skb_queue, txok); in hif_usb_tx_cb()
294 tx_buf->len = tx_buf->offset = 0; in hif_usb_tx_cb()
295 __skb_queue_head_init(&tx_buf->skb_queue); in hif_usb_tx_cb()
299 list_move_tail(&tx_buf->list, &hif_dev->tx.tx_buf); in hif_usb_tx_cb()
310 struct tx_buf *tx_buf = NULL; in __hif_usb_tx() local
321 if (list_empty(&hif_dev->tx.tx_buf)) in __hif_usb_tx()
324 tx_buf = list_first_entry(&hif_dev->tx.tx_buf, struct tx_buf, list); in __hif_usb_tx()
325 list_move_tail(&tx_buf->list, &hif_dev->tx.tx_pending); in __hif_usb_tx()
338 buf = tx_buf->buf; in __hif_usb_tx()
339 buf += tx_buf->offset; in __hif_usb_tx()
345 tx_buf->len = nskb->len + 4; in __hif_usb_tx()
348 tx_buf->offset += (((tx_buf->len - 1) / 4) + 1) * 4; in __hif_usb_tx()
351 tx_buf->len += tx_buf->offset; in __hif_usb_tx()
353 __skb_queue_tail(&tx_buf->skb_queue, nskb); in __hif_usb_tx()
357 usb_fill_bulk_urb(tx_buf->urb, hif_dev->udev, in __hif_usb_tx()
359 tx_buf->buf, tx_buf->len, in __hif_usb_tx()
360 hif_usb_tx_cb, tx_buf); in __hif_usb_tx()
362 ret = usb_submit_urb(tx_buf->urb, GFP_ATOMIC); in __hif_usb_tx()
364 tx_buf->len = tx_buf->offset = 0; in __hif_usb_tx()
365 ath9k_skb_queue_complete(hif_dev, &tx_buf->skb_queue, false); in __hif_usb_tx()
366 __skb_queue_head_init(&tx_buf->skb_queue); in __hif_usb_tx()
367 list_move_tail(&tx_buf->list, &hif_dev->tx.tx_buf); in __hif_usb_tx()
439 struct tx_buf *tx_buf = NULL, *tx_buf_tmp = NULL; in hif_usb_stop() local
450 list_for_each_entry_safe(tx_buf, tx_buf_tmp, in hif_usb_stop()
452 usb_get_urb(tx_buf->urb); in hif_usb_stop()
454 usb_kill_urb(tx_buf->urb); in hif_usb_stop()
455 list_del(&tx_buf->list); in hif_usb_stop()
456 usb_free_urb(tx_buf->urb); in hif_usb_stop()
457 kfree(tx_buf->buf); in hif_usb_stop()
458 kfree(tx_buf); in hif_usb_stop()
806 struct tx_buf *tx_buf = NULL, *tx_buf_tmp = NULL; in ath9k_hif_usb_dealloc_tx_urbs() local
810 list_for_each_entry_safe(tx_buf, tx_buf_tmp, in ath9k_hif_usb_dealloc_tx_urbs()
811 &hif_dev->tx.tx_buf, list) { in ath9k_hif_usb_dealloc_tx_urbs()
812 list_del(&tx_buf->list); in ath9k_hif_usb_dealloc_tx_urbs()
813 usb_free_urb(tx_buf->urb); in ath9k_hif_usb_dealloc_tx_urbs()
814 kfree(tx_buf->buf); in ath9k_hif_usb_dealloc_tx_urbs()
815 kfree(tx_buf); in ath9k_hif_usb_dealloc_tx_urbs()
824 list_for_each_entry_safe(tx_buf, tx_buf_tmp, in ath9k_hif_usb_dealloc_tx_urbs()
826 usb_get_urb(tx_buf->urb); in ath9k_hif_usb_dealloc_tx_urbs()
828 usb_kill_urb(tx_buf->urb); in ath9k_hif_usb_dealloc_tx_urbs()
829 list_del(&tx_buf->list); in ath9k_hif_usb_dealloc_tx_urbs()
830 usb_free_urb(tx_buf->urb); in ath9k_hif_usb_dealloc_tx_urbs()
831 kfree(tx_buf->buf); in ath9k_hif_usb_dealloc_tx_urbs()
832 kfree(tx_buf); in ath9k_hif_usb_dealloc_tx_urbs()
842 struct tx_buf *tx_buf; in ath9k_hif_usb_alloc_tx_urbs() local
845 INIT_LIST_HEAD(&hif_dev->tx.tx_buf); in ath9k_hif_usb_alloc_tx_urbs()
852 tx_buf = kzalloc(sizeof(*tx_buf), GFP_KERNEL); in ath9k_hif_usb_alloc_tx_urbs()
853 if (!tx_buf) in ath9k_hif_usb_alloc_tx_urbs()
856 tx_buf->buf = kzalloc(MAX_TX_BUF_SIZE, GFP_KERNEL); in ath9k_hif_usb_alloc_tx_urbs()
857 if (!tx_buf->buf) in ath9k_hif_usb_alloc_tx_urbs()
860 tx_buf->urb = usb_alloc_urb(0, GFP_KERNEL); in ath9k_hif_usb_alloc_tx_urbs()
861 if (!tx_buf->urb) in ath9k_hif_usb_alloc_tx_urbs()
864 tx_buf->hif_dev = hif_dev; in ath9k_hif_usb_alloc_tx_urbs()
865 __skb_queue_head_init(&tx_buf->skb_queue); in ath9k_hif_usb_alloc_tx_urbs()
867 list_add_tail(&tx_buf->list, &hif_dev->tx.tx_buf); in ath9k_hif_usb_alloc_tx_urbs()
874 if (tx_buf) { in ath9k_hif_usb_alloc_tx_urbs()
875 kfree(tx_buf->buf); in ath9k_hif_usb_alloc_tx_urbs()
876 kfree(tx_buf); in ath9k_hif_usb_alloc_tx_urbs()