|
@@ -2941,6 +2941,11 @@ static int wlcore_unset_assoc(struct wl1271 *wl, struct wl12xx_vif *wlvif)
|
|
|
ret = wl1271_acx_keep_alive_mode(wl, wlvif, false);
|
|
|
if (ret < 0)
|
|
|
return ret;
|
|
|
+
|
|
|
+ /* disable beacon filtering */
|
|
|
+ ret = wl1271_acx_beacon_filter_opt(wl, wlvif, false);
|
|
|
+ if (ret < 0)
|
|
|
+ return ret;
|
|
|
}
|
|
|
|
|
|
if (test_and_clear_bit(WLVIF_FLAG_CS_PROGRESS, &wlvif->flags)) {
|
|
@@ -4312,6 +4317,13 @@ static void wl1271_bss_info_changed_sta(struct wl1271 *wl,
|
|
|
}
|
|
|
}
|
|
|
|
|
|
+ if ((changed & BSS_CHANGED_BEACON_INFO) && bss_conf->dtim_period) {
|
|
|
+ /* enable beacon filtering */
|
|
|
+ ret = wl1271_acx_beacon_filter_opt(wl, wlvif, true);
|
|
|
+ if (ret < 0)
|
|
|
+ goto out;
|
|
|
+ }
|
|
|
+
|
|
|
ret = wl1271_bss_erp_info_changed(wl, vif, bss_conf, changed);
|
|
|
if (ret < 0)
|
|
|
goto out;
|