diff options
Diffstat (limited to 'wifi/java/android/net/wifi/WifiStateTracker.java')
-rw-r--r-- | wifi/java/android/net/wifi/WifiStateTracker.java | 16 |
1 files changed, 14 insertions, 2 deletions
diff --git a/wifi/java/android/net/wifi/WifiStateTracker.java b/wifi/java/android/net/wifi/WifiStateTracker.java index f97f21b7e69..c45b480c3af 100644 --- a/wifi/java/android/net/wifi/WifiStateTracker.java +++ b/wifi/java/android/net/wifi/WifiStateTracker.java @@ -1755,6 +1755,8 @@ public class WifiStateTracker extends NetworkStateTracker { case EVENT_DHCP_START: boolean modifiedBluetoothCoexistenceMode = false; + int powerMode = DRIVER_POWER_MODE_AUTO; + if (shouldDisableCoexistenceMode()) { /* * There are problems setting the Wi-Fi driver's power @@ -1782,7 +1784,15 @@ public class WifiStateTracker extends NetworkStateTracker { } synchronized (WifiStateTracker.this) { - WifiNative.setPowerModeCommand(DRIVER_POWER_MODE_ACTIVE); + powerMode = WifiNative.getPowerModeCommand(); + if (powerMode < 0) { + // Handle the case where supplicant driver does not support + // getPowerModeCommand. + powerMode = DRIVER_POWER_MODE_AUTO; + } + if (powerMode != DRIVER_POWER_MODE_ACTIVE) { + WifiNative.setPowerModeCommand(DRIVER_POWER_MODE_ACTIVE); + } } synchronized (this) { // A new request is being made, so assume we will callback @@ -1798,7 +1808,9 @@ public class WifiStateTracker extends NetworkStateTracker { NetworkUtils.getDhcpError()); } synchronized (WifiStateTracker.this) { - WifiNative.setPowerModeCommand(DRIVER_POWER_MODE_AUTO); + if (powerMode != DRIVER_POWER_MODE_ACTIVE) { + WifiNative.setPowerModeCommand(powerMode); + } } if (modifiedBluetoothCoexistenceMode) { |