mvif->mt76.omac_idx = idx;
        mvif->phy = phy;
        mvif->mt76.band_idx = band_idx;
-       mvif->mt76.wmm_idx = band_idx;
+       mvif->mt76.wmm_idx = vif->type != NL80211_IFTYPE_AP;
 
        ret = mt7996_mcu_add_dev_info(phy, vif, true);
        if (ret)
               const struct ieee80211_tx_queue_params *params)
 {
        struct mt7996_vif *mvif = (struct mt7996_vif *)vif->drv_priv;
+       const u8 mq_to_aci[] = {
+               [IEEE80211_AC_VO] = 3,
+               [IEEE80211_AC_VI] = 2,
+               [IEEE80211_AC_BE] = 0,
+               [IEEE80211_AC_BK] = 1,
+       };
 
+       /* firmware uses access class index */
+       mvif->queue_params[mq_to_aci[queue]] = *params;
        /* no need to update right away, we'll get BSS_CHANGED_QOS */
-       queue = mt76_connac_lmac_mapping(queue);
-       mvif->queue_params[queue] = *params;
 
        return 0;
 }