diff options
author | Linux Build Service Account <lnxbuild@localhost> | 2014-11-25 16:28:59 -0800 |
---|---|---|
committer | Gerrit - the friendly Code Review server <code-review@localhost> | 2014-11-25 16:28:59 -0800 |
commit | 14f30893a9cb85fca55a8e68848d8f319c4dbbed (patch) | |
tree | 4c494cae31e916a4b3422680cf5a204774547fbb | |
parent | 70a7f6985c6b12097f3f96fe0274f2c9a04f9e76 (diff) | |
parent | 73ad868e44a0cbfba6eadbd690420e8e5cfcd33e (diff) | |
download | android_frameworks_opt_net_wifi-14f30893a9cb85fca55a8e68848d8f319c4dbbed.tar.gz android_frameworks_opt_net_wifi-14f30893a9cb85fca55a8e68848d8f319c4dbbed.tar.bz2 android_frameworks_opt_net_wifi-14f30893a9cb85fca55a8e68848d8f319c4dbbed.zip |
Merge "wifi: Address the improper scan behavior on PNO failure"
-rwxr-xr-x | service/java/com/android/server/wifi/WifiStateMachine.java | 19 |
1 files changed, 14 insertions, 5 deletions
diff --git a/service/java/com/android/server/wifi/WifiStateMachine.java b/service/java/com/android/server/wifi/WifiStateMachine.java index fc12b8e68..7669ec12f 100755 --- a/service/java/com/android/server/wifi/WifiStateMachine.java +++ b/service/java/com/android/server/wifi/WifiStateMachine.java @@ -201,6 +201,9 @@ public class WifiStateMachine extends StateMachine { /* Chipset supports background scan */ private final boolean mBackgroundScanSupported; + /* Flag to verify backgroundScan is configured successfully */ + private boolean mBackgroundScanConfigured = false; + private String mInterfaceName; /* Tethering interface could be separate from wlan interface */ private String mTetherInterfaceName; @@ -7749,9 +7752,9 @@ public class WifiStateMachine extends StateMachine { } break; case CMD_PNO_PERIODIC_SCAN: - if ((message.arg1 == mPnoPeriodicScanToken) && - (mEnableBackgroundScan) && - (mWifiConfigStore.getConfiguredNetworks().size() != 0)) { + if ((mBackgroundScanConfigured == false) && + (message.arg1 == mPnoPeriodicScanToken) && + (mEnableBackgroundScan)) { startScan(UNKNOWN_SCAN_SOURCE, -1, null, null); sendMessageDelayed(obtainMessage(CMD_PNO_PERIODIC_SCAN, ++mPnoPeriodicScanToken, 0), @@ -7835,6 +7838,9 @@ public class WifiStateMachine extends StateMachine { (mWifiConfigStore.getConfiguredNetworks().size() != 0)) { if (!mWifiNative.enableBackgroundScan(true)) { handlePnoFailError(); + } else { + if (DBG) log("Stop periodic scan on PNO success"); + mBackgroundScanConfigured = true; } } case CMD_RECONNECT: @@ -8435,12 +8441,15 @@ public class WifiStateMachine extends StateMachine { } private void handlePnoFailError() { + /* PNO should not fail when P2P is not connected and there are + saved profiles */ if (!mP2pConnected.get() && (mWifiConfigStore.getConfiguredNetworks().size() == 0)) { return; } - if (mEnableBackgroundScan && - (mWifiConfigStore.getConfiguredNetworks().size() != 0)) { + /* Trigger a periodic scan for every 300Sec if PNO fails */ + if (mEnableBackgroundScan) { + mBackgroundScanConfigured = false; sendMessageDelayed(obtainMessage(CMD_PNO_PERIODIC_SCAN, ++mPnoPeriodicScanToken, 0), mDefaultFrameworkScanIntervalMs); |