From b678320cfa16424e01494fb0ee97bc98c0988bf1 Mon Sep 17 00:00:00 2001 From: Irfan Sheriff Date: Fri, 27 Apr 2012 13:34:07 -0700 Subject: 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 --- wifi/java/android/net/wifi/WifiStateMachine.java | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) (limited to 'wifi/java/android') 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; } -- cgit v1.1