State of TP-Link Archer C7v2|v5 in 2023

Lets wait for 22.x to be "stable" released first :wink:

@Khurram I've updated the first post with 21.02.3-stable. Not using this myself, but expect it to work as great as 21.02.1-stable. Could you please give feedback if you try it out?

P.S. Link to 22.03.0-rc1 is also up.

It seems the problem was due to the ipv6 dropping packets due to offload bug posted a few posts up. If anyone knows a build that has the fixes that would be appreciated.

You might try master.

I cannot contribute any experience on this matter as I'm using plain IPv4 here.

Can you give me a pointer? I'm a little time strapped and wasted several days on this until I finally found some references to the bug, so anything you can point out would be greatly appreciated good sir!

There is no "fix" in stable, so try master (snapshot).

Find the snapshot here, or on the hardware data wiki page for your device.

https://downloads.openwrt.org/snapshots/targets/

Everything works fine in OpenWrt 21.02.2 but I still experience this weird CPU difference between WiFi 5G upload/download. Basically, download uses 30% more CPU (thus , capping the bandwidth) than upload. This on device configured as AP, so no routing or NAT involved. Using non-ct ath10 drivers.

I use ct-smallbuffers, and no SQM, and get good CPU performance.

SQM (especially Cake) comes with CPU overhead.

I do not use SQM, routing, NAT or anything else. This is basically direct bridge between WLAN and LAN.
What is "good performance"? I can get 700Mbit/sec upload in iperf3 (maximum of what 80MHz 801.11ac will suport) with CPU cycles to spare. Upload, on the other hand, will be capped to 460Mbit/sec with sirq pegged at 99-100%.

So apparently, something is taxing the CPU more on download than upload.

1 Like

Install the package sysstat.

To trace CPU usage -

SSH in to the router.

Run pidstat -T TASK 2 (which snapshots every 2 seconds)

To log the results (name the file whatever you want) -

Run pidstat -T TASK 2 | tee -a CPUtrace.txt

CTRL-C to end the trace.

Log file will be in the root directory.

Thanks for the guide. Here are the results:

Download 470Mbit/sec:


08:12:44      UID       PID    %usr %system  %guest   %wait    %CPU   CPU  Command
08:12:46        0         3    0.00    1.00    0.00    0.00    1.00     0  kworker/0:0-events
08:12:46        0         7    0.00   92.50    0.00    0.00   92.50     0  ksoftirqd/0
08:12:46        0       673    0.00    0.50    0.00    0.00    0.50     0  urngd
08:12:46        0      2650    0.00    3.00    0.00    0.00    3.00     0  kworker/u2:1-ath10k_wq
08:12:46        0      3987    0.50    0.50    0.00    0.00    1.00     0  pidstat

08:12:46      UID       PID    %usr %system  %guest   %wait    %CPU   CPU  Command
08:12:48        0         3    0.00    1.00    0.00    0.00    1.00     0  kworker/0:0-events
08:12:48        0         7    0.00   90.50    0.00    0.00   90.50     0  ksoftirqd/0
08:12:48        0       673    0.50    0.00    0.00    0.00    0.50     0  urngd
08:12:48        0      1344    0.50    0.00    0.00    0.00    0.50     0  uhttpd
08:12:48        0      2650    0.00    2.50    0.00    0.00    2.50     0  kworker/u2:1-ath10k_wq
08:12:48        0      3915    0.00    0.50    0.00    0.00    0.50     0  dropbear
08:12:48        0      3987    0.50    0.00    0.00    0.00    0.50     0  pidstat

08:12:48      UID       PID    %usr %system  %guest   %wait    %CPU   CPU  Command
08:12:50        0         3    0.00    0.50    0.00    0.00    0.50     0  kworker/0:0-events
08:12:50        0         7    0.00   90.50    0.00    0.00   90.50     0  ksoftirqd/0
08:12:50        0      1163    0.00    0.50    0.00    0.00    0.50     0  hostapd
08:12:50        0      1226    0.50    0.00    0.00    0.00    0.50     0  netifd
08:12:50        0      2650    0.00    3.00    0.00    0.00    3.00     0  kworker/u2:1-ath10k_wq
08:12:50        0      3987    0.00    0.50    0.00    0.00    0.50     0  pidstat

