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);
         }
     }