wlan: Error handling on PNO failure due to active P2P session
If set PNO fails due to concurrent active p2p sessions,
handle the error condition in framework and issue a
regular scan for every framework background scan interval
until set PNO is either success or disabled.
Change-Id: Ia4e8d9aef9ed24e534cb57cea7c8ba7a7ffc509e
CRs-Fixed: 586875
diff --git a/service/java/com/android/server/wifi/WifiNative.java b/service/java/com/android/server/wifi/WifiNative.java
index 7523c51..0e01e27 100644
--- a/service/java/com/android/server/wifi/WifiNative.java
+++ b/service/java/com/android/server/wifi/WifiNative.java
@@ -582,11 +582,13 @@
return doBooleanCommand("DRIVER COUNTRY " + countryCode.toUpperCase(Locale.ROOT));
}
- public void enableBackgroundScan(boolean enable) {
+ public boolean enableBackgroundScan(boolean enable) {
if (enable) {
- doBooleanCommand("SET pno 1");
+ Log.e(mTAG, "doBoolean: enable");
+ return doBooleanCommand("SET pno 1");
} else {
- doBooleanCommand("SET pno 0");
+ Log.e(mTAG, "doBoolean: disable");
+ return doBooleanCommand("SET pno 0");
}
}
diff --git a/service/java/com/android/server/wifi/WifiStateMachine.java b/service/java/com/android/server/wifi/WifiStateMachine.java
index 13d6404..aa28da7 100644
--- a/service/java/com/android/server/wifi/WifiStateMachine.java
+++ b/service/java/com/android/server/wifi/WifiStateMachine.java
@@ -2982,7 +2982,15 @@
+ " startBackgroundScanIfNeeded:" + startBackgroundScanIfNeeded);
if (startBackgroundScanIfNeeded) {
- mWifiNative.enableBackgroundScan(mEnableBackgroundScan);
+ if (mEnableBackgroundScan) {
+ if (!mWifiNative.enableBackgroundScan(true)) {
+ setScanAlarm(true, 200);
+ } else {
+ setScanAlarm(false, 0);
+ }
+ } else {
+ mWifiNative.enableBackgroundScan(false);
+ }
}
if (DBG) log("handleScreenStateChanged Exit: " + screenOn);
@@ -7628,7 +7636,11 @@
* cleared
*/
if (!mIsScanOngoing) {
- mWifiNative.enableBackgroundScan(true);
+ if (!mWifiNative.enableBackgroundScan(true)) {
+ setScanAlarm(true, 200);
+ } else {
+ setScanAlarm(false, 0);
+ }
}
} else {
setScanAlarm(true, 200);
@@ -7714,7 +7726,11 @@
case WifiMonitor.SCAN_RESULTS_EVENT:
/* Re-enable background scan when a pending scan result is received */
if (mEnableBackgroundScan && mIsScanOngoing) {
- mWifiNative.enableBackgroundScan(true);
+ if (!mWifiNative.enableBackgroundScan(true)) {
+ setScanAlarm(true, 200);
+ } else {
+ setScanAlarm(false, 0);
+ }
}
/* Handled in parent state */
ret = NOT_HANDLED;