|
@@ -126,11 +126,13 @@ void ieee80211_offchannel_stop_vifs(struct ieee80211_local *local,
|
|
|
set_bit(SDATA_STATE_OFFCHANNEL, &sdata->state);
|
|
|
|
|
|
/* Check to see if we should disable beaconing. */
|
|
|
- if (sdata->vif.type == NL80211_IFTYPE_AP ||
|
|
|
- sdata->vif.type == NL80211_IFTYPE_ADHOC ||
|
|
|
- sdata->vif.type == NL80211_IFTYPE_MESH_POINT)
|
|
|
+ if (sdata->vif.bss_conf.enable_beacon) {
|
|
|
+ set_bit(SDATA_STATE_OFFCHANNEL_BEACON_STOPPED,
|
|
|
+ &sdata->state);
|
|
|
+ sdata->vif.bss_conf.enable_beacon = false;
|
|
|
ieee80211_bss_info_change_notify(
|
|
|
sdata, BSS_CHANGED_BEACON_ENABLED);
|
|
|
+ }
|
|
|
|
|
|
if (sdata->vif.type != NL80211_IFTYPE_MONITOR) {
|
|
|
netif_tx_stop_all_queues(sdata->dev);
|
|
@@ -183,11 +185,12 @@ void ieee80211_offchannel_return(struct ieee80211_local *local,
|
|
|
netif_tx_wake_all_queues(sdata->dev);
|
|
|
}
|
|
|
|
|
|
- if (sdata->vif.type == NL80211_IFTYPE_AP ||
|
|
|
- sdata->vif.type == NL80211_IFTYPE_ADHOC ||
|
|
|
- sdata->vif.type == NL80211_IFTYPE_MESH_POINT)
|
|
|
+ if (test_and_clear_bit(SDATA_STATE_OFFCHANNEL_BEACON_STOPPED,
|
|
|
+ &sdata->state)) {
|
|
|
+ sdata->vif.bss_conf.enable_beacon = true;
|
|
|
ieee80211_bss_info_change_notify(
|
|
|
sdata, BSS_CHANGED_BEACON_ENABLED);
|
|
|
+ }
|
|
|
}
|
|
|
mutex_unlock(&local->iflist_mtx);
|
|
|
}
|