diff options
author | Arif Hussain <arifhussain@codeaurora.org> | 2018-01-16 18:16:32 -0800 |
---|---|---|
committer | Michael Bestas <mkbestas@lineageos.org> | 2019-10-23 00:51:25 +0200 |
commit | b12f67b3e28e4aa53b318a599ed21cdbf44f1c3c (patch) | |
tree | 82ac9dfbb998aa836ae986da30928c4cbeabec10 | |
parent | e4bec41b7cece0011b4c7c3b47f922cba8b3ffae (diff) | |
download | android_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
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 |