Edit online

aic8800D40L

Read time: 20 minute(s)

本文主要描述爱科微 aic8800D40L 芯片的 SDIO WiFi 驱动配置和基本的测试方法。

内核配置

  1. 驱动选择
    在 Kernel 中打开需要使用的 aic8800D40L 驱动,并将模块配置为 modules 方式,支持编译到内核里。
    Device Drivers > Network device support > Wireless LAN
    
    [*]   AIC wireless Support
    (/etc/firmware) Firmware & config file path
    <M>     AIC8800 wlan Support
    < >     AIC8800 bluetooth Support

SDK 配置

添加相关工具包

在命令行中输入以下命令进行 SDK 菜单配置
make menuconfig
Third-party packages → wpa_supplicant

    [*] iperf3  --->
    [*] wpa_supplicant  --->
        --- wpa_supplicant
        [ ]   use codeblockbuilt binary instead of building from source
        [*]   Enable nl80211 support
        [*]   Enable wext (decodeblockcated)
        [ ]   Enable wired support
        [ ]   Enable IBSS RSN
        [*]   Enable AP mode
        [ ]     Enable Wi-Fi Display
        [ ]     Enable mesh networking
        [*]   Enable autoscan
        -*-   Enable EAP
        [*]   Enable HS20
        [*]   Enable syslog support
        [*]   Enable WPS
        [*]   Enable WPA3 support
        [*]   Install wpa_cli binary
        [*]   Install wpa_client shared library
        [*]   Install wpa_passphrase binary
        -*-   Enable the Unix-socket control interface
        [ ]   Enable support for the DBus control interface
    [*] wireless tools  --->
        --- wireless tools
        [ ]   use codeblockbuilt binary instead of building from source
        [*]   Install shared library
    [*] hostapd  --->
        --- hostapd
        [ ]   use codeblockbuilt binary instead of building from source
        [*]   Enable hostap driver
        [*]   Enable nl80211 driver
        [*]   Enable wired driver
        [*]   Enable ACS
        [*]   Enable EAP
        [*]   Enable WPS
        [*]   Enable WPA3 support
        [*]   Enable VLAN support
        [*]     Enable dynamic VLAN support
        [*]     Use netlink-based API for VLAN operations
    [*] AIC8800 firmware  ---

加载与功能验证

