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

Commit 4a07ed51 authored by Lorenzo Bianconi's avatar Lorenzo Bianconi Committed by Kalle Valo
Browse files

mt76x2: debugfs: add sw pulse statistics to dfs debugfs



Add sw pattern detector statistics to mt76x2 debugfs.
Moreover track down number of allocated sequence by the detector

Signed-off-by: default avatarLorenzo Bianconi <lorenzo.bianconi@redhat.com>
Signed-off-by: default avatarKalle Valo <kvalo@codeaurora.org>
parent b7384e4e
Loading
Loading
Loading
Loading
+8 −0
Original line number Diff line number Diff line
@@ -91,12 +91,20 @@ mt76x2_dfs_stat_read(struct seq_file *file, void *data)
	struct mt76x2_dev *dev = file->private;
	struct mt76x2_dfs_pattern_detector *dfs_pd = &dev->dfs_pd;

	seq_printf(file, "allocated sequences:\t%d\n",
		   dfs_pd->seq_stats.seq_pool_len);
	seq_printf(file, "used sequences:\t\t%d\n",
		   dfs_pd->seq_stats.seq_len);
	seq_puts(file, "\n");

	for (i = 0; i < MT_DFS_NUM_ENGINES; i++) {
		seq_printf(file, "engine: %d\n", i);
		seq_printf(file, "  hw pattern detected:\t%d\n",
			   dfs_pd->stats[i].hw_pattern);
		seq_printf(file, "  hw pulse discarded:\t%d\n",
			   dfs_pd->stats[i].hw_pulse_discarded);
		seq_printf(file, "  sw pattern detected:\t%d\n",
			   dfs_pd->stats[i].sw_pattern);
	}

	return 0;
+10 −1
Original line number Diff line number Diff line
@@ -165,6 +165,9 @@ static void mt76x2_dfs_seq_pool_put(struct mt76x2_dev *dev,
	struct mt76x2_dfs_pattern_detector *dfs_pd = &dev->dfs_pd;

	list_add(&seq->head, &dfs_pd->seq_pool);

	dfs_pd->seq_stats.seq_pool_len++;
	dfs_pd->seq_stats.seq_len--;
}

static
@@ -180,7 +183,11 @@ struct mt76x2_dfs_sequence *mt76x2_dfs_seq_pool_get(struct mt76x2_dev *dev)
				       struct mt76x2_dfs_sequence,
				       head);
		list_del(&seq->head);
		dfs_pd->seq_stats.seq_pool_len--;
	}
	if (seq)
		dfs_pd->seq_stats.seq_len++;

	return seq;
}

@@ -555,9 +562,11 @@ static bool mt76x2_dfs_check_detection(struct mt76x2_dev *dev)
		return false;

	list_for_each_entry(seq, &dfs_pd->sequences, head) {
		if (seq->count > MT_DFS_SEQUENCE_TH)
		if (seq->count > MT_DFS_SEQUENCE_TH) {
			dfs_pd->stats[seq->engine].sw_pattern++;
			return true;
		}
	}
	return false;
}

+7 −0
Original line number Diff line number Diff line
@@ -109,6 +109,12 @@ struct mt76x2_dfs_sw_detector_params {
struct mt76x2_dfs_engine_stats {
	u32 hw_pattern;
	u32 hw_pulse_discarded;
	u32 sw_pattern;
};

struct mt76x2_dfs_seq_stats {
	u32 seq_pool_len;
	u32 seq_len;
};

struct mt76x2_dfs_pattern_detector {
@@ -122,6 +128,7 @@ struct mt76x2_dfs_pattern_detector {

	struct list_head sequences;
	struct list_head seq_pool;
	struct mt76x2_dfs_seq_stats seq_stats;

	unsigned long last_sw_check;
	u32 last_event_ts;