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: WL1837MOD: wlcore: ERROR firmware boot failed despite 3 retries

Part Number: WL1837MOD
Other Parts Discussed in Thread: WL1271

Ref: 

Hi Guys,

I am seeing exactly the same error as the related post.

Everything works for us normally, however over time we get the kernel module crash maybe after a few hours often after a few days of being connected to an access point.

We have tried various versions of the firmware and currently are using the latest to see if the problem is fixed, but it still persists.

wlcore: wl18xx HW: 183x or 180x, PG 2.2 (ROM 0x11)
wlcore: PHY firmware version: Rev 8.2.0.0.245
wlcore: firmware booted (Rev 8.9.0.0.86)

We have used kernel 4.9.220-fslc and 4.9.253-fslc (latest 4.9) and the problem still exists.

Currently we are running tests on beta sites with ELP disabled to see if we can narrow down the problem to this functionality. We are waiting on the results.

This is a summary of the trace we are seeing:

Jan 30 13:58:56 testdevice kernel: WARNING: CPU: 1 PID: 2603 at /usr/src/kernel/drivers/net/wireless/ti/wlcore/sdio.c:145 wl12xx_sdio_raw_write+0xec/0x1c8 [wlcore_sdio]
Jan 30 13:58:56 testdevice kernel: Modules linked in: wl18xx wlcore mac80211 wlcore_sdio galcore(O) cfg80211
Jan 30 13:58:56 testdevice kernel: CPU: 1 PID: 2603 Comm: kworker/u4:1 Tainted: G           O    4.9.253-fslc+g4faee40 #1
Jan 30 13:58:56 testdevice kernel: Hardware name: Freescale i.MX6 Quad/DualLite (Device Tree)
Jan 30 13:58:56 testdevice kernel: Workqueue: phy0 wl1271_tx_work [wlcore]
Jan 30 13:58:56 testdevice kernel: Backtrace: 
Jan 30 13:58:56 testdevice kernel: [<8010ca54>] (dump_backtrace) from [<8010cd48>] (show_stack+0x18/0x1c)
Jan 30 13:58:56 testdevice kernel:  r7:60030113 r6:80e200b0 r5:00000000 r4:80e200b0
Jan 30 13:58:56 testdevice kernel: [<8010cd30>] (show_stack) from [<80963718>] (dump_stack+0x8c/0xa0)
Jan 30 13:58:56 testdevice kernel: [<8096368c>] (dump_stack) from [<80127c98>] (__warn+0xec/0x104)
Jan 30 13:58:56 testdevice kernel:  r7:00000009 r6:7f12cab8 r5:00000000 r4:00000000
Jan 30 13:58:56 testdevice kernel: [<80127bac>] (__warn) from [<80127db0>] (warn_slowpath_null+0x28/0x30)
Jan 30 13:58:56 testdevice kernel:  r9:00000004 r8:a86aa200 r7:a879f210 r6:0001fffc r5:80e04148 r4:a847d000
Jan 30 13:58:56 testdevice kernel: [<80127d88>] (warn_slowpath_null) from [<7f12b2f4>] (wl12xx_sdio_raw_write+0xec/0x1c8 [wlcore_sdio])
Jan 30 13:58:56 testdevice kernel: [<7f12b208>] (wl12xx_sdio_raw_write [wlcore_sdio]) from [<7f1bdbb4>] (wl1271_ps_elp_wakeup+0x124/0x258 [wlcore])
Jan 30 13:58:56 testdevice kernel:  r10:a9110e04 r9:7f1d3340 r8:00098c70 r7:a9110e34 r6:80e02d00 r5:a9110de0
Jan 30 13:58:56 testdevice kernel:  r4:80e04148
Jan 30 13:58:56 testdevice kernel: [<7f1bda90>] (wl1271_ps_elp_wakeup [wlcore]) from [<7f1bcb6c>] (wl1271_tx_work+0x24/0x58 [wlcore])
Jan 30 13:58:56 testdevice kernel:  r10:80e02d00 r9:00000000 r8:00000000 r7:a8818200 r6:a8002800 r5:a9110e1c
Jan 30 13:58:56 testdevice kernel:  r4:a9110de0
Jan 30 13:58:56 testdevice kernel: [<7f1bcb48>] (wl1271_tx_work [wlcore]) from [<80140444>] (process_one_work+0x1dc/0x3f4)
Jan 30 13:58:56 testdevice kernel:  r5:a919c480 r4:a9110fc0
Jan 30 13:58:56 testdevice kernel: [<80140268>] (process_one_work) from [<80141438>] (worker_thread+0x68/0x5c0)
Jan 30 13:58:56 testdevice kernel:  r10:80e02d00 r9:00000088 r8:ffffe000 r7:a8002818 r6:a919c498 r5:a8002800
Jan 30 13:58:56 testdevice kernel:  r4:a919c480
Jan 30 13:58:56 testdevice kernel: [<801413d0>] (worker_thread) from [<80146a2c>] (kthread+0x120/0x128)
Jan 30 13:58:56 testdevice kernel:  r10:00000000 r9:00000000 r8:801413d0 r7:a919c480 r6:a91ca000 r5:a91e31c0
Jan 30 13:58:56 testdevice kernel:  r4:00000000
Jan 30 13:58:56 testdevice kernel: [<8014690c>] (kthread) from [<80108f30>] (ret_from_fork+0x14/0x24)
Jan 30 13:58:56 testdevice kernel:  r8:00000000 r7:00000000 r6:00000000 r5:8014690c r4:a91e31c0
Jan 30 13:58:56 testdevice kernel: ---[ end trace 96da51c88605a643 ]---
Jan 30 13:58:56 testdevice kernel: wl1271_sdio mmc0:0001:2: sdio write failed (-110)
Jan 30 13:58:56 testdevice kernel: ------------[ cut here ]------------

Does anyone else have any further recommendations as to things to check/test to fix the problem?

We will try reducing the sdio frequency as the next thing to test after the results of ELP disabling come in.

Please let me know if you need

Full stack trace log file attached and wlconf config attached:

