aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorArik Nemtsov <arik@wizery.com>2011-10-24 11:25:20 -0400
committerLuciano Coelho <coelho@ti.com>2011-11-08 08:36:46 -0500
commita693534b1a46ee934606cec52b12baeaebba0342 (patch)
treef41d32ddc9420c3060f815e4a6a0b65c95ea5b79
parentd6fa37c9ffa2a613943dd1c32f220a3e6e9eb77c (diff)
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>
-rw-r--r--drivers/net/wireless/wl12xx/event.c5
-rw-r--r--drivers/net/wireless/wl12xx/init.c12
-rw-r--r--drivers/net/wireless/wl12xx/ps.c5
3 files changed, 6 insertions, 16 deletions
diff --git a/drivers/net/wireless/wl12xx/event.c b/drivers/net/wireless/wl12xx/event.c
index e22df6ce139a..00ce794eebae 100644
--- a/drivers/net/wireless/wl12xx/event.c
+++ b/drivers/net/wireless/wl12xx/event.c
@@ -137,11 +137,6 @@ static int wl1271_event_ps_report(struct wl1271 *wl,
137 case EVENT_ENTER_POWER_SAVE_SUCCESS: 137 case EVENT_ENTER_POWER_SAVE_SUCCESS:
138 wlvif->psm_entry_retry = 0; 138 wlvif->psm_entry_retry = 0;
139 139
140 /* enable beacon filtering */
141 ret = wl1271_acx_beacon_filter_opt(wl, wlvif, true);
142 if (ret < 0)
143 break;
144
145 /* 140 /*
146 * BET has only a minor effect in 5GHz and masks 141 * BET has only a minor effect in 5GHz and masks
147 * channel switch IEs, so we only enable BET on 2.4GHz 142 * channel switch IEs, so we only enable BET on 2.4GHz
diff --git a/drivers/net/wireless/wl12xx/init.c b/drivers/net/wireless/wl12xx/init.c
index c6084f8a9c43..14ff01efc0b1 100644
--- a/drivers/net/wireless/wl12xx/init.c
+++ b/drivers/net/wireless/wl12xx/init.c
@@ -254,17 +254,17 @@ static int wl12xx_init_phy_vif_config(struct wl1271 *wl,
254 return 0; 254 return 0;
255} 255}
256 256
257static int wl1271_init_beacon_filter(struct wl1271 *wl, 257static int wl1271_init_sta_beacon_filter(struct wl1271 *wl,
258 struct wl12xx_vif *wlvif) 258 struct wl12xx_vif *wlvif)
259{ 259{
260 int ret; 260 int ret;
261 261
262 /* disable beacon filtering at this stage */ 262 ret = wl1271_acx_beacon_filter_table(wl, wlvif);
263 ret = wl1271_acx_beacon_filter_opt(wl, wlvif, false);
264 if (ret < 0) 263 if (ret < 0)
265 return ret; 264 return ret;
266 265
267 ret = wl1271_acx_beacon_filter_table(wl, wlvif); 266 /* enable beacon filtering */
267 ret = wl1271_acx_beacon_filter_opt(wl, wlvif, true);
268 if (ret < 0) 268 if (ret < 0)
269 return ret; 269 return ret;
270 270
@@ -529,7 +529,7 @@ static int wl12xx_init_sta_role(struct wl1271 *wl, struct wl12xx_vif *wlvif)
529 return ret; 529 return ret;
530 530
531 /* Beacon filtering */ 531 /* Beacon filtering */
532 ret = wl1271_init_beacon_filter(wl, wlvif); 532 ret = wl1271_init_sta_beacon_filter(wl, wlvif);
533 if (ret < 0) 533 if (ret < 0)
534 return ret; 534 return ret;
535 535
diff --git a/drivers/net/wireless/wl12xx/ps.c b/drivers/net/wireless/wl12xx/ps.c
index 9f4e8c03cc8f..a7a11088dd31 100644
--- a/drivers/net/wireless/wl12xx/ps.c
+++ b/drivers/net/wireless/wl12xx/ps.c
@@ -185,11 +185,6 @@ int wl1271_ps_set_mode(struct wl1271 *wl, struct wl12xx_vif *wlvif,
185 return ret; 185 return ret;
186 } 186 }
187 187
188 /* disable beacon filtering */
189 ret = wl1271_acx_beacon_filter_opt(wl, wlvif, false);
190 if (ret < 0)
191 return ret;
192
193 ret = wl1271_cmd_ps_mode(wl, wlvif, STATION_ACTIVE_MODE); 188 ret = wl1271_cmd_ps_mode(wl, wlvif, STATION_ACTIVE_MODE);
194 if (ret < 0) 189 if (ret < 0)
195 return ret; 190 return ret;