Bug#1105211: mt7921e: stuck at low transmit power
Control: tags -1 + moreinfo
Hi,
On Tue, May 13, 2025 at 06:16:09PM +0530, Jyotirmoy Bhattacharya wrote:
> Package: src:linux
> Version: 6.14.6-1~exp1
> Severity: important
> X-Debbugs-Cc: jyotirmoy@jyotirmoy.net
>
> Dear Maintainer,
>
> On a Asus Vivobook S14 laptop with a Mediatek 7922 WiFi chip served
> by the MT7921e module, Tx power on boot is stuck at a very low 3dB
> value as shown by:
>
> root@hometop4:~# cat /sys/kernel/debug/ieee80211/phy*/mt76/txpower_sku|head
> Tx power table (channel 6)
> 1m 2m 5m 11m
> CCK (user) : -1 -1 -1 -1
> CCK (eeprom) : 41 41 41 41
> CCK (tmac) : 3 3 3 3
> 6m 9m 12m 18m 24m 36m 48m 54m
> OFDM (user) : -1 -1 -1 -1 -1 -1 -1 -1
> OFDM (eeprom) : 39 39 39 39 37 37 35 34
> OFDM (tmac) : 3 3 3 3 3 3 3 3
> mcs0 mcs1 mcs2 mcs3 mcs4 mcs5 mcs6 mcs7
>
> This is accompanied by very low WiFi speeds. Unloading all mt76 related
> modules and reloading mt7921e with the disable_clc=1 option increases
> the transmit power, thus
>
> root@hometop4:~# rm /etc/modprobe.d/mt7921.conf
> root@hometop4:~# modprobe -r mt7921e
Can you confirm mt7921e is loaded here already? mt7921e might not get
autoloaded for your device, but that would be odd. See below.
> root@hometop4:~# modprobe -r mt792x_lib
> root@hometop4:~# modprobe -r mt76
> root@hometop4:~# modprobe mt7921e disable_clc=1
Note that this parameter is invalid for mt7921e, but it is for
mt7921_common. You will see after issuing that command the "mt7921e:
unknown parameter 'disable_clc' ignored" in the journal.
> root@hometop4:~# cat /sys/kernel/debug/ieee80211/phy*/mt76/txpower_sku|head
> Tx power table (channel 6)
> 1m 2m 5m 11m
> CCK (user) : 20 20 20 20
> CCK (eeprom) : 41 41 41 41
> CCK (tmac) : 24 24 24 24
> 6m 9m 12m 18m 24m 36m 48m 54m
> OFDM (user) : 24 24 24 24 24 24 24 24
> OFDM (eeprom) : 39 39 39 39 37 37 35 34
> OFDM (tmac) : 28 28 28 28 28 28 28 28
> mcs0 mcs1 mcs2 mcs3 mcs4 mcs5 mcs6 mcs7
>
> This greatly improves WiFi speed.
>
> However, trying to make this change
> permanent by create a file call mt7921.conf in /etc/modprobe.d with the
> contents:
>
> options mt7921e disable_clc=1
> options mt7921_common disable_clc=1
This will not cause you to actually load the module, and secondly the
parameter for mt7921e is not correct (which will you see as well in
journal once the module get actually loaded).
So a couple of suggestions: Please try the most recent kernels
(without any workarounds) and see if mt7921e get autoloaded and if the
issue is gone.
To ge the module mt7921e loaded you can create a
/etc/modules-load.d/mt7921e.conf file containing 'mt7921e'. Secondly
as you want to load the mt7921_common with disable_clc=1, create a
/etc/modprobe.d/mt7921.conf with:
options mt7921_common disable_clc=1
This should get you the mt7921e module loaded, and it's dependency
mt7921_common with the desired parameter.
If you get the mt7921e actually correctly autoloaded, which it should,
the alias
alias: pci:v000014C3d00000616sv*sd*bc*sc*i*
covers your device accordingly, then you would only need the
/etc/modprobe.d/mt7921.conf with:
options mt7921_common disable_clc=1
Regards,
Salvatore
Reply to: