link_sta_dereference_protected(sta, link_id);
                mvm_vif_link = mvm_vif->link[link_id];
 
-               if (WARN_ON(!mvm_vif_link || !link_conf || !link_sta ||
-                           mvm_sta->link[link_id])) {
+               if (WARN_ON(!mvm_vif_link || !link_conf || !link_sta)) {
                        ret = -EINVAL;
                        goto err;
                }
 
-               ret = iwl_mvm_mld_alloc_sta_link(mvm, vif, sta, link_id);
-               if (WARN_ON(ret))
-                       goto err;
+               if (test_bit(IWL_MVM_STATUS_IN_HW_RESTART, &mvm->status)) {
+                       if (WARN_ON(!mvm_sta->link[link_id])) {
+                               ret = -EINVAL;
+                               goto err;
+                       }
+               } else {
+                       if (WARN_ON(mvm_sta->link[link_id])) {
+                               ret = -EINVAL;
+                               goto err;
+                       }
+                       ret = iwl_mvm_mld_alloc_sta_link(mvm, vif, sta,
+                                                        link_id);
+                       if (WARN_ON(ret))
+                               goto err;
+               }
 
                link_sta->agg.max_rc_amsdu_len = 1;
                ieee80211_sta_recalc_aggregates(sta);