加载
编译烧录程序,Luban 开机脚本默认自动加载 ko 文件,所以上电后会默认自动加载 aic8800 相关驱动。
lsmod
Module                  Size  Used by    Not tainted
aic8800_fdrv            1160338  0
aic8800_bsp             247946   1        aic8800_fdrv
以下为部分开机加载驱动日志:
[    9.979327] aicbsp_init
[    9.981833] RELEASE_DATE:2024_0327_3561b08f
[    9.986164] aicbsp_resv_mem_init
[   10.220914] AICWFDBG(LOGTRACE)   >>> rwnx_mod_init()
[   10.225725] AICWFDBG(LOGINFO)    rwnx v6.4.3.0 - - 241c091M (master)
[   10.231881] AICWFDBG(LOGINFO)    RELEASE_DATE:2024_0327_3561b08f
[   10.237846] AICWFDBG(LOGTRACE)   rwnx_init_cmd_array Enter
[   10.243343] AICWFDBG(LOGTRACE)   rwnx_init_cmd_array cmd_queue[0]:00000000220ea075
......
[   10.401639] aicbsp: aicbsp_set_subsys, subsys: AIC_WIFI, state to: 1
[   10.408037] aicbsp: aicbsp_set_subsys, power state change to 1 dure to AIC_WIFI
[   10.415347] aicbsp: aicbsp_platform_power_on
[   10.448193] aicbsp: aicbsp_sdio_probe:1 vid:0xC8A1  did:0x0082
[   10.454423] aicbsp: aicbsp_sdio_probe:2 vid:0xC8A1  did:0x0182
[   10.460344] aicbsp: aicbsp_sdio_probe after replace:1
[   10.465409] AICWFDBG(LOGINFO)    aicwf_sdio_chipmatch USE AIC8800D80
[   10.471642] aicbsp: aicbsp_get_feature, set FEATURE_SDIO_CLOCK 150 MHz
[   10.478202] aicbsp: aicwf_sdio_reg_init
[   10.489374] AICWFDBG(LOGINFO)    aicbsp: aicbsp_driver_fw_init, chip rev: 7
[   10.496153] rwnx_load_firmware :firmware path = /etc/firmware/fw_patch_table_8800d80_u02.bin
[   10.507202] file md5:0c9bf9c9c10f7a90a22a4c35fa58c967
[   10.515259] rwnx_plat_bin_fw_upload_android
[   10.519536] rwnx_load_firmware :firmware path = /etc/firmware/fw_adid_8800d80_u02.bin
[   10.530368] file md5:f546881a81b960d89a672578eb45a809
[   10.541469] rwnx_plat_bin_fw_upload_android
[   10.545679] rwnx_load_firmware :firmware path = /etc/firmware/fw_patch_8800d80_u02.bin
[   10.563322] file md5:35d137b8a76daaeb4f5034df8e15bcde
[   10.634190] aicbt_patch_table_load bt btmode[3]:5
[   10.639155] aicbt_patch_table_load bt uart_baud[3]:1500000
[   10.644820] aicbt_patch_table_load bt uart_flowctrl[3]:1
[   10.650344] aicbt_patch_table_load bt lpm_enable[3]:0
[   10.655587] aicbt_patch_table_load bt tx_pwr[3]:28463
[   10.681804] aicbsp: bt patch version: - Mar 07 2024 14:29:05 - git f94a3e4
[   10.688845] rwnx_plat_bin_fw_upload_android
[   10.693080] rwnx_load_firmware :firmware path = /etc/firmware/fmacfw_8800d80_u02.bin
[   10.771541] file md5:13e6f0e58aae342d260d8672ab61c31f
[   11.018385] rd_version_val=06090101
[   11.041012] AICWFDBG(LOGDEBUG)   aicwf_sdio_probe:1
[   11.045757] AICWFDBG(LOGDEBUG)   Class=7
[   11.049561] AICWFDBG(LOGDEBUG)   sdio vendor ID: 0xc8a1
[   11.054616] AICWFDBG(LOGDEBUG)   sdio device ID: 0x0082
[   11.059709] AICWFDBG(LOGDEBUG)   Function#: 1
[   11.063905] AICWFDBG(LOGINFO)    aicwf_sdio_chipmatch USE AIC8800D80
[   11.070127] aicbsp: aicbsp_get_feature, set FEATURE_SDIO_CLOCK 150 MHz
[   11.076701] aicbsp: sdio_err:<aicwf_sdio_bus_pwrctl,1380>: bus down
[   11.082977] aicsdio: aicwf_sdio_reg_init
[   11.093982] AICWFDBG(LOGINFO)    sdio ready
[   11.100948] aicbsp: aicbsp_resv_mem_alloc_skb, alloc resv_mem_txdata succuss, id: 0, size: 98304
[   11.113412] AICWFDBG(LOGINFO)    sdio_bustx_thread the policy of current thread is:1
[   11.120945] AICWFDBG(LOGINFO)    sdio_bustx_thread the rt_priority of current thread is:1
[   11.128913] AICWFDBG(LOGINFO)    sdio_bustx_thread the current pid is:134
[   11.137328] AICWFDBG(LOGTRACE)   >>> rwnx_platform_init()
[   11.142572] AICWFDBG(LOGTRACE)   >>> rwnx_cfg80211_init()
[   11.147865] aicbsp: aicbsp_get_feature, set FEATURE_SDIO_CLOCK 150 MHz
[   11.154408] AICWFDBG(LOGINFO)    rwnx_cfg80211_init sizeof(struct rwnx_hw):14032
[   11.161850] AICWFDBG(LOGTRACE)   >>> rwnx_init_aic()
[   11.166691] AICWFDBG(LOGTRACE)   >>> rwnx_cmd_mgr_init()
[   11.172679] AICWFDBG(LOGINFO)    sdio_busrx_thread the policy of current thread is:1
[   11.180232] AICWFDBG(LOGINFO)    sdio_busrx_thread the rt_priority of current thread is:1
[   11.188173] AICWFDBG(LOGINFO)    sdio_busrx_thread the current pid is:135
[   11.203855] AICWFDBG(LOGINFO)    aicwf_codeblockalloc_txq_alloc size is diff will to be kzalloc
[   11.212077] AICWFDBG(LOGINFO)    aicwf_codeblockalloc_txq_alloc txq kzalloc successful
[   11.220460] AICWFDBG(LOGTRACE)   >>> rwnx_send_dbg_mem_read_req()
[   11.226457] AICWFDBG(LOGTRACE)   rwnx_send_msg (1025)DBG_MEM_READ_CFM reqcfm:1 in_irq:0 in_softirq:0 in_atomic:0
[   11.236609] AICWFDBG(LOGTRACE)   rwnx_cmd_malloc get cmd_array[0]:00000000220ea075
[   11.245363] AICWFDBG(LOGDEBUG)   rwnx_rx_handle_msg msg->id:0x401
[   11.251673] AICWFDBG(LOGTRACE)   rwnx_cmd_free cmd_array[0]:00000000220ea075
[   11.258802] AICWFDBG(LOGTRACE)   >>> rwnx_send_dbg_mem_read_req()
[   11.264751] AICWFDBG(LOGTRACE)   rwnx_send_msg (1025)DBG_MEM_READ_CFM reqcfm:1 in_irq:0 in_softirq:0 in_atomic:0
[   11.274881] AICWFDBG(LOGTRACE)   rwnx_cmd_malloc get cmd_array[0]:00000000220ea075
[   11.283936] AICWFDBG(LOGDEBUG)   rwnx_rx_handle_msg msg->id:0x401
[   11.291609] AICWFDBG(LOGTRACE)   rwnx_cmd_free cmd_array[0]:00000000220ea075
[   11.298762] AICWFDBG(LOGINFO)    FDRV chip_id=7, chip_sub_id=2!!
[   11.304513] AICWFDBG(LOGTRACE)   >>> rwnx_platform_on()
[   11.309601] AICWFDBG(LOGINFO)    userconfig file path:aic_userconfig_8800d80.txt
[   11.316959] AICWFDBG(LOGINFO)    ### Load file aic_userconfig_8800d80.txt
[   11.323496] AICWFDBG(LOGINFO)    rwnx_load_firmware :firmware path = /etc/firmware/aic_userconfig_8800d80.txt
[   11.333448] AICWFDBG(LOGERROR)   rwnx_load_firmware: aic_userconfig_8800d80.txt file failed to open
[   11.342367] AICWFDBG(LOGERROR)   wrong size of firmware file
[   11.347909] AICWFDBG(LOGTRACE)   rwnx_send_msg (124)MM_SET_STACK_START_CFM reqcfm:1 in_irq:0 in_softirq:0 in_atomic:0
[   11.358473] AICWFDBG(LOGTRACE)   rwnx_cmd_malloc get cmd_array[0]:00000000220ea075
[   11.369288] AICWFDBG(LOGDEBUG)   rwnx_rx_handle_msg msg->id:0x7c
[   11.377353] AICWFDBG(LOGTRACE)   rwnx_cmd_free cmd_array[0]:00000000220ea075
[   11.384462] AICWFDBG(LOGINFO)    is 5g support = 1, vendor_info = 0x21
[   11.390800] AICWFDBG(LOGTRACE)   rwnx_send_msg (129)MM_GET_FW_VERSION_CFM reqcfm:1 in_irq:0 in_softirq:0 in_atomic:0
[   11.401284] AICWFDBG(LOGTRACE)   rwnx_cmd_malloc get cmd_array[0]:00000000220ea075
[   11.410938] AICWFDBG(LOGDEBUG)   rwnx_rx_handle_msg msg->id:0x81
[   11.417262] AICWFDBG(LOGTRACE)   rwnx_cmd_free cmd_array[0]:00000000220ea075
[   11.424359] AICWFDBG(LOGINFO)    Firmware Version: zh Mar 07 2024 15:00:09 - ga004cf5
......
[   13.796867] AICWFDBG(LOGINFO)    rwnx_get_countrycode_channels support channel:1 2 3 4 5 6 7 8 9 10 11 12 13 14 36 40 44 48 52 56 60 64 100 104 108 112 116 120 124 128 132 136 140 144 149 153 157 161 165
[   13.814996] ieee80211 phy0:
[   13.814996] *******************************************************
[   13.814996] ** CAUTION: USING PERMISSIVE CUSTOM REGULATORY RULES **
[   13.814996] *******************************************************
[   13.836696] AICWFDBG(LOGTRACE)   >>> rwnx_send_me_chan_config_req()
[   13.842825] AICWFDBG(LOGTRACE)   rwnx_send_msg (5123)ME_CHAN_CONFIG_CFM reqcfm:1 in_irq:0 in_softirq:0 in_atomic:0
[   13.853133] AICWFDBG(LOGTRACE)   rwnx_cmd_malloc get cmd_array[0]:00000000220ea075
[   13.863477] AICWFDBG(LOGDEBUG)   rwnx_rx_handle_msg msg->id:0x1403
[   13.870113] AICWFDBG(LOGTRACE)   rwnx_cmd_free cmd_array[0]:00000000220ea075
[   13.877245] AICWFDBG(LOGTRACE)   >>> rwnx_dbgfs_register()
[   13.882839] AICWFDBG(LOGINFO)    rwnx_interface_add: wlan%d, 2, 10
[   13.889173] AICWFDBG(LOGINFO)    interface add:c0 4b 24 18 f9 5c
[   13.921558] AICWFDBG(LOGINFO)    New interface create wlan0
STA 模式测试
  1. 网络连接。

    本文使用 wpa_supplicant 工具进行测试。先将 WiFi 信息写入 wpa_supplicant.conf 文件,然后用工具加入 WiFi,这是基于已知 WiFi 账号密码的情况下进行测试。更多 wpa_supplicant 工具使用方法,请查阅官方相关文档。
    touch /tmp/wpa_supplicant.conf
    wpa_passphrase my-test 12345678 > /tmp/wpa_supplicant.conf
    wpa_supplicant -B -d -i wlan0 -c /tmp/wpa_supplicant.conf
    udhcpc -i wlan0
    
  2. 网络通信测试。

    执行完上述命令后,可看见路由分配了相应的 IP 地址给开发板。下面我们查看 IP 并测试与路由的通信情况。
    # ifconfig
    lo        Link encap:Local Loopback
              inet addr:127.0.0.1  Mask:255.0.0.0
              UP LOOPBACK RUNNING  MTU:65536  Metric:1
              RX packets:0 errors:0 dropped:0 overruns:0 frame:0
              TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
              collisions:0 txqueuelen:1000
              RX bytes:0 (0.0 B)  TX bytes:0 (0.0 B)
    
    wlan0     Link encap:Ethernet  HWaddr C0:4B:24:18:F9:5C
              inet addr:192.168.1.101  Bcast:192.168.1.255  Mask:255.255.255.0
              UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
              RX packets:8 errors:0 dropped:0 overruns:0 frame:0
              TX packets:4 errors:0 dropped:0 overruns:0 carrier:0
              collisions:0 txqueuelen:1000
              RX bytes:1761 (1.7 KiB)  TX bytes:876 (876.0 B)[aic@] # ping 192.168.1.1
    PING 192.168.1.1 (192.168.1.1): 56 data bytes
    [ 1311.689546] AICWFDBG(LOGDEBUG)   rwnx_rx_handle_msg msg->id:0x140b
    [ 1311.695761] AICWFDBG(LOGTRACE)   >>> rwnx_rx_me_tx_credits_update_ind()64 bytes from 192.168.1.1: seq=0 ttl=64 time=28.158 ms
    64 bytes from 192.168.1.1: seq=1 ttl=64 time=12.183 ms
    64 bytes from 192.168.1.1: seq=2 ttl=64 time=5.197 ms
    64 bytes from 192.168.1.1: seq=3 ttl=64 time=3.283 ms
    64 bytes from 192.168.1.1: seq=4 ttl=64 time=6.780 ms
    64 bytes from 192.168.1.1: seq=5 ttl=64 time=1.269 ms
    64 bytes from 192.168.1.1: seq=6 ttl=64 time=12.256 ms
    64 bytes from 192.168.1.1: seq=7 ttl=64 time=1.715 ms
    
  3. 性能测试。

    使用 iperf3 工具进行测试,可以用其他 PC 或 开发板创建服务器,本开发板当客户端进行收发测试。
    iperf3 -c 192.168.1.102
    Connecting to host 192.168.1.102, port 5201[  5] local 192.168.1.101 port 43004 connected to 192.168.1.102 port 5201[ ID] Interval           Transfer     Bitrate         Retr  Cwnd
    [  5]   0.00-1.00   sec  5.02 MBytes  42.1 Mbits/sec    0    218 KBytes
    [  5]   1.00-2.00   sec  5.03 MBytes  42.2 Mbits/sec    0    218 KBytes
    [  5]   2.00-3.00   sec  4.97 MBytes  41.7 Mbits/sec    0    218 KBytes
    [  5]   3.00-4.00   sec  5.03 MBytes  42.2 Mbits/sec    0    218 KBytes
    [  5]   4.00-5.00   sec  5.03 MBytes  42.2 Mbits/sec    0    218 KBytes
    [  5]   5.00-6.00   sec  5.28 MBytes  44.3 Mbits/sec    0    218 KBytes
    [  5]   6.00-7.00   sec  4.85 MBytes  40.7 Mbits/sec    0    218 KBytes
    [  5]   7.00-8.00   sec  5.22 MBytes  43.8 Mbits/sec    0    218 KBytes
    [  5]   8.00-9.00   sec  5.03 MBytes  42.2 Mbits/sec    0    218 KBytes
    [  5]   9.00-10.00  sec  5.03 MBytes  42.2 Mbits/sec    0    218 KBytes
    - - - - - - - - - - - - - - - - - - - - - - - - -
    [ ID] Interval           Transfer     Bitrate         Retr
    [  5]   0.00-10.00  sec  50.5 MBytes  42.4 Mbits/sec    0             sender
    [  5]   0.00-10.00  sec  50.1 MBytes  42.0 Mbits/sec                  receiver
    
    iperf Done.
    iperf3 -c 192.168.1.102 -R
    Connecting to host 192.168.1.102, port 5201
    Reverse mode, remote host 192.168.1.102 is sending
    [  5] local 192.168.1.101 port 43008 connected to 192.168.1.102 port 5201[ ID] Interval           Transfer     Bitrate
    [  5]   0.00-1.00   sec  3.69 MBytes  30.9 Mbits/sec
    [  5]   1.00-2.00   sec  4.99 MBytes  41.9 Mbits/sec
    [  5]   2.00-3.00   sec  4.71 MBytes  39.5 Mbits/sec
    [  5]   3.00-4.00   sec  4.44 MBytes  37.2 Mbits/sec
    [  5]   4.00-5.00   sec  4.29 MBytes  36.0 Mbits/sec
    [  5]   5.00-6.00   sec  4.62 MBytes  38.8 Mbits/sec
    [  5]   6.00-7.00   sec  4.54 MBytes  38.0 Mbits/sec
    [  5]   7.00-8.00   sec  4.39 MBytes  36.8 Mbits/sec
    [  5]   8.00-9.00   sec  4.73 MBytes  39.7 Mbits/sec
    [  5]   9.00-10.00  sec  4.80 MBytes  40.3 Mbits/sec
    - - - - - - - - - - - - - - - - - - - - - - - - -
    [ ID] Interval           Transfer     Bitrate
    [  5]   0.00-10.00  sec  45.2 MBytes  38.0 Mbits/sec                  sender
    [  5]   0.00-10.00  sec  45.2 MBytes  37.9 Mbits/sec                  receiver
    
    iperf Done.
