mirror of
https://github.com/outbackdingo/mt76.git
synced 2026-10-24 13:26:48 +00:00
mt76: unify conf_tx
Use one conf_tx implementation in mt76x0 and mt76x2. Note this change conf_tx for mt76x0, but it should work with mt76x2 version. Signed-off-by: Stanislaw Gruszka <[email protected]>
This commit is contained in:
committed by
Felix Fietkau
parent
a69033307e
commit
4453308aed
@@ -244,4 +244,48 @@ int mt76x02_set_key(struct ieee80211_hw *hw, enum set_key_cmd cmd,
|
||||
}
|
||||
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");
|
||||
|
||||
Reference in New Issue
Block a user