Lines Matching refs:rt2x00dev
37 struct rt2x00_dev *rt2x00dev = queue->rt2x00dev; in rt2x00queue_alloc_rxskb() local
62 if (rt2x00_has_cap_hw_crypto(rt2x00dev)) { in rt2x00queue_alloc_rxskb()
87 if (rt2x00_has_cap_flag(rt2x00dev, REQUIRE_DMA)) { in rt2x00queue_alloc_rxskb()
90 skb_dma = dma_map_single(rt2x00dev->dev, skb->data, skb->len, in rt2x00queue_alloc_rxskb()
92 if (unlikely(dma_mapping_error(rt2x00dev->dev, skb_dma))) { in rt2x00queue_alloc_rxskb()
106 struct device *dev = entry->queue->rt2x00dev->dev; in rt2x00queue_map_txskb()
122 struct device *dev = entry->queue->rt2x00dev->dev; in rt2x00queue_unmap_skb()
186 static void rt2x00queue_create_tx_descriptor_seq(struct rt2x00_dev *rt2x00dev, in rt2x00queue_create_tx_descriptor_seq() argument
200 if (!rt2x00_has_cap_flag(rt2x00dev, REQUIRE_SW_SEQNO)) { in rt2x00queue_create_tx_descriptor_seq()
207 if (test_bit(CONFIG_QOS_DISABLED, &rt2x00dev->flags)) in rt2x00queue_create_tx_descriptor_seq()
234 static void rt2x00queue_create_tx_descriptor_plcp(struct rt2x00_dev *rt2x00dev, in rt2x00queue_create_tx_descriptor_plcp() argument
257 data_length += rt2x00crypto_tx_overhead(rt2x00dev, skb); in rt2x00queue_create_tx_descriptor_plcp()
298 static void rt2x00queue_create_tx_descriptor_ht(struct rt2x00_dev *rt2x00dev, in rt2x00queue_create_tx_descriptor_ht() argument
336 if (test_bit(CONFIG_HT_DISABLED, &rt2x00dev->flags)) { in rt2x00queue_create_tx_descriptor_ht()
391 static void rt2x00queue_create_tx_descriptor(struct rt2x00_dev *rt2x00dev, in rt2x00queue_create_tx_descriptor() argument
428 ieee80211_get_rts_cts_rate(rt2x00dev->hw, tx_info); in rt2x00queue_create_tx_descriptor()
435 if (txdesc->retry_limit >= rt2x00dev->long_retry) in rt2x00queue_create_tx_descriptor()
472 rate = ieee80211_get_tx_rate(rt2x00dev->hw, tx_info); in rt2x00queue_create_tx_descriptor()
483 rt2x00crypto_create_tx_descriptor(rt2x00dev, skb, txdesc); in rt2x00queue_create_tx_descriptor()
484 rt2x00queue_create_tx_descriptor_seq(rt2x00dev, skb, txdesc); in rt2x00queue_create_tx_descriptor()
486 if (rt2x00_has_cap_flag(rt2x00dev, REQUIRE_HT_TX_DESC)) in rt2x00queue_create_tx_descriptor()
487 rt2x00queue_create_tx_descriptor_ht(rt2x00dev, skb, txdesc, in rt2x00queue_create_tx_descriptor()
490 rt2x00queue_create_tx_descriptor_plcp(rt2x00dev, skb, txdesc, in rt2x00queue_create_tx_descriptor()
497 struct rt2x00_dev *rt2x00dev = entry->queue->rt2x00dev; in rt2x00queue_write_tx_data() local
504 if (unlikely(rt2x00dev->ops->lib->get_entry_state && in rt2x00queue_write_tx_data()
505 rt2x00dev->ops->lib->get_entry_state(entry))) { in rt2x00queue_write_tx_data()
506 rt2x00_err(rt2x00dev, in rt2x00queue_write_tx_data()
516 skb_push(entry->skb, rt2x00dev->extra_tx_headroom); in rt2x00queue_write_tx_data()
517 memset(entry->skb->data, 0, rt2x00dev->extra_tx_headroom); in rt2x00queue_write_tx_data()
522 if (rt2x00dev->ops->lib->write_tx_data) in rt2x00queue_write_tx_data()
523 rt2x00dev->ops->lib->write_tx_data(entry, txdesc); in rt2x00queue_write_tx_data()
528 if (rt2x00_has_cap_flag(rt2x00dev, REQUIRE_DMA) && in rt2x00queue_write_tx_data()
540 queue->rt2x00dev->ops->lib->write_tx_desc(entry, txdesc); in rt2x00queue_write_tx_descriptor()
546 rt2x00debug_dump_frame(queue->rt2x00dev, DUMP_FRAME_TX, entry); in rt2x00queue_write_tx_descriptor()
563 queue->rt2x00dev->ops->lib->kick_queue(queue); in rt2x00queue_kick_tx_queue()
568 struct rt2x00_dev *rt2x00dev = entry->queue->rt2x00dev; in rt2x00queue_bar_check() local
570 rt2x00dev->extra_tx_headroom); in rt2x00queue_bar_check()
603 spin_lock_bh(&rt2x00dev->bar_list_lock); in rt2x00queue_bar_check()
604 list_add_tail_rcu(&bar_entry->list, &rt2x00dev->bar_list); in rt2x00queue_bar_check()
605 spin_unlock_bh(&rt2x00dev->bar_list_lock); in rt2x00queue_bar_check()
623 rt2x00queue_create_tx_descriptor(queue->rt2x00dev, skb, &txdesc, sta); in rt2x00queue_write_tx_frame()
648 if (rt2x00_has_cap_flag(queue->rt2x00dev, REQUIRE_COPY_IV)) in rt2x00queue_write_tx_frame()
662 if (rt2x00_has_cap_flag(queue->rt2x00dev, REQUIRE_L2PAD)) in rt2x00queue_write_tx_frame()
664 else if (rt2x00_has_cap_flag(queue->rt2x00dev, REQUIRE_DMA)) in rt2x00queue_write_tx_frame()
673 rt2x00_err(queue->rt2x00dev, "Dropping frame due to full tx queue %d\n", in rt2x00queue_write_tx_frame()
683 rt2x00_err(queue->rt2x00dev, in rt2x00queue_write_tx_frame()
729 int rt2x00queue_clear_beacon(struct rt2x00_dev *rt2x00dev, in rt2x00queue_clear_beacon() argument
746 if (rt2x00dev->ops->lib->clear_beacon) in rt2x00queue_clear_beacon()
747 rt2x00dev->ops->lib->clear_beacon(intf->beacon); in rt2x00queue_clear_beacon()
752 int rt2x00queue_update_beacon(struct rt2x00_dev *rt2x00dev, in rt2x00queue_update_beacon() argument
767 intf->beacon->skb = ieee80211_beacon_get(rt2x00dev->hw, vif); in rt2x00queue_update_beacon()
776 rt2x00queue_create_tx_descriptor(rt2x00dev, intf->beacon->skb, &txdesc, NULL); in rt2x00queue_update_beacon()
787 rt2x00dev->ops->lib->write_beacon(intf->beacon, &txdesc); in rt2x00queue_update_beacon()
806 rt2x00_err(queue->rt2x00dev, in rt2x00queue_for_each_entry()
855 rt2x00_err(queue->rt2x00dev, "Entry requested from invalid index type (%d)\n", in rt2x00queue_get_entry()
876 rt2x00_err(queue->rt2x00dev, in rt2x00queue_index_inc()
910 ieee80211_stop_queue(queue->rt2x00dev->hw, queue->qid); in rt2x00queue_pause_queue_nocheck()
918 if (!test_bit(DEVICE_STATE_PRESENT, &queue->rt2x00dev->flags) || in rt2x00queue_pause_queue()
929 if (!test_bit(DEVICE_STATE_PRESENT, &queue->rt2x00dev->flags) || in rt2x00queue_unpause_queue()
943 ieee80211_wake_queue(queue->rt2x00dev->hw, queue->qid); in rt2x00queue_unpause_queue()
950 queue->rt2x00dev->ops->lib->kick_queue(queue); in rt2x00queue_unpause_queue()
961 if (!test_bit(DEVICE_STATE_PRESENT, &queue->rt2x00dev->flags) || in rt2x00queue_start_queue()
969 queue->rt2x00dev->ops->lib->start_queue(queue); in rt2x00queue_start_queue()
988 queue->rt2x00dev->ops->lib->stop_queue(queue); in rt2x00queue_stop_queue()
1012 queue->rt2x00dev->ops->lib->kick_queue(queue); in rt2x00queue_flush_queue()
1019 if (likely(queue->rt2x00dev->ops->lib->flush_queue)) in rt2x00queue_flush_queue()
1020 queue->rt2x00dev->ops->lib->flush_queue(queue, drop); in rt2x00queue_flush_queue()
1026 rt2x00_warn(queue->rt2x00dev, "Queue %d failed to flush\n", in rt2x00queue_flush_queue()
1031 void rt2x00queue_start_queues(struct rt2x00_dev *rt2x00dev) in rt2x00queue_start_queues() argument
1039 tx_queue_for_each(rt2x00dev, queue) in rt2x00queue_start_queues()
1042 rt2x00queue_start_queue(rt2x00dev->rx); in rt2x00queue_start_queues()
1046 void rt2x00queue_stop_queues(struct rt2x00_dev *rt2x00dev) in rt2x00queue_stop_queues() argument
1056 ieee80211_stop_queues(rt2x00dev->hw); in rt2x00queue_stop_queues()
1058 tx_queue_for_each(rt2x00dev, queue) in rt2x00queue_stop_queues()
1061 rt2x00queue_stop_queue(rt2x00dev->rx); in rt2x00queue_stop_queues()
1065 void rt2x00queue_flush_queues(struct rt2x00_dev *rt2x00dev, bool drop) in rt2x00queue_flush_queues() argument
1069 tx_queue_for_each(rt2x00dev, queue) in rt2x00queue_flush_queues()
1072 rt2x00queue_flush_queue(rt2x00dev->rx, drop); in rt2x00queue_flush_queues()
1092 void rt2x00queue_init_queues(struct rt2x00_dev *rt2x00dev) in rt2x00queue_init_queues() argument
1097 queue_for_each(rt2x00dev, queue) { in rt2x00queue_init_queues()
1101 rt2x00dev->ops->lib->clear_entry(&queue->entries[i]); in rt2x00queue_init_queues()
1169 int rt2x00queue_initialize(struct rt2x00_dev *rt2x00dev) in rt2x00queue_initialize() argument
1174 status = rt2x00queue_alloc_entries(rt2x00dev->rx); in rt2x00queue_initialize()
1178 tx_queue_for_each(rt2x00dev, queue) { in rt2x00queue_initialize()
1184 status = rt2x00queue_alloc_entries(rt2x00dev->bcn); in rt2x00queue_initialize()
1188 if (rt2x00_has_cap_flag(rt2x00dev, REQUIRE_ATIM_QUEUE)) { in rt2x00queue_initialize()
1189 status = rt2x00queue_alloc_entries(rt2x00dev->atim); in rt2x00queue_initialize()
1194 status = rt2x00queue_alloc_rxskbs(rt2x00dev->rx); in rt2x00queue_initialize()
1201 rt2x00_err(rt2x00dev, "Queue entries allocation failed\n"); in rt2x00queue_initialize()
1203 rt2x00queue_uninitialize(rt2x00dev); in rt2x00queue_initialize()
1208 void rt2x00queue_uninitialize(struct rt2x00_dev *rt2x00dev) in rt2x00queue_uninitialize() argument
1212 rt2x00queue_free_skbs(rt2x00dev->rx); in rt2x00queue_uninitialize()
1214 queue_for_each(rt2x00dev, queue) { in rt2x00queue_uninitialize()
1220 static void rt2x00queue_init(struct rt2x00_dev *rt2x00dev, in rt2x00queue_init() argument
1227 queue->rt2x00dev = rt2x00dev; in rt2x00queue_init()
1234 rt2x00dev->ops->queue_init(queue); in rt2x00queue_init()
1239 int rt2x00queue_allocate(struct rt2x00_dev *rt2x00dev) in rt2x00queue_allocate() argument
1244 rt2x00_has_cap_flag(rt2x00dev, REQUIRE_ATIM_QUEUE); in rt2x00queue_allocate()
1253 rt2x00dev->data_queues = 2 + rt2x00dev->ops->tx_queues + req_atim; in rt2x00queue_allocate()
1255 queue = kcalloc(rt2x00dev->data_queues, sizeof(*queue), GFP_KERNEL); in rt2x00queue_allocate()
1262 rt2x00dev->rx = queue; in rt2x00queue_allocate()
1263 rt2x00dev->tx = &queue[1]; in rt2x00queue_allocate()
1264 rt2x00dev->bcn = &queue[1 + rt2x00dev->ops->tx_queues]; in rt2x00queue_allocate()
1265 rt2x00dev->atim = req_atim ? &queue[2 + rt2x00dev->ops->tx_queues] : NULL; in rt2x00queue_allocate()
1276 rt2x00queue_init(rt2x00dev, rt2x00dev->rx, QID_RX); in rt2x00queue_allocate()
1279 tx_queue_for_each(rt2x00dev, queue) in rt2x00queue_allocate()
1280 rt2x00queue_init(rt2x00dev, queue, qid++); in rt2x00queue_allocate()
1282 rt2x00queue_init(rt2x00dev, rt2x00dev->bcn, QID_BEACON); in rt2x00queue_allocate()
1284 rt2x00queue_init(rt2x00dev, rt2x00dev->atim, QID_ATIM); in rt2x00queue_allocate()
1289 void rt2x00queue_free(struct rt2x00_dev *rt2x00dev) in rt2x00queue_free() argument
1291 kfree(rt2x00dev->rx); in rt2x00queue_free()
1292 rt2x00dev->rx = NULL; in rt2x00queue_free()
1293 rt2x00dev->tx = NULL; in rt2x00queue_free()
1294 rt2x00dev->bcn = NULL; in rt2x00queue_free()