mt76: mt7921: introduce stats reporting through ethtool
Similar to mt7915 driver, add tx/rx statistics reporting through ethtool. Signed-off-by: Lorenzo Bianconi <lorenzo@kernel.org> Signed-off-by: Felix Fietkau <nbd@nbd.name>
This commit is contained in:
parent
6b16ae47eb
commit
6eb58ceaf2
@ -861,6 +861,119 @@ mt7921_get_stats(struct ieee80211_hw *hw,
|
||||
return 0;
|
||||
}
|
||||
|
||||
static const char mt7921_gstrings_stats[][ETH_GSTRING_LEN] = {
|
||||
/* tx counters */
|
||||
"tx_ampdu_cnt",
|
||||
"tx_mpdu_attempts",
|
||||
"tx_mpdu_success",
|
||||
"tx_pkt_ebf_cnt",
|
||||
"tx_pkt_ibf_cnt",
|
||||
"tx_ampdu_len:0-1",
|
||||
"tx_ampdu_len:2-10",
|
||||
"tx_ampdu_len:11-19",
|
||||
"tx_ampdu_len:20-28",
|
||||
"tx_ampdu_len:29-37",
|
||||
"tx_ampdu_len:38-46",
|
||||
"tx_ampdu_len:47-55",
|
||||
"tx_ampdu_len:56-79",
|
||||
"tx_ampdu_len:80-103",
|
||||
"tx_ampdu_len:104-127",
|
||||
"tx_ampdu_len:128-151",
|
||||
"tx_ampdu_len:152-175",
|
||||
"tx_ampdu_len:176-199",
|
||||
"tx_ampdu_len:200-223",
|
||||
"tx_ampdu_len:224-247",
|
||||
"ba_miss_count",
|
||||
"tx_beamformer_ppdu_iBF",
|
||||
"tx_beamformer_ppdu_eBF",
|
||||
"tx_beamformer_rx_feedback_all",
|
||||
"tx_beamformer_rx_feedback_he",
|
||||
"tx_beamformer_rx_feedback_vht",
|
||||
"tx_beamformer_rx_feedback_ht",
|
||||
"tx_msdu_pack_1",
|
||||
"tx_msdu_pack_2",
|
||||
"tx_msdu_pack_3",
|
||||
"tx_msdu_pack_4",
|
||||
"tx_msdu_pack_5",
|
||||
"tx_msdu_pack_6",
|
||||
"tx_msdu_pack_7",
|
||||
"tx_msdu_pack_8",
|
||||
/* rx counters */
|
||||
"rx_mpdu_cnt",
|
||||
"rx_ampdu_cnt",
|
||||
"rx_ampdu_bytes_cnt",
|
||||
"rx_ba_cnt"
|
||||
};
|
||||
|
||||
static void
|
||||
mt7921_get_et_strings(struct ieee80211_hw *hw, struct ieee80211_vif *vif,
|
||||
u32 sset, u8 *data)
|
||||
{
|
||||
if (sset != ETH_SS_STATS)
|
||||
return;
|
||||
|
||||
memcpy(data, *mt7921_gstrings_stats, sizeof(mt7921_gstrings_stats));
|
||||
}
|
||||
|
||||
static int
|
||||
mt7921_get_et_sset_count(struct ieee80211_hw *hw, struct ieee80211_vif *vif,
|
||||
int sset)
|
||||
{
|
||||
return sset == ETH_SS_STATS ? ARRAY_SIZE(mt7921_gstrings_stats) : 0;
|
||||
}
|
||||
|
||||
static
|
||||
void mt7921_get_et_stats(struct ieee80211_hw *hw, struct ieee80211_vif *vif,
|
||||
struct ethtool_stats *stats, u64 *data)
|
||||
{
|
||||
struct mt7921_phy *phy = mt7921_hw_phy(hw);
|
||||
struct mt7921_dev *dev = phy->dev;
|
||||
struct mib_stats *mib = &phy->mib;
|
||||
int i, ei = 0;
|
||||
|
||||
mt7921_mutex_acquire(dev);
|
||||
|
||||
mt7921_mac_update_mib_stats(phy);
|
||||
|
||||
data[ei++] = mib->tx_ampdu_cnt;
|
||||
data[ei++] = mib->tx_mpdu_attempts_cnt;
|
||||
data[ei++] = mib->tx_mpdu_success_cnt;
|
||||
data[ei++] = mib->tx_pkt_ebf_cnt;
|
||||
data[ei++] = mib->tx_pkt_ibf_cnt;
|
||||
|
||||
/* Tx ampdu stat */
|
||||
for (i = 0; i < 15; i++)
|
||||
data[ei++] = dev->mt76.aggr_stats[i];
|
||||
|
||||
data[ei++] = phy->mib.ba_miss_cnt;
|
||||
|
||||
/* Tx Beamformer monitor */
|
||||
data[ei++] = mib->tx_bf_ibf_ppdu_cnt;
|
||||
data[ei++] = mib->tx_bf_ebf_ppdu_cnt;
|
||||
|
||||
/* Tx Beamformer Rx feedback monitor */
|
||||
data[ei++] = mib->tx_bf_rx_fb_all_cnt;
|
||||
data[ei++] = mib->tx_bf_rx_fb_he_cnt;
|
||||
data[ei++] = mib->tx_bf_rx_fb_vht_cnt;
|
||||
data[ei++] = mib->tx_bf_rx_fb_ht_cnt;
|
||||
|
||||
/* Tx amsdu info (pack-count histogram) */
|
||||
for (i = 0; i < 8; i++)
|
||||
data[ei++] = mt76_rr(dev, MT_PLE_AMSDU_PACK_MSDU_CNT(i));
|
||||
|
||||
/* rx counters */
|
||||
data[ei++] = mib->rx_mpdu_cnt;
|
||||
data[ei++] = mib->rx_ampdu_cnt;
|
||||
data[ei++] = mib->rx_ampdu_bytes_cnt;
|
||||
data[ei++] = mib->rx_ba_cnt;
|
||||
|
||||
mt7921_mutex_release(dev);
|
||||
|
||||
if (ei != ARRAY_SIZE(mt7921_gstrings_stats))
|
||||
dev_err(dev->mt76.dev, "ei: %d SSTATS_LEN: %lu",
|
||||
ei, ARRAY_SIZE(mt7921_gstrings_stats));
|
||||
}
|
||||
|
||||
static u64
|
||||
mt7921_get_tsf(struct ieee80211_hw *hw, struct ieee80211_vif *vif)
|
||||
{
|
||||
@ -1230,6 +1343,9 @@ const struct ieee80211_ops mt7921_ops = {
|
||||
.release_buffered_frames = mt76_release_buffered_frames,
|
||||
.get_txpower = mt76_get_txpower,
|
||||
.get_stats = mt7921_get_stats,
|
||||
.get_et_sset_count = mt7921_get_et_sset_count,
|
||||
.get_et_strings = mt7921_get_et_strings,
|
||||
.get_et_stats = mt7921_get_et_stats,
|
||||
.get_tsf = mt7921_get_tsf,
|
||||
.set_tsf = mt7921_set_tsf,
|
||||
.get_survey = mt76_get_survey,
|
||||
|
Loading…
x
Reference in New Issue
Block a user