[SOLVED] Atheros QCA6174: spontaineous latency spikes

Hi!
I'm experiencing some strange behaviour with my QCA6174:
My ping latency progressively rises.

Consider the following scenario:
I start my laptop, connect to wireless network, and, say, ping 1.1.1.1
At first, i get something like 20 ms.

fast forward maybe 20 mins and ping time pattern looks like this:

64 bytes from lg-in-f113.1e100.net (64.233.165.113): icmp_seq=5 ttl=47 time=20.4 ms
64 bytes from lg-in-f113.1e100.net (64.233.165.113): icmp_seq=6 ttl=47 time=21.7 ms
64 bytes from lg-in-f113.1e100.net (64.233.165.113): icmp_seq=7 ttl=47 time=23.5 ms
64 bytes from lg-in-f113.1e100.net (64.233.165.113): icmp_seq=8 ttl=47 time=36.2 ms
64 bytes from lg-in-f113.1e100.net (64.233.165.113): icmp_seq=9 ttl=47 time=58.6 ms
64 bytes from lg-in-f113.1e100.net (64.233.165.113): icmp_seq=10 ttl=47 time=155 ms
64 bytes from lg-in-f113.1e100.net (64.233.165.113): icmp_seq=11 ttl=47 time=175 ms
64 bytes from lg-in-f113.1e100.net (64.233.165.113): icmp_seq=12 ttl=47 time=20.7 ms
64 bytes from lg-in-f113.1e100.net (64.233.165.113): icmp_seq=13 ttl=47 time=38.2 ms
64 bytes from lg-in-f113.1e100.net (64.233.165.113): icmp_seq=14 ttl=47 time=62.3 ms
64 bytes from lg-in-f113.1e100.net (64.233.165.113): icmp_seq=15 ttl=47 time=20.8 ms
64 bytes from lg-in-f113.1e100.net (64.233.165.113): icmp_seq=16 ttl=47 time=21.6 ms

fast forward an hour, start ping again and latency becomes 300 ms, and sometimes even 900 ms. Moreover, packet drop rate may rise up to 12%.

I tried:

  • at least three different networks; (so, it looks like the router is not the case)
  • reloading firmware (modprobe -r ath10k_* and so on)
  • swapping NetworkManager with connmand
  • adding pcie_aspm=off as kernel boot parameter
  • pinging router's IP instead of 1.1.1.1 (and experience same problems)
  • iwconfig wlp107s0 power off

Restarting network services does not help in any way, but reboot seems to "refresh" the pattern.

It's reproducible at least on these kernels: 4.14, 5.4, 5.5, 5.6.

My laptop's Lenovo Yoga 920 (manjaro/win10 dual boot):

$ inxi -Fxxxz

System:    Host: Sun2 Kernel: 5.6.0-2-MANJARO x86_64 bits: 64 compiler: gcc v: 9.2.1 Desktop: KDE Plasma 5.18.3 tk: Qt 5.14.1 
           wm: kwin_x11 dm: SDDM Distro: Manjaro Linux 
Machine:   Type: Convertible System: LENOVO product: 80Y8 v: Lenovo YOGA 920-13IKB Glass serial: <filter> Chassis: type: 31 
           v: Lenovo YOGA 920-13IKB Glass serial: <filter> 
           Mobo: LENOVO model: LNVNB161216 v: SDK0J40688 WIN serial: <filter> UEFI: LENOVO v: 5NCN41WW date: 09/12/2018 
Battery:   ID-1: BAT1 charge: 55.7 Wh condition: 55.7/70.0 Wh (80%) volts: 8.5/7.7 model: Celxpert BASE-BAT type: Li-poly 
           serial: <filter> status: Full 
CPU:       Topology: Quad Core model: Intel Core i7-8550U bits: 64 type: MT MCP arch: Kaby Lake rev: A L2 cache: 8192 KiB 
           flags: avx avx2 lm nx pae sse sse2 sse3 sse4_1 sse4_2 ssse3 vmx bogomips: 32012 
           Speed: 800 MHz min/max: 400/4000 MHz Core speeds (MHz): 1: 800 2: 800 3: 800 4: 800 5: 800 6: 800 7: 800 8: 800 
