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.

Linux: wl12xx regression in 4.1.15 with ad-hoc wifi (continuous cmd join failed error)

Other Parts Discussed in Thread: WL1271

Tool/software: Linux

Hi,

We have boards using the TI WL1271 wifi transceiver. Previously, we were using it successfully with Linux 3.0.35 (for i.mx6 sololite) with the wl12xx driver. Everything was functioning well, our product uses ad-hoc wifi in order to communicate between systems of 5 to 10 boards. It all works well. Thank you for that capability.

However, we need to upgrade to Linux 4.1.15. In this version, we found that although wifi to access point works fine, ad-hoc wifi does not work at all. Here's a simple single node test that will exhibit the failure:

iwconfig wlan0 mode ad-hoc essid testadhoc

ifconfig wlan0 192.168.1.10 up

The effect of that is that within seconds, the error (appended below) will occur repeatedly and no ad-hoc wifi network can be setup.

Searching through the e2e website shows that other people have experienced this as well. I'm surprised to read TI staff replying with stuff like:

"Ad-hoc has been replaced with WiFi Direct for WL127x devices".

That seems contrary to all other professional SoC vendors. NO customer expects to upgrade a kernel and then find out that a major userspace feature is completely broken.

So, please advise us on how to fix the regression in TI's implementation. Is the fix to use older firmware (the 4.1.15 ti-connectivity results in firmware 6.3.10.0.133 )?

Or is there a specific patch that we can apply to 4.1.15 to revert the specific changes TI made that break ad-hoc wifi? 

Best regards!

jaya

