| 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); |