DO NOT MERGE Dont let supplicant stay in DORMANT state

In some situations, the supplicant stays in a DORMANT
state. This prevents a connections to a network.

As long as the driver is started and we are not in scan-only
mode, issue a reconnect to get supplicant out of DORMANT
state.

Upon failures and network disable, supplicant should get
into an INACTIVE state.

Bug: 3236920
Change-Id: If32b5bfb7fea6c69c4a461db0b2012875b6273b5
This commit is contained in:
Irfan Sheriff
2010-12-01 11:25:36 -08:00
parent e23212bc89
commit f36bde828c

View File

@@ -1038,13 +1038,18 @@ public class WifiStateTracker extends NetworkStateTracker {
} }
handleDisconnectedState(newDetailedState, true); handleDisconnectedState(newDetailedState, true);
/** /**
* If we were associated with a network (networkId != -1), * We should never let the supplicant stay in DORMANT state
* assume we reached this state because of a failed attempt * as long as we are in connect mode and driver is started
* to acquire an IP address, and attempt another connection *
* and IP address acquisition in RECONNECT_DELAY_MSECS * We should normally hit a DORMANT state due to a disconnect
* milliseconds. * issued after an IP configuration failure. We issue a reconnect
* after RECONNECT_DELAY_MSECS in such a case.
*
* After multiple failures, the network gets disabled and the
* supplicant should reach an INACTIVE state.
*
*/ */
if (mRunState == RUN_STATE_RUNNING && !mIsScanOnly && networkId != -1) { if (mRunState == RUN_STATE_RUNNING && !mIsScanOnly) {
sendMessageDelayed(reconnectMsg, RECONNECT_DELAY_MSECS); sendMessageDelayed(reconnectMsg, RECONNECT_DELAY_MSECS);
} else if (mRunState == RUN_STATE_STOPPING) { } else if (mRunState == RUN_STATE_STOPPING) {
stopDriver(); stopDriver();