This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

Linux/WL1835MOD: WiFi firmware seems to crash with Linux 4.4.38 on iMX27

Part Number: WL1835MOD
Other Parts Discussed in Thread: WL1271

Tool/software: Linux

Hi,

Our Setup

we are using a WL1835MOD with Linux 4.4.38 (mainline/vanilla) on a iMX27 SoC. The userland is Debian Jessie (armel) / busybox based. The WiLink is attached to first SD interface (sdhci1).

&sdhci1 {
	pinctrl-names = "default";
	pinctrl-0 = <&pinctrl_sdhc1>;
	bus-width = <4>;
	vmmc-supply = <&reg_wlan>;
	status = "okay";

	#address-cells = <1>;
	#size-cells = <0>;
	wlcore: wlcore@2 {
		compatible = "ti,wl1835";
		reg = <2>;
		interrupt-parent = <&gpio6>;
		interrupts = <3 IRQ_TYPE_LEVEL_HIGH>;
	};
};

Firmware

We use the firmware from the 'linux-firmware' git repository from TI.

git://git.ti.com/wilink8-wlan/linux-firmware.git

We have tested versions '8.9.0.0.69' and '8.9.0.1.55'.

Configuration

We don't use any customized firmware configuration.

What is working

We are able to load the firmware and assign a static ip address.

ifconfig wlan0 up
[   90.698270] wlcore: PHY firmware version: Rev 8.2.0.0.233
[   90.820751] wlcore: firmware booted (Rev 8.9.0.1.55)

We can scan for APs and connect to an unencrypted AP.

iw wlan0 connect -w testwifi
ifconfig wlan0 192.168.0.123

Most times we are even able to ping the AP.

ping 192.168.0.254
PING 192.168.0.254 (192.168.0.254): 56 data bytes
64 bytes from 192.168.0.254: seq=0 ttl=64 time=997.957 ms
64 bytes from 192.168.0.254: seq=1 ttl=64 time=2.798 ms
64 bytes from 192.168.0.254: seq=2 ttl=64 time=3.238 ms
64 bytes from 192.168.0.254: seq=3 ttl=64 time=5.058 ms
...

What is NOT working

download with wget

If we try to download the status page of the AP with wget we got the following warnings.

[ 2472.440442] wlcore: WARNING corrupted packet in RX: status: 0x1 len: 1536
[ 2472.622218] wlcore: WARNING corrupted packet in RX: status: 0x1 len: 480
[ 2473.042119] wlcore: WARNING corrupted packet in RX: status: 0x1 len: 480
[ 2473.882080] wlcore: WARNING corrupted packet in RX: status: 0x1 len: 480
[ 2475.563958] wlcore: WARNING corrupted packet in RX: status: 0x1 len: 480
[ 2478.922844] wlcore: WARNING corrupted packet in RX: status: 0x1 len: 480

DHCP client

When we try to get an ip address from a DHCP server it nerver succeeds.

udhcpc -i wlan0
udhcpc: started, v1.25.0
udhcpc: sending discover
udhcpc: sending select for 192.168.0.101
udhcpc: sending select for 192.168.0.101
udhcpc: sending select for 192.168.0.101
udhcpc: sending discover
udhcpc: sending discover
udhcpc: sending discover
udhcpc: sending discover
udhcpc: sending discover

And if we try to assign an ip address after we killed the dhcp client we got the following error.

