Commit f58220f6 authored by Eyal Shapira's avatar Eyal Shapira Committed by Emmanuel Grumbach

iwlwifi: mvm: rs: don't zero tx stats after idle

Move the tx stats to the persistent area of lq_sta to
avoid them being zeroed out every time rs reinitializes
which happens after tx idle for 5 secs for example.
The automatic zeroing out made them difficult to use.
Signed-off-by: default avatarEyal Shapira <eyalx.shapira@intel.com>
Reviewed-by: default avatarJohannes Berg <johannes.berg@intel.com>
Signed-off-by: default avatarEmmanuel Grumbach <emmanuel.grumbach@intel.com>
parent f3bd58f4
...@@ -672,8 +672,10 @@ static int rs_collect_tx_data(struct iwl_lq_sta *lq_sta, ...@@ -672,8 +672,10 @@ static int rs_collect_tx_data(struct iwl_lq_sta *lq_sta,
return -EINVAL; return -EINVAL;
if (tbl->column != RS_COLUMN_INVALID) { if (tbl->column != RS_COLUMN_INVALID) {
lq_sta->tx_stats[tbl->column][scale_index].total += attempts; struct lq_sta_pers *pers = &lq_sta->pers;
lq_sta->tx_stats[tbl->column][scale_index].success += successes;
pers->tx_stats[tbl->column][scale_index].total += attempts;
pers->tx_stats[tbl->column][scale_index].success += successes;
} }
/* Select window for current tx bit rate */ /* Select window for current tx bit rate */
...@@ -3171,7 +3173,7 @@ static ssize_t rs_sta_dbgfs_drv_tx_stats_read(struct file *file, ...@@ -3171,7 +3173,7 @@ static ssize_t rs_sta_dbgfs_drv_tx_stats_read(struct file *file,
"%s,", column_name[col]); "%s,", column_name[col]);
for (rate = 0; rate < IWL_RATE_COUNT; rate++) { for (rate = 0; rate < IWL_RATE_COUNT; rate++) {
stats = &(lq_sta->tx_stats[col][rate]); stats = &(lq_sta->pers.tx_stats[col][rate]);
pos += scnprintf(pos, endpos - pos, pos += scnprintf(pos, endpos - pos,
"%llu/%llu,", "%llu/%llu,",
stats->success, stats->success,
...@@ -3190,7 +3192,7 @@ static ssize_t rs_sta_dbgfs_drv_tx_stats_write(struct file *file, ...@@ -3190,7 +3192,7 @@ static ssize_t rs_sta_dbgfs_drv_tx_stats_write(struct file *file,
size_t count, loff_t *ppos) size_t count, loff_t *ppos)
{ {
struct iwl_lq_sta *lq_sta = file->private_data; struct iwl_lq_sta *lq_sta = file->private_data;
memset(lq_sta->tx_stats, 0, sizeof(lq_sta->tx_stats)); memset(lq_sta->pers.tx_stats, 0, sizeof(lq_sta->pers.tx_stats));
return count; return count;
} }
......
...@@ -333,8 +333,6 @@ struct iwl_lq_sta { ...@@ -333,8 +333,6 @@ struct iwl_lq_sta {
bool ldpc; /* LDPC Rx is supported by the STA */ bool ldpc; /* LDPC Rx is supported by the STA */
enum ieee80211_band band; enum ieee80211_band band;
struct rs_rate_stats tx_stats[RS_COLUMN_COUNT][IWL_RATE_COUNT];
/* The following are bitmaps of rates; IWL_RATE_6M_MASK, etc. */ /* The following are bitmaps of rates; IWL_RATE_6M_MASK, etc. */
unsigned long active_legacy_rate; unsigned long active_legacy_rate;
unsigned long active_siso_rate; unsigned long active_siso_rate;
...@@ -362,11 +360,14 @@ struct iwl_lq_sta { ...@@ -362,11 +360,14 @@ struct iwl_lq_sta {
int tpc_reduce; int tpc_reduce;
/* persistent fields - initialized only once - keep last! */ /* persistent fields - initialized only once - keep last! */
struct { struct lq_sta_pers {
#ifdef CONFIG_MAC80211_DEBUGFS #ifdef CONFIG_MAC80211_DEBUGFS
u32 dbg_fixed_rate; u32 dbg_fixed_rate;
u8 dbg_fixed_txp_reduction; u8 dbg_fixed_txp_reduction;
#endif #endif
u8 chains;
s8 chain_signal[IEEE80211_MAX_CHAINS];
struct rs_rate_stats tx_stats[RS_COLUMN_COUNT][IWL_RATE_COUNT];
struct iwl_mvm *drv; struct iwl_mvm *drv;
} pers; } pers;
}; };
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment