summaryrefslogtreecommitdiffstats
path: root/wifi/java/android/net
diff options
context:
space:
mode:
authorIrfan Sheriff <isheriff@google.com>2012-04-27 13:34:07 -0700
committerIrfan Sheriff <isheriff@google.com>2012-04-27 13:35:07 -0700
commitb678320cfa16424e01494fb0ee97bc98c0988bf1 (patch)
treee9a2faeca8e72b62dde0d029de0aefce962052ca /wifi/java/android/net
parente2639d782eef1365a98dbd2639be23a6dd06e691 (diff)
downloadframeworks_base-b678320cfa16424e01494fb0ee97bc98c0988bf1.zip
frameworks_base-b678320cfa16424e01494fb0ee97bc98c0988bf1.tar.gz
frameworks_base-b678320cfa16424e01494fb0ee97bc98c0988bf1.tar.bz2
Recover immediately from driver hang
A firmware crash can now put the interface down without notifiying the framework. We detect this and recover immediately. Bug: 6263857 Change-Id: Ib2dc0412fcdf9ce7b90a7fc0fab778f7af9c0513
Diffstat (limited to 'wifi/java/android/net')
-rw-r--r--wifi/java/android/net/wifi/WifiStateMachine.java8
1 files changed, 4 insertions, 4 deletions
diff --git a/wifi/java/android/net/wifi/WifiStateMachine.java b/wifi/java/android/net/wifi/WifiStateMachine.java
index 0cc1380..3503633 100644
--- a/wifi/java/android/net/wifi/WifiStateMachine.java
+++ b/wifi/java/android/net/wifi/WifiStateMachine.java
@@ -2814,15 +2814,15 @@ public class WifiStateMachine extends StateMachine {
break;
case WifiMonitor.SUPPLICANT_STATE_CHANGE_EVENT:
SupplicantState state = handleSupplicantStateChange(message);
- // Due to a WEXT bug, during the time of driver start/stop
- // we can go into a driver stopped state in an unexpected way.
- // The sequence eventually puts interface
- // up and we should be back to a connected state
+ // A driver/firmware hang can now put the interface in a down state.
+ // We detect the interface going down and recover from it
if (!SupplicantState.isDriverActive(state)) {
if (mNetworkInfo.getState() != NetworkInfo.State.DISCONNECTED) {
handleNetworkDisconnect();
}
+ log("Detected an interface down, restart driver");
transitionTo(mDriverStoppedState);
+ sendMessage(CMD_START_DRIVER);
break;
}