# ifconfig wlan0 192.168.0.123
[ 2966.252744] mxc-mmc 10013000.sdhci: mxcmci_watchdog: write time out (status = 0x32000840)
[ 2966.261070] ------------[ cut here ]------------
[ 2966.267333] WARNING: CPU: 0 PID: 913 at /home/ilu/projects/ruag/src/linux/drivers/net/wireless/ti/wlcore/sdio.c:145 wl12xx_sdio_raw_write+0xe4/0x11c()
[ 2966.282447] ---[ end trace 32b5decc7ca8bc96 ]---
[ 2966.293169] wl1271_sdio mmc0:0001:2: sdio write failed (-110)
[ 2966.298969] ------------[ cut here ]------------
[ 2966.311874] WARNING: CPU: 0 PID: 913 at /home/ilu/projects/ruag/src/linux/drivers/net/wireless/ti/wlcore/main.c:802 wl12xx_queue_recovery_work+0x2c/0x78()
[ 2966.327238] ---[ end trace 32b5decc7ca8bc97 ]---
[ 2966.331982] wlcore: WARNING cmd set_template failed: -110
[ 2966.342597] wlcore: WARNING build arp rsp failed: -110
[ 2966.356774] wlcore: Hardware recovery in progress. FW ver: Rev 8.9.0.1.55
# [ 2966.365976] wlcore: down
[ 2966.370853] ieee80211 phy0: Hardware restart was requested
[ 2966.835159] wlcore: PHY firmware version: Rev 8.2.0.0.233
[ 2966.957965] wlcore: firmware booted (Rev 8.9.0.1.55)
[ 2967.027453] wlcore: Association completed.

Conclusion

