#1105211 mt7921e: stuck at low transmit power

Package:
src:linux
Source:
src:linux
Submitter:
Jyotirmoy Bhattacharya
Date:
2025-11-25 23:23:02 UTC
Severity:
normal
Tags:
#1105211#5
Date:
2025-05-13 12:46:09 UTC
From:
To:
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
    root@hometop4:~# modprobe -r mt792x_lib
    root@hometop4:~# modprobe -r mt76
    root@hometop4:~# modprobe mt7921e disable_clc=1
    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

running update-initramfs -u and rebooting does not work. What is worse
as long as this file is in /etc/modprobe.d, the command mention above
that fix the system after booting do not work. They work again after
deleting the file.

Further, even when the above commands work, journalctl shows a message:

    May 13 17:59:41 hometop4 kernel: mt7921e: unknown parameter 'disable_clc' ignored

At boot time adding kernel parameters mt7921e.disable_clc=1 or
mt7921_common.disable_clc=1 does not work.

Regards,
Jyotirmoy Bhattacharya

#1105211#10
Date:
2025-11-25 23:21:30 UTC
From:
To:
Hi,

Can you confirm mt7921e is loaded here already? mt7921e might not get
autoloaded for your device, but that would be odd. See below.

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.
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