spin_lock_irqsave(&il->sta_lock, flags);
        if (txq->sched_retry) {
                const u32 scd_ssn = il4965_get_scd_ssn(tx_resp);
-               struct il_ht_agg *agg = NULL;
-               WARN_ON(!qc);
+               struct il_ht_agg *agg;
+
+               if (WARN_ON(!qc))
+                       goto out;
 
                agg = &il->stations[sta_id].tid[tid].agg;
 
                        D_TX_REPLY("Retry scheduler reclaim scd_ssn "
                                   "%d idx %d\n", scd_ssn, idx);
                        freed = il4965_tx_queue_reclaim(il, txq_id, idx);
-                       if (qc)
-                               il4965_free_tfds_in_queue(il, sta_id, tid,
-                                                         freed);
+                       il4965_free_tfds_in_queue(il, sta_id, tid, freed);
 
                        if (il->mac80211_registered &&
                            il_queue_space(&txq->q) > txq->q.low_mark &&
                    il_queue_space(&txq->q) > txq->q.low_mark)
                        il_wake_queue(il, txq);
        }
+out:
        if (qc && likely(sta_id != IL_INVALID_STATION))
                il4965_txq_check_empty(il, sta_id, tid, txq_id);