mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
synced 2026-05-07 11:33:58 -04:00
wifi: mt76: add EHT rate stats for ethtool
Add support to get EHT rate stats from ethtool. This is the preliminary patch to add EHT support for mt7996. Signed-off-by: Shayne Chen <shayne.chen@mediatek.com> Signed-off-by: Felix Fietkau <nbd@nbd.name>
This commit is contained in:
committed by
Felix Fietkau
parent
6b733f7c5a
commit
731425f3a9
@@ -1700,7 +1700,7 @@ u16 mt76_calculate_default_rate(struct mt76_phy *phy, int rateidx)
|
||||
EXPORT_SYMBOL_GPL(mt76_calculate_default_rate);
|
||||
|
||||
void mt76_ethtool_worker(struct mt76_ethtool_worker_info *wi,
|
||||
struct mt76_sta_stats *stats)
|
||||
struct mt76_sta_stats *stats, bool eht)
|
||||
{
|
||||
int i, ei = wi->initial_stat_idx;
|
||||
u64 *data = wi->data;
|
||||
@@ -1716,11 +1716,16 @@ void mt76_ethtool_worker(struct mt76_ethtool_worker_info *wi,
|
||||
data[ei++] += stats->tx_mode[MT_PHY_TYPE_HE_EXT_SU];
|
||||
data[ei++] += stats->tx_mode[MT_PHY_TYPE_HE_TB];
|
||||
data[ei++] += stats->tx_mode[MT_PHY_TYPE_HE_MU];
|
||||
if (eht) {
|
||||
data[ei++] += stats->tx_mode[MT_PHY_TYPE_EHT_SU];
|
||||
data[ei++] += stats->tx_mode[MT_PHY_TYPE_EHT_TRIG];
|
||||
data[ei++] += stats->tx_mode[MT_PHY_TYPE_EHT_MU];
|
||||
}
|
||||
|
||||
for (i = 0; i < ARRAY_SIZE(stats->tx_bw); i++)
|
||||
for (i = 0; i < (ARRAY_SIZE(stats->tx_bw) - !eht); i++)
|
||||
data[ei++] += stats->tx_bw[i];
|
||||
|
||||
for (i = 0; i < 12; i++)
|
||||
for (i = 0; i < (eht ? 14 : 12); i++)
|
||||
data[ei++] += stats->tx_mcs[i];
|
||||
|
||||
wi->worker_stat_count = ei - wi->initial_stat_idx;
|
||||
|
||||
@@ -272,7 +272,7 @@ enum mt76_phy_type {
|
||||
|
||||
struct mt76_sta_stats {
|
||||
u64 tx_mode[__MT_PHY_TYPE_MAX];
|
||||
u64 tx_bw[4]; /* 20, 40, 80, 160 */
|
||||
u64 tx_bw[5]; /* 20, 40, 80, 160, 320 */
|
||||
u64 tx_nss[4]; /* 1, 2, 3, 4 */
|
||||
u64 tx_mcs[16]; /* mcs idx */
|
||||
u64 tx_bytes;
|
||||
@@ -1317,7 +1317,7 @@ mt76u_bulk_msg(struct mt76_dev *dev, void *data, int len, int *actual_len,
|
||||
|
||||
void mt76_ethtool_page_pool_stats(struct mt76_dev *dev, u64 *data, int *index);
|
||||
void mt76_ethtool_worker(struct mt76_ethtool_worker_info *wi,
|
||||
struct mt76_sta_stats *stats);
|
||||
struct mt76_sta_stats *stats, bool eht);
|
||||
int mt76_skb_adjust_pad(struct sk_buff *skb, int pad);
|
||||
int __mt76u_vendor_request(struct mt76_dev *dev, u8 req, u8 req_type,
|
||||
u16 val, u16 offset, void *buf, size_t len);
|
||||
|
||||
@@ -1317,7 +1317,7 @@ static void mt7915_ethtool_worker(void *wi_data, struct ieee80211_sta *sta)
|
||||
if (msta->vif->mt76.idx != wi->idx)
|
||||
return;
|
||||
|
||||
mt76_ethtool_worker(wi, &msta->wcid.stats);
|
||||
mt76_ethtool_worker(wi, &msta->wcid.stats, false);
|
||||
}
|
||||
|
||||
static
|
||||
|
||||
@@ -1129,7 +1129,7 @@ mt7921_ethtool_worker(void *wi_data, struct ieee80211_sta *sta)
|
||||
if (msta->vif->mt76.idx != wi->idx)
|
||||
return;
|
||||
|
||||
mt76_ethtool_worker(wi, &msta->wcid.stats);
|
||||
mt76_ethtool_worker(wi, &msta->wcid.stats, false);
|
||||
}
|
||||
|
||||
static
|
||||
|
||||
@@ -1084,10 +1084,14 @@ static const char mt7996_gstrings_stats[][ETH_GSTRING_LEN] = {
|
||||
"v_tx_mode_he_ext_su",
|
||||
"v_tx_mode_he_tb",
|
||||
"v_tx_mode_he_mu",
|
||||
"v_tx_mode_eht_su",
|
||||
"v_tx_mode_eht_trig",
|
||||
"v_tx_mode_eht_mu",
|
||||
"v_tx_bw_20",
|
||||
"v_tx_bw_40",
|
||||
"v_tx_bw_80",
|
||||
"v_tx_bw_160",
|
||||
"v_tx_bw_320",
|
||||
"v_tx_mcs_0",
|
||||
"v_tx_mcs_1",
|
||||
"v_tx_mcs_2",
|
||||
@@ -1100,6 +1104,8 @@ static const char mt7996_gstrings_stats[][ETH_GSTRING_LEN] = {
|
||||
"v_tx_mcs_9",
|
||||
"v_tx_mcs_10",
|
||||
"v_tx_mcs_11",
|
||||
"v_tx_mcs_12",
|
||||
"v_tx_mcs_13",
|
||||
};
|
||||
|
||||
#define MT7996_SSTATS_LEN ARRAY_SIZE(mt7996_gstrings_stats)
|
||||
@@ -1133,7 +1139,7 @@ static void mt7996_ethtool_worker(void *wi_data, struct ieee80211_sta *sta)
|
||||
if (msta->vif->mt76.idx != wi->idx)
|
||||
return;
|
||||
|
||||
mt76_ethtool_worker(wi, &msta->stats);
|
||||
mt76_ethtool_worker(wi, &msta->stats, true);
|
||||
}
|
||||
|
||||
static
|
||||
|
||||
Reference in New Issue
Block a user