wl12xx: keep beacon-filtering enabled during STA operation
Enable beacon filtering on STA init, and don't disable it when entering active mode. Otherwise dynamic-PS supports means we receive beacons from the current AP during any Tx/Rx performed by the driver. Signed-off-by: Arik Nemtsov <arik@wizery.com> Signed-off-by: Luciano Coelho <coelho@ti.com>
This commit is contained in:
committed by
Luciano Coelho
parent
d6fa37c9ff
commit
a693534b1a
@@ -137,11 +137,6 @@ static int wl1271_event_ps_report(struct wl1271 *wl,
|
|||||||
case EVENT_ENTER_POWER_SAVE_SUCCESS:
|
case EVENT_ENTER_POWER_SAVE_SUCCESS:
|
||||||
wlvif->psm_entry_retry = 0;
|
wlvif->psm_entry_retry = 0;
|
||||||
|
|
||||||
/* enable beacon filtering */
|
|
||||||
ret = wl1271_acx_beacon_filter_opt(wl, wlvif, true);
|
|
||||||
if (ret < 0)
|
|
||||||
break;
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* BET has only a minor effect in 5GHz and masks
|
* BET has only a minor effect in 5GHz and masks
|
||||||
* channel switch IEs, so we only enable BET on 2.4GHz
|
* channel switch IEs, so we only enable BET on 2.4GHz
|
||||||
|
@@ -254,17 +254,17 @@ static int wl12xx_init_phy_vif_config(struct wl1271 *wl,
|
|||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
static int wl1271_init_beacon_filter(struct wl1271 *wl,
|
static int wl1271_init_sta_beacon_filter(struct wl1271 *wl,
|
||||||
struct wl12xx_vif *wlvif)
|
struct wl12xx_vif *wlvif)
|
||||||
{
|
{
|
||||||
int ret;
|
int ret;
|
||||||
|
|
||||||
/* disable beacon filtering at this stage */
|
ret = wl1271_acx_beacon_filter_table(wl, wlvif);
|
||||||
ret = wl1271_acx_beacon_filter_opt(wl, wlvif, false);
|
|
||||||
if (ret < 0)
|
if (ret < 0)
|
||||||
return ret;
|
return ret;
|
||||||
|
|
||||||
ret = wl1271_acx_beacon_filter_table(wl, wlvif);
|
/* enable beacon filtering */
|
||||||
|
ret = wl1271_acx_beacon_filter_opt(wl, wlvif, true);
|
||||||
if (ret < 0)
|
if (ret < 0)
|
||||||
return ret;
|
return ret;
|
||||||
|
|
||||||
@@ -529,7 +529,7 @@ static int wl12xx_init_sta_role(struct wl1271 *wl, struct wl12xx_vif *wlvif)
|
|||||||
return ret;
|
return ret;
|
||||||
|
|
||||||
/* Beacon filtering */
|
/* Beacon filtering */
|
||||||
ret = wl1271_init_beacon_filter(wl, wlvif);
|
ret = wl1271_init_sta_beacon_filter(wl, wlvif);
|
||||||
if (ret < 0)
|
if (ret < 0)
|
||||||
return ret;
|
return ret;
|
||||||
|
|
||||||
|
@@ -185,11 +185,6 @@ int wl1271_ps_set_mode(struct wl1271 *wl, struct wl12xx_vif *wlvif,
|
|||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* disable beacon filtering */
|
|
||||||
ret = wl1271_acx_beacon_filter_opt(wl, wlvif, false);
|
|
||||||
if (ret < 0)
|
|
||||||
return ret;
|
|
||||||
|
|
||||||
ret = wl1271_cmd_ps_mode(wl, wlvif, STATION_ACTIVE_MODE);
|
ret = wl1271_cmd_ps_mode(wl, wlvif, STATION_ACTIVE_MODE);
|
||||||
if (ret < 0)
|
if (ret < 0)
|
||||||
return ret;
|
return ret;
|
||||||
|
Reference in New Issue
Block a user