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.

WL1837MOD: WiLink8 EOL?

Part Number: WL1837MOD
Other Parts Discussed in Thread: WL1831

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

  • ,

    Can we help Nick get started on this port?

  • 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 .

    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. 

  • Hi .

    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 .

    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. Slight smile

    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 ]---