mt76: move aggr_stats array in mt76_phy
Subsystems (2)
Lorenzo Bianconi
maintainercover mt76: move aggr_stats array in mt76_phy
This series is based on the following patches:
- wifi: mt76: mt7915: fix reporting of TX AGGR histogram
https://patchwork.kernel.org/project/linux-wireless/patch/33a05d9d25e43fbb880bea5e1ad52c92f1ad2e27.1667392073.git.lorenzo@kernel.org/
- wifi: mt76: mt7921: fix reporting of TX AGGR histogram
https://patchwork.kernel.org/project/linux-wireless/patch/74cf11c228e9174c5d7fd794af8967d5ce9e5de7.1667393153.git.lorenzo@kernel.org/
Lorenzo Bianconi (2):
wifi: mt76: mt7615: rely on mt7615_phy in mt7615_mac_reset_counters
wifi: mt76: move aggr_stats array in mt76_phy
drivers/net/wireless/mediatek/mt76/mt76.h | 4 ++-- .../wireless/mediatek/mt76/mt7603/debugfs.c | 2 +- .../net/wireless/mediatek/mt76/mt7603/mac.c | 6 +++--- .../wireless/mediatek/mt76/mt7615/debugfs.c | 6 ++---- .../net/wireless/mediatek/mt76/mt7615/mac.c | 17 +++++++-------- .../net/wireless/mediatek/mt76/mt7615/main.c | 4 ++-- .../wireless/mediatek/mt76/mt7615/mt7615.h | 2 +- .../wireless/mediatek/mt76/mt76x02_debugfs.c | 2 +- .../net/wireless/mediatek/mt76/mt76x02_mac.c | 6 +++--- .../wireless/mediatek/mt76/mt7915/debugfs.c | 5 ++--- .../net/wireless/mediatek/mt76/mt7915/mac.c | 21 +++++++------------ .../net/wireless/mediatek/mt76/mt7915/main.c | 5 ++--- .../wireless/mediatek/mt76/mt7921/debugfs.c | 2 +- .../net/wireless/mediatek/mt76/mt7921/mac.c | 10 ++++----- .../net/wireless/mediatek/mt76/mt7921/main.c | 2 +- 15 files changed, 41 insertions(+), 53 deletions(-)
Signature · 1 line
2.38.1
Lorenzo Bianconi
maintainerPATCH 1/2 wifi: mt76: mt7615: rely on mt7615_phy in mt7615_mac_reset_counters
This is a preliminary patch to move aggr_stats array in mt76_phy structure.
--- drivers/net/wireless/mediatek/mt76/mt7615/mac.c | 8 +++----- drivers/net/wireless/mediatek/mt76/mt7615/main.c | 4 ++-- drivers/net/wireless/mediatek/mt76/mt7615/mt7615.h | 2 +- 3 files changed, 6 insertions(+), 8 deletions(-)
drivers/net/wireless/mediatek/mt76/mt7615/mac.c +3 -5
@@ -107,9 +107,9 @@ static struct mt76_wcid *mt7615_rx_get_wcid(struct mt7615_dev *dev,return &sta->vif->sta.wcid; } -void mt7615_mac_reset_counters (struct mt7615_dev *dev) +void mt7615_mac_reset_counters (struct mt7615_phy *phy) { -struct mt76_phy *mphy_ext = dev->mt76.phys[MT_BAND1 ]; +struct mt7615_dev *dev = phy->dev;int i;for (i =0 ; i <4 ; i++) {
@@ -118,9 +118,7 @@ void mt7615_mac_reset_counters(struct mt7615_dev *dev) }memset (dev->mt76.aggr_stats,0 ,sizeof (dev->mt76.aggr_stats)); - dev->mt76.phy.survey_time =ktime_get_boottime (); -if (mphy_ext) - mphy_ext->survey_time =ktime_get_boottime (); + phy->mt76->survey_time =ktime_get_boottime ();/* reset airtime counters */ mt76_rr (dev,MT_MIB_SDR9 (0 ));
drivers/net/wireless/mediatek/mt76/mt7615/main.c +2 -2
@@ -83,7 +83,7 @@ static int mt7615_start(struct ieee80211_hw *hw)ieee80211_queue_delayed_work (hw, &phy->mt76->mac_work, timeout);if (!running) -mt7615_mac_reset_counters (dev); +mt7615_mac_reset_counters (phy); out:mt7615_mutex_release (dev);
@@ -320,7 +320,7 @@ int mt7615_set_channel(struct mt7615_phy *phy)if (ret) goto out; -mt7615_mac_reset_counters (dev); +mt7615_mac_reset_counters (phy); phy->noise =0 ; phy->chfreq =mt76_rr (dev,MT_CHFREQ (ext_phy));
drivers/net/wireless/mediatek/mt76/mt7615/mt7615.h +1 -1
@@ -469,7 +469,7 @@ void mt7615_init_work(struct mt7615_dev *dev);int mt7615_mcu_restart (struct mt76_dev *dev);void mt7615_update_channel (struct mt76_phy *mphy);bool mt7615_mac_wtbl_update (struct mt7615_dev *dev,int idx,u32 mask); -void mt7615_mac_reset_counters (struct mt7615_dev *dev); +void mt7615_mac_reset_counters (struct mt7615_phy *phy);void mt7615_mac_cca_stats_reset (struct mt7615_phy *phy);void mt7615_mac_set_scs (struct mt7615_phy *phy,bool enable);void mt7615_mac_enable_nf (struct mt7615_dev *dev,bool ext_phy);
Signature · 1 line
2.38.1
Lorenzo Bianconi
maintainerPATCH 2/2 wifi: mt76: move aggr_stats array in mt76_phy
In reply to Lorenzo BianconiMove aggregation stats array per-phy instead of share it between multiple interfaces. This is a preliminary patch to add mt7996 driver support.
--- drivers/net/wireless/mediatek/mt76/mt76.h | 4 ++-- .../wireless/mediatek/mt76/mt7603/debugfs.c | 2 +- .../net/wireless/mediatek/mt76/mt7603/mac.c | 6 +++--- .../wireless/mediatek/mt76/mt7615/debugfs.c | 6 ++---- .../net/wireless/mediatek/mt76/mt7615/mac.c | 9 ++++---- .../wireless/mediatek/mt76/mt76x02_debugfs.c | 2 +- .../net/wireless/mediatek/mt76/mt76x02_mac.c | 6 +++--- .../wireless/mediatek/mt76/mt7915/debugfs.c | 5 ++--- .../net/wireless/mediatek/mt76/mt7915/mac.c | 21 +++++++------------ .../net/wireless/mediatek/mt76/mt7915/main.c | 5 ++--- .../wireless/mediatek/mt76/mt7921/debugfs.c | 2 +- .../net/wireless/mediatek/mt76/mt7921/mac.c | 10 ++++----- .../net/wireless/mediatek/mt76/mt7921/main.c | 2 +- 13 files changed, 35 insertions(+), 45 deletions(-)
drivers/net/wireless/mediatek/mt76/mt76.h +2 -2
@@ -693,6 +693,8 @@ struct mt76_phy {enum mt76_dfs_state dfs_state;ktime_t survey_time; +u32 aggr_stats[32 ]; +struct mt76_hw_cap cap;struct mt76_sband sband_2g;struct mt76_sband sband_5g;
@@ -781,8 +783,6 @@ struct mt76_dev {u32 rev; -u32 aggr_stats[32 ]; -struct tasklet_struct pre_tbtt_tasklet;int beacon_int;u8 beacon_mask;
drivers/net/wireless/mediatek/mt76/mt7603/debugfs.c +1 -1
@@ -85,7 +85,7 @@ mt7603_ampdu_stat_show(struct seq_file *file, void *data) bound[i], bound[i + 1]);seq_puts (file,"\nCount: " );for (i =0 ; i <ARRAY_SIZE (bound); i++) -seq_printf (file,"%8d | " , dev->mt76.aggr_stats[i]); +seq_printf (file,"%8d | " , dev->mphy.aggr_stats[i]);seq_puts (file,"\n" );return 0 ;
drivers/net/wireless/mediatek/mt76/mt7603/mac.c +3 -3
@@ -39,7 +39,7 @@ void mt7603_mac_reset_counters(struct mt7603_dev *dev)for (i =0 ; i <2 ; i++)mt76_rr (dev,MT_TX_AGG_CNT (i)); -memset (dev->mt76.aggr_stats,0 ,sizeof (dev->mt76.aggr_stats)); +memset (dev->mphy.aggr_stats,0 ,sizeof (dev->mphy.aggr_stats)); }void mt7603_mac_set_timing (struct mt7603_dev *dev)
@@ -1827,8 +1827,8 @@ void mt7603_mac_work(struct work_struct *work)for (i =0 , idx =0 ; i <2 ; i++) {u32 val =mt76_rr (dev,MT_TX_AGG_CNT (i)); - dev->mt76.aggr_stats[idx++] += val &0xffff ; - dev->mt76.aggr_stats[idx++] += val >>16 ; + dev->mphy.aggr_stats[idx++] += val &0xffff ; + dev->mphy.aggr_stats[idx++] += val >>16 ; }if (dev->mphy.mac_work_count ==10 )
drivers/net/wireless/mediatek/mt76/mt7615/debugfs.c +2 -4
@@ -278,7 +278,6 @@ mt7615_ampdu_stat_read_phy(struct mt7615_phy *phy, {struct mt7615_dev *dev = file->private;u32 reg =is_mt7663 (&dev->mt76) ?MT_MIB_ARNG (0 ) :MT_AGG_ASRCR0 ; -bool ext_phy = phy != &dev->phy;int bound[7 ], i, range;if (!phy)
@@ -292,7 +291,7 @@ mt7615_ampdu_stat_read_phy(struct mt7615_phy *phy,for (i =0 ; i <3 ; i++) bound[i +4 ] =MT_AGG_ASRCR_RANGE (range, i) +1 ; -seq_printf (file,"\nPhy %d\n" , ext_phy); +seq_printf (file,"\nPhy %d\n" , phy != &dev->phy);seq_printf (file,"Length: %8d | " , bound[0 ]);for (i =0 ; i <ARRAY_SIZE (bound) -1 ; i++)
@@ -300,9 +299,8 @@ mt7615_ampdu_stat_read_phy(struct mt7615_phy *phy, bound[i], bound[i + 1]);seq_puts (file,"\nCount: " ); - range = ext_phy ?ARRAY_SIZE (dev->mt76.aggr_stats) /2 :0 ;for (i =0 ; i <ARRAY_SIZE (bound); i++) -seq_printf (file,"%8d | " , dev->mt76.aggr_stats[i + range]); +seq_printf (file,"%8d | " , phy->mt76->aggr_stats[i]);seq_puts (file,"\n" );seq_printf (file,"BA miss count: %d\n" , phy->mib.ba_miss_cnt);
drivers/net/wireless/mediatek/mt76/mt7615/mac.c +4 -5
@@ -117,7 +117,7 @@ void mt7615_mac_reset_counters(struct mt7615_phy *phy)mt76_rr (dev,MT_TX_AGG_CNT (1 , i)); } -memset (dev->mt76.aggr_stats,0 ,sizeof (dev->mt76.aggr_stats)); +memset (phy->mt76->aggr_stats,0 ,sizeof (phy->mt76->aggr_stats)); phy->mt76->survey_time =ktime_get_boottime ();/* reset airtime counters */
@@ -1997,7 +1997,7 @@ mt7615_mac_update_mib_stats(struct mt7615_phy *phy)struct mt7615_dev *dev = phy->dev;struct mib_stats *mib = &phy->mib;bool ext_phy = phy != &dev->phy; -int i, aggr; +int i, aggr =0 ;u32 val, val2; mib->fcs_err_cnt += mt76_get_field(dev, MT_MIB_SDR3(ext_phy),
@@ -2011,7 +2011,6 @@ mt7615_mac_update_mib_stats(struct mt7615_phy *phy) mib->aggr_per =1000 * (val - val2) / val; } - aggr = ext_phy ?ARRAY_SIZE (dev->mt76.aggr_stats) /2 :0 ;for (i =0 ; i <4 ; i++) { val =mt76_rr (dev,MT_MIB_MB_SDR1 (ext_phy, i)); mib->ba_miss_cnt +=FIELD_GET (MT_MIB_BA_MISS_COUNT_MASK , val);
@@ -2024,8 +2023,8 @@ mt7615_mac_update_mib_stats(struct mt7615_phy *phy) val); val =mt76_rr (dev,MT_TX_AGG_CNT (ext_phy, i)); - dev->mt76.aggr_stats[aggr++] += val &0xffff ; - dev->mt76.aggr_stats[aggr++] += val >>16 ; + phy->mt76->aggr_stats[aggr++] += val &0xffff ; + phy->mt76->aggr_stats[aggr++] += val >>16 ; } }
drivers/net/wireless/mediatek/mt76/mt76x02_debugfs.c +1 -1
@@ -20,7 +20,7 @@ mt76x02_ampdu_stat_show(struct seq_file *file, void *data)seq_puts (file,"Count: " );for (j =0 ; j <8 ; j++)seq_printf (file,"%8d | " , - dev->mt76.aggr_stats[i *8 + j]); + dev->mphy.aggr_stats[i *8 + j]);seq_puts (file,"\n" );seq_puts (file,"--------" );for (j =0 ; j <8 ; j++)
drivers/net/wireless/mediatek/mt76/mt76x02_mac.c +3 -3
@@ -25,7 +25,7 @@ void mt76x02_mac_reset_counters(struct mt76x02_dev *dev)for (i =0 ; i <16 ; i++)mt76_rr (dev,MT_TX_STAT_FIFO ); -memset (dev->mt76.aggr_stats,0 ,sizeof (dev->mt76.aggr_stats)); +memset (dev->mphy.aggr_stats,0 ,sizeof (dev->mphy.aggr_stats)); }EXPORT_SYMBOL_GPL (mt76x02_mac_reset_counters);
@@ -1191,8 +1191,8 @@ void mt76x02_mac_work(struct work_struct *work)for (i =0 , idx =0 ; i <16 ; i++) {u32 val =mt76_rr (dev,MT_TX_AGG_CNT (i)); - dev->mt76.aggr_stats[idx++] += val &0xffff ; - dev->mt76.aggr_stats[idx++] += val >>16 ; + dev->mphy.aggr_stats[idx++] += val &0xffff ; + dev->mphy.aggr_stats[idx++] += val >>16 ; }mt76x02_check_mac_err (dev);
drivers/net/wireless/mediatek/mt76/mt7915/debugfs.c +2 -3
@@ -639,7 +639,7 @@ mt7915_ampdu_stat_read_phy(struct mt7915_phy *phy, {struct mt7915_dev *dev = phy->dev;bool ext_phy = phy != &dev->phy; -int bound[15 ], range[4 ], i, n; +int bound[15 ], range[4 ], i;/* Tx ampdu stat */ for (i =0 ; i <ARRAY_SIZE (range); i++)
@@ -656,9 +656,8 @@ mt7915_ampdu_stat_read_phy(struct mt7915_phy *phy, bound[i] + 1, bound[i + 1]);seq_puts (file,"\nCount: " ); - n = phy->band_idx ?ARRAY_SIZE (dev->mt76.aggr_stats) /2 :0 ;for (i =0 ; i <ARRAY_SIZE (bound); i++) -seq_printf (file,"%8d | " , dev->mt76.aggr_stats[i + n]); +seq_printf (file,"%8d | " , phy->mt76->aggr_stats[i]);seq_puts (file,"\n" );seq_printf (file,"BA miss count: %d\n" , phy->mib.ba_miss_cnt);
drivers/net/wireless/mediatek/mt76/mt7915/mac.c +8 -13
@@ -1129,12 +1129,8 @@ void mt7915_mac_reset_counters(struct mt7915_phy *phy)mt76_rr (dev,MT_TX_AGG_CNT2 (phy->band_idx, i)); } - i =0 ; phy->mt76->survey_time =ktime_get_boottime (); -if (phy->band_idx) - i =ARRAY_SIZE (dev->mt76.aggr_stats) /2 ; - -memset (&dev->mt76.aggr_stats[i],0 ,sizeof (dev->mt76.aggr_stats) /2 ); +memset (phy->mt76->aggr_stats,0 ,sizeof (phy->mt76->aggr_stats));/* reset airtime counters */ mt76_set(dev, MT_WF_RMAC_MIB_AIRTIME0(phy->band_idx),
@@ -1477,7 +1473,7 @@ void mt7915_mac_update_stats(struct mt7915_phy *phy) {struct mt7915_dev *dev = phy->dev;struct mib_stats *mib = &phy->mib; -int i, aggr0, aggr1, cnt; +int i, aggr0 =0 , aggr1, cnt;u32 val; cnt =mt76_rr (dev,MT_MIB_SDR3 (phy->band_idx));
@@ -1609,7 +1605,6 @@ void mt7915_mac_update_stats(struct mt7915_phy *phy) mib->tx_amsdu_cnt += cnt; } - aggr0 = phy->band_idx ?ARRAY_SIZE (dev->mt76.aggr_stats) /2 :0 ;if (is_mt7915 (&dev->mt76)) {for (i =0 , aggr1 = aggr0 +8 ; i <4 ; i++) { val =mt76_rr (dev,MT_MIB_MB_SDR1 (phy->band_idx, (i <<4 )));
@@ -1624,12 +1619,12 @@ void mt7915_mac_update_stats(struct mt7915_phy *phy)FIELD_GET (MT_MIB_RTS_RETRIES_COUNT_MASK , val); val =mt76_rr (dev,MT_TX_AGG_CNT (phy->band_idx, i)); - dev->mt76.aggr_stats[aggr0++] += val &0xffff ; - dev->mt76.aggr_stats[aggr0++] += val >>16 ; + phy->mt76->aggr_stats[aggr0++] += val &0xffff ; + phy->mt76->aggr_stats[aggr0++] += val >>16 ; val =mt76_rr (dev,MT_TX_AGG_CNT2 (phy->band_idx, i)); - dev->mt76.aggr_stats[aggr1++] += val &0xffff ; - dev->mt76.aggr_stats[aggr1++] += val >>16 ; + phy->mt76->aggr_stats[aggr1++] += val &0xffff ; + phy->mt76->aggr_stats[aggr1++] += val >>16 ; } cnt =mt76_rr (dev,MT_MIB_SDR32 (phy->band_idx));
@@ -1676,8 +1671,8 @@ void mt7915_mac_update_stats(struct mt7915_phy *phy)for (i =0 ; i <8 ; i++) { val =mt76_rr (dev,MT_TX_AGG_CNT (phy->band_idx, i)); - dev->mt76.aggr_stats[aggr0++] +=FIELD_GET (GENMASK (15 ,0 ), val); - dev->mt76.aggr_stats[aggr0++] +=FIELD_GET (GENMASK (31 ,16 ), val); + phy->mt76->aggr_stats[aggr0++] +=FIELD_GET (GENMASK (15 ,0 ), val); + phy->mt76->aggr_stats[aggr0++] +=FIELD_GET (GENMASK (31 ,16 ), val); } cnt =mt76_rr (dev,MT_MIB_SDR32 (phy->band_idx));
drivers/net/wireless/mediatek/mt76/mt7915/main.c +2 -3
@@ -1256,7 +1256,7 @@ void mt7915_get_et_stats(struct ieee80211_hw *hw, };struct mib_stats *mib = &phy->mib;/* See mt7915_ampdu_stat_read_phy, etc */ -int i, n, ei =0 ; +int i, ei =0 ;mutex_lock (&dev->mt76.mutex);
@@ -1272,9 +1272,8 @@ void mt7915_get_et_stats(struct ieee80211_hw *hw, data[ei++] = mib->tx_pkt_ibf_cnt;/* Tx ampdu stat */ - n = phy->band_idx ?ARRAY_SIZE (dev->mt76.aggr_stats) /2 :0 ;for (i =0 ; i <15 /*ARRAY_SIZE(bound)*/ ; i++) - data[ei++] = dev->mt76.aggr_stats[i + n]; + data[ei++] = phy->mt76->aggr_stats[i]; data[ei++] = phy->mib.ba_miss_cnt;
drivers/net/wireless/mediatek/mt76/mt7921/debugfs.c +1 -1
@@ -85,7 +85,7 @@ mt7921_ampdu_stat_read_phy(struct mt7921_phy *phy,seq_puts (file,"\nCount: " );for (i =0 ; i <ARRAY_SIZE (bound); i++) -seq_printf (file,"%8d | " , dev->mt76.aggr_stats[i]); +seq_printf (file,"%8d | " , phy->mt76->aggr_stats[i]);seq_puts (file,"\n" );seq_printf (file,"BA miss count: %d\n" , phy->mib.ba_miss_cnt);
drivers/net/wireless/mediatek/mt76/mt7921/mac.c +5 -5
@@ -745,7 +745,7 @@ void mt7921_mac_reset_counters(struct mt7921_phy *phy) } dev->mt76.phy.survey_time =ktime_get_boottime (); -memset (&dev->mt76.aggr_stats[0 ],0 ,sizeof (dev->mt76.aggr_stats) /2 ); +memset (phy->mt76->aggr_stats,0 ,sizeof (phy->mt76->aggr_stats));/* reset airtime counters */ mt76_rr (dev,MT_MIB_SDR9 (0 ));
@@ -990,10 +990,10 @@ void mt7921_mac_update_mib_stats(struct mt7921_phy *phy) val =mt76_rr (dev,MT_TX_AGG_CNT (0 , i)); val2 =mt76_rr (dev,MT_TX_AGG_CNT2 (0 , i)); - dev->mt76.aggr_stats[aggr0++] += val &0xffff ; - dev->mt76.aggr_stats[aggr0++] += val >>16 ; - dev->mt76.aggr_stats[aggr1++] += val2 &0xffff ; - dev->mt76.aggr_stats[aggr1++] += val2 >>16 ; + phy->mt76->aggr_stats[aggr0++] += val &0xffff ; + phy->mt76->aggr_stats[aggr0++] += val >>16 ; + phy->mt76->aggr_stats[aggr1++] += val2 &0xffff ; + phy->mt76->aggr_stats[aggr1++] += val2 >>16 ; } }
drivers/net/wireless/mediatek/mt76/mt7921/main.c +1 -1
@@ -1075,7 +1075,7 @@ void mt7921_get_et_stats(struct ieee80211_hw *hw, struct ieee80211_vif *vif,/* Tx ampdu stat */ for (i =0 ; i <15 ; i++) - data[ei++] = dev->mt76.aggr_stats[i]; + data[ei++] = phy->mt76->aggr_stats[i]; data[ei++] = phy->mib.ba_miss_cnt;
Signature · 1 line
2.38.1