Graphics:  Device-1: Intel UHD Graphics 620 vendor: Lenovo driver: i915 v: kernel bus ID: 00:02.0 chip ID: 8086:5917 
           Display: x11 server: X.Org 1.20.7 driver: intel unloaded: modesetting,vesa alternate: fbdev compositor: kwin_x11 
           resolution: 3840x2160~60Hz 
           OpenGL: renderer: Mesa DRI Intel UHD Graphics 620 (Kabylake GT2) v: 4.6 Mesa 19.3.5 compat-v: 3.0 
           direct render: Yes 
Audio:     Device-1: Intel Sunrise Point-LP HD Audio vendor: Lenovo driver: snd_hda_intel v: kernel bus ID: 00:1f.3 
           chip ID: 8086:9d71 
           Sound Server: ALSA v: k5.6.0-2-MANJARO 
Network:   Device-1: Qualcomm Atheros QCA6174 802.11ac Wireless Network Adapter vendor: Lenovo driver: ath10k_pci v: kernel 
           port: 3040 bus ID: 6b:00.0 chip ID: 168c:003e 
           IF: wlp107s0 state: up mac: <filter> 
           Device-2: Qualcomm Atheros type: USB driver: btusb bus ID: 1-8:4 chip ID: 0cf3:e300 
           IF-ID-1: tun0 state: unknown speed: 10 Mbps duplex: full mac: N/A 
Drives:    Local Storage: total: 476.94 GiB used: 255.43 GiB (53.6%) 
           ID-1: /dev/nvme0n1 vendor: Samsung model: MZVLB512HAJQ-000L2 size: 476.94 GiB speed: 31.6 Gb/s lanes: 4 
           serial: <filter> rev: 2L1QEXA7 scheme: GPT 
Partition: ID-1: / size: 344.19 GiB used: 255.40 GiB (74.2%) fs: ext4 dev: /dev/nvme0n1p4 
Sensors:   System Temperatures: cpu: 42.0 C mobo: 29.8 C 
           Fan Speeds (RPM): N/A 
Info:      Processes: 299 Uptime: 1h 18m Memory: 15.39 GiB used: 4.13 GiB (26.9%) Init: systemd v: 244 Compilers: gcc: 9.2.1 
           clang: 9.0.1 Shell: bash v: 5.0.16 running in: konsole inxi: 3.0.37

Wireless:
2.4GHz/5Ghz + WPA2

Firmware and dmesg logs:

[    3.567849] ath10k_pci 0000:6b:00.0: pci irq msi oper_irq_mode 2 irq_mode 0 reset_mode 0
[    3.814961] ath10k_pci 0000:6b:00.0: qca6174 hw3.2 target 0x05030000 chip_id 0x00340aff sub 17aa:0827
[    3.814964] ath10k_pci 0000:6b:00.0: kconfig debug 1 debugfs 1 tracing 1 dfs 0 testmode 0
[    3.815389] ath10k_pci 0000:6b:00.0: firmware ver WLAN.RM.4.4.1-00140-QCARMSWPZ-1 api 6 features wowlan,ignore-otp,mfp crc32 29eb8ca1
[    3.879548] ath10k_pci 0000:6b:00.0: board_file api 2 bmi_id N/A crc32 4ac0889b
[    3.970994] ath10k_pci 0000:6b:00.0: htt-ver 3.60 wmi-op 4 htt-op 3 cal otp max-sta 32 raw 0 hwcrypto 1
[    4.045537] ath: EEPROM regdomain: 0x6c
[    4.045538] ath: EEPROM indicates we should expect a direct regpair map
[    4.045539] ath: Country alpha2 being used: 00
[    4.045540] ath: Regpair used: 0x6c
[    4.050044] ath10k_pci 0000:6b:00.0 wlp107s0: renamed from wlan0
[ 1556.759356] ath: EEPROM regdomain: 0x8283
[ 1556.759361] ath: EEPROM indicates we should expect a country code
[ 1556.759364] ath: doing EEPROM country->regdmn map search
[ 1556.759368] ath: country maps to regdmn code: 0x3d
[ 1556.759371] ath: Country alpha2 being used: RU
[ 1556.759374] ath: Regpair used: 0x3d
[ 1556.759379] ath: regdomain 0x8283 dynamically updated by country element

