Lines Matching refs:rtwusb

24 static void rtw_usb_fill_tx_checksum(struct rtw_usb *rtwusb,  in rtw_usb_fill_tx_checksum()  argument
28 struct rtw_dev *rtwdev = rtwusb->rtwdev; in rtw_usb_fill_tx_checksum()
38 struct rtw_usb *rtwusb = rtw_get_usb_priv(rtwdev); in rtw_usb_reg_sec() local
39 struct usb_device *udev = rtwusb->udev; in rtw_usb_reg_sec()
68 struct rtw_usb *rtwusb = rtw_get_usb_priv(rtwdev); in rtw_usb_read() local
69 struct usb_device *udev = rtwusb->udev; in rtw_usb_read()
75 spin_lock_irqsave(&rtwusb->usb_lock, flags); in rtw_usb_read()
77 idx = rtwusb->usb_data_index; in rtw_usb_read()
78 rtwusb->usb_data_index = (idx + 1) & (RTW_USB_MAX_RXTX_COUNT - 1); in rtw_usb_read()
80 spin_unlock_irqrestore(&rtwusb->usb_lock, flags); in rtw_usb_read()
82 data = &rtwusb->usb_data[idx]; in rtw_usb_read()
116 struct rtw_usb *rtwusb = (struct rtw_usb *)rtwdev->priv; in rtw_usb_write() local
117 struct usb_device *udev = rtwusb->udev; in rtw_usb_write()
123 spin_lock_irqsave(&rtwusb->usb_lock, flags); in rtw_usb_write()
125 idx = rtwusb->usb_data_index; in rtw_usb_write()
126 rtwusb->usb_data_index = (idx + 1) & (RTW_USB_MAX_RXTX_COUNT - 1); in rtw_usb_write()
128 spin_unlock_irqrestore(&rtwusb->usb_lock, flags); in rtw_usb_write()
130 data = &rtwusb->usb_data[idx]; in rtw_usb_write()
181 struct rtw_usb *rtwusb = rtw_get_usb_priv(rtwdev); in rtw_usb_parse() local
197 if (rtwusb->pipe_in) { in rtw_usb_parse()
202 rtwusb->pipe_in = num; in rtw_usb_parse()
207 if (rtwusb->pipe_interrupt) { in rtw_usb_parse()
212 rtwusb->pipe_interrupt = num; in rtw_usb_parse()
217 if (num_out_pipes >= ARRAY_SIZE(rtwusb->out_ep)) { in rtw_usb_parse()
222 rtwusb->out_ep[num_out_pipes++] = num; in rtw_usb_parse()
235 rtwusb->qsel_to_ep[TX_DESC_QSEL_TID0] = dma_mapping_to_ep(rqpn->dma_map_be); in rtw_usb_parse()
236 rtwusb->qsel_to_ep[TX_DESC_QSEL_TID1] = dma_mapping_to_ep(rqpn->dma_map_bk); in rtw_usb_parse()
237 rtwusb->qsel_to_ep[TX_DESC_QSEL_TID2] = dma_mapping_to_ep(rqpn->dma_map_bk); in rtw_usb_parse()
238 rtwusb->qsel_to_ep[TX_DESC_QSEL_TID3] = dma_mapping_to_ep(rqpn->dma_map_be); in rtw_usb_parse()
239 rtwusb->qsel_to_ep[TX_DESC_QSEL_TID4] = dma_mapping_to_ep(rqpn->dma_map_vi); in rtw_usb_parse()
240 rtwusb->qsel_to_ep[TX_DESC_QSEL_TID5] = dma_mapping_to_ep(rqpn->dma_map_vi); in rtw_usb_parse()
241 rtwusb->qsel_to_ep[TX_DESC_QSEL_TID6] = dma_mapping_to_ep(rqpn->dma_map_vo); in rtw_usb_parse()
242 rtwusb->qsel_to_ep[TX_DESC_QSEL_TID7] = dma_mapping_to_ep(rqpn->dma_map_vo); in rtw_usb_parse()
243 rtwusb->qsel_to_ep[TX_DESC_QSEL_TID8] = -EINVAL; in rtw_usb_parse()
244 rtwusb->qsel_to_ep[TX_DESC_QSEL_TID9] = -EINVAL; in rtw_usb_parse()
245 rtwusb->qsel_to_ep[TX_DESC_QSEL_TID10] = -EINVAL; in rtw_usb_parse()
246 rtwusb->qsel_to_ep[TX_DESC_QSEL_TID11] = -EINVAL; in rtw_usb_parse()
247 rtwusb->qsel_to_ep[TX_DESC_QSEL_TID12] = -EINVAL; in rtw_usb_parse()
248 rtwusb->qsel_to_ep[TX_DESC_QSEL_TID13] = -EINVAL; in rtw_usb_parse()
249 rtwusb->qsel_to_ep[TX_DESC_QSEL_TID14] = -EINVAL; in rtw_usb_parse()
250 rtwusb->qsel_to_ep[TX_DESC_QSEL_TID15] = -EINVAL; in rtw_usb_parse()
251 rtwusb->qsel_to_ep[TX_DESC_QSEL_BEACON] = dma_mapping_to_ep(rqpn->dma_map_hi); in rtw_usb_parse()
252 rtwusb->qsel_to_ep[TX_DESC_QSEL_HIGH] = dma_mapping_to_ep(rqpn->dma_map_hi); in rtw_usb_parse()
253 rtwusb->qsel_to_ep[TX_DESC_QSEL_MGMT] = dma_mapping_to_ep(rqpn->dma_map_mg); in rtw_usb_parse()
254 rtwusb->qsel_to_ep[TX_DESC_QSEL_H2C] = dma_mapping_to_ep(rqpn->dma_map_hi); in rtw_usb_parse()
297 static int qsel_to_ep(struct rtw_usb *rtwusb, unsigned int qsel) in qsel_to_ep() argument
299 if (qsel >= ARRAY_SIZE(rtwusb->qsel_to_ep)) in qsel_to_ep()
302 return rtwusb->qsel_to_ep[qsel]; in qsel_to_ep()
308 struct rtw_usb *rtwusb = rtw_get_usb_priv(rtwdev); in rtw_usb_write_port() local
309 struct usb_device *usbd = rtwusb->udev; in rtw_usb_write_port()
313 int ep = qsel_to_ep(rtwusb, qsel); in rtw_usb_write_port()
318 pipe = usb_sndbulkpipe(usbd, rtwusb->out_ep[ep]); in rtw_usb_write_port()
332 static bool rtw_usb_tx_agg_skb(struct rtw_usb *rtwusb, struct sk_buff_head *list) in rtw_usb_tx_agg_skb() argument
334 struct rtw_dev *rtwdev = rtwusb->rtwdev; in rtw_usb_tx_agg_skb()
390 rtw_usb_fill_tx_checksum(rtwusb, skb_head, agg_num); in rtw_usb_tx_agg_skb()
404 struct rtw_usb *rtwusb = container_of(work, struct rtw_usb, tx_work); in rtw_usb_tx_handler() local
407 for (i = ARRAY_SIZE(rtwusb->tx_queue) - 1; i >= 0; i--) { in rtw_usb_tx_handler()
409 struct sk_buff_head *list = &rtwusb->tx_queue[i]; in rtw_usb_tx_handler()
411 if (!rtw_usb_tx_agg_skb(rtwusb, list)) in rtw_usb_tx_handler()
417 static void rtw_usb_tx_queue_purge(struct rtw_usb *rtwusb) in rtw_usb_tx_queue_purge() argument
421 for (i = 0; i < ARRAY_SIZE(rtwusb->tx_queue); i++) in rtw_usb_tx_queue_purge()
422 skb_queue_purge(&rtwusb->tx_queue[i]); in rtw_usb_tx_queue_purge()
512 struct rtw_usb *rtwusb = rtw_get_usb_priv(rtwdev); in rtw_usb_tx_write() local
521 ep = qsel_to_ep(rtwusb, pkt_info->qsel); in rtw_usb_tx_write()
527 skb_queue_tail(&rtwusb->tx_queue[ep], skb); in rtw_usb_tx_write()
534 struct rtw_usb *rtwusb = rtw_get_usb_priv(rtwdev); in rtw_usb_tx_kick_off() local
536 queue_work(rtwusb->txwq, &rtwusb->tx_work); in rtw_usb_tx_kick_off()
541 struct rtw_usb *rtwusb = container_of(work, struct rtw_usb, rx_work); in rtw_usb_rx_handler() local
542 struct rtw_dev *rtwdev = rtwusb->rtwdev; in rtw_usb_rx_handler()
553 skb = skb_dequeue(&rtwusb->rx_queue); in rtw_usb_rx_handler()
569 if (skb_queue_len(&rtwusb->rx_queue) >= RTW_USB_MAX_RXQ_LEN) { in rtw_usb_rx_handler()
584 static void rtw_usb_rx_resubmit(struct rtw_usb *rtwusb, struct rx_usb_ctrl_block *rxcb) in rtw_usb_rx_resubmit() argument
586 struct rtw_dev *rtwdev = rtwusb->rtwdev; in rtw_usb_rx_resubmit()
593 usb_fill_bulk_urb(rxcb->rx_urb, rtwusb->udev, in rtw_usb_rx_resubmit()
594 usb_rcvbulkpipe(rtwusb->udev, rtwusb->pipe_in), in rtw_usb_rx_resubmit()
611 struct rtw_usb *rtwusb = rtw_get_usb_priv(rtwdev); in rtw_usb_read_port_complete() local
622 skb_queue_tail(&rtwusb->rx_queue, skb); in rtw_usb_read_port_complete()
623 queue_work(rtwusb->rxwq, &rtwusb->rx_work); in rtw_usb_read_port_complete()
625 rtw_usb_rx_resubmit(rtwusb, rxcb); in rtw_usb_read_port_complete()
649 static void rtw_usb_cancel_rx_bufs(struct rtw_usb *rtwusb) in rtw_usb_cancel_rx_bufs() argument
655 rxcb = &rtwusb->rx_cb[i]; in rtw_usb_cancel_rx_bufs()
660 static void rtw_usb_free_rx_bufs(struct rtw_usb *rtwusb) in rtw_usb_free_rx_bufs() argument
666 rxcb = &rtwusb->rx_cb[i]; in rtw_usb_free_rx_bufs()
672 static int rtw_usb_alloc_rx_bufs(struct rtw_usb *rtwusb) in rtw_usb_alloc_rx_bufs() argument
677 struct rx_usb_ctrl_block *rxcb = &rtwusb->rx_cb[i]; in rtw_usb_alloc_rx_bufs()
679 rxcb->rtwdev = rtwusb->rtwdev; in rtw_usb_alloc_rx_bufs()
687 rtw_usb_free_rx_bufs(rtwusb); in rtw_usb_alloc_rx_bufs()
744 struct rtw_usb *rtwusb = rtw_get_usb_priv(rtwdev); in rtw_usb_init_rx() local
746 rtwusb->rxwq = create_singlethread_workqueue("rtw88_usb: rx wq"); in rtw_usb_init_rx()
747 if (!rtwusb->rxwq) { in rtw_usb_init_rx()
752 skb_queue_head_init(&rtwusb->rx_queue); in rtw_usb_init_rx()
754 INIT_WORK(&rtwusb->rx_work, rtw_usb_rx_handler); in rtw_usb_init_rx()
761 struct rtw_usb *rtwusb = rtw_get_usb_priv(rtwdev); in rtw_usb_setup_rx() local
765 struct rx_usb_ctrl_block *rxcb = &rtwusb->rx_cb[i]; in rtw_usb_setup_rx()
767 rtw_usb_rx_resubmit(rtwusb, rxcb); in rtw_usb_setup_rx()
773 struct rtw_usb *rtwusb = rtw_get_usb_priv(rtwdev); in rtw_usb_deinit_rx() local
775 skb_queue_purge(&rtwusb->rx_queue); in rtw_usb_deinit_rx()
777 flush_workqueue(rtwusb->rxwq); in rtw_usb_deinit_rx()
778 destroy_workqueue(rtwusb->rxwq); in rtw_usb_deinit_rx()
783 struct rtw_usb *rtwusb = rtw_get_usb_priv(rtwdev); in rtw_usb_init_tx() local
786 rtwusb->txwq = create_singlethread_workqueue("rtw88_usb: tx wq"); in rtw_usb_init_tx()
787 if (!rtwusb->txwq) { in rtw_usb_init_tx()
792 for (i = 0; i < ARRAY_SIZE(rtwusb->tx_queue); i++) in rtw_usb_init_tx()
793 skb_queue_head_init(&rtwusb->tx_queue[i]); in rtw_usb_init_tx()
795 INIT_WORK(&rtwusb->tx_work, rtw_usb_tx_handler); in rtw_usb_init_tx()
802 struct rtw_usb *rtwusb = rtw_get_usb_priv(rtwdev); in rtw_usb_deinit_tx() local
804 rtw_usb_tx_queue_purge(rtwusb); in rtw_usb_deinit_tx()
805 flush_workqueue(rtwusb->txwq); in rtw_usb_deinit_tx()
806 destroy_workqueue(rtwusb->txwq); in rtw_usb_deinit_tx()
812 struct rtw_usb *rtwusb = rtw_get_usb_priv(rtwdev); in rtw_usb_intf_init() local
816 rtwusb->udev = udev; in rtw_usb_intf_init()
821 rtwusb->usb_data = kcalloc(RTW_USB_MAX_RXTX_COUNT, sizeof(u32), in rtw_usb_intf_init()
823 if (!rtwusb->usb_data) in rtw_usb_intf_init()
829 spin_lock_init(&rtwusb->usb_lock); in rtw_usb_intf_init()
837 struct rtw_usb *rtwusb = rtw_get_usb_priv(rtwdev); in rtw_usb_intf_deinit() local
839 usb_put_dev(rtwusb->udev); in rtw_usb_intf_deinit()
840 kfree(rtwusb->usb_data); in rtw_usb_intf_deinit()
848 struct rtw_usb *rtwusb; in rtw_usb_probe() local
864 rtwusb = rtw_get_usb_priv(rtwdev); in rtw_usb_probe()
865 rtwusb->rtwdev = rtwdev; in rtw_usb_probe()
867 ret = rtw_usb_alloc_rx_bufs(rtwusb); in rtw_usb_probe()
922 rtw_usb_free_rx_bufs(rtwusb); in rtw_usb_probe()
935 struct rtw_usb *rtwusb; in rtw_usb_disconnect() local
941 rtwusb = rtw_get_usb_priv(rtwdev); in rtw_usb_disconnect()
943 rtw_usb_cancel_rx_bufs(rtwusb); in rtw_usb_disconnect()
949 if (rtwusb->udev->state != USB_STATE_NOTATTACHED) in rtw_usb_disconnect()
950 usb_reset_device(rtwusb->udev); in rtw_usb_disconnect()
952 rtw_usb_free_rx_bufs(rtwusb); in rtw_usb_disconnect()