{
        struct ieee80211_local *local = sdata->local;
        struct ieee80211_key *old_key;
-       int idx, ret;
-       bool pairwise;
-
-       pairwise = key->conf.flags & IEEE80211_KEY_FLAG_PAIRWISE;
-       idx = key->conf.keyidx;
+       int idx = key->conf.keyidx;
+       bool pairwise = key->conf.flags & IEEE80211_KEY_FLAG_PAIRWISE;
+       /*
+        * We want to delay tailroom updates only for station - in that
+        * case it helps roaming speed, but in other cases it hurts and
+        * can cause warnings to appear.
+        */
+       bool delay_tailroom = sdata->vif.type == NL80211_IFTYPE_STATION;
+       int ret;
 
        mutex_lock(&sdata->local->key_mtx);
 
        increment_tailroom_need_count(sdata);
 
        ieee80211_key_replace(sdata, sta, pairwise, old_key, key);
-       ieee80211_key_destroy(old_key, true);
+       ieee80211_key_destroy(old_key, delay_tailroom);
 
        ieee80211_debugfs_key_add(key);
 
        if (!local->wowlan) {
                ret = ieee80211_key_enable_hw_accel(key);
                if (ret)
-                       ieee80211_key_free(key, true);
+                       ieee80211_key_free(key, delay_tailroom);
        } else {
                ret = 0;
        }
                ieee80211_key_replace(key->sdata, key->sta,
                                key->conf.flags & IEEE80211_KEY_FLAG_PAIRWISE,
                                key, NULL);
-               __ieee80211_key_destroy(key, true);
+               __ieee80211_key_destroy(key, key->sdata->vif.type ==
+                                       NL80211_IFTYPE_STATION);
        }
 
        for (i = 0; i < NUM_DEFAULT_KEYS; i++) {
                ieee80211_key_replace(key->sdata, key->sta,
                                key->conf.flags & IEEE80211_KEY_FLAG_PAIRWISE,
                                key, NULL);
-               __ieee80211_key_destroy(key, true);
+               __ieee80211_key_destroy(key, key->sdata->vif.type ==
+                                       NL80211_IFTYPE_STATION);
        }
 
        mutex_unlock(&local->key_mtx);