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

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: