.sta_add = mt76x02_sta_add,
        .sta_remove = mt76x02_sta_remove,
        .set_key = mt76x02_set_key,
-       .conf_tx = mt76x0_conf_tx,
+       .conf_tx = mt76x02_conf_tx,
        .sw_scan_start = mt76x0_sw_scan,
        .sw_scan_complete = mt76x0_sw_scan_complete,
        .ampdu_action = mt76x02_ampdu_action,
 
 /* TX */
 void mt76x0_tx(struct ieee80211_hw *hw, struct ieee80211_tx_control *control,
                struct sk_buff *skb);
-int mt76x0_conf_tx(struct ieee80211_hw *hw, struct ieee80211_vif *vif,
-                   u16 queue, const struct ieee80211_tx_queue_params *params);
 void mt76x0_tx_status(struct mt76x0_dev *dev, struct sk_buff *skb);
 void mt76x0_tx_stat(struct work_struct *work);
 
 
                clear_bit(MT76_READING_STATS, &dev->mt76.state);
        spin_unlock_irqrestore(&dev->tx_lock, flags);
 }
-
-int mt76x0_conf_tx(struct ieee80211_hw *hw, struct ieee80211_vif *vif,
-                   u16 queue, const struct ieee80211_tx_queue_params *params)
-{
-       struct mt76x0_dev *dev = hw->priv;
-       u8 cw_min = 5, cw_max = 10, hw_q = mt76_ac_to_hwq(queue);
-       u32 val;
-
-       /* TODO: should we do funny things with the parameters?
-        *       See what mt76x0_set_default_edca() used to do in init.c.
-        */
-
-       if (params->cw_min)
-               cw_min = fls(params->cw_min);
-       if (params->cw_max)
-               cw_max = fls(params->cw_max);
-
-       WARN_ON(params->txop > 0xff);
-       WARN_ON(params->aifs > 0xf);
-       WARN_ON(cw_min > 0xf);
-       WARN_ON(cw_max > 0xf);
-
-       val = FIELD_PREP(MT_EDCA_CFG_AIFSN, params->aifs) |
-             FIELD_PREP(MT_EDCA_CFG_CWMIN, cw_min) |
-             FIELD_PREP(MT_EDCA_CFG_CWMAX, cw_max);
-       /* TODO: based on user-controlled EnableTxBurst var vendor drv sets
-        *       a really long txop on AC0 (see connect.c:2009) but only on
-        *       connect? When not connected should be 0.
-        */
-       if (!hw_q)
-               val |= 0x60;
-       else
-               val |= FIELD_PREP(MT_EDCA_CFG_TXOP, params->txop);
-       mt76_wr(dev, MT_EDCA_CFG_AC(hw_q), val);
-
-       val = mt76_rr(dev, MT_WMM_TXOP(hw_q));
-       val &= ~(MT_WMM_TXOP_MASK << MT_WMM_TXOP_SHIFT(hw_q));
-       val |= params->txop << MT_WMM_TXOP_SHIFT(hw_q);
-       mt76_wr(dev, MT_WMM_TXOP(hw_q), val);
-
-       val = mt76_rr(dev, MT_WMM_AIFSN);
-       val &= ~(MT_WMM_AIFSN_MASK << MT_WMM_AIFSN_SHIFT(hw_q));
-       val |= params->aifs << MT_WMM_AIFSN_SHIFT(hw_q);
-       mt76_wr(dev, MT_WMM_AIFSN, val);
-
-       val = mt76_rr(dev, MT_WMM_CWMIN);
-       val &= ~(MT_WMM_CWMIN_MASK << MT_WMM_CWMIN_SHIFT(hw_q));
-       val |= cw_min << MT_WMM_CWMIN_SHIFT(hw_q);
-       mt76_wr(dev, MT_WMM_CWMIN, val);
-
-       val = mt76_rr(dev, MT_WMM_CWMAX);
-       val &= ~(MT_WMM_CWMAX_MASK << MT_WMM_CWMAX_SHIFT(hw_q));
-       val |= cw_max << MT_WMM_CWMAX_SHIFT(hw_q);
-       mt76_wr(dev, MT_WMM_CWMAX, val);
-
-       return 0;
-}
 
 }
 EXPORT_SYMBOL_GPL(mt76x02_set_key);
 
+int mt76x02_conf_tx(struct ieee80211_hw *hw, struct ieee80211_vif *vif,
+                  u16 queue, const struct ieee80211_tx_queue_params *params)
+{
+       struct mt76_dev *dev = hw->priv;
+       u8 cw_min = 5, cw_max = 10, qid;
+       u32 val;
+
+       qid = dev->q_tx[queue].hw_idx;
+
+       if (params->cw_min)
+               cw_min = fls(params->cw_min);
+       if (params->cw_max)
+               cw_max = fls(params->cw_max);
+
+       val = FIELD_PREP(MT_EDCA_CFG_TXOP, params->txop) |
+             FIELD_PREP(MT_EDCA_CFG_AIFSN, params->aifs) |
+             FIELD_PREP(MT_EDCA_CFG_CWMIN, cw_min) |
+             FIELD_PREP(MT_EDCA_CFG_CWMAX, cw_max);
+       __mt76_wr(dev, MT_EDCA_CFG_AC(qid), val);
+
+       val = __mt76_rr(dev, MT_WMM_TXOP(qid));
+       val &= ~(MT_WMM_TXOP_MASK << MT_WMM_TXOP_SHIFT(qid));
+       val |= params->txop << MT_WMM_TXOP_SHIFT(qid);
+       __mt76_wr(dev, MT_WMM_TXOP(qid), val);
+
+       val = __mt76_rr(dev, MT_WMM_AIFSN);
+       val &= ~(MT_WMM_AIFSN_MASK << MT_WMM_AIFSN_SHIFT(qid));
+       val |= params->aifs << MT_WMM_AIFSN_SHIFT(qid);
+       __mt76_wr(dev, MT_WMM_AIFSN, val);
+
+       val = __mt76_rr(dev, MT_WMM_CWMIN);
+       val &= ~(MT_WMM_CWMIN_MASK << MT_WMM_CWMIN_SHIFT(qid));
+       val |= cw_min << MT_WMM_CWMIN_SHIFT(qid);
+       __mt76_wr(dev, MT_WMM_CWMIN, val);
+
+       val = __mt76_rr(dev, MT_WMM_CWMAX);
+       val &= ~(MT_WMM_CWMAX_MASK << MT_WMM_CWMAX_SHIFT(qid));
+       val |= cw_max << MT_WMM_CWMAX_SHIFT(qid);
+       __mt76_wr(dev, MT_WMM_CWMAX, val);
+
+       return 0;
+}
+EXPORT_SYMBOL_GPL(mt76x02_conf_tx);
+
 MODULE_LICENSE("Dual BSD/GPL");
 
 
 int mt76x02_ampdu_action(struct ieee80211_hw *hw, struct ieee80211_vif *vif,
                        struct ieee80211_ampdu_params *params);
-
 int mt76x02_set_key(struct ieee80211_hw *hw, enum set_key_cmd cmd,
                   struct ieee80211_vif *vif, struct ieee80211_sta *sta,
                   struct ieee80211_key_conf *key);
+int mt76x02_conf_tx(struct ieee80211_hw *hw, struct ieee80211_vif *vif,
+                  u16 queue, const struct ieee80211_tx_queue_params *params);
 #endif
 
 }
 EXPORT_SYMBOL_GPL(mt76x2_remove_interface);
 
-int mt76x2_conf_tx(struct ieee80211_hw *hw, struct ieee80211_vif *vif,
-                  u16 queue, const struct ieee80211_tx_queue_params *params)
-{
-       struct mt76x2_dev *dev = hw->priv;
-       u8 cw_min = 5, cw_max = 10, qid;
-       u32 val;
-
-       qid = dev->mt76.q_tx[queue].hw_idx;
-
-       if (params->cw_min)
-               cw_min = fls(params->cw_min);
-       if (params->cw_max)
-               cw_max = fls(params->cw_max);
-
-       val = FIELD_PREP(MT_EDCA_CFG_TXOP, params->txop) |
-             FIELD_PREP(MT_EDCA_CFG_AIFSN, params->aifs) |
-             FIELD_PREP(MT_EDCA_CFG_CWMIN, cw_min) |
-             FIELD_PREP(MT_EDCA_CFG_CWMAX, cw_max);
-       mt76_wr(dev, MT_EDCA_CFG_AC(qid), val);
-
-       val = mt76_rr(dev, MT_WMM_TXOP(qid));
-       val &= ~(MT_WMM_TXOP_MASK << MT_WMM_TXOP_SHIFT(qid));
-       val |= params->txop << MT_WMM_TXOP_SHIFT(qid);
-       mt76_wr(dev, MT_WMM_TXOP(qid), val);
-
-       val = mt76_rr(dev, MT_WMM_AIFSN);
-       val &= ~(MT_WMM_AIFSN_MASK << MT_WMM_AIFSN_SHIFT(qid));
-       val |= params->aifs << MT_WMM_AIFSN_SHIFT(qid);
-       mt76_wr(dev, MT_WMM_AIFSN, val);
-
-       val = mt76_rr(dev, MT_WMM_CWMIN);
-       val &= ~(MT_WMM_CWMIN_MASK << MT_WMM_CWMIN_SHIFT(qid));
-       val |= cw_min << MT_WMM_CWMIN_SHIFT(qid);
-       mt76_wr(dev, MT_WMM_CWMIN, val);
-
-       val = mt76_rr(dev, MT_WMM_CWMAX);
-       val &= ~(MT_WMM_CWMAX_MASK << MT_WMM_CWMAX_SHIFT(qid));
-       val |= cw_max << MT_WMM_CWMAX_SHIFT(qid);
-       mt76_wr(dev, MT_WMM_CWMAX, val);
-
-       return 0;
-}
-EXPORT_SYMBOL_GPL(mt76x2_conf_tx);
-
 void mt76x2_sta_rate_tbl_update(struct ieee80211_hw *hw,
                                struct ieee80211_vif *vif,
                                struct ieee80211_sta *sta)
 
        .sta_add = mt76x02_sta_add,
        .sta_remove = mt76x02_sta_remove,
        .set_key = mt76x02_set_key,
-       .conf_tx = mt76x2_conf_tx,
+       .conf_tx = mt76x02_conf_tx,
        .sw_scan_start = mt76x2_sw_scan,
        .sw_scan_complete = mt76x2_sw_scan_complete,
        .flush = mt76x2_flush,
 
        .wake_tx_queue = mt76_wake_tx_queue,
        .bss_info_changed = mt76x2u_bss_info_changed,
        .configure_filter = mt76x02_configure_filter,
-       .conf_tx = mt76x2_conf_tx,
+       .conf_tx = mt76x02_conf_tx,
        .sw_scan_start = mt76x2u_sw_scan,
        .sw_scan_complete = mt76x2u_sw_scan_complete,
        .sta_rate_tbl_update = mt76x2_sta_rate_tbl_update,