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: Eyal Shapira <eyalx.shapira@intel.com> Reviewed-by: Johannes Berg <johannes.berg@intel.com> Signed-off-by: Emmanuel Grumbach <emmanuel.grumbach@intel.com>
This commit is contained in:
parent
f3bd58f486
commit
f58220f6b9
2 changed files with 10 additions and 7 deletions
|
@ -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,
|
||||||
"%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,
|
||||||
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 {
|
||||||
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 {
|
||||||
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;
|
||||||
};
|
};
|
||||||
|
|
Loading…
Add table
Reference in a new issue