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
421 ieee80211_get_rts_cts_rate(rt2x00dev->hw, tx_info); in rt2x00queue_create_tx_descriptor()
428 if (txdesc->retry_limit >= rt2x00dev->long_retry) in rt2x00queue_create_tx_descriptor()
465 rate = ieee80211_get_tx_rate(rt2x00dev->hw, tx_info); in rt2x00queue_create_tx_descriptor()
476 rt2x00crypto_create_tx_descriptor(rt2x00dev, skb, txdesc); in rt2x00queue_create_tx_descriptor()
477 rt2x00queue_create_tx_descriptor_seq(rt2x00dev, skb, txdesc); in rt2x00queue_create_tx_descriptor()
479 if (rt2x00_has_cap_flag(rt2x00dev, REQUIRE_HT_TX_DESC)) in rt2x00queue_create_tx_descriptor()
480 rt2x00queue_create_tx_descriptor_ht(rt2x00dev, skb, txdesc, in rt2x00queue_create_tx_descriptor()
483 rt2x00queue_create_tx_descriptor_plcp(rt2x00dev, skb, txdesc, in rt2x00queue_create_tx_descriptor()
490 struct rt2x00_dev *rt2x00dev = entry->queue->rt2x00dev; in rt2x00queue_write_tx_data() local
497 if (unlikely(rt2x00dev->ops->lib->get_entry_state && in rt2x00queue_write_tx_data()
498 rt2x00dev->ops->lib->get_entry_state(entry))) { in rt2x00queue_write_tx_data()
499 rt2x00_err(rt2x00dev, in rt2x00queue_write_tx_data()
509 skb_push(entry->skb, rt2x00dev->extra_tx_headroom); in rt2x00queue_write_tx_data()
510 memset(entry->skb->data, 0, rt2x00dev->extra_tx_headroom); in rt2x00queue_write_tx_data()
515 if (rt2x00dev->ops->lib->write_tx_data) in rt2x00queue_write_tx_data()
516 rt2x00dev->ops->lib->write_tx_data(entry, txdesc); in rt2x00queue_write_tx_data()
521 if (rt2x00_has_cap_flag(rt2x00dev, REQUIRE_DMA) && in rt2x00queue_write_tx_data()
533 queue->rt2x00dev->ops->lib->write_tx_desc(entry, txdesc); in rt2x00queue_write_tx_descriptor()
539 rt2x00debug_dump_frame(queue->rt2x00dev, DUMP_FRAME_TX, entry); in rt2x00queue_write_tx_descriptor()
556 queue->rt2x00dev->ops->lib->kick_queue(queue); in rt2x00queue_kick_tx_queue()
561 struct rt2x00_dev *rt2x00dev = entry->queue->rt2x00dev; in rt2x00queue_bar_check() local
563 rt2x00dev->extra_tx_headroom); in rt2x00queue_bar_check()
596 spin_lock_bh(&rt2x00dev->bar_list_lock); in rt2x00queue_bar_check()
597 list_add_tail_rcu(&bar_entry->list, &rt2x00dev->bar_list); in rt2x00queue_bar_check()
598 spin_unlock_bh(&rt2x00dev->bar_list_lock); in rt2x00queue_bar_check()
616 rt2x00queue_create_tx_descriptor(queue->rt2x00dev, skb, &txdesc, sta); in rt2x00queue_write_tx_frame()
641 if (rt2x00_has_cap_flag(queue->rt2x00dev, REQUIRE_COPY_IV)) in rt2x00queue_write_tx_frame()
655 if (rt2x00_has_cap_flag(queue->rt2x00dev, REQUIRE_L2PAD)) in rt2x00queue_write_tx_frame()
657 else if (rt2x00_has_cap_flag(queue->rt2x00dev, REQUIRE_DMA)) in rt2x00queue_write_tx_frame()
666 rt2x00_dbg(queue->rt2x00dev, "Dropping frame due to full tx queue %d\n", in rt2x00queue_write_tx_frame()
676 rt2x00_err(queue->rt2x00dev, in rt2x00queue_write_tx_frame()
722 int rt2x00queue_clear_beacon(struct rt2x00_dev *rt2x00dev, in rt2x00queue_clear_beacon() argument
739 if (rt2x00dev->ops->lib->clear_beacon) in rt2x00queue_clear_beacon()
740 rt2x00dev->ops->lib->clear_beacon(intf->beacon); in rt2x00queue_clear_beacon()
745 int rt2x00queue_update_beacon(struct rt2x00_dev *rt2x00dev, in rt2x00queue_update_beacon() argument
760 intf->beacon->skb = ieee80211_beacon_get(rt2x00dev->hw, vif); in rt2x00queue_update_beacon()
769 rt2x00queue_create_tx_descriptor(rt2x00dev, intf->beacon->skb, &txdesc, NULL); in rt2x00queue_update_beacon()
780 rt2x00dev->ops->lib->write_beacon(intf->beacon, &txdesc); in rt2x00queue_update_beacon()
799 rt2x00_err(queue->rt2x00dev, in rt2x00queue_for_each_entry()
848 rt2x00_err(queue->rt2x00dev, "Entry requested from invalid index type (%d)\n", in rt2x00queue_get_entry()
869 rt2x00_err(queue->rt2x00dev, in rt2x00queue_index_inc()
903 ieee80211_stop_queue(queue->rt2x00dev->hw, queue->qid); in rt2x00queue_pause_queue_nocheck()
911 if (!test_bit(DEVICE_STATE_PRESENT, &queue->rt2x00dev->flags) || in rt2x00queue_pause_queue()
922 if (!test_bit(DEVICE_STATE_PRESENT, &queue->rt2x00dev->flags) || in rt2x00queue_unpause_queue()
936 ieee80211_wake_queue(queue->rt2x00dev->hw, queue->qid); in rt2x00queue_unpause_queue()
943 queue->rt2x00dev->ops->lib->kick_queue(queue); in rt2x00queue_unpause_queue()
954 if (!test_bit(DEVICE_STATE_PRESENT, &queue->rt2x00dev->flags) || in rt2x00queue_start_queue()
962 queue->rt2x00dev->ops->lib->start_queue(queue); in rt2x00queue_start_queue()
981 queue->rt2x00dev->ops->lib->stop_queue(queue); in rt2x00queue_stop_queue()
1005 queue->rt2x00dev->ops->lib->kick_queue(queue); in rt2x00queue_flush_queue()
1012 if (likely(queue->rt2x00dev->ops->lib->flush_queue)) in rt2x00queue_flush_queue()
1013 queue->rt2x00dev->ops->lib->flush_queue(queue, drop); in rt2x00queue_flush_queue()
1019 rt2x00_warn(queue->rt2x00dev, "Queue %d failed to flush\n", in rt2x00queue_flush_queue()
1024 void rt2x00queue_start_queues(struct rt2x00_dev *rt2x00dev) in rt2x00queue_start_queues() argument
1032 tx_queue_for_each(rt2x00dev, queue) in rt2x00queue_start_queues()
1035 rt2x00queue_start_queue(rt2x00dev->rx); in rt2x00queue_start_queues()
1039 void rt2x00queue_stop_queues(struct rt2x00_dev *rt2x00dev) in rt2x00queue_stop_queues() argument
1049 ieee80211_stop_queues(rt2x00dev->hw); in rt2x00queue_stop_queues()
1051 tx_queue_for_each(rt2x00dev, queue) in rt2x00queue_stop_queues()
1054 rt2x00queue_stop_queue(rt2x00dev->rx); in rt2x00queue_stop_queues()
1058 void rt2x00queue_flush_queues(struct rt2x00_dev *rt2x00dev, bool drop) in rt2x00queue_flush_queues() argument
1062 tx_queue_for_each(rt2x00dev, queue) in rt2x00queue_flush_queues()
1065 rt2x00queue_flush_queue(rt2x00dev->rx, drop); in rt2x00queue_flush_queues()
1085 void rt2x00queue_init_queues(struct rt2x00_dev *rt2x00dev) in rt2x00queue_init_queues() argument
1090 queue_for_each(rt2x00dev, queue) { in rt2x00queue_init_queues()
1094 rt2x00dev->ops->lib->clear_entry(&queue->entries[i]); in rt2x00queue_init_queues()
1162 int rt2x00queue_initialize(struct rt2x00_dev *rt2x00dev) in rt2x00queue_initialize() argument
1167 status = rt2x00queue_alloc_entries(rt2x00dev->rx); in rt2x00queue_initialize()
1171 tx_queue_for_each(rt2x00dev, queue) { in rt2x00queue_initialize()
1177 status = rt2x00queue_alloc_entries(rt2x00dev->bcn); in rt2x00queue_initialize()
1181 if (rt2x00_has_cap_flag(rt2x00dev, REQUIRE_ATIM_QUEUE)) { in rt2x00queue_initialize()
1182 status = rt2x00queue_alloc_entries(rt2x00dev->atim); in rt2x00queue_initialize()
1187 status = rt2x00queue_alloc_rxskbs(rt2x00dev->rx); in rt2x00queue_initialize()
1194 rt2x00_err(rt2x00dev, "Queue entries allocation failed\n"); in rt2x00queue_initialize()
1196 rt2x00queue_uninitialize(rt2x00dev); in rt2x00queue_initialize()
1201 void rt2x00queue_uninitialize(struct rt2x00_dev *rt2x00dev) in rt2x00queue_uninitialize() argument
1205 rt2x00queue_free_skbs(rt2x00dev->rx); in rt2x00queue_uninitialize()
1207 queue_for_each(rt2x00dev, queue) { in rt2x00queue_uninitialize()
1213 static void rt2x00queue_init(struct rt2x00_dev *rt2x00dev, in rt2x00queue_init() argument
1220 queue->rt2x00dev = rt2x00dev; in rt2x00queue_init()
1227 rt2x00dev->ops->queue_init(queue); in rt2x00queue_init()
1232 int rt2x00queue_allocate(struct rt2x00_dev *rt2x00dev) in rt2x00queue_allocate() argument
1237 rt2x00_has_cap_flag(rt2x00dev, REQUIRE_ATIM_QUEUE); in rt2x00queue_allocate()
1246 rt2x00dev->data_queues = 2 + rt2x00dev->ops->tx_queues + req_atim; in rt2x00queue_allocate()
1248 queue = kcalloc(rt2x00dev->data_queues, sizeof(*queue), GFP_KERNEL); in rt2x00queue_allocate()
1255 rt2x00dev->rx = queue; in rt2x00queue_allocate()
1256 rt2x00dev->tx = &queue[1]; in rt2x00queue_allocate()
1257 rt2x00dev->bcn = &queue[1 + rt2x00dev->ops->tx_queues]; in rt2x00queue_allocate()
1258 rt2x00dev->atim = req_atim ? &queue[2 + rt2x00dev->ops->tx_queues] : NULL; in rt2x00queue_allocate()
1269 rt2x00queue_init(rt2x00dev, rt2x00dev->rx, QID_RX); in rt2x00queue_allocate()
1272 tx_queue_for_each(rt2x00dev, queue) in rt2x00queue_allocate()
1273 rt2x00queue_init(rt2x00dev, queue, qid++); in rt2x00queue_allocate()
1275 rt2x00queue_init(rt2x00dev, rt2x00dev->bcn, QID_BEACON); in rt2x00queue_allocate()
1277 rt2x00queue_init(rt2x00dev, rt2x00dev->atim, QID_ATIM); in rt2x00queue_allocate()
1282 void rt2x00queue_free(struct rt2x00_dev *rt2x00dev) in rt2x00queue_free() argument
1284 kfree(rt2x00dev->rx); in rt2x00queue_free()
1285 rt2x00dev->rx = NULL; in rt2x00queue_free()
1286 rt2x00dev->tx = NULL; in rt2x00queue_free()
1287 rt2x00dev->bcn = NULL; in rt2x00queue_free()