Dynalink DL-WRX36 Askey RT5010W IPQ8072A technical discussion

After installing r23051 yesterday, I also went ahead and disabled both Software flow offloading and Hardware flow offloading. My router has been up (surprisingly) since that time. Now I don't know IF it is the r23051 or the options I disabled.

Hardware Offloading is not supported

2 Likes

Hardware offloading not supported for ipq807x, but there are some private builds that have NSS offloading enabled. It’s a bit “hacky” and still being developed, but it works.

Software offloading is a mixed bag in my experience. It can definitely boost throughout, but can also introduce stability concerns (in my experience) depending on one’s setup and config.

3 Likes

Software offloading is just nftables rules in fw4

# nft list ruleset | head
table inet fw4 {
	flowtable ft {
		hook ingress priority filter
		devices = { lan1, lan2, lan3, lan4, phy0-ap0, pppoe-VDSL, wan }
		counter
	}

	chain input {
		type filter hook input priority filter; policy drop;
		iifname "lo" accept comment "!fw4: Accept traffic from loopback"
2 Likes

Forgot to mention in my previous post - software offload also can negate SQM for those that could benefit from it.

2 Likes

How do I reflash openwrt with Serial? I can't find clear information anywhere.

If the information was there, I wouldn't be asking here.

I am also seeing this limitation. I can get 1.5Gbps on download, but hardly anything past 400Mbps on upload. (2Gb WAN).
With another router, I can get pretty simmetric speeds (~1.1Gbps)

If you're missing something, ask specific questions...

Yesterday I did some measurements via samba (usb3 ssd connected to the router).

Result -> upload is a bit faster (near gigabit) than download

I guess the iPerf measurements are miss leading

4 posts were split to a new topic: Extroot configuration across sysupgrades?

Option 1 in the link is what you are looking for

I think the ath11k drivers may be a bit flaky.

Some things I've observed. I've been building from master:

  • Inconsistent upload speeds. Drops off rapidly with distance while download speeds are less affected.

  • 160 Mhz is flaky, especially upload to the router. After initial association with an AX210 client, I've been able to get approx 1.25 Ghz upload and download using iperf3 within a few feet of the router!! However, after a few tries the upload speed falls off a cliff and becomes unusable.

  • Doesn't run very well when trying to configure as a wifi station/client. I tried to see how well the dynalink works as a wifi6-eth(2.5gbp) bridge device using 4x4 160Mhz, but the connection was unstable. Not much luck w/ 80Mhz as well. Speeds kept dropping to zero.

Looking at whats been cooking on ath.git repo, almost all the latest, greatest from ath-next branch is in the openwrt tree already. But there is quite a lot of development going on there for an SOC thats been out for years. They do support multiple chips with the same codebase I suppose, but the recent commit messages don't look like its much to do with adding HW support. Most of its refactoring and bug fixing. I don't know if that's a good thing or a bad thing at this point. Do commercial router firmwares use different drivers and firmware blobs than the opensource upstream linux ones ?? I don't see how commercial products based on this driver could be a success with this level of stability/performance. Maybe that why this router is being dumped on amazon for 80 bucks?

Silver lining is that it does look like the driver is being worked on. FW blob is getting updated. When the wifi works, its blazing fast and stable so there is much potential here. The openwrt bits have been rock solid. Kudos to all the devs who got this working!

2 Likes

Could you kindly elaborate??

TIA

Ι answered to another user asking how to flash via serial

I have literally just unboxed one, opened the case, fitted a JST plug with flyleads, put the thing back together with the flyleads out through a slot in the base, connected to a USB to serial adapter and then followed the instructions to the letter.

I now have a working device with OpenWRT on it.

Maybe you need to explain exactly where you're struggling?

Very close to your solution, but distributes all interrupts except for ce* (changing affinity on these will crash the wifi firmware) and arch* (these are spread around correctly already).
I put this script as a service in /etc/init.d/irqbalance-manual and enable it (service irqbalance-manual enable):

#!/bin/sh /etc/rc.common

START=13
USE_PROCD=1
AFFINITY_MIN=2
AFFINITY_MAX=8
AFFINITY_ALL="$(printf %x $(( AFFINITY_MAX * 2 - 1 )))"

set_affinities() {
	local callback="$1" irq desc ret=0
	sed -nre 's!^[[:space:]]*([0-9]+):[[:space:]]+.*[[:space:]]GIC-0[[:space:]]+[0-9]+[[:space:]]+(Level|Edge)[[:space:]]+(.+)$!\1 \3! p' /proc/interrupts | \
	while read irq desc
  	do
		case "$desc" in
			arch*)	;;
			ce*)	;;
			*)	"$callback" "/proc/irq/$irq/smp_affinity" || ret=1 ;;
		esac
	done
	return $ret
}

