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