When reading the txpower with `iw dev wlan1` the returned value is always 3.00 dBm, no matter what reg domain is set or if one changes the txpower manually. This bug was discovered by me and confirmed by many people using this chipset on openwrt: https://github.com/openwrt/mt76/issues/783 I tracked the code for this and it seems that for those 2 chipsets particularly, the mt76_phy->txpower_cur is never set, in contrast to other chipsets like mt7603, mt7615, mt76x0, mt7915, etc. Added some debug logs in the mt76_get_txpower function and I got: [ 26.816227] mt7921u 2-1:1.3: mt76_get_txpower: phy->txpower_cur = 0 [ 26.816234] mt7921u 2-1:1.3: mt76_get_txpower: n_chains = 2 [ 26.816236] mt7921u 2-1:1.3: mt76_get_txpower: delta = 6 [ 26.816237] mt7921u 2-1:1.3: mt76_get_txpower: *dbm = 3 So the driver is correctly calculating the TX power adjustment based on the number of antennas. However, the base TX power (phy->txpower_cur) is not being properly initialized or set to a meaningful value. It's starting at 0, so the final result is just the antenna gain compensation divided by 2. While investigating this I found commit ff94604 that adds a separate function for _get_power_bound so decided to reuse it for all 3 chipsets, might be needed in the future as well. Tested-on: Alfa Network AWUS036AXML ... and it also reacts to manual txpower changes now. Thank you in advance for looking into this! R Changes in v2: - Fix line wrapping for commits body - Added a new patch to apply the same cleanup fix to MT7996 Razvan Grigore (5): wifi: mt76: add mt76_get_power_bound helper function wifi: mt76: mt7921: fix returned txpower wifi: mt76: mt7925: fix returned txpower wifi: mt76: mt7915: cleanup mt7915_get_power_bound wifi: mt76: mt7996: cleanup mt7996_get_power_bound drivers/net/wireless/mediatek/mt76/mac80211.c | 11 +++++++++++ drivers/net/wireless/mediatek/mt76/mt76.h | 2 ++ drivers/net/wireless/mediatek/mt76/mt7915/debugfs.c | 8 ++++---- drivers/net/wireless/mediatek/mt76/mt7915/mcu.c | 4 ++-- drivers/net/wireless/mediatek/mt76/mt7915/mcu.h | 12 ------------ drivers/net/wireless/mediatek/mt76/mt7921/main.c | 7 +++++++ drivers/net/wireless/mediatek/mt76/mt7925/main.c | 7 +++++++ drivers/net/wireless/mediatek/mt76/mt7996/mcu.c | 2 +- drivers/net/wireless/mediatek/mt76/mt7996/mcu.h | 12 ------------ 9 files changed, 34 insertions(+), 31 deletions(-) -- 2.34.1