wifi: mac80211: add debugfs file to display per-phy AQL pending airtime
authorFelix Fietkau <nbd@nbd.name>
Sat, 25 Jun 2022 21:24:10 +0000 (23:24 +0200)
committerJohannes Berg <johannes.berg@intel.com>
Fri, 1 Jul 2022 08:51:48 +0000 (10:51 +0200)
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>
Acked-by: Toke Høiland-Jørgensen <toke@toke.dk>
Link: https://lore.kernel.org/r/20220625212411.36675-6-nbd@nbd.name
Signed-off-by: Johannes Berg <johannes.berg@intel.com>
net/mac80211/debugfs.c

index 0c748b1..4d43412 100644 (file)
@@ -201,6 +201,36 @@ static const struct file_operations airtime_flags_ops = {
        .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,
@@ -631,6 +661,7 @@ void debugfs_hw_add(struct ieee80211_local *local)
        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);