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/WL1805MOD: WL1805MOD MIMO not working

Part Number: WL1805MOD

Tool/software: Linux

Hi, I'm having hard time getting 2.4GHz MIMO mode working with WL1805MOD as AP. In wl18xx-conf.bin I have set

wl18xx.ht.mode = 0x00
wl18xx.phy.low_band_component = 0x02
wl18xx.phy.low_band_component_type = 0x05
wl18xx.phy.number_of_assembled_ant2_4 = 0x02
wl18xx.phy.number_of_assembled_ant5 = 0x00

but setting those didn't have any effect, ANT2 still doesn't seem to be transmitting when using 2.4GHz with HT20. Looking at the driver itself, it doesn't seem to care about those values, and just sets the default values for assembled antennas to 1 each, and HT_MODE_WIDE. When I set those to default same values as given above, the driver works in 2.4GHz SISO mode, but when enabling HT20, the WLAN interface dies after trying to initialize.

[ 1272.034991] wlcore: PHY firmware version: Rev 8.2.0.0.240
[ 1272.099081] wlcore: firmware booted (Rev 8.9.0.0.75)
[ 1272.118981] IPv6: ADDRCONF(NETDEV_UP): wlan0: link is not ready
[ 1272.130411] br-lan: port 2(wlan0) entered blocking state
[ 1272.137561] br-lan: port 2(wlan0) entered disabled state
[ 1272.143420] device wlan0 entered promiscuous mode
[ 1272.185706] device wlan0 left promiscuous mode
[ 1272.190244] br-lan: port 2(wlan0) entered disabled state
[ 1272.265952] wlcore: down

This is what I get when forcing parameters in kernel driver to values above when trying to bring up AP with 2.4GHz using HT20 (doesn't work), and following is without HT-mode (works):

[ 1323.544284] wlcore: PHY firmware version: Rev 8.2.0.0.240
[ 1323.609528] wlcore: firmware booted (Rev 8.9.0.0.75)
[ 1323.629844] IPv6: ADDRCONF(NETDEV_UP): wlan0: link is not ready
[ 1323.638244] br-lan: port 2(wlan0) entered blocking state
[ 1323.643640] br-lan: port 2(wlan0) entered disabled state
[ 1323.652857] device wlan0 entered promiscuous mode
[ 1323.671410] IPv6: ADDRCONF(NETDEV_CHANGE): wlan0: link becomes ready
[ 1323.678329] br-lan: port 2(wlan0) entered blocking state
[ 1323.683658] br-lan: port 2(wlan0) entered forwarding state

  • Hello,

    You shouldn't force ant setting from the kernel driver.
    This is all handled internally by the firmware inside the wl18xx chip.

    Can you confirm that you have used wlconf for setting your wl18xx-conf.bin file (using the configure-device.sh script)?

    www.ti.com/.../swra489.pdf

    In addition, can you confirm you hostapd.conf setting? Check this one as an example:
    git.ti.com/.../hostapd.conf

    Look for eample for:
    ht_capab=[SHORT-GI-20][GF]

    BR,
    Eyal
  • Hi,

    And yeah, I was still initially using wrong wl18xx-conf.bin while building my image.. Now it reads correct antenna and ht.mode values from there. I also had issue with hostapd picking up [SHORT-HT-40] to ht_capab from somewhere, which caused the WLAN interface to die with error "Driver does not support configured HT capability [SHORT-GI-40]". I can now bring the interface up with the following hostapd config:

    driver=nl80211
    logger_syslog=127
    logger_syslog_level=2
    logger_stdout=127
    logger_stdout_level=2
    hw_mode=g
    beacon_int=100
    channel=6

    ieee80211n=1
    ht_coex=0
    ht_capab=[SHORT-GI-20][GF]

    interface=wlan0
    ctrl_interface=/var/run/hostapd
    ap_isolate=1
    bss_load_update_period=60
    chan_util_avg_period=600
    disassoc_low_ack=1
    preamble=1
    wmm_enabled=1
    ignore_broadcast_ssid=0
    uapsd_advertisement_enabled=1
    auth_algs=1
    wpa=0
    ssid=MySSID
    bridge=br-lan
    bssid=90:70:65:09:ee:22

    But it still doesn't seem to be using MIMO, only one antenna is transmitting. iw dev wlan0 station dump shows it only using rate MCS7 instead of MCS15 when connected with traffic, and I'm getting about ~45Mbps speed for both uploading and dowloading to/from the device.

  • Hi,

    Can you share a full dump (.txt) of your wl18xx-conf.bin file?
    did you use the configure-device.sh script for generating it and have selected all proper answers?

    In addition, can you share an air sniffer log (wire shark) of wlan traffic during UDP iperf traffic so I can see the rates that are seen on the air?

    BR,
    Eyal
  • Hi,

    I used configure-device.sh with following settings:

    The device has been successfully configured.
    TI Module: y
    Chip Flavor: 1805
    Number of 2.4GHz Antennas Fitted: 2
    Number of 5GHz Antennas Fitted: 0
    Diversity Support: n
    SISO40 Support: y
    Japanese Standards Applied: n
    Class 2 Permissive Change (C2PC) Applied: n

    Attached is full dump of wl18xx-conf.bin and Wireshark dump of traffic with iperf3 -u -c 192.168.1.1 -b 100M (AP in 192.168.1.1 running the server, client in 192.168.1.126)

    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 = 0x09
    wl18xx.phy.number_of_assembled_ant2_4 = 0x02
    wl18xx.phy.number_of_assembled_ant5 = 0x00
    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 = 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x2f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf2, 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_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.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 = 0x10, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
    wl18xx.phy.per_sub_band_rx_trace_loss = 0x10, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 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
    

    iperf_udp_100M.zip

  • Hi,

    Your wl18xx-conf dump looks ok.
    The iperf capture you have provided is captured on the ethernet port and not over the air. I need to see wlan traffic so we we can analyze the air traffic, AP beacon parameters, packet rates etc.

    Best Regards,
    Eyal
  • Hi,

    Sorry about that. Attached is proper capture from laptop running on Wireshark in monitor mode next to another laptop running iperf udp transmission to our WL1805 board.

    Thanks for your assistance.

    iperf3_150M_udp.pcapng.tar.gz

  • I do see in your capture UDP packets with data rates of for example:

    Data rate: 108.0 Mb/s
    Channel: 6
    Frequency: 2437MHz

    But I also see this:
    Bandwidth: 40 MHz (1)

    Are you using MIMO at 40Mhz?
    MIMO is normally used with 20Mhz channels.
    40 Mhz is used mainly with SISO40

    BR,
    Eyal
  • Hi,

    It should be configured to 2x 20MHz only, I have ht_capab=[SHORT-GI-20][GF] set on my hostapd config.

  • Hi,

    Don't know but you sniffer capture showed these type of packets.

    I suggest you run the configuration script again and disable SISO40 as in any case it is normally used in 5Ghz only:

    SISO40 Support: n

    In any case I didn't see anything wrong in this capture other than packet rates going down intermittently (could be congestion in the air).
    I suggest you try a different channel (currently you are using channel 6) or a shielded room and see how high you can get in terms of UDP throughput.

    Best Regards,
    Eyal
  • Hi,

    Any update on this? Can we close this thread?

    BR,
    Eyal
  • Hi,

    I did try with SISO40 set off in configuration, and using other channels, but the problem still persists, rate is capped at MCS7.

  • Hi,

    Looking at the configuration, you want to first ensure that you set the C2PC to yes, as this will pull in the appropriate .INI file.

    Please try this and see if you get better results.

    Thanks,
    Riz