return;
 
        spin_lock_bh(&tid->lock);
-       mt76_rx_aggr_release_frames(tid, frames, seqno);
-       mt76_rx_aggr_release_head(tid, frames);
+       if (!tid->stopped) {
+               mt76_rx_aggr_release_frames(tid, frames, seqno);
+               mt76_rx_aggr_release_head(tid, frames);
+       }
        spin_unlock_bh(&tid->lock);
 }
 
        u8 size = tid->size;
        int i;
 
-       cancel_delayed_work_sync(&tid->reorder_work);
-
        spin_lock_bh(&tid->lock);
 
        tid->stopped = true;
        }
 
        spin_unlock_bh(&tid->lock);
+
+       cancel_delayed_work_sync(&tid->reorder_work);
 }
 
 void mt76_rx_aggr_stop(struct mt76_dev *dev, struct mt76_wcid *wcid, u8 tidno)