BSD: Only down the interface once we are sure we can work with it
authorRoy Marples <roy@marples.name>
Tue, 15 Mar 2016 10:39:24 +0000 (10:39 +0000)
committerJouni Malinen <j@w1.fi>
Sun, 20 Mar 2016 09:24:30 +0000 (11:24 +0200)
Signed-off-by: Roy Marples <roy@marples.name>
src/drivers/driver_bsd.c

index 99f3504..a6ca9a8 100644 (file)
@@ -1542,11 +1542,7 @@ wpa_driver_bsd_init(void *ctx, const char *ifname, void *priv)
 
        drv->ctx = ctx;
        drv->global = priv;
-
        os_strlcpy(drv->ifname, ifname, sizeof(drv->ifname));
-       /* Down interface during setup. */
-       if (bsd_ctrl_iface(drv, 0) < 0)
-               goto fail;
 
        if (!GETPARAM(drv, IEEE80211_IOC_ROAMING, drv->prev_roaming)) {
                wpa_printf(MSG_DEBUG, "%s: failed to get roaming state: %s",
@@ -1567,6 +1563,10 @@ wpa_driver_bsd_init(void *ctx, const char *ifname, void *priv)
        if (wpa_driver_bsd_capa(drv))
                goto fail;
 
+       /* Down interface during setup. */
+       if (bsd_ctrl_iface(drv, 0) < 0)
+               goto fail;
+
        drv->opmode = get80211opmode(drv);
        dl_list_add(&drv->global->ifaces, &drv->list);