set_affinity_per_cpu() {
	local procfile="$1" ret=0
	echo "$AFFINITY" > "$procfile" || ret=$?
	if [ $AFFINITY -ge $AFFINITY_MAX ]
	then
		AFFINITY=$AFFINITY_MIN
	else
		AFFINITY=$(( AFFINITY * 2 ))
	fi
	return $ret
}

set_affinity_shared() {
	local procfile="$1" ret=0
	echo "$AFFINITY_ALL" > "$procfile" || ret=$?
	return $ret
}

start_service() {
	reload
}

reload_service() {
	AFFINITY=$AFFINITY_MIN
	set_affinities set_affinity_per_cpu
}

stop_service() {
	set_affinities set_affinity_shared
}

/proc/interrupts:

           CPU0       CPU1       CPU2       CPU3       
  9:          0          0          0          0     GIC-0  39 Level     arch_mem_timer
 13:    6599565    6186415    7471758   16583578     GIC-0  20 Level     arch_timer
 16:          2          0          0          0     GIC-0 354 Edge      smp2p
 17:          0          0          0          0     GIC-0 216 Level     4a9000.thermal-sensor
 18:          0          0          0          0     GIC-0 239 Level     bam_dma
 21:          0          0          0          0     GIC-0 270 Level     bam_dma
 22:          5          0          0          0     GIC-0 340 Level     msm_serial0
 23:      35107          0          0     110212     GIC-0 178 Level     bam_dma
 24:          0          0          0          0     GIC-0  35 Edge      wdt_bark
 25:          0          0          0          0     GIC-0 357 Edge      q6v5 wdog
 29:          5          0          0          0     GIC-0 348 Edge      ce0
 30:   12446392          0          0          0     GIC-0 347 Edge      ce1
 31:   18653030          0          0          0     GIC-0 346 Edge      ce2
 32:     473055          0          0          0     GIC-0 343 Edge      ce3
 34:          0          0          0          0     GIC-0 443 Edge      ce5
 36:     677883          0          0          0     GIC-0  72 Edge      ce7
 38:          0          0          0          0     GIC-0 334 Edge      ce9
 39:          0          0          0          0     GIC-0 333 Edge      ce10
 40:          0          0          0          0     GIC-0  69 Edge      ce11
 47:          0          0          0          0     GIC-0 323 Edge      reo2ost-exception
 48:          0     187429          0          0     GIC-0 322 Edge      wbm2host-rx-release
 49:          0          0        577          0     GIC-0 321 Edge      reo2host-status
 50:          0          0          0     327051     GIC-0 320 Edge      reo2host-destination-ring4
 51:          0     219132          0          0     GIC-0 271 Edge      reo2host-destination-ring3
 52:          0          0     226751          0     GIC-0 268 Edge      reo2host-destination-ring2
 53:          0          0          0    2003466     GIC-0 267 Edge      reo2host-destination-ring1
 57:          2   13640697          0          0     GIC-0 263 Edge      ppdu-end-interrupts-mac3
 58:          0          0          0          0     GIC-0 262 Edge      ppdu-end-interrupts-mac2
 59:          3          0          0    7853447     GIC-0 261 Edge      ppdu-end-interrupts-mac1
 60:          1          0          0          0     GIC-0 260 Edge      rxdma2host-monitor-status-ring-mac3
 61:          0          0          0          0     GIC-0 256 Edge      rxdma2host-monitor-status-ring-mac2
 62:          1          0          0          0     GIC-0 255 Edge      rxdma2host-monitor-status-ring-mac1
 63:          1          0          0          0     GIC-0 235 Edge      host2rxdma-host-buf-ring-mac3
 64:          0          0          0          0     GIC-0 215 Edge      host2rxdma-host-buf-ring-mac2
 65:          0          0          0          0     GIC-0 212 Edge      host2rxdma-host-buf-ring-mac1
 66:          0          0          0          0     GIC-0 211 Edge      rxdma2host-destination-ring-mac3
 67:          0          0          0          0     GIC-0 210 Edge      rxdma2host-destination-ring-mac2
 68:          0          0          0          0     GIC-0 209 Edge      rxdma2host-destination-ring-mac1
 73:          0      54076          0          0     GIC-0 191 Edge      wbm2host-tx-completions-ring3
 74:          0          0    1571553          0     GIC-0 190 Edge      wbm2host-tx-completions-ring2
 75:          0          0          0      13208     GIC-0 189 Edge      wbm2host-tx-completions-ring1
 77:         16          0          0          0     GIC-0  47 Edge      cpr3
 78:          0          0    4790717          0     GIC-0 377 Level     edma_txcmpl
 79:          0          0          0          0     GIC-0 385 Level     edma_rxfill
 80:          0    5254738          0          0     GIC-0 393 Level     edma_rxdesc
 81:          0          0          0          0     GIC-0 376 Level     edma_misc
 82:          0          0          0          0  pmic_arb 51380237 Edge      pm-adc5
 83:          0          0          0          0     smp2p   0 Edge      q6v5 fatal
 84:          1          0          0          0     smp2p   1 Edge      q6v5 ready
 85:          0          0          0          0     smp2p   2 Edge      q6v5 handover
 86:          0          0          0          0     smp2p   3 Edge      q6v5 stop
 87:          0          0          0          0   msmgpio  34 Edge      keys
 88:          0          0          0          0   msmgpio  63 Edge      keys
 89:          0          0          0          0     GIC-0 172 Level     xhci-hcd:usb1
 90:         63          0          0          0     GIC-0 353 Edge      glink-native
