MT6000 custom build with LuCi and some optimization - kernel 6.6.x

@pesa1234
testing out your rss patches in the 4.5.6 branch but doesn't seem to be working for me.
are you seeing increased throughput and/or lower cpu load when doing heavy receive terminating in the router?

Edit:
frank just pushed a new rss patch from mtk.
https://github.com/frank-w/BPI-Router-Linux/commit/7b109938db40ef47c8fff5ab700c091077a29872

1 Like

Thanks.
On 4.5.6.rss.mtk also WED is broken...
In 4.5.7.rss.mtk it is ok but on this I'm importing new patches like the one you mentioned...
So, work in progress and thanks for sharing!!!

6 Likes

I also think WED is broken when used on a dumb ap with Bridger on 4.5.5

@romanovj @glassdoor
Here:

These are the new patches:
[999-9902-1-mtk-ethernet-rss_20250109-2.patch]
[999-9902-2-mtk-ethernet-rss-mt7986-mt7981-fix.patch]
[999-9902-3-mtk-ethernet-rss-dbg.patch]

Can you please let me know if are right?

2 Likes

You should disable page_pool when xdp prog isn't loaded. Otherwise there is no benefits from this:

[PATCH] net: mtk_eth_soc: replace MTK_MAX_RX_LENGTH_2K by
 MTK_MAX_RX_LENGTH

disable page_pool using sysctl?

Update:
I now see the same issue that @glassdoor is seeing, i.e. I now see OoO with standard OpenWrt master tree build only with h/w flow offload via the SoC PPE engine for download (i.e. WAN to LAN direction.). I do not see any OoO packets with s/w flow offload or turning off flow offload. Tho. turning off flow offload limits the max bandwidth that the E8450 can support.

I still see OoO UDP packets reported by the iperf3 server when sending from LAN to WAN direction.

So what I did was to enable the mt7531 switch SA learning. Default behaviour for DSA architecture is to disable all SA leaning of the switch and depended on the Linux network stack to managed the FDB. My theory was that because the mt7531 switch does not have up to date FDB, it needs to send ARPs periodically and thus is causing OoO packet.

But I'm still scratching my head why the LAN->WAN direction is causing OoO packets.

@glassdoor, @pesa1234 are you folks running MTK's source tree and not the standard OpenWrt source? Do you know if your builds' mt7531 driver enabled the switched SA learning bit for all ports?

FYI, the disabling of SA learning bit seems to be also causing WiFi roaming issues, as the Linux kernel is not updating the switch's CPU port FDB. So once WiFi client roam, traffic from client will not flow until the router's FDB times out,

3 Likes

@pesa1234 looks very promising.initial impression are best I have seen.
can you help add+rebase these two patches

edit: I have already rebased the prefetch and xdp patches in my repo. thx,

Hi,

I'm very impressed with what you are doing in this thread. I do have a question though: are the changes that have been proven reliable and beneficial in this custom branch being upstreamed to standard openwrt?

I'm not personally interested in running unstable software for my router (and I suspect I'm not the only one) and it seems a shame if the results of these experiments never reach a broader audience.

While 23.05 with SQM-Cake and AQL seems to work perfectly fine for my 500/500 DOCSIS, I would love eventually seeing support for iBF etc in upstream OpenWrt.

3 Likes

Just tried to compile and install the latest next-r4.5.7.rss.mtk just to try the HQoS.
It looks like it is not working for me , or maybe I’m doing something wrong.


I have put 423Mbps just for testing purposes , it looks like my bandwidth (up/down) is not being limited at all (asymmetric 2.5/500)
Any suggestion ? (getting C on waveform +66 on upload )

Should I keep Hwrdare Offloading ON?


I just installed the image, but I have noticed that the HTTP server gives up sometimes, and I need to reboot the machine.

Sun Jan 12 12:37:18 2025 daemon.info procd: Instance uhttpd::instance1 s in a crash loop 6 crashes, 1122 seconds since last crash

Also noticed that with WED enabled, the Wi-Fi stops working after some time.
Tried to disable it and it seems to be fine atm.

Thanks guys

Have you included mtkhnat_util as a dependency?

Try compiling latest stable 4.5.6

1 Like

HQoS will be removed gives issue on WED and maybe not only...

4 Likes

Selecting via make menuconfig resulting in a .config with CONFIG_PACKAGE_mtkhnat_util=y
Already tried 4.5.6 , 4.5.7 , 4.5.8 same behavior

Ok , thanks @pesa1234 , I will revert back to the classic cake QoS
I’m testing the 4.5.8 right now , with Nginx instead of uHttpd. It looks like it is not crashing anymore.
The major problem I’m trying to solve now , is the Wi-Fi stopping working after some minutes , my mac and iphone can not complete the association (infinite spinning) despite the fact the logs says handshake completed
Trying to disable Wi-Fi Roaming in order to have as stock config as possible.

