diff options
author | Felix Fietkau <nbd@nbd.name> | 2019-01-15 16:26:53 +0300 |
---|---|---|
committer | Felix Fietkau <nbd@nbd.name> | 2019-01-17 16:50:15 +0300 |
commit | e7173858c78a981788bde18930d1e16fd5203151 (patch) | |
tree | 47b8d27790bc6ac2569c890af5a9587ef36f9253 /drivers/net/wireless/mediatek/mt76/mt76x02_mmio.c | |
parent | 9cf67ec7fd8077fdf7909449534e32b8438b5edc (diff) | |
download | linux-e7173858c78a981788bde18930d1e16fd5203151.tar.xz |
mt76: add channel switch announcement support
Use the appropriate mac80211 callbacks after beacon transmission
Signed-off-by: Felix Fietkau <nbd@nbd.name>
Diffstat (limited to 'drivers/net/wireless/mediatek/mt76/mt76x02_mmio.c')
-rw-r--r-- | drivers/net/wireless/mediatek/mt76/mt76x02_mmio.c | 13 |
1 files changed, 11 insertions, 2 deletions
diff --git a/drivers/net/wireless/mediatek/mt76/mt76x02_mmio.c b/drivers/net/wireless/mediatek/mt76/mt76x02_mmio.c index 6236c6121c01..374bc9d91f12 100644 --- a/drivers/net/wireless/mediatek/mt76/mt76x02_mmio.c +++ b/drivers/net/wireless/mediatek/mt76/mt76x02_mmio.c @@ -116,6 +116,11 @@ static void mt76x02_pre_tbtt_tasklet(unsigned long arg) IEEE80211_IFACE_ITER_RESUME_ALL, mt76x02_update_beacon_iter, dev); + mt76_csa_check(&dev->mt76); + + if (dev->mt76.csa_complete) + return; + do { nframes = skb_queue_len(&data.q); ieee80211_iterate_active_interfaces_atomic(mt76_hw(dev), @@ -309,8 +314,12 @@ irqreturn_t mt76x02_irq_handler(int irq, void *dev_instance) tasklet_schedule(&dev->pre_tbtt_tasklet); /* send buffered multicast frames now */ - if (intr & MT_INT_TBTT) - mt76_queue_kick(dev, &dev->mt76.q_tx[MT_TXQ_PSD]); + if (intr & MT_INT_TBTT) { + if (dev->mt76.csa_complete) + mt76_csa_finish(&dev->mt76); + else + mt76_queue_kick(dev, &dev->mt76.q_tx[MT_TXQ_PSD]); + } if (intr & MT_INT_TX_STAT) { mt76x02_mac_poll_tx_status(dev, true); |