if (!info->enable_beacon) {
ath10k_vdev_stop(arvif);
- spin_lock_bh(&arvif->ar->data_lock);
arvif->is_started = false;
arvif->is_up = false;
+
+ spin_lock_bh(&arvif->ar->data_lock);
ath10k_mac_vif_beacon_free(arvif);
spin_unlock_bh(&arvif->ar->data_lock);
struct ieee80211_vif *vif = arvif->vif;
int ret;
+ lockdep_assert_held(&arvif->ar->conf_mutex);
+
+ if (WARN_ON(!test_bit(WMI_SERVICE_BEACON_OFFLOAD, ar->wmi.svc_map)))
+ return;
+
if (arvif->vdev_type != WMI_VDEV_TYPE_AP)
return;
return;
}
- spin_lock_bh(&arvif->ar->data_lock);
arvif->is_up = true;
- spin_unlock_bh(&arvif->ar->data_lock);
/* Workaround: Some firmware revisions (tested with qca6174
* WLAN.RM.2.0-00073) have buggy powersave state machine and must be
return;
}
- spin_lock_bh(&arvif->ar->data_lock);
arvif->is_up = false;
- spin_unlock_bh(&arvif->ar->data_lock);
}
static int ath10k_station_assoc(struct ath10k *ar,
break;
}
- spin_lock_bh(&ar->data_lock);
arvif = ath10k_get_arvif(ar, vdev_id);
- if (arvif && arvif->is_up)
+ if (arvif && arvif->is_up && arvif->vif->csa_active)
ieee80211_queue_work(ar->hw, &arvif->ap_csa_work);
- spin_unlock_bh(&ar->data_lock);
kfree(tb);
return 0;