Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 37794c20 authored by Irfan Sheriff's avatar Irfan Sheriff Committed by Android Git Automerger
Browse files

am f264e8e3: am 567a2919: Merge "Stop supplicant and dhcp before start" into jb-mr1.1-dev

* commit 'f264e8e3':
  Stop supplicant and dhcp before start
parents f107bda0 f264e8e3
Loading
Loading
Loading
Loading
+2 −0
Original line number Diff line number Diff line
@@ -351,6 +351,8 @@ public class DhcpStateMachine extends StateMachine {
        DhcpInfoInternal dhcpInfoInternal = new DhcpInfoInternal();

        if (dhcpAction == DhcpAction.START) {
            /* Stop any existing DHCP daemon before starting new */
            NetworkUtils.stopDhcp(mInterfaceName);
            if (DBG) Log.d(TAG, "DHCP request on " + mInterfaceName);
            success = NetworkUtils.runDhcp(mInterfaceName, dhcpInfoInternal);
            mDhcpInfo = dhcpInfoInternal;
+3 −3
Original line number Diff line number Diff line
@@ -122,9 +122,9 @@ static jboolean android_net_wifi_startSupplicant(JNIEnv* env, jobject, jboolean
    return (jboolean)(::wifi_start_supplicant(p2pSupported) == 0);
}

static jboolean android_net_wifi_killSupplicant(JNIEnv* env, jobject)
static jboolean android_net_wifi_killSupplicant(JNIEnv* env, jobject, jboolean p2pSupported)
{
    return (jboolean)(::wifi_stop_supplicant() == 0);
    return (jboolean)(::wifi_stop_supplicant(p2pSupported) == 0);
}

static jboolean android_net_wifi_connectToSupplicant(JNIEnv* env, jobject, jstring jIface)
@@ -204,7 +204,7 @@ static JNINativeMethod gWifiMethods[] = {
    { "isDriverLoaded", "()Z",  (void *)android_net_wifi_isDriverLoaded },
    { "unloadDriver", "()Z",  (void *)android_net_wifi_unloadDriver },
    { "startSupplicant", "(Z)Z",  (void *)android_net_wifi_startSupplicant },
    { "killSupplicant", "()Z",  (void *)android_net_wifi_killSupplicant },
    { "killSupplicant", "(Z)Z",  (void *)android_net_wifi_killSupplicant },
    { "connectToSupplicant", "(Ljava/lang/String;)Z",
            (void *)android_net_wifi_connectToSupplicant },
    { "closeSupplicantConnection", "(Ljava/lang/String;)V",
+1 −1
Original line number Diff line number Diff line
@@ -61,7 +61,7 @@ public class WifiNative {

    /* Sends a kill signal to supplicant. To be used when we have lost connection
       or when the supplicant is hung */
    public native static boolean killSupplicant();
    public native static boolean killSupplicant(boolean p2pSupported);

    private native boolean connectToSupplicant(String iface);

+12 −4
Original line number Diff line number Diff line
@@ -1944,6 +1944,7 @@ public class WifiStateMachine extends StateMachine {
                case CMD_STOP_DRIVER:
                case CMD_DELAYED_STOP_DRIVER:
                case CMD_DRIVER_START_TIMED_OUT:
                case CMD_CAPTIVE_CHECK_COMPLETE:
                case CMD_START_AP:
                case CMD_START_AP_SUCCESS:
                case CMD_START_AP_FAILURE:
@@ -2189,6 +2190,13 @@ public class WifiStateMachine extends StateMachine {
                        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.
                     */
                    if (DBG) log("Kill any running supplicant");
                    mWifiNative.killSupplicant(mP2pSupported);

                    if(mWifiNative.startSupplicant(mP2pSupported)) {
                        if (DBG) log("Supplicant start successful");
                        mWifiMonitor.startMonitoring();
@@ -2384,7 +2392,7 @@ public class WifiStateMachine extends StateMachine {
                case WifiMonitor.SUP_DISCONNECTION_EVENT:
                    if (++mSupplicantRestartCount <= SUPPLICANT_RESTART_TRIES) {
                        loge("Failed to setup control channel, restart supplicant");
                        mWifiNative.killSupplicant();
                        mWifiNative.killSupplicant(mP2pSupported);
                        transitionTo(mDriverLoadedState);
                        sendMessageDelayed(CMD_START_SUPPLICANT, SUPPLICANT_RESTART_INTERVAL_MSECS);
                    } else {
@@ -2451,7 +2459,7 @@ public class WifiStateMachine extends StateMachine {
                    break;
                case WifiMonitor.SUP_DISCONNECTION_EVENT:  /* Supplicant connection lost */
                    loge("Connection lost, restart supplicant");
                    mWifiNative.killSupplicant();
                    mWifiNative.killSupplicant(mP2pSupported);
                    mWifiNative.closeSupplicantConnection();
                    mNetworkInfo.setIsAvailable(false);
                    handleNetworkDisconnect();
@@ -2605,14 +2613,14 @@ public class WifiStateMachine extends StateMachine {
                    /* Socket connection can be lost when we do a graceful shutdown
                     * or when the driver is hung. Ensure supplicant is stopped here.
                     */
                    mWifiNative.killSupplicant();
                    mWifiNative.killSupplicant(mP2pSupported);
                    mWifiNative.closeSupplicantConnection();
                    transitionTo(mDriverLoadedState);
                    break;
                case CMD_STOP_SUPPLICANT_FAILED:
                    if (message.arg1 == mSupplicantStopFailureToken) {
                        loge("Timed out on a supplicant stop, kill and proceed");
                        mWifiNative.killSupplicant();
                        mWifiNative.killSupplicant(mP2pSupported);
                        mWifiNative.closeSupplicantConnection();
                        transitionTo(mDriverLoadedState);
                    }