summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorArif Hussain <arifhussain@codeaurora.org>2018-01-16 18:16:32 -0800
committerMichael Bestas <mkbestas@lineageos.org>2019-10-23 00:51:25 +0200
commitb12f67b3e28e4aa53b318a599ed21cdbf44f1c3c (patch)
tree82ac9dfbb998aa836ae986da30928c4cbeabec10
parente4bec41b7cece0011b4c7c3b47f922cba8b3ffae (diff)
downloadandroid_frameworks_opt_net_wifi-b12f67b3e28e4aa53b318a599ed21cdbf44f1c3c.tar.gz
android_frameworks_opt_net_wifi-b12f67b3e28e4aa53b318a599ed21cdbf44f1c3c.tar.bz2
android_frameworks_opt_net_wifi-b12f67b3e28e4aa53b318a599ed21cdbf44f1c3c.zip
WiFi: Ignore connectivity scans during WFD session
Any scans will impact WiFi performance including WFD performance. So during WFD session, ignore all connectivity scans initiated internally by wifi work source. This change will not impact any scan triggered due to user activity and will allow those scans. Change-Id: I6a855a8c4853a21fb0ff054c6a5155719ee12b3d CRs-Fixed: 2136506
-rw-r--r--service/java/com/android/server/wifi/ClientModeImpl.java4
-rw-r--r--service/java/com/android/server/wifi/WifiConnectivityManager.java22
-rw-r--r--service/java/com/android/server/wifi/p2p/WifiP2pServiceImpl.java5
3 files changed, 31 insertions, 0 deletions
diff --git a/service/java/com/android/server/wifi/ClientModeImpl.java b/service/java/com/android/server/wifi/ClientModeImpl.java
index bbd8ee927..c18abca36 100644
--- a/service/java/com/android/server/wifi/ClientModeImpl.java
+++ b/service/java/com/android/server/wifi/ClientModeImpl.java
@@ -3608,6 +3608,10 @@ public class ClientModeImpl extends StateMachine {
mTemporarilyDisconnectWifi = (message.arg1 == 1);
replyToMessage(message, WifiP2pServiceImpl.DISCONNECT_WIFI_RESPONSE);
break;
+ case WifiP2pServiceImpl.SET_MIRACAST_MODE:
+ if (mVerboseLoggingEnabled) logd("SET_MIRACAST_MODE: " + (int)message.arg1);
+ mWifiConnectivityManager.saveMiracastMode((int)message.arg1);
+ break;
/* Link configuration (IP address, DNS, ...) changes notified via netlink */
case CMD_UPDATE_LINKPROPERTIES:
updateLinkProperties((LinkProperties) message.obj);
diff --git a/service/java/com/android/server/wifi/WifiConnectivityManager.java b/service/java/com/android/server/wifi/WifiConnectivityManager.java
index 7411422e0..c4ff73de7 100644
--- a/service/java/com/android/server/wifi/WifiConnectivityManager.java
+++ b/service/java/com/android/server/wifi/WifiConnectivityManager.java
@@ -24,6 +24,7 @@ import static com.android.server.wifi.ClientModeImpl.WIFI_WORK_SOURCE;
import android.app.AlarmManager;
import android.content.Context;
+import android.net.wifi.p2p.WifiP2pManager;
import android.net.wifi.ScanResult;
import android.net.wifi.SupplicantState;
import android.net.wifi.WifiConfiguration;
@@ -159,6 +160,7 @@ public class WifiConnectivityManager {
private boolean mWifiConnectivityManagerEnabled = false;
private boolean mRunning = false;
private boolean mScreenOn = false;
+ private int mMiracastMode = WifiP2pManager.MIRACAST_DISABLED;
private int mWifiState = WIFI_STATE_UNKNOWN;
private boolean mUntrustedConnectionAllowed = false;
private boolean mTrustedConnectionAllowed = false;
@@ -903,6 +905,17 @@ public class WifiConnectivityManager {
return;
}
+ // Any scans will impact Wifi performance including WFD performance,
+ // So at least ignore scans triggered internally by ConnectivityManager
+ // when WFD session is active. We still allow connectivity scans initiated
+ // by other work source.
+ if (WIFI_WORK_SOURCE.equals(workSource) &&
+ (mMiracastMode == WifiP2pManager.MIRACAST_SOURCE ||
+ mMiracastMode == WifiP2pManager.MIRACAST_SINK)) {
+ localLog("Ignore connectivity scan, MiracastMode:" + mMiracastMode);
+ return;
+ }
+
mPnoScanListener.resetLowRssiNetworkRetryDelay();
ScanSettings settings = new ScanSettings();
@@ -1149,6 +1162,15 @@ public class WifiConnectivityManager {
}
/**
+ * Save current miracast mode, it will be used to ignore
+ * connectivity scan during the time when miracast is enabled.
+ */
+ public void saveMiracastMode(int mode) {
+ localLog("saveMiracastMode: mode=" + mode);
+ mMiracastMode = mode;
+ }
+
+ /**
* Helper function that converts the WIFI_STATE_XXX constants to string
*/
private static String stateToString(int state) {
diff --git a/service/java/com/android/server/wifi/p2p/WifiP2pServiceImpl.java b/service/java/com/android/server/wifi/p2p/WifiP2pServiceImpl.java
index 3f3745664..a6098be2b 100644
--- a/service/java/com/android/server/wifi/p2p/WifiP2pServiceImpl.java
+++ b/service/java/com/android/server/wifi/p2p/WifiP2pServiceImpl.java
@@ -675,6 +675,11 @@ public class WifiP2pServiceImpl extends IWifiP2pManager.Stub {
enforceConnectivityInternalPermission();
checkConfigureWifiDisplayPermission();
mP2pStateMachine.sendMessage(SET_MIRACAST_MODE, mode);
+ if (mWifiChannel != null) {
+ mWifiChannel.sendMessage(WifiP2pServiceImpl.SET_MIRACAST_MODE, mode);
+ } else {
+ Log.e(TAG, "setMiracastMode(): WifiChannel is null");
+ }
}
@Override