summaryrefslogtreecommitdiffstats
path: root/wifi
diff options
context:
space:
mode:
authorIrfan Sheriff <isheriff@google.com>2011-01-18 18:10:30 -0800
committerIrfan Sheriff <isheriff@google.com>2011-01-18 19:31:09 -0800
commit0c7e16450c9060551bd0bea6e08bc9fb2ba411b4 (patch)
treea6f4fac3999c1fd4a35bc7f579fa589b8aeca97e /wifi
parentec7c9ff0bb1c98cb8bec3ec7bdacbae3a434fa53 (diff)
downloadframeworks_base-0c7e16450c9060551bd0bea6e08bc9fb2ba411b4.zip
frameworks_base-0c7e16450c9060551bd0bea6e08bc9fb2ba411b4.tar.gz
frameworks_base-0c7e16450c9060551bd0bea6e08bc9fb2ba411b4.tar.bz2
Fix soft Ap handling on system restart
When system server restarts, a soft AP start can fail. Fix it by doing a stop and start through netd. Bug: 3236625 Change-Id: I95f31eb34a03b64cb7e2b6b8bdd56fc2119b605b
Diffstat (limited to 'wifi')
-rw-r--r--wifi/java/android/net/wifi/WifiStateMachine.java26
1 files changed, 18 insertions, 8 deletions
diff --git a/wifi/java/android/net/wifi/WifiStateMachine.java b/wifi/java/android/net/wifi/WifiStateMachine.java
index 0548b4d..df21399 100644
--- a/wifi/java/android/net/wifi/WifiStateMachine.java
+++ b/wifi/java/android/net/wifi/WifiStateMachine.java
@@ -61,7 +61,6 @@ import android.os.WorkSource;
import android.provider.Settings;
import android.util.EventLog;
import android.util.Log;
-import android.util.Slog;
import android.app.backup.IBackupManager;
import android.bluetooth.BluetoothAdapter;
import android.content.BroadcastReceiver;
@@ -1671,10 +1670,18 @@ public class WifiStateMachine extends HierarchicalStateMachine {
nwService.startAccessPoint((WifiConfiguration) message.obj,
mInterfaceName,
SOFTAP_IFACE);
- } catch(Exception e) {
- Log.e(TAG, "Exception in startAccessPoint()");
- sendMessage(obtainMessage(CMD_UNLOAD_DRIVER, WIFI_AP_STATE_FAILED, 0));
- break;
+ } catch (Exception e) {
+ Log.e(TAG, "Exception in softap start " + e);
+ try {
+ nwService.stopAccessPoint();
+ nwService.startAccessPoint((WifiConfiguration) message.obj,
+ mInterfaceName,
+ SOFTAP_IFACE);
+ } catch (Exception ee) {
+ Log.e(TAG, "Exception during softap restart : " + ee);
+ sendMessage(obtainMessage(CMD_UNLOAD_DRIVER, WIFI_AP_STATE_FAILED, 0));
+ break;
+ }
}
Log.d(TAG, "Soft AP start successful");
setWifiApState(WIFI_AP_STATE_ENABLED);
@@ -2824,13 +2831,16 @@ public class WifiStateMachine extends HierarchicalStateMachine {
mInterfaceName,
SOFTAP_IFACE);
} catch(Exception e) {
- Log.e(TAG, "Exception in nwService during soft AP set");
+ Log.e(TAG, "Exception in softap set " + e);
try {
nwService.stopAccessPoint();
+ nwService.startAccessPoint((WifiConfiguration) message.obj,
+ mInterfaceName,
+ SOFTAP_IFACE);
} catch (Exception ee) {
- Slog.e(TAG, "Could not stop AP, :" + ee);
+ Log.e(TAG, "Could not restart softap after set failed " + ee);
+ sendMessage(obtainMessage(CMD_UNLOAD_DRIVER, WIFI_AP_STATE_FAILED, 0));
}
- sendMessage(obtainMessage(CMD_UNLOAD_DRIVER, WIFI_AP_STATE_FAILED, 0));
}
break;
/* Fail client mode operation when soft AP is enabled */