Lines Matching refs:rt2x00dev
26 struct rt2x00_dev *rt2x00dev = queue->rt2x00dev; in rt2x00queue_alloc_rxskb() local
51 if (rt2x00_has_cap_hw_crypto(rt2x00dev)) { in rt2x00queue_alloc_rxskb()
76 if (rt2x00_has_cap_flag(rt2x00dev, REQUIRE_DMA)) { in rt2x00queue_alloc_rxskb()
79 skb_dma = dma_map_single(rt2x00dev->dev, skb->data, skb->len, in rt2x00queue_alloc_rxskb()
81 if (unlikely(dma_mapping_error(rt2x00dev->dev, skb_dma))) { in rt2x00queue_alloc_rxskb()
95 struct device *dev = entry->queue->rt2x00dev->dev; in rt2x00queue_map_txskb()
112 struct device *dev = entry->queue->rt2x00dev->dev; in rt2x00queue_unmap_skb()
176 static void rt2x00queue_create_tx_descriptor_seq(struct rt2x00_dev *rt2x00dev, in rt2x00queue_create_tx_descriptor_seq() argument
190 if (!rt2x00_has_cap_flag(rt2x00dev, REQUIRE_SW_SEQNO)) { in rt2x00queue_create_tx_descriptor_seq()
227 static void rt2x00queue_create_tx_descriptor_plcp(struct rt2x00_dev *rt2x00dev, in rt2x00queue_create_tx_descriptor_plcp() argument
250 data_length += rt2x00crypto_tx_overhead(rt2x00dev, skb); in rt2x00queue_create_tx_descriptor_plcp()
291 static void rt2x00queue_create_tx_descriptor_ht(struct rt2x00_dev *rt2x00dev, in rt2x00queue_create_tx_descriptor_ht() argument
329 if (test_bit(CONFIG_HT_DISABLED, &rt2x00dev->flags)) { in rt2x00queue_create_tx_descriptor_ht()
384 static void rt2x00queue_create_tx_descriptor(struct rt2x00_dev *rt2x00dev, in rt2x00queue_create_tx_descriptor() argument
425 if (txdesc->retry_limit >= rt2x00dev->long_retry) in rt2x00queue_create_tx_descriptor()
463 rate = ieee80211_get_tx_rate(rt2x00dev->hw, tx_info); in rt2x00queue_create_tx_descriptor()
474 rt2x00crypto_create_tx_descriptor(rt2x00dev, skb, txdesc); in rt2x00queue_create_tx_descriptor()
475 rt2x00queue_create_tx_descriptor_seq(rt2x00dev, skb, txdesc); in rt2x00queue_create_tx_descriptor()
477 if (rt2x00_has_cap_flag(rt2x00dev, REQUIRE_HT_TX_DESC)) in rt2x00queue_create_tx_descriptor()
478 rt2x00queue_create_tx_descriptor_ht(rt2x00dev, skb, txdesc, in rt2x00queue_create_tx_descriptor()
481 rt2x00queue_create_tx_descriptor_plcp(rt2x00dev, skb, txdesc, in rt2x00queue_create_tx_descriptor()
488 struct rt2x00_dev *rt2x00dev = entry->queue->rt2x00dev; in rt2x00queue_write_tx_data() local
495 if (unlikely(rt2x00dev->ops->lib->get_entry_state && in rt2x00queue_write_tx_data()
496 rt2x00dev->ops->lib->get_entry_state(entry))) { in rt2x00queue_write_tx_data()
497 rt2x00_err(rt2x00dev, in rt2x00queue_write_tx_data()
507 skb_push(entry->skb, rt2x00dev->extra_tx_headroom); in rt2x00queue_write_tx_data()
508 memset(entry->skb->data, 0, rt2x00dev->extra_tx_headroom); in rt2x00queue_write_tx_data()
513 if (rt2x00dev->ops->lib->write_tx_data) in rt2x00queue_write_tx_data()
514 rt2x00dev->ops->lib->write_tx_data(entry, txdesc); in rt2x00queue_write_tx_data()
519 if (rt2x00_has_cap_flag(rt2x00dev, REQUIRE_DMA) && in rt2x00queue_write_tx_data()
531 queue->rt2x00dev->ops->lib->write_tx_desc(entry, txdesc); in rt2x00queue_write_tx_descriptor()
537 rt2x00debug_dump_frame(queue->rt2x00dev, DUMP_FRAME_TX, entry); in rt2x00queue_write_tx_descriptor()
554 queue->rt2x00dev->ops->lib->kick_queue(queue); in rt2x00queue_kick_tx_queue()
559 struct rt2x00_dev *rt2x00dev = entry->queue->rt2x00dev; in rt2x00queue_bar_check() local
561 rt2x00dev->extra_tx_headroom); in rt2x00queue_bar_check()
594 spin_lock_bh(&rt2x00dev->bar_list_lock); in rt2x00queue_bar_check()
595 list_add_tail_rcu(&bar_entry->list, &rt2x00dev->bar_list); in rt2x00queue_bar_check()
596 spin_unlock_bh(&rt2x00dev->bar_list_lock); in rt2x00queue_bar_check()
614 rt2x00queue_create_tx_descriptor(queue->rt2x00dev, skb, &txdesc, sta); in rt2x00queue_write_tx_frame()
639 if (rt2x00_has_cap_flag(queue->rt2x00dev, REQUIRE_COPY_IV)) in rt2x00queue_write_tx_frame()
653 if (rt2x00_has_cap_flag(queue->rt2x00dev, REQUIRE_L2PAD)) in rt2x00queue_write_tx_frame()
655 else if (rt2x00_has_cap_flag(queue->rt2x00dev, REQUIRE_DMA)) in rt2x00queue_write_tx_frame()
664 rt2x00_dbg(queue->rt2x00dev, "Dropping frame due to full tx queue %d\n", in rt2x00queue_write_tx_frame()
674 rt2x00_err(queue->rt2x00dev, in rt2x00queue_write_tx_frame()
720 int rt2x00queue_clear_beacon(struct rt2x00_dev *rt2x00dev, in rt2x00queue_clear_beacon() argument
737 if (rt2x00dev->ops->lib->clear_beacon) in rt2x00queue_clear_beacon()
738 rt2x00dev->ops->lib->clear_beacon(intf->beacon); in rt2x00queue_clear_beacon()
743 int rt2x00queue_update_beacon(struct rt2x00_dev *rt2x00dev, in rt2x00queue_update_beacon() argument
758 intf->beacon->skb = ieee80211_beacon_get(rt2x00dev->hw, vif, 0); in rt2x00queue_update_beacon()
767 rt2x00queue_create_tx_descriptor(rt2x00dev, intf->beacon->skb, &txdesc, NULL); in rt2x00queue_update_beacon()
778 rt2x00dev->ops->lib->write_beacon(intf->beacon, &txdesc); in rt2x00queue_update_beacon()
797 rt2x00_err(queue->rt2x00dev, in rt2x00queue_for_each_entry()
846 rt2x00_err(queue->rt2x00dev, "Entry requested from invalid index type (%d)\n", in rt2x00queue_get_entry()
867 rt2x00_err(queue->rt2x00dev, in rt2x00queue_index_inc()
901 ieee80211_stop_queue(queue->rt2x00dev->hw, queue->qid); in rt2x00queue_pause_queue_nocheck()
909 if (!test_bit(DEVICE_STATE_PRESENT, &queue->rt2x00dev->flags) || in rt2x00queue_pause_queue()
920 if (!test_bit(DEVICE_STATE_PRESENT, &queue->rt2x00dev->flags) || in rt2x00queue_unpause_queue()
934 ieee80211_wake_queue(queue->rt2x00dev->hw, queue->qid); in rt2x00queue_unpause_queue()
941 queue->rt2x00dev->ops->lib->kick_queue(queue); in rt2x00queue_unpause_queue()
953 if (!test_bit(DEVICE_STATE_PRESENT, &queue->rt2x00dev->flags) || in rt2x00queue_start_queue()
961 queue->rt2x00dev->ops->lib->start_queue(queue); in rt2x00queue_start_queue()
980 queue->rt2x00dev->ops->lib->stop_queue(queue); in rt2x00queue_stop_queue()
1004 queue->rt2x00dev->ops->lib->kick_queue(queue); in rt2x00queue_flush_queue()
1011 if (likely(queue->rt2x00dev->ops->lib->flush_queue)) in rt2x00queue_flush_queue()
1012 queue->rt2x00dev->ops->lib->flush_queue(queue, drop); in rt2x00queue_flush_queue()
1018 rt2x00_warn(queue->rt2x00dev, "Queue %d failed to flush\n", in rt2x00queue_flush_queue()
1023 void rt2x00queue_start_queues(struct rt2x00_dev *rt2x00dev) in rt2x00queue_start_queues() argument
1031 tx_queue_for_each(rt2x00dev, queue) in rt2x00queue_start_queues()
1034 rt2x00queue_start_queue(rt2x00dev->rx); in rt2x00queue_start_queues()
1038 void rt2x00queue_stop_queues(struct rt2x00_dev *rt2x00dev) in rt2x00queue_stop_queues() argument
1048 ieee80211_stop_queues(rt2x00dev->hw); in rt2x00queue_stop_queues()
1050 tx_queue_for_each(rt2x00dev, queue) in rt2x00queue_stop_queues()
1053 rt2x00queue_stop_queue(rt2x00dev->rx); in rt2x00queue_stop_queues()
1057 void rt2x00queue_flush_queues(struct rt2x00_dev *rt2x00dev, bool drop) in rt2x00queue_flush_queues() argument
1061 tx_queue_for_each(rt2x00dev, queue) in rt2x00queue_flush_queues()
1064 rt2x00queue_flush_queue(rt2x00dev->rx, drop); in rt2x00queue_flush_queues()
1084 void rt2x00queue_init_queues(struct rt2x00_dev *rt2x00dev) in rt2x00queue_init_queues() argument
1089 queue_for_each(rt2x00dev, queue) { in rt2x00queue_init_queues()
1093 rt2x00dev->ops->lib->clear_entry(&queue->entries[i]); in rt2x00queue_init_queues()
1161 int rt2x00queue_initialize(struct rt2x00_dev *rt2x00dev) in rt2x00queue_initialize() argument
1166 status = rt2x00queue_alloc_entries(rt2x00dev->rx); in rt2x00queue_initialize()
1170 tx_queue_for_each(rt2x00dev, queue) { in rt2x00queue_initialize()
1176 status = rt2x00queue_alloc_entries(rt2x00dev->bcn); in rt2x00queue_initialize()
1180 if (rt2x00_has_cap_flag(rt2x00dev, REQUIRE_ATIM_QUEUE)) { in rt2x00queue_initialize()
1181 status = rt2x00queue_alloc_entries(rt2x00dev->atim); in rt2x00queue_initialize()
1186 status = rt2x00queue_alloc_rxskbs(rt2x00dev->rx); in rt2x00queue_initialize()
1193 rt2x00_err(rt2x00dev, "Queue entries allocation failed\n"); in rt2x00queue_initialize()
1195 rt2x00queue_uninitialize(rt2x00dev); in rt2x00queue_initialize()
1200 void rt2x00queue_uninitialize(struct rt2x00_dev *rt2x00dev) in rt2x00queue_uninitialize() argument
1204 rt2x00queue_free_skbs(rt2x00dev->rx); in rt2x00queue_uninitialize()
1206 queue_for_each(rt2x00dev, queue) { in rt2x00queue_uninitialize()
1212 static void rt2x00queue_init(struct rt2x00_dev *rt2x00dev, in rt2x00queue_init() argument
1219 queue->rt2x00dev = rt2x00dev; in rt2x00queue_init()
1226 rt2x00dev->ops->queue_init(queue); in rt2x00queue_init()
1231 int rt2x00queue_allocate(struct rt2x00_dev *rt2x00dev) in rt2x00queue_allocate() argument
1236 rt2x00_has_cap_flag(rt2x00dev, REQUIRE_ATIM_QUEUE); in rt2x00queue_allocate()
1245 rt2x00dev->data_queues = 2 + rt2x00dev->ops->tx_queues + req_atim; in rt2x00queue_allocate()
1247 queue = kcalloc(rt2x00dev->data_queues, sizeof(*queue), GFP_KERNEL); in rt2x00queue_allocate()
1254 rt2x00dev->rx = queue; in rt2x00queue_allocate()
1255 rt2x00dev->tx = &queue[1]; in rt2x00queue_allocate()
1256 rt2x00dev->bcn = &queue[1 + rt2x00dev->ops->tx_queues]; in rt2x00queue_allocate()
1257 rt2x00dev->atim = req_atim ? &queue[2 + rt2x00dev->ops->tx_queues] : NULL; in rt2x00queue_allocate()
1268 rt2x00queue_init(rt2x00dev, rt2x00dev->rx, QID_RX); in rt2x00queue_allocate()
1271 tx_queue_for_each(rt2x00dev, queue) in rt2x00queue_allocate()
1272 rt2x00queue_init(rt2x00dev, queue, qid++); in rt2x00queue_allocate()
1274 rt2x00queue_init(rt2x00dev, rt2x00dev->bcn, QID_BEACON); in rt2x00queue_allocate()
1276 rt2x00queue_init(rt2x00dev, rt2x00dev->atim, QID_ATIM); in rt2x00queue_allocate()
1281 void rt2x00queue_free(struct rt2x00_dev *rt2x00dev) in rt2x00queue_free() argument
1283 kfree(rt2x00dev->rx); in rt2x00queue_free()
1284 rt2x00dev->rx = NULL; in rt2x00queue_free()
1285 rt2x00dev->tx = NULL; in rt2x00queue_free()
1286 rt2x00dev->bcn = NULL; in rt2x00queue_free()