wl18xx-conf.config
header.magic = 0x10e100ca
header.version = 0x00070007
header.checksum = 0x00000000
core.sg.params = 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x0000000f, 0x0000001b, 0x00000011, 0x000000aa, 0x00000032, 0x00000064, 0x00000320, 0x000000c8, 0x000000c8, 0x00000000, 0x00000000, 0x00000000, 0x00000001, 0x00000000, 0x0000003c, 0x00001388, 0x000004b0, 0x000003e8, 0x00000001, 0x00000003, 0x00000006, 0x0000000a, 0x0000000a, 0x00000002, 0x00000005, 0x0000001e, 0x00000003, 0x0000000a, 0x00000002, 0x00000000, 0x00000019, 0x00000019, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
core.sg.state = 0x01
core.rx.rx_msdu_life_time = 0x0007d000
core.rx.packet_detection_threshold = 0x00000000
core.rx.ps_poll_timeout = 0x000f
core.rx.upsd_timeout = 0x000f
core.rx.rts_threshold = 0x0931
core.rx.rx_cca_threshold = 0x0000
core.rx.irq_blk_threshold = 0xffff
core.rx.irq_pkt_threshold = 0x0000
core.rx.irq_timeout = 0x0258
core.rx.queue_type = 0x00
core.tx.tx_energy_detection = 0x00
core.tx.sta_rc_conf.enabled_rates = 0x00000000
core.tx.sta_rc_conf.short_retry_limit = 0x0a
core.tx.sta_rc_conf.long_retry_limit = 0x0a
core.tx.sta_rc_conf.aflags = 0x00
core.tx.ac_conf_count = 0x04
core.tx.ac_conf0.ac = 0x00
core.tx.ac_conf0.cw_min = 0x0f
core.tx.ac_conf0.cw_max = 0x003f
core.tx.ac_conf0.aifsn = 0x03
core.tx.ac_conf0.tx_op_limit = 0x0000
core.tx.ac_conf1.ac = 0x01
core.tx.ac_conf1.cw_min = 0x0f
core.tx.ac_conf1.cw_max = 0x003f
core.tx.ac_conf1.aifsn = 0x07
core.tx.ac_conf1.tx_op_limit = 0x0000
core.tx.ac_conf2.ac = 0x02
core.tx.ac_conf2.cw_min = 0x0f
core.tx.ac_conf2.cw_max = 0x003f
core.tx.ac_conf2.aifsn = 0x01
core.tx.ac_conf2.tx_op_limit = 0x0bc0
core.tx.ac_conf3.ac = 0x03
core.tx.ac_conf3.cw_min = 0x0f
core.tx.ac_conf3.cw_max = 0x003f
core.tx.ac_conf3.aifsn = 0x01
core.tx.ac_conf3.tx_op_limit = 0x05e0
core.tx.max_tx_retries = 0x64
core.tx.ap_aging_period = 0x012c
core.tx.tid_conf_count = 0x04
core.tx.tid_conf0.queue_id = 0x00
core.tx.tid_conf0.channel_type = 0x01
core.tx.tid_conf0.tsid = 0x00
core.tx.tid_conf0.ps_scheme = 0x00
core.tx.tid_conf0.ack_policy = 0x00
core.tx.tid_conf0.apsd_conf = 0x00000000, 0x00000000
core.tx.tid_conf1.queue_id = 0x01
core.tx.tid_conf1.channel_type = 0x01
core.tx.tid_conf1.tsid = 0x01
core.tx.tid_conf1.ps_scheme = 0x00
core.tx.tid_conf1.ack_policy = 0x00
core.tx.tid_conf1.apsd_conf = 0x00000000, 0x00000000
core.tx.tid_conf2.queue_id = 0x02
core.tx.tid_conf2.channel_type = 0x01
core.tx.tid_conf2.tsid = 0x02
core.tx.tid_conf2.ps_scheme = 0x00
core.tx.tid_conf2.ack_policy = 0x00
core.tx.tid_conf2.apsd_conf = 0x00000000, 0x00000000
core.tx.tid_conf3.queue_id = 0x03
core.tx.tid_conf3.channel_type = 0x01
core.tx.tid_conf3.tsid = 0x03
core.tx.tid_conf3.ps_scheme = 0x00
core.tx.tid_conf3.ack_policy = 0x00
core.tx.tid_conf3.apsd_conf = 0x00000000, 0x00000000
core.tx.tid_conf4.queue_id = 0x00
core.tx.tid_conf4.channel_type = 0x00
core.tx.tid_conf4.tsid = 0x00
core.tx.tid_conf4.ps_scheme = 0x00
core.tx.tid_conf4.ack_policy = 0x00
core.tx.tid_conf4.apsd_conf = 0x00000000, 0x00000000
core.tx.tid_conf5.queue_id = 0x00
core.tx.tid_conf5.channel_type = 0x00
core.tx.tid_conf5.tsid = 0x00
core.tx.tid_conf5.ps_scheme = 0x00
core.tx.tid_conf5.ack_policy = 0x00
core.tx.tid_conf5.apsd_conf = 0x00000000, 0x00000000
core.tx.tid_conf6.queue_id = 0x00
core.tx.tid_conf6.channel_type = 0x00
core.tx.tid_conf6.tsid = 0x00
core.tx.tid_conf6.ps_scheme = 0x00
core.tx.tid_conf6.ack_policy = 0x00
core.tx.tid_conf6.apsd_conf = 0x00000000, 0x00000000
core.tx.tid_conf7.queue_id = 0x00
core.tx.tid_conf7.channel_type = 0x00
core.tx.tid_conf7.tsid = 0x00
core.tx.tid_conf7.ps_scheme = 0x00
core.tx.tid_conf7.ack_policy = 0x00
core.tx.tid_conf7.apsd_conf = 0x00000000, 0x00000000
core.tx.frag_threshold = 0x0930
core.tx.tx_compl_timeout = 0x015e
core.tx.tx_compl_threshold = 0x000a
core.tx.basic_rate = 0x00000001
core.tx.basic_rate_5 = 0x00000008
core.tx.tmpl_short_retry_limit = 0x0a
core.tx.tmpl_long_retry_limit = 0x0a
core.tx.tx_watchdog_timeout = 0x00001388
core.tx.slow_link_thold = 0x03
core.tx.fast_link_thold = 0x1e
core.conn.wake_up_event = 0x02
core.conn.listen_interval = 0x01
core.conn.suspend_wake_up_event = 0x04
core.conn.suspend_listen_interval = 0x03
core.conn.bcn_filt_mode = 0x01
core.conn.bcn_filt_ie_count = 0x03
core.conn.bcn_filt_ie0.ie = 0x25
core.conn.bcn_filt_ie0.rule = 0x02
core.conn.bcn_filt_ie0.oui = 0x00, 0x00, 0x00
core.conn.bcn_filt_ie0.type = 0x00
core.conn.bcn_filt_ie0.version = 0x00, 0x00
core.conn.bcn_filt_ie1.ie = 0x3d
core.conn.bcn_filt_ie1.rule = 0x01
core.conn.bcn_filt_ie1.oui = 0x00, 0x00, 0x00
core.conn.bcn_filt_ie1.type = 0x00
core.conn.bcn_filt_ie1.version = 0x00, 0x00
core.conn.bcn_filt_ie2.ie = 0x2a
core.conn.bcn_filt_ie2.rule = 0x01
core.conn.bcn_filt_ie2.oui = 0x00, 0x00, 0x00
core.conn.bcn_filt_ie2.type = 0x00
core.conn.bcn_filt_ie2.version = 0x00, 0x00
core.conn.bcn_filt_ie3.ie = 0x00
core.conn.bcn_filt_ie3.rule = 0x00
core.conn.bcn_filt_ie3.oui = 0x00, 0x00, 0x00
core.conn.bcn_filt_ie3.type = 0x00
core.conn.bcn_filt_ie3.version = 0x00, 0x00
core.conn.bcn_filt_ie4.ie = 0x00
core.conn.bcn_filt_ie4.rule = 0x00
core.conn.bcn_filt_ie4.oui = 0x00, 0x00, 0x00
core.conn.bcn_filt_ie4.type = 0x00
core.conn.bcn_filt_ie4.version = 0x00, 0x00
core.conn.bcn_filt_ie5.ie = 0x00
core.conn.bcn_filt_ie5.rule = 0x00
core.conn.bcn_filt_ie5.oui = 0x00, 0x00, 0x00
core.conn.bcn_filt_ie5.type = 0x00
core.conn.bcn_filt_ie5.version = 0x00, 0x00
core.conn.bcn_filt_ie6.ie = 0x00
core.conn.bcn_filt_ie6.rule = 0x00
core.conn.bcn_filt_ie6.oui = 0x00, 0x00, 0x00
core.conn.bcn_filt_ie6.type = 0x00
core.conn.bcn_filt_ie6.version = 0x00, 0x00
core.conn.bcn_filt_ie7.ie = 0x00
core.conn.bcn_filt_ie7.rule = 0x00
core.conn.bcn_filt_ie7.oui = 0x00, 0x00, 0x00
core.conn.bcn_filt_ie7.type = 0x00
core.conn.bcn_filt_ie7.version = 0x00, 0x00
core.conn.bcn_filt_ie8.ie = 0x00
core.conn.bcn_filt_ie8.rule = 0x00
core.conn.bcn_filt_ie8.oui = 0x00, 0x00, 0x00
core.conn.bcn_filt_ie8.type = 0x00
core.conn.bcn_filt_ie8.version = 0x00, 0x00
core.conn.bcn_filt_ie9.ie = 0x00
core.conn.bcn_filt_ie9.rule = 0x00
core.conn.bcn_filt_ie9.oui = 0x00, 0x00, 0x00
core.conn.bcn_filt_ie9.type = 0x00
core.conn.bcn_filt_ie9.version = 0x00, 0x00
core.conn.bcn_filt_ie10.ie = 0x00
core.conn.bcn_filt_ie10.rule = 0x00
core.conn.bcn_filt_ie10.oui = 0x00, 0x00, 0x00
core.conn.bcn_filt_ie10.type = 0x00
core.conn.bcn_filt_ie10.version = 0x00, 0x00
core.conn.bcn_filt_ie11.ie = 0x00
core.conn.bcn_filt_ie11.rule = 0x00
core.conn.bcn_filt_ie11.oui = 0x00, 0x00, 0x00
core.conn.bcn_filt_ie11.type = 0x00
core.conn.bcn_filt_ie11.version = 0x00, 0x00
core.conn.bcn_filt_ie12.ie = 0x00
core.conn.bcn_filt_ie12.rule = 0x00
core.conn.bcn_filt_ie12.oui = 0x00, 0x00, 0x00
core.conn.bcn_filt_ie12.type = 0x00
core.conn.bcn_filt_ie12.version = 0x00, 0x00
core.conn.bcn_filt_ie13.ie = 0x00
core.conn.bcn_filt_ie13.rule = 0x00
core.conn.bcn_filt_ie13.oui = 0x00, 0x00, 0x00
core.conn.bcn_filt_ie13.type = 0x00
core.conn.bcn_filt_ie13.version = 0x00, 0x00
core.conn.bcn_filt_ie14.ie = 0x00
core.conn.bcn_filt_ie14.rule = 0x00
core.conn.bcn_filt_ie14.oui = 0x00, 0x00, 0x00
core.conn.bcn_filt_ie14.type = 0x00
core.conn.bcn_filt_ie14.version = 0x00, 0x00
core.conn.bcn_filt_ie15.ie = 0x00
core.conn.bcn_filt_ie15.rule = 0x00
core.conn.bcn_filt_ie15.oui = 0x00, 0x00, 0x00
core.conn.bcn_filt_ie15.type = 0x00
core.conn.bcn_filt_ie15.version = 0x00, 0x00
core.conn.bcn_filt_ie16.ie = 0x00
core.conn.bcn_filt_ie16.rule = 0x00
core.conn.bcn_filt_ie16.oui = 0x00, 0x00, 0x00
core.conn.bcn_filt_ie16.type = 0x00
core.conn.bcn_filt_ie16.version = 0x00, 0x00
core.conn.bcn_filt_ie17.ie = 0x00
core.conn.bcn_filt_ie17.rule = 0x00
core.conn.bcn_filt_ie17.oui = 0x00, 0x00, 0x00
core.conn.bcn_filt_ie17.type = 0x00
core.conn.bcn_filt_ie17.version = 0x00, 0x00
core.conn.bcn_filt_ie18.ie = 0x00
core.conn.bcn_filt_ie18.rule = 0x00
core.conn.bcn_filt_ie18.oui = 0x00, 0x00, 0x00
core.conn.bcn_filt_ie18.type = 0x00
core.conn.bcn_filt_ie18.version = 0x00, 0x00
core.conn.bcn_filt_ie19.ie = 0x00
core.conn.bcn_filt_ie19.rule = 0x00
core.conn.bcn_filt_ie19.oui = 0x00, 0x00, 0x00
core.conn.bcn_filt_ie19.type = 0x00
core.conn.bcn_filt_ie19.version = 0x00, 0x00
core.conn.bcn_filt_ie20.ie = 0x00
core.conn.bcn_filt_ie20.rule = 0x00
core.conn.bcn_filt_ie20.oui = 0x00, 0x00, 0x00
core.conn.bcn_filt_ie20.type = 0x00
core.conn.bcn_filt_ie20.version = 0x00, 0x00
core.conn.bcn_filt_ie21.ie = 0x00
core.conn.bcn_filt_ie21.rule = 0x00
core.conn.bcn_filt_ie21.oui = 0x00, 0x00, 0x00
core.conn.bcn_filt_ie21.type = 0x00
core.conn.bcn_filt_ie21.version = 0x00, 0x00
core.conn.bcn_filt_ie22.ie = 0x00
core.conn.bcn_filt_ie22.rule = 0x00
core.conn.bcn_filt_ie22.oui = 0x00, 0x00, 0x00
core.conn.bcn_filt_ie22.type = 0x00
core.conn.bcn_filt_ie22.version = 0x00, 0x00
core.conn.bcn_filt_ie23.ie = 0x00
core.conn.bcn_filt_ie23.rule = 0x00
core.conn.bcn_filt_ie23.oui = 0x00, 0x00, 0x00
core.conn.bcn_filt_ie23.type = 0x00
core.conn.bcn_filt_ie23.version = 0x00, 0x00
core.conn.bcn_filt_ie24.ie = 0x00
core.conn.bcn_filt_ie24.rule = 0x00
core.conn.bcn_filt_ie24.oui = 0x00, 0x00, 0x00
core.conn.bcn_filt_ie24.type = 0x00
core.conn.bcn_filt_ie24.version = 0x00, 0x00
core.conn.bcn_filt_ie25.ie = 0x00
core.conn.bcn_filt_ie25.rule = 0x00
core.conn.bcn_filt_ie25.oui = 0x00, 0x00, 0x00
core.conn.bcn_filt_ie25.type = 0x00
core.conn.bcn_filt_ie25.version = 0x00, 0x00
core.conn.bcn_filt_ie26.ie = 0x00
core.conn.bcn_filt_ie26.rule = 0x00
core.conn.bcn_filt_ie26.oui = 0x00, 0x00, 0x00
core.conn.bcn_filt_ie26.type = 0x00
core.conn.bcn_filt_ie26.version = 0x00, 0x00
core.conn.bcn_filt_ie27.ie = 0x00
core.conn.bcn_filt_ie27.rule = 0x00
core.conn.bcn_filt_ie27.oui = 0x00, 0x00, 0x00
core.conn.bcn_filt_ie27.type = 0x00
core.conn.bcn_filt_ie27.version = 0x00, 0x00
core.conn.bcn_filt_ie28.ie = 0x00
core.conn.bcn_filt_ie28.rule = 0x00
core.conn.bcn_filt_ie28.oui = 0x00, 0x00, 0x00
core.conn.bcn_filt_ie28.type = 0x00
core.conn.bcn_filt_ie28.version = 0x00, 0x00
core.conn.bcn_filt_ie29.ie = 0x00
core.conn.bcn_filt_ie29.rule = 0x00
core.conn.bcn_filt_ie29.oui = 0x00, 0x00, 0x00
core.conn.bcn_filt_ie29.type = 0x00
core.conn.bcn_filt_ie29.version = 0x00, 0x00
core.conn.bcn_filt_ie30.ie = 0x00
core.conn.bcn_filt_ie30.rule = 0x00
core.conn.bcn_filt_ie30.oui = 0x00, 0x00, 0x00
core.conn.bcn_filt_ie30.type = 0x00
core.conn.bcn_filt_ie30.version = 0x00, 0x00
core.conn.bcn_filt_ie31.ie = 0x00
core.conn.bcn_filt_ie31.rule = 0x00
core.conn.bcn_filt_ie31.oui = 0x00, 0x00, 0x00
core.conn.bcn_filt_ie31.type = 0x00
core.conn.bcn_filt_ie31.version = 0x00, 0x00
core.conn.synch_fail_thold = 0x0000000c
core.conn.bss_lose_timeout = 0x00000190
core.conn.beacon_rx_timeout = 0x00002710
core.conn.broadcast_timeout = 0x00004e20
core.conn.rx_broadcast_in_ps = 0x01
core.conn.ps_poll_threshold = 0x0a
core.conn.sig_weights.rssi_bcn_avg_weight = 0x00
core.conn.sig_weights.rssi_pkt_avg_weight = 0x00
core.conn.sig_weights.snr_bcn_avg_weight = 0x00
core.conn.sig_weights.snr_pkt_avg_weight = 0x00
core.conn.bet_enable = 0x01
core.conn.bet_max_consecutive = 0x32
core.conn.psm_entry_retries = 0x08
core.conn.psm_exit_retries = 0x10
core.conn.psm_entry_nullfunc_retries = 0x03
core.conn.dynamic_ps_timeout = 0x0096
core.conn.forced_ps = 0x00
core.conn.keep_alive_interval = 0x0000d6d8
core.conn.max_listen_interval = 0x14
core.conn.sta_sleep_auth = 0xff
core.conn.suspend_rx_ba_activity = 0x00
core.itrim.enable = 0x00
core.itrim.timeout = 0x0000c350
core.pm_config.host_clk_settling_time = 0x00001388
core.pm_config.host_fast_wakeup_support = 0x01
core.roam_trigger.trigger_pacing = 0x0001
core.roam_trigger.avg_weight_rssi_beacon = 0x14
core.roam_trigger.avg_weight_rssi_data = 0x0a
core.roam_trigger.avg_weight_snr_beacon = 0x14
core.roam_trigger.avg_weight_snr_data = 0x0a
core.scan.min_dwell_time_active = 0x00001d4c
core.scan.max_dwell_time_active = 0x00007530
core.scan.min_dwell_time_active_long = 0x000061a8
core.scan.max_dwell_time_active_long = 0x0000c350
core.scan.dwell_time_passive = 0x000186a0
core.scan.dwell_time_dfs = 0x000249f0
core.scan.num_probe_reqs = 0x0002
core.scan.split_scan_timeout = 0x0000c350
core.sched_scan.base_dwell_time = 0x00001d4c
core.sched_scan.max_dwell_time_delta = 0x000057e4
core.sched_scan.dwell_time_delta_per_probe = 0x000007d0
core.sched_scan.dwell_time_delta_per_probe_5 = 0x0000015e
core.sched_scan.dwell_time_passive = 0x000186a0
core.sched_scan.dwell_time_dfs = 0x000249f0
core.sched_scan.num_probe_reqs = 0x02
core.sched_scan.rssi_threshold = 0xa6
core.sched_scan.snr_threshold = 0x00
core.sched_scan.num_short_intervals = 0x0d
core.sched_scan.long_interval = 0x7530
core.ht.rx_ba_win_size = 0x20
core.ht.tx_ba_win_size = 0x40
core.ht.inactivity_timeout = 0x2710
core.ht.tx_ba_tid_bitmap = 0x3f
core.mem.num_stations = 0x01
core.mem.ssid_profiles = 0x01
core.mem.rx_block_num = 0x28
core.mem.tx_min_block_num = 0x28
core.mem.dynamic_memory = 0x01
core.mem.min_req_tx_blocks = 0x2d
core.mem.min_req_rx_blocks = 0x16
core.mem.tx_min = 0x1b
core.fm_coex.enable = 0x01
core.fm_coex.swallow_period = 0x05
core.fm_coex.n_divider_fref_set_1 = 0xff
core.fm_coex.n_divider_fref_set_2 = 0x0c
core.fm_coex.m_divider_fref_set_1 = 0xffff
core.fm_coex.m_divider_fref_set_2 = 0x0094
core.fm_coex.coex_pll_stabilization_time = 0xffffffff
core.fm_coex.ldo_stabilization_time = 0xffff
core.fm_coex.fm_disturbed_band_margin = 0xff
core.fm_coex.swallow_clk_diff = 0xff
core.rx_streaming.duration = 0x00000096
core.rx_streaming.queues = 0x01
core.rx_streaming.interval = 0x14
core.rx_streaming.always = 0x00
core.fwlog.mode = 0x00
core.fwlog.mem_blocks = 0x02
core.fwlog.severity = 0x00
core.fwlog.timestamp = 0x00
core.fwlog.output = 0x01
core.fwlog.threshold = 0x00
core.rate.rate_retry_score = 0x7d00
core.rate.per_add = 0x2000
core.rate.per_th1 = 0x0800
core.rate.per_th2 = 0x1000
core.rate.max_per = 0x1fa4
core.rate.inverse_curiosity_factor = 0x05
core.rate.tx_fail_low_th = 0x04
core.rate.tx_fail_high_th = 0x0a
core.rate.per_alpha_shift = 0x04
core.rate.per_add_shift = 0x0d
core.rate.per_beta1_shift = 0x0a
core.rate.per_beta2_shift = 0x08
core.rate.rate_check_up = 0x02
core.rate.rate_check_down = 0x0c
core.rate.rate_retry_policy = 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
core.hangover.recover_time = 0x00000000
core.hangover.hangover_period = 0x14
core.hangover.dynamic_mode = 0x01
core.hangover.early_termination_mode = 0x01
core.hangover.max_period = 0x14
core.hangover.min_period = 0x01
core.hangover.increase_delta = 0x01
core.hangover.decrease_delta = 0x02
core.hangover.quiet_time = 0x04
core.hangover.increase_time = 0x01
core.hangover.window_size = 0x10
core.recovery.bug_on_recovery = 0x00
core.recovery.no_recovery = 0x00
wl18xx.ht.mode = 0x00
wl18xx.phy.phy_standalone = 0x00
wl18xx.phy.spare0 = 0x08
wl18xx.phy.enable_clpc = 0x00
wl18xx.phy.enable_tx_low_pwr_on_siso_rdl = 0x00
wl18xx.phy.auto_detect = 0x00
wl18xx.phy.dedicated_fem = 0x00
wl18xx.phy.low_band_component = 0x02
wl18xx.phy.low_band_component_type = 0x05
wl18xx.phy.high_band_component = 0x01
wl18xx.phy.high_band_component_type = 0x0a
wl18xx.phy.number_of_assembled_ant2_4 = 0x02
wl18xx.phy.number_of_assembled_ant5 = 0x02
wl18xx.phy.pin_muxing_platform_options = 0x00, 0x00
wl18xx.phy.external_pa_dc2dc = 0x00
wl18xx.phy.tcxo_ldo_voltage = 0x00
wl18xx.phy.xtal_itrim_val = 0x04
wl18xx.phy.srf_state = 0x00
wl18xx.phy.srf1 = 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
wl18xx.phy.srf2 = 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
wl18xx.phy.srf3 = 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
wl18xx.phy.io_configuration = 0x01
wl18xx.phy.sdio_configuration = 0x00
wl18xx.phy.settings = 0x00
wl18xx.phy.rx_profile = 0x00
wl18xx.phy.per_chan_pwr_limit_arr_11abg = 0x78, 0x88, 0x88, 0x78, 0x88, 0x88, 0x78, 0x88, 0x88, 0x78, 0x88, 0x88, 0x78, 0x88, 0x18, 0x78, 0x88, 0x88, 0x78, 0x88, 0x82, 0x78, 0x88, 0x88, 0x78, 0x88, 0x88, 0x78, 0x88, 0x88, 0x78, 0x88, 0x88, 0x78, 0x88, 0x88, 0x78, 0x88, 0x88, 0xff, 0xff, 0xff, 0xf8, 0xff, 0xff, 0xf8, 0xff, 0xff, 0xf8, 0xff, 0xff, 0xf8, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf7, 0x22, 0x22, 0xff, 0xff, 0xff, 0xf7, 0x22, 0x22, 0xff, 0xff, 0xff, 0xf7, 0x66, 0x66, 0xff, 0xff, 0xff, 0xf7, 0x66, 0x66, 0xf4, 0x44, 0x55, 0xf4, 0x44, 0x55, 0xf4, 0x22, 0x22, 0xf4, 0x22, 0x22, 0xf6, 0x44, 0x44, 0xff, 0x44, 0x44, 0xf7, 0x66, 0x66, 0xf7, 0x66, 0x66, 0xf7, 0x66, 0x66, 0xf7, 0x66, 0x66, 0xf7, 0x66, 0x66, 0xf7, 0x66, 0x66, 0xf7, 0x66, 0x55, 0xf7, 0x44, 0x55, 0xf4, 0xff, 0xff, 0xff, 0x33, 0x22, 0xff, 0x33, 0x22, 0xff, 0x66, 0x66, 0xff, 0x44, 0x66, 0xf6, 0xff, 0xff, 0xff, 0xff, 0xff
wl18xx.phy.pwr_limit_reference_11_abg = 0x55
wl18xx.phy.per_chan_pwr_limit_arr_11p = 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff
wl18xx.phy.pwr_limit_reference_11p = 0x64
wl18xx.phy.spare1 = 0x00
wl18xx.phy.per_chan_bo_mode_11_abg = 0x40, 0x00, 0x04, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x19
wl18xx.phy.per_chan_bo_mode_11_p = 0x00, 0x00, 0x00, 0x01
wl18xx.phy.primary_clock_setting_time = 0x05
wl18xx.phy.clock_valid_on_wake_up = 0x00
wl18xx.phy.secondary_clock_setting_time = 0x05
wl18xx.phy.board_type = 0x02
wl18xx.phy.psat = 0x00
wl18xx.phy.low_power_val = 0xff
wl18xx.phy.med_power_val = 0xff
wl18xx.phy.high_power_val = 0xff
wl18xx.phy.per_sub_band_tx_trace_loss = 0x08, 0x18, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10
wl18xx.phy.per_sub_band_rx_trace_loss = 0x08, 0x18, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
wl18xx.phy.tx_rf_margin = 0x01
wl18xx.phy.low_power_val_2nd = 0xff
wl18xx.phy.med_power_val_2nd = 0xff
wl18xx.phy.high_power_val_2nd = 0xff
wl18xx.phy.padding = 0x00
wl18xx.ap_sleep.idle_duty_cycle = 0x00
wl18xx.ap_sleep.connected_duty_cycle = 0x00
wl18xx.ap_sleep.max_stations_thresh = 0x04
wl18xx.ap_sleep.idle_conn_thresh = 0x08

