wlcore: don't issue SLEEP_AUTH command during recovery
authorArik Nemtsov <arik@wizery.com>
Tue, 10 Jul 2012 07:45:01 +0000 (10:45 +0300)
committerLuciano Coelho <coelho@ti.com>
Wed, 18 Jul 2012 12:08:21 +0000 (15:08 +0300)
During interface removal, don't adjust sleep_auth if we are during
recovery. Since the FW is potentially dead we shouldn't talk to it.

Reported-by: Yossi Wortzel <yossiw@ti.com>
Signed-off-by: Arik Nemtsov <arik@wizery.com>
Signed-off-by: Luciano Coelho <coelho@ti.com>
drivers/net/wireless/ti/wlcore/main.c

index d486eeaf722b0893ee6f79f6e2e035cf823aff73..05c3912c3e4abdfd9100537a6e5bb2b6ad4d33b0 100644 (file)
@@ -2377,7 +2377,14 @@ deinit:
        else
                wl->sta_count--;
 
-       /* Last AP, have more stations. Configure according to STA. */
+       /*
+        * Last AP, have more stations. Configure sleep auth according to STA.
+        * Don't do thin on unintended recovery.
+        */
+       if (test_bit(WL1271_FLAG_RECOVERY_IN_PROGRESS, &wl->flags) &&
+           !test_bit(WL1271_FLAG_INTENDED_FW_RECOVERY, &wl->flags))
+               goto unlock;
+
        if (wl->ap_count == 0 && is_ap && wl->sta_count) {
                u8 sta_auth = wl->conf.conn.sta_sleep_auth;
                /* Configure for power according to debugfs */
@@ -2391,6 +2398,7 @@ deinit:
                        wl1271_acx_sleep_auth(wl, WL1271_PSM_ELP);
        }
 
+unlock:
        mutex_unlock(&wl->mutex);
 
        del_timer_sync(&wlvif->rx_streaming_timer);