diff --git a/mt7603_beacon.c b/mt7603_beacon.c index e914542a..a6a89d6c 100644 --- a/mt7603_beacon.c +++ b/mt7603_beacon.c @@ -68,7 +68,7 @@ mt7603_add_buffered_bc(void *priv, u8 *mac, struct ieee80211_vif *vif) void mt7603_pre_tbtt_tasklet(unsigned long arg) { struct mt7603_dev *dev = (struct mt7603_dev *) arg; - struct mt76_queue *q = &dev->mt76.q_tx[MT_TXQ_CAB]; + struct mt76_queue *q; struct beacon_bc_data data = {}; struct sk_buff *skb; int i, nframes; @@ -76,10 +76,15 @@ void mt7603_pre_tbtt_tasklet(unsigned long arg) data.dev = dev; __skb_queue_head_init(&data.q); + q = &dev->mt76.q_tx[MT_TXQ_BEACON]; + spin_lock_bh(&q->lock); ieee80211_iterate_active_interfaces_atomic(mt76_hw(dev), IEEE80211_IFACE_ITER_RESUME_ALL, mt7603_update_beacon_iter, dev); + mt76_queue_kick(dev, q); + spin_unlock_bh(&q->lock); + q = &dev->mt76.q_tx[MT_TXQ_CAB]; do { nframes = skb_queue_len(&data.q); ieee80211_iterate_active_interfaces_atomic(mt76_hw(dev),