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.

wl1837 low throughput

Other Parts Discussed in Thread: WL1837

Hi, all

I'm using BeagleBone Black(1GHz) and wl1837 cape, with TI linux sdk(linux-am335x-evm-03.01.00.06), Wilink8 R8.7 patched. 

I simply deploy a mesh network with 2 boards to evaluate the performance of network. Before the experiment, I use wlconf to initialize and configure 2.4GHz MIMO usage and 2 2.4 antenna as said in 'wlconf application report'.  Then just using mesh_start to attend a network in 2412 frequency. Two devices are close to each other. Iperf is used to test the UDP throughput, the result is poor, in average 40Mbps, far from 100Mbps posted in 'WiLink™ 8 WLAN Features Guide' which use 700MHz CPU. BTW, I run nothing in background. Before the test, CPU usage is 9%.

root@am335x-evm:~# iperf -c 10.20.30.2 -u -b 80m                                ------------------------------------------------------------
Client connecting to 10.20.30.2, UDP port 5001
Sending 1470 byte datagrams
UDP buffer size:  160 KByte (default)
------------------------------------------------------------
[  3] local 10.20.30.1 port 49311 connected with 10.20.30.2 port 5001
[ ID] Interval       Transfer     Bandwidth
[  3]  0.0-10.0 sec  50.3 MBytes  42.2 Mbits/sec
[  3] Sent 35874 datagrams
[  3] Server Report:
[  3]  0.0-10.0 sec  50.3 MBytes  42.2 Mbits/sec   0.205 ms    0/35873 (0%)
[  3]  0.0-10.0 sec  1 datagrams received out-of-order

After that I try other modes, SISO40 and SISO20. SISO40(5GHz usage) makes no change, 40Mbps; while SISO20 becomes slower, almost 36Mbps. Since the results are so close, I suspect that two antenna are not both used.

I also start BBB as an Access Point, setup ieee80211n for sure. The UDP throughput can be 50Mbps.

root@am335x-evm:~/mesh_topo_1018# iperf -c 10.20.29.2 -u -b 80m
------------------------------------------------------------
Client connecting to 10.20.29.2, UDP port 5001
Sending 1470 byte datagrams
UDP buffer size:  160 KByte (default)
------------------------------------------------------------
[  3] local 10.20.29.1 port 57892 connected with 10.20.29.2 port 5001
[ ID] Interval       Transfer     Bandwidth
[  3]  0.0-10.0 sec  60.0 MBytes  50.3 Mbits/sec
[  3] Sent 42802 datagrams
[  3] Server Report:
[  3]  0.0-10.0 sec  60.0 MBytes  50.3 Mbits/sec   0.777 ms    0/42801 (0%)
[  3]  0.0-10.0 sec  1 datagrams received out-of-order

