IEEE80211_IFACE_ITER_RESUME_ALL,
                mt76x02_update_beacon_iter, dev);
 
+       mt76_csa_check(&dev->mt76);
+
+       if (dev->mt76.csa_complete) {
+               mt76_csa_finish(&dev->mt76);
+               goto out;
+       }
+
        nbeacons = hweight8(dev->mt76.beacon_mask);
        mt76x02_enqueue_buffered_bc(dev, &data, N_BCN_SLOTS - nbeacons);
 
                mt76x02_mac_set_beacon(dev, skb);
        }
 
+out:
        mt76_wr(dev, MT_BCN_BYPASS_MASK,
                0xff00 | ~(0xff00 >> dev->beacon_data_count));
 
 
                wiphy->reg_notifier = mt76x02_regd_notifier;
                wiphy->iface_combinations = mt76x02_if_comb;
                wiphy->n_iface_combinations = ARRAY_SIZE(mt76x02_if_comb);
-               wiphy->flags |= WIPHY_FLAG_HAS_CHANNEL_SWITCH;
 
                /* init led callbacks */
                if (IS_ENABLED(CONFIG_MT76_LEDS)) {
                }
        }
 
+       wiphy->flags |= WIPHY_FLAG_HAS_CHANNEL_SWITCH;
        wiphy_ext_feature_set(wiphy, NL80211_EXT_FEATURE_VHT_IBSS);
 
        hw->sta_data_size = sizeof(struct mt76x02_sta);