]> git.karo-electronics.de Git - karo-tx-linux.git/commitdiff
wl12xx: keep beacon-filtering enabled during STA operation
authorArik Nemtsov <arik@wizery.com>
Mon, 24 Oct 2011 15:25:20 +0000 (17:25 +0200)
committerLuciano Coelho <coelho@ti.com>
Tue, 8 Nov 2011 13:36:46 +0000 (15:36 +0200)
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>
drivers/net/wireless/wl12xx/event.c
drivers/net/wireless/wl12xx/init.c
drivers/net/wireless/wl12xx/ps.c

index e22df6ce139ad439e9a9289848f22e9facb7a521..00ce794eebaebb305cf706bfe385bd2c9846b06e 100644 (file)
@@ -137,11 +137,6 @@ static int wl1271_event_ps_report(struct wl1271 *wl,
        case EVENT_ENTER_POWER_SAVE_SUCCESS:
                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
                 * channel switch IEs, so we only enable BET on 2.4GHz
index c6084f8a9c431cea5fb9ab11bb3402e7f75399ef..14ff01efc0b1afe40bee3f8963c9d4d9f557efcb 100644 (file)
@@ -254,17 +254,17 @@ static int wl12xx_init_phy_vif_config(struct wl1271 *wl,
        return 0;
 }
 
-static int wl1271_init_beacon_filter(struct wl1271 *wl,
-                                    struct wl12xx_vif *wlvif)
+static int wl1271_init_sta_beacon_filter(struct wl1271 *wl,
+                                        struct wl12xx_vif *wlvif)
 {
        int ret;
 
-       /* disable beacon filtering at this stage */
-       ret = wl1271_acx_beacon_filter_opt(wl, wlvif, false);
+       ret = wl1271_acx_beacon_filter_table(wl, wlvif);
        if (ret < 0)
                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)
                return ret;
 
@@ -529,7 +529,7 @@ static int wl12xx_init_sta_role(struct wl1271 *wl, struct wl12xx_vif *wlvif)
                return ret;
 
        /* Beacon filtering */
-       ret = wl1271_init_beacon_filter(wl, wlvif);
+       ret = wl1271_init_sta_beacon_filter(wl, wlvif);
        if (ret < 0)
                return ret;
 
index 9f4e8c03cc8f33bc0cbbd0897fb4db832353987e..a7a11088dd3104f2f8b9a2941d567c20bba822b1 100644 (file)
@@ -185,11 +185,6 @@ int wl1271_ps_set_mode(struct wl1271 *wl, struct wl12xx_vif *wlvif,
                                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);
                if (ret < 0)
                        return ret;