int err;
        int layer2_update;
 
-       /* Prevent a race with changing the rate control algorithm */
-       if (!netif_running(dev))
-               return -ENETDOWN;
-
        if (params->vlan) {
                sdata = IEEE80211_DEV_TO_SUB_IF(params->vlan);
 
        struct sta_info *sta;
        int err;
 
-       if (!netif_running(dev))
-               return -ENETDOWN;
-
        sdata = IEEE80211_DEV_TO_SUB_IF(dev);
 
        if (sdata->vif.type != NL80211_IFTYPE_MESH_POINT)
        struct mesh_path *mpath;
        struct sta_info *sta;
 
-       if (!netif_running(dev))
-               return -ENETDOWN;
-
        sdata = IEEE80211_DEV_TO_SUB_IF(dev);
 
        if (sdata->vif.type != NL80211_IFTYPE_MESH_POINT)
 {
        struct ieee80211_sub_if_data *sdata;
 
-       if (!netif_running(dev))
-               return -ENETDOWN;
-
        sdata = IEEE80211_DEV_TO_SUB_IF(dev);
 
        if (sdata->vif.type != NL80211_IFTYPE_STATION &&
 {
        struct ieee80211_sub_if_data *sdata;
 
-       if (!netif_running(dev))
-               return -ENETDOWN;
-
        sdata = IEEE80211_DEV_TO_SUB_IF(dev);
 
        if (sdata->vif.type != NL80211_IFTYPE_STATION)
        struct ieee80211_sub_if_data *sdata;
        int ret;
 
-       if (!netif_running(dev))
-               return -ENETDOWN;
-
        sdata = IEEE80211_DEV_TO_SUB_IF(dev);
 
        if (sdata->vif.type != NL80211_IFTYPE_STATION)
 {
        struct ieee80211_sub_if_data *sdata;
 
-       if (!netif_running(dev))
-               return -ENETDOWN;
-
        sdata = IEEE80211_DEV_TO_SUB_IF(dev);
        if (sdata->vif.type != NL80211_IFTYPE_STATION)
                return -EOPNOTSUPP;
 {
        struct ieee80211_sub_if_data *sdata;
 
-       if (!netif_running(dev))
-               return -ENETDOWN;
-
        sdata = IEEE80211_DEV_TO_SUB_IF(dev);
 
        if (sdata->vif.type != NL80211_IFTYPE_STATION)
 
                goto out;
        }
 
+       if (!netif_running(dev)) {
+               err = -ENETDOWN;
+               goto out;
+       }
+
        err = drv->ops->add_station(&drv->wiphy, dev, mac_addr, ¶ms);
 
  out:
                goto out;
        }
 
+       if (!netif_running(dev)) {
+               err = -ENETDOWN;
+               goto out;
+       }
+
        err = drv->ops->change_mpath(&drv->wiphy, dev, dst, next_hop);
 
  out:
                goto out;
        }
 
+       if (!netif_running(dev)) {
+               err = -ENETDOWN;
+               goto out;
+       }
+
        err = drv->ops->add_mpath(&drv->wiphy, dev, dst, next_hop);
 
  out:
                goto out;
        }
 
+       if (!netif_running(dev)) {
+               err = -ENETDOWN;
+               goto out;
+       }
+
        if (drv->scan_req) {
                err = -EBUSY;
                goto out;
                goto out;
        }
 
+       if (!netif_running(dev)) {
+               err = -ENETDOWN;
+               goto out;
+       }
+
        if (!info->attrs[NL80211_ATTR_MAC]) {
                err = -EINVAL;
                goto out;
                goto out;
        }
 
+       if (!netif_running(dev)) {
+               err = -ENETDOWN;
+               goto out;
+       }
+
        if (!info->attrs[NL80211_ATTR_MAC] ||
            !info->attrs[NL80211_ATTR_SSID]) {
                err = -EINVAL;
                goto out;
        }
 
+       if (!netif_running(dev)) {
+               err = -ENETDOWN;
+               goto out;
+       }
+
        if (!info->attrs[NL80211_ATTR_MAC]) {
                err = -EINVAL;
                goto out;
                goto out;
        }
 
+       if (!netif_running(dev)) {
+               err = -ENETDOWN;
+               goto out;
+       }
+
        if (!info->attrs[NL80211_ATTR_MAC]) {
                err = -EINVAL;
                goto out;