Netgear R7800 exploration (IPQ8065, QCA9984)

I've found a similar problem on mikrotik rb5009:
https://forum.mikrotik.com/viewtopic.php?t=185253

its seems like a bug from linux kernel driver dsa?

rb5009 is using marvell 88e6393x switch chip which using dsa
https://www.kernel.org/doc/Documentation/networking/dsa/dsa.txt

1 Like

I cannot say maybe you're right. R7800 still use the old swconfig switch driver.
Can you repeat the tests with simultaneous WAN and LAN traffic.
According to your diagram - run iperf3 to create traffic from PC1 to PC2 - should be ~100Mbps. At the same time run WAN speed test on PC1 - should be ~200Mbps with ping <1ms. If you see any WAN performace drop and ping increase then we're dealing with the same issue.

I'm sure it's been mentioned a trillion times before, but, how do I make the R7800 work in AP mode only? Also, is it possible for it to function as a switch and an AP ?

Thanks

There's nothing r7800 specific about that, just https://openwrt.org/docs/guide-user/network/wifi/dumbap (if you ignore the WAN port (the optional re-defining of its functionality to yet another LAN port), there's nothing to do about the switch config either).

2 Likes

@robimarko i reached a new record... (i'm trying to source out of pxo that is 25mhz ahahahha)

root@OpenWrt:/# ./mhz
count=5956 us50=21429 us250=109439 diff=88010 cpu_MHz=13.535
root@OpenWrt:/# ./mbw 1
Long uses 4 bytes. Allocating 2*262144 elements = 2097152 bytes of memory.
Using 262144 bytes as blocks for memcpy block copy test.
Getting down to business... Doing 10 runs per test.
0       Method: MEMCPY  Elapsed: 0.02722        MiB: 1.00000    Copy: 36.735 MiB/s
1       Method: MEMCPY  Elapsed: 0.02798        MiB: 1.00000    Copy: 35.739 MiB/s
2       Method: MEMCPY  Elapsed: 0.02858        MiB: 1.00000    Copy: 34.994 MiB/s
3       Method: MEMCPY  Elapsed: 0.02877        MiB: 1.00000    Copy: 34.762 MiB/s
4       Method: MEMCPY  Elapsed: 0.02864        MiB: 1.00000    Copy: 34.914 MiB/s
5       Method: MEMCPY  Elapsed: 0.02860        MiB: 1.00000    Copy: 34.961 MiB/s
6       Method: MEMCPY  Elapsed: 0.02781        MiB: 1.00000    Copy: 35.963 MiB/s
7       Method: MEMCPY  Elapsed: 0.02830        MiB: 1.00000    Copy: 35.333 MiB/s
8       Method: MEMCPY  Elapsed: 0.03186        MiB: 1.00000    Copy: 31.388 MiB/s
9       Method: MEMCPY  Elapsed: 0.02958        MiB: 1.00000    Copy: 33.808 MiB/s
AVG     Method: MEMCPY  Elapsed: 0.02873        MiB: 1.00000    Copy: 34.802 MiB/s
0       Method: DUMB    Elapsed: 0.38641        MiB: 1.00000    Copy: 2.588 MiB/s
1       Method: DUMB    Elapsed: 0.37320        MiB: 1.00000    Copy: 2.680 MiB/s
2       Method: DUMB    Elapsed: 0.37296        MiB: 1.00000    Copy: 2.681 MiB/s
3       Method: DUMB    Elapsed: 0.37329        MiB: 1.00000    Copy: 2.679 MiB/s
4       Method: DUMB    Elapsed: 0.37255        MiB: 1.00000    Copy: 2.684 MiB/s
5       Method: DUMB    Elapsed: 0.37319        MiB: 1.00000    Copy: 2.680 MiB/s
6       Method: DUMB    Elapsed: 0.37488        MiB: 1.00000    Copy: 2.668 MiB/s
7       Method: DUMB    Elapsed: 0.37017        MiB: 1.00000    Copy: 2.701 MiB/s
8       Method: DUMB    Elapsed: 0.37320        MiB: 1.00000    Copy: 2.680 MiB/s
9       Method: DUMB    Elapsed: 0.37408        MiB: 1.00000    Copy: 2.673 MiB/s
AVG     Method: DUMB    Elapsed: 0.37439        MiB: 1.00000    Copy: 2.671 MiB/s
0       Method: MCBLOCK Elapsed: 0.02896        MiB: 1.00000    Copy: 34.532 MiB/s
1       Method: MCBLOCK Elapsed: 0.02935        MiB: 1.00000    Copy: 34.066 MiB/s
2       Method: MCBLOCK Elapsed: 0.03028        MiB: 1.00000    Copy: 33.025 MiB/s
3       Method: MCBLOCK Elapsed: 0.02784        MiB: 1.00000    Copy: 35.920 MiB/s
4       Method: MCBLOCK Elapsed: 0.02877        MiB: 1.00000    Copy: 34.754 MiB/s
5       Method: MCBLOCK Elapsed: 0.02778        MiB: 1.00000    Copy: 36.001 MiB/s
6       Method: MCBLOCK Elapsed: 0.02896        MiB: 1.00000    Copy: 34.534 MiB/s
7       Method: MCBLOCK Elapsed: 0.02783        MiB: 1.00000    Copy: 35.936 MiB/s
8       Method: MCBLOCK Elapsed: 0.02901        MiB: 1.00000    Copy: 34.468 MiB/s
9       Method: MCBLOCK Elapsed: 0.02902        MiB: 1.00000    Copy: 34.460 MiB/s
AVG     Method: MCBLOCK Elapsed: 0.02878        MiB: 1.00000    Copy: 34.746 MiB/s

Hehe, but the fun fact is that it works

@facboy sorry for the tag... do you think these values are correct?

Setting scaling_max_freq to 384000
AVG     Method: MEMCPY  Elapsed: 0.03657        MiB: 16.00000   Copy: 437.564 MiB/s
AVG     Method: DUMB    Elapsed: 0.42556        MiB: 16.00000   Copy: 37.597 MiB/s
AVG     Method: MCBLOCK Elapsed: 0.03649        MiB: 16.00000   Copy: 438.514 MiB/s
AVG     Method: MEMCPY  Elapsed: 0.00232        MiB: 1.00000    Copy: 430.608 MiB/s
AVG     Method: DUMB    Elapsed: 0.02743        MiB: 1.00000    Copy: 36.457 MiB/s
AVG     Method: MCBLOCK Elapsed: 0.00230        MiB: 1.00000    Copy: 434.141 MiB/s
Setting scaling_max_freq to 600000
AVG     Method: MEMCPY  Elapsed: 0.02870        MiB: 16.00000   Copy: 557.447 MiB/s
AVG     Method: DUMB    Elapsed: 0.26741        MiB: 16.00000   Copy: 59.834 MiB/s
AVG     Method: MCBLOCK Elapsed: 0.02805        MiB: 16.00000   Copy: 570.347 MiB/s
AVG     Method: MEMCPY  Elapsed: 0.00183        MiB: 1.00000    Copy: 545.673 MiB/s
AVG     Method: DUMB    Elapsed: 0.01685        MiB: 1.00000    Copy: 59.358 MiB/s
AVG     Method: MCBLOCK Elapsed: 0.00176        MiB: 1.00000    Copy: 566.958 MiB/s
Setting scaling_max_freq to 800000
AVG     Method: MEMCPY  Elapsed: 0.02632        MiB: 16.00000   Copy: 607.861 MiB/s
AVG     Method: DUMB    Elapsed: 0.18825        MiB: 16.00000   Copy: 84.995 MiB/s
AVG     Method: MCBLOCK Elapsed: 0.02692        MiB: 16.00000   Copy: 594.250 MiB/s
AVG     Method: MEMCPY  Elapsed: 0.00169        MiB: 1.00000    Copy: 590.877 MiB/s
AVG     Method: DUMB    Elapsed: 0.01165        MiB: 1.00000    Copy: 85.824 MiB/s
AVG     Method: MCBLOCK Elapsed: 0.00170        MiB: 1.00000    Copy: 589.414 MiB/s
Setting scaling_max_freq to 1000000
AVG     Method: MEMCPY  Elapsed: 0.02611        MiB: 16.00000   Copy: 612.740 MiB/s
AVG     Method: DUMB    Elapsed: 0.15128        MiB: 16.00000   Copy: 105.761 MiB/s
AVG     Method: MCBLOCK Elapsed: 0.02612        MiB: 16.00000   Copy: 612.454 MiB/s
AVG     Method: MEMCPY  Elapsed: 0.00161        MiB: 1.00000    Copy: 622.820 MiB/s
AVG     Method: DUMB    Elapsed: 0.00945        MiB: 1.00000    Copy: 105.770 MiB/s
AVG     Method: MCBLOCK Elapsed: 0.00160        MiB: 1.00000    Copy: 626.409 MiB/s
Setting scaling_max_freq to 1400000
AVG     Method: MEMCPY  Elapsed: 0.02122        MiB: 16.00000   Copy: 754.134 MiB/s
AVG     Method: DUMB    Elapsed: 0.10930        MiB: 16.00000   Copy: 146.390 MiB/s
AVG     Method: MCBLOCK Elapsed: 0.02116        MiB: 16.00000   Copy: 756.287 MiB/s
AVG     Method: MEMCPY  Elapsed: 0.00143        MiB: 1.00000    Copy: 699.496 MiB/s
AVG     Method: DUMB    Elapsed: 0.00677        MiB: 1.00000    Copy: 147.796 MiB/s
AVG     Method: MCBLOCK Elapsed: 0.00142        MiB: 1.00000    Copy: 706.664 MiB/s
Setting scaling_max_freq to 1725000
AVG     Method: MEMCPY  Elapsed: 0.02506        MiB: 16.00000   Copy: 638.394 MiB/s
AVG     Method: DUMB    Elapsed: 0.09251        MiB: 16.00000   Copy: 172.950 MiB/s
AVG     Method: MCBLOCK Elapsed: 0.02463        MiB: 16.00000   Copy: 649.538 MiB/s
AVG     Method: MEMCPY  Elapsed: 0.00158        MiB: 1.00000    Copy: 632.031 MiB/s
AVG     Method: DUMB    Elapsed: 0.00573        MiB: 1.00000    Copy: 174.593 MiB/s
AVG     Method: MCBLOCK Elapsed: 0.00155        MiB: 1.00000    Copy: 645.870 MiB/s
Setting scaling_max_freq to 800000
AVG     Method: MEMCPY  Elapsed: 0.03072        MiB: 16.00000   Copy: 520.813 MiB/s
AVG     Method: DUMB    Elapsed: 0.18795        MiB: 16.00000   Copy: 85.128 MiB/s
AVG     Method: MCBLOCK Elapsed: 0.03077        MiB: 16.00000   Copy: 520.026 MiB/s
AVG     Method: MEMCPY  Elapsed: 0.00197        MiB: 1.00000    Copy: 507.537 MiB/s
AVG     Method: DUMB    Elapsed: 0.01177        MiB: 1.00000    Copy: 84.934 MiB/s
AVG     Method: MCBLOCK Elapsed: 0.00198        MiB: 1.00000    Copy: 506.175 MiB/s
Setting scaling_max_freq to 1000000
AVG     Method: MEMCPY  Elapsed: 0.03120        MiB: 16.00000   Copy: 512.885 MiB/s
AVG     Method: DUMB    Elapsed: 0.15305        MiB: 16.00000   Copy: 104.539 MiB/s
AVG     Method: MCBLOCK Elapsed: 0.03183        MiB: 16.00000   Copy: 502.723 MiB/s
AVG     Method: MEMCPY  Elapsed: 0.00198        MiB: 1.00000    Copy: 506.329 MiB/s
AVG     Method: DUMB    Elapsed: 0.00950        MiB: 1.00000    Copy: 105.304 MiB/s
AVG     Method: MCBLOCK Elapsed: 0.00194        MiB: 1.00000    Copy: 515.384 MiB/s
Setting scaling_max_freq to 1400000
AVG     Method: MEMCPY  Elapsed: 0.02481        MiB: 16.00000   Copy: 645.026 MiB/s
AVG     Method: DUMB    Elapsed: 0.11144        MiB: 16.00000   Copy: 143.572 MiB/s
AVG     Method: MCBLOCK Elapsed: 0.02606        MiB: 16.00000   Copy: 614.081 MiB/s
AVG     Method: MEMCPY  Elapsed: 0.00160        MiB: 1.00000    Copy: 625.117 MiB/s
AVG     Method: DUMB    Elapsed: 0.00691        MiB: 1.00000    Copy: 144.779 MiB/s
AVG     Method: MCBLOCK Elapsed: 0.00161        MiB: 1.00000    Copy: 622.239 MiB/s
Setting scaling_max_freq to 1725000
AVG     Method: MEMCPY  Elapsed: 0.02445        MiB: 16.00000   Copy: 654.298 MiB/s
AVG     Method: DUMB    Elapsed: 0.09257        MiB: 16.00000   Copy: 172.849 MiB/s
AVG     Method: MCBLOCK Elapsed: 0.02450        MiB: 16.00000   Copy: 653.125 MiB/s
AVG     Method: MEMCPY  Elapsed: 0.00159        MiB: 1.00000    Copy: 629.842 MiB/s
AVG     Method: DUMB    Elapsed: 0.00573        MiB: 1.00000    Copy: 174.520 MiB/s
AVG     Method: MCBLOCK Elapsed: 0.00156        MiB: 1.00000    Copy: 639.550 MiB/s
Setting scaling_max_freq to 600000
Setting scaling_max_freq to 1000000
AVG     Method: MEMCPY  Elapsed: 0.03004        MiB: 16.00000   Copy: 532.620 MiB/s
AVG     Method: DUMB    Elapsed: 0.15444        MiB: 16.00000   Copy: 103.601 MiB/s
AVG     Method: MCBLOCK Elapsed: 0.03030        MiB: 16.00000   Copy: 528.077 MiB/s
AVG     Method: MEMCPY  Elapsed: 0.00190        MiB: 1.00000    Copy: 526.704 MiB/s
AVG     Method: DUMB    Elapsed: 0.00955        MiB: 1.00000    Copy: 104.738 MiB/s
AVG     Method: MCBLOCK Elapsed: 0.00190        MiB: 1.00000    Copy: 525.873 MiB/s
Setting scaling_max_freq to 600000
Setting scaling_max_freq to 1400000
AVG     Method: MEMCPY  Elapsed: 0.02549        MiB: 16.00000   Copy: 627.734 MiB/s
AVG     Method: DUMB    Elapsed: 0.11149        MiB: 16.00000   Copy: 143.506 MiB/s
AVG     Method: MCBLOCK Elapsed: 0.02494        MiB: 16.00000   Copy: 641.424 MiB/s
AVG     Method: MEMCPY  Elapsed: 0.00159        MiB: 1.00000    Copy: 628.970 MiB/s
AVG     Method: DUMB    Elapsed: 0.00690        MiB: 1.00000    Copy: 144.892 MiB/s
AVG     Method: MCBLOCK Elapsed: 0.00160        MiB: 1.00000    Copy: 626.645 MiB/s
Setting scaling_max_freq to 600000
Setting scaling_max_freq to 1725000
AVG     Method: MEMCPY  Elapsed: 0.02506        MiB: 16.00000   Copy: 638.503 MiB/s
AVG     Method: DUMB    Elapsed: 0.09260        MiB: 16.00000   Copy: 172.785 MiB/s
AVG     Method: MCBLOCK Elapsed: 0.02467        MiB: 16.00000   Copy: 648.603 MiB/s
AVG     Method: MEMCPY  Elapsed: 0.00160        MiB: 1.00000    Copy: 625.352 MiB/s
AVG     Method: DUMB    Elapsed: 0.00574        MiB: 1.00000    Copy: 174.110 MiB/s
AVG     Method: MCBLOCK Elapsed: 0.00160        MiB: 1.00000    Copy: 623.247 MiB/s
Setting scaling_max_freq to 600000
Setting scaling_max_freq to 1400000
AVG     Method: MEMCPY  Elapsed: 0.02548        MiB: 16.00000   Copy: 628.047 MiB/s
AVG     Method: DUMB    Elapsed: 0.11193        MiB: 16.00000   Copy: 142.944 MiB/s
AVG     Method: MCBLOCK Elapsed: 0.02506        MiB: 16.00000   Copy: 638.463 MiB/s
AVG     Method: MEMCPY  Elapsed: 0.00158        MiB: 1.00000    Copy: 634.880 MiB/s
AVG     Method: DUMB    Elapsed: 0.00690        MiB: 1.00000    Copy: 144.938 MiB/s
AVG     Method: MCBLOCK Elapsed: 0.00158        MiB: 1.00000    Copy: 634.276 MiB/s
Setting scaling_max_freq to 1000000
Setting scaling_max_freq to 1000000
AVG     Method: MEMCPY  Elapsed: 0.02992        MiB: 16.00000   Copy: 534.784 MiB/s
AVG     Method: DUMB    Elapsed: 0.15168        MiB: 16.00000   Copy: 105.486 MiB/s
AVG     Method: MCBLOCK Elapsed: 0.02995        MiB: 16.00000   Copy: 534.206 MiB/s
AVG     Method: MEMCPY  Elapsed: 0.00197        MiB: 1.00000    Copy: 507.382 MiB/s
AVG     Method: DUMB    Elapsed: 0.00952        MiB: 1.00000    Copy: 105.087 MiB/s
AVG     Method: MCBLOCK Elapsed: 0.00192        MiB: 1.00000    Copy: 521.921 MiB/s
Setting scaling_max_freq to 1000000
Setting scaling_max_freq to 1400000
AVG     Method: MEMCPY  Elapsed: 0.02478        MiB: 16.00000   Copy: 645.643 MiB/s
AVG     Method: DUMB    Elapsed: 0.11017        MiB: 16.00000   Copy: 145.224 MiB/s
AVG     Method: MCBLOCK Elapsed: 0.02496        MiB: 16.00000   Copy: 641.123 MiB/s
AVG     Method: MEMCPY  Elapsed: 0.00167        MiB: 1.00000    Copy: 600.060 MiB/s
AVG     Method: DUMB    Elapsed: 0.00691        MiB: 1.00000    Copy: 144.810 MiB/s
AVG     Method: MCBLOCK Elapsed: 0.00160        MiB: 1.00000    Copy: 624.415 MiB/s
Setting scaling_max_freq to 1000000
Setting scaling_max_freq to 1725000
AVG     Method: MEMCPY  Elapsed: 0.02456        MiB: 16.00000   Copy: 651.399 MiB/s
AVG     Method: DUMB    Elapsed: 0.09137        MiB: 16.00000   Copy: 175.106 MiB/s
AVG     Method: MCBLOCK Elapsed: 0.02461        MiB: 16.00000   Copy: 650.237 MiB/s
AVG     Method: MEMCPY  Elapsed: 0.00157        MiB: 1.00000    Copy: 637.471 MiB/s
AVG     Method: DUMB    Elapsed: 0.00574        MiB: 1.00000    Copy: 174.292 MiB/s
AVG     Method: MCBLOCK Elapsed: 0.00155        MiB: 1.00000    Copy: 645.828 MiB/s
Setting scaling_max_freq to 384000
Setting scaling_max_freq to 1725000
AVG     Method: MEMCPY  Elapsed: 0.02459        MiB: 16.00000   Copy: 650.753 MiB/s
AVG     Method: DUMB    Elapsed: 0.09255        MiB: 16.00000   Copy: 172.877 MiB/s
AVG     Method: MCBLOCK Elapsed: 0.02445        MiB: 16.00000   Copy: 654.341 MiB/s
AVG     Method: MEMCPY  Elapsed: 0.00155        MiB: 1.00000    Copy: 646.162 MiB/s
AVG     Method: DUMB    Elapsed: 0.00578        MiB: 1.00000    Copy: 172.927 MiB/s
AVG     Method: MCBLOCK Elapsed: 0.00150        MiB: 1.00000    Copy: 667.824 MiB/s
Setting scaling_max_freq to 370000

Anyway no idea why the DUMB method is a direct way to get the current freq of the system... It does never fail.... for some reasons....

it seems a bit odd it got slower? your first run at 1.4g it hit 750mib, then at 1.7 it only did 640mib and after that everything seemed a bit slower.

fwiw mine hits 780mib at 1.7g, i'm on a few months old master build - have my own custom branch but its ~r17783.

is memcpy and memblock important? this with the l2 workaround reverted... will check if i gets different results with that up... Still can't understand why dumb values are correct but memcpy aren't...

Quiet here, any update on the scaling issue/crash?
My R7800 just passed 100 days of uptme with minfreq raised to 800Mhz... so I have to say it's stable as a rock with the workaround.
I'm also using the ath10k driver and firmware-5.bin_10.4-3.9.0.2-00156 FW from QCA.

2 Likes

I've been running mine with the performance governor always at max 1.7GHz for years without any problems. Not sure it's worth the constant scaling, it's not a phone running on battery and the temp increase is negligible 2-3C in my experience.
Also on mainline driver and firmware :+1:

Now, I hope someone will figure out a fix for the AQL issue ... I'm stuck on 21.02.1 because of it :frowning:

1 Like

Hello
I'm facing a constant kernel oops with IPSec/Strongswan on 5.15 (since .33).
The crash occurs when doing a NAT mapping event (client switches to another IP) in xfrm part of the kernel: https://github.com/strongswan/strongswan/issues/992

I spent something like 24 hours on this issue and I now think it might be related to some patches applied on the kernel.
Does "someone who knows" could please take a look ?

To keep the temps down, if you're running performance governor or other higher clock speeds, I noticed that putting the router on a "vented" surface instead of a flat table helps quite a lot with the temps.
I have mine on a window sill that has gaps between the wood pieces.

1 Like

My router is placed on a Foot stove (Netherland's model) because then I could use the holes on the top to route power and network cables for 2 SBCs stored in it.
I also think it looks kind of 'cute'.

Never thought (about) that it would (also) help with cooling :slight_smile:

If anyone wants to test i'm currently cleaning the 5.15 patches
(so to test this enable testing kernel version)

I'm trying a different implementation of the cache scaling driver... No fixes about the power loss but it's just a cleanup where i replace patches with upstream version.

Would love some feedback
https://git.openwrt.org/?p=openwrt/staging/ansuel.git;a=shortlog;h=refs/heads/ipq806x-cleanup

2 Likes

image

no idea if it's luck but the changes are producing more uptime...

would love more testing tho....

4 Likes

Hey @quarky, I noticed sometimes my Wifi becomes very slow, it's hardly usable, it goes away after maybe 5-10 minutes. Sounds familiar? :wink:

I see this when my R7800 is running the virtual time-based airtime scheduler. Since it was reverted back to the round-robin scheduler plus enhancement patch my R7800 appears to be good.

Were there any other workaround other than patching? I don't quite remember.
I don't feel like poking around too much since the build is very stable apart from the occasional wifi slowness.

Restarting WiFi clears up the problem for me, so maybe you may want to write a script to restart WiFi every day?