IPI0:      9552       5659      11830      13262       Rescheduling interrupts
IPI1:   6229227   11523719   10657244    2664602       Function call interrupts
IPI2:         0          0          0          0       CPU stop interrupts
IPI3:         0          0          0          0       CPU stop (for crash dump) interrupts
IPI4:         0          0          0          0       Timer broadcast interrupts
IPI5:      4397      11996       6132       5917       IRQ work interrupts
IPI6:         0          0          0          0       CPU wake-up interrupts
Err:          0
2 Likes

I've noticed on openwrt as you, on ax3600 and ax9000 at a distance the upload is awful on Macbooks. Was going to investigate more and report but as you've noticed it seems maybe to be a more common issue.

In my case, an AX9000 on stock I can get (as an AP, connecting with a wired PC) with iperf3 about 2-300 Mbps upload, which matches an Asus AX88U in the same location (routers/AP in living room, testing from bedroom, through 1 plasterbord & 1 concrete wall, maybe 10m). With openwrt the upload is 10 Mbps at best. In the living room on openwrt the upload is similar to stock.

Tried with 2012 3x3 AC Macbook and 2022 2x2 AX Macbook both give similar results. With a Samsung Galaxy S8 (G950F) I can get ca 100+ Mbps upload testing with speedtest.net with openwrt so it seems to be openwrt combined with Macbooks in my limited testing where upload drops off heavily at range. Download matches stock at the same location.

Crashed the router 2 times when transferring files from usb, had to plug off - plug in the router.