Bug 198089
Summary: | brcmfmac fails on ASUS T100TAM, apparently due to recent CLM download support changes | ||
---|---|---|---|
Product: | Networking | Reporter: | Robert R. Howell (rhowell) |
Component: | Wireless | Assignee: | networking_wireless (networking_wireless) |
Status: | RESOLVED CODE_FIX | ||
Severity: | normal | ||
Priority: | P1 | ||
Hardware: | All | ||
OS: | Linux | ||
Kernel Version: | 4.15-rc1 | Subsystem: | |
Regression: | Yes | Bisected commit-id: | |
Attachments: |
Patch which restores brcmfmac wireless using 4.15-rc1
Portion of dmesg output showing brcmfmac CLM errors |
Description
Robert R. Howell
2017-12-05 23:38:27 UTC
Created attachment 261049 [details]
Portion of dmesg output showing brcmfmac CLM errors
I've done some further testing of how the brcmf_c_process_clm_blob function fails, causing the above problem. I've attached the portion of dmesg containing all the brcmfmac messages when that happens. It appears that the 3rd line from the end of that dmseg file is the first relevant error message: brcmfmac: brcmf_c_process_clm_blob: request CLM blob file failed (-11) Apparently that error code 11 comes from a call to request_firmware within brcmf_c_process_clm_blob. If request_firmware had returned a simple ENOENT then apparently the code WOULD have just skipped the CLM loading and continued with the rest of the brcmfmac initialization. However this error code 11 causes the added CLM code to decide there is some more major problem, and (if my patch isn't applied) abort the rest of the brcmfmac initialization. I don't yet understand the request_firmware mechanism and return codes well enough to understand why I get this error code 11, but it looks like the just added CLM code should not only test for ENOENT but also a broader set of errors, and back out of CLM load more gracefully (rather than just aborting) when those other errors occur as well. The bug which caused this problem has been fixed in 4.15-rc9 (and the released 4.15.0) by a patch posted by Wright Feng at <https://patchwork.kernel.org/patch/10166257>. That patch is in some ways similar to my kluge version posted above. There is one remaining problem in that the CLM blob handling now causes a 60 second delay in WiFi coming up after the system boots, apparently as some part of the CLM blob loading software waits for a timeout. I've discovered that the 60 second delay in bringing up WiFi, mentioned in Comment 3, is triggered by having CONFIG_FW_LOADER_USER_HELPER_FALLBACK set when I built the kernel. If that config option is NOT set (and apparently it is not set in most distributions) then the 60 second delay does NOT occur. |