spin_unlock_bh(&mvm->time_event_lock);
 
        memset(&mvmvif->bf_data, 0, sizeof(mvmvif->bf_data));
+       mvmvif->ap_sta = NULL;
 
        for_each_mvm_vif_valid_link(mvmvif, link_id) {
                mvmvif->link[link_id]->ap_sta_id = IWL_MVM_INVALID_STA;
 
        mutex_lock(&mvm->mutex);
 
-       /* this would be a mac80211 bug ... but don't crash */
+       /* this would be a mac80211 bug ... but don't crash, unless we had a
+        * firmware crash while we were activating a link, in which case it is
+        * legit to have phy_ctxt = NULL. Don't bother not to WARN if we are in
+        * recovery flow since we spit tons of error messages anyway.
+        */
        for_each_sta_active_link(vif, sta, link_sta, link_id) {
                if (WARN_ON_ONCE(!mvmvif->link[link_id] ||
                                 !mvmvif->link[link_id]->phy_ctxt)) {