|
@@ -4127,8 +4127,14 @@ static int wl1271_bss_beacon_info_changed(struct wl1271 *wl,
|
|
|
ret = wlcore_set_beacon_template(wl, vif, is_ap);
|
|
|
if (ret < 0)
|
|
|
goto out;
|
|
|
- }
|
|
|
|
|
|
+ if (test_and_clear_bit(WLVIF_FLAG_BEACON_DISABLED,
|
|
|
+ &wlvif->flags)) {
|
|
|
+ ret = wlcore_hw_dfs_master_restart(wl, wlvif);
|
|
|
+ if (ret < 0)
|
|
|
+ goto out;
|
|
|
+ }
|
|
|
+ }
|
|
|
out:
|
|
|
if (ret != 0)
|
|
|
wl1271_error("beacon info change failed: %d", ret);
|
|
@@ -4774,6 +4780,8 @@ static int __wlcore_switch_vif_chan(struct wl1271 *wl,
|
|
|
if (WARN_ON_ONCE(wlvif->bss_type != BSS_TYPE_AP_BSS))
|
|
|
return 0;
|
|
|
|
|
|
+ WARN_ON(!test_bit(WLVIF_FLAG_BEACON_DISABLED, &wlvif->flags));
|
|
|
+
|
|
|
if (wlvif->radar_enabled) {
|
|
|
wl1271_debug(DEBUG_MAC80211, "Stop radar detection");
|
|
|
wlcore_hw_set_cac(wl, wlvif, false);
|