Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

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

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
Loading
Loading
Loading
Loading
+6 −4
Original line number Diff line number Diff line
@@ -672,8 +672,10 @@ static int rs_collect_tx_data(struct iwl_lq_sta *lq_sta,
		return -EINVAL;

	if (tbl->column != RS_COLUMN_INVALID) {
		lq_sta->tx_stats[tbl->column][scale_index].total += attempts;
		lq_sta->tx_stats[tbl->column][scale_index].success += successes;
		struct lq_sta_pers *pers = &lq_sta->pers;

		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 */
@@ -3171,7 +3173,7 @@ static ssize_t rs_sta_dbgfs_drv_tx_stats_read(struct file *file,
				 "%s,", column_name[col]);

		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,
					 "%llu/%llu,",
					 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)
{
	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;
}
+4 −3
Original line number Diff line number Diff line
@@ -333,8 +333,6 @@ struct iwl_lq_sta {
	bool ldpc;              /* LDPC Rx is supported by the STA */
	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. */
	unsigned long active_legacy_rate;
	unsigned long active_siso_rate;
@@ -362,11 +360,14 @@ struct iwl_lq_sta {
	int tpc_reduce;

	/* persistent fields - initialized only once - keep last! */
	struct {
	struct lq_sta_pers {
#ifdef CONFIG_MAC80211_DEBUGFS
		u32 dbg_fixed_rate;
		u8 dbg_fixed_txp_reduction;
#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;
	} pers;
};