Solved : MR7350's and (suspected) memory issues

TL;DR: What is the best way to manage memory usage on my MR7350? Maybe others out there running ath11k on 512MB routers could share.

===========================================

I have two MR7350’s that I use as bridged APs. I had flashed them w/ a snapshot that was available at the time that I bought them (early Dec 2025).

They worked great, although, as some users here note, the ath11k drivers seem to (over)utilize memory. The 512MB of RAM onboard is reported as markedly less than that. [Yes, each WiFi client attaching exacts a chunk of RAM… you can watch available RAM drop as clients latch on…]

They were set up as bridged AP’s, with a single 5Ghz SSID and two 2.4Ghz SSID’s. I also had usteer running on them to handle the roaming/fast-switching function. They also served as Ethernet switches to connect computers and devices. I set up ZRAM with defaults (16MB and LZO).

After 12.0.rc5 came out, I upgraded to it and everything seemed fine. Two days later, I noticed my Debian build station had a strange ip address and something wasn’t right. It turns out both routers had soft-bricked at roughly the same time. I initially thought that they were bricked completely, but I got them booting again. My observations lead me to believe that they were just running out of memory.

When I restored them with the latest saved config, they each soft-bricked again within 5 minutes. I got around this by disabling the 5Ghz radio and only activating one of the two 2.4Ghz SSID’s. This seems to work (knock on wood), and memory usage is staying within bounds ATM.

ALL services are disabled except the bare minimum necessary to provide 802.11rkv, and ZRAM.

It seems kind of draconian to have to cut back a router to JUST a single 2.4 SSID to keep it from running out of RAM.

Ideas on how to get around this and make this (without tossing the MR7350’s)?

================================================================

Solutions/findings:

  1. This was not a OOM problem, for the greatest part. Kernel messages pointed to questionable interrupts being thrown around. Sifting through some github and forum posts, it seems the problem may have been with “packet steering” (PS) in Network>Interfaces>Global Network options. Once I disabled PS, I had no more issues. This has not appreciably affected network speed for me, wired or wireless.

  2. For my use case, ZRAM swap turns out to be essential, and works very well.

    • set vm.swappiness = 100 with sysctl and make it permanent in /etc/sysctl.conf
    • swap settings in /etc/config/system:
      • config system ...
        option zram_comp_algo 'lzo' NOTE: my 24.10.x config was LZ4
        option zram_size_mb '512'
    • While 512MB seemed like an inflated amount, it has worked well. I have about 30 IoT devices, and this router ends up handling about a dozen of them usually.
    • there was also a change in defaults from 24.10.5 to 25.12.0. LZ4/ZSTD were removed from ZRAM swap options, leaving only LZO. I did see an error pop up:
      • Errors
        zram_start: activating '/dev/zram0' for swapping (189 MiB)
        zram_reset: enforcing defaults via /sys/block/zram0/reset
        zram_comp_algo: set compression algorithm 'lzo' for zram '/dev/zram0'
        I didn't interpret this error correctly or see the connection to the change in the ZRAM swap defaults - an oversight on my part.
  3. There is a replacement for qca_nss_dp and qca_ssdkin the works. I don’t know what the timeline is, but progress is being made and there is mention of the MR7350.

  4. I am unsure if Hardware Offloading can help with speed. In my understanding, it is performed w/o any CPU draw, so I may try that and see (using iperf) any difference in performance.

Tried kmod-zram ?

3 Likes

That’s a good catch… I did have that enabled… I’ve updated the original post. Thank you.

Q: What are the preferred settings? zram is set with defaults (16MB and LZO compression) .

Hi there,
I think this is a typical limitation with Qualcomm hardware... it also happens on other devices, like the Mi AX3600 I'm going to put as an example.

The official OpenWrt branches don't have access to the proprietary Qualcomm binaries/sources needed to "squeeze" tis SoC's, WLAN chipsets and these kind of components.
Using the generic ath11k driver without hardware offloading may leave them more exposed to certain documented issues (CVEs) that both your MR7350 and mine AX3600 share which fits perfectly with what you're describing (Out of bound memory corruptions when handling multiple phy-ap's/connections, etc).

I'm not familiarised with your specific model, but it also appears to have a separate CPU/ hardware block for offloading (NSS) for offloading. For the AX3600, there are community builds that include all the Qualcomm sources to enable this hardware acceleration. You might want to check if something similar exists for your device.

Hope that adds some help!

1 Like

No idea, I don't use it.

This might be good news (ath11k smallbuffers), if it gets accepted https://github.com/openwrt/openwrt/pull/21495.

You could also dump your MR7350 and buy the $30 SAX1V1K on eBay, it got 2GB RAM :slight_smile:

2 Likes

How did you get around this? Any fixes you could arrive at?

@aseem00r , I’m currently trying a possible fix to the problems. I thought it was a memory (oom) problem, but it now seems like it was a kernel panic, perhaps caused by using openwrt’s packet steering. I have posted about it and will answer back here with whatever responses I see in that thread.


Progress reported toward the end of the topmost post.

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