Message ID | c15deb39ada1d7f642a7cf7bf21a60e84dde240d.1628062233.git.lorenzo@kernel.org |
---|---|
State | Superseded |
Headers | show |
Series | introduce individual TWT support in AP mode | expand |
> Introduce twt_stats knob in debugfs in order to dump established > agreements > > Tested-by: Peter Chiu <chui-hao.chiu@mediatek.com> > Signed-off-by: Lorenzo Bianconi <lorenzo@kernel.org> > --- > .../wireless/mediatek/mt76/mt7915/debugfs.c | 28 +++++++++++++++++++ > 1 file changed, 28 insertions(+) > > diff --git a/drivers/net/wireless/mediatek/mt76/mt7915/debugfs.c b/drivers/net/wireless/mediatek/mt76/mt7915/debugfs.c > index 1a48b09d0cb7..5ed329f720d6 100644 > --- a/drivers/net/wireless/mediatek/mt76/mt7915/debugfs.c > +++ b/drivers/net/wireless/mediatek/mt76/mt7915/debugfs.c > @@ -335,6 +335,32 @@ mt7915_read_rate_txpower(struct seq_file *s, void *data) > return 0; > } > > +static int > +mt7915_twt_stats(struct seq_file *s, void *data) > +{ > + struct mt7915_dev *dev = dev_get_drvdata(s->private); > + struct mt7915_twt_flow *iter; > + > + rcu_read_lock(); > + > + seq_puts(s, " wcid | id | flags | exp | mantissa"); > + seq_puts(s, " | duration | tsf |\n"); > + list_for_each_entry_rcu(iter, &dev->twt_list, list) > + seq_printf(s, > + "%9d | %8d | %5c%c%c%c | %8d | %8d | %8d | %14lld |\n", > + iter->wcid, iter->id, > + iter->sched ? 's' : 'u', > + iter->protection ? 'p' : '-', > + iter->trigger ? 't' : '-', > + iter->flowtype ? '-' : 'a', > + iter->exp, iter->mantissa, > + iter->duration, iter->tsf); > + > + rcu_read_lock(); ops, there is a typo here, I will fix it in v2. I will wait for some feedbacks on v1 first. Regards, Lorenzo > + > + return 0; > +} > + > int mt7915_init_debugfs(struct mt7915_dev *dev) > { > struct dentry *dir; > @@ -352,6 +378,8 @@ int mt7915_init_debugfs(struct mt7915_dev *dev) > debugfs_create_file("implicit_txbf", 0600, dir, dev, > &fops_implicit_txbf); > debugfs_create_u32("dfs_hw_pattern", 0400, dir, &dev->hw_pattern); > + debugfs_create_devm_seqfile(dev->mt76.dev, "twt_stats", dir, > + mt7915_twt_stats); > /* test knobs */ > debugfs_create_file("radar_trigger", 0200, dir, dev, > &fops_radar_trigger); > -- > 2.31.1 >
diff --git a/drivers/net/wireless/mediatek/mt76/mt7915/debugfs.c b/drivers/net/wireless/mediatek/mt76/mt7915/debugfs.c index 1a48b09d0cb7..5ed329f720d6 100644 --- a/drivers/net/wireless/mediatek/mt76/mt7915/debugfs.c +++ b/drivers/net/wireless/mediatek/mt76/mt7915/debugfs.c @@ -335,6 +335,32 @@ mt7915_read_rate_txpower(struct seq_file *s, void *data) return 0; } +static int +mt7915_twt_stats(struct seq_file *s, void *data) +{ + struct mt7915_dev *dev = dev_get_drvdata(s->private); + struct mt7915_twt_flow *iter; + + rcu_read_lock(); + + seq_puts(s, " wcid | id | flags | exp | mantissa"); + seq_puts(s, " | duration | tsf |\n"); + list_for_each_entry_rcu(iter, &dev->twt_list, list) + seq_printf(s, + "%9d | %8d | %5c%c%c%c | %8d | %8d | %8d | %14lld |\n", + iter->wcid, iter->id, + iter->sched ? 's' : 'u', + iter->protection ? 'p' : '-', + iter->trigger ? 't' : '-', + iter->flowtype ? '-' : 'a', + iter->exp, iter->mantissa, + iter->duration, iter->tsf); + + rcu_read_lock(); + + return 0; +} + int mt7915_init_debugfs(struct mt7915_dev *dev) { struct dentry *dir; @@ -352,6 +378,8 @@ int mt7915_init_debugfs(struct mt7915_dev *dev) debugfs_create_file("implicit_txbf", 0600, dir, dev, &fops_implicit_txbf); debugfs_create_u32("dfs_hw_pattern", 0400, dir, &dev->hw_pattern); + debugfs_create_devm_seqfile(dev->mt76.dev, "twt_stats", dir, + mt7915_twt_stats); /* test knobs */ debugfs_create_file("radar_trigger", 0200, dir, dev, &fops_radar_trigger);