Search Linux Wireless

[PATCH v2 0/5] wifi: mt76: fix returned txpower for mt7921 and mt7925

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



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





[Index of Archives]     [Linux Host AP]     [ATH6KL]     [Linux Wireless Personal Area Network]     [Linux Bluetooth]     [Wireless Regulations]     [Linux Netdev]     [Kernel Newbies]     [Linux Kernel]     [IDE]     [Git]     [Netfilter]     [Bugtraq]     [Yosemite Hiking]     [MIPS Linux]     [ARM Linux]     [Linux RAID]

  Powered by Linux