dont optimize the pno set/clear commands since framework and driver can get out of sync
Bug:21734054
Change-Id: Ib9646bb871a6cccba6cf77715d7c47b3e0b4b9c1
diff --git a/service/java/com/android/server/wifi/WifiNative.java b/service/java/com/android/server/wifi/WifiNative.java
index 52a5e43..aaaa451 100644
--- a/service/java/com/android/server/wifi/WifiNative.java
+++ b/service/java/com/android/server/wifi/WifiNative.java
@@ -646,12 +646,14 @@
return doBooleanCommand("DRIVER COUNTRY");
}
- public void enableBackgroundScan(boolean enable) {
+ public boolean enableBackgroundScan(boolean enable) {
+ boolean ret;
if (enable) {
- doBooleanCommand("SET pno 1");
+ ret = doBooleanCommand("SET pno 1");
} else {
- doBooleanCommand("SET pno 0");
+ ret = doBooleanCommand("SET pno 0");
}
+ return ret;
}
public void enableAutoConnect(boolean enable) {
diff --git a/service/java/com/android/server/wifi/WifiStateMachine.java b/service/java/com/android/server/wifi/WifiStateMachine.java
index 9433cbf..9b8a72d 100644
--- a/service/java/com/android/server/wifi/WifiStateMachine.java
+++ b/service/java/com/android/server/wifi/WifiStateMachine.java
@@ -2206,8 +2206,12 @@
if (enable) {
mWifiConfigStore.enableAllNetworks();
}
- mWifiNative.enableBackgroundScan(enable);
- mLegacyPnoEnabled = enable;
+ boolean ret = mWifiNative.enableBackgroundScan(enable);
+ if (ret) {
+ mLegacyPnoEnabled = enable;
+ } else {
+ Log.e(TAG, " Fail to set up pno, want " + enable + " now " + mLegacyPnoEnabled);
+ }
}
/**
@@ -3412,9 +3416,7 @@
cancelDelayedScan();
if (screenOn) {
- if (mLegacyPnoEnabled) {
- enableBackgroundScan(false);
- }
+ enableBackgroundScan(false);
setScanAlarm(false);
clearBlacklist();
@@ -3456,9 +3458,7 @@
}
}
} else {
- if (mLegacyPnoEnabled) {
- enableBackgroundScan(false);
- }
+ enableBackgroundScan(false);
stopGScan("ScreenOffStop(enableBackground=" + mLegacyPnoEnabled + ") ");
}
}
@@ -8964,9 +8964,7 @@
return HANDLED;
}
/* Disable background scan temporarily during a regular scan */
- if (mLegacyPnoEnabled) {
- enableBackgroundScan(false);
- }
+ enableBackgroundScan(false);
handleScanRequest(WifiNative.SCAN_WITHOUT_CONNECTION_SETUP, message);
ret = HANDLED;
} else {
@@ -8982,9 +8980,7 @@
* place to issue).
*/
- if (mLegacyPnoEnabled) {
- enableBackgroundScan(false);
- }
+ enableBackgroundScan(false);
ret = NOT_HANDLED;
}
break;
@@ -9078,9 +9074,7 @@
@Override
public void exit() {
/* No need for a background scan upon exit from a disconnected state */
- if (mLegacyPnoEnabled) {
- enableBackgroundScan(false);
- }
+ enableBackgroundScan(false);
setScanAlarm(false);
}
}