Other Parts Discussed in Thread: WL1837
Some modes in our application are "bursty" in nature. Meaning we send small amounts of data (5Kb) followed by a quiet period (20ms). The receiving device is graphing this information as it is received. But in this particular mode it seems the power save behavior of the wi-fi module kicks in periodically and the receiving device gets the data in larger blocks (the update of the graph jumps instead of smoothly scrolling the data). We've used Wireshark to confirm the timestamps of the data on receiving device point to the sending device (this is an AP connection with just the two devices, sender and receiver, on the network). In this case the sender is our device with:
Processor: i.MX 7 Dual
Kernel: 5.4.3
wlcore: PHY firmware version: Rev 8.2.0.0.246
wlcore: firmware booted (Rev 8.9.0.0.90)
And the receiving device is an iPhone 11 running iOS 16.4.
Enabling kernel logging for the wlcore and use dmesg while the graph update is stuttering, we see the log being flooded with messages like below. If the graph is updating smoothly without stuttering, we don’t see these messages.
[Tue May 9 07:35:32 2023] wlcore: link ps prev Oxc cur 0x0 changed 0xc
[Tue May 9 07:35:32 20231 wicore: link ps prev 0x0 cur Oxc changed 0xc
[Tue May 9 07:35:32 20231 wicore: link ps prev Oxc cur 0x0 changed 0xc
[Tue May 9 07:35:32 20231 wicore: link ps prev 0x0 cur Oxc changed 0xc
[Tue May 9 07:35:32 2023] wicore: link ps prev Oxc cur 0x0 changed 0xc
[Tue May 9 07:35:32 2023] wicore: link ps prev 0x0 cur Oxc changed Oxc
[Tue May 9 07:35:33 20231 wicore: link ps prev Oxc cur 0x0 changed 0xc
[Tue May 9 07:35:33 2023] wicore: link ps prev 0x0 cur Oxc changed Oxc
[Tue May 9 07:35:33 2023] wicore: link ps prev Oxc cur 0x0 changed Oxc
[Tue May 9 07:35:33 20231 wIcore: link ps prev 0x0 cur Oxc changed 0xc
[Tue May 9 07:35:33 20231 wIcore: link ps prev Oxc cur 0x0 changed 0xc
[Tue May 9 07:35:33 20231 wIcore: link ps prev 0x0 cur Oxc changed 0xc
[Tue May 9 07:35:33 20231 wicore: link ps prev Oxc cur 0x0 changed 0xc
[Tue May 9 07:35:33 20231 wIcore: link ps prev 0x0 cur Oxc changed 0xc
[Tue May 9 07:35:33 20231 wicore: link ps prev Oxc cur 0x0 changed 0xc
[Tue May 9 07:35:33 20231 wicore: link ps prev 0x0 cur Oxc changed 0xc
[Tue May 9 07:35:33 20231 wIcore: link ps prev Oxc cur 0x0 changed 0xc
[Tue May 9 07:35:33 20231 wicore: link ps prev 0x0 cur Oxc changed 0xc
[Tue May 9 07:35:33 20231 wicore: link ps prev Oxc cur 0x0 changed 0xc
My question is whether there are parameters in the conf file we can tweak to affect the power save behavior (e.g. . Attached is the output of wlconf --get for how our product is configured).
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 = 0x01
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 = 0x01
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 = 0x01
wl18xx.phy.number_of_assembled_ant5 = 0x01
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, 0x00, 0x00, 0x00, 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
I am speaking about things like core.tx.tid_confX.ps_scheme, core.conn.dynamic_ps_timeout, core.conn.sta_sleep_auth, wl18xx.ap_sleep.connected_duty_cycle and the like.
I have looked through:
SWRA489 WiLink 8 Solutions WiLink8 – wlconf
SWRU422A WL18xx.INI FILE
And there are some details about the various parameter in the header file:
https://git.ti.com/cgit/wilink8-wlan/18xx-ti-utils/tree/wlconf/conf.h?h=master
But there aren’t any details about how they are related that setting A means that B must be set in a particular manner, or whether they're actually used or not.
Lastly, I've tried turning off power save just to see if this makes this behavior go away using iw wlan0 set power_save off but it doesn't seem to work.