08:12:50      UID       PID    %usr %system  %guest   %wait    %CPU   CPU  Command
08:12:52        0         3    0.00    1.00    0.00    0.00    1.00     0  kworker/0:0-events
08:12:52        0         7    0.00   90.50    0.00    0.00   90.50     0  ksoftirqd/0
08:12:52        0       673    0.50    0.50    0.00    0.00    1.00     0  urngd
08:12:52        0      2650    0.00    3.00    0.00    0.00    3.00     0  kworker/u2:1-ath10k_wq
08:12:52        0      3915    0.50    0.00    0.00    0.00    0.50     0  dropbear
08:12:52        0      3987    0.50    0.50    0.00    0.00    1.00     0  pidstat

08:12:52      UID       PID    %usr %system  %guest   %wait    %CPU   CPU  Command
08:12:54        0         3    0.00    1.00    0.00    0.00    1.00     0  kworker/0:0-events
08:12:54        0         7    0.00   92.00    0.00    0.00   92.00     0  ksoftirqd/0
08:12:54        0      2650    0.00    2.50    0.00    0.00    2.50     0  kworker/u2:1-ath10k_wq
08:12:54        0      3915    0.00    0.50    0.00    0.00    0.50     0  dropbear
08:12:54        0      3987    0.50    0.50    0.00    0.00    1.00     0  pidstat

08:12:54      UID       PID    %usr %system  %guest   %wait    %CPU   CPU  Command
08:12:56        0         3    0.00    0.50    0.00    0.00    0.50     0  kworker/0:0-events
08:12:56        0         7    0.00   91.00    0.00    0.00   91.00     0  ksoftirqd/0
08:12:56        0       673    0.00    0.50    0.00    0.00    0.50     0  urngd
08:12:56        0      2650    0.00    3.00    0.00    0.00    3.00     0  kworker/u2:1-ath10k_wq
08:12:56        0      3915    0.00    0.50    0.00    0.00    0.50     0  dropbear
08:12:56        0      3987    0.50    0.00    0.00    0.00    0.50     0  pidstat

Upload 700 Mbit/sec:

08:13:48      UID       PID    %usr %system  %guest   %wait    %CPU   CPU  Command
08:13:50        0         7    0.00   80.00    0.00    0.00   80.00     0  ksoftirqd/0
08:13:50        0      2650    0.00    0.50    0.00    0.00    0.50     0  kworker/u2:1-ath10k_wq
08:13:50        0      4000    0.00    0.50    0.00    0.00    0.50     0  pidstat
08:13:50        0      4001    0.00    2.00    0.00    0.00    2.00     0  kworker/0:1-events

08:13:50      UID       PID    %usr %system  %guest   %wait    %CPU   CPU  Command
08:13:52        0         7    0.00   81.00    0.00    0.00   81.00     0  ksoftirqd/0
08:13:52        0       673    0.00    0.50    0.00    0.00    0.50     0  urngd
08:13:52        0      2650    0.00    0.50    0.00    0.00    0.50     0  kworker/u2:1-ath10k_wq
08:13:52        0      4000    0.50    0.50    0.00    0.00    1.00     0  pidstat
08:13:52        0      4001    0.00    2.50    0.00    0.00    2.50     0  kworker/0:1-events

08:13:52      UID       PID    %usr %system  %guest   %wait    %CPU   CPU  Command
08:13:54        0         7    0.00   81.50    0.00    0.00   81.50     0  ksoftirqd/0
08:13:54        0      2650    0.00    0.50    0.00    0.00    0.50     0  kworker/u2:1-ath10k_wq
08:13:54        0      3915    0.50    0.50    0.00    0.00    1.00     0  dropbear
08:13:54        0      4000    0.50    0.50    0.00    0.00    1.00     0  pidstat
08:13:54        0      4001    0.00    2.50    0.00    0.00    2.50     0  kworker/0:1-events

