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

Commit 386aa23d authored by Johannes Berg's avatar Johannes Berg Committed by John W. Linville
Browse files

mac80211: improve per-sta debugfs



We had code for a number of files, that we didn't publish
in debugfs, fix that. Also make the agg_status file layout
more readable and add more information to it.

Signed-off-by: default avatarJohannes Berg <johannes@sipsolutions.net>
Signed-off-by: default avatarJohn W. Linville <linville@tuxdriver.com>
parent f1d58c25
Loading
Loading
Loading
Loading
+62 −36
Original line number Original line Diff line number Diff line
@@ -120,45 +120,38 @@ STA_OPS(last_seq_ctrl);
static ssize_t sta_agg_status_read(struct file *file, char __user *userbuf,
static ssize_t sta_agg_status_read(struct file *file, char __user *userbuf,
					size_t count, loff_t *ppos)
					size_t count, loff_t *ppos)
{
{
	char buf[768], *p = buf;
	char buf[30 + STA_TID_NUM * 70], *p = buf;
	int i;
	int i;
	struct sta_info *sta = file->private_data;
	struct sta_info *sta = file->private_data;
	p += scnprintf(p, sizeof(buf)+buf-p, "Agg state for STA is:\n");
	p += scnprintf(p, sizeof(buf)+buf-p, " STA next dialog_token is %d \n "
			"TIDs info is: \n TID :",
			(sta->ampdu_mlme.dialog_token_allocator + 1));
	for (i = 0; i < STA_TID_NUM; i++)
		p += scnprintf(p, sizeof(buf)+buf-p, "%5d", i);

	p += scnprintf(p, sizeof(buf)+buf-p, "\n RX  :");
	for (i = 0; i < STA_TID_NUM; i++)
		p += scnprintf(p, sizeof(buf)+buf-p, "%5d",
			sta->ampdu_mlme.tid_state_rx[i]);


	p += scnprintf(p, sizeof(buf)+buf-p, "\n DTKN:");
	spin_lock_bh(&sta->lock);
	for (i = 0; i < STA_TID_NUM; i++)
	p += scnprintf(p, sizeof(buf)+buf-p, "next dialog_token is %#02x\n",
		p += scnprintf(p, sizeof(buf)+buf-p, "%5d",
			sta->ampdu_mlme.dialog_token_allocator + 1);
	for (i = 0; i < STA_TID_NUM; i++) {
		p += scnprintf(p, sizeof(buf)+buf-p, "TID %02d:", i);
		p += scnprintf(p, sizeof(buf)+buf-p, " RX=%x",
				sta->ampdu_mlme.tid_state_rx[i]);
		p += scnprintf(p, sizeof(buf)+buf-p, "/DTKN=%#.2x",
				sta->ampdu_mlme.tid_state_rx[i] ?
				sta->ampdu_mlme.tid_state_rx[i] ?
				sta->ampdu_mlme.tid_rx[i]->dialog_token : 0);
				sta->ampdu_mlme.tid_rx[i]->dialog_token : 0);
		p += scnprintf(p, sizeof(buf)+buf-p, "/SSN=%#.3x",
				sta->ampdu_mlme.tid_state_rx[i] ?
				sta->ampdu_mlme.tid_rx[i]->ssn : 0);


	p += scnprintf(p, sizeof(buf)+buf-p, "\n TX  :");
		p += scnprintf(p, sizeof(buf)+buf-p, " TX=%x",
	for (i = 0; i < STA_TID_NUM; i++)
		p += scnprintf(p, sizeof(buf)+buf-p, "%5d",
				sta->ampdu_mlme.tid_state_tx[i]);
				sta->ampdu_mlme.tid_state_tx[i]);

		p += scnprintf(p, sizeof(buf)+buf-p, "/DTKN=%#.2x",
	p += scnprintf(p, sizeof(buf)+buf-p, "\n DTKN:");
	for (i = 0; i < STA_TID_NUM; i++)
		p += scnprintf(p, sizeof(buf)+buf-p, "%5d",
				sta->ampdu_mlme.tid_state_tx[i] ?
				sta->ampdu_mlme.tid_state_tx[i] ?
				sta->ampdu_mlme.tid_tx[i]->dialog_token : 0);
				sta->ampdu_mlme.tid_tx[i]->dialog_token : 0);

		p += scnprintf(p, sizeof(buf)+buf-p, "/SSN=%#.3x",
	p += scnprintf(p, sizeof(buf)+buf-p, "\n SSN :");
	for (i = 0; i < STA_TID_NUM; i++)
		p += scnprintf(p, sizeof(buf)+buf-p, "%5d",
				sta->ampdu_mlme.tid_state_tx[i] ?
				sta->ampdu_mlme.tid_state_tx[i] ?
				sta->ampdu_mlme.tid_tx[i]->ssn : 0);
				sta->ampdu_mlme.tid_tx[i]->ssn : 0);

		p += scnprintf(p, sizeof(buf)+buf-p, "/pending=%03d",
				sta->ampdu_mlme.tid_state_tx[i] ?
				skb_queue_len(&sta->ampdu_mlme.tid_tx[i]->pending) : 0);
		p += scnprintf(p, sizeof(buf)+buf-p, "\n");
		p += scnprintf(p, sizeof(buf)+buf-p, "\n");
	}
	spin_unlock_bh(&sta->lock);


	return simple_read_from_buffer(userbuf, count, ppos, buf, p - buf);
	return simple_read_from_buffer(userbuf, count, ppos, buf, p - buf);
}
}
@@ -203,6 +196,22 @@ void ieee80211_sta_debugfs_add(struct sta_info *sta)
	DEBUGFS_ADD(inactive_ms);
	DEBUGFS_ADD(inactive_ms);
	DEBUGFS_ADD(last_seq_ctrl);
	DEBUGFS_ADD(last_seq_ctrl);
	DEBUGFS_ADD(agg_status);
	DEBUGFS_ADD(agg_status);
	DEBUGFS_ADD(dev);
	DEBUGFS_ADD(rx_packets);
	DEBUGFS_ADD(tx_packets);
	DEBUGFS_ADD(rx_bytes);
	DEBUGFS_ADD(tx_bytes);
	DEBUGFS_ADD(rx_duplicates);
	DEBUGFS_ADD(rx_fragments);
	DEBUGFS_ADD(rx_dropped);
	DEBUGFS_ADD(tx_fragments);
	DEBUGFS_ADD(tx_filtered);
	DEBUGFS_ADD(tx_retry_failed);
	DEBUGFS_ADD(tx_retry_count);
	DEBUGFS_ADD(last_signal);
	DEBUGFS_ADD(last_qual);
	DEBUGFS_ADD(last_noise);
	DEBUGFS_ADD(wep_weak_iv_count);
}
}


