mac80211: Turn AQL into an NL80211_EXT_FEATURE
authorToke Høiland-Jørgensen <toke@redhat.com>
Thu, 12 Dec 2019 11:14:37 +0000 (12:14 +0100)
committerJohannes Berg <johannes.berg@intel.com>
Fri, 13 Dec 2019 09:34:04 +0000 (10:34 +0100)
commit911bde0fe5ccd7e55760be9d6dcc67a8850fcc12
tree722cf9db4fc96e88324408597577d29f1e41afa4
parente548f749b096133d6da3dd7235ecfc6bd67be306
mac80211: Turn AQL into an NL80211_EXT_FEATURE

Instead of just having an airtime flag in debugfs, turn AQL into a proper
NL80211_EXT_FEATURE, so drivers can turn it on when they are ready, and so
we also expose the presence of the feature to userspace.

This also has the effect of flipping the default, so drivers have to opt in
to using AQL instead of getting it by default with TXQs. To keep
functionality the same as pre-patch, we set this feature for ath10k (which
is where it is needed the most).

While we're at it, split out the debugfs interface so AQL gets its own
per-station debugfs file instead of using the 'airtime' file.

[Johannes:]
This effectively disables AQL for iwlwifi, where it fixes a number of
issues:
 * TSO in iwlwifi is causing underflows and associated warnings in AQL
 * HE (802.11ax) rates aren't reported properly so at HE rates, AQL could
   never have a valid estimate (it'd use 6 Mbps instead of up to 2400!)

Signed-off-by: Toke Høiland-Jørgensen <toke@redhat.com>
Link: https://lore.kernel.org/r/20191212111437.224294-1-toke@redhat.com
Fixes: 3ace10f5b5ad ("mac80211: Implement Airtime-based Queue Limit (AQL)")
Signed-off-by: Johannes Berg <johannes.berg@intel.com>
drivers/net/wireless/ath/ath10k/mac.c
include/uapi/linux/nl80211.h
net/mac80211/debugfs_sta.c
net/mac80211/main.c
net/mac80211/sta_info.c
net/mac80211/sta_info.h
net/mac80211/tx.c