08:13:54      UID       PID    %usr %system  %guest   %wait    %CPU   CPU  Command
08:13:56        0         7    0.00   78.11    0.00    0.00   78.11     0  ksoftirqd/0
08:13:56        0      2650    0.00    0.50    0.00    0.00    0.50     0  kworker/u2:1-ath10k_wq
08:13:56        0      4000    0.00    0.50    0.00    0.00    0.50     0  pidstat
08:13:56        0      4001    0.00    1.99    0.00    0.00    1.99     0  kworker/0:1-events

08:13:56      UID       PID    %usr %system  %guest   %wait    %CPU   CPU  Command
08:13:58        0         7    0.00   84.50    0.00    0.00   84.50     0  ksoftirqd/0
08:13:58        0       673    0.00    0.50    0.00    0.00    0.50     0  urngd
08:13:58        0      2650    0.00    0.50    0.00    0.00    0.50     0  kworker/u2:1-ath10k_wq
08:13:58        0      3915    0.00    0.50    0.00    0.00    0.50     0  dropbear
08:13:58        0      4000    0.00    0.50    0.00    0.00    0.50     0  pidstat
08:13:58        0      4001    0.00    2.50    0.00    0.00    2.50     0  kworker/0:1-events

08:13:58      UID       PID    %usr %system  %guest   %wait    %CPU   CPU  Command
08:14:00        0         7    0.00   78.50    0.00    0.00   78.50     0  ksoftirqd/0
08:14:00        0       673    0.00    0.50    0.00    0.00    0.50     0  urngd
08:14:00        0      2650    0.00    0.50    0.00    0.00    0.50     0  kworker/u2:1-ath10k_wq
08:14:00        0      4000    1.00    0.50    0.00    0.00    1.50     0  pidstat
08:14:00        0      4001    0.00    2.00    0.00    0.00    2.00     0  kworker/0:1-events

08:14:00      UID       PID    %usr %system  %guest   %wait    %CPU   CPU  Command
08:14:02        0         7    0.00   84.50    0.00    0.00   84.50     0  ksoftirqd/0
08:14:02        0      2650    0.00    0.50    0.00    0.00    0.50     0  kworker/u2:1-ath10k_wq
08:14:02        0      4000    0.00    0.50    0.00    0.00    0.50     0  pidstat
08:14:02        0      4001    0.00    2.50    0.00    0.00    2.50     0  kworker/0:1-events

Everything else is the same.
OpenWrt 21.02.3. 80MHz channel 802.11ac. non-ct ath10 drivers. Using iperf3 client on a iphone and iperf3 server on wired x86 linux machine. Router is configured as dumb AP.

Good info on ksoftirqd -

Thanks. Unfortunately, it doesn't say much more than explain what software interrupts are and that you can try to tweak CPU affinity (which is pointless on Archer C7 as CPU only has one core).

I assume that issue is somehow in ath10k driver?

I experienced the same high CPU usage in OpenWrt when downstreaming via Wi-Fi with Mediatek devices as well (Archer C6 v3 mt7621 and Redmi AX6S mt7622).

Since these other two devices have a better CPU than the C7, the CPU is not the bottleneck for Wi-Fi speed. But still it uses a considerable amount of CPU when testing iperf3 via Wi-Fi.

My point here is that this looks like an OpenWrt design characteristic rather than a Wifi driver issue.

I use ct-smallbuffers...but I test wired using the Waveform bufferbloat/speedtest -

I'll run a test on 5 GHz.

Just ran the Waveform test (twice) on 5 GHz.

CPU usage in htop peaked at 64%

pidstat showed ksoftirqd peaked at 7%

Edit: Switched from ct-smallbuffers to ct (default), and got a slightly higher CPU peak at 68%

pidstat showed the same peak for ksoftirqd.

benchmarking WiFi via Internet is not really optimal. You are basically benchmarking whole chain: WiFi, NAT, routing and your Internet provider. using WLAN to LAN iperf3 (and iperf3 server needs to be outside of router) taxes WiFi only.

1 Like

Which mirrors real-world use.

It does not. I have dedicated x86 router and C7 is just a wireless AP. Also, I do lot of in-house movement of data from laptop to NAS etc.

You cannot troubleshoot WiFi by measuring Internet speed. Especially if your max internet speed is bellow max WiFi speed.

2 Likes