kernel-elp-crash-logs.txt

  • Hi, 

    Does the issue happen at each boot cycle or is the issue random in nature? Have you tried to upgrade to the latest R8.8 release https://www.ti.com/tool/download/WILINK8-WIFI-NLCP 

  • The firmware is from R8.8 and its does not happen at boot, it happens after the device is left connected to an access-point for several hours or more often several days. Before the problem happens the wifi networking functions correctly.

  • Hi, 

    Does the host execute any power save modes when this issue happens? Also is it possible to get the FW trace on this device? 

    Regards, 

    Sudharshan K N

  • I'm not aware of any power saving modes, but I will investigate this.

    Sorry, where would i locate the FW trace, in sysfs or is this hardware logging with ref to the Hardware integration guide?

  • Hi, 

    This will need the debug UART signal for the WiLink8 to be brought out an connected to gLogger tool. https://www.ti.com/lit/ug/swru435a/swru435a.pdf?ts=1612383220196&ref_url=https%253A%252F%252Fwww.google.com%252F . This will capture the log stream. Also if you have a BeagleBone you can try running the connection in AP mode and check if that fails the same way. I would also recommend to take a look at the patches applied for R8.8 release at https://git.ti.com/cgit/wilink8-wlan/build-utilites/tree/patches/kernel_patches/4.19.38?h=r8.8&id=50346d3272b509936d58987c7ed5a2bb6e824e40 

  • Hi, 

    Also please let us know the current driver version that you are using on the platform. 

    Regards, 

    Sudharshan K N

  • As we are using yocto project, the bitbake recipe is checking out firmware from R8.8 commit 5ec05007f2662f460f881c5868311fd3ab7e6e71

    We haven't backported any of your R8.8  wlcore/wl18xx 4.19 kernel patches yet to our 4.9 LTS kernel, so I guess that's the thing to look at next.

    Early beta testing site with ELP disabled is promising so far and have been running for 24 hours without wifi falling over, however they will need to run continuously until the beginning of next week to be more confident that the change has made an impact.

    Here is our kernel dts node, its looks correct to us when comparing with examples from your guides, but not sure if any of the options contribute to the wl18xx device stopping responding over sdio after some time.

    /* uSDHC1, TiWi wl1271 7 Wilink8 WL18xx*/
                usdhc1: usdhc@02190000  {
                    compatible = "fsl,imx6q-usdhc";
                    reg = <0x02190000 0x4000>;
                    interrupts = <0 22 IRQ_TYPE_LEVEL_HIGH>;
                    clocks = <&clks IMX6QDL_CLK_USDHC1>,
                         <&clks IMX6QDL_CLK_USDHC1>,
                         <&clks IMX6QDL_CLK_USDHC1>;
                    clock-names = "ipg", "ahb", "per";
    
                    pinctrl-names = "default", "state_100mhz", "state_200mhz";
                    pinctrl-0 = <&pinctrl_usdhc1>;
                    pinctrl-1 = <&pinctrl_usdhc1_100mhz>;
                    pinctrl-2 = <&pinctrl_usdhc1_200mhz>;
                    keep-power-in-suspend;
                    enable-sdio-wakeup;
                    vmmc-supply = <&reg_wlan_en>;
                    bus-width = <4>;
                    non-removable;
                    cap-power-off-card;
                    status = "okay";
                    
                    #address-cells = <1>;
                    #size-cells = <0>;
                    wlcore: wlcore@2 {
                        compatible = "ti,wl1835";
                        reg = <2>;
                        interrupt-parent = <&gpio1>;
                        interrupts = <0 IRQ_TYPE_EDGE_RISING>;
                        ref-clock-frequency = <38400000>;
                    };
                };
    
    
    

  • We are unable to get Firmware traces as the necessary debug pins are not broken out onto our PCB's currently. so obviously something we will need to rectify in the future.

  • Have done a comparison between beaglebone 4.9 drivers/net/wireless/ti and ours and there doesn't seem to be a whole lot of difference. Although reading the commit logs did highlight below link. However i have checked the our kernel and the fix for that is present in our kernel code, but the observations are similar

    www.spinics.net/.../msg272201.html

  • Hi, 

    Good to know that disabling ELP is helping. Can you please let us know if there is any station connected to the device while performing this experiment? 

    Also the DTS file patch for beagle bone is provided here https://git.ti.com/cgit/wilink8-wlan/build-utilites/tree/patches/kernel_patches/beaglebone-wilink8-capes/Enable-TI-WiFi-Bluetooth-am335x-boneblack-WL1837.patch?h=r8.8 

  • Hi, yes sorry our devices are home IOT appliances that are always on and connected in STA mode to Cisco wireless access points.

    Thanks for the patch link, one thing that stands out from many examples including your link, is that on the dts wlcore mmc node they dont have enable-sdio-wakeup property whereas we do. I wonder if that is related in some way to the problem we are seeing?

  • Hi 

    Thanks for letting us know that WiLink is used as STA mode. Is there any possibility to update the kernel and driver to 4.19 kernel with R8.8? Also what is the operating temperature of the device when the issue is seen? 

    Regards, 

    Sudharshan K N 

  • We are not going to be able to upgrade on the moment from 4.9 LTS to 4.19 LTS as there are is at *least* one known breaking change that would need to be resolved with the change needed to move from vivante GPU drivers to Etnaviv/Mesa. Plus the products have already passed all other QA assessment tests with the wifi chip being the only part that is failing at this point. However updating is certainly on the road map with only 2 years left of support on the 4.9LTS kernel.


    With respects to temperature the device has been through temperature assessment for calibration of our internal temperature sensor thats embedded in the device right next to the wifi chip.
    Based upon an ambient temperature of 22C, the long term assessment produced the following data.

    Idle device temperature: 25C
    Screen on and idle: 30C
    All components on and full cpu burn for long period: 38C

    the design has a thermal pad on the cpu dissipating the heat away thru the back of the metal enclosure.




  • One interesting other thing of note. We have a generation 1 of the same product thats been with lots of customers for many years now and they dont have the same problem.

    That generation is using:

    Kernel: 3.14.28

    Wl18xx_fw: R8.7_SP3 

    Dumping of the wlconf bin file shows that ELP has not been disabled in the gen 1 device.

    Interestingly i have compared the drivers/net/wireless/ti between my 4.9 kernel and the 3.14.28 kernel used in that device and there is a lot of differences, notably wl1271_ps_elp_wakeup and wl1271_ps_elp_sleep in wl1271_op_suspend and wl1271_op_resume functions in the 4.9 kernel thats not present in the 3.14.28 kernel.

    As already mentioned, I will take a look at your 4.19 kernel patches and see if i can backport them. Do you have a reference git repo link to your 4.19 kernel with  patches already applied that i could look thru and compare .

    Needless to say another day has passed with ELP disabled and zero test devices having crashed, which is good

  • Hi, 

    The R8.8 release notes contain the procedure to patch the kernel with the fixes that was mentioned earlier. You can look into https://www.ti.com/lit/ug/swru561a/swru561a.pdf?ts=1612568569970&ref_url=https%253A%252F%252Fwww.google.com%252F for additional details on the same. 

    Also, i found one patch that is at https://git.ti.com/cgit/wilink8-wlan/wl18xx/diff/drivers/net/wireless/ti/wlcore/main.c?h=R8.7_SP3&id=8cbba968049bbb8c52220b1f07489265dce993cb . Please check if this changes help to mitigate the issue. 

  • Thank you for the patch, I will definitely give that a go.

    Another day passed and still no devices have fallen over with ELP disabled.

  • Hi, 

    Thanks for the update! 

    Regards, 

    Sudharshan K N 

  • So results are in on the disabling of ELP and that fixed the problem.

    We have now re-enabled ELP and are running on beta sites with the wlcore patch applied to so how that fairs in isolation. So far its been running for 24 hours with success.

    One thing in testing i did notice with the patch I was able to crash the driver if I followed the instructions in chapter 6 of "WiLink8 Advanced Features" pdf to suspend and resume via WoWLAN mode. Suspend worked fine and when i ping the device it wakes up fine but the wlcore kernel driver crashes but does recover and operate normally. From the stack trace it does look to be a slightly different execution path as its not related to ELP, so this may be an unrelated problem

    https://www.ti.com/lit/pdf/swru576

    CPU: 0 PID: 6 Comm: kworker/u4:0 Tainted: G        W  O    4.9.253-fslc+g4faee40 #1
    Hardware name: Freescale i.MX6 Quad/DualLite (Device Tree)
    Workqueue: phy0 wl1271_recovery_work [wlcore]
    Backtrace: 
    [<8010ca54>] (dump_backtrace) from [<8010cd48>] (show_stack+0x18/0x1c)
     r7:60050113 r6:80e200b0 r5:00000000 r4:80e200b0
    [<8010cd30>] (show_stack) from [<80963f58>] (dump_stack+0x8c/0xa0)
    [<80963ecc>] (dump_stack) from [<80127c98>] (__warn+0xec/0x104)
     r7:00000009 r6:7f15df90 r5:00000000 r4:00000000
    [<80127bac>] (__warn) from [<80127db0>] (warn_slowpath_null+0x28/0x30)
     r9:00000001 r8:00000000 r7:a862ce1c r6:fffffffb r5:7f185064 r4:a862cde0
    [<80127d88>] (warn_slowpath_null) from [<7f14aa68>] (wlcore_set_partition+0xac/0x534 [wlcore])
    [<7f14a9bc>] (wlcore_set_partition [wlcore]) from [<7f143a4c>] (wl1271_recovery_work+0x13c/0x32c [wlcore])
     r7:a862ce1c r6:a8002800 r5:a862cde0 r4:a862d08c
    [<7f143910>] (wl1271_recovery_work [wlcore]) from [<80140444>] (process_one_work+0x1dc/0x3f4)
     r8:00000000 r7:a901c000 r6:a8002800 r5:a803e580 r4:a862d08c
    [<80140268>] (process_one_work) from [<80141438>] (worker_thread+0x68/0x5c0)
     r10:80e02d00 r9:00000088 r8:ffffe000 r7:a8002818 r6:a803e598 r5:a8002800
     r4:a803e580
    [<801413d0>] (worker_thread) from [<80146a2c>] (kthread+0x120/0x128)
     r10:00000000 r9:00000000 r8:801413d0 r7:a803e580 r6:a8090000 r5:a803f580
     r4:00000000
    [<8014690c>] (kthread) from [<80108f30>] (ret_from_fork+0x14/0x24)
     r8:00000000 r7:00000000 r6:00000000 r5:8014690c r4:a803f580
    ---[ end trace c73667601587cd49 ]---
    wlcore: down
    wlcore: down
    ieee80211 phy0: Hardware restart was requested
    wlcore: PHY firmware version: Rev 8.2.0.0.245
    wlcore: firmware booted (Rev 8.9.0.0.86)
    wlcore: Association completed.
    

  • Hi, 

    Thanks for the update and i am glad that disabling ELP is fixing the issue. 

    On the crash we will take a look into it and check if the difference is because of the kernel versions. 

    Regards, 

    Sudharshan K N 

  • So the results are in from the patch you kindly suggested, and the the problem is still the same.

    So whilst disabling ELP is a fall-back position our next steps is to test back-porting your 4.19 kernel patches to see if that works. Depending upon how well that goes we will also test kernel 4.19 itself (although with reduced functionality) just to try and isolate the wifi issue.

  • Hi, 

    Thanks for the update!! Will wait for your results with the 4.19 kernel

    Regards, 

    Sudarshan K N 

  • We have backported your r8.8 kernel patches from your repo build-utilites/patches/kernel_patches/4.19.38 and are now running on beta sites with it to see if the ELP problem still exists. Will respond back when the data comes in on this one.

    With reference to the Wake-on-lan crash i mentioned, with your patches it no longer crashes and wakes correctly with a single ping from another machine every-time which is an improvement. However if i set a machine to continually pinging the IOT device and then put the IOT device into suspend then the device locks up and networking is lost. The device stops responding to ping and the IOT device needs a hard reset. Race condition in driver?

  • Hi, 

    Thanks for sharing this. Please send us the data for ELP. Let me check on the wake on LAN condition. Can you please send us the details of the test performed? 

    Regards, 

    Sudharshan K N 

  • As soon as the ELP results come in i'll post them

    With reference to Wake-on-lan i used the following on the IOT device

    echo N > /sys/module/printk/parameters/console_suspend
    iw phy0 wowlan enable any
    echo mem > /sys/power/state
    

    Then i pinged the device from my laptop to wake it

  • So the results are in for backporting your R8.8 4.19 kernel patches to our 4.9 LTS kernel.

    Unfortunately the same ELP failure exists with the patches. We are currently evaluating whether we should test using a 4.19 kernel at this stage as its difficult to see how it could make a difference at this point (albeit we rule nothing out).

    With respects to disabling  ELP in the driver, do you have any information on the impact this will have? Relating to this we do have some further investigation to perform as to whether the error happens every-time ELP wakes or whether its periodic. Hopefully we can get more logging from your driver as to when ELP is going to sleep and when its waking to be able to determine this.

  • Hi, 

    Thanks for the update!! ELP related documentation indicates that it is associated with the AP mode https://www.ti.com/lit/ug/swru423a/swru423a.pdf. If low power is not a concern then ELP mode can be disabled. 

    Regards, 

    Sudharshan K N 

  • Thank you for the update.

    We have read that document, however ELP is referenced in that document under the STA power save mode

    "4.9 Power-Save Mode:

    As long as the WLAN on the chip works, power is consumed. When working without a constant
    connection to electricity, it is important to reduce the current consumption of the device. However, to save
    power and maintain acceptable performance, there must be a power-saving mechanism.


    When the STA enters power-save mode, the WLAN on the chip goes into sleep mode (extreme low-power
    (ELP) mode), drastically decreasing power usage.

    "

    As others are not reporting this as a problem, I get the feeling then that most people are either using AP mode, or if they are using STA mode then they have ELP disabled meaning that  ELP in STA mode is less tested?

  • Going forward we will disable ELP in STA mode, however there does seem to be a problem in wlcore/firmware that needs looking into.

  • Hi, 

    Thanks for the response. I will check internally if ELP is needed for STA mode as well and get back to you. 

    Regards, 

    Sudharshan K N 

  • Hi Dell, 

    ELP is enabled by default for STA mode. So enabling ELP is not needed for this mode. In your experiments above if no command was sent to the device was the setup stable? Please let me know. 

    Regards, 

    Sudharshan K N

  • Sorry i'm not entirely sure what your asking.

    "ELP is enabled by default for STA mode. So enabling ELP is not needed for this mode."

    I'm not manually enabling ELP as we are using the default firmware config and we see ELP is being used because of the crashing with ELP functions

    "In your experiments above if no command was sent to the device was the setup stable? Please let me know."

    If this is a reference to the wake-on-lan functionality then if i don't send it a ping then it wont wake up

  • Hi, 

    Sorry for the confusion. 

    My questions were related to ELP mode. In STA mode do you see issues with the default configuration (ELP enabled) mode? 

    Regards, 

    Sudharshan K N 

  • I will try with the firmware default wlconf config as I have just gone back to  take a look at the config we are using and there are some suspicious looking settings that has been generated by configure-device.sh  from the past.

    Attached is a diff of the difference between the default shipped wlconf config file and ours.

    2352.wlconf-diff.txt
    @@ -375,7 +375,7 @@
     core.hangover.window_size = 0x10
     core.recovery.bug_on_recovery = 0x00
     core.recovery.no_recovery = 0x00
    -wl18xx.ht.mode = 0x01
    +wl18xx.ht.mode = 0x00
     wl18xx.phy.phy_standalone = 0x00
     wl18xx.phy.spare0 = 0x08
     wl18xx.phy.enable_clpc = 0x00
    @@ -383,11 +383,11 @@
     wl18xx.phy.auto_detect = 0x00
     wl18xx.phy.dedicated_fem = 0x00
     wl18xx.phy.low_band_component = 0x02
    -wl18xx.phy.low_band_component_type = 0x04
    +wl18xx.phy.low_band_component_type = 0x05
     wl18xx.phy.high_band_component = 0x01
    -wl18xx.phy.high_band_component_type = 0x09
    +wl18xx.phy.high_band_component_type = 0x0a
     wl18xx.phy.number_of_assembled_ant2_4 = 0x02
    -wl18xx.phy.number_of_assembled_ant5 = 0x01
    +wl18xx.phy.number_of_assembled_ant5 = 0x02
     wl18xx.phy.pin_muxing_platform_options = 0x00, 0x00
     wl18xx.phy.external_pa_dc2dc = 0x00
     wl18xx.phy.tcxo_ldo_voltage = 0x00
    @@ -400,27 +400,27 @@
     wl18xx.phy.sdio_configuration = 0x00
     wl18xx.phy.settings = 0x00
     wl18xx.phy.rx_profile = 0x00
    -wl18xx.phy.per_chan_pwr_limit_arr_11abg = 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x2f, 0xff, 0xff, 0xff, 0xff, 0xff, 0x2f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff
    -wl18xx.phy.pwr_limit_reference_11_abg = 0x64
    +wl18xx.phy.per_chan_pwr_limit_arr_11abg = 0x78, 0x88, 0x88, 0x78, 0x88, 0x88, 0x78, 0x88, 0x88, 0x78, 0x88, 0x88, 0x78, 0x88, 0x18, 0x78, 0x88, 0x88, 0x78, 0x88, 0x82, 0x78, 0x88, 0x88, 0x78, 0x88, 0x88, 0x78, 0x88, 0x88, 0x78, 0x88, 0x88, 0x78, 0x88, 0x88, 0x78, 0x88, 0x88, 0xff, 0xff, 0xff, 0xf8, 0xff, 0xff, 0xf8, 0xff, 0xff, 0xf8, 0xff, 0xff, 0xf8, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf7, 0x22, 0x22, 0xff, 0xff, 0xff, 0xf7, 0x22, 0x22, 0xff, 0xff, 0xff, 0xf7, 0x66, 0x66, 0xff, 0xff, 0xff, 0xf7, 0x66, 0x66, 0xf4, 0x44, 0x55, 0xf4, 0x44, 0x55, 0xf4, 0x22, 0x22, 0xf4, 0x22, 0x22, 0xf6, 0x44, 0x44, 0xff, 0x44, 0x44, 0xf7, 0x66, 0x66, 0xf7, 0x66, 0x66, 0xf7, 0x66, 0x66, 0xf7, 0x66, 0x66, 0xf7, 0x66, 0x66, 0xf7, 0x66, 0x66, 0xf7, 0x66, 0x55, 0xf7, 0x44, 0x55, 0xf4, 0xff, 0xff, 0xff, 0x33, 0x22, 0xff, 0x33, 0x22, 0xff, 0x66, 0x66, 0xff, 0x44, 0x66, 0xf6, 0xff, 0xff, 0xff, 0xff, 0xff
    +wl18xx.phy.pwr_limit_reference_11_abg = 0x55
     wl18xx.phy.per_chan_pwr_limit_arr_11p = 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff
     wl18xx.phy.pwr_limit_reference_11p = 0x64
     wl18xx.phy.spare1 = 0x00
    -wl18xx.phy.per_chan_bo_mode_11_abg = 0x40, 0x00, 0x04, 0x70, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18
    -wl18xx.phy.per_chan_bo_mode_11_p = 0x00, 0x00, 0x00, 0x00
    +wl18xx.phy.per_chan_bo_mode_11_abg = 0x40, 0x00, 0x04, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x19
    +wl18xx.phy.per_chan_bo_mode_11_p = 0x00, 0x00, 0x00, 0x01
     wl18xx.phy.primary_clock_setting_time = 0x05
     wl18xx.phy.clock_valid_on_wake_up = 0x00
     wl18xx.phy.secondary_clock_setting_time = 0x05
     wl18xx.phy.board_type = 0x02
     wl18xx.phy.psat = 0x00
    -wl18xx.phy.low_power_val = 0x08
    -wl18xx.phy.med_power_val = 0x12
    -wl18xx.phy.high_power_val = 0x18
    -wl18xx.phy.per_sub_band_tx_trace_loss = 0x10, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
    -wl18xx.phy.per_sub_band_rx_trace_loss = 0x10, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
    +wl18xx.phy.low_power_val = 0xff
    +wl18xx.phy.med_power_val = 0xff
    +wl18xx.phy.high_power_val = 0xff
    +wl18xx.phy.per_sub_band_tx_trace_loss = 0x08, 0x18, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10
    +wl18xx.phy.per_sub_band_rx_trace_loss = 0x08, 0x18, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
     wl18xx.phy.tx_rf_margin = 0x01
    -wl18xx.phy.low_power_val_2nd = 0x05
    -wl18xx.phy.med_power_val_2nd = 0x0a
    -wl18xx.phy.high_power_val_2nd = 0x14
    +wl18xx.phy.low_power_val_2nd = 0xff
    +wl18xx.phy.med_power_val_2nd = 0xff
    +wl18xx.phy.high_power_val_2nd = 0xff
     wl18xx.phy.padding = 0x00
     wl18xx.ap_sleep.idle_duty_cycle = 0x00
     wl18xx.ap_sleep.connected_duty_cycle = 0x00
    
    

  • Hi, 

    I see the following change in the difference. I am not sure if this was intentional. For sure the default configuration seems to be modified. 

    -wl18xx.ht.mode = 0x01
    +wl18xx.ht.mode = 0x00

    MIMO: use wl18xx.ht.mode=0

    SISO40: use wl18xx.ht.mode=1 (default)

    SISO20: use wl18xx.ht.mode=2

    Pl refer to https://www.ti.com/lit/an/swra489/swra489.pdf for details. 

    Regards, 

    Sudharshan K N 

  • Thanks for the reply, yes that one is intentional as if i recall i would of answered the questions asked by your configure shell script.

    The ones that stand out to me are as they look like invalid values or at least full power for each of the modes

    +wl18xx.phy.low_power_val = 0xff
    +wl18xx.phy.med_power_val = 0xff
    +wl18xx.phy.high_power_val = 0xff

  • Hi, 

    This is the same settings we use on our boards. it shouldn't be a issue. 

    Regards, 

    Sudharshan K N 

  • Ok thank you, that's good to know.

    We plan to set up a final test scenario next week where we use the default firmware config, just to rule that out.

    Currently we are back to running with ELP disabled for developers/sites that need a stable connection.

  • Thanks for the information!!