return false;
        }
 
-       err = sta_info_move_state(sta, IEEE80211_STA_AUTH);
-       if (!err)
-               err = sta_info_move_state(sta, IEEE80211_STA_ASSOC);
-       if (!err && !(ifmgd->flags & IEEE80211_STA_CONTROL_PORT))
-               err = sta_info_move_state(sta, IEEE80211_STA_AUTHORIZED);
-       if (err) {
-               printk(KERN_DEBUG
-                      "%s: failed to move station %pM to desired state\n",
-                      sdata->name, sta->sta.addr);
-               WARN_ON(__sta_info_destroy(sta));
-               mutex_unlock(&sdata->local->sta_mtx);
-               return false;
-       }
-
        rates = 0;
        basic_rates = 0;
        sband = local->hw.wiphy->bands[wk->chan->band];
        if (elems.wmm_param)
                set_sta_flag(sta, WLAN_STA_WME);
 
+       err = sta_info_move_state(sta, IEEE80211_STA_AUTH);
+       if (!err)
+               err = sta_info_move_state(sta, IEEE80211_STA_ASSOC);
+       if (!err && !(ifmgd->flags & IEEE80211_STA_CONTROL_PORT))
+               err = sta_info_move_state(sta, IEEE80211_STA_AUTHORIZED);
+       if (err) {
+               printk(KERN_DEBUG
+                      "%s: failed to move station %pM to desired state\n",
+                      sdata->name, sta->sta.addr);
+               WARN_ON(__sta_info_destroy(sta));
+               mutex_unlock(&sdata->local->sta_mtx);
+               return false;
+       }
+
        /* sta_info_reinsert will also unlock the mutex lock */
        err = sta_info_reinsert(sta);
        sta = NULL;