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.

AM335x - wl18xx: UDP packet loss

Other Parts Discussed in Thread: WL1835

Hello,


I got the following problem using the AM3358EVM and the WL1835 wifi module, both with the old 3.2 kernel, but also with the new one (3.12). The setup looks like this:

DeviceX <---(eth)---> AM3358EVM <- - -(wifi)- - - > CiscoAP <---(eth)---> PC

  1. PC sends a bunch of small UDP packets to DeviceX (just 1byte of payload).
  2. DeviceX responds to PC with another bunch of small UDP packets.
  3. 1 and 2 repeat few times.
  4. If 1, 2 and 3 finish successfully, DeviceX starts sending continuously bigger UDP packets to the PC (most are ~= max size).

AM3358EVM is connected to CiscoAP with the following script, which also increases the UDP-related buffers:

sysctl -w net.core.rmem_max=8388608
sysctl -w net.core.wmem_max=8388608
sysctl -w net.core.rmem_default=1048576
sysctl -w net.core.wmem_default=1048576
sysctl -w net.core.optmem_max=8388608
sysctl -w net.ipv4.udp_mem='1048576 4194304 8388608'
sysctl -w net.ipv4.udp_rmem_min=1048576
sysctl -w net.ipv4.udp_wmem_min=1048576
wpa_supplicant -d Dnl80211 -c/etc/wpa_supplicant.conf -iwlan0 -B
wpa_cli -iwlan0 disconnect
for i in `wpa_cli -iwlan0 list_networks | grep ^[0-9] | cut -f1`; do wpa_cli -iwlan0 remove_network $i; done
wpa_cli -iwlan0 add_network
wpa_cli -iwlan0 set_network 0 auth_alg OPEN
wpa_cli -iwlan0 set_network 0 key_mgmt NONE
wpa_cli -iwlan0 set_network 0 mode 0
wpa_cli -iwlan0 set_network 0 ssid '"LAPTOP178_Network"'
wpa_cli -iwlan0 select_network 0
wpa_cli -iwlan0 enable_network 0
wpa_cli -iwlan0 reassociate
udhcpc -i wlan0
ethtool -C eth0 rx-usecs 500

and it is configured as an ETH-WLAN bridge by running:

echo 1 > /proc/sys/net/ipv4/ip_forward
iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
iptables -t nat -A POSTROUTING -o wlan0 -j MASQUERADE

I have verified that the setup works, by:

  1. running iperfs in the two ends (I replaced DeviceX with another PC). I can reach almost 100Mbps through WL1835 !
  2. but also by running the above steps, with DeviceX in a different mode (testing mode from now on), which only requires much less traffic back and forth and it doesn't send continuously after that, but only for a couple of seconds. This mode NEVER fails.

The problem is that in the real scenario some UDP packets don't make it through the AM3358EVM in the step 1, meaning the PC->DeviceX direction. I've seen it work perfectly FEW times, but most of the times (99%) it just fails. I am monitoring the traffic at the PC's eth with wireshark and also with a wifi sniffer. I 've also used tcpdump on AM3358EVM and have been checking the statistics of ifconfig. When the problem occurs I see all of the packets getting out of the router, but not all of them received by AM3358EVM's wlan interface. There are no packet drops reported neither in the wlan, nor in the eth interface.

One clue that maybe is helpful is that after a failure, if I just rerun the script which connects the EVM to the router the testing mode is working again. 

As I 've already said, the same failure is there with kernel 3.2 and drivers ol_r8.a6.02, with kernel 3.2 and drivers ol_r8.a8.10 and with kernel 3.12 and the new drivers.

I also checked the driver debug info (3.12 kernel) and got the following results:

echo 8 > /proc/sys/kernel/printk
echo 0x3820 > /sys/module/wlcore/parameters/debug_level
cat /proc/kmsg

[ 2449.284843] wlcore: mac80211 ampdu action 0 tid 4
[ 2449.290392] wlcore: mac80211 ampdu: Rx tid 4 action 0
[ 2449.295780] wlcore: acx ba receiver session setting
<7>[ 2449.284843] wlcore: mac80211 ampdu action [ 2449.301192] wlcore: cmd configure (47)
0 tid 4
<7>[ 2449.290392] wlcore: mac80211 ampd[ 2449.310217] wlcore: EVENT on mbox 0
u: Rx tid 4 action 0
<7>[ 2449.295780] wlcore: [ 2449.317315] wlcore: MBOX vector: 0x2000
acx ba receiver session setting
[ 2449.325388] wlcore: DUMMY_PACKET_ID_EVENT_ID
[ 2449.385400] wlcore: EVENT on mbox 1
[ 2449.389266] wlcore: MBOX vector: 0x2000
[ 2449.393350] wlcore: DUMMY_PACKET_ID_EVENT_ID
[ 2449.514369] wlcore: EVENT on mbox 0
[ 2449.518124] wlcore: MBOX vector: 0x2000
[ 2449.522239] wlcore: DUMMY_PACKET_ID_EVENT_ID

I only show the results for 0x3820, because the rest parameters didn't output anything OR the system didn't work when I was testing them. Specifically the ones that broke the system were:

  1. 0x1 (DEBUG_IRQ)
  2. 0x40 (DEBUG_TX)
  3. 0x80 (DEBUG_RX)

and their outputs are in the attachment.1464.driver_debug.txt

When I looked into the results of 0x3820, I found out that it has to do with the AMPDU_AGGREGATION feature. So, then I built the drivers with this feature disabled (by setting the flag IEEE80211_HW_AMPDU_AGGREGATION equal to 0 in drivers/net/wireless/mac80211_hwsim.c and drivers/net/wireless/ti/wlcore/main.c files). Indeed they worked and I got no message at all now for 0x3820, BUT the problem is still here and the speed of the connection is only the half now (iperfs). So I 'm gonna enable aggregation again.

I also compiled a custom kernel, adding some networking features, without any success. I included the dynamic debug feature in that one, but I think I need some advice on where to look now using them.

So any ideas?

Any proposed tests with driver dynamic debug?

Any question?

That issue has been bothering me for weeks and it seems that the problem lays 100% on the AM3358EVM side. I would really appreciate any help : )

Brgds,

