summaryrefslogtreecommitdiff
path: root/service
diff options
context:
space:
mode:
Diffstat (limited to 'service')
-rw-r--r--service/java/com/android/server/wifi/WifiLockManager.java32
1 files changed, 22 insertions, 10 deletions
diff --git a/service/java/com/android/server/wifi/WifiLockManager.java b/service/java/com/android/server/wifi/WifiLockManager.java
index 73541824e..4db6b334c 100644
--- a/service/java/com/android/server/wifi/WifiLockManager.java
+++ b/service/java/com/android/server/wifi/WifiLockManager.java
@@ -650,20 +650,32 @@ public class WifiLockManager {
private boolean setLowLatencyMode(boolean enabled) {
int lowLatencySupport = getLowLatencyModeSupport();
+ if (lowLatencySupport == LOW_LATENCY_SUPPORT_UNDEFINED) {
+ // Support undefined, no action is taken
+ return false;
+ }
+
if (lowLatencySupport == LOW_LATENCY_SUPPORTED) {
- return mClientModeImpl.setLowLatencyMode(enabled);
- } else if (lowLatencySupport == LOW_LATENCY_NOT_SUPPORTED) {
- // Since low-latency mode is not supported, use power save instead
- // Note: low-latency mode enabled ==> power-save disabled
- if (mVerboseLoggingEnabled) {
- Slog.d(TAG, "low-latency is not supported, using power-save instead");
+ if (!mClientModeImpl.setLowLatencyMode(enabled)) {
+ Slog.e(TAG, "Failed to set low latency mode");
+ return false;
}
- return mClientModeImpl.setPowerSave(!enabled);
- } else {
- // Support undefined, no need to attempt either functions
- return false;
+ if (!mClientModeImpl.setPowerSave(!enabled)) {
+ Slog.e(TAG, "Failed to set power save mode");
+ // Revert the low latency mode
+ mClientModeImpl.setLowLatencyMode(!enabled);
+ return false;
+ }
+ } else if (lowLatencySupport == LOW_LATENCY_NOT_SUPPORTED) {
+ // Only set power save mode
+ if (!mClientModeImpl.setPowerSave(!enabled)) {
+ Slog.e(TAG, "Failed to set power save mode");
+ return false;
+ }
}
+
+ return true;
}
private synchronized WifiLock findLockByBinder(IBinder binder) {