I wonder if I miss something, for example configuration or any. Or this is its best performance. Any suggestion is appreciated. Thanks.

  • Hi,

    Using the same image, in case you just take one board, connect to an AP (as a standard station) and use iperf (same scenario) with a PC connected to this AP, are you getting the same results, or better?

    Best Regards,
    Eyal
  • Hi, Eyal,

    Thanks for replying. Following your idea, I setup an AP with router TL-WR841N, which can offer 300Mbps as said on product instruction. I connect my device as a station to the network. Another PC is also connected to AP(Wireless or Wired).

    Wireless, the performance is following, 40Mbps:

    root@am335x-evm:~/sta_thrpt_test# iperf -c 192.168.1.150 -u -b 80m
    ------------------------------------------------------------
    Client connecting to 192.168.1.150, UDP port 5001
    Sending 1470 byte datagrams
    UDP buffer size:  160 KByte (default)
    ------------------------------------------------------------
    [  3] local 192.168.1.140 port 58117 connected with 192.168.1.150 port 5001
    [ ID] Interval       Transfer     Bandwidth
    [  3]  0.0-10.0 sec  49.5 MBytes  41.5 Mbits/sec
    [  3] Sent 35283 datagrams
    [  3] Server Report:
    [  3]  0.0-10.2 sec  46.6 MBytes  38.3 Mbits/sec   0.303 ms 2048/35282 (5.8%)
    [  3]  0.0-10.2 sec  1 datagrams received out-of-order
    

    Wired, the performance is better but never over 48Mbps:

    root@am335x-evm:~/sta_thrpt_test# iperf -c 192.168.1.150 -u -b 80m              ------------------------------------------------------------
    Client connecting to 192.168.1.150, UDP port 5001
    Sending 1470 byte datagrams
    UDP buffer size:  160 KByte (default)
    ------------------------------------------------------------
    [  3] local 192.168.1.140 port 36360 connected with 192.168.1.150 port 5001
    [ ID] Interval       Transfer     Bandwidth
    [  3]  0.0-10.0 sec  56.5 MBytes  47.4 Mbits/sec
    [  3] Sent 40306 datagrams
    [  3] Server Report:
    [  3]  0.0-10.0 sec  56.4 MBytes  47.3 Mbits/sec   0.222 ms   76/40305 (0.19%)
    [  3]  0.0-10.0 sec  1 datagrams received out-of-order
    

    Here is my part of /lib/firmware/ti-connectivity/wl18xx-conf.bin configuration, which may help.

    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.io_configuration = 0x01
    wl18xx.phy.sdio_configuration = 0x00
    wl18xx.phy.settings = 0x00
    wl18xx.phy.rx_profile = 0x00

     Thank you for help.

    Regards,

    Xilin Li

  • Hi,

    A couple of questions:
    1. are you running traffic in open air or in a clean room? Could the air be congested? Have you tried other channels?
    2. Can you capture an air sniffer log during UDP traffic and send us. Need to see what rates you are getting in the air.
    3. In case you try to push higher throuput using iperf. for example:

    iperf -c 192.168.1.150 -u -b150M

    Does it show any improvement?

    BR,
    Eyal

  • Thanks, Eyal.

    1. I check each 2.4GHz and 5G channel with spectrum analyzer and find the best channel for my devices. 2.4G MIMO Ch1,  5G SISO Ch36/20M.

    2. I change iperf command with higher bandwidth(150m) and test. It doesn't help.

    3. The throughput improve to 80Mbps when I increase the UDP datagram length to 10KB, and two boards are closely leaning together . 

    Now the problem is that when I make two boards 3 meters away, the throughput decrease dramatically to half (40Mbps for 2.4GHz and 60Mbps for 5G) . When 7 meters away and wall in between, it decreases to 10Mbps for 2.4G and 2Mbps for 5G. This makes me feel very confused, I'm pretty sure that the environment is clean, channels for both frequency are the best. Why is it that unstable? Or the distance affect its performance intensively? 

    Moreover, to use 5G 40M SISO, besides modification in wl18xx-conf.bin and change channel, do I need to make additional setting? Thank you for help.

    BR,

    Xilin Li

  • hi ,
    - For 5GHz band , instead of 20Mhz channel , i suggest you start 40Mhz channel ex: iw dev mesh0 set channel 44 HT40+’
    - Disable driver logging: echo 0 > /sys/module/wlcore/parameters/debug_level
    - Run 'iw mesh0 info' to confirm mesh network details

    Saurabh
  • Hi, Saurabh,

    Follow your setting, the performance is still poor. I use 5GHz SISO 40Mhz, Channel 36(5180Mhz). UDP throughput is ok, 80Mbps with 10KB packet, but decrease with distance still. TCP throughput is only 20Mbps(far from 80Mbps), also decrease with distance. Here is my interface setting. Please check, thanks. And can you tell me how and in which condition TI makes throughput measurements on the chip? 

    Station 54:4a:16:13:0b:e6 (on mesh0)
            inactive time:  300 ms
            rx bytes:       3494418
            rx packets:     36366
            tx bytes:       190813096
            tx packets:     127618
            tx retries:     0
            tx failed:      0
            signal:         0 dBm
            signal avg:     -56 dBm
            Toffset:        -63328937068 us
            tx bitrate:     150.0 MBit/s MCS 7 40MHz short GI
            rx bitrate:     65.0 MBit/s MCS 7
            mesh llid:      0
            mesh plid:      0
            mesh plink:     ESTAB
            mesh local PS mode:     ACTIVE
            mesh peer PS mode:      ACTIVE
            mesh non-peer PS mode:  ACTIVE
            authorized:     yes
            authenticated:  yes
            preamble:       long
            WMM/WME:        yes
            MFP:            no
            TDLS peer:      no
    

  • hi ,
    - can you run these tests in RF chamber to rule out any RF interference
    - can you test with following kernel configuration
    CONFIG_PREEMPT_NONE=y
    CONFIG_CPU_IDLE=n

    Saurabh
  • Hi,

    Can you provide us the following two items:

    1. a picture of your setup that clearly shows the two BBB boards and capes.
    2. Can you capture an air trace during UDP throughput when the boards are around 3 meters away?

    BR,
    Eyal
  • Hi, Saurabh,

    Thanks for the suggestions. I used the configuration that you gave and had a try. UDP with 10KB length is still good, 85Mbps. TCP throughput is still low as 20Mbps. 

    root@am335x-evm:~# iperf -c 10.20.30.2
    ------------------------------------------------------------
    Client connecting to 10.20.30.2, TCP port 5001
    TCP window size: 43.8 KByte (default)
    ------------------------------------------------------------
    [  3] local 10.20.30.1 port 60168 connected with 10.20.30.2 port 5001
    [ ID] Interval       Transfer     Bandwidth
    [  3]  0.0-10.0 sec  22.4 MBytes  18.7 Mbits/sec
    

    Can you ask your colleague in which specific condition that the test was executed? In my case, I can hardly get this performance(TCP: 80Mbps).

    I also attached my config file, feel free to check. Thank you for your help. 

    6201.config.txtXilin 

  • Hi, Eyal,

    Thanks for the reply. Following is my board config (the same for both boards), cape config and packets captured by using tcpdump. When capturing the packets, I notice that the tcpdump in background seriously decrease the performance of throughput(From 80 to 20Mbps), so captured packets are much fewer than thoes in previous test. E2E cannot upload file more than 20MB, so I share two links for pcap file.

     

    7838.wl18xx-conf-dump.txt
    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 = 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 = 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, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 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, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf7, 0xff, 0xff, 0xf4, 0x44, 0xff, 0xf4, 0x44, 0xff, 0xf4, 0x22, 0x22, 0xf4, 0x22, 0x22, 0xf6, 0x44, 0x44, 0xff, 0x44, 0x44, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x55, 0xff, 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
    

    6371.Board_config.txt

    If any problem, please let me know. Thanks.

    Xilin Li

  • Hi,

    Can you try using the following changes in your .config?

    CONFIG_TCP_CONG_ADVANCED=y
    CONFIG_DEFAULT_RENO=y
    CONFIG_DEFAULT_TCP_CONG="reno"

    In addition, can you please run the test for about 120 seconds and see if traffic improves over time?

    BR,
    Eyal
  • Thanks, Eyal. The configuration improves TCP throughput a lot , as now it's almost 70 Mbps. This really helps. One question is if any trade-off for using Reno as congestion control algorithm.

    Besides, when about 8 meters away each other, no obstacle in between but few tables around, UDP/TCP throughput decreases to half only. Any suggestion to further improve its performance? Thanks.

    Xilin
  • Hi Xilin,

    AFAIK There should be no trade off for that. it is basically TCP congestion algorithms used in the IP stack.
    The defaults have changed in new kernels, this is why such issues were not seen with older Linux kernels.
    BTW, not sure but worth trying out. even with Cubic, perhaps if you leave iperf running for longer time it may improve over time as the congestion algorithm adjust.
    Anyway, I advise you stay with the Reno configuration.

    I am not sure there is much you can do regarding the drop of TP over distance as this is the nature of WiFi. It may be better with a good quality antenna.

    Best Regards,
    Eyal
  • BTW,

    What is the RSSI level that you see when you are 8 meters away?

    BR,
    Eyal
  • Hi, Eyal,

    Sorry for replying late. The RSSI result is as following. I made test with one server board and three client boards(test one by one using the same power supply).

    Boards: Client1 Client2 Client3
    RSSI: -65 -71 -85 dBm

    I also tried UDP tests on Client1 at different time phases. Test result floats intensively. Any suggestions?
  • Hi,
    Can you send us a picture of your BBB setup?
    Are you using external antennas?

    In addition, can you capture an air sniffer during traffic so we can see the packet rates that are seen in the air?

    BR,
    Eyal
  • I think I find the problem, the case is the direction of antenna. If not proper, the signal strength degrade greatly. And because the size of antenna is small, the signal strength is limited. Maybe the best solution is to change the antenna. Thanks for the help. 

    Xilin