am 4d8a8392: Merge "Don\'t set same country code on supplicant again and again" into klp-dev
* commit '4d8a8392f7a452479f228fbe08e43fa4145dda56':
Don't set same country code on supplicant again and again
diff --git a/wifi/java/android/net/wifi/WifiStateMachine.java b/wifi/java/android/net/wifi/WifiStateMachine.java
index 4bc3dda..78da7e7 100644
--- a/wifi/java/android/net/wifi/WifiStateMachine.java
+++ b/wifi/java/android/net/wifi/WifiStateMachine.java
@@ -89,6 +89,7 @@
import java.net.Inet6Address;
import java.util.ArrayList;
import java.util.List;
+import java.util.Locale;
import java.util.concurrent.atomic.AtomicInteger;
import java.util.concurrent.atomic.AtomicBoolean;
import java.util.Iterator;
@@ -500,6 +501,10 @@
// until after, so the write is deferred
private volatile String mPersistedCountryCode;
+ // Supplicant doesn't like setting the same country code multiple times (it may drop
+ // currently connected network), so we save the country code here to avoid redundency
+ private String mLastSetCountryCode;
+
private static final int MIN_RSSI = -200;
private static final int MAX_RSSI = 256;
@@ -3022,8 +3027,16 @@
case CMD_SET_COUNTRY_CODE:
String country = (String) message.obj;
if (DBG) log("set country code " + country);
- if (!mWifiNative.setCountryCode(country)) {
- loge("Failed to set country code " + country);
+ if (country != null) {
+ country = country.toUpperCase(Locale.ROOT);
+ if (mLastSetCountryCode == null
+ || country.equals(mLastSetCountryCode) == false) {
+ if (mWifiNative.setCountryCode(country)) {
+ mLastSetCountryCode = country;
+ } else {
+ loge("Failed to set country code " + country);
+ }
+ }
}
break;
case CMD_SET_FREQUENCY_BAND:
@@ -3156,6 +3169,8 @@
intent.putExtra(WifiManager.EXTRA_SCAN_AVAILABLE, WIFI_STATE_DISABLED);
mContext.sendStickyBroadcastAsUser(intent, UserHandle.ALL);
noteScanEnd(); // wrap up any pending request.
+
+ mLastSetCountryCode = null;
}
}
diff --git a/wifi/java/android/net/wifi/p2p/WifiP2pService.java b/wifi/java/android/net/wifi/p2p/WifiP2pService.java
index 625ffb8..8b07208 100644
--- a/wifi/java/android/net/wifi/p2p/WifiP2pService.java
+++ b/wifi/java/android/net/wifi/p2p/WifiP2pService.java
@@ -85,6 +85,8 @@
import java.util.Collection;
import java.util.HashMap;
import java.util.List;
+import java.util.Locale;
+
/**
* WifiP2pService includes a state machine to perform Wi-Fi p2p operations. Applications
@@ -201,6 +203,10 @@
*/
private boolean mDiscoveryBlocked;
+ // Supplicant doesn't like setting the same country code multiple times (it may drop
+ // current connected network), so we save the country code here to avoid redundency
+ private String mLastSetCountryCode;
+
/*
* remember if we were in a scan when it had to be stopped
*/
@@ -1070,7 +1076,13 @@
break;
case SET_COUNTRY_CODE:
String countryCode = (String) message.obj;
- mWifiNative.setCountryCode(countryCode);
+ countryCode = countryCode.toUpperCase(Locale.ROOT);
+ if (mLastSetCountryCode == null ||
+ countryCode.equals(mLastSetCountryCode) == false) {
+ if (mWifiNative.setCountryCode(countryCode)) {
+ mLastSetCountryCode = countryCode;
+ }
+ }
break;
default:
return NOT_HANDLED;
@@ -1082,6 +1094,8 @@
public void exit() {
sendP2pStateChangedBroadcast(false);
mNetworkInfo.setIsAvailable(false);
+
+ mLastSetCountryCode = null;
}
}