59 lines
		
	
	
		
			1.7 KiB
		
	
	
	
		
			Diff
		
	
	
	
	
	
			
		
		
	
	
			59 lines
		
	
	
		
			1.7 KiB
		
	
	
	
		
			Diff
		
	
	
	
	
	
From: Felix Fietkau <nbd@nbd.name>
 | 
						|
Date: Sat, 25 Jun 2022 21:25:40 +0200
 | 
						|
Subject: [PATCH] mac80211: add debugfs file to display per-phy AQL pending
 | 
						|
 airtime
 | 
						|
 | 
						|
Now that the global pending airtime is more relevant for airtime fairness,
 | 
						|
it makes sense to make it accessible via debugfs for debugging
 | 
						|
 | 
						|
Signed-off-by: Felix Fietkau <nbd@nbd.name>
 | 
						|
---
 | 
						|
 | 
						|
--- a/net/mac80211/debugfs.c
 | 
						|
+++ b/net/mac80211/debugfs.c
 | 
						|
@@ -201,6 +201,36 @@ static const struct file_operations airt
 | 
						|
 	.llseek = default_llseek,
 | 
						|
 };
 | 
						|
 
 | 
						|
+static ssize_t aql_pending_read(struct file *file,
 | 
						|
+				char __user *user_buf,
 | 
						|
+				size_t count, loff_t *ppos)
 | 
						|
+{
 | 
						|
+	struct ieee80211_local *local = file->private_data;
 | 
						|
+	char buf[400];
 | 
						|
+	int len = 0;
 | 
						|
+
 | 
						|
+	len = scnprintf(buf, sizeof(buf),
 | 
						|
+			"AC     AQL pending\n"
 | 
						|
+			"VO     %u us\n"
 | 
						|
+			"VI     %u us\n"
 | 
						|
+			"BE     %u us\n"
 | 
						|
+			"BK     %u us\n"
 | 
						|
+			"total  %u us\n",
 | 
						|
+			atomic_read(&local->aql_ac_pending_airtime[IEEE80211_AC_VO]),
 | 
						|
+			atomic_read(&local->aql_ac_pending_airtime[IEEE80211_AC_VI]),
 | 
						|
+			atomic_read(&local->aql_ac_pending_airtime[IEEE80211_AC_BE]),
 | 
						|
+			atomic_read(&local->aql_ac_pending_airtime[IEEE80211_AC_BK]),
 | 
						|
+			atomic_read(&local->aql_total_pending_airtime));
 | 
						|
+	return simple_read_from_buffer(user_buf, count, ppos,
 | 
						|
+				       buf, len);
 | 
						|
+}
 | 
						|
+
 | 
						|
+static const struct file_operations aql_pending_ops = {
 | 
						|
+	.read = aql_pending_read,
 | 
						|
+	.open = simple_open,
 | 
						|
+	.llseek = default_llseek,
 | 
						|
+};
 | 
						|
+
 | 
						|
 static ssize_t aql_txq_limit_read(struct file *file,
 | 
						|
 				  char __user *user_buf,
 | 
						|
 				  size_t count,
 | 
						|
@@ -628,6 +658,7 @@ void debugfs_hw_add(struct ieee80211_loc
 | 
						|
 	DEBUGFS_ADD(hw_conf);
 | 
						|
 	DEBUGFS_ADD_MODE(force_tx_status, 0600);
 | 
						|
 	DEBUGFS_ADD_MODE(aql_enable, 0600);
 | 
						|
+	DEBUGFS_ADD(aql_pending);
 | 
						|
 
 | 
						|
 	if (local->ops->wake_tx_queue)
 | 
						|
 		DEBUGFS_ADD_MODE(aqm, 0600);
 |