summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorKeith Mok <kmok@cyngn.com>2016-01-26 09:51:41 -0800
committerMichael Bestas <mikeioannina@gmail.com>2017-01-01 23:10:28 +0200
commitce4d0b384f196195ea5f0d6090466773c1595e76 (patch)
treec86041c89c6f10f901854ceb9f78cedfef0d1c60
parent95b0e98f01a32fe8b89ba778230e8a48979bd1d1 (diff)
downloadandroid_frameworks_opt_net_wifi-ce4d0b384f196195ea5f0d6090466773c1595e76.tar.gz
android_frameworks_opt_net_wifi-ce4d0b384f196195ea5f0d6090466773c1595e76.tar.bz2
android_frameworks_opt_net_wifi-ce4d0b384f196195ea5f0d6090466773c1595e76.zip
Kill wpa_supplicant before load driver
When system_server restarts due to crash, the start sequence for wifi is as follows: 1.) unload wifi driver 2.) load wifi driver 3.) kill wpa_supplicant that was left 4.) start new wpa_supplicant The problem is that when we load the wifi driver, the old wpa_supplicant will be notified immediatedly due to netlink, and tries to bring up the interface This is unnecessary. We should kill wpa_supplicant before loading wifi driver to avoid unnecessary bring up of interface by old wpa_supplicant and possibly race condition in kernel driver. Change-Id: Ie39c9b847d811e09c55386c1c4cf5f554af05868
-rw-r--r--service/java/com/android/server/wifi/WifiStateMachine.java12
1 files changed, 6 insertions, 6 deletions
diff --git a/service/java/com/android/server/wifi/WifiStateMachine.java b/service/java/com/android/server/wifi/WifiStateMachine.java
index d3beaa8d6..21e58c27d 100644
--- a/service/java/com/android/server/wifi/WifiStateMachine.java
+++ b/service/java/com/android/server/wifi/WifiStateMachine.java
@@ -4453,6 +4453,12 @@ public class WifiStateMachine extends StateMachine implements WifiNative.WifiRss
logStateAndMessage(message, this);
switch (message.what) {
case CMD_START_SUPPLICANT:
+ /* Stop a running supplicant after a runtime restart
+ * Avoids issues with drivers that do not handle interface down
+ * on a running supplicant properly.
+ */
+ mWifiMonitor.killSupplicant(mP2pSupported);
+
if (mWifiNative.loadDriver()) {
try {
mNwService.wifiFirmwareReload(mInterfaceName, "STA");
@@ -4485,12 +4491,6 @@ public class WifiStateMachine extends StateMachine implements WifiNative.WifiRss
loge("Unable to change interface settings: " + ie);
}
- /* Stop a running supplicant after a runtime restart
- * Avoids issues with drivers that do not handle interface down
- * on a running supplicant properly.
- */
- mWifiMonitor.killSupplicant(mP2pSupported);
-
if (mWifiNative.startHal() == false) {
/* starting HAL is optional */
loge("Failed to start HAL");