struct mt7996_phy *phy = mt7996_hw_phy(hw);
        int idx = msta->wcid.idx;
 
-       mt7996_mcu_add_bss_info(phy, vif, false);
        mt7996_mcu_add_sta(dev, vif, NULL, false);
+       mt7996_mcu_add_bss_info(phy, vif, false);
 
        if (vif == phy->monitor_vif)
                phy->monitor_vif = NULL;
        /* station mode uses BSSID to map the wlan entry to a peer,
         * and then peer references bss_info_rfch to set bandwidth cap.
         */
-       if (changed & BSS_CHANGED_BSSID &&
-           vif->type == NL80211_IFTYPE_STATION) {
-               bool join = !is_zero_ether_addr(info->bssid);
-
-               mt7996_mcu_add_bss_info(phy, vif, join);
-               mt7996_mcu_add_sta(dev, vif, NULL, join);
+       if ((changed & BSS_CHANGED_BSSID && !is_zero_ether_addr(info->bssid)) ||
+           (changed & BSS_CHANGED_ASSOC && vif->cfg.assoc) ||
+           (changed & BSS_CHANGED_BEACON_ENABLED && info->enable_beacon)) {
+               mt7996_mcu_add_bss_info(phy, vif, true);
+               mt7996_mcu_add_sta(dev, vif, NULL, true);
        }
 
-       if (changed & BSS_CHANGED_ASSOC)
-               mt7996_mcu_add_bss_info(phy, vif, vif->cfg.assoc);
-
        if (changed & BSS_CHANGED_ERP_CTS_PROT)
                mt7996_mac_enable_rtscts(dev, vif, info->use_cts_prot);
 
                mvif->basic_rates_idx =
                        mt7996_get_rates_table(hw, vif, false, false);
 
-       if (changed & BSS_CHANGED_BEACON_ENABLED && info->enable_beacon) {
-               mt7996_mcu_add_bss_info(phy, vif, true);
-               mt7996_mcu_add_sta(dev, vif, NULL, true);
-       }
-
        /* ensure that enable txcmd_mode after bss_info */
        if (changed & (BSS_CHANGED_QOS | BSS_CHANGED_BEACON_ENABLED))
                mt7996_mcu_set_tx(dev, vif);