Skip to content

Commit

Permalink
mt76: mt7615: fix reading airtime statistics
Browse files Browse the repository at this point in the history
- change the WTBL LMAC access function to set the mapping window only once
- use ac * 2 as offset, since each AC has separate words for rx and tx

Signed-off-by: Felix Fietkau <nbd@nbd.name>
  • Loading branch information
nbd168 committed Aug 20, 2020
1 parent efc8669 commit 8027c7d
Showing 1 changed file with 12 additions and 10 deletions.
22 changes: 12 additions & 10 deletions mt7915/mac.c
Expand Up @@ -88,13 +88,12 @@ bool mt7915_mac_wtbl_update(struct mt7915_dev *dev, int idx, u32 mask)
0, 5000);
}

static u32 mt7915_mac_wtbl_lmac_read(struct mt7915_dev *dev, u16 wcid,
u16 addr)
static u32 mt7915_mac_wtbl_lmac_addr(struct mt7915_dev *dev, u16 wcid)
{
mt76_wr(dev, MT_WTBLON_TOP_WDUCR,
FIELD_PREP(MT_WTBLON_TOP_WDUCR_GROUP, (wcid >> 7)));

return mt76_rr(dev, MT_WTBL_LMAC_OFFS(wcid, addr));
return MT_WTBL_LMAC_OFFS(wcid, 0);
}

/* TODO: use txfree airtime info to avoid runtime accessing in the long run */
Expand All @@ -121,6 +120,7 @@ void mt7915_mac_sta_poll(struct mt7915_dev *dev)

while (true) {
bool clear = false;
u32 addr;
u16 idx;

spin_lock_bh(&dev->sta_poll_lock);
Expand All @@ -133,20 +133,22 @@ void mt7915_mac_sta_poll(struct mt7915_dev *dev)
list_del_init(&msta->poll_list);
spin_unlock_bh(&dev->sta_poll_lock);

addr = mt7915_mac_wtbl_lmac_addr(dev, idx) + 20 * 4;

for (i = 0, idx = msta->wcid.idx; i < IEEE80211_NUM_ACS; i++) {
u32 tx_last = msta->airtime_ac[i];
u32 rx_last = msta->airtime_ac[i + IEEE80211_NUM_ACS];
u32 rx_last = msta->airtime_ac[i + 4];

msta->airtime_ac[i] = mt76_rr(dev, addr);
msta->airtime_ac[i + 4] = mt76_rr(dev, addr + 4);

msta->airtime_ac[i] =
mt7915_mac_wtbl_lmac_read(dev, idx, 20 + i);
msta->airtime_ac[i + IEEE80211_NUM_ACS] =
mt7915_mac_wtbl_lmac_read(dev, idx, 21 + i);
tx_time[i] = msta->airtime_ac[i] - tx_last;
rx_time[i] = msta->airtime_ac[i + IEEE80211_NUM_ACS] -
rx_last;
rx_time[i] = msta->airtime_ac[i + 4] - rx_last;

if ((tx_last | rx_last) & BIT(30))
clear = true;

addr += 8;
}

if (clear) {
Expand Down

0 comments on commit 8027c7d

Please sign in to comment.