Linux wireless drivers development
 help / color / mirror / Atom feed
* [PATCH 0/4] wifi: mt76: fix returned txpower for mt7921 and mt7925
@ 2025-02-09  1:18 Razvan Grigore
  2025-02-09  1:18 ` [PATCH 1/4] wifi: mt76: add mt76_get_power_bound helper function Razvan Grigore
                   ` (3 more replies)
  0 siblings, 4 replies; 6+ messages in thread
From: Razvan Grigore @ 2025-02-09  1:18 UTC (permalink / raw)
  To: linux-wireless, Felix Fietkau, Lorenzo Bianconi, Ryder Lee
  Cc: Shayne Chen, Sean Wang, Razvan Grigore

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

Razvan Grigore (4):
  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

 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 +++++++
 7 files changed, 33 insertions(+), 18 deletions(-)

-- 
2.34.1


^ permalink raw reply	[flat|nested] 6+ messages in thread

end of thread, other threads:[~2025-02-09  8:02 UTC | newest]

Thread overview: 6+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2025-02-09  1:18 [PATCH 0/4] wifi: mt76: fix returned txpower for mt7921 and mt7925 Razvan Grigore
2025-02-09  1:18 ` [PATCH 1/4] wifi: mt76: add mt76_get_power_bound helper function Razvan Grigore
2025-02-09  1:18 ` [PATCH 2/4] wifi: mt76: mt7921: fix returned txpower Razvan Grigore
2025-02-09  1:18 ` [PATCH 3/4] wifi: mt76: mt7925: " Razvan Grigore
2025-02-09  1:18 ` [PATCH 4/4] wifi: mt76: mt7915: cleanup mt7915_get_power_bound Razvan Grigore
2025-02-09  8:02   ` Shengyu Qu

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox