Transmit power control (TPC) per packet hence per station can be used to manage interference and increase overall spatial reuse and therefore increases sum throughput in WiFi networks with multiple APs and STAs. Although several of today's wifi chips, e.g., from QCA and from Mediatek support fine-grained TPC per packet, the Linux mac80211 layer does not provide support for this annotation nor control yet. This series proposes several changes to introduce TPC support in mac80211, in particular to annotate tx-power per packet/per mrr stage in the tx control path. The patches include new members in the tx control path structs, a modified tx-power level support annotation, hardware flags, hwsim support, debugfs support in minstrel_ht for fixed TPC and an utility function for the convenient use of struct ieee80211_rate_status (introduced by 44fa75f207d8a106bc75e6230db61e961fdbf8a8) for tx-power status report in drivers. An proof-of-concept ath9k support was implemented for testing these changes on real ath9k hardware, this implementation is planned to be brought upstream later. Compile-Tested: current wireless-next tree with all flags on Tested-on: PCEngines APU with ath9k WiFi device on OpenWrt Linux Kernel 5.15.68, AP<->STA setup with both ath9k and hwsim (used current OpenWrt testing kernel) --- v2: - added exemplary hwsim support - added debugfs in minstrel_ht for fixed TPC --- Signed-off-by: Thomas Huehn <thomas.huehn@xxxxxxxxxxxxxxxx> Signed-off-by: Jonas Jelonek <jelonek.jonas@xxxxxxxxx> Jonas Jelonek (6): mac80211: modify tx-power level annotation mac80211: add tx-power annotation in control path mac80211: add hardware flags for TPC support mac80211: add utility function for tx_rate - rate_info conversion mac80211_hwsim: add TPC per packet support mac80211: minstrel_ht - add debugfs entry per sta for fixed tx-power drivers/net/wireless/mac80211_hwsim.c | 175 ++++++++++++++++++++- drivers/net/wireless/mac80211_hwsim.h | 1 + include/net/mac80211.h | 66 ++++++-- net/mac80211/debugfs.c | 2 + net/mac80211/rc80211_minstrel_ht.c | 14 ++ net/mac80211/rc80211_minstrel_ht.h | 11 ++ net/mac80211/rc80211_minstrel_ht_debugfs.c | 11 ++ net/mac80211/util.c | 35 +++++ 8 files changed, 296 insertions(+), 19 deletions(-) -- 2.30.2