diff options
author | Keith Mok <kmok@cyngn.com> | 2016-01-26 09:51:41 -0800 |
---|---|---|
committer | Michael Bestas <mikeioannina@gmail.com> | 2017-01-01 23:10:28 +0200 |
commit | ce4d0b384f196195ea5f0d6090466773c1595e76 (patch) | |
tree | c86041c89c6f10f901854ceb9f78cedfef0d1c60 | |
parent | 95b0e98f01a32fe8b89ba778230e8a48979bd1d1 (diff) | |
download | android_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.java | 12 |
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"); |