Giorgos

  • Hi Giorgos,

    Please follow the below link to enable dynamic debugging:
    http://processors.wiki.ti.com/index.php/WL18xx_Driver_Debug

    I think you are missing the "echo -n 'module wlcore +p' > /sys/kernel/debug/dynamic_debug/control" commands.

    Once you are able to get the driver logs, please share also a corresponding wireshark log (taken along with the driver logs)

    Regards,
    Gigi Joseph.

  • Hello Joseph,

    this is exactly the link I 'm following. There are two sections there:

    1. "Debug with kernel messages"
    2. "Dynamic debug"

    The info I provided so far were taken when I followed the "debug with kernel messages". Therefore I don't understand what you mean by "you are missing the "echo.." commands".

    Anyway, since I need to check the dynamic debug too I have to build a custom kernel with CONFIG_DYNAMIC_DEBUG=y.

    Well, I have already done that, BUT I have included wlcore, wl18xx, etc in the kernel, I haven't built them as modules. In that case (which is fine I guess, right?) I guess the commands of the link you provided:

    "echo -n 'module wlcore +p' > /sys/kernel/debug/dynamic_debug/control"

    must change to something else? Since they are not modules anymore.

    Finally, please let me know exactly which driver debug logs you need. And I'll send them together with a wireshark log as you asked.

    Thaks for your help,

    Giorgos

  • Anyway, I'm building a kernel with wlcore, wl18xx, wl12xx, max80211 and cfg80211 built as modules, so as to be 100% consistent with the guidelines.

    But I also face a different problem. When I try to install the custom kernel, by:

    make linux_install

    in the root directory of the new SDK, I get an error that the .dtb file cannot be found in <SDK7.0>/board_support/linux-3.12.10-ti2013.12.01/arch/arm/boot/dts/ folder.

    What I'm doing is simply copy the file am335x-evm.dtb from <SDK7.0>/board_support/prebuilt-images/ to the folder mentioned above and then it works fine.

    But I need your confirmation that this is ok to do and doesn't break something else. Or else, please let me know how to overcome this issue.

    Brgds,

    Giorgos

  • Also, have in mind that after migrating to SDK 7 and the 3.12 kernel I got the following issue:

    4 minutes after running the commands that I described in my first post:

    sysctl -w net.core.rmem_max=8388608
    sysctl -w net.core.wmem_max=8388608
    sysctl -w net.core.rmem_default=1048576
    sysctl -w net.core.wmem_default=1048576
    sysctl -w net.core.optmem_max=8388608
    sysctl -w net.ipv4.udp_mem='1048576 4194304 8388608'
    sysctl -w net.ipv4.udp_rmem_min=1048576
    sysctl -w net.ipv4.udp_wmem_min=1048576
    wpa_supplicant -d Dnl80211 -c/etc/wpa_supplicant.conf -iwlan0 -B
    wpa_cli -iwlan0 disconnect
    for i in `wpa_cli -iwlan0 list_networks | grep ^[0-9] | cut -f1`; do wpa_cli -iwlan0 remove_network $i; done
    wpa_cli -iwlan0 add_network
    wpa_cli -iwlan0 set_network 0 auth_alg OPEN
    wpa_cli -iwlan0 set_network 0 key_mgmt NONE
    wpa_cli -iwlan0 set_network 0 mode 0
    wpa_cli -iwlan0 set_network 0 ssid '"LAPTOP178_Network"'
    wpa_cli -iwlan0 select_network 0
    wpa_cli -iwlan0 enable_network 0
    wpa_cli -iwlan0 reassociate
    udhcpc -i wlan0
    ethtool -C eth0 rx-usecs 500
    
    echo 1 > /proc/sys/net/ipv4/ip_forward
    iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
    iptables -t nat -A POSTROUTING -o wlan0 -j MASQUERADE

    and WITHOUT initiating any traffic or running anything on the AM3358EVM, I get the following error log:

    [  766.559490] BUG: scheduling while atomic: kworker/u2:1/9/0x00000400
    [  766.566176] Modules linked in: ipt_MASQUERADE iptable_nat nf_conntrack_ipv4 nf_defrag_ipv4 nf_nat_ipv4 nf_nat nf_conntrack ip_tables x_tables g_mass_storage usb_f_mass_storage
     libcomposite configfs bufferclass_ti(O) omaplfb(O) cryptodev(O) wl18xx wlcore mac80211 cfg80211 musb_dsps musb_hdrc snd_soc_omap snd_pcm_dmaengine pvrsrvkm(O) snd_soc_evm wlcore
    _sdio snd_soc_davinci_mcasp snd_soc_davinci snd_soc_tlv320aic3x lis3lv02d_i2c lm75 lis3lv02d tsl2550 input_polldev snd_soc_core snd_compress regmap_spi btwilink snd_pcm snd_page_
    alloc snd_timer snd soundcore ti_am335x_adc industrialio musb_am335x bluetooth
    [  766.622899] CPU: 0 PID: 9 Comm: kworker/u2:1 Tainted: G           O 3.12.10-ti2013.12.01 #1
    [  766.631843] Workqueue: wl12xx_wq wl1271_netstack_work [wlcore]
    [  766.638008] Backtrace: 
    [  766.640617] [<c0017880>] (dump_backtrace+0x0/0x10c) from [<c0017a1c>] (show_stack+0x18/0x1c)
    [  766.649550]  r6:dd0b8000 r5:c07f6ca0 r4:00000000 r3:c07f737c
    [  766.655574] [<c0017a04>] (show_stack+0x0/0x1c) from [<c056b5b0>] (dump_stack+0x20/0x28)
    [  766.664056] [<c056b590>] (dump_stack+0x0/0x28) from [<c05697a4>] (__schedule_bug+0x4c/0x64)
    [  766.672904] [<c0569758>] (__schedule_bug+0x0/0x64) from [<c056ddbc>] (__schedule+0x364/0x3cc)
    [  766.681926]  r4:dd080040 r3:00000000
    [  766.685719] [<c056da58>] (__schedule+0x0/0x3cc) from [<c056e0ec>] (schedule+0x38/0x78)
    [  766.694108] [<c056e0b4>] (schedule+0x0/0x78) from [<c056e28c>] (schedule_preempt_disabled+0x10/0x14)
    [  766.703779] [<c056e27c>] (schedule_preempt_disabled+0x0/0x14) from [<c056d22c>] (__mutex_lock_slowpath+0x80/0xcc)
    [  766.714645] [<c056d1ac>] (__mutex_lock_slowpath+0x0/0xcc) from [<c056d2b0>] (mutex_lock+0x38/0x3c)
    [  766.724122]  r8:dd488b00 r7:00000001 r6:dc170c54 r5:dc170c20 r4:dc170c54
    [  766.731293] [<c056d278>] (mutex_lock+0x0/0x3c) from [<bf26e550>] (wl18xx_sta_rc_update+0x50/0xd8 [wl18xx])
    [  766.741515]  r4:dc3e9abc r3:00000001
    [  766.745342] [<bf26e500>] (wl18xx_sta_rc_update+0x0/0xd8 [wl18xx]) from [<bf2382dc>] (wlcore_op_sta_rc_update+0x38/0x68 [wlcore])
    [  766.757575]  r7:dd4e9734 r6:dc3e9440 r5:dc170320 r4:dc3e99c0
    [  766.763766] [<bf2382a4>] (wlcore_op_sta_rc_update+0x0/0x68 [wlcore]) from [<bf2017c8>] (ieee80211_rx_handlers+0x15dc/0x1e98 [mac80211])
    [  766.776652]  r5:dd0b9e0c r4:dd0b9e60
    [  766.780564] [<bf2001ec>] (ieee80211_rx_handlers+0x0/0x1e98 [mac80211]) from [<bf2024b8>] (ieee80211_prepare_and_rx_handle+0x230/0x9b4 [mac80211])
    [  766.794485] [<bf202288>] (ieee80211_prepare_and_rx_handle+0x0/0x9b4 [mac80211]) from [<bf203048>] (ieee80211_rx+0x40c/0x79c [mac80211])
    [  766.807463] [<bf202c3c>] (ieee80211_rx+0x0/0x79c [mac80211]) from [<bf238588>] (wl1271_flush_deferred_work+0x2c/0x74 [wlcore])
    [  766.819560] [<bf23855c>] (wl1271_flush_deferred_work+0x0/0x74 [wlcore]) from [<bf2385ec>] (wl1271_netstack_work+0x1c/0x2c [wlcore])
    [  766.832071]  r7:dd07c300 r6:dd074800 r5:dc170c20 r4:dc170e8c
    [  766.838109] [<bf2385d0>] (wl1271_netstack_work+0x0/0x2c [wlcore]) from [<c0059f50>] (process_one_work+0xfc/0x340)
    [  766.848964]  r5:dc170e8c r4:dd0a7d40
    [  766.852771] [<c0059e54>] (process_one_work+0x0/0x340) from [<c005a558>] (worker_thread+0x130/0x370)
    [  766.862349] [<c005a428>] (worker_thread+0x0/0x370) from [<c005fbdc>] (kthread+0xac/0xb8)
    [  766.870921] [<c005fb30>] (kthread+0x0/0xb8) from [<c00146f8>] (ret_from_fork+0x14/0x3c)
    [  766.879390]  r7:00000000 r6:00000000 r5:c005fb30 r4:dd095e74
    [  766.886255] BUG: scheduling while atomic: kworker/u2:1/9/0x00000400
    [  766.892925] Modules linked in: ipt_MASQUERADE iptable_nat nf_conntrack_ipv4 nf_defrag_ipv4 nf_nat_ipv4 nf_nat nf_conntrack ip_tables x_tables g_mass_storage usb_f_mass_storage
     libcomposite configfs bufferclass_ti(O) omaplfb(O) cryptodev(O) wl18xx wlcore mac80211 cfg80211 musb_dsps musb_hdrc snd_soc_omap snd_pcm_dmaengine pvrsrvkm(O) snd_soc_evm wlcore
    _sdio snd_soc_davinci_mcasp snd_soc_davinci snd_soc_tlv320aic3x lis3lv02d_i2c lm75 lis3lv02d tsl2550 input_polldev snd_soc_core snd_compress regmap_spi btwilink snd_pcm snd_page_
    alloc snd_timer snd soundcore ti_am335x_adc industrialio musb_am335x bluetooth
    [  766.949613] CPU: 0 PID: 9 Comm: kworker/u2:1 Tainted: G        W  O 3.12.10-ti2013.12.01 #1
    [  766.958515] Workqueue: wl12xx_wq wl1271_netstack_work [wlcore]
    [  766.964696] Backtrace: 
    [  766.967303] [<c0017880>] (dump_backtrace+0x0/0x10c) from [<c0017a1c>] (show_stack+0x18/0x1c)
    [  766.976233]  r6:dd0b8000 r5:c07f6ca0 r4:00000000 r3:c07f737c
    [  766.982261] [<c0017a04>] (show_stack+0x0/0x1c) from [<c056b5b0>] (dump_stack+0x20/0x28)
    [  766.990726] [<c056b590>] (dump_stack+0x0/0x28) from [<c05697a4>] (__schedule_bug+0x4c/0x64)
    [  766.999583] [<c0569758>] (__schedule_bug+0x0/0x64) from [<c056ddbc>] (__schedule+0x364/0x3cc)
    [  767.008608]  r4:dd080040 r3:00000000
    [  767.012412] [<c056da58>] (__schedule+0x0/0x3cc) from [<c056e0ec>] (schedule+0x38/0x78)
    [  767.020787] [<c056e0b4>] (schedule+0x0/0x78) from [<c056c5f8>] (schedule_timeout+0xf8/0x148)
    [  767.029720] [<c056c500>] (schedule_timeout+0x0/0x148) from [<c056df7c>] (wait_for_common+0xb4/0x140)
    [  767.039391] [<c056dec8>] (wait_for_common+0x0/0x140) from [<c056e020>] (wait_for_completion+0x18/0x1c)
    [  767.049251] [<c056e008>] (wait_for_completion+0x0/0x1c) from [<c046e1dc>] (mmc_wait_for_req+0xb8/0x15c)
    [  767.059193] [<c046e124>] (mmc_wait_for_req+0x0/0x15c) from [<c047821c>] (mmc_io_rw_extended+0x2d0/0x320)
    [  767.069218]  r8:dd2ad000 r7:00000100 r6:01fffe00 r5:0000000c r4:00000001
    r3:dd0b9b18
    [  767.077536] [<c0477f4c>] (mmc_io_rw_extended+0x0/0x320) from [<c0479510>] (sdio_io_rw_ext_helper+0x134/0x1a8)
    [  767.088031] [<c04793dc>] (sdio_io_rw_ext_helper+0x0/0x1a8) from [<c0479604>] (sdio_memcpy_toio+0x28/0x30)
    [  767.098169] [<c04795dc>] (sdio_memcpy_toio+0x0/0x30) from [<bf12e220>] (wl12xx_sdio_raw_write+0x74/0x130 [wlcore_sdio])
    [  767.109616] [<bf12e1ac>] (wl12xx_sdio_raw_write+0x0/0x130 [wlcore_sdio]) from [<bf241104>] (wlcore_cmd_send_failsafe+0x9c/0x4c0 [wlcore])
    [  767.122737] [<bf241068>] (wlcore_cmd_send_failsafe+0x0/0x4c0 [wlcore]) from [<bf2427e0>] (wlcore_cmd_configure_failsafe+0x64/0xac [wlcore])
    [  767.136039] [<bf24277c>] (wlcore_cmd_configure_failsafe+0x0/0xac [wlcore]) from [<bf242844>] (wl1271_cmd_configure+0x1c/0x28 [wlcore])
    [  767.148821]  r6:00000001 r5:dc170c20 r4:dd5728c0
    [  767.153791] [<bf242828>] (wl1271_cmd_configure+0x0/0x28 [wlcore]) from [<bf2706c4>] (wl18xx_acx_peer_ht_operation_mode+0x5c/0xac [wl18xx])
    [  767.166989] [<bf270668>] (wl18xx_acx_peer_ht_operation_mode+0x0/0xac [wl18xx]) from [<bf26e59c>] (wl18xx_sta_rc_update+0x9c/0xd8 [wl18xx])
    [  767.180147]  r7:00000001 r6:dc170c54 r5:dc170c20 r4:dc3e9abc
    [  767.186195] [<bf26e500>] (wl18xx_sta_rc_update+0x0/0xd8 [wl18xx]) from [<bf2382dc>] (wlcore_op_sta_rc_update+0x38/0x68 [wlcore])
    [  767.198434]  r7:dd4e9734 r6:dc3e9440 r5:dc170320 r4:dc3e99c0
    [  767.204585] [<bf2382a4>] (wlcore_op_sta_rc_update+0x0/0x68 [wlcore]) from [<bf2017c8>] (ieee80211_rx_handlers+0x15dc/0x1e98 [mac80211])
    [  767.217467]  r5:dd0b9e0c r4:dd0b9e60
    [  767.221384] [<bf2001ec>] (ieee80211_rx_handlers+0x0/0x1e98 [mac80211]) from [<bf2024b8>] (ieee80211_prepare_and_rx_handle+0x230/0x9b4 [mac80211])
    [  767.235298] [<bf202288>] (ieee80211_prepare_and_rx_handle+0x0/0x9b4 [mac80211]) from [<bf203048>] (ieee80211_rx+0x40c/0x79c [mac80211])
    [  767.248266] [<bf202c3c>] (ieee80211_rx+0x0/0x79c [mac80211]) from [<bf238588>] (wl1271_flush_deferred_work+0x2c/0x74 [wlcore])
    [  767.260361] [<bf23855c>] (wl1271_flush_deferred_work+0x0/0x74 [wlcore]) from [<bf2385ec>] (wl1271_netstack_work+0x1c/0x2c [wlcore])
    [  767.272868]  r7:dd07c300 r6:dd074800 r5:dc170c20 r4:dc170e8c
    [  767.278896] [<bf2385d0>] (wl1271_netstack_work+0x0/0x2c [wlcore]) from [<c0059f50>] (process_one_work+0xfc/0x340)
    [  767.289754]  r5:dc170e8c r4:dd0a7d40
    [  767.293556] [<c0059e54>] (process_one_work+0x0/0x340) from [<c005a558>] (worker_thread+0x130/0x370)
    [  767.303130] [<c005a428>] (worker_thread+0x0/0x370) from [<c005fbdc>] (kthread+0xac/0xb8)
    [  767.311704] [<c005fb30>] (kthread+0x0/0xb8) from [<c00146f8>] (ret_from_fork+0x14/0x3c)
    [  767.320156]  r7:00000000 r6:00000000 r5:c005fb30 r4:dd095e74
    [  767.333499] BUG: scheduling while atomic: kworker/u2:1/9/0x00000400
    [  767.340141] Modules linked in: ipt_MASQUERADE iptable_nat nf_conntrack_ipv4 nf_defrag_ipv4 nf_nat_ipv4 nf_nat nf_conntrack ip_tables x_tables g_mass_storage usb_f_mass_storage
     libcomposite configfs bufferclass_ti(O) omaplfb(O) cryptodev(O) wl18xx wlcore mac80211 cfg80211 musb_dsps musb_hdrc snd_soc_omap snd_pcm_dmaengine pvrsrvkm(O) snd_soc_evm wlcore
    _sdio snd_soc_davinci_mcasp snd_soc_davinci snd_soc_tlv320aic3x lis3lv02d_i2c lm75 lis3lv02d tsl2550 input_polldev snd_soc_core snd_compress regmap_spi btwilink snd_pcm snd_page_
    alloc snd_timer snd soundcore ti_am335x_adc industrialio musb_am335x bluetooth
    [  767.396847] CPU: 0 PID: 9 Comm: kworker/u2:1 Tainted: G        W  O 3.12.10-ti2013.12.01 #1
    [  767.405758] Workqueue: wl12xx_wq wl1271_netstack_work [wlcore]
    [  767.411936] Backtrace: 
    [  767.414540] [<c0017880>] (dump_backtrace+0x0/0x10c) from [<c0017a1c>] (show_stack+0x18/0x1c)
    [  767.423470]  r6:dd0b8000 r5:c07f6ca0 r4:00000000 r3:c07f737c
    [  767.429477] [<c0017a04>] (show_stack+0x0/0x1c) from [<c056b5b0>] (dump_stack+0x20/0x28)
    [  767.437955] [<c056b590>] (dump_stack+0x0/0x28) from [<c05697a4>] (__schedule_bug+0x4c/0x64)
    [  767.446806] [<c0569758>] (__schedule_bug+0x0/0x64) from [<c056ddbc>] (__schedule+0x364/0x3cc)
    [  767.455824]  r4:dd080040 r3:00000000
    [  767.459616] [<c056da58>] (__schedule+0x0/0x3cc) from [<c056e0ec>] (schedule+0x38/0x78)
    [  767.468002] [<c056e0b4>] (schedule+0x0/0x78) from [<c056c5f8>] (schedule_timeout+0xf8/0x148)
    [  767.476935] [<c056c500>] (schedule_timeout+0x0/0x148) from [<c056df7c>] (wait_for_common+0xb4/0x140)
    [  767.486605] [<c056dec8>] (wait_for_common+0x0/0x140) from [<c056e020>] (wait_for_completion+0x18/0x1c)
    [  767.496458] [<c056e008>] (wait_for_completion+0x0/0x1c) from [<c046e1dc>] (mmc_wait_for_req+0xb8/0x15c)
    [  767.506402] [<c046e124>] (mmc_wait_for_req+0x0/0x15c) from [<c047821c>] (mmc_io_rw_extended+0x2d0/0x320)
    [  767.516427]  r8:dd2ad000 r7:00000100 r6:01fffe00 r5:00000200 r4:00000002
    r3:dd0b9af0
    [  767.524745] [<c0477f4c>] (mmc_io_rw_extended+0x0/0x320) from [<c04794c0>] (sdio_io_rw_ext_helper+0xe4/0x1a8)
    [  767.535147] [<c04793dc>] (sdio_io_rw_ext_helper+0x0/0x1a8) from [<c0479604>] (sdio_memcpy_toio+0x28/0x30)
    [  767.545282] [<c04795dc>] (sdio_memcpy_toio+0x0/0x30) from [<bf12e220>] (wl12xx_sdio_raw_write+0x74/0x130 [wlcore_sdio])
    [  767.556735] [<bf12e1ac>] (wl12xx_sdio_raw_write+0x0/0x130 [wlcore_sdio]) from [<bf26ef20>] (wl18xx_trigger_cmd+0xa4/0xe8 [wl18xx])
    [  767.569211] [<bf26ee7c>] (wl18xx_trigger_cmd+0x0/0xe8 [wl18xx]) from [<bf24113c>] (wlcore_cmd_send_failsafe+0xd4/0x4c0 [wlcore])
    [  767.581454]  r7:00000001 r6:dd5728c0 r5:0000000c r4:dc170c20
    [  767.587511] [<bf241068>] (wlcore_cmd_send_failsafe+0x0/0x4c0 [wlcore]) from [<bf2427e0>] (wlcore_cmd_configure_failsafe+0x64/0xac [wlcore])
    [  767.600813] [<bf24277c>] (wlcore_cmd_configure_failsafe+0x0/0xac [wlcore]) from [<bf242844>] (wl1271_cmd_configure+0x1c/0x28 [wlcore])
    [  767.613595]  r6:00000001 r5:dc170c20 r4:dd5728c0
    [  767.618536] [<bf242828>] (wl1271_cmd_configure+0x0/0x28 [wlcore]) from [<bf2706c4>] (wl18xx_acx_peer_ht_operation_mode+0x5c/0xac [wl18xx])
    [  767.631732] [<bf270668>] (wl18xx_acx_peer_ht_operation_mode+0x0/0xac [wl18xx]) from [<bf26e59c>] (wl18xx_sta_rc_update+0x9c/0xd8 [wl18xx])
    [  767.644889]  r7:00000001 r6:dc170c54 r5:dc170c20 r4:dc3e9abc
    [  767.650926] [<bf26e500>] (wl18xx_sta_rc_update+0x0/0xd8 [wl18xx]) from [<bf2382dc>] (wlcore_op_sta_rc_update+0x38/0x68 [wlcore])
    [  767.663163]  r7:dd4e9734 r6:dc3e9440 r5:dc170320 r4:dc3e99c0
    [  767.669315] [<bf2382a4>] (wlcore_op_sta_rc_update+0x0/0x68 [wlcore]) from [<bf2017c8>] (ieee80211_rx_handlers+0x15dc/0x1e98 [mac80211])
    [  767.682196]  r5:dd0b9e0c r4:dd0b9e60
    [  767.686103] [<bf2001ec>] (ieee80211_rx_handlers+0x0/0x1e98 [mac80211]) from [<bf2024b8>] (ieee80211_prepare_and_rx_handle+0x230/0x9b4 [mac80211])
    [  767.700020] [<bf202288>] (ieee80211_prepare_and_rx_handle+0x0/0x9b4 [mac80211]) from [<bf203048>] (ieee80211_rx+0x40c/0x79c [mac80211])
    [  767.712994] [<bf202c3c>] (ieee80211_rx+0x0/0x79c [mac80211]) from [<bf238588>] (wl1271_flush_deferred_work+0x2c/0x74 [wlcore])
    [  767.725090] [<bf23855c>] (wl1271_flush_deferred_work+0x0/0x74 [wlcore]) from [<bf2385ec>] (wl1271_netstack_work+0x1c/0x2c [wlcore])
    [  767.737593]  r7:dd07c300 r6:dd074800 r5:dc170c20 r4:dc170e8c
    [  767.743639] [<bf2385d0>] (wl1271_netstack_work+0x0/0x2c [wlcore]) from [<c0059f50>] (process_one_work+0xfc/0x340)
    [  767.754489]  r5:dc170e8c r4:dd0a7d40
    [  767.758284] [<c0059e54>] (process_one_work+0x0/0x340) from [<c005a558>] (worker_thread+0x130/0x370)
    [  767.767859] [<c005a428>] (worker_thread+0x0/0x370) from [<c005fbdc>] (kthread+0xac/0xb8)
    [  767.776435] [<c005fb30>] (kthread+0x0/0xb8) from [<c00146f8>] (ret_from_fork+0x14/0x3c)
    [  767.784899]  r7:00000000 r6:00000000 r5:c005fb30 r4:dd095e74
    [  767.792537] BUG: scheduling while atomic: kworker/u2:1/9/0x00000400
    [  767.799169] Modules linked in: ipt_MASQUERADE iptable_nat nf_conntrack_ipv4 nf_defrag_ipv4 nf_nat_ipv4 nf_nat nf_conntrack ip_tables x_tables g_mass_storage usb_f_mass_storage
     libcomposite configfs bufferclass_ti(O) omaplfb(O) cryptodev(O) wl18xx wlcore mac80211 cfg80211 musb_dsps musb_hdrc snd_soc_omap snd_pcm_dmaengine pvrsrvkm(O) snd_soc_evm wlcore
    _sdio snd_soc_davinci_mcasp snd_soc_davinci snd_soc_tlv320aic3x lis3lv02d_i2c lm75 lis3lv02d tsl2550 input_polldev snd_soc_core snd_compress regmap_spi btwilink snd_pcm snd_page_
    alloc snd_timer snd soundcore ti_am335x_adc industrialio musb_am335x bluetooth
    [  767.855903] CPU: 0 PID: 9 Comm: kworker/u2:1 Tainted: G        W  O 3.12.10-ti2013.12.01 #1
    [  767.864819] Workqueue: wl12xx_wq wl1271_netstack_work [wlcore]
    [  767.871001] Backtrace: 
    [  767.873607] [<c0017880>] (dump_backtrace+0x0/0x10c) from [<c0017a1c>] (show_stack+0x18/0x1c)
    [  767.882532]  r6:dd0b8000 r5:c07f6ca0 r4:00000000 r3:c07f737c
    [  767.888544] [<c0017a04>] (show_stack+0x0/0x1c) from [<c056b5b0>] (dump_stack+0x20/0x28)
    [  767.897021] [<c056b590>] (dump_stack+0x0/0x28) from [<c05697a4>] (__schedule_bug+0x4c/0x64)
    [  767.905868] [<c0569758>] (__schedule_bug+0x0/0x64) from [<c056ddbc>] (__schedule+0x364/0x3cc)
    [  767.914883]  r4:dd080040 r3:00000000
    [  767.918679] [<c056da58>] (__schedule+0x0/0x3cc) from [<c056e0ec>] (schedule+0x38/0x78)
    [  767.927061] [<c056e0b4>] (schedule+0x0/0x78) from [<c056c5f8>] (schedule_timeout+0xf8/0x148)
    [  767.935998] [<c056c500>] (schedule_timeout+0x0/0x148) from [<c056df7c>] (wait_for_common+0xb4/0x140)
    [  767.945665] [<c056dec8>] (wait_for_common+0x0/0x140) from [<c056e020>] (wait_for_completion+0x18/0x1c)
    [  767.955521] [<c056e008>] (wait_for_completion+0x0/0x1c) from [<c046e1dc>] (mmc_wait_for_req+0xb8/0x15c)
    [  767.965463] [<c046e124>] (mmc_wait_for_req+0x0/0x15c) from [<c047821c>] (mmc_io_rw_extended+0x2d0/0x320)
    [  767.975490]  r8:dd2ad000 r7:00000100 r6:01fffe00 r5:000000e4 r4:00000001
    r3:dd0b9af0
    [  767.983811] [<c0477f4c>] (mmc_io_rw_extended+0x0/0x320) from [<c0479510>] (sdio_io_rw_ext_helper+0x134/0x1a8)
    [  767.994303] [<c04793dc>] (sdio_io_rw_ext_helper+0x0/0x1a8) from [<c0479604>] (sdio_memcpy_toio+0x28/0x30)
    [  768.004442] [<c04795dc>] (sdio_memcpy_toio+0x0/0x30) from [<bf12e220>] (wl12xx_sdio_raw_write+0x74/0x130 [wlcore_sdio])
    [  768.015903] [<bf12e1ac>] (wl12xx_sdio_raw_write+0x0/0x130 [wlcore_sdio]) from [<bf26ef20>] (wl18xx_trigger_cmd+0xa4/0xe8 [wl18xx])
    [  768.028375] [<bf26ee7c>] (wl18xx_trigger_cmd+0x0/0xe8 [wl18xx]) from [<bf24113c>] (wlcore_cmd_send_failsafe+0xd4/0x4c0 [wlcore])
    [  768.040615]  r7:00000001 r6:dd5728c0 r5:0000000c r4:dc170c20
    [  768.046682] [<bf241068>] (wlcore_cmd_send_failsafe+0x0/0x4c0 [wlcore]) from [<bf2427e0>] (wlcore_cmd_configure_failsafe+0x64/0xac [wlcore])
    [  768.059986] [<bf24277c>] (wlcore_cmd_configure_failsafe+0x0/0xac [wlcore]) from [<bf242844>] (wl1271_cmd_configure+0x1c/0x28 [wlcore])
    [  768.072769]  r6:00000001 r5:dc170c20 r4:dd5728c0
    [  768.077712] [<bf242828>] (wl1271_cmd_configure+0x0/0x28 [wlcore]) from [<bf2706c4>] (wl18xx_acx_peer_ht_operation_mode+0x5c/0xac [wl18xx])
    [  768.090908] [<bf270668>] (wl18xx_acx_peer_ht_operation_mode+0x0/0xac [wl18xx]) from [<bf26e59c>] (wl18xx_sta_rc_update+0x9c/0xd8 [wl18xx])
    [  768.104065]  r7:00000001 r6:dc170c54 r5:dc170c20 r4:dc3e9abc
    [  768.110104] [<bf26e500>] (wl18xx_sta_rc_update+0x0/0xd8 [wl18xx]) from [<bf2382dc>] (wlcore_op_sta_rc_update+0x38/0x68 [wlcore])
    [  768.122344]  r7:dd4e9734 r6:dc3e9440 r5:dc170320 r4:dc3e99c0
    [  768.128503] [<bf2382a4>] (wlcore_op_sta_rc_update+0x0/0x68 [wlcore]) from [<bf2017c8>] (ieee80211_rx_handlers+0x15dc/0x1e98 [mac80211])
    [  768.141385]  r5:dd0b9e0c r4:dd0b9e60
    [  768.145299] [<bf2001ec>] (ieee80211_rx_handlers+0x0/0x1e98 [mac80211]) from [<bf2024b8>] (ieee80211_prepare_and_rx_handle+0x230/0x9b4 [mac80211])
    [  768.159211] [<bf202288>] (ieee80211_prepare_and_rx_handle+0x0/0x9b4 [mac80211]) from [<bf203048>] (ieee80211_rx+0x40c/0x79c [mac80211])
    [  768.172181] [<bf202c3c>] (ieee80211_rx+0x0/0x79c [mac80211]) from [<bf238588>] (wl1271_flush_deferred_work+0x2c/0x74 [wlcore])
    [  768.184277] [<bf23855c>] (wl1271_flush_deferred_work+0x0/0x74 [wlcore]) from [<bf2385ec>] (wl1271_netstack_work+0x1c/0x2c [wlcore])
    [  768.196783]  r7:dd07c300 r6:dd074800 r5:dc170c20 r4:dc170e8c
    [  768.202824] [<bf2385d0>] (wl1271_netstack_work+0x0/0x2c [wlcore]) from [<c0059f50>] (process_one_work+0xfc/0x340)
    [  768.213682]  r5:dc170e8c r4:dd0a7d40
    [  768.217474] [<c0059e54>] (process_one_work+0x0/0x340) from [<c005a558>] (worker_thread+0x130/0x370)
    [  768.227054] [<c005a428>] (worker_thread+0x0/0x370) from [<c005fbdc>] (kthread+0xac/0xb8)
    [  768.235628] [<c005fb30>] (kthread+0x0/0xb8) from [<c00146f8>] (ret_from_fork+0x14/0x3c)
    [  768.244096]  r7:00000000 r6:00000000 r5:c005fb30 r4:dd095e74
    [  768.258372] BUG: scheduling while atomic: kworker/u2:1/9/0x00000400
    [  768.265035] Modules linked in: ipt_MASQUERADE iptable_nat nf_conntrack_ipv4 nf_defrag_ipv4 nf_nat_ipv4 nf_nat nf_conntrack ip_tables x_tables g_mass_storage usb_f_mass_storage
     libcomposite configfs bufferclass_ti(O) omaplfb(O) cryptodev(O) wl18xx wlcore mac80211 cfg80211 musb_dsps musb_hdrc snd_soc_omap snd_pcm_dmaengine pvrsrvkm(O) snd_soc_evm wlcore
    _sdio snd_soc_davinci_mcasp snd_soc_davinci snd_soc_tlv320aic3x lis3lv02d_i2c lm75 lis3lv02d tsl2550 input_polldev snd_soc_core snd_compress regmap_spi btwilink snd_pcm snd_page_
    alloc snd_timer snd soundcore ti_am335x_adc industrialio musb_am335x bluetooth
    [  768.321718] CPU: 0 PID: 9 Comm: kworker/u2:1 Tainted: G        W  O 3.12.10-ti2013.12.01 #1
    [  768.330615] Workqueue: wl12xx_wq wl1271_netstack_work [wlcore]
    [  768.336797] Backtrace: 
    [  768.339403] [<c0017880>] (dump_backtrace+0x0/0x10c) from [<c0017a1c>] (show_stack+0x18/0x1c)
    [  768.348328]  r6:dd0b8000 r5:c07f6ca0 r4:00000000 r3:c07f737c
    [  768.354347] [<c0017a04>] (show_stack+0x0/0x1c) from [<c056b5b0>] (dump_stack+0x20/0x28)
    [  768.362825] [<c056b590>] (dump_stack+0x0/0x28) from [<c05697a4>] (__schedule_bug+0x4c/0x64)
    [  768.371671] [<c0569758>] (__schedule_bug+0x0/0x64) from [<c056ddbc>] (__schedule+0x364/0x3cc)
    [  768.380674]  r4:dd080040 r3:00000000
    [  768.384477] [<c056da58>] (__schedule+0x0/0x3cc) from [<c056e0ec>] (schedule+0x38/0x78)
    [  768.392862] [<c056e0b4>] (schedule+0x0/0x78) from [<c056c5f8>] (schedule_timeout+0xf8/0x148)
    [  768.401796] [<c056c500>] (schedule_timeout+0x0/0x148) from [<c056df7c>] (wait_for_common+0xb4/0x140)
    [  768.411465] [<c056dec8>] (wait_for_common+0x0/0x140) from [<c056e020>] (wait_for_completion+0x18/0x1c)
    [  768.421321] [<c056e008>] (wait_for_completion+0x0/0x1c) from [<c046e1dc>] (mmc_wait_for_req+0xb8/0x15c)
    [  768.431262] [<c046e124>] (mmc_wait_for_req+0x0/0x15c) from [<c047821c>] (mmc_io_rw_extended+0x2d0/0x320)
    [  768.441288]  r8:dd2ad000 r7:00000200 r6:01fffe00 r5:00000004 r4:00000001
    r3:dd0b9b18
    [  768.449594] [<c0477f4c>] (mmc_io_rw_extended+0x0/0x320) from [<c0479510>] (sdio_io_rw_ext_helper+0x134/0x1a8)
    [  768.460089] [<c04793dc>] (sdio_io_rw_ext_helper+0x0/0x1a8) from [<c0479694>] (sdio_memcpy_fromio+0x20/0x28)
    [  768.470408] [<c0479674>] (sdio_memcpy_fromio+0x0/0x28) from [<bf12e350>] (wl12xx_sdio_raw_read+0x74/0x130 [wlcore_sdio])
    [  768.481944] [<bf12e2dc>] (wl12xx_sdio_raw_read+0x0/0x130 [wlcore_sdio]) from [<bf2411b4>] (wlcore_cmd_send_failsafe+0x14c/0x4c0 [wlcore])
    [  768.495062] [<bf241068>] (wlcore_cmd_send_failsafe+0x0/0x4c0 [wlcore]) from [<bf2427e0>] (wlcore_cmd_configure_failsafe+0x64/0xac [wlcore])
    [  768.508364] [<bf24277c>] (wlcore_cmd_configure_failsafe+0x0/0xac [wlcore]) from [<bf242844>] (wl1271_cmd_configure+0x1c/0x28 [wlcore])
    [  768.521147]  r6:00000001 r5:dc170c20 r4:dd5728c0
    [  768.526107] [<bf242828>] (wl1271_cmd_configure+0x0/0x28 [wlcore]) from [<bf2706c4>] (wl18xx_acx_peer_ht_operation_mode+0x5c/0xac [wl18xx])
    [  768.539302] [<bf270668>] (wl18xx_acx_peer_ht_operation_mode+0x0/0xac [wl18xx]) from [<bf26e59c>] (wl18xx_sta_rc_update+0x9c/0xd8 [wl18xx])
    [  768.552459]  r7:00000001 r6:dc170c54 r5:dc170c20 r4:dc3e9abc
    [  768.558498] [<bf26e500>] (wl18xx_sta_rc_update+0x0/0xd8 [wl18xx]) from [<bf2382dc>] (wlcore_op_sta_rc_update+0x38/0x68 [wlcore])
    [  768.570738]  r7:dd4e9734 r6:dc3e9440 r5:dc170320 r4:dc3e99c0
    [  768.576891] [<bf2382a4>] (wlcore_op_sta_rc_update+0x0/0x68 [wlcore]) from [<bf2017c8>] (ieee80211_rx_handlers+0x15dc/0x1e98 [mac80211])
    [  768.589767]  r5:dd0b9e0c r4:dd0b9e60
    [  768.593689] [<bf2001ec>] (ieee80211_rx_handlers+0x0/0x1e98 [mac80211]) from [<bf2024b8>] (ieee80211_prepare_and_rx_handle+0x230/0x9b4 [mac80211])
    [  768.607605] [<bf202288>] (ieee80211_prepare_and_rx_handle+0x0/0x9b4 [mac80211]) from [<bf203048>] (ieee80211_rx+0x40c/0x79c [mac80211])
    [  768.620577] [<bf202c3c>] (ieee80211_rx+0x0/0x79c [mac80211]) from [<bf238588>] (wl1271_flush_deferred_work+0x2c/0x74 [wlcore])
    [  768.632674] [<bf23855c>] (wl1271_flush_deferred_work+0x0/0x74 [wlcore]) from [<bf2385ec>] (wl1271_netstack_work+0x1c/0x2c [wlcore])
    [  768.645178]  r7:dd07c300 r6:dd074800 r5:dc170c20 r4:dc170e8c
    [  768.651223] [<bf2385d0>] (wl1271_netstack_work+0x0/0x2c [wlcore]) from [<c0059f50>] (process_one_work+0xfc/0x340)
    [  768.662076]  r5:dc170e8c r4:dd0a7d40
    [  768.665867] [<c0059e54>] (process_one_work+0x0/0x340) from [<c005a558>] (worker_thread+0x130/0x370)
    [  768.675443] [<c005a428>] (worker_thread+0x0/0x370) from [<c005fbdc>] (kthread+0xac/0xb8)
    [  768.684018] [<c005fb30>] (kthread+0x0/0xb8) from [<c00146f8>] (ret_from_fork+0x14/0x3c)
    [  768.692481]  r7:00000000 r6:00000000 r5:c005fb30 r4:dd095e74
    [  768.699995] BUG: scheduling while atomic: kworker/u2:1/9/0x00000400
    [  768.706657] Modules linked in: ipt_MASQUERADE iptable_nat nf_conntrack_ipv4 nf_defrag_ipv4 nf_nat_ipv4 nf_nat nf_conntrack ip_tables x_tables g_mass_storage usb_f_mass_storage
     libcomposite configfs bufferclass_ti(O) omaplfb(O) cryptodev(O) wl18xx wlcore mac80211 cfg80211 musb_dsps musb_hdrc snd_soc_omap snd_pcm_dmaengine pvrsrvkm(O) snd_soc_evm wlcore
    _sdio snd_soc_davinci_mcasp snd_soc_davinci snd_soc_tlv320aic3x lis3lv02d_i2c lm75 lis3lv02d tsl2550 input_polldev snd_soc_core snd_compress regmap_spi btwilink snd_pcm snd_page_
    alloc snd_timer snd soundcore ti_am335x_adc industrialio musb_am335x bluetooth
    [  768.763340] CPU: 0 PID: 9 Comm: kworker/u2:1 Tainted: G        W  O 3.12.10-ti2013.12.01 #1
    [  768.772231] Workqueue: wl12xx_wq wl1271_netstack_work [wlcore]
    [  768.778397] Backtrace: 
    [  768.781011] [<c0017880>] (dump_backtrace+0x0/0x10c) from [<c0017a1c>] (show_stack+0x18/0x1c)
    [  768.789924]  r6:dd0b8000 r5:c07f6ca0 r4:00000000 r3:c07f737c
    [  768.795946] [<c0017a04>] (show_stack+0x0/0x1c) from [<c056b5b0>] (dump_stack+0x20/0x28)
    [  768.804422] [<c056b590>] (dump_stack+0x0/0x28) from [<c05697a4>] (__schedule_bug+0x4c/0x64)
    [  768.813269] [<c0569758>] (__schedule_bug+0x0/0x64) from [<c056ddbc>] (__schedule+0x364/0x3cc)
    [  768.822283]  r4:dd080040 r3:00000000
    [  768.826079] [<c056da58>] (__schedule+0x0/0x3cc) from [<c056e0ec>] (schedule+0x38/0x78)
    [  768.834462] [<c056e0b4>] (schedule+0x0/0x78) from [<c056c5f8>] (schedule_timeout+0xf8/0x148)
    [  768.843398] [<c056c500>] (schedule_timeout+0x0/0x148) from [<c056df7c>] (wait_for_common+0xb4/0x140)
    [  768.853065] [<c056dec8>] (wait_for_common+0x0/0x140) from [<c056e020>] (wait_for_completion+0x18/0x1c)
    [  768.862920] [<c056e008>] (wait_for_completion+0x0/0x1c) from [<c046e1dc>] (mmc_wait_for_req+0xb8/0x15c)
    [  768.872864] [<c046e124>] (mmc_wait_for_req+0x0/0x15c) from [<c047821c>] (mmc_io_rw_extended+0x2d0/0x320)
    [  768.882887]  r8:dd2ad000 r7:00000200 r6:01fffe00 r5:00000004 r4:00000001
    r3:dd0b9b18
    [  768.891209] [<c0477f4c>] (mmc_io_rw_extended+0x0/0x320) from [<c0479510>] (sdio_io_rw_ext_helper+0x134/0x1a8)
    [  768.901700] [<c04793dc>] (sdio_io_rw_ext_helper+0x0/0x1a8) from [<c0479694>] (sdio_memcpy_fromio+0x20/0x28)
    [  768.912019] [<c0479674>] (sdio_memcpy_fromio+0x0/0x28) from [<bf12e350>] (wl12xx_sdio_raw_read+0x74/0x130 [wlcore_sdio])
    [  768.923555] [<bf12e2dc>] (wl12xx_sdio_raw_read+0x0/0x130 [wlcore_sdio]) from [<bf2413c0>] (wlcore_cmd_send_failsafe+0x358/0x4c0 [wlcore])
    [  768.936680] [<bf241068>] (wlcore_cmd_send_failsafe+0x0/0x4c0 [wlcore]) from [<bf2427e0>] (wlcore_cmd_configure_failsafe+0x64/0xac [wlcore])
    [  768.949981] [<bf24277c>] (wlcore_cmd_configure_failsafe+0x0/0xac [wlcore]) from [<bf242844>] (wl1271_cmd_configure+0x1c/0x28 [wlcore])
    [  768.962763]  r6:00000001 r5:dc170c20 r4:dd5728c0
    [  768.967719] [<bf242828>] (wl1271_cmd_configure+0x0/0x28 [wlcore]) from [<bf2706c4>] (wl18xx_acx_peer_ht_operation_mode+0x5c/0xac [wl18xx])
    [  768.980913] [<bf270668>] (wl18xx_acx_peer_ht_operation_mode+0x0/0xac [wl18xx]) from [<bf26e59c>] (wl18xx_sta_rc_update+0x9c/0xd8 [wl18xx])
    [  768.994071]  r7:00000001 r6:dc170c54 r5:dc170c20 r4:dc3e9abc
    [  769.000113] [<bf26e500>] (wl18xx_sta_rc_update+0x0/0xd8 [wl18xx]) from [<bf2382dc>] (wlcore_op_sta_rc_update+0x38/0x68 [wlcore])
    [  769.012345]  r7:dd4e9734 r6:dc3e9440 r5:dc170320 r4:dc3e99c0
    [  769.018487] [<bf2382a4>] (wlcore_op_sta_rc_update+0x0/0x68 [wlcore]) from [<bf2017c8>] (ieee80211_rx_handlers+0x15dc/0x1e98 [mac80211])
    [  769.031363]  r5:dd0b9e0c r4:dd0b9e60
    [  769.035274] [<bf2001ec>] (ieee80211_rx_handlers+0x0/0x1e98 [mac80211]) from [<bf2024b8>] (ieee80211_prepare_and_rx_handle+0x230/0x9b4 [mac80211])
    [  769.049187] [<bf202288>] (ieee80211_prepare_and_rx_handle+0x0/0x9b4 [mac80211]) from [<bf203048>] (ieee80211_rx+0x40c/0x79c [mac80211])
    [  769.062161] [<bf202c3c>] (ieee80211_rx+0x0/0x79c [mac80211]) from [<bf238588>] (wl1271_flush_deferred_work+0x2c/0x74 [wlcore])
    [  769.074257] [<bf23855c>] (wl1271_flush_deferred_work+0x0/0x74 [wlcore]) from [<bf2385ec>] (wl1271_netstack_work+0x1c/0x2c [wlcore])
    [  769.086762]  r7:dd07c300 r6:dd074800 r5:dc170c20 r4:dc170e8c
    [  769.092802] [<bf2385d0>] (wl1271_netstack_work+0x0/0x2c [wlcore]) from [<c0059f50>] (process_one_work+0xfc/0x340)
    [  769.103657]  r5:dc170e8c r4:dd0a7d40
    [  769.107447] [<c0059e54>] (process_one_work+0x0/0x340) from [<c005a558>] (worker_thread+0x130/0x370)
    [  769.117024] [<c005a428>] (worker_thread+0x0/0x370) from [<c005fbdc>] (kthread+0xac/0xb8)
    [  769.125595] [<c005fb30>] (kthread+0x0/0xb8) from [<c00146f8>] (ret_from_fork+0x14/0x3c)
    [  769.134062]  r7:00000000 r6:00000000 r5:c005fb30 r4:dd095e74
    [  769.141171] BUG: scheduling while atomic: kworker/u2:1/9/0x00000400
    [  769.147805] Modules linked in: ipt_MASQUERADE iptable_nat nf_conntrack_ipv4 nf_defrag_ipv4 nf_nat_ipv4 nf_nat nf_conntrack ip_tables x_tables g_mass_storage usb_f_mass_storage
     libcomposite configfs bufferclass_ti(O) omaplfb(O) cryptodev(O) wl18xx wlcore mac80211 cfg80211 musb_dsps musb_hdrc snd_soc_omap snd_pcm_dmaengine pvrsrvkm(O) snd_soc_evm wlcore
    _sdio snd_soc_davinci_mcasp snd_soc_davinci snd_soc_tlv320aic3x lis3lv02d_i2c lm75 lis3lv02d tsl2550 input_polldev snd_soc_core snd_compress regmap_spi btwilink snd_pcm snd_page_
    alloc snd_timer snd soundcore ti_am335x_adc industrialio musb_am335x bluetooth
    [  769.204490] CPU: 0 PID: 9 Comm: kworker/u2:1 Tainted: G        W  O 3.12.10-ti2013.12.01 #1
    [  769.213384] Workqueue: wl12xx_wq wl1271_netstack_work [wlcore]
    [  769.219546] Backtrace: 
    [  769.222160] [<c0017880>] (dump_backtrace+0x0/0x10c) from [<c0017a1c>] (show_stack+0x18/0x1c)
    [  769.231090]  r6:dd0b8000 r5:c07f6ca0 r4:00000000 r3:c07f737c
    [  769.237096] [<c0017a04>] (show_stack+0x0/0x1c) from [<c056b5b0>] (dump_stack+0x20/0x28)
    [  769.245575] [<c056b590>] (dump_stack+0x0/0x28) from [<c05697a4>] (__schedule_bug+0x4c/0x64)
    [  769.254419] [<c0569758>] (__schedule_bug+0x0/0x64) from [<c056ddbc>] (__schedule+0x364/0x3cc)
    [  769.263437]  r4:dd080040 r3:00000000
    [  769.267229] [<c056da58>] (__schedule+0x0/0x3cc) from [<c056e0ec>] (schedule+0x38/0x78)
    [  769.275615] [<c056e0b4>] (schedule+0x0/0x78) from [<c056c5f8>] (schedule_timeout+0xf8/0x148)
    [  769.284552] [<c056c500>] (schedule_timeout+0x0/0x148) from [<c056df7c>] (wait_for_common+0xb4/0x140)
    [  769.294223] [<c056dec8>] (wait_for_common+0x0/0x140) from [<c056e020>] (wait_for_completion+0x18/0x1c)
    [  769.304077] [<c056e008>] (wait_for_completion+0x0/0x1c) from [<c046e1dc>] (mmc_wait_for_req+0xb8/0x15c)
    [  769.314022] [<c046e124>] (mmc_wait_for_req+0x0/0x15c) from [<c047821c>] (mmc_io_rw_extended+0x2d0/0x320)
    [  769.324048]  r8:dd2ad000 r7:00000100 r6:01fffe00 r5:00000004 r4:00000001
    r3:dd0b9b18
    [  769.332366] [<c0477f4c>] (mmc_io_rw_extended+0x0/0x320) from [<c0479510>] (sdio_io_rw_ext_helper+0x134/0x1a8)
    [  769.342862] [<c04793dc>] (sdio_io_rw_ext_helper+0x0/0x1a8) from [<c0479604>] (sdio_memcpy_toio+0x28/0x30)
    [  769.352996] [<c04795dc>] (sdio_memcpy_toio+0x0/0x30) from [<bf12e220>] (wl12xx_sdio_raw_write+0x74/0x130 [wlcore_sdio])
    [  769.364443] [<bf12e1ac>] (wl12xx_sdio_raw_write+0x0/0x130 [wlcore_sdio]) from [<bf241464>] (wlcore_cmd_send_failsafe+0x3fc/0x4c0 [wlcore])
    [  769.377653] [<bf241068>] (wlcore_cmd_send_failsafe+0x0/0x4c0 [wlcore]) from [<bf2427e0>] (wlcore_cmd_configure_failsafe+0x64/0xac [wlcore])
    [  769.390957] [<bf24277c>] (wlcore_cmd_configure_failsafe+0x0/0xac [wlcore]) from [<bf242844>] (wl1271_cmd_configure+0x1c/0x28 [wlcore])
    [  769.403738]  r6:00000001 r5:dc170c20 r4:dd5728c0
    [  769.408695] [<bf242828>] (wl1271_cmd_configure+0x0/0x28 [wlcore]) from [<bf2706c4>] (wl18xx_acx_peer_ht_operation_mode+0x5c/0xac [wl18xx])
    [  769.421897] [<bf270668>] (wl18xx_acx_peer_ht_operation_mode+0x0/0xac [wl18xx]) from [<bf26e59c>] (wl18xx_sta_rc_update+0x9c/0xd8 [wl18xx])
    [  769.435053]  r7:00000001 r6:dc170c54 r5:dc170c20 r4:dc3e9abc
    [  769.441109] [<bf26e500>] (wl18xx_sta_rc_update+0x0/0xd8 [wl18xx]) from [<bf2382dc>] (wlcore_op_sta_rc_update+0x38/0x68 [wlcore])
    [  769.453349]  r7:dd4e9734 r6:dc3e9440 r5:dc170320 r4:dc3e99c0
    [  769.459483] [<bf2382a4>] (wlcore_op_sta_rc_update+0x0/0x68 [wlcore]) from [<bf2017c8>] (ieee80211_rx_handlers+0x15dc/0x1e98 [mac80211])
    [  769.472363]  r5:dd0b9e0c r4:dd0b9e60
    [  769.476269] [<bf2001ec>] (ieee80211_rx_handlers+0x0/0x1e98 [mac80211]) from [<bf2024b8>] (ieee80211_prepare_and_rx_handle+0x230/0x9b4 [mac80211])
    [  769.490186] [<bf202288>] (ieee80211_prepare_and_rx_handle+0x0/0x9b4 [mac80211]) from [<bf203048>] (ieee80211_rx+0x40c/0x79c [mac80211])
    [  769.503155] [<bf202c3c>] (ieee80211_rx+0x0/0x79c [mac80211]) from [<bf238588>] (wl1271_flush_deferred_work+0x2c/0x74 [wlcore])
    [  769.515247] [<bf23855c>] (wl1271_flush_deferred_work+0x0/0x74 [wlcore]) from [<bf2385ec>] (wl1271_netstack_work+0x1c/0x2c [wlcore])
    [  769.527753]  r7:dd07c300 r6:dd074800 r5:dc170c20 r4:dc170e8c
    [  769.533792] [<bf2385d0>] (wl1271_netstack_work+0x0/0x2c [wlcore]) from [<c0059f50>] (process_one_work+0xfc/0x340)
    [  769.544647]  r5:dc170e8c r4:dd0a7d40
    [  769.548436] [<c0059e54>] (process_one_work+0x0/0x340) from [<c005a558>] (worker_thread+0x130/0x370)
    [  769.558015] [<c005a428>] (worker_thread+0x0/0x370) from [<c005fbdc>] (kthread+0xac/0xb8)
    [  769.566588] [<c005fb30>] (kthread+0x0/0xb8) from [<c00146f8>] (ret_from_fork+0x14/0x3c)
    [  769.575051]  r7:00000000 r6:00000000 r5:c005fb30 r4:dd095e74
    [  770.311813] wlan0: AP c8:d7:19:08:ff:6b changed bandwidth, new config is 2462 MHz, width 1 (2462/0 MHz)


    Any idea what is that?

    Brgds,

    Giorgos

  • Hi Giorgos,

    The correct way to build the wl18xx drivers is by using the script found in:
    https://github.com/TI-ECS/build-utilites/blob/master/wl18xx_build.sh


    They must be built as modules, and you must not take the code from the linux kernel tree...

    Once you succeed to build, please set all the bits in debug_level and share the logs along with the wireshark logs.

    Regards,
    Gigi Joseph.

  • Hello,

    oops, you 're right about the script. So, I built them as modules and used the wl18xx_build.sh script. My boot log looks like this now:

    CCCCCCCC
    U-Boot SPL 2013.10-g78d8ebd (Mar 30 2014 - 20:46:34)
    reading args
    spl: error reading image args, err - -1
    reading u-boot.img
    reading u-boot.img
    
    
    U-Boot 2013.10-g78d8ebd (Mar 30 2014 - 20:46:34)
    
    I2C:   ready
    DRAM:  512 MiB
    NAND:  256 MiB
    MMC:   OMAP SD/MMC: 0, OMAP SD/MMC: 1
    Net:   cpsw, usb_ether
    Hit any key to stop autoboot:  0 
    3507624 bytes read in 226 ms (14.8 MiB/s)
    41564 bytes read in 27 ms (1.5 MiB/s)
    Kernel image @ 0x80200000 [ 0x000000 - 0x3585a8 ]
    ## Flattened Device Tree blob at 80f80000
       Booting using the fdt blob at 0x80f80000
       Loading Device Tree to 9f31f000, end 9f32c25b ... OK
    
    Starting kernel ...
    
    [    0.000000] Booting Linux on physical CPU 0x0
    [    0.000000] Linux version 3.12.10-ti2013.12.01 (giorgos@giorgos-VirtualBox) (gcc version 4.7.3 20130226 (prere
    lease) (crosstool-NG linaro-1.13.1-4.7-2013.03-20130313 - Linaro GCC 2013.03) ) #1 Mon Apr 14 14:24:12 CEST 2014
    [    0.000000] CPU: ARMv7 Processor [413fc082] revision 2 (ARMv7), cr=10c53c7d
    [    0.000000] CPU: PIPT / VIPT nonaliasing data cache, VIPT aliasing instruction cache
    [    0.000000] Machine: Generic AM33XX (Flattened Device Tree), model: TI AM335x EVM
    [    0.000000] cma: CMA: reserved 24 MiB at 9d800000
    [    0.000000] Memory policy: ECC disabled, Data cache writeback
    [    0.000000] CPU: All CPU(s) started in SVC mode.
    [    0.000000] AM335X ES1.0 (sgx neon )
    [    0.000000] Built 1 zonelists in Zone order, mobility grouping on.  Total pages: 129280
    [    0.000000] Kernel command line: console=ttyO0,115200n8 root=/dev/mmcblk0p2 ro rootfstype=ext4 rootwait
    [    0.000000] PID hash table entries: 2048 (order: 1, 8192 bytes)
    [    0.000000] Dentry cache hash table entries: 65536 (order: 6, 262144 bytes)
    [    0.000000] Inode-cache hash table entries: 32768 (order: 5, 131072 bytes)
    [    0.000000] Memory: 484556K/521216K available (4671K kernel code, 558K rwdata, 1604K rodata, 303K init, 203K b
    ss, 36660K reserved, 0K highmem)
    [    0.000000] Virtual kernel memory layout:
    [    0.000000]     vector  : 0xffff0000 - 0xffff1000   (   4 kB)
    [    0.000000]     fixmap  : 0xfff00000 - 0xfffe0000   ( 896 kB)
    [    0.000000]     vmalloc : 0xe0800000 - 0xff000000   ( 488 MB)
    [    0.000000]     lowmem  : 0xc0000000 - 0xe0000000   ( 512 MB)
    [    0.000000]     pkmap   : 0xbfe00000 - 0xc0000000   (   2 MB)
    [    0.000000]     modules : 0xbf000000 - 0xbfe00000   (  14 MB)
    [    0.000000]       .text : 0xc0008000 - 0xc062904c   (6277 kB)
    [    0.000000]       .init : 0xc062a000 - 0xc0675f6c   ( 304 kB)
    [    0.000000]       .data : 0xc0676000 - 0xc0701a68   ( 559 kB)
    [    0.000000]        .bss : 0xc0701a68 - 0xc0734700   ( 204 kB)
    [    0.000000] NR_IRQS:16 nr_irqs:16 16
    [    0.000000] IRQ: Found an INTC at 0xfa200000 (revision 5.0) with 128 interrupts
    [    0.000000] Total of 128 interrupts on 1 active controller
    [    0.000000] OMAP clockevent source: timer2 at 24000000 Hz
    [    0.000000] sched_clock: 32 bits at 24MHz, resolution 41ns, wraps every 178956ms
    [    0.000000] OMAP clocksource: timer1 at 24000000 Hz
    [    0.000000] Console: colour dummy device 80x30
    [    0.000326] Calibrating delay loop... 479.23 BogoMIPS (lpj=2396160)
    [    0.119704] pid_max: default: 32768 minimum: 301
    [    0.119814] Security Framework initialized
    [    0.119911] Mount-cache hash table entries: 512
    [    0.129007] CPU: Testing write buffer coherency: ok
    [    0.129425] Setting up static identity map for 0xc0495ca8 - 0xc0495d18
    [    0.132688] devtmpfs: initialized
    [    0.134329] VFP support v0.3: implementor 41 architecture 3 part 30 variant c rev 3
    [    0.196753] omap_hwmod: debugss: _wait_target_disable failed
    [    0.197496] pinctrl core: initialized pinctrl subsystem
    [    0.198388] regulator-dummy: no parameters
    [    0.201026] NET: Registered protocol family 16
    [    0.203267] DMA: preallocated 256 KiB pool for atomic coherent allocations
    [    0.205737] cpuidle: using governor ladder
    [    0.205755] cpuidle: using governor menu
    [    0.214509] platform mpu.1: FIXME: clock-name 'fck' DOES NOT exist in dt!
    [    0.215619] platform 49000000.edma: FIXME: clock-name 'fck' DOES NOT exist in dt!
    [    0.216940] OMAP GPIO hardware version 0.1
    [    0.226616] omap-gpmc 50000000.gpmc: could not find pctldev for node /pinmux@44e10800/nandflash_pins_default, 
    deferring probe
    [    0.226654] platform 50000000.gpmc: Driver omap-gpmc requests probe deferral
    [    0.227051] platform 56000000.sgx: FIXME: clock-name 'fck' DOES NOT exist in dt!
    [    0.231266] DSS not supported on this SoC
    [    0.231288] No ATAGs?
    [    0.231299] hw-breakpoint: debug architecture 0x4 unsupported.
    [    0.247345] bio: create slab <bio-0> at 0
    [    0.262036] edma-dma-engine edma-dma-engine.0: TI EDMA DMA engine driver
    [    0.262957] vbat: 5000 mV 
    [    0.263363] lis3_reg: no parameters
    [    0.263831] wlan-en-regulator: 1800 mV 
    [    0.267946] SCSI subsystem initialized
    [    0.268916] omap_i2c 44e0b000.i2c: could not find pctldev for node /pinmux@44e10800/pinmux_i2c0_pins, deferrin
    g probe
    [    0.268944] platform 44e0b000.i2c: Driver omap_i2c requests probe deferral
    [    0.268971] omap_i2c 4802a000.i2c: could not find pctldev for node /pinmux@44e10800/pinmux_i2c1_pins, deferrin
    g probe
    [    0.268988] platform 4802a000.i2c: Driver omap_i2c requests probe deferral
    [    0.269400] pps_core: LinuxPPS API ver. 1 registered
    [    0.269411] pps_core: Software ver. 5.3.6 - Copyright 2005-2007 Rodolfo Giometti <giometti@linux.it>
    [    0.269549] PTP clock support registered
    [    0.272231] Switched to clocksource timer1
    [    0.290758] NET: Registered protocol family 2
    [    0.291429] TCP established hash table entries: 4096 (order: 3, 32768 bytes)
    [    0.291523] TCP bind hash table entries: 4096 (order: 2, 16384 bytes)
    [    0.291576] TCP: Hash tables configured (established 4096 bind 4096)
    [    0.291652] TCP: reno registered
    [    0.291667] UDP hash table entries: 256 (order: 0, 4096 bytes)
    [    0.291688] UDP-Lite hash table entries: 256 (order: 0, 4096 bytes)
    [    0.291897] NET: Registered protocol family 1
    [    0.292377] RPC: Registered named UNIX socket transport module.
    [    0.292393] RPC: Registered udp transport module.
    [    0.292400] RPC: Registered tcp transport module.
    [    0.292408] RPC: Registered tcp NFSv4.1 backchannel transport module.
    [    0.292739] NetWinder Floating Point Emulator V0.97 (double precision)
    [    0.293591] PM: Loading am335x-pm-firmware.bin
    [    0.429446] VFS: Disk quotas dquot_6.5.2
    [    0.429537] Dquot-cache hash table entries: 1024 (order 0, 4096 bytes)
    [    0.430146] NFS: Registering the id_resolver key type
    [    0.430237] Key type id_resolver registered
    [    0.430248] Key type id_legacy registered
    [    0.430290] jffs2: version 2.2. (NAND) (SUMMARY)  © 2001-2006 Red Hat, Inc.
    [    0.430489] msgmni has been set to 994
    [    0.432119] NET: Registered protocol family 38
    [    0.432161] io scheduler noop registered
    [    0.432172] io scheduler deadline registered
    [    0.432195] io scheduler cfq registered (default)
    [    0.434182] pinctrl-single 44e10800.pinmux: 142 pins at pa f9e10800 size 568
    [    0.437034] Serial: 8250/16550 driver, 4 ports, IRQ sharing enabled
    [    0.439808] 44e09000.serial: ttyO0 at MMIO 0x44e09000 (irq = 88, base_baud = 3000000) is a OMAP UART0
    [    1.052778] console [ttyO0] enabled
    [    1.057371] 48022000.serial: ttyO1 at MMIO 0x48022000 (irq = 89, base_baud = 3000000) is a OMAP UART1
    [    1.068633] omap_rng 48310000.rng: OMAP Random Number Generator ver. 20
    [    1.076181] (stk) :sysfs entries created
    [    1.080377] (stk) : debugfs entries created 
    [    1.088408] mtdoops: mtd device (mtddev=name/number) must be supplied
    [    1.099786] omap_rtc 44e3e000.rtc: rtc core: registered 44e3e000.rtc as rtc0
    [    1.107393] 44e3e000.rtc: already running
    [    1.112489] i2c /dev entries driver
    [    1.118215] omap_wdt: OMAP Watchdog Timer Rev 0x01: initial timeout 60 sec
    [    1.127536] edma-dma-engine edma-dma-engine.0: allocated channel for 0:25
    [    1.134888] edma-dma-engine edma-dma-engine.0: allocated channel for 0:24
    [    1.142125] omap_hsmmc 48060000.mmc: unable to get vmmc regulator -517
    [    1.149087] edma-dma-engine edma-dma-engine.0: freeing channel for 24
    [    1.155923] edma-dma-engine edma-dma-engine.0: freeing channel for 25
    [    1.162866] platform 48060000.mmc: Driver omap_hsmmc requests probe deferral
    [    1.170566] edma-dma-engine edma-dma-engine.0: allocated channel for 0:13
    [    1.177815] edma-dma-engine edma-dma-engine.0: allocated channel for 0:12
    [    1.258707] omap_hwmod: gpio1: _wait_target_disable failed
    [    1.293180] ledtrig-cpu: registered to indicate activity on CPUs
    [    1.303063] edma-dma-engine edma-dma-engine.0: allocated channel for 0:36
    [    1.310357] omap-sham 53100000.sham: hw accel on OMAP rev 4.3
    [    1.316480] mmc0: card claims to support voltages below the defined range. These will be ignored.
    [    1.327224] omap-aes 53500000.aes: OMAP AES hw accel rev: 3.2
    [    1.333453] edma-dma-engine edma-dma-engine.0: allocated channel for 0:5
    [    1.340587] edma-dma-engine edma-dma-engine.0: allocated channel for 0:6
    [    1.350703] oprofile: no performance counters
    [    1.355852] oprofile: using timer interrupt.
    [    1.360833] arp_tables: (C) 2002 David S. Miller
    [    1.365772] TCP: cubic registered
    [    1.369274] Initializing XFRM netlink socket
    [    1.373833] NET: Registered protocol family 17
    [    1.378568] NET: Registered protocol family 15
    [    1.383427] Key type dns_resolver registered
    [    1.388558] cpu cpu0: cpu0 regulator not ready, retry
    [    1.394060] platform cpufreq-cpu0.0: Driver cpufreq-cpu0 requests probe deferral
    [    1.402550] ThumbEE CPU extension supported.
    [    1.409163] omap-gpmc 50000000.gpmc: GPMC revision 6.0
    [    1.414665] gpmc_mem_init: disabling cs 0 mapped at 0x0-0x1000000
    [    1.422390] ONFI param page 0 valid
    [    1.426095] ONFI flash detected
    [    1.429422] NAND device: Manufacturer ID: 0x2c, Chip ID: 0xda (Micron MT29F2G08ABAEAWP), 256MiB, page size: 20
    48, OOB size: 64
    [    1.441480] omap2-nand: detected x8 NAND flash
    [    1.446189] nand: using OMAP_ECC_BCH8_CODE_HW ECC scheme
    [    1.451835] omap2-nand: using custom ecc layout
    [    1.456955] 10 ofpart partitions found on MTD device omap2-nand.0
    [    1.463426] Creating 10 MTD partitions on "omap2-nand.0":
    [    1.469173] 0x000000000000-0x000000020000 : "NAND.SPL"
    [    1.476692] 0x000000020000-0x000000040000 : "NAND.SPL.backup1"
    [    1.483390] mmc0: queuing unknown CIS tuple 0x91 (3 bytes)
    [    1.491123] 0x000000040000-0x000000060000 : "NAND.SPL.backup2"
    [    1.497593] mmc0: new high speed SDIO card at address 0001
    [    1.506519] 0x000000060000-0x000000080000 : "NAND.SPL.backup3"
    [    1.514355] 0x000000080000-0x0000000c0000 : "NAND.u-boot-spl-os"
    [    1.522316] 0x0000000c0000-0x0000001c0000 : "NAND.u-boot"
    [    1.530206] 0x0000001c0000-0x0000001e0000 : "NAND.u-boot-env"
    [    1.537827] 0x0000001e0000-0x000000200000 : "NAND.u-boot-env.backup1"
    [    1.546057] 0x000000200000-0x000000a00000 : "NAND.kernel"
    [    1.559690] 0x000000a00000-0x000010000000 : "NAND.file-system"
    [    1.772809] tps65910 0-002d: No interrupt support, no core IRQ
    [    1.781013] vrtc: 1800 mV 
    [    1.784190] vrtc: supplied by vbat
    [    1.789026] vio: at 1800 mV 
    [    1.792144] vio: supplied by vbat
    [    1.797058] vdd_mpu: 912 <--> 1375 mV at 1137 mV 
    [    1.802106] vdd_mpu: supplied by vbat
    [    1.807363] vdd_core: 912 <--> 1150 mV at 1137 mV 
    [    1.812518] vdd_core: supplied by vbat
    [    1.817504] vdd3: 5000 mV 
    [    1.821505] vdig1: at 1800 mV 
    [    1.824830] vdig1: supplied by vbat
    [    1.829679] vdig2: at 1800 mV 
    [    1.832996] vdig2: supplied by vbat
    [    1.837856] vpll: at 1800 mV 
    [    1.841058] vpll: supplied by vbat
    [    1.845847] vdac: at 1800 mV 
    [    1.849050] vdac: supplied by vbat
    [    1.853812] vaux1: at 1800 mV 
    [    1.857114] vaux1: supplied by vbat
    [    1.861957] vaux2: at 3300 mV 
    [    1.865270] vaux2: supplied by vbat
    [    1.870139] vaux33: at 3300 mV 
    [    1.873543] vaux33: supplied by vbat
    [    1.878514] vmmc: 1800 <--> 3300 mV at 3300 mV 
    [    1.883391] vmmc: supplied by vbat
    [    1.887731] omap_i2c 44e0b000.i2c: bus 0 rev0.11 at 400 kHz
    [    1.896704] omap_i2c 4802a000.i2c: bus 1 rev0.11 at 100 kHz
    [    1.903560] edma-dma-engine edma-dma-engine.0: allocated channel for 0:25
    [    1.910756] edma-dma-engine edma-dma-engine.0: allocated channel for 0:24
    [    1.953738] console [netcon0] enabled
    [    1.957619] netconsole: network logging started
    [    2.011689] mmc1: new high speed SDHC card at address 1234
    [    2.018143] mmcblk0: mmc1:1234 SA04G 3.63 GiB 
    [    2.022923] davinci_mdio 4a101000.mdio: davinci mdio revision 1.6
    [    2.029369] davinci_mdio 4a101000.mdio: detected phy mask fffffffe
    [    2.037614] libphy: 4a101000.mdio: probed
    [    2.041919] davinci_mdio 4a101000.mdio: phy[0]: device 4a101000.mdio:00, driver Atheros 8031 ethernet
    [    2.051826]  mmcblk0: p1 p2
    [    2.056637] Detected MACID = 00:18:31:8f:2e:c1
    [    2.063430] omap_rtc 44e3e000.rtc: setting system clock to 2014-03-31 03:03:08 UTC (1396234988)
    [    2.090171] EXT4-fs (mmcblk0p2): mounted filesystem with ordered data mode. Opts: (null)
    [    2.098870] VFS: Mounted root (ext4 filesystem) readonly on device 179:2.
    [    2.111454] devtmpfs: mounted
    [    2.115159] Freeing unused kernel memory: 300K (c062a000 - c0675000)
    INIT: version 2.88 booting
    Error opening /dev/fb0: No such file or directory
    Starting udev
    [    2.774612] udevd[671]: starting version 182
    [    3.593778] PM: CM3 Firmware Version = 0x186
    [    3.750449] lm75 1-0048: hwmon0: sensor 'tmp275'
    [    3.904385] compat-drivers backport release: ol_r8.a8.04_32
    [    3.910360] Backport based on wl18xx.git ol_r8.a8.10
    [    3.915669] compat.git: wl18xx.git
    [    5.659402] FAT-fs (mmcblk0p1): Volume was not properly unmounted. Some data may be corrupt. Please run fsck.
    [    5.681258] cfg80211: Calling CRDA to update world regulatory domain
    [    6.755763] wlcore: wl18xx driver version: ol_r8.a8.04_32
    [    6.895250] cryptodev: disagrees about version of symbol crypto_alloc_ahash
    [    6.902721] cryptodev: Unknown symbol crypto_alloc_ahash (err -22)
    [    6.909425] cryptodev: disagrees about version of symbol crypto_ahash_setkey
    [    6.916949] cryptodev: Unknown symbol crypto_ahash_setkey (err -22)
    [    6.923625] cryptodev: disagrees about version of symbol crypto_alloc_aead
    [    6.930934] cryptodev: Unknown symbol crypto_alloc_aead (err -22)
    [    6.938410] cryptodev: disagrees about version of symbol crypto_aead_setauthsize
    [    6.946249] cryptodev: Unknown symbol crypto_aead_setauthsize (err -22)
    [    6.955285] cryptodev: disagrees about version of symbol crypto_destroy_tfm
    [    6.962701] cryptodev: Unknown symbol crypto_destroy_tfm (err -22)
    [    6.969316] cryptodev: disagrees about version of symbol crypto_alloc_ablkcipher
    [    6.977159] cryptodev: Unknown symbol crypto_alloc_ablkcipher (err -22)
    [    6.984206] cryptodev: disagrees about version of symbol crypto_ahash_final
    [    6.991575] cryptodev: Unknown symbol crypto_ahash_final (err -22)
    Starting Bootlog daemon: bootlogd: cannot allocate pseudo tty: No such file or directory
    bootlogd.
    [    7.086976] EXT4-fs (mmcblk0p2): re-mounted. Opts: data=ordered
    [    7.223165] wlcore: wl18xx HW: 183x or 180x, PG 2.2 (ROM 0x11)
    [    7.251545] wlcore: loaded
    [    7.268279] wlcore: driver version: ol_r8.a8.04_32
    [    7.273463] wlcore: compilation time: Mon Apr 14 14:31:36 2014
    ALSA: Restoring mixer settings...
    /usr/sbin/alsactl: load_state:1696: No soundcards found...
    Configuring network interfaces... [    7.969052] net eth0: initializing cpsw version 1.12 (0)
    [    7.977022] net eth0: phy found : id is : 0x4dd074
    udhcpc (v1.20.2) started
    Sending discover...
    [    9.973348] libphy: 4a101000.mdio:00 - Link is Up - 1000/Full
    Sending discover...
    Sending discover...
    No lease, failing
    done.
    INIT: Entering runlevel: 5
    Starting system message bus: dbus.
    UIM SYSFS Node Found at /sys/./devices/kim.12/install
    Starting uim-sysfs daemon.
    uim:@ main
    uim:install = /sys/./devices/kim.12/install
    uim:dev_name = /sys/./devices/kim.12/dev_name
    uim:baud_rate = /sys/./devices/kim.12/baud_rate
    uim:flow_cntrl = /sys/./devices/kim.12/flow_cntrl
    uim:begin polling...
    Starting Dropbear SSH server: dropbear.
    Starting telnet daemon.
    Starting syslogd/klogd: done
    Starting thttpd.
    Starting Lighttpd Web Server: lighttpd.
    2014-03-31 03:03:24: (log.c.166) server started 
    /
    Starting Matrix GUI application.
    FATAL: Module g_mass_storage not found.
    ***************************************************************
    ***************************************************************
    NOTICE: This file system contains the followin GPLv3 packages:
            binutils-symlinks
            binutils
            gdbserver
    
    If you do not wish to distribute GPLv3 components please remove
    the above packages prior to distribution.  This can be done using
    the opkg remove command.  i.e.:
        opkg remove <package>
    Where <package> is the name printed in the list above
    
    NOTE: If the package is a dependency of another package you
          will be notified of the dependent packages.  You should
          use the --force-removal-of-dependent-packages option to
          also remove the dependent packages as well
    ***************************************************************
    ***************************************************************
    Stopping Bootlog daemon: bootlogd.
    
     _____                    _____           _         _   
    |  _  |___ ___ ___ ___   |  _  |___ ___  |_|___ ___| |_ 
    |     |  _| .'| . | . |  |   __|  _| . | | | -_|  _|  _|
    |__|__|_| |__,|_  |___|  |__|  |_| |___|_| |___|___|_|  
                  |___|                    |___|            
    
    Arago Project http://arago-project.org am335x-evm ttyO0
    
    Arago 2013.12 am335x-evm ttyO0
    
    am335x-evm login:

    I'm running the following script that sets up the wifi connection and the wl1835 as an eth-wlan bridge:

    sysctl -w net.core.rmem_max=8388608
    sysctl -w net.core.wmem_max=8388608
    sysctl -w net.core.rmem_default=1048576
    sysctl -w net.core.wmem_default=1048576
    sysctl -w net.core.optmem_max=8388608
    sysctl -w net.ipv4.udp_mem='1048576 4194304 8388608'
    sysctl -w net.ipv4.udp_rmem_min=1048576
    sysctl -w net.ipv4.udp_wmem_min=1048576
    wpa_supplicant -d Dnl80211 -c/etc/wpa_supplicant.conf -iwlan0 -B
    wpa_cli -iwlan0 disconnect
    for i in `wpa_cli -iwlan0 list_networks | grep ^[0-9] | cut -f1`; do wpa_cli -iwlan0 remove_network $i; done
    wpa_cli -iwlan0 add_network
    wpa_cli -iwlan0 set_network 0 auth_alg OPEN
    wpa_cli -iwlan0 set_network 0 key_mgmt NONE
    wpa_cli -iwlan0 set_network 0 mode 0
    wpa_cli -iwlan0 set_network 0 ssid '"LAPTOP178_Network"'
    wpa_cli -iwlan0 select_network 0
    wpa_cli -iwlan0 enable_network 0
    wpa_cli -iwlan0 reassociate
    udhcpc -i wlan0
    ethtool -C eth0 rx-usecs 500
    echo 1 > /proc/sys/net/ipv4/ip_forward
    iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
    iptables -t nat -A POSTROUTING -o wlan0 -j MASQUERADE

    getting the following messages:

    wpa_supplicant v2.0-devel
    random: Trying to read entropy from /dev/random
    Successfully initialized wpa_supplicant
    Initializing interface 'wlan0' conf '/etc/wpa_supplicant.conf' driver 'default' ctrl_interface 'N/A' bridge 'N/A'
    Configuration file '/etc/wpa_supplicant.conf' -> '/etc/wpa_supplicant.conf'
    Reading configuration file '/etc/wpa_supplicant.conf'
    ctrl_interface='/var/run/wpa_supplicant'
    update_config=1
    Priority group 0
       id=0 ssid='ECS'
    WEXT: cfg80211-based driver detected
    wext: interface wlan0 phy: phy0
    rfkill: initial event: idx=0 type=1 op=0 soft=0 hard=0
    [   44.367852] wlcore: PHY firmware version: Rev 8.2.0.0.195
    [   44.417077] wlcore: firmware booted (Rev 8.8.0.0.13)
    SIOCGIWRANGE: WE(compiled)=22 WE(source)=21 enc_capa=0xf
      capabilities: key_mgmt 0xf enc 0x1f flags 0x0
    netlink: Operstate: linkmode=1, operstate=5
    wlan0: Own MAC address: 84:dd:20:98:95:93
    wpa_driver_wext_set_key: alg=0 key_idx=0 set_tx=0 seq_len=0 key_len=0
    wpa_driver_wext_set_key: alg=0 key_idx=1 set_tx=0 seq_len=0 key_len=0
    wpa_driver_wext_set_key: alg=0 key_idx=2 set_tx=0 seq_len=0 key_len=0
    wpa_driver_wext_set_key: alg=0 key_idx=3 set_tx=0 seq_len=0 key_len=0
    wpa_driver_wext_set_countermeasures
    wlan0: RSN: flushing PMKID list in the driver
    wlan0: Setting scan request: 0 sec 200000 usec
    WPS: Set UUID for interface wlan0
    WPS: UUID based on MAC address - hexdump(len=16): 5d 4c e1 c2 93 cc 58 31 9b 3a 9e ce bd bc 3c af
    EAPOL: SUPP_PAE entering state DISCONNECTED
    EAPOL: Supplicant port status: Unauthorized
    EAPOL: KEY_RX entering state NO_KEY_RECEIVE
    EAPOL: SUPP_BE entering state INITIALIZE
    EAP: EAP entering state DISABLED
    EAPOL: Supplicant port status: Unauthorized
    EAPOL: Supplicant port status: Unauthorized
    Using existing control interface directory.
    Disable P2P on wlan0
    wlan0: Added interface wlan0
    wlan0: State: DISCONNECTED -> DISCONNECTED
    wpa_driver_wext_set_operstate: operstate 0->0 (DORMANT)
    netlink: Operstate: linkmode=-1, operstate=5
    Daemonize..
    OK
    OK
    0
    OK
    OK
    OK
    OK
    OK
    OK
    OK
    udhcpc (v1.20.2) started
    Sending discover...
    [   45.257602] wlan0: authenticate with c8:d7:19:08:ff:6b
    [   45.266602] wlan0: send auth to c8:d7:19:08:ff:6b (try 1/3)
    [   45.305141] wlan0: authenticated
    [   45.312920] wlan0: associate with c8:d7:19:08:ff:6b (try 1/3)
    [   45.336717] wlan0: RX AssocResp from c8:d7:19:08:ff:6b (capab=0x401 status=0 aid=1)
    [   45.351911] wlcore: Association completed.
    [   45.358004] wlan0: associated
    Sending discover...
    Sending select for 192.168.167.214...
    Lease of 192.168.167.214 obtained, lease time 86400
    /etc/udhcpc.d/50default: Adding DNS 192.168.167.1
    [   47.881665] ip_tables: (C) 2000-2006 Netfilter Core Team
    [   48.004413] nf_conntrack version 0.5.0 (7959 buckets, 31836 max)
    

    Then, I enable the driver debug log by:

    echo 8 > /proc/sys/kernel/printk
    echo 0xFFFFF > /sys/module/wlcore/parameters/debug_level
    echo -n 'module wlcore +p' > /sys/kernel/debug/dynamic_debug/control
    echo -n 'module wl18xx +p' > /sys/kernel/debug/dynamic_debug/control
    echo -n 'module mac80211 +p' > /sys/kernel/debug/dynamic_debug/control
    echo -n 'module cfg80211 +p' > /sys/kernel/debug/dynamic_debug/control

    And then, like I said in the first post, the system breaks, just because I set ALL bits in debug_level. I found out that when DEBUG_IRQ is set, the AM335x does not reply to the initial ARP request, so the traffic does not even begin. But, if I initiate some traffic before I set the bits of debug_level, forcing the ARP reply to come, then I get the following log: 4621.DrvDbg_normal_FFFFF.txt. The corresponding wireshark log is the following: normal_mode_FFFFF.pcapng. Please note that the driver debugging messages were enabled after the first 11 UDP packets were exchanged. Also, that the IP address of AM3358EVM's wlan is 192.168.167.214 and the one of the PC is 192.168.167.237.

    Note, also, that when DEBUG_IRQ, DEBUG_RX and DEBUG_TX are set, the testing mode fails to work. On the other hand, when they are not set  (echo 0xFFF3E > /sys/module/wlcore/parameters/debug_level) it works fine without any messages. But, the normal mode still doesn't work giving the aggregation-related messages back (that miss from the previous log):

    [   88.185808] wlcore: mac80211 ampdu action 0 tid 4
    [   88.190808] wlcore: mac80211 ampdu: Rx tid 4 action 0
    [   88.196207] wlcore: acx ba receiver session setting
    [   88.202101] wlcore: cmd configure (47)
    [   98.342666] wlcore: EVENT on mbox 0
    [   98.346431] wlcore: MBOX vector: 0x2000
    [   98.350485] wlcore: DUMMY_PACKET_ID_EVENT_ID
    [  103.570076] wlcore: EVENT on mbox 1
    [  103.573898] wlcore: MBOX vector: 0x2000
    [  103.577953] wlcore: DUMMY_PACKET_ID_EVENT_ID

    The corresponding wireshark log is the following: normal_mode_FFF3E.pcapng.

    The last wireshark log (normal_mode_direct.pcapng) has been taken without using the AM3358EVM board. Instead the DeviceX is directly connected to the PC and functions without any problem. I am attaching it so as you can clearly see the misbehavior in the cases above.

    The pcaps: 5125.wiresharks.zip

    So, any idea of what could go wrong?

    Any more data you 'd like to see?

    What about the dynamic driver debugging files described here? Do you want me to monitor some of them?

    Thanks for your help.

    Brgds,

    Giorgos

  • Hey,


    I'm pretty sure that the problem is related to UDP packet bursts. According to my current test, AM335xEVM is most of the times unable to handle bursts of (small) UDP packets, if the number of packets is equal to 40, but NEVER fails when it is equal to 30. I have checked the related kernel parameters and modified some without success. I would say that the problem lays at a lower level.

    root@am335x-evm:~/Sitara_scripts# sysctl -a | grep net
    net.core.busy_poll = 0
    net.core.busy_read = 0
    net.core.default_qdisc = pfifo_fast
    net.core.dev_weight = 64
    net.core.message_burst = 10
    net.core.message_cost = 5
    net.core.netdev_budget = 300
    net.core.netdev_max_backlog = 1000
    net.core.netdev_tstamp_prequeue = 1
    net.core.optmem_max = 8388608
    net.core.rmem_default = 1048576
    net.core.rmem_max = 8388608
    net.core.somaxconn = 128
    net.core.warnings = 1
    net.core.wmem_default = 1048576
    net.core.wmem_max = 8388608
    net.core.xfrm_acq_expires = 30
    net.core.xfrm_aevent_etime = 10
    net.core.xfrm_aevent_rseqth = 2
    net.core.xfrm_larval_drop = 1
    net.ipv4.conf.all.accept_local = 0
    net.ipv4.conf.all.accept_redirects = 0
    net.ipv4.conf.all.accept_source_route = 0
    net.ipv4.conf.all.arp_accept = 0
    net.ipv4.conf.all.arp_announce = 0
    net.ipv4.conf.all.arp_filter = 0
    net.ipv4.conf.all.arp_ignore = 0
    net.ipv4.conf.all.arp_notify = 0
    net.ipv4.conf.all.bootp_relay = 0
    net.ipv4.conf.all.disable_policy = 0
    net.ipv4.conf.all.disable_xfrm = 0
    net.ipv4.conf.all.force_igmp_version = 0
    net.ipv4.conf.all.forwarding = 1
    net.ipv4.conf.all.igmpv2_unsolicited_report_interval = 10000
    net.ipv4.conf.all.igmpv3_unsolicited_report_interval = 1000
    net.ipv4.conf.all.log_martians = 0
    net.ipv4.conf.all.mc_forwarding = 0
    net.ipv4.conf.all.medium_id = 0
    net.ipv4.conf.all.promote_secondaries = 0
    net.ipv4.conf.all.proxy_arp = 0
    net.ipv4.conf.all.proxy_arp_pvlan = 0
    net.ipv4.conf.all.route_localnet = 0
    net.ipv4.conf.all.rp_filter = 0
    net.ipv4.conf.all.secure_redirects = 1
    net.ipv4.conf.all.send_redirects = 1
    net.ipv4.conf.all.shared_media = 1
    net.ipv4.conf.all.src_valid_mark = 0
    net.ipv4.conf.all.tag = 0
    net.ipv4.conf.default.accept_local = 0
    net.ipv4.conf.default.accept_redirects = 1
    net.ipv4.conf.default.accept_source_route = 1
    net.ipv4.conf.default.arp_accept = 0
    net.ipv4.conf.default.arp_announce = 0
    net.ipv4.conf.default.arp_filter = 0
    net.ipv4.conf.default.arp_ignore = 0
    net.ipv4.conf.default.arp_notify = 0
    net.ipv4.conf.default.bootp_relay = 0
    net.ipv4.conf.default.disable_policy = 0
    net.ipv4.conf.default.disable_xfrm = 0
    net.ipv4.conf.default.force_igmp_version = 0
    net.ipv4.conf.default.forwarding = 1
    net.ipv4.conf.default.igmpv2_unsolicited_report_interval = 10000
    net.ipv4.conf.default.igmpv3_unsolicited_report_interval = 1000
    net.ipv4.conf.default.log_martians = 0
    net.ipv4.conf.default.mc_forwarding = 0
    net.ipv4.conf.default.medium_id = 0
    net.ipv4.conf.default.promote_secondaries = 0
    net.ipv4.conf.default.proxy_arp = 0
    net.ipv4.conf.default.proxy_arp_pvlan = 0
    net.ipv4.conf.default.route_localnet = 0
    net.ipv4.conf.default.rp_filter = 0
    net.ipv4.conf.default.secure_redirects = 1
    net.ipv4.conf.default.send_redirects = 1
    net.ipv4.conf.default.shared_media = 1
    net.ipv4.conf.default.src_valid_mark = 0
    net.ipv4.conf.default.tag = 0
    net.ipv4.conf.eth0.accept_local = 0
    net.ipv4.conf.eth0.accept_redirects = 1
    net.ipv4.conf.eth0.accept_source_route = 1
    net.ipv4.conf.eth0.arp_accept = 0
    net.ipv4.conf.eth0.arp_announce = 0
    net.ipv4.conf.eth0.arp_filter = 0
    net.ipv4.conf.eth0.arp_ignore = 0
    net.ipv4.conf.eth0.arp_notify = 0
    net.ipv4.conf.eth0.bootp_relay = 0
    net.ipv4.conf.eth0.disable_policy = 0
    net.ipv4.conf.eth0.disable_xfrm = 0
    net.ipv4.conf.eth0.force_igmp_version = 0
    net.ipv4.conf.eth0.forwarding = 1
    net.ipv4.conf.eth0.igmpv2_unsolicited_report_interval = 10000
    net.ipv4.conf.eth0.igmpv3_unsolicited_report_interval = 1000
    net.ipv4.conf.eth0.log_martians = 0
    net.ipv4.conf.eth0.mc_forwarding = 0
    net.ipv4.conf.eth0.medium_id = 0
    net.ipv4.conf.eth0.promote_secondaries = 0
    net.ipv4.conf.eth0.proxy_arp = 0
    net.ipv4.conf.eth0.proxy_arp_pvlan = 0
    net.ipv4.conf.eth0.route_localnet = 0
    net.ipv4.conf.eth0.rp_filter = 0
    net.ipv4.conf.eth0.secure_redirects = 1
    net.ipv4.conf.eth0.send_redirects = 1
    net.ipv4.conf.eth0.shared_media = 1
    net.ipv4.conf.eth0.src_valid_mark = 0
    net.ipv4.conf.eth0.tag = 0
    net.ipv4.conf.lo.accept_local = 0
    net.ipv4.conf.lo.accept_redirects = 1
    net.ipv4.conf.lo.accept_source_route = 1
    net.ipv4.conf.lo.arp_accept = 0
    net.ipv4.conf.lo.arp_announce = 0
    net.ipv4.conf.lo.arp_filter = 0
    net.ipv4.conf.lo.arp_ignore = 0
    net.ipv4.conf.lo.arp_notify = 0
    net.ipv4.conf.lo.bootp_relay = 0
    net.ipv4.conf.lo.disable_policy = 1
    net.ipv4.conf.lo.disable_xfrm = 1
    net.ipv4.conf.lo.force_igmp_version = 0
    net.ipv4.conf.lo.forwarding = 1
    net.ipv4.conf.lo.igmpv2_unsolicited_report_interval = 10000
    net.ipv4.conf.lo.igmpv3_unsolicited_report_interval = 1000
    net.ipv4.conf.lo.log_martians = 0
    net.ipv4.conf.lo.mc_forwarding = 0
    net.ipv4.conf.lo.medium_id = 0
    net.ipv4.conf.lo.promote_secondaries = 0
    net.ipv4.conf.lo.proxy_arp = 0
    net.ipv4.conf.lo.proxy_arp_pvlan = 0
    net.ipv4.conf.lo.route_localnet = 0
    net.ipv4.conf.lo.rp_filter = 0
    net.ipv4.conf.lo.secure_redirects = 1
    net.ipv4.conf.lo.send_redirects = 1
    net.ipv4.conf.lo.shared_media = 1
    net.ipv4.conf.lo.src_valid_mark = 0
    net.ipv4.conf.lo.tag = 0
    net.ipv4.conf.wlan0.accept_local = 0
    net.ipv4.conf.wlan0.accept_redirects = 1
    net.ipv4.conf.wlan0.accept_source_route = 1
    net.ipv4.conf.wlan0.arp_accept = 0
    net.ipv4.conf.wlan0.arp_announce = 0
    net.ipv4.conf.wlan0.arp_filter = 0
    net.ipv4.conf.wlan0.arp_ignore = 0
    net.ipv4.conf.wlan0.arp_notify = 0
    net.ipv4.conf.wlan0.bootp_relay = 0
    net.ipv4.conf.wlan0.disable_policy = 0
    net.ipv4.conf.wlan0.disable_xfrm = 0
    net.ipv4.conf.wlan0.force_igmp_version = 0
    net.ipv4.conf.wlan0.forwarding = 1
    net.ipv4.conf.wlan0.igmpv2_unsolicited_report_interval = 10000
    net.ipv4.conf.wlan0.igmpv3_unsolicited_report_interval = 1000
    net.ipv4.conf.wlan0.log_martians = 0
    net.ipv4.conf.wlan0.mc_forwarding = 0
    net.ipv4.conf.wlan0.medium_id = 0
    net.ipv4.conf.wlan0.promote_secondaries = 0
    net.ipv4.conf.wlan0.proxy_arp = 0
    net.ipv4.conf.wlan0.proxy_arp_pvlan = 0
    net.ipv4.conf.wlan0.route_localnet = 0
    net.ipv4.conf.wlan0.rp_filter = 0
    net.ipv4.conf.wlan0.secure_redirects = 1
    net.ipv4.conf.wlan0.send_redirects = 1
    net.ipv4.conf.wlan0.shared_media = 1
    net.ipv4.conf.wlan0.src_valid_mark = 0
    net.ipv4.conf.wlan0.tag = 0
    net.ipv4.icmp_echo_ignore_all = 0
    net.ipv4.icmp_echo_ignore_broadcasts = 1
    net.ipv4.icmp_errors_use_inbound_ifaddr = 0
    net.ipv4.icmp_ignore_bogus_error_responses = 1
    net.ipv4.icmp_ratelimit = 1000
    net.ipv4.icmp_ratemask = 6168
    net.ipv4.igmp_max_memberships = 20
    net.ipv4.igmp_max_msf = 10
    net.ipv4.inet_peer_maxttl = 600
    net.ipv4.inet_peer_minttl = 120
    net.ipv4.inet_peer_threshold = 65664
    net.ipv4.ip_default_ttl = 64
    net.ipv4.ip_dynaddr = 0
    net.ipv4.ip_early_demux = 1
    net.ipv4.ip_forward = 1
    net.ipv4.ip_local_port_range = 32768    61000
    net.ipv4.ip_local_reserved_ports = 
    net.ipv4.ip_no_pmtu_disc = 0
    net.ipv4.ip_nonlocal_bind = 0
    net.ipv4.ipfrag_high_thresh = 4194304
    net.ipv4.ipfrag_low_thresh = 3145728
    net.ipv4.ipfrag_max_dist = 64
    net.ipv4.ipfrag_secret_interval = 600
    net.ipv4.ipfrag_time = 30
    net.ipv4.neigh.default.anycast_delay = 100
    net.ipv4.neigh.default.app_solicit = 0
    net.ipv4.neigh.default.base_reachable_time = 30
    net.ipv4.neigh.default.base_reachable_time_ms = 30000
    net.ipv4.neigh.default.delay_first_probe_time = 5
    net.ipv4.neigh.default.gc_interval = 30
    net.ipv4.neigh.default.gc_stale_time = 60
    net.ipv4.neigh.default.gc_thresh1 = 128
    net.ipv4.neigh.default.gc_thresh2 = 512
    net.ipv4.neigh.default.gc_thresh3 = 1024
    net.ipv4.neigh.default.locktime = 100
    net.ipv4.neigh.default.mcast_solicit = 3
    net.ipv4.neigh.default.proxy_delay = 80
    net.ipv4.neigh.default.proxy_qlen = 64
    net.ipv4.neigh.default.retrans_time = 100
    net.ipv4.neigh.default.retrans_time_ms = 1000
    net.ipv4.neigh.default.ucast_solicit = 3
    net.ipv4.neigh.default.unres_qlen = 34
    net.ipv4.neigh.default.unres_qlen_bytes = 65536
    net.ipv4.neigh.eth0.anycast_delay = 100
    net.ipv4.neigh.eth0.app_solicit = 0
    net.ipv4.neigh.eth0.base_reachable_time = 30
    net.ipv4.neigh.eth0.base_reachable_time_ms = 30000
    net.ipv4.neigh.eth0.delay_first_probe_time = 5
    net.ipv4.neigh.eth0.gc_stale_time = 60
    net.ipv4.neigh.eth0.locktime = 100
    net.ipv4.neigh.eth0.mcast_solicit = 3
    net.ipv4.neigh.eth0.proxy_delay = 80
    net.ipv4.neigh.eth0.proxy_qlen = 64
    net.ipv4.neigh.eth0.retrans_time = 100
    net.ipv4.neigh.eth0.retrans_time_ms = 1000
    net.ipv4.neigh.eth0.ucast_solicit = 3
    net.ipv4.neigh.eth0.unres_qlen = 34
    net.ipv4.neigh.eth0.unres_qlen_bytes = 65536
    net.ipv4.neigh.lo.anycast_delay = 100
    net.ipv4.neigh.lo.app_solicit = 0
    net.ipv4.neigh.lo.base_reachable_time = 30
    net.ipv4.neigh.lo.base_reachable_time_ms = 30000
    net.ipv4.neigh.lo.delay_first_probe_time = 5
    net.ipv4.neigh.lo.gc_stale_time = 60
    net.ipv4.neigh.lo.locktime = 100
    net.ipv4.neigh.lo.mcast_solicit = 3
    net.ipv4.neigh.lo.proxy_delay = 80
    net.ipv4.neigh.lo.proxy_qlen = 64
    net.ipv4.neigh.lo.retrans_time = 100
    net.ipv4.neigh.lo.retrans_time_ms = 1000
    net.ipv4.neigh.lo.ucast_solicit = 3
    net.ipv4.neigh.lo.unres_qlen = 34
    net.ipv4.neigh.lo.unres_qlen_bytes = 65536
    net.ipv4.neigh.wlan0.anycast_delay = 100
    net.ipv4.neigh.wlan0.app_solicit = 0
    net.ipv4.neigh.wlan0.base_reachable_time = 30
    net.ipv4.neigh.wlan0.base_reachable_time_ms = 30000
    net.ipv4.neigh.wlan0.delay_first_probe_time = 5
    net.ipv4.neigh.wlan0.gc_stale_time = 60
    net.ipv4.neigh.wlan0.locktime = 100
    net.ipv4.neigh.wlan0.mcast_solicit = 3
    net.ipv4.neigh.wlan0.proxy_delay = 80
    net.ipv4.neigh.wlan0.proxy_qlen = 64
    net.ipv4.neigh.wlan0.retrans_time = 100
    net.ipv4.neigh.wlan0.retrans_time_ms = 1000
    net.ipv4.neigh.wlan0.ucast_solicit = 3
    net.ipv4.neigh.wlan0.unres_qlen = 34
    net.ipv4.neigh.wlan0.unres_qlen_bytes = 65536
    net.ipv4.netfilter.ip_conntrack_buckets = 8192
    net.ipv4.netfilter.ip_conntrack_checksum = 1
    net.ipv4.netfilter.ip_conntrack_count = 1
    net.ipv4.netfilter.ip_conntrack_generic_timeout = 600
    net.ipv4.netfilter.ip_conntrack_icmp_timeout = 30
    net.ipv4.netfilter.ip_conntrack_log_invalid = 0
    net.ipv4.netfilter.ip_conntrack_max = 31836
    net.ipv4.netfilter.ip_conntrack_tcp_be_liberal = 0
    net.ipv4.netfilter.ip_conntrack_tcp_loose = 1
    net.ipv4.netfilter.ip_conntrack_tcp_max_retrans = 3
    net.ipv4.netfilter.ip_conntrack_tcp_timeout_close = 10
    net.ipv4.netfilter.ip_conntrack_tcp_timeout_close_wait = 60
    net.ipv4.netfilter.ip_conntrack_tcp_timeout_established = 432000
    net.ipv4.netfilter.ip_conntrack_tcp_timeout_fin_wait = 120
    net.ipv4.netfilter.ip_conntrack_tcp_timeout_last_ack = 30
    net.ipv4.netfilter.ip_conntrack_tcp_timeout_max_retrans = 300
    net.ipv4.netfilter.ip_conntrack_tcp_timeout_syn_recv = 60
    net.ipv4.netfilter.ip_conntrack_tcp_timeout_syn_sent = 120
    net.ipv4.netfilter.ip_conntrack_tcp_timeout_syn_sent2 = 120
    net.ipv4.netfilter.ip_conntrack_tcp_timeout_time_wait = 120
    net.ipv4.netfilter.ip_conntrack_udp_timeout = 30
    net.ipv4.netfilter.ip_conntrack_udp_timeout_stream = 180
    net.ipv4.ping_group_range = 1   0
    net.ipv4.route.error_burst = 500
    net.ipv4.route.error_cost = 100
    sysctl: error reading key 'net.ipv4.route.flush': Permission denied
    net.ipv4.route.gc_elasticity = 8
    net.ipv4.route.gc_interval = 60
    net.ipv4.route.gc_min_interval = 0
    net.ipv4.route.gc_min_interval_ms = 500
    net.ipv4.route.gc_thresh = -1
    net.ipv4.route.gc_timeout = 300
    net.ipv4.route.max_size = 2147483647
    net.ipv4.route.min_adv_mss = 256
    net.ipv4.route.min_pmtu = 552
    net.ipv4.route.mtu_expires = 600
    net.ipv4.route.redirect_load = 2
    net.ipv4.route.redirect_number = 9
    net.ipv4.route.redirect_silence = 2048
    net.ipv4.tcp_abort_on_overflow = 0
    net.ipv4.tcp_adv_win_scale = 1
    net.ipv4.tcp_allowed_congestion_control = cubic reno
    net.ipv4.tcp_app_win = 31
    net.ipv4.tcp_available_congestion_control = cubic reno
    net.ipv4.tcp_base_mss = 512
    net.ipv4.tcp_challenge_ack_limit = 100
    net.ipv4.tcp_congestion_control = cubic
    net.ipv4.tcp_dsack = 1
    net.ipv4.tcp[  863.114863] nr_pdflush_threads exported in /proc is scheduled for removal
    _early_retrans = 3
    net.ipv4.tcp_ecn = 2
    net.ip[  863.126194] sysctl: The scan_unevictable_pages sysctl/node-interface has been disabled for lack of a leg
    itimate use case.  If you have one, please send an email to linux-mm@kvack.org.
    v4.tcp_fack = 1
    net.ipv4.tcp_fastopen = 0
    net.ipv4.tcp_fastopen_key = 8c54eec7-be5dce36-0834114a-8c0085d4
    net.ipv4.tcp_fin_timeout = 60
    net.ipv4.tcp_frto = 2
    net.ipv4.tcp_keepalive_intvl = 75
    net.ipv4.tcp_keepalive_probes = 9
    net.ipv4.tcp_keepalive_time = 7200
    net.ipv4.tcp_limit_output_bytes = 131072
    net.ipv4.tcp_low_latency = 0
    net.ipv4.tcp_max_orphans = 2048
    net.ipv4.tcp_max_ssthresh = 0
    net.ipv4.tcp_max_syn_backlog = 128
    net.ipv4.tcp_max_tw_buckets = 2048
    net.ipv4.tcp_mem = 11832        15776   23664
    net.ipv4.tcp_min_tso_segs = 2
    net.ipv4.tcp_moderate_rcvbuf = 1
    net.ipv4.tcp_mtu_probing = 0
    net.ipv4.tcp_no_metrics_save = 0
    net.ipv4.tcp_notsent_lowat = -1
    net.ipv4.tcp_orphan_retries = 0
    net.ipv4.tcp_reordering = 3
    net.ipv4.tcp_retrans_collapse = 1
    net.ipv4.tcp_retries1 = 3
    net.ipv4.tcp_retries2 = 15
    net.ipv4.tcp_rfc1337 = 0
    net.ipv4.tcp_rmem = 4096        87380   4073056
    net.ipv4.tcp_sack = 1
    net.ipv4.tcp_slow_start_after_idle = 1
    net.ipv4.tcp_stdurg = 0
    net.ipv4.tcp_syn_retries = 6
    net.ipv4.tcp_synack_retries = 5
    net.ipv4.tcp_thin_dupack = 0
    net.ipv4.tcp_thin_linear_timeouts = 0
    net.ipv4.tcp_timestamps = 1
    net.ipv4.tcp_tso_win_divisor = 3
    net.ipv4.tcp_tw_recycle = 0
    net.ipv4.tcp_tw_reuse = 0
    net.ipv4.tcp_window_scaling = 1
    net.ipv4.tcp_wmem = 4096        16384   4073056
    net.ipv4.tcp_workaround_signed_windows = 0
    net.ipv4.udp_mem = 1048576      4194304 8388608
    net.ipv4.udp_rmem_min = 1048576
    net.ipv4.udp_wmem_min = 1048576
    net.ipv4.xfrm4_gc_thresh = 1024
    net.netfilter.nf_conntrack_acct = 0
    net.netfilter.nf_conntrack_buckets = 8192
    net.netfilter.nf_conntrack_checksum = 1
    net.netfilter.nf_conntrack_count = 1
    net.netfilter.nf_conntrack_expect_max = 124
    net.netfilter.nf_conntrack_generic_timeout = 600
    net.netfilter.nf_conntrack_helper = 1
    net.netfilter.nf_conntrack_icmp_timeout = 30
    net.netfilter.nf_conntrack_log_invalid = 0
    net.netfilter.nf_conntrack_max = 31836
    net.netfilter.nf_conntrack_tcp_be_liberal = 0
    net.netfilter.nf_conntrack_tcp_loose = 1
    net.netfilter.nf_conntrack_tcp_max_retrans = 3
    net.netfilter.nf_conntrack_tcp_timeout_close = 10
    net.netfilter.nf_conntrack_tcp_timeout_close_wait = 60
    net.netfilter.nf_conntrack_tcp_timeout_established = 432000
    net.netfilter.nf_conntrack_tcp_timeout_fin_wait = 120
    net.netfilter.nf_conntrack_tcp_timeout_last_ack = 30
    net.netfilter.nf_conntrack_tcp_timeout_max_retrans = 300
    net.netfilter.nf_conntrack_tcp_timeout_syn_recv = 60
    net.netfilter.nf_conntrack_tcp_timeout_syn_sent = 120
    net.netfilter.nf_conntrack_tcp_timeout_time_wait = 120
    net.netfilter.nf_conntrack_tcp_timeout_unacknowledged = 300
    net.netfilter.nf_conntrack_udp_timeout = 30
    net.netfilter.nf_conntrack_udp_timeout_stream = 180
    net.netfilter.nf_log.0 = NONE
    net.netfilter.nf_log.1 = NONE
    net.netfilter.nf_log.10 = NONE
    net.netfilter.nf_log.11 = NONE
    net.netfilter.nf_log.12 = NONE
    net.netfilter.nf_log.2 = NONE
    net.netfilter.nf_log.3 = NONE
    net.netfilter.nf_log.4 = NONE
    net.netfilter.nf_log.5 = NONE
    net.netfilter.nf_log.6 = NONE
    net.netfilter.nf_log.7 = NONE
    net.netfilter.nf_log.8 = NONE
    net.netfilter.nf_log.9 = NONE
    net.nf_conntrack_max = 31836
    net.unix.max_dgram_qlen = 10
    sysctl: error reading key 'vm.compact_memory': Permission denied

    I also tried to change the default scheduler from pfifo_fast to the simpler pfifo, so as I have direct control of the number of packets:

    tc qdisc add dev wlan0 root pfifo limit 3000
    tc qdisc add dev eth0 root pfifo limit 3000

    But nothing changed.

    Any idea?

    Brgds,

    Giorgos

     

  • Hi,


    I can see that UDP packet losses due to bursts of packets is a common problem and I am aware of the fact that when using UDP it's my responsibility to control the speed of the flow of data. But, still I need to configure the system so as to tolerate as long bursts as possible. Please let me know how/if I should modify the drivers, or any kernel parameters in order to achieve that. Are there any guidelines similar to these for AM335x?

    Brgds,

    Giorgos

  • Hi Giorgos,

    I will check internally and get back to you.

    Regarding the page you asked for AM335x, I suggest that you check with the AM335x e2e (http://e2e.ti.com/support/arm/sitara_arm/f/791.aspx)

    Regards,
    Gigi Joseph.

  • Hello,

    I am currently looking into the wl18xx/wlcore drivers and found out a couple of constants that limit the buffer sizes in the firmware/driver level:

    • WLCORE_MAX_TX_DESCRIPTORS in wlcore.h,
    • WL18XX_NUM_TX_DESCRIPTORS and WL18XX_NUM_RX_DESCRIPTORS in wl18xx.h.

    All of them are currently equal to 32.

    I am trying to increase them, by also changing relevant variable lenghts in various files (like acx.c or cmd.c). The drivers are built and loaded but when I try to load wpa_supplicant I get errors like

    [   87.557454] wlcore: PHY firmware version: Rev 8.2.0.0.195
    [   89.582494] wlcore: ERROR command complete timeout
    [   89.587591] wlcore: WARNING CONFIGURE command NOK
    [   89.592597] wlcore: WARNING wl1271 mem config failed: -110
    [   90.012638] wlcore: PHY firmware version: Rev 8.2.0.0.195
    [   92.042773] wlcore: ERROR command complete timeout
    [   92.047870] wlcore: WARNING CONFIGURE command NOK
    [   92.052878] wlcore: WARNING wl1271 mem config failed: -110
    [   92.476977] wlcore: PHY firmware version: Rev 8.2.0.0.195
    [   94.502491] wlcore: ERROR command complete timeout
    [   94.507587] wlcore: WARNING CONFIGURE command NOK
    [   94.512594] wlcore: WARNING wl1271 mem config failed: -110
    [   94.520163] wlcore: ERROR firmware boot failed despite 3 retries

    These last errors lead me to functions that read/write to/from the firmware. 

    The first question is: can the firmware work for anything larger than 32?

    The second: does it make sense that the value of those tx/rx_descriptors could be the problem?

    Brgds,

    Giorgos

  • Hi Giorgos,

    We do not recommend to make the change suggested as we fine tune our system to support TX and RX.
    I am also not sure it will have any effect.

    Regarding the issue as such:

    We support UDP of up to ~55M (SISO20) or 100M (SISO40 and MIMO)
    If you try to send 150M, you will get 50-80% frame drop (including in the air)
    What is the actual UDP traffic you see?

    Regards,
    Gigi Joseph.

  • Hi,

    well, we agree on the bandwidths. As I 've already written in the very first post, I can see ~100Mbps when I use pcs in both ends and run iperfs.

    But, my problem has to do with the number of successive frames that can be handled without losses by wl1835. When I send a burst of 40 frames, with 10B of payload each and ~60-80us time gap I can always see that frames are dropped. In 30 frames bursts it never fails.

    Let's say that I wanted to send 1000 frames. What time gaps should I respect between two frames? Or is it more complicated than that and I should also respect a longer gap every let's say 32 frames? Is there a way to get the info from firmware if it is currently able/unable to receive/send more data? This is the kind of information I am asking from you.

    Obviously there are intrinsic limitations in the hardware/firmware relevant to the number of packets. Such a 60-80us time gap is low, but not too low. Roughly I would say that the physical limitations and the protocol ones (inter-frame gap) are one order of magnitude lower than that.

    I hope that cleared the picture.

    Brgds,

    Giorgos

  • Hi Giorgos,

    Even when working in A-MPDU, we publish window size of 32 frames.So, ~30 is the maximum frames we can support at the same time.

    But, I believe that the test is invalid,
    When sending frames, between each frame the device should count SIFS+AIFS+Back-off, and for BE traffic the average should be ~300uSec, what can give some more time to handle the frames

    Regards,
    Gigi Joseph.

  • Hello,

    well, that makes sense finally. I consider the case solved then : )

    I got one last question, though. Could this ~300us gap get smaller in the case of a system with just one point-to-point connection, like mine? And/or in the case of only UDP traffic, without support for anything with higher priority than BE traffic (voice/video)? If yes, what would be required to implement these optimizations? 

    Brgds,

    Giorgos