Users needed to test Wi-Fi stability on Linksys WRT3200ACM & WRT32X on OpenWrt 21.02

Oh yes, WRT1900ACS is impacted. I somehow managed to minimize occurences/or got rid of it (I thought it already and then boom, it happened again), but it was present.

That's been my experience too. WRT1900ACS is definitely impacted.

1 Like

Try this cowwoc.

  1. remove wpad-basic-wolfssl, install wpad-basic (you have to be connected via cable)
  2. add the following line to /etc/rc.local (before exit 0)
    echo "0" >> /sys/kernel/debug/ieee80211/phy0/mwlwifi/tx_amsdu && echo "0" >> /sys/kernel/debug/ieee80211/phy1/mwlwifi/tx_amsdu && logger "AMSDU Disabled"
  3. reboot

The wifi cutouts (device stays connected to wifi, but cannot even reach router) stopped almost completely, I haven't had a single cutout since I had added above line to /etc/rc.local. Not saying that it's 100% fixed, but it looks like so or very closely to 100%.

Updating the module mac80211.ko directly, extracted from the ipk from @cotequeiroz and copied over the existing mac80211.ko module on 21.02.1 has been successful.

This is very easily the best wireless experience I have ever had on my iPhone XR with my WRT3200ACM. The wireless cutouts are gone, absolutely. But everything in general is just smoother and faster.

I have experienced a problem with the ipk installation, though. No errors, but opkg would always choose to download and install mac80211 from OpenWrt server instead.

EDIT: The only success that I have with replacing the mac80211 package via opkg is prior to opkg update with the following command:

opkg install ./kmod-mac80211_5.4.154+5.10.68-1-1_arm_cortex-a9_vfpv3-d16.ipk --force-reinstall

So if you try to run that after updating the opkg package lists, it will forcefully download the package from OpenWrt servers and give you the bad module with wireless cutouts. The command absolutely has to be done before updating opkg lists.

2 Likes

Thanks for tracking this down. I'm pretty sure that this is a regression in mac80211, since mwlwifi is not the only driver relying on being able to change params.ssn. I believe the ability to change it is by design, and the commit that you found broke it.

10 Likes

I will take care of fixing this upstream (and backporting the fix to OpenWrt)

9 Likes

I sent a fix upstream and pushed it to my staging tree at https://git.openwrt.org/?p=openwrt/staging/nbd.git;a=summary
Please run a quick test to make sure it fixes the issue

9 Likes

@cotequeiroz Would you be able to create a mac80211 ipk for 21.02.1 based on the upstreamed patch from Felix?

Link: https://git.openwrt.org/?p=openwrt/staging/nbd.git;a=blob_plain;f=package/kernel/mac80211/patches/subsys/305-mac80211-fix-regression-in-SSN-handling-of-addba-tx.patch;h=dc8afb9186f25029312f85bca9b994fc3a604a66;hb=8e001a178219630a0c5254461e5d343f5f147c8e

I would like to test it thoroughly on 21.02.1 but simply don’t have a build environment. Thank you.

1 Like

Shouldn't the package get a PKG_RELEASE bump?

I've bumped it when building the 21.02.1 package for testing, to avoid the update problem @WildByDesign reported earlier.

This time, the kmod-cfg80211 package has changed as well. The packages are saved here:
https://drive.google.com/drive/folders/1bF_N41aQ3w58dRLn9sE28954McDh7pC9?usp=sharing

1 Like

I will bump PKG_RELEASE when I backport this to the 21.02 branch

2 Likes

Just got a confirmation that the fix works. I've pushed it to OpenWrt master and 21.02

12 Likes

Thank you so much guys. Looking forward to trying this out on the next OpenWRT release.

3 Likes

do you know if this patch was accepted into stable linux branch? I wish to see it reviewed before we have it openwrt.

I personally don't have any insight into the Linux kernel, sorry.

1 Like

I sent my patch to linux-wireless already. However, from here on it takes quite a bit of time until it hits Linux stable trees. First it has to be picked by Johannes Berg for and added to the mac80211 tree for 5.16. From there it has to go into Linus' tree, and only then can it be picked up for inclusion into stable trees. That process often takes more than just a few days.
I tagged the patch with Cc: stable@..., so it will automatically be picked up once it hits mainline.
That said, I expect my patch to be accepted, since it's a simple and obvious fix for the regression, that's why I pushed it to OpenWrt master and 21.02 already.

10 Likes

@nbd thanks a lot for taking this to the linux-stable@. I didn't look into, though hope you did it right and we will get your patch upstreamed, thus credible openwrt changes. I have couple of 3200acm I'd like to run on a recent openwrt release. Sorry I couldn't test patches, though you guys made an incredible work to narrow down the issue. Looking forward to see fixed and working upcoming release. <3 Thanks!

An outstanding piece of troubleshooting.

Just wanted to say as a WRT3200ACM user I have been following the progress of this thread and dedication of the troubleshooting and fault finding undertaken to find the issue has been amazing.

Thanks to everyone who tested and helped find the offending commit, certainly looks promising for using 21.02 on the WRT3200ACM in the next release in a more stable fashion for wireless when it gets backported.

Amazing work.

2 Likes

Thanks to each and every one of you for pouring your time into troubleshooting and finally fixing the issue upstream. I added information on the main post with @nbd's replies.

Cheers!

2 Likes

Wow, that is really good news!

Just out of curiosity I extracted mac80211.ko from the ipk file and copied it to the /lib/modules/5.4.143/ folder, overwriting the existing mac80211.ko on my WRT3200ACM with Openwrt v21.02.0. After a restart Wifi was stable and any cutouts had gone.

I want to thank all involved in resolving this issue for their dedication and invested time and efforts. Thank you so much!!

Due to my lack of technical knowledge I did not understand all of the technical details discussed here. So, please, allow me one more question:

Retrospectively, was that issue caused by faulty Linksys firmware and this could be overcome by adapting the Linux kernel module? Or was the issue caused only by a regression flaw in the kernel module?

Thanks again to all
Alexander

1 Like