It seems like if more then a small icmp package once in a while is send over the WiFi it works most times. But if we start to do a little traffic on the interface the Firmware doesn't respond anymore.

  • Hello Philippe,

    Errors like this (wl1271_sdio mmc0:0001:2: sdio write failed (-110)) are normally related to sdio bus instability with the target hardware..

    Two things to try:

    1. Reduce the sdio bus speed. Start with 1Mhz and see if the board is more stable. If it is you need to ask your hardware engineer to review the board design, level shifter used etc.
    You can add:
    max-frequency = <1000000>;
    in the sdhci1 mode above to limit the sdio clock speed and see if it helps in any way.

    2. Try to disable ELP (low power mode) and see if it helps. See the following wiki:
    processors.wiki.ti.com/.../WL18xx_Driver_Debug

    Best Regards,
    Eyal
  • Hi Eyal,

    thanks for your replay.

    We tested the connection with both options you have mentioned. But with no success.

    This happend after with 1 MHz and with ELP disabled when I tried to download the index.html from my access point:

    [  254.461493] wlcore: WARNING illegal id in tx completion: 3
    [  254.467167] wlcore: WARNING illegal id in tx completion: 8
    [  254.472692] wlcore: WARNING illegal id in tx completion: 0
    [  254.478317] wlcore: WARNING illegal id in tx completion: 64
    [  254.484014] wlcore: WARNING illegal id in tx completion: 3
    [  254.489537] wlcore: WARNING illegal id in tx completion: 8
    [  254.495131] wlcore: WARNING illegal id in tx completion: 0
    [  254.500654] wlcore: WARNING illegal id in tx completion: 64
    [  254.506334] wlcore: WARNING illegal id in tx completion: 3
    [  254.511856] wlcore: WARNING illegal id in tx completion: 8
    [  254.517450] wlcore: WARNING illegal id in tx completion: 0
    [  254.523056] wlcore: WARNING illegal id in tx completion: 64
    [  254.528665] wlcore: WARNING illegal id in tx completion: 3
    [  254.534257] wlcore: WARNING illegal id in tx completion: 8
    [  254.539779] wlcore: WARNING illegal id in tx completion: 0
    [  254.545372] wlcore: WARNING illegal id in tx completion: 64
    [  254.550981] wlcore: WARNING illegal id in tx completion: 3
    [  254.556571] wlcore: WARNING illegal id in tx completion: 8
    [  254.562094] wlcore: WARNING illegal id in tx completion: 8
    [  254.567702] wlcore: WARNING illegal id in tx completion: 0
    [  254.573312] wlcore: WARNING illegal id in tx completion: 64
    [  254.588243] wlcore: WARNING received empty data
    [  254.596204] wlcore: WARNING illegal id in tx completion: 0
    [  254.603856] wlcore: WARNING illegal id in tx completion: 0
    [  254.612068] wlcore: WARNING illegal id in tx completion: 0
    [  254.620421] wlcore: WARNING illegal id in tx completion: 0
    [  254.628758] wlcore: WARNING illegal id in tx completion: 0
    [  254.637098] wlcore: WARNING illegal id in tx completion: 0
    [  254.645423] wlcore: WARNING illegal id in tx completion: 0
    [  254.653753] wlcore: WARNING illegal id in tx completion: 0
    [  254.662012] wlcore: WARNING illegal id in tx completion: 0
    [  254.670357] wlcore: WARNING illegal id in tx completion: 0
    [  254.678715] wlcore: WARNING illegal id in tx completion: 0
    [  254.687025] wlcore: WARNING illegal id in tx completion: 0
    [  254.695360] wlcore: WARNING illegal id in tx completion: 0
    [  254.703692] wlcore: WARNING illegal id in tx completion: 0
    [  254.711947] wlcore: WARNING illegal id in tx completion: 0
    [  254.720294] wlcore: WARNING illegal id in tx completion: 0
    [  254.728623] wlcore: WARNING illegal id in tx completion: 124
    [  254.737128] wlcore: WARNING illegal id in tx completion: 127
    [  254.745649] wlcore: WARNING illegal id in tx completion: 127
    [  254.754145] wlcore: WARNING illegal id in tx completion: 127
    [  254.762574] wlcore: WARNING illegal id in tx completion: 4
    [  254.770919] wlcore: WARNING illegal id in tx completion: 2
    [  254.779250] wlcore: WARNING illegal id in tx completion: 3
    [  254.787581] wlcore: WARNING illegal id in tx completion: 4
    [  254.795916] wlcore: WARNING illegal id in tx completion: 10
    [  254.804336] wlcore: WARNING illegal id in tx completion: 10
    [  254.812679] wlcore: WARNING illegal id in tx completion: 32
    [  254.821107] wlcore: WARNING illegal id in tx completion: 0
    [  254.829438] wlcore: WARNING illegal id in tx completion: 0
    [  254.837788] wlcore: WARNING illegal id in tx completion: 0
    [  254.847235] wlcore: WARNING illegal id in tx completion: 0
    [  254.854568] wlcore: WARNING illegal id in tx completion: 0
    [  254.862840] wlcore: WARNING illegal id in tx completion: 0
    [  254.871094] wlcore: WARNING illegal id in tx completion: 0
    [  254.879445] wlcore: WARNING illegal id in tx completion: 0
    [  254.887779] wlcore: WARNING illegal id in tx completion: 0
    [  254.896121] wlcore: WARNING illegal id in tx completion: 0
    [  254.904452] wlcore: WARNING illegal id in tx completion: 0
    [  254.911636] wlcore: WARNING illegal id in tx completion: 0
    [  254.917230] wlcore: WARNING illegal id in tx completion: 0
    [  254.922833] wlcore: WARNING illegal id in tx completion: 0
    [  254.928358] wlcore: WARNING illegal id in tx completion: 0
    [  254.933951] wlcore: WARNING illegal id in tx completion: 0
    [  254.939475] wlcore: WARNING illegal id in tx completion: 0
    [  254.945071] wlcore: WARNING illegal id in tx completion: 1
    [  254.985257] wlcore: WARNING illegal id in tx completion: 64
    [  254.993045] wlcore: WARNING illegal id in tx completion: 3
    [  255.001231] wlcore: WARNING illegal id in tx completion: 8
    [  255.009578] wlcore: WARNING illegal id in tx completion: 0
    [  255.017925] wlcore: WARNING illegal id in tx completion: 64
    [  255.026349] wlcore: WARNING illegal id in tx completion: 3
    [  255.034680] wlcore: WARNING illegal id in tx completion: 8
    [  255.043011] wlcore: WARNING illegal id in tx completion: 0
    [  255.051270] wlcore: WARNING illegal id in tx completion: 64
    [  255.059708] wlcore: WARNING illegal id in tx completion: 3
    [  255.068032] wlcore: WARNING illegal id in tx completion: 8
    [  255.076365] wlcore: WARNING illegal id in tx completion: 0
    [  255.084700] wlcore: WARNING illegal id in tx completion: 64
    [  255.093115] wlcore: WARNING illegal id in tx completion: 3
    [  255.101373] wlcore: WARNING illegal id in tx completion: 8
    [  255.109712] wlcore: WARNING illegal id in tx completion: 8
    [  255.118045] wlcore: WARNING illegal id in tx completion: 0
    [  255.126375] wlcore: WARNING illegal id in tx completion: 64
    [  265.392848] mxc-mmc 10013000.sdhci: mxcmci_watchdog: read time out (status = 0x10000908)
    [  265.401088] ------------[ cut here ]------------
    [  265.405927] WARNING: CPU: 0 PID: 689 at /home/ilu/projects/ruag/src/linux/drivers/net/wireless/ti/wlcore/sdio.c:10
    7 wl12xx_sdio_raw_read+0xe4/0x11c()
    [  265.419490] Modules linked in:
    [  265.419559] CPU: 0 PID: 689 Comm: irq/243-wl18xx Not tainted 4.4.38-00037-g32c6899-dirty #76
    [  265.419592] Hardware name: Freescale i.MX27 (Device Tree Support)
    [  265.419690] [<c000f128>] (unwind_backtrace) from [<c000d0e4>] (show_stack+0x10/0x14)
    [  265.419768] [<c000d0e4>] (show_stack) from [<c0017a40>] (warn_slowpath_common+0x80/0xa8)
    [  265.419833] [<c0017a40>] (warn_slowpath_common) from [<c0017af8>] (warn_slowpath_null+0x18/0x20)
    [  265.419904] [<c0017af8>] (warn_slowpath_null) from [<c02a2bf0>] (wl12xx_sdio_raw_read+0xe4/0x11c)
    [  265.419987] [<c02a2bf0>] (wl12xx_sdio_raw_read) from [<c02999f0>] (wlcore_rx+0x248/0x65c)
    [  265.420055] [<c02999f0>] (wlcore_rx) from [<c028fb94>] (wlcore_irq_locked+0x110/0x2b4)
    [  265.420113] [<c028fb94>] (wlcore_irq_locked) from [<c029060c>] (wlcore_irq+0x14c/0x214)
    [  265.420178] [<c029060c>] (wlcore_irq) from [<c00445e8>] (irq_thread_fn+0x1c/0x34)
    [  265.420238] [<c00445e8>] (irq_thread_fn) from [<c00447fc>] (irq_thread+0xc0/0x1cc)
    [  265.420309] [<c00447fc>] (irq_thread) from [<c002f580>] (kthread+0xc4/0xd8)
    [  265.420372] [<c002f580>] (kthread) from [<c000a310>] (ret_from_fork+0x14/0x24)
    [  265.420403] ---[ end trace f112cc175e0933b2 ]---
    [  265.425194] wl1271_sdio mmc0:0001:2: sdio read failed (-110)
    [  265.430895] ------------[ cut here ]------------
    [  265.435683] WARNING: CPU: 0 PID: 689 at /home/ilu/projects/ruag/src/linux/drivers/net/wireless/ti/wlcore/main.c:80
    2 wl12xx_queue_recovery_work+0x2c/0x78()
    [  265.449631] Modules linked in:
    [  265.449701] CPU: 0 PID: 689 Comm: irq/243-wl18xx Tainted: G        W       4.4.38-00037-g32c6899-dirty #76
    [  265.449736] Hardware name: Freescale i.MX27 (Device Tree Support)
    [  265.449821] [<c000f128>] (unwind_backtrace) from [<c000d0e4>] (show_stack+0x10/0x14)
    [  265.449893] [<c000d0e4>] (show_stack) from [<c0017a40>] (warn_slowpath_common+0x80/0xa8)
    [  265.449960] [<c0017a40>] (warn_slowpath_common) from [<c0017af8>] (warn_slowpath_null+0x18/0x20)
    [  265.450027] [<c0017af8>] (warn_slowpath_null) from [<c02901ec>] (wl12xx_queue_recovery_work+0x2c/0x78)
    [  265.450089] [<c02901ec>] (wl12xx_queue_recovery_work) from [<c029061c>] (wlcore_irq+0x15c/0x214)
    [  265.450156] [<c029061c>] (wlcore_irq) from [<c00445e8>] (irq_thread_fn+0x1c/0x34)
    [  265.450215] [<c00445e8>] (irq_thread_fn) from [<c00447fc>] (irq_thread+0xc0/0x1cc)
    [  265.450284] [<c00447fc>] (irq_thread) from [<c002f580>] (kthread+0xc4/0xd8)
    [  265.450345] [<c002f580>] (kthread) from [<c000a310>] (ret_from_fork+0x14/0x24)
    [  265.450377] ---[ end trace f112cc175e0933b3 ]---
    [  265.458400] wlcore: Hardware recovery in progress. FW ver: Rev 8.9.0.0.69
    [  265.479282] wlcore: down
    [  265.488082] regulator regulator.14: mc13xxx_regulator_disable id: 22
    [  265.489554] ieee80211 phy0: Hardware restart was requested
    [  265.523047] regulator regulator.14: mc13xxx_regulator_enable id: 22
    [  267.069445] wlcore: PHY firmware version: Rev 8.2.0.0.236
    [  267.301492] wlcore: firmware booted (Rev 8.9.0.0.69)
    [  267.535559] wlcore: Association completed.
    [  268.674102] wlcore: WARNING illegal id in tx completion: 0
    [  268.679648] wlcore: WARNING illegal id in tx completion: 0
    [  268.685314] wlcore: WARNING illegal id in tx completion: 0
    ...

    Is there an other driver for the wl18xx available wich could be used with a 4.4 Linux kernel? Is the 4.4 Linux mainline driver known to work reliable?

    Best regards

    Philipp

  • Hi ,
    This seems like SDIO signal integrity issues
    - Define following properties for SDIO controller in dts file and re-check
    non-removable
    cap-power-off-card
    - You will need to hook logic analyzer and probe SDIO clk/data and other pins to check if it's signal integrity issue

    Saurabh
  • Hi Saurabh,

    we tried it with and without non-removable and cap-power-off-card.

    We also used a scope to check the clk, data and interrupt lines. The seem to be fine. I can't see anything unusual.

    We also tried to use 1bit mode with 1MHz which also hasn't improved the situation.

    The screenshot from the scope was done with 1MHz and 4bit.

  • hi ,
    You can try 2 following options:

    - Upgrade WiLink8 driver to the latest release : R8.7_SP1. You will need to define parameters in setup-env and the build script will build all necessary binaries for you including driver modules / supplicant etc.
    processors.wiki.ti.com/.../WL18xx_System_Build_Scripts

    - Get Firmware matching WiLink8 Driver in kernel 4.4.x . TI Processor sdk 3.2.05 is based on 4.4.x. You can install sdk and use wil18xx-fw-4.bin in /lib/firmware/ti-connectivity of target binaries :
    software-dl.ti.com/.../index_FDS.html

    Saurabh
  • Hi Saurabh

    what is still not clear to me is the interrupt polarity and edge. We use IRQ_TYPE_LEVEL_HIGH, can you confirm that this setting matching the default settings of the chip firmware?

    Best Dani

  • Hi,
    WLAN_IRQ default setting is IRQ_TYPE_EDGE_RISING

    Saurabh
  • Hi Saurabh

    we use now latest use latest firmware and config file, but still original linux kernel code. From the log I conclude that the ti driver misses an interrupt. So we should continue to search on interrupt controller side, can you pls confirm?

    Best Dani

    [ 1294.994725] wlcore: intr: 0x40 (fw_rx_counter = 21, drv_rx_counter = 20, tx_results_counter = 0) [ 1294.994777] wlcore: WL1271_ACX_INTR_DATA [ 1294.995028] wlcore: rx skb 0xc7beaa80: 78 B seq 2335 hlid 1 [ 1294.995283] wlcore: queue skb hlid 1 q 0 len 241 [ 1294.995475] wlcore: tx_allocate: size: 257, blocks: 2, id: 0 [ 1294.995530] wlcore: tx_fill_hdr: hlid: 1 len: 257 life: 2000 mem: 2 [ 1294.997302] wlcore: IRQ work [ 1294.997603] wlcore: intr: 0x40 (fw_rx_counter = 22, drv_rx_counter = 21, tx_results_counter = 0) [ 1294.997668] wlcore: last released desc = 3, current idx = 4 [ 1294.997708] wlcore: tx status id 0 skb 0xc7bea3c0 success 1 [ 1294.997754] wlcore: WL1271_ACX_INTR_DATA [ 1294.998066] wlcore: rx skb 0xc7beacc0: 241 B seq 2336 hlid 1 [ 1313.922421] wlcore: IRQ work [ 1313.922829] wlcore: intr: 0x40 (fw_rx_counter = 24, drv_rx_counter = 22, tx_results_counter = 0) [ 1313.922883] wlcore: WL1271_ACX_INTR_DATA [ 1313.923298] wlcore: rx skb 0xc7bea9c0: 280 B seq 0 hlid 0 [ 1313.923393] wlcore: rx skb 0xc7beaa80: 268 B seq 0 hlid 0 [ 1338.144392] wlcore: queue skb hlid 1 q 0 len 241 [ 1338.144566] wlcore: tx_allocate: size: 257, blocks: 2, id: 0 [ 1338.144621] wlcore: tx_fill_hdr: hlid: 1 len: 257 life: 2000 mem: 2 [ 1343.152784] wlcore: queue skb hlid 1 q 0 len 60 [ 1344.152803] wlcore: queue skb hlid 1 q 0 len 60 [ 1345.152795] wlcore: queue skb hlid 1 q 0 len 60 [ 1348.172736] mxc-mmc 10013000.sdhci: mxcmci_watchdog: write time out (status = 0x32000840) [ 1348.181098] ------------[ cut here ]------------ [ 1348.187249] WARNING: CPU: 0 PID: 754 at drivers/net/wireless/ti/wlcore/sdio.c:145 wl12xx_sdio_raw_write+0xe4/0x11c() [ 1348.198033] Modules linked in: [ 1348.198111] CPU: 0 PID: 754 Comm: kworker/u2:0 Tainted: G W 4.4.38 #2 [ 1348.198145] Hardware name: Freescale i.MX27 (Device Tree Support) [ 1348.198218] Workqueue: phy0 wl1271_tx_work [ 1348.198315] [<c000f128>] (unwind_backtrace) from [<c000d0e4>] (show_stack+0x10/0x14) [ 1348.198390] [<c000d0e4>] (show_stack) from [<c0017a40>] (warn_slowpath_common+0x80/0xa8) [ 1348.198456] [<c0017a40>] (warn_slowpath_common) from [<c0017af8>] (warn_slowpath_null+0x18/0x20) [ 1348.198527] [<c0017af8>] (warn_slowpath_null) from [<c02a2ad4>] (wl12xx_sdio_raw_write+0xe4/0x11c) [ 1348.198607] [<c02a2ad4>] (wl12xx_sdio_raw_write) from [<c02991cc>] (wlcore_tx_work_locked+0xd4c/0xde0) [ 1348.198681] [<c02991cc>] (wlcore_tx_work_locked) from [<c029928c>] (wl1271_tx_work+0x2c/0x50) [ 1348.198748] [<c029928c>] (wl1271_tx_work) from [<c002acfc>] (process_one_work+0x1ec/0x338) [ 1348.198806] [<c002acfc>] (process_one_work) from [<c002b4c0>] (worker_thread+0x318/0x46c) [ 1348.198871] [<c002b4c0>] (worker_thread) from [<c002f580>] (kthread+0xc4/0xd8) [ 1348.198929] [<c002f580>] (kthread) from [<c000a310>] (ret_from_fork+0x14/0x24) [ 1348.198959] ---[ end trace 1658d315c1a4fc80 ]--- [ 1348.209341] wl1271_sdio mmc0:0001:2: sdio write failed (-110) [ 1348.217842] ------------[ cut here ]------------ [ 1348.222571] WARNING: CPU: 0 PID: 754 at drivers/net/wireless/ti/wlcore/main.c:802 wl12xx_queue_recovery_work+0x2c/0x78() [ 1348.234667] Modules linked in: [ 1348.234754] CPU: 0 PID: 754 Comm: kworker/u2:0 Tainted: G W 4.4.38 #2 [ 1348.234790] Hardware name: Freescale i.MX27 (Device Tree Support) [ 1348.234865] Workqueue: phy0 wl1271_tx_work [ 1348.234961] [<c000f128>] (unwind_backtrace) from [<c000d0e4>] (show_stack+0x10/0x14) [ 1348.235037] [<c000d0e4>] (show_stack) from [<c0017a40>] (warn_slowpath_common+0x80/0xa8) [ 1348.235106] [<c0017a40>] (warn_slowpath_common) from [<c0017af8>] (warn_slowpath_null+0x18/0x20) [ 1348.235176] [<c0017af8>] (warn_slowpath_null) from [<c02901ec>] (wl12xx_queue_recovery_work+0x2c/0x78) [ 1348.235246] [<c02901ec>] (wl12xx_queue_recovery_work) from [<c029929c>] (wl1271_tx_work+0x3c/0x50) [ 1348.235317] [<c029929c>] (wl1271_tx_work) from [<c002acfc>] (process_one_work+0x1ec/0x338) [ 1348.235374] [<c002acfc>] (process_one_work) from [<c002b4c0>] (worker_thread+0x318/0x46c) [ 1348.235437] [<c002b4c0>] (worker_thread) from [<c002f580>] (kthread+0xc4/0xd8) [ 1348.235498] [<c002f580>] (kthread) from [<c000a310>] (ret_from_fork+0x14/0x24) [ 1348.235531] ---[ end trace 1658d315c1a4fc81 ]--- [ 1348.240280] wlcore: Hardware recovery in progress. FW ver: Rev 8.9.0.0.70 [ 1348.252889] wlcore: mem_start 00700000 mem_size 0000030C [ 1348.252941] wlcore: reg_start 00802000 reg_size 00014578 [ 1348.252968] wlcore: mem2_start 00B00404 mem2_size 00001000 [ 1348.252993] wlcore: mem3_start 00C00000 mem3_size 00000400 [ 1348.253043] wlcore: mac80211 remove interface [ 1348.253066] wlcore: down [ 1348.255639] wlcore: link freeing skb 0xc7bea9c0 [ 1348.255703] wlcore: link freeing skb 0xc7bea6c0 [ 1348.255752] wlcore: link freeing skb 0xc7bea300 [ 1348.255850] wlcore: freeing skb 0xc7beab40 [ 1348.262348] regulator regulator.14: mc13xxx_regulator_disable id: 22 [ 1348.265202] ieee80211 phy0: Hardware restart was requested [ 1348.272273] wlcore: mac80211 start

  • Hi ,
    Please confirm the following for my better understanding
    - You see this issue regardless of SDIO clk freq : 1MHz or 52MHz ? Rate of failure remains same in both cases ?
    - Ping packets are sent successfully - but any high rate data traffic fails ?
    - wlan0 interface can be brought up/down/up repeatedly successfully ?

    Saurabh
  • Hi Saurabh,

    we found the problem. We disabled mmc driver dma and the ping is stable now. Have to fix DMA now. 

    We found that ping from other host to embedded works well, while other direction causes problem when DMA is involved (larger payload). 

    Any hints about dma interrupt priority or any other platform configuration pitfalls?

    Best Dani

  • Hi Dani,
    In case it is mmc/sdio controller DMA issue, i suggest you consult iMX BSP team .

    Thanks,
    Saurabh
  • Hi Saurabh

    that mmc driver works fine with SD card. We are going to have a closer look on TI driver first as we use the TI driver that comes with kernel at the moment.. There are quite some differences to the TI Eval board drivers...

    Best Dani

  • Hi Dani,
    SDIO interface is different from SD interface - it involves IO commands / interrupt etc. Since you have already updated to latest WiLink8 driver/s - i suggest you refer to iMX specific patches in build-utilites/patches/kernel_patches/linux-4.1-at91 ( This may or may not apply to your kernel version but can be used as reference to check dts settings etc. )

    Saurabh
  • Hi Dani,

    Is still issue still open? did you try lowering the sdio clock and see if it helps? Seems like an sdio bus integrity issue.

    BR,
    Eyal
  • Hi Eyal, it is working now with disabled  DMA. Clock did not help. Looks like a CPU dma issue, either silicon or kernel driver. Best Dani