mtxq = (struct mt76_txq *)txq->drv_priv;
 
+       mutex_lock(&dev->mt76.mutex);
        switch (action) {
        case IEEE80211_AMPDU_RX_START:
                mt76_rx_aggr_start(&dev->mt76, &msta->wcid, tid, ssn,
                ieee80211_stop_tx_ba_cb_irqsafe(vif, sta->addr, tid);
                break;
        }
+       mutex_unlock(&dev->mt76.mutex);
 
        return 0;
 }
 
 
        mtxq = (struct mt76_txq *)txq->drv_priv;
 
+       mutex_lock(&dev->mt76.mutex);
        switch (action) {
        case IEEE80211_AMPDU_RX_START:
                mt76_rx_aggr_start(&dev->mt76, &msta->wcid, tid, ssn,
                ieee80211_stop_tx_ba_cb_irqsafe(vif, sta->addr, tid);
                break;
        }
+       mutex_unlock(&dev->mt76.mutex);
 
        return 0;
 }
 
 
        mtxq = (struct mt76_txq *)txq->drv_priv;
 
+       mutex_lock(&dev->mt76.mutex);
        switch (action) {
        case IEEE80211_AMPDU_RX_START:
                mt76_rx_aggr_start(&dev->mt76, &msta->wcid, tid,
                ieee80211_stop_tx_ba_cb_irqsafe(vif, sta->addr, tid);
                break;
        }
+       mutex_unlock(&dev->mt76.mutex);
 
        return 0;
 }