Skip to content

Commit

Permalink
mt76: mt7915: add .sta_add_debugfs support
Browse files Browse the repository at this point in the history
This generation supports much more per-peer statistics than legacy ones,
so add .sta_add_debugfs accordingly.

This is convenient to set/get more settings/counters in the long run.

Signed-off-by: Ryder Lee <[email protected]>
Signed-off-by: Felix Fietkau <[email protected]>
  • Loading branch information
ryderlee1110 authored and nbd168 committed May 9, 2020
1 parent 3b5d908 commit 158253e
Show file tree
Hide file tree
Showing 3 changed files with 72 additions and 0 deletions.
65 changes: 65 additions & 0 deletions mt7915/debugfs.c
Original file line number Diff line number Diff line change
Expand Up @@ -302,3 +302,68 @@ int mt7915_init_debugfs(struct mt7915_dev *dev)

return 0;
}

/** per-station debugfs **/

static int
mt7915_sta_stats_read(struct seq_file *s, void *data)
{
struct ieee80211_sta *sta = s->private;
struct mt7915_sta *msta = (struct mt7915_sta *)sta->drv_priv;
struct mt7915_sta_stats *stats = &msta->stats;
struct rate_info *rate = &stats->prob_rate;
static const char * const bw[] = {
"BW20", "BW5", "BW10", "BW40",
"BW80", "BW160", "BW_HE_RU"
};

if (!rate->legacy && !rate->flags)
return 0;

seq_puts(s, "Probing rate - ");
if (rate->flags & RATE_INFO_FLAGS_MCS)
seq_puts(s, "HT ");
else if (rate->flags & RATE_INFO_FLAGS_VHT_MCS)
seq_puts(s, "VHT ");
else if (rate->flags & RATE_INFO_FLAGS_HE_MCS)
seq_puts(s, "HE ");
else
seq_printf(s, "Bitrate %d\n", rate->legacy);

if (rate->flags) {
seq_printf(s, "%s NSS%d MCS%d ",
bw[rate->bw], rate->nss, rate->mcs);

if (rate->flags & RATE_INFO_FLAGS_SHORT_GI)
seq_puts(s, "SGI ");
else if (rate->he_gi)
seq_puts(s, "HE GI ");

if (rate->he_dcm)
seq_puts(s, "DCM ");
}

seq_printf(s, "\nPPDU PER: %ld.%1ld%%\n",
stats->per / 10, stats->per % 10);

return 0;
}

static int
mt7915_sta_stats_open(struct inode *inode, struct file *f)
{
return single_open(f, mt7915_sta_stats_read, inode->i_private);
}

static const struct file_operations fops_sta_stats = {
.open = mt7915_sta_stats_open,
.read = seq_read,
.llseek = seq_lseek,
.release = single_release,
};

void mt7915_sta_add_debugfs(struct ieee80211_hw *hw, struct ieee80211_vif *vif,
struct ieee80211_sta *sta, struct dentry *dir)
{
debugfs_create_file("stats", 0400, dir, sta, &fops_sta_stats);
}
3 changes: 3 additions & 0 deletions mt7915/main.c
Original file line number Diff line number Diff line change
Expand Up @@ -746,4 +746,7 @@ const struct ieee80211_ops mt7915_ops = {
.get_antenna = mt76_get_antenna,
.set_antenna = mt7915_set_antenna,
.set_coverage_class = mt7915_set_coverage_class,
#ifdef CONFIG_MAC80211_DEBUGFS
.sta_add_debugfs = mt7915_sta_add_debugfs,
#endif
};
4 changes: 4 additions & 0 deletions mt7915/mt7915.h
Original file line number Diff line number Diff line change
Expand Up @@ -448,5 +448,9 @@ int mt7915_dfs_init_radar_detector(struct mt7915_phy *phy);
void mt7915_set_stream_he_caps(struct mt7915_phy *phy);
void mt7915_update_channel(struct mt76_dev *mdev);
int mt7915_init_debugfs(struct mt7915_dev *dev);
#ifdef CONFIG_MAC80211_DEBUGFS
void mt7915_sta_add_debugfs(struct ieee80211_hw *hw, struct ieee80211_vif *vif,
struct ieee80211_sta *sta, struct dentry *dir);
#endif

#endif

0 comments on commit 158253e

Please sign in to comment.