AP 模式测试

AP 模式使用 hostapd 工具进行测试。此处提供两个配置文件,udhcpd.conf 与 hostapd.conf,分别用作 DHCP 与 AP 模式配置。

  1. hostapd.conf
    interface=wlan0
    ssid=ArtInChip-WiFI
    wpa=2
    wpa_passphrase=88888888
    wpa_key_mgmt=WPA-PSK
    channel=1
    rsn_pairwise=CCMP
    driver=nl80211
    logger_syslog=-1
    logger_syslog_level=2
    logger_stdout=-1
    logger_stdout_level=2
    dump_file=/tmp/hostapd.dump
    ctrl_interface=/var/run/hostapd
    ctrl_interface_group=0
    hw_mode=g
    beacon_int=100
    dtim_period=2
    max_num_sta=9
    rts_threshold=2347
    fragm_threshold=2346
    macaddr_acl=0
    auth_algs=3
    ignore_broadcast_ssid=0
    wmm_enabled=1
    wmm_ac_bk_cwmin=4
    wmm_ac_bk_cwmax=10
    wmm_ac_bk_aifs=7
    wmm_ac_bk_txop_limit=0
    wmm_ac_bk_acm=0
    wmm_ac_be_aifs=3
    wmm_ac_be_cwmin=4
    wmm_ac_be_cwmax=10
    wmm_ac_be_txop_limit=0
    wmm_ac_be_acm=0
    wmm_ac_vi_aifs=2
    wmm_ac_vi_cwmin=3
    wmm_ac_vi_cwmax=4
    wmm_ac_vi_txop_limit=94
    wmm_ac_vi_acm=0
    wmm_ac_vo_aifs=2
    wmm_ac_vo_cwmin=2
    wmm_ac_vo_cwmax=3
    wmm_ac_vo_txop_limit=47
    wmm_ac_vo_acm=0
    ieee80211n=1
    eapol_key_index_workaround=0
    own_ip_addr=127.0.0.1
  2. udhcpd.conf
    start 192.168.1.2
    end   192.168.1.254
    
    interface wlan0
  3. 在开发板中应用配置。
    hostapd -B -i wlan0 hostapd.conf
    ifconfig wlan0 192.168.1.1
    udhcpd dhcpd.conf
  4. 使用其他 PC 或者开发板连接生成的热点,然后使用 iperf3 进行网络测试。
    iperf3 -c 192.168.1.2
    Connecting to host 192.168.1.2, port 5201
    [  5] local 192.168.1.1 port 40220 connected to 192.168.1.2 port 5201
    [ 1231.932051] AICWFDBG(LOGDEBUG)   rwnx_rx_handle_msg msg->id:0x49
    [ 1231.938137] AICWFDBG(LOGDEBUG)   rwnx_rx_handle_msg msg->id:0x49
    [ 1231.972810] AICWFDBG(LOGDEBUG)   rwnx_rx_handle_msg msg->id:0x49
    [ 1231.978920] AICWFDBG(LOGDEBUG)   rwnx_rx_handle_msg msg->id:0x49
    [ 1232.050321] AICWFDBG(LOGDEBUG)   rwnx_rx_handle_msg msg->id:0x49
    [ 1232.056396] AICWFDBG(LOGDEBUG)   rwnx_rx_handle_msg msg->id:0x49
    [ 1232.073773] AICWFDBG(LOGDEBUG)   rwnx_rx_handle_msg msg->id:0x49
    [ 1232.079898] AICWFDBG(LOGDEBUG)   rwnx_rx_handle_msg msg->id:0x49
    [ ID] Interval           Transfer     Bitrate         Retr  Cwnd
    [  5]   0.00-1.00   sec  4.48 MBytes  37.6 Mbits/sec    0    212 KBytes
    [  5]   1.00-2.00   sec  5.16 MBytes  43.2 Mbits/sec    0    212 KBytes
    [  5]   2.00-3.00   sec  5.41 MBytes  45.4 Mbits/sec    0    212 KBytes
    [  5]   3.00-4.00   sec  4.72 MBytes  39.6 Mbits/sec    0    212 KBytes
    [  5]   4.00-5.00   sec  4.41 MBytes  37.0 Mbits/sec    0    212 KBytes
    [  5]   5.00-6.00   sec  5.28 MBytes  44.3 Mbits/sec    0    212 KBytes
    [  5]   6.00-7.00   sec  5.16 MBytes  43.3 Mbits/sec    0    212 KBytes
    [  5]   7.00-8.00   sec  4.97 MBytes  41.7 Mbits/sec    0    212 KBytes
    [  5]   8.00-9.00   sec  5.03 MBytes  42.3 Mbits/sec    0    212 KBytes
    [  5]   9.00-10.00  sec  4.78 MBytes  40.1 Mbits/sec    0    212 KBytes
    - - - - - - - - - - - - - - - - - - - - - - - - -
    [ ID] Interval           Transfer     Bitrate         Retr
    [  5]   0.00-10.00  sec  49.4 MBytes  41.4 Mbits/sec    0             sender
    [  5]   0.00-10.00  sec  49.0 MBytes  41.1 Mbits/sec                  receiver
    
    iperf Done.
    iperf3 -c 192.168.1.2 -R
    Connecting to host 192.168.1.2, port 5201
    Reverse mode, remote host 192.168.1.2 is sending
    [  5] local 192.168.1.1 port 40224 connected to 192.168.1.2 port 5201
    [ ID] Interval           Transfer     Bitrate
    [  5]   0.00-1.00   sec  1.01 MBytes  8.43 Mbits/sec
    [  5]   1.00-2.00   sec  1.23 MBytes  10.4 Mbits/sec
    [  5]   2.00-3.00   sec  3.28 MBytes  27.5 Mbits/sec
    [  5]   3.00-4.00   sec  3.38 MBytes  28.4 Mbits/sec
    [ 1255.405892] AICWFDBG(LOGTRACE)   >>> rwnx_cfg80211_change_beacon()
    [ 1255.411945] AICWFDBG(LOGTRACE)   rwnx_send_msg (7177)APM_SET_BEACON_IE_CFM reqcfm:1 in_irq:0 in_softirq:0 in_atomic:0
    [ 1255.422584] AICWFDBG(LOGTRACE)   rwnx_cmd_malloc get cmd_array[0]:00000000e95e64c7
    [ 1255.431740] AICWFDBG(LOGDEBUG)   rwnx_rx_handle_msg msg->id:0x1c09
    [ 1255.439036] AICWFDBG(LOGTRACE)   rwnx_cmd_free cmd_array[0]:00000000e95e64c7
    [ 1255.446188] AICWFDBG(LOGTRACE)   >>> rwnx_send_bcn_change()
    [ 1255.451621] AICWFDBG(LOGTRACE)   rwnx_send_msg (64)MM_BCN_CHANGE_CFM reqcfm:1 in_irq:0 in_softirq:0 in_atomic:0
    [ 1255.461661] AICWFDBG(LOGTRACE)   rwnx_cmd_malloc get cmd_array[0]:00000000e95e64c7
    [ 1255.474005] AICWFDBG(LOGDEBUG)   rwnx_rx_handle_msg msg->id:0x40
    [ 1255.480828] AICWFDBG(LOGTRACE)   rwnx_cmd_free cmd_array[0]:00000000e95e64c7
    [  5]   4.00-5.00   sec  1.05 MBytes  8.78 Mbits/sec
    [  5]   5.00-6.00   sec   775 KBytes  6.35 Mbits/sec
    [  5]   6.00-7.00   sec  1.12 MBytes  9.36 Mbits/sec
    [  5]   7.00-8.00   sec   976 KBytes  7.99 Mbits/sec
    [  5]   8.00-9.00   sec  1.17 MBytes  9.84 Mbits/sec
    [  5]   9.00-10.00  sec  1.73 MBytes  14.5 Mbits/sec
    - - - - - - - - - - - - - - - - - - - - - - - - -
    [ ID] Interval           Transfer     Bitrate
    [  5]   0.00-10.00  sec  15.9 MBytes  13.3 Mbits/sec                  sender
    [  5]   0.00-10.00  sec  15.7 MBytes  13.1 Mbits/sec                  receiver
    
    iperf Done.