Any ideas on fixing/debugging this are greatly appreciated!

Thanks,
Mike.

I would disable IPv6.

Which kernels have you tested?

I would recommend testing every kernel from 4.9 upwards including the real time kernels.

Have you tested alternate firmware yet?

I would recommend testing the newest ath10k firmware from kvallo on github.

Is your bios up to date?

Do some searching on the terms I have referenced for directions.

Please post:

cat /etc/resolv.conf
bash -c "nmcli networking off; sudo systemctl stop NetworkManager; sudo ip link set wlp107s0 down; rmmod -vf ath10k_pci; rmmod -vf ath10k_core; sleep 5; sudo modprobe -v ath10k_core; sudo modprobe -v ath10k_pci; sudo ip link set wlp107s0 up; sudo systemctl start NetworkManager; nmcli networking on"

Disable Network Manager's WiFi power saving features with the following command:

echo -e "[connection]\nwifi.powersave = 0" | sudo tee /etc/NetworkManager/conf.d/default-wifi-powersave-on.conf

A setting of "0" will totally disable power saving features in the WiFi adapter.

A setting of "2" or "1" will be less aggressive, but still leave power saving enabled.

This change can be reversed by deleting the newly created file with the following command:

sudo rm /etc/NetworkManager/conf.d/default-wifi-powersave-on.conf

Reboot after creating (or removing) any Network Manager configuration file.

If changing the power saving features of Network Manager doesn't help you can try temporarily disabling tlp.

sudo systemctl mask tlp && sudo systemctl mask tlp-sleep.service

Reboot after those commands.

It is best not to leave tlp disabled on a laptop, but rather try to figure out which tlp setting is causing your issue.

Simply repeat the command using "unmask" instead of "mask" to enable tlp again.

[user@Sun2 ~]$ cat /etc/resolv.conf
# Generated by Connection Manager
nameserver ::1
nameserver 127.0.0.1

Try disabling ipv6, then reboot.

The ath10k firmware has been reported as buggy and apperantly Arch has patched it, but it may take some time for this to reach the stable branch. In the mean time you could try this:

Rename the /usr/lib/firmware/ath10k/QCA6174/ board-2.bin files:

sudo mv /usr/lib/firmware/ath10k/QCA6174/hw2.1/board-2.bin /usr/lib/firmware/ath10k/QCA6174/hw2.1/board-2.bin.bak
sudo mv /usr/lib/firmware/ath10k/QCA6174/hw3.0/board-2.bin /usr/lib/firmware/ath10k/QCA6174/hw3.0/board-2.bin.bak

Replace /usr/lib/firmware/ath10k/QCA6174/board.bin files with:

http://www.killernetworking.com/support/K1535_Debian/board.bin

Download the file from http://www.killernetworking.com/support/K1535_Debian/board.bin to your ~/Downloads directory.

Then (on your user account, not root):

cd ~/Downloads
sudo cp ~/Downloads/board.bin /usr/lib/firmware/ath10k/QCA6174/hw2.1/board.bin
sudo cp ~/Downloads/board.bin /usr/lib/firmware/ath10k/QCA6174/hw3.0/board.bin

Reboot.

If your wifi is still not working correctly then add an ath10k driver option file to /etc/modprobe.d:

echo "options ath10k_core skip_otp=y" | sudo tee /etc/modprobe.d/ath10k.conf 

I hope that helps until the ath10k firmware bug is fixed.

Okay, looks like so far the problem is fixed with the above.

The only thing I cannot understand, is how the hell it was affecting something, while i had my NetworkManager stopped (sudo systemctl stop NetworkManager)

I'll now try to revert some of the applied changes in order to narrow down to the minimal set of effective changes.

1 Like

This topic was automatically closed 90 days after the last reply. New replies are no longer allowed.

Forum kindly sponsored by