This thread has been locked.
If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.
Tool/software:
Hi.
TI has abandoned support for the WL1831/1837 family under Linux. Does this mean the part is scheduled for end-of-life?
The newest firmware version that can be used in a Linux system is 8.9.0.0.90. Will this continue to be the case going forward?
Thanks,
-Nick
Hello Nick,
Ti is still supporting the WL18x family of devices and no, there are no plans to end of life this device. It is quite popular and great device to use in your end product.
We have naturally slowed down on updated as the device has become more mature and feature stable.
We are of course still addressing updates required to keep up with certifications and any open bugs.
AB
Hi @AB
Everything I can find suggests that TI stopped supporting Linux after kernel version 4.19, which is approaching five years old - ancient history in Linux terms.
The wlcore driver in mainline kernel 6.6 is still passing NULL pointers to nl80211 code. I hacked around the problem in 5.4, and was disappointed to see it has not been fixed in 6.6.
Firmware versions newer than 8.9.0.0.90 are not supported under Linux, and the latest build_utilities branch, r8.9, is unusable with a modern kernel.
None of this suggest a supported product. Am I missing something?
Thanks,
-Nick
Hey Nick,
The official stance is that the WL18x is supported.
Since the Software is stable and mature and the new Gen device is out now (CC33xx family), SW has moved into LTS.
If you look at mainline we have supporters making updates, and my team is working on mainline and making sure it is updated
It is true the latest build_utilities branch, r8.9 is on 4.19 but it is portable to newer versions and there are multiple users that have done it.
Regards,
AB
Hi AB.
Thanks for the reply.
It's hard to escape the feeling that I'm missing a very big piece of the picture.
I don't understand what you mean when you say "build_utilities branch, r8.9...is portable to newer versions." Making build_utilities work with a newer kernel would mean replacing the entire contents of the repo. Obviously TI should be capable of accomplishing the complex three-way merge between kernel 4.19, patch r8.9, and kernel 6.6, but vanishingly few others.
Can you point me to some of the users who have been able to do it?
Thanks again,
-Nick
The wlcore driver in mainline kernel 6.6 is still passing NULL pointers to nl80211 code. I hacked around the problem in 5.4, and was disappointed to see it has not been fixed in 6.6.
Hi Nick,
Could you share the patch that you used to address this? If this patch is from r8.9 which are you referring to? I can help port it to k6.6.
I did also want to share that the kernel community has recently taken many of the patches from R8.9 and mainlined it. So if you're able to wait for kernel 6.11, or use it directly from mainline, then that may beneficial to you.
See the recent change history here: https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/log/drivers/net/wireless/ti
Hi Sabeeh Khan1.
I attempted to use the patch function of build_utilities branch r8.9 (i.e. build_wl18xx.sh patch_kernel), which of course failed.
Unfortunately, I'm at the mercy of AMD/Xilinx, who provide their own kernel source on their own timeline. They regularly rebase from the mainline repo, but don't publish a schedule. The latest rebase is 6.6.10.
What's the second best option?
Thanks,
-Nick
Hi Nick,
I think we can work on porting the R8.9 patches manually to kernel 6.6. Let me discuss this internally and see how we can help you. I will come back soon with a plan.
Hi Nick,
I am currently working on a port of R8.9 patches to kernel 6.6. I will share patches here as tarball temporarily. Later on, we will get try to get them on to the build-utilites repository.
0003-wlcore-Fixing-PN-drift-on-encrypted-link-after-recov.patch0004-allocated-packets-tracking-mechanism-may-get-broken.patch0001-Adding-support-to-IGTK-key-AES-CMAC128-in-the-wlcore.patch0002-ensure-clock-freq-index-is-within-array-bounds.patch
Hi Nick,
I have attached 4 files. Can you try these patches and let me know if they are successful for your build?
Hi Sabeeh Khan1.
That's great! It will take me a day or two to be in a position to try them out, but I'll let you know as soon as I have any results to report.
Thanks,
-Nick
Hi Sabeeh Khan1.
I finally had a chance to try the patches. Here's how it went:
The patch application process worked without errors.
The kernel built without errors.
Before the upgrade, I would see these errors in syslog when downloading a large file over WiFi. They come from code I added to catch and ignore NULL pointers in the input to cfg80211_cqm_rssi_notify().
2024-08-13T23:33:37.165366+00:00 MPM4-6001 kernel: NULL dev in cfg80211_cqm_rssi_notify
2024-08-13T23:33:37.165467+00:00 MPM4-6001 kernel: wlcore: radar event: channel 0 type N/A
2024-08-13T23:33:46.919909+00:00 MPM4-6001 kernel: NULL dev in cfg80211_cqm_rssi_notify
2024-08-13T23:33:46.921034+00:00 MPM4-6001 kernel: wlcore: Beacon loss detected. roles:0x0
After upgrading the kernel, the wlcore driver complained that the firmware file was too old. This appears to be correct function.
[ 716.822150] wlcore: ERROR Your WiFi FW version (8.9.0.0.90) is invalid.
[ 716.822150] Please use at least FW 8.9.1.*.0.
[ 716.822150] You can get the latest firmwares at:
[ 716.822150] git://git.ti.com/wilink8-wlan/wl18xx_fw.git
[ 716.843007] wlcore: ERROR error getting static data
I downloaded firmware version 8.9.1.0.2, rebooted, and wlcore was happy.
After the update, I continued to see these errors in syslog:
2024-08-13T23:54:37.919981+00:00 MPM4-6001 kernel: NULL dev in cfg80211_cqm_rssi_notify
2024-08-13T23:54:58.147419+00:00 MPM4-6001 kernel: NULL dev in cfg80211_cqm_rssi_notify
2024-08-13T23:54:58.147530+00:00 MPM4-6001 kernel: wlcore: radar event: channel 0 type N/A
No complaints about "Beacon loss," however.
Overall, a positive result. We're now using the newest firmware, but I'm disappointed to see that the TI drivers still seem to be passing NULL pointers to nl80211 code. It appears that just ignoring the incoming NULL pointers is still a reasonable workaround, but it would inspire a lot more confidence not to have to hack kernel code just to survive.
Of course, the fault may lie in kernel code itself. And failing to check if a pointer is valid before dereferencing it isn't on anyone's best practices cheat sheet.
Thanks much for the effort to put these patches together. I'm sure others will find them useful, as well.
-Nick
I take it back:
2024-08-14T20:31:10.577587+00:00 MPM4-6001 kernel: wlcore: radar event: channel 0 type N/A
2024-08-14T20:31:10.577681+00:00 MPM4-6001 kernel: NULL dev in cfg80211_cqm_rssi_notify
2024-08-14T20:31:10.577702+00:00 MPM4-6001 kernel: wlcore: Beacon loss detected. roles:0x0
But no loss of connectivity, so I guess I just keep ignoring the messages.
And this popped up, too. Only once so far.
2024-08-14T10:15:34.561700+00:00 MPM4-6001 kernel: ------------[ cut here ]------------
2024-08-14T10:15:34.561806+00:00 MPM4-6001 kernel: WARNING: CPU: 0 PID: 12158 at drivers/net/wireless/ti/wlcore/main.c:4891 wlcore_op_switch_vif_chanctx+0x130/0x264 [wlcore]
2024-08-14T10:15:34.561833+00:00 MPM4-6001 kernel: Modules linked in: w1_ds2433 ds2781_battery w1_ds2431 w1_ds2781 pps_ldisc ccm cdc_acm onboard_usb_hub ci_hdrc_usb2 ci_hdrc ulpi vfat ehci_hcd fat bno055_i2c phy_generic xilinx_xadc roles bno055 industrialio_triggered_buffer kfifo_buf core100 udc_core industrialio usbcore rtc_pcf85363 gpio_pca953x spidev usb_common wlcore_sdio wl18xx wlcore mac80211 libarc4 cfg80211 fuse nfnetlink ip_tables x_tables
2024-08-14T10:15:34.561856+00:00 MPM4-6001 kernel: CPU: 0 PID: 12158 Comm: kworker/u4:3 Not tainted 6.6.10-nanotok-00051-g53b253f5ca7f #39
2024-08-14T10:15:34.561869+00:00 MPM4-6001 kernel: Hardware name: Xilinx Zynq Platform
2024-08-14T10:15:34.561881+00:00 MPM4-6001 kernel: Workqueue: events_unbound cfg80211_wiphy_work [cfg80211]
2024-08-14T10:15:34.561892+00:00 MPM4-6001 kernel: Backtrace:
2024-08-14T10:15:34.561903+00:00 MPM4-6001 kernel: dump_backtrace from show_stack+0x20/0x24
2024-08-14T10:15:34.561913+00:00 MPM4-6001 kernel: r7:7f13da6a r6:00000000 r5:00010113 r4:80d9e98c
2024-08-14T10:15:34.561923+00:00 MPM4-6001 kernel: show_stack from dump_stack_lvl+0x88/0x94
2024-08-14T10:15:34.561933+00:00 MPM4-6001 kernel: dump_stack_lvl from dump_stack+0x14/0x1c
2024-08-14T10:15:34.561944+00:00 MPM4-6001 kernel: r7:7f13da6a r6:00000009 r5:7f120dd4 r4:81ab8000
2024-08-14T10:15:34.561954+00:00 MPM4-6001 kernel: dump_stack from __warn+0x84/0x15c
2024-08-14T10:15:34.561964+00:00 MPM4-6001 kernel: __warn from warn_slowpath_fmt+0xac/0x13c
2024-08-14T10:15:34.561975+00:00 MPM4-6001 kernel: r10:00000000 r9:00000009 r8:7f120dd4 r7:0000131b r6:00000000 r5:81ab8000
2024-08-14T10:15:34.561985+00:00 MPM4-6001 kernel: r4:80fa33ac
2024-08-14T10:15:34.561996+00:00 MPM4-6001 kernel: warn_slowpath_fmt from wlcore_op_switch_vif_chanctx+0x130/0x264 [wlcore]
2024-08-14T10:15:34.562007+00:00 MPM4-6001 kernel: r10:00000001 r9:c10e9e5c r8:7f2410c0 r7:00000000 r6:00000000 r5:8570d7a0
2024-08-14T10:15:34.562018+00:00 MPM4-6001 kernel: r4:7f240614
2024-08-14T10:15:34.562037+00:00 MPM4-6001 kernel: wlcore_op_switch_vif_chanctx [wlcore] from drv_switch_vif_chanctx+0x1e4/0x264 [mac80211]
2024-08-14T10:15:34.562058+00:00 MPM4-6001 kernel: r10:00000001 r9:00000001 r8:7f120ca4 r7:00000001 r6:8570c5a0 r5:00000000
2024-08-14T10:15:34.562077+00:00 MPM4-6001 kernel: r4:c10e9e5c
2024-08-14T10:15:34.562096+00:00 MPM4-6001 kernel: drv_switch_vif_chanctx [mac80211] from ieee80211_link_use_reserved_reassign+0x1a0/0x2ac [mac80211]
2024-08-14T10:15:34.562116+00:00 MPM4-6001 kernel: r10:910cb330 r9:833625c0 r8:83363004 r7:833aec00 r6:8570c5a0 r5:910cb300
2024-08-14T10:15:34.562133+00:00 MPM4-6001 kernel: r4:83362f48
2024-08-14T10:15:34.562152+00:00 MPM4-6001 kernel: ieee80211_link_use_reserved_reassign [mac80211] from ieee80211_link_use_reserved_context+0xbc/0x130 [mac80211]
2024-08-14T10:15:34.562174+00:00 MPM4-6001 kernel: r10:818c5c05 r9:00000000 r8:00000000 r7:8570c5a0 r6:833aec00 r5:910cb300
2024-08-14T10:15:34.562192+00:00 MPM4-6001 kernel: r4:83362f48
2024-08-14T10:15:34.562212+00:00 MPM4-6001 kernel: ieee80211_link_use_reserved_context [mac80211] from ieee80211_chswitch_work+0xc0/0x158 [mac80211]
2024-08-14T10:15:34.562230+00:00 MPM4-6001 kernel: r9:00000000 r8:833625ec r7:8570d574 r6:8570d66c r5:83363080 r4:833625c0
2024-08-14T10:15:34.562241+00:00 MPM4-6001 kernel: ieee80211_chswitch_work [mac80211] from cfg80211_wiphy_work+0xb0/0xd0 [cfg80211]
2024-08-14T10:15:34.562252+00:00 MPM4-6001 kernel: r9:8570c200 r8:81812800 r7:8570c218 r6:8570c220 r5:8570c200 r4:83363080
2024-08-14T10:15:34.562262+00:00 MPM4-6001 kernel: cfg80211_wiphy_work [cfg80211] from process_scheduled_works+0x204/0x348
2024-08-14T10:15:34.562273+00:00 MPM4-6001 kernel: r7:818c5c00 r6:81148e2c r5:81ab8000 r4:87693c00
2024-08-14T10:15:34.562283+00:00 MPM4-6001 kernel: process_scheduled_works from worker_thread+0x2ac/0x310
2024-08-14T10:15:34.562293+00:00 MPM4-6001 kernel: r10:c0295e94 r9:87693c00 r8:81ab8000 r7:81812820 r6:81812800 r5:877267c0
2024-08-14T10:15:34.562304+00:00 MPM4-6001 kernel: r4:87693c00
2024-08-14T10:15:34.562315+00:00 MPM4-6001 kernel: worker_thread from kthread+0x110/0x118
2024-08-14T10:15:34.562326+00:00 MPM4-6001 kernel: r10:c0295e94 r9:87693c00 r8:8014efe4 r7:877267d4 r6:87726340 r5:877267c0
2024-08-14T10:15:34.562337+00:00 MPM4-6001 kernel: r4:81ab8000 r3:00000000
2024-08-14T10:15:34.562347+00:00 MPM4-6001 kernel: kthread from ret_from_fork+0x14/0x28
2024-08-14T10:15:34.562357+00:00 MPM4-6001 kernel: Exception stack(0xc10e9fb0 to 0xc10e9ff8)
2024-08-14T10:15:34.562367+00:00 MPM4-6001 kernel: 9fa0: 00000000 00000000 00000000 00000000
2024-08-14T10:15:34.562380+00:00 MPM4-6001 kernel: 9fc0: 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000
2024-08-14T10:15:34.562391+00:00 MPM4-6001 kernel: 9fe0: 00000000 00000000 00000000 00000000 00000013 00000000
2024-08-14T10:15:34.562402+00:00 MPM4-6001 kernel: r10:00000000 r9:00000000 r8:00000000 r7:00000000 r6:00000000 r5:80156994
2024-08-14T10:15:34.562413+00:00 MPM4-6001 kernel: r4:877267c0 r3:00000000
2024-08-14T10:15:34.562424+00:00 MPM4-6001 kernel: ---[ end trace 0000000000000000 ]---