void ieee80211_sta_debugfs_remove(struct sta_info *sta)
void ieee80211_sta_debugfs_remove(struct sta_info *sta)
@@ -212,6 +221,23 @@ void ieee80211_sta_debugfs_remove(struct sta_info *sta)
	DEBUGFS_DEL(inactive_ms);
	DEBUGFS_DEL(inactive_ms);
	DEBUGFS_DEL(last_seq_ctrl);
	DEBUGFS_DEL(last_seq_ctrl);
	DEBUGFS_DEL(agg_status);
	DEBUGFS_DEL(agg_status);
	DEBUGFS_DEL(aid);
	DEBUGFS_DEL(dev);
	DEBUGFS_DEL(rx_packets);
	DEBUGFS_DEL(tx_packets);
	DEBUGFS_DEL(rx_bytes);
	DEBUGFS_DEL(tx_bytes);
	DEBUGFS_DEL(rx_duplicates);
	DEBUGFS_DEL(rx_fragments);
	DEBUGFS_DEL(rx_dropped);
	DEBUGFS_DEL(tx_fragments);
	DEBUGFS_DEL(tx_filtered);
	DEBUGFS_DEL(tx_retry_failed);
	DEBUGFS_DEL(tx_retry_count);
	DEBUGFS_DEL(last_signal);
	DEBUGFS_DEL(last_qual);
	DEBUGFS_DEL(last_noise);
	DEBUGFS_DEL(wep_weak_iv_count);


	debugfs_remove(sta->debugfs.dir);
	debugfs_remove(sta->debugfs.dir);
	sta->debugfs.dir = NULL;
	sta->debugfs.dir = NULL;
+17 −0
Original line number Original line Diff line number Diff line
@@ -308,6 +308,23 @@ struct sta_info {
		struct dentry *inactive_ms;
		struct dentry *inactive_ms;
		struct dentry *last_seq_ctrl;
		struct dentry *last_seq_ctrl;
		struct dentry *agg_status;
		struct dentry *agg_status;
		struct dentry *aid;
		struct dentry *dev;
		struct dentry *rx_packets;
		struct dentry *tx_packets;
		struct dentry *rx_bytes;
		struct dentry *tx_bytes;
		struct dentry *rx_duplicates;
		struct dentry *rx_fragments;
		struct dentry *rx_dropped;
		struct dentry *tx_fragments;
		struct dentry *tx_filtered;
		struct dentry *tx_retry_failed;
		struct dentry *tx_retry_count;
		struct dentry *last_signal;
		struct dentry *last_qual;
		struct dentry *last_noise;
		struct dentry *wep_weak_iv_count;
		bool add_has_run;
		bool add_has_run;
	} debugfs;
	} debugfs;
#endif
#endif