wlcore: ERROR command complete timeout
------------[ cut here ]------------
WARNING: CPU: 0 PID: 6 at drivers/net/wireless/ti/wlcore/main.c:802 wl12xx_queue_recovery_work.part.9+0x58/0x5c [wlcore]()
Modules linked in: wlcore_sdio wl12xx wlcore mxc_epdc_fb mxc_epdc_eink apds9500 max77696_regulator
CPU: 0 PID: 6 Comm: kworker/u2:0 Not tainted 4.1.15-00032-g86a1157-dirty #45
Hardware name: Freescale i.MX6 SoloLite (Device Tree)
Workqueue: phy0 ieee80211_iface_work
[<80017380>] (unwind_backtrace) from [<80013ae0>] (show_stack+0x10/0x14)
[<80013ae0>] (show_stack) from [<807e2190>] (dump_stack+0x84/0xc4)
[<807e2190>] (dump_stack) from [<800373e0>] (warn_slowpath_common+0x84/0xb4)
[<800373e0>] (warn_slowpath_common) from [<800374ac>] (warn_slowpath_null+0x1c/0x24)
[<800374ac>] (warn_slowpath_null) from [<7f035158>] (wl12xx_queue_recovery_work.part.9+0x58/0x5c [wlcore])
[<7f035158>] (wl12xx_queue_recovery_work.part.9 [wlcore]) from [<7f039640>] (wlcore_cmd_send_failsafe+0x80/0x4d8 [wlcore])
[<7f039640>] (wlcore_cmd_send_failsafe [wlcore]) from [<7f03ae98>] (wl12xx_cmd_role_start_ibss+0x100/0x224 [wlcore])
[<7f03ae98>] (wl12xx_cmd_role_start_ibss [wlcore]) from [<7f0367b8>] (wl1271_op_bss_info_changed+0xc94/0xe88 [wlcore])
[<7f0367b8>] (wl1271_op_bss_info_changed [wlcore]) from [<8078a118>] (ieee80211_bss_info_change_notify+0xd0/0x254)
[<8078a118>] (ieee80211_bss_info_change_notify) from [<8079a0e0>] (__ieee80211_sta_join_ibss+0x300/0x868)
[<8079a0e0>] (__ieee80211_sta_join_ibss) from [<8079b418>] (ieee80211_sta_create_ibss+0x88/0xe0)
[<8079b418>] (ieee80211_sta_create_ibss) from [<8079c2a4>] (ieee80211_ibss_work+0x340/0x474)
[<8079c2a4>] (ieee80211_ibss_work) from [<8004c134>] (process_one_work+0x12c/0x4f4)
[<8004c134>] (process_one_work) from [<8004c548>] (worker_thread+0x4c/0x4f4)
[<8004c548>] (worker_thread) from [<80051578>] (kthread+0xdc/0xf4)
[<80051578>] (kthread) from [<800101a8>] (ret_from_fork+0x14/0x2c)
---[ end trace 48977fae74cae91a ]---
wlcore: ERROR failed to initiate cmd role enable
wlcore: WARNING cmd join failed -110
IPv6: ADDRCONF(NETDEV_CHANGE): wlan0: link becomes ready
wlcore: Hardware recovery in progress. FW ver: Rev 6.3.10.0.133
wlcore: pc: 0x1b6d6, hint_sts: 0x00000001 count: 1
wlcore: down
ieee80211 phy0: Hardware restart was requested
wlcore: firmware booted (Rev 6.3.10.0.133)
wlcore: ERROR command complete timeout
------------[ cut here ]------------
WARNING: CPU: 0 PID: 19 at drivers/net/wireless/ti/wlcore/main.c:802 wl12xx_queue_recovery_work.part.9+0x58/0x5c [wlcore]()
Modules linked in: wlcore_sdio wl12xx wlcore mxc_epdc_fb mxc_epdc_eink apds9500 max77696_regulator
CPU: 0 PID: 19 Comm: kworker/0:1 Tainted: G W 4.1.15-00032-g86a1157-dirty #45
Hardware name: Freescale i.MX6 SoloLite (Device Tree)
Workqueue: events ieee80211_restart_work
[<80017380>] (unwind_backtrace) from [<80013ae0>] (show_stack+0x10/0x14)
[<80013ae0>] (show_stack) from [<807e2190>] (dump_stack+0x84/0xc4)
[<807e2190>] (dump_stack) from [<800373e0>] (warn_slowpath_common+0x84/0xb4)
[<800373e0>] (warn_slowpath_common) from [<800374ac>] (warn_slowpath_null+0x1c/0x24)
[<800374ac>] (warn_slowpath_null) from [<7f035158>] (wl12xx_queue_recovery_work.part.9+0x58/0x5c [wlcore])
[<7f035158>] (wl12xx_queue_recovery_work.part.9 [wlcore]) from [<7f039640>] (wlcore_cmd_send_failsafe+0x80/0x4d8 [wlcore])
[<7f039640>] (wlcore_cmd_send_failsafe [wlcore]) from [<7f03ae98>] (wl12xx_cmd_role_start_ibss+0x100/0x224 [wlcore])
[<7f03ae98>] (wl12xx_cmd_role_start_ibss [wlcore]) from [<7f0367b8>] (wl1271_op_bss_info_changed+0xc94/0xe88 [wlcore])
[<7f0367b8>] (wl1271_op_bss_info_changed [wlcore]) from [<8078a118>] (ieee80211_bss_info_change_notify+0xd0/0x254)
[<8078a118>] (ieee80211_bss_info_change_notify) from [<807b9c74>] (ieee80211_reconfig+0x1ba0/0x2024)
[<807b9c74>] (ieee80211_reconfig) from [<80788800>] (ieee80211_restart_work+0x60/0x8c)
[<80788800>] (ieee80211_restart_work) from [<8004c134>] (process_one_work+0x12c/0x4f4)
[<8004c134>] (process_one_work) from [<8004c548>] (worker_thread+0x4c/0x4f4)
[<8004c548>] (worker_thread) from [<80051578>] (kthread+0xdc/0xf4)
[<80051578>] (kthread) from [<800101a8>] (ret_from_fork+0x14/0x2c)
---[ end trace 48977fae74cae91b ]---
wlcore: ERROR failed to initiate cmd role enable
wlcore: WARNING cmd join failed -110
wlcore: Hardware recovery in progress. FW ver: Rev 6.3.10.0.133
wlcore: pc: 0x1b6d6, hint_sts: 0x00000001 count: 2
wlcore: down
ieee80211 phy0: Hardware restart was requested
wlcore: firmware booted (Rev 6.3.10.0.133)
wlcore: ERROR command complete timeout
------------[ cut here ]------------

  • Hi Jaya Kumar,

    Could you check the wl1271 behaviour with the last TI official release with Kernel 4.4.41?

    BR
    Tsvetolin Shulev
  • Hi Tsvetolin Shulev,

    Thanks for your reply. As I mentioned, I'm using 4.1.15 because I'm on i.mx6sololite based platform. Switching to yet another unverified kernel is not a trivial step. Especially since you've not indicated any confidence that the problem is fixed!

    Before you recommend that we do the work to migrate to 4.4.41, could you confirm that TI has tested the adhoc support regression is fixed in that release? Is there a change log that you saw that makes you feel 4.4.41 would fix the problem?

    Also, you can also just run the following 2 commands to check it on your setup:

    iwconfig wlan0 mode ad-hoc essid testadhoc
    ifconfig wlan0 192.168.1.10 up
    # then wait 1 minute

    I hope we can get a useful and productive answer.

    Thanks!