summaryrefslogtreecommitdiffstats
path: root/drivers/net/wireless/mediatek/mt7601u/init.c
diff options
context:
space:
mode:
authorJakub Kicinski <kubakici@wp.pl>2015-07-31 15:04:48 +0200
committerKalle Valo <kvalo@codeaurora.org>2015-08-10 21:19:34 +0200
commit4513493d188d5e3052aee68eda85eaaa1a4e41c2 (patch)
treebc9e79e33f8576939cabdfa1eee142901141ffe1 /drivers/net/wireless/mediatek/mt7601u/init.c
parentmt7601u: use correct ieee80211_rx variant (diff)
downloadlinux-4513493d188d5e3052aee68eda85eaaa1a4e41c2.tar.xz
linux-4513493d188d5e3052aee68eda85eaaa1a4e41c2.zip
mt7601u: fix tx status reporting contexts
mac80211 requires that rx path does not run concurrently with tx status reporting. Since rx path is run in driver tasklet, tx status cannot be reported directly from interrupt context (there would be no way to lock it out). Add tasklet for tx and move all possible code from irq handler there. Note: tx tasklet is needed because workqueue is queued very rarely and that kills TCP performance. Signed-off-by: Jakub Kicinski <kubakici@wp.pl> Signed-off-by: Kalle Valo <kvalo@codeaurora.org>
Diffstat (limited to 'drivers/net/wireless/mediatek/mt7601u/init.c')
-rw-r--r--drivers/net/wireless/mediatek/mt7601u/init.c1
1 files changed, 1 insertions, 0 deletions
diff --git a/drivers/net/wireless/mediatek/mt7601u/init.c b/drivers/net/wireless/mediatek/mt7601u/init.c
index df3dd56199a7..38eb20ba6e58 100644
--- a/drivers/net/wireless/mediatek/mt7601u/init.c
+++ b/drivers/net/wireless/mediatek/mt7601u/init.c
@@ -456,6 +456,7 @@ struct mt7601u_dev *mt7601u_alloc_device(struct device *pdev)
spin_lock_init(&dev->lock);
spin_lock_init(&dev->con_mon_lock);
atomic_set(&dev->avg_ampdu_len, 1);
+ skb_queue_head_init(&dev->tx_skb_done);
dev->stat_wq = alloc_workqueue("mt7601u", WQ_UNBOUND, 0);
if (!dev->stat_wq) {