Brcmfmac fails to load [Asus PCE-AC88]

I am currently experiencing this issue with the kernel update - not sure if it’s related to v6.1.3 or the previous patch, as I have not updated in-between.

Basically, my Asus PCE-AC88 (1043:86fb) is not working anymore because brcmfmac fails to load with the following error:

[ 2740.647600] brcmfmac 0000:0d:00.0: brcmf_pcie_init_ringbuffers: invalid max_flowrings(264)

I was not able to pass a different max_flowrings=xxx parameter, because that info comes from a devinfo structure that the driver gets from the hardware directly, and it does not seem to me to be an overridable setting:
https://sbexr.rabexc.org/latest/sources/e0/6e32851d484b8b.html#004bf002004bf006

Is there anyone who could help with fixing this?

From the changelog:

From: Wright Feng <wright.feng@cypress.com>

[ Upstream commit 2aca4f3734bd717e04943ddf340d49ab62299a00 ]

When firmware hit trap at initialization, host will read abnormal
max_flowrings number from dongle, and it will cause kernel panic when
doing iowrite to initialize dongle ring.
To detect this error at early stage, we directly return error when getting
invalid max_flowrings(>256).

It seems that this parameter is not supposed to be changeable at all, and the patch now simply uses its value as a red herring to detect an error during initialisation. This could mean that my card driver has been trapping such error, but was safe to ignore in my case, and now with the new kernel it cannot be ignored anymore.
In such a case, the only solution is to wait for an updated firmware , which is a pain to obtain, because there is no direct, out-of-the-box way to use this card on Linux: the firmware must be obtained by extracting it from the driver for a Linux-based embedded system as described here.
EDIT: previous Kernel 6.1.1 (from stable) works, and works out of the box: there is no need to extract the firmware from another driver package because it comes with the standard linux-firmware and is the same as build 41700.
So, the workaround for now is to stick to 6.1.1…


Moderator edit: Use actual link instead of Google Webcache link

Reported upstream:
https://lore.kernel.org/all/4781984.GXAFRqVoOG@luna/

Devs replied upstream:
https://lore.kernel.org/all/3c470a48-e971-9991-e096-3adfe1cc4468@broadcom.com/

The patch will be provided with v6.2, hopefully back-ported to 6.1.x too…

There’s a bugzilla too:

https://bugzilla.kernel.org/show_bug.cgi?id=216894

Seen how it’s going, I guess the fix will be merged into kernel 6.1.7.

@philm @Yochanan kernel 6.1.7 is out but it still doesn’t include the patch on pcie.c. any chance to have manjaro proactively patching the next version of the kernel in testing? it’s just a trivial patch…
(maybe even apply it to 6.1.6…)

(note: i have indeed been able to patch it myself on my systems, I’m just suggesting an improvement for anyone in the manjaro community with an affected broadcom wireless device…)

patchfile:
0000-pcie.c.patch

--- drivers/net/wireless/broadcom/brcm80211/brcmfmac/pcie.c    	2023-01-13 21:08:02.231688150 +0100
+++ drivers/net/wireless/broadcom/brcm80211/brcmfmac/pcie.c.new	2023-01-13 21:09:07.763026939 +0100
@@ -1218,7 +1218,7 @@
 				BRCMF_NROF_H2D_COMMON_MSGRINGS;
 		max_completionrings = BRCMF_NROF_D2H_COMMON_MSGRINGS;
 	}
-	if (max_flowrings > 256) {
+	if (max_flowrings > 512) {
 		brcmf_err(bus, "invalid max_flowrings(%d)\n", max_flowrings);
 		return -EIO;
 	}

Please see:

Repo is here:

Patch landed to kernel 6.1.8 :smiley:

Currently have the same problem. (well the biggest problem is that I’m no Linux expert). On my previous distro (endeavour) where the wifi didn’t work out of the box, sudo pacman -R broadcom-wl-dkms used to do the trick.
With Manjaro, the PCE-AC88 worked out of the box until yesterday when I had a list of updates to apply and I just blindly clicked to update whatever.
It’s a shame the OS itself doesn’t have some process in the background to find and fix these types of issues. I’m sure it’s something small in the end but complete idiots like myself, who most of the time enjoys how this distro works through its GUI, have absolutely no idea how to hunt it down except for googling stuff for hours on end, and then end up unwittingly breaking something else while trying whatever lines of commands were suggested online.

Also, kernel 6.1.8 is not listed in the Manjaro Settings Manager. My current and recommended was 6.1.7-1. Next one up in the list is 6.2.0rc4-2 (experimental). I’ve installed that one and the problem isn’t gone yet.

6.1.8 just came out yesterday, it should be made available to manjaro repos very soon. is in unstable already!

1 Like

A post was split to a new topic: How can I update my kernel to the unstable version?

Thanks for the reply. It is surprising how quickly things move. For some reason it’s still not showing up on my list when I go to the settings manager | Kernel menu. This is what worked for me so far, might help those who -like me- only tinker in this stuff:
I used a phone with USB tethering;
6.1.7 was not working for me but 6.2.0rc4-2 was the only one newer than that and I installed it;
After rebooting the wifi still didn’t work so I went back and chose kernel 6.0.5_rt14-3;
Upon reboot, into the GrUB menu went to Advanced options and found this last kernel I installed;
Booted, WiFi worked again! Deleted all kernels above it and left it as it is. So far so good. Keep up the good work!

PS. if anyone needs me to test something on the PCE-AC88 let me know.

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