--update--
WED off , 802.11k,r off , WPA2 , still no wifi.
Trying to recompile 4.5.8 without mtkhnat_util and run it with no old-configurations , full stock

@romanovj


Jumbo packet is working!

Thanks

4 Likes

I installed the 4.5.8, made a clean install without any old configurations, configured the PPPoE connection , Wi-Fi networks to use WPA3, set the TX power, and entered the country code.

The clients are able to connect, but after three minutes, the connection completely dropped and no client is able to connect again.
No logs appear on logread , is the log module disbaled , should I do smth to see wifi logs ?

My setup differs from the standard configuration only for a Fritzbox with OpenWRT connected as a repeater via Ethernet.

Could someone suggest some debugging steps?
Otherwise Im force to install back the Semptember build
Thanks everyone

The .config file I used to compile it.

.config
CONFIG_TARGET_mediatek=y
CONFIG_TARGET_mediatek_filogic=y
CONFIG_TARGET_mediatek_filogic_DEVICE_glinet_gl-mt6000=y
CONFIG_ALL_KMODS=y
CONFIG_ALL_NONSHARED=y
CONFIG_DEVEL=y
CONFIG_BUSYBOX_CUSTOM=y
CONFIG_BPF_TOOLCHAIN_BUILD_LLVM=y
# CONFIG_BPF_TOOLCHAIN_NONE is not set
CONFIG_BUSYBOX_CONFIG_FEATURE_CROND_SPECIAL_TIMES=y
# CONFIG_BUSYBOX_CONFIG_FEATURE_EDITING_SAVEHISTORY is not set
CONFIG_BUSYBOX_CONFIG_FEATURE_SYSLOG_INFO=y
CONFIG_BUSYBOX_CONFIG_PKILL=y
CONFIG_HAS_BPF_TOOLCHAIN=y
CONFIG_IMAGEOPT=y
CONFIG_JSON_CYCLONEDX_SBOM=y
CONFIG_KERNEL_BUILD_DOMAIN="buildhost"
CONFIG_KERNEL_BUILD_USER="builder"
CONFIG_OPENSSL_ENGINE=y
CONFIG_OPENSSL_OPTIMIZE_SPEED=y
CONFIG_OPENSSL_WITH_ASM=y
CONFIG_OPENSSL_WITH_CHACHA_POLY1305=y
CONFIG_OPENSSL_WITH_CMS=y
CONFIG_OPENSSL_WITH_DEPRECATED=y
CONFIG_OPENSSL_WITH_ERROR_MESSAGES=y
CONFIG_OPENSSL_WITH_IDEA=y
CONFIG_OPENSSL_WITH_MDC2=y
CONFIG_OPENSSL_WITH_PSK=y
CONFIG_OPENSSL_WITH_SEED=y
CONFIG_OPENSSL_WITH_SRP=y
CONFIG_OPENSSL_WITH_TLS13=y
CONFIG_OPENSSL_WITH_WHIRLPOOL=y
# CONFIG_PACKAGE_apk-mbedtls is not set
CONFIG_PACKAGE_apk-openssl=y
CONFIG_PACKAGE_avahi-dbus-daemon=y
CONFIG_PACKAGE_blkid=y
CONFIG_PACKAGE_cgi-io=y
CONFIG_PACKAGE_dbus=y
# CONFIG_PACKAGE_dnsmasq is not set
CONFIG_PACKAGE_dnsmasq-full=y
CONFIG_PACKAGE_dnsmasq_full_auth=y
CONFIG_PACKAGE_dnsmasq_full_conntrack=y
CONFIG_PACKAGE_dnsmasq_full_dhcp=y
CONFIG_PACKAGE_dnsmasq_full_dnssec=y
CONFIG_PACKAGE_dnsmasq_full_nftset=y
CONFIG_PACKAGE_dnsmasq_full_noid=y
CONFIG_PACKAGE_dnsmasq_full_tftp=y
CONFIG_PACKAGE_ethtool=y
CONFIG_PACKAGE_ip-tiny=m
CONFIG_PACKAGE_kmod-asn1-decoder=y
CONFIG_PACKAGE_kmod-br-netfilter=y
CONFIG_PACKAGE_kmod-crypto-crc32=y
CONFIG_PACKAGE_kmod-crypto-ecb=y
CONFIG_PACKAGE_kmod-cryptodev=y
CONFIG_PACKAGE_kmod-fs-exfat=y
CONFIG_PACKAGE_kmod-fs-ext4=y
CONFIG_PACKAGE_kmod-fs-f2fs=y
CONFIG_PACKAGE_kmod-fs-ksmbd=y
CONFIG_PACKAGE_kmod-fs-netfs=y
CONFIG_PACKAGE_kmod-fs-ntfs3=y
CONFIG_PACKAGE_kmod-fs-smbfs-common=y
CONFIG_PACKAGE_kmod-fs-vfat=y
CONFIG_PACKAGE_kmod-ipt-core=y
CONFIG_PACKAGE_kmod-lib-crc16=y
CONFIG_PACKAGE_kmod-libphy=m
# CONFIG_PACKAGE_kmod-mt76 is not set
# CONFIG_PACKAGE_kmod-mt7601u is not set
# CONFIG_PACKAGE_kmod-mt7603 is not set
# CONFIG_PACKAGE_kmod-mt7615-firmware is not set
# CONFIG_PACKAGE_kmod-mt7622-firmware is not set
# CONFIG_PACKAGE_kmod-mt7663-firmware-ap is not set
# CONFIG_PACKAGE_kmod-mt7663-firmware-sta is not set
# CONFIG_PACKAGE_kmod-mt7663s is not set
# CONFIG_PACKAGE_kmod-mt7663u is not set
# CONFIG_PACKAGE_kmod-mt76x0e is not set
# CONFIG_PACKAGE_kmod-mt76x0u is not set
# CONFIG_PACKAGE_kmod-mt76x2 is not set
# CONFIG_PACKAGE_kmod-mt76x2u is not set
# CONFIG_PACKAGE_kmod-mt7915-firmware is not set
# CONFIG_PACKAGE_kmod-mt7916-firmware is not set
# CONFIG_PACKAGE_kmod-mt7921-firmware is not set
# CONFIG_PACKAGE_kmod-mt7921e is not set
# CONFIG_PACKAGE_kmod-mt7921s is not set
# CONFIG_PACKAGE_kmod-mt7921u is not set
# CONFIG_PACKAGE_kmod-mt7922-firmware is not set
# CONFIG_PACKAGE_kmod-mt7925-firmware is not set
# CONFIG_PACKAGE_kmod-mt7925e is not set
# CONFIG_PACKAGE_kmod-mt7925u is not set
# CONFIG_PACKAGE_kmod-mt7981-firmware is not set
# CONFIG_PACKAGE_kmod-mt7992-23-firmware is not set
# CONFIG_PACKAGE_kmod-mt7992-firmware is not set
# CONFIG_PACKAGE_kmod-mt7996-233-firmware is not set
# CONFIG_PACKAGE_kmod-mt7996-firmware is not set
# CONFIG_PACKAGE_kmod-mt7996e is not set
CONFIG_PACKAGE_kmod-nf-conntrack-netlink=y
CONFIG_PACKAGE_kmod-nf-ipt=y
CONFIG_PACKAGE_kmod-nls-cp437=y
CONFIG_PACKAGE_kmod-nls-iso8859-1=y
CONFIG_PACKAGE_kmod-nls-ucs2-utils=y
CONFIG_PACKAGE_kmod-nls-utf8=y
CONFIG_PACKAGE_kmod-oid-registry=y
CONFIG_PACKAGE_kmod-phy-aquantia=m
CONFIG_PACKAGE_kmod-scsi-core=y
CONFIG_PACKAGE_kmod-usb-storage=y
CONFIG_PACKAGE_kmod-usb-storage-extras=y
CONFIG_PACKAGE_kmod-usb-storage-uas=y
CONFIG_PACKAGE_ksmbd-avahi-service=y
CONFIG_PACKAGE_ksmbd-server=y
CONFIG_PACKAGE_libatomic=y
CONFIG_PACKAGE_libavahi-dbus-support=y
CONFIG_PACKAGE_libbpf=m
CONFIG_PACKAGE_libdaemon=y
CONFIG_PACKAGE_libdbus=y
CONFIG_PACKAGE_libelf=m
CONFIG_PACKAGE_libevdev=y
CONFIG_PACKAGE_libexpat=y
CONFIG_PACKAGE_libgmp=y
CONFIG_PACKAGE_liblucihttp=y
CONFIG_PACKAGE_liblucihttp-ucode=y
# CONFIG_PACKAGE_libmbedtls is not set
CONFIG_PACKAGE_libminiupnpc=m
CONFIG_PACKAGE_libnatpmp=m
CONFIG_PACKAGE_libnetfilter-conntrack=y
CONFIG_PACKAGE_libnettle=y
CONFIG_PACKAGE_libnfnetlink=y
CONFIG_PACKAGE_libnl-core=y
CONFIG_PACKAGE_libnl-genl=y
CONFIG_PACKAGE_libopenssl=y
CONFIG_PACKAGE_libopenssl-conf=y
CONFIG_PACKAGE_libopenssl-devcrypto=y
CONFIG_PACKAGE_libopenssl-legacy=y
CONFIG_PACKAGE_libpcap=m
CONFIG_PACKAGE_libudev-zero=y
CONFIG_PACKAGE_libusb-1.0=y
# CONFIG_PACKAGE_libustream-mbedtls is not set
CONFIG_PACKAGE_libustream-openssl=y
CONFIG_PACKAGE_libxdp=m
CONFIG_PACKAGE_luci=y
CONFIG_PACKAGE_luci-app-advanced=y
CONFIG_PACKAGE_luci-app-firewall=y
CONFIG_PACKAGE_luci-app-ksmbd=y
CONFIG_PACKAGE_luci-app-package-manager=y
CONFIG_PACKAGE_luci-app-zerotier=m
CONFIG_PACKAGE_luci-base=y
CONFIG_PACKAGE_luci-light=y
CONFIG_PACKAGE_luci-mod-admin-full=y
CONFIG_PACKAGE_luci-mod-network=y
CONFIG_PACKAGE_luci-mod-status=y
CONFIG_PACKAGE_luci-mod-system=y
CONFIG_PACKAGE_luci-proto-ipv6=y
CONFIG_PACKAGE_luci-proto-ppp=y
CONFIG_PACKAGE_luci-theme-bootstrap=y
#CONFIG_PACKAGE_mtkhnat_util=y
CONFIG_PACKAGE_qosify=m
CONFIG_PACKAGE_rpcd=y
CONFIG_PACKAGE_rpcd-mod-file=y
CONFIG_PACKAGE_rpcd-mod-iwinfo=y
CONFIG_PACKAGE_rpcd-mod-luci=y
CONFIG_PACKAGE_rpcd-mod-rrdns=y
CONFIG_PACKAGE_rpcd-mod-ucode=y
CONFIG_PACKAGE_tc-tiny=m
CONFIG_PACKAGE_ucode-mod-html=y
CONFIG_PACKAGE_ucode-mod-math=y
CONFIG_PACKAGE_uhttpd=y
CONFIG_PACKAGE_uhttpd-mod-ubus=y
CONFIG_PACKAGE_usbids=y
CONFIG_PACKAGE_usbutils=y
# CONFIG_PACKAGE_wpad-basic-mbedtls is not set
CONFIG_PACKAGE_wpad-openssl=y
CONFIG_PACKAGE_wsdd2=y
CONFIG_PACKAGE_xdp-filter=m
CONFIG_PACKAGE_xdp-loader=m
CONFIG_PACKAGE_xdpdump=m
# CONFIG_PACKAGE_yafut is not set
CONFIG_PACKAGE_zerotier=m
CONFIG_TARGET_OPTIMIZATION="-O2 -pipe -mcpu=cortex-a53"
CONFIG_TARGET_OPTIONS=y
CONFIG_USE_LLVM_BUILD=y
CONFIG_VERSIONOPT=y
CONFIG_VERSION_BUG_URL=""
CONFIG_VERSION_CODE=""
CONFIG_VERSION_CODE_FILENAMES=y
CONFIG_VERSION_DIST="OpenWrt"
CONFIG_VERSION_FILENAMES=y
CONFIG_VERSION_HOME_URL=""
CONFIG_VERSION_HWREV=""
CONFIG_VERSION_MANUFACTURER=""
CONFIG_VERSION_MANUFACTURER_URL=""
CONFIG_VERSION_NUMBER=""
CONFIG_VERSION_PRODUCT=""
CONFIG_VERSION_REPO="https://raw.githubusercontent.com/pesa1234/MT6000_cust_build/refs/heads/main"
CONFIG_VERSION_SUPPORT_URL=""
CONFIG_ZLIB_OPTIMIZE_SPEED=y
# CONFIG_PACKAGE_dnsmasq_full_dhcpv6 is not set
CONFIG_PACKAGE_mt7601u-firmware=m
CONFIG_PACKAGE_kmod-wireguard=y
CONFIG_PACKAGE_luci-proto-wireguard=y
CONFIG_PACKAGE_wireguard-tools=y
CONFIG_PACKAGE_luci-app-sqm=y
CONFIG_PACKAGE_sqm-scripts=y

do you edit .config manually?

yes just added at the and of your last .config on github

CONFIG_PACKAGE_kmod-wireguard=y
CONFIG_PACKAGE_luci-proto-wireguard=y
CONFIG_PACKAGE_wireguard-tools=y
CONFIG_PACKAGE_luci-app-sqm=y
CONFIG_PACKAGE_sqm-scripts=y

after that I run make menuconfig and hit save , after saving the file is formatted properly

It's better to bench with iperf3 with 1500, 3000, 7500, 9000 mtu.

@element0xE
immagine

OK, I'll do it! In any case I get some issue I let you know.

Thanks