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.

SDIO Write Failure

Other Parts Discussed in Thread: OMAPL138, OMAP-L138, AM1808

We are using a Marvell based WLAN/Bluetooth combo module with OMAPL138 (not the EVM, but a custom design). In some scenarios we observed that FN1 (WLAN) driver gets write failure error from MMC controller (error seen on console is pasted at the end of this message). What we have observed is that the F1 driver occasionally fails to write, but recovers (the retry limit is set to 3). However, irrecoverable failure will eventually happen. We have tried increasing the retry limit (not a practical solution though) and found that the failure is inevitable.


We debugged further using SDIO analyzer and observed that actual data is not seen by the analyzer (as shown in the below capture, Figure 2), when the write failure happens.

Figure 1: CMD53-Write operation with DATA

Figure 2: CMD53-Write Operation with NO DATA


The WLAN SDIO card that we are using supports various voltages. We are using 1.8V.

For the same test instead of using SDIO analyzer, we probed SD lines. It can be noted that when the write fails, the D1 line logic low shows a problem as in the below picture (the lines do not go low completely). The D1 line would have returned to normal after sometime, but the write failure doesn't recover. Interesting thing to note is that the read from the SDIO slave works fine even after the irrecovrable failure with write happens (and after D1 lines return to normal behavior).


We observed the issue initially without the probes. The kernel driver debug messages show the same failures with or without the probes connected. Also, we believe SDIO analyzer has enough buffers to maintain the signal integrity between host controller and card. So we guess the chances of interference due to the probes are remote.

We are trying to identify the problem area positively. At this point, all the data we have suggests that the problem is with the host (OMAPL138 controller or the design). We appreciate any help to debug this issue further. Let us know if any more data is needed. We will run any tests required to get the data.

Thanks,
Suresh

Log seen on serial console

(We are using Linux on the host platform)

[ 3] 49.0-50.0 sec 129 KBytes 1.06 Mbits/sec [ 3] 50.0-51.0 sec 128 KBytes 1.05 Mbits/sec [ 3] 51.0-52.0 sec 128 KBytes 1.05 Mbits/sec [ 3] 52.0-53.0 sec 128 KBytes 1.05 Mbits/sec host_to_card, write iomem (1) failed: -1 host_to_card, write iomem (2) failed: -1 [ 3] 53.0-54.0 sec 128 KBytes 1.05 Mbits/sec [ 3] 54.0-55.0 sec 129 KBytes 1.06 Mbits/sec ------------[ cut here ]------------ WARNING: at net/sched/sch_generic.c:256 dev_watchdog+0x2bc/0x2dc() NETDEV WATCHDOG: mlan0 (wlan_sdio): transmit queue 0 timed out Modules linked in: sd8xxx(O) mlan(PO) syslink(O) [<c000d948>] (unwind_backtrace+0x0/0xf0) from [<c0017e34>] (warn_slowpath_common+0x4c/0x64) [<c0017e34>] (warn_slowpath_common+0x4c/0x64) from [<c0017ee0>] (warn_slowpath_fmt+0x30/0x40) [<c0017ee0>] (warn_slowpath_fmt+0x30/0x40) from [<c0264c68>] (dev_watchdog+0x2bc/0x2dc) [<c0264c68>] (dev_watchdog+0x2bc/0x2dc) from [<c0022d0c>] (run_timer_softirq+0x12c/0x2b8) [<c0022d0c>] (run_timer_softirq+0x12c/0x2b8) from [<c001d778>] (__do_softirq+0xa0/0x13c) [<c001d778>] (__do_softirq+0xa0/0x13c) from [<c001dc38>] (irq_exit+0x88/0x94) [<c001dc38>] (irq_exit+0x88/0x94) from [<c0009cb0>] (handle_IRQ+0x34/0x84) [<c0009cb0>] (handle_IRQ+0x34/0x84) from [<c0009058>] (__irq_svc+0x38/0x8c) [<c0009058>] (__irq_svc+0x38/0x8c) from [<c00153bc>] (davinci_enter_idle+0x78/0xb4) [<c00153bc>] (davinci_enter_idle+0x78/0xb4) from [<c0208f88>] (cpuidle_idle_call+0x9c/0x12c) [<c0208f88>] (cpuidle_idle_call+0x9c/0x12c) from [<c0009fd0>] (cpu_idle+0xa8/0x100) [<c0009fd0>] (cpu_idle+0xa8/0x100) from [<c03d06f4>] (start_kernel+0x274/0x2bc) ---[ end trace 366d06aa9ac4300c ]--- 4294962112 : Tx timeout (1), bss_index=0 4294963101 : Tx timeout (2), bss_index=0 4294964101 : Tx timeout (3), bss_index=0 4294965101 : Tx timeout (4), bss_index=0 4294966101 : Tx timeout (5), bss_index=0

  • Sorry about the way the serial console log formatting in the last message. I am not sure what E2E webpage did. Here its once again.

    [  3] 49.0-50.0 sec   129 KBytes  1.06 Mbits/sec
    [  3] 50.0-51.0 sec   128 KBytes  1.05 Mbits/sec
    [  3] 51.0-52.0 sec   128 KBytes  1.05 Mbits/sec
    [  3] 52.0-53.0 sec   128 KBytes  1.05 Mbits/sec
    host_to_card, write iomem (1) failed: -1
    host_to_card, write iomem (2) failed: -1
    [  3] 53.0-54.0 sec   128 KBytes  1.05 Mbits/sec
    [  3] 54.0-55.0 sec   129 KBytes  1.06 Mbits/sec
    ------------[ cut here ]------------
    WARNING: at net/sched/sch_generic.c:256 dev_watchdog+0x2bc/0x2dc()
    NETDEV WATCHDOG: mlan0 (wlan_sdio): transmit queue 0 timed out
    Modules linked in: sd8xxx(O) mlan(PO) syslink(O)
    [<c000d948>] (unwind_backtrace+0x0/0xf0) from [<c0017e34>] (warn_slowpath_common+0x4c/0x64)
    [<c0017e34>] (warn_slowpath_common+0x4c/0x64) from [<c0017ee0>] (warn_slowpath_fmt+0x30/0x40)
    [<c0017ee0>] (warn_slowpath_fmt+0x30/0x40) from [<c0264c68>] (dev_watchdog+0x2bc/0x2dc)
    [<c0264c68>] (dev_watchdog+0x2bc/0x2dc) from [<c0022d0c>] (run_timer_softirq+0x12c/0x2b8)
    [<c0022d0c>] (run_timer_softirq+0x12c/0x2b8) from [<c001d778>] (__do_softirq+0xa0/0x13c)
    [<c001d778>] (__do_softirq+0xa0/0x13c) from [<c001dc38>] (irq_exit+0x88/0x94)
    [<c001dc38>] (irq_exit+0x88/0x94) from [<c0009cb0>] (handle_IRQ+0x34/0x84)
    [<c0009cb0>] (handle_IRQ+0x34/0x84) from [<c0009058>] (__irq_svc+0x38/0x8c)
    [<c0009058>] (__irq_svc+0x38/0x8c) from [<c00153bc>] (davinci_enter_idle+0x78/0xb4)
    [<c00153bc>] (davinci_enter_idle+0x78/0xb4) from [<c0208f88>] (cpuidle_idle_call+0x9c/0x12c)
    [<c0208f88>] (cpuidle_idle_call+0x9c/0x12c) from [<c0009fd0>] (cpu_idle+0xa8/0x100)
    [<c0009fd0>] (cpu_idle+0xa8/0x100) from [<c03d06f4>] (start_kernel+0x274/0x2bc)
    ---[ end trace 366d06aa9ac4300c ]---
    4294962112 : Tx timeout (1), bss_index=0
    4294963101 : Tx timeout (2), bss_index=0
    4294964101 : Tx timeout (3), bss_index=0
    4294965101 : Tx timeout (4), bss_index=0
    4294966101 : Tx timeout (5), bss_index=0
  • Hi SureshRajashekara

    Moving your post to WLAN Applications Forum to get quicker/appropriate response.

     

    Regards,

    Shankari

  • Sorry for the confusion. For now, I am going to move this post back on the OMAPL1x forums. We will also ping the WLAN team incase they have any additional inputs on this.

  • The statement "In some scenarios we observed that FN1 (WLAN) driver gets write failure error from MMC controller " would suggest that the error is intermittent so there could be signal integrity issues with the MMC to Wireless card connection. I suggest we also look at the hawrdware details to verify. If possible, please let us know the portion of the MMC/SDIO interface to the wifi card schematics and required signal parametrics. You can send the info via your TI contacts if it is convenient to post them here. 

  • Sorry I meant "... if it is not convenient ...". Also please include the SD/MMC to wilan chip layout. If it is through a connector then we would want both the board as well as the wlan card layout to check the trace length and width.

  • Let me add some additional information to this.  We spent over 5 months debugging a different SDIO issue on this identical hardware platform with Ti earlier this year, and during that investigation we extensively studied the electrical interface between the OMAP and Radio Chipset.    Some hardware interface details:

    1) Total trace length is < 1.5 cm, trace length on all interface lines are designed to be the same

    2) trace impedance is controlled (stripline traces), and wave shape is excellent with no ringing or ground bounce.  We have an option to add a series R on the drive side if there was an issue with impedance matching, but there isn't...

    3) 1.8V logic is used on both sides, and there is < 100 mV of noise on the ground on either side which is well within the noise immunity of the interface.  Both grounds are tied together through the signal trace reference mirror plane.

    4) there are no "T" or other impedance mismatched traces in this design which could cause trouble.  Aside from a short, direct connection between both SDIO devices, we also have weak 47K ohm pullups on each SDIO trace.  And thats it, no other hardware :-)  No connectors, no headers, nothing.  Just buried traces..

    5) All high speed SDIO interface signals are mirrored to a ground plane directly adjacent.  This is a 6 Ghz board design, and the SDIO lines themselves were designed to faithfully pass transition harmonics above 1Ghz

    6) We have looked at the waveforms with high speed FET probes, and also with standard high speed low loss probes, and the waveshapes are similar, due to the microstrip nature of the lines and the relatively low design impedance.  Loading with either variety of  scope probe doesn't appear to be an issue.

    7) As near as we've (I've) ever been able to tell, there is absolutely nothing in the hardware that can cause this behaviour noted above. 

    My recommendation, is we try to focus from the most likely software issue to least likely.  Our previous investigation concluded that itself was a software issue, and updating the Ti source tree, ultimately solved that problem.

    -David

  • Thanks for the reply Loc. I have forward the part of the schematics that's relevant for this discussion to our TI contact. You should be getting it soon.

    Suresh

  • Hi SureshRajashekara,

    Would you please give some information on the following.

    1. Do you use Davinci PSP Linux on OMAPL138? If yes, please specify the version.

    2. Which driver is used for WLAN/Bluetooth combo module ? Is it provided by Marvel or others?. Please share your .config file.

    3. Is this module probed/inserted after kernel booting or integerated as a part of kernel ?

    4. Please send the complete logs along with the wlan commands used,

    5. At what stage/scenario this error is realized?

    Regards,

    Shankari

  • Hi Shankari,

    Here are the answers

    1. We are using the 3.3 kernel from the Arago tree git://arago-project.org/git/projects/linux-davinci.git

    2. We are using the driver provided by Marvell. The versio of the marvell driver we are using is this SD-UAPSTA-BT-FM-8787-JB42_LINUX_3_4_5-PXA988-14.66.35.p16-M3X14412_AX-MGPL

    I have attached the config file (kernel_config).

    We are not using the mwifiex driver in the kernel.

    3. The module is inserted by a bootup script when the system is booted.

    4 & 5

    The log file is also attached and here is the procedure to reproduce it.

    1. Associate 8787 to an Access point.
    2. Assign IP address to the interface either statically or using dhcp.
    3. Run iperf server in a machine connected to AP backend.
    4. Run iperf client limiting the bandwidth to 1Mbps.
               a. "iperf -c <Server IP> -i 1 -t 9999 -b1M -d"
    5. "SDIO" write will fail

    Let us know if you need any more information.

    Suresh

    4456.wlan_sdio_write_fail.log
    *
    wlan_interrupt: sdio_ireg = 0x1
    UPLD: rd_bitmap=0x00002000
    mlan0: 1374827210.667598 : Data <= FW
    mlan0: 1374827210.667731 : Data => kernel seq_num=2215 tid=0
    select queue: tid=0, index=2
    4294956669 : mlan0 (bss=0): Data <= kernel
    mlan0: Adding pkt c1f11800 (priority=0, tid_down=0) to ra_list c1e7e480
    mlan0: 1374827210.669422 : Data => FW
    select queue: tid=0, index=2
    4294956669 : mlan0 (bss=0): Data <= kernel
    mlan0: Adding pkt c1f11800 (priority=0, tid_down=0) to ra_list c1e7e480
    *
    wlan_interrupt: sdio_ireg = 0x2
    DNLD: wr_bitmap=0x0000ffff
    mlan0: 1374827210.670850 : Data => FW
    *
    wlan_interrupt: sdio_ireg = 0x2
    DNLD: wr_bitmap=0x0000ffff
    *
    wlan_interrupt: sdio_ireg = 0x1
    UPLD: rd_bitmap=0x00004000
    mlan0: 1374827210.694301 : Data <= FW
    mlan0: 1374827210.694456 : Data => kernel seq_num=2216 tid=0
    *
    wlan_interrupt: sdio_ireg = 0x1
    UPLD: rd_bitmap=0x00008000
    mlan0: 1374827210.695381 : Data <= FW
    mlan0: 1374827210.695511 : Data => kernel seq_num=2217 tid=0
    *
    wlan_interrupt: sdio_ireg = 0x1
    UPLD: rd_bitmap=0x00000002
    select queue: tid=0, index=2
    4294956672 : mlan0 (bss=0): Data <= kernel
    mlan0: Adding pkt c1f11800 (priority=0, tid_down=0) to ra_list c1e7e480
    mlan0: 1374827210.701708 : Data <= FW
    mlan0: 1374827210.701816 : Data => kernel seq_num=2218 tid=0
    mlan0: 1374827210.714514 : Data => FW
    *
    wlan_interrupt: sdio_ireg = 0x2
    DNLD: wr_bitmap=0x0000ffff
    select queue: tid=0, index=2
    4294956674 : mlan0 (bss=0): Data <= kernel
    mlan0: Adding pkt c1f11800 (priority=0, tid_down=0) to ra_list c1e7e480
    select queue: tid=0, index=2
    4294956674 : mlan0 (bss=0): Data <= kernel
    mlan0: Adding pkt c1f10000 (priority=0, tid_down=0) to ra_list c1e7e480
    select queue: tid=0, index=2
    4294956674 : mlan0 (bss=0): Data <= kernel
    mlan0: Adding pkt c1f13800 (priority=0, tid_down=0) to ra_list c1e7e480
    select queue: tid=0, index=2
    4294956674 : mlan0 (bss=0): Data <= kernel
    mlan0: Adding pkt c1f13000 (priority=0, tid_down=0) to ra_list c1e7e480
    select queue: tid=0, index=2
    4294956674 : mlan0 (bss=0): Data <= kernel
    mlan0: Adding pkt c1f12000 (priority=0, tid_down=0) to ra_list c1e7e480
    mlan0: 1374827210.718940 : Data => FW
    *
    wlan_interrupt: sdio_ireg = 0x2
    DNLD: wr_bitmap=0x0000ffff
    mlan0: 1374827210.720298 : Data => FW
    *
    wlan_interrupt: sdio_ireg = 0x1
    UPLD: rd_bitmap=0x00000004
    mlan0: 1374827210.721647 : Data <= FW
    mlan0: 1374827210.721783 : Data => kernel seq_num=2219 tid=0
    *
    wlan_interrupt: sdio_ireg = 0x2
    DNLD: wr_bitmap=0x0000ffff
    mlan0: 1374827210.743452 : Data => FW
    *
    wlan_interrupt: sdio_ireg = 0x1
    UPLD: rd_bitmap=0x00000008
    mlan0: 1374827210.744189 : Data <= FW
    mlan0: 1374827210.744320 : Data => kernel seq_num=2220 tid=0
    *
    wlan_interrupt: sdio_ireg = 0x2
    DNLD: wr_bitmap=0x0000ffff
    mlan0: 1374827210.745238 : Data => FW
    *
    wlan_interrupt: sdio_ireg = 0x1
    UPLD: rd_bitmap=0x00000010
    mlan0: 1374827210.745912 : Data <= FW
    mlan0: 1374827210.746043 : Data => kernel seq_num=2221 tid=0
    *
    wlan_interrupt: sdio_ireg = 0x3
    DNLD: wr_bitmap=0x0000ffff
    UPLD: rd_bitmap=0x00000020
    mlan0: 1374827210.746901 : Data <= FW
    mlan0: 1374827210.747026 : Data => kernel seq_num=2222 tid=0
    mlan0: 1374827210.747623 : Data => FW
    *
    wlan_interrupt: sdio_ireg = 0x2
    DNLD: wr_bitmap=0x0000ffff
    select queue: tid=0, index=2
    4294956677 : mlan0 (bss=0): Data <= kernel
    mlan0: Adding pkt c1f12000 (priority=0, tid_down=0) to ra_list c1e7e480
    mlan0: 1374827210.749656 : Data => FW
    select queue: tid=0, index=2
    4294956677 : mlan0 (bss=0): Data <= kernel
    mlan0: Adding pkt c1f12000 (priority=0, tid_down=0) to ra_list c1e7e480
    *
    wlan_interrupt: sdio_ireg = 0x2
    DNLD: wr_bitmap=0x0000ffff
    mlan0: 1374827210.750989 : Data => FW
    *
    wlan_interrupt: sdio_ireg = 0x2
    DNLD: wr_bitmap=0x0000ffff
    *
    wlan_interrupt: sdio_ireg = 0x1
    UPLD: rd_bitmap=0x00000040
    mlan0: 1374827210.781263 : Data <= FW
    mlan0: 1374827210.781417 : Data => kernel seq_num=2223 tid=0
    *
    wlan_interrupt: sdio_ireg = 0x1
    UPLD: rd_bitmap=0x00000080
    mlan0: 1374827210.787807 : Data <= FW
    mlan0: 1374827210.787959 : Data => kernel seq_num=2224 tid=0
    *
    wlan_interrupt: sdio_ireg = 0x1
    UPLD: rd_bitmap=0x00000100
    mlan0: 1374827210.788916 : Data <= FW
    mlan0: 1374827210.789071 : Data => kernel seq_num=2225 tid=0
    select queue: tid=0, index=2
    4294956681 : mlan0 (bss=0): Data <= kernel
    mlan0: Adding pkt c1f12000 (priority=0, tid_down=0) to ra_list c1e7e480
    *
    wlan_interrupt: sdio_ireg = 0x1
    UPLD: rd_bitmap=0x00000200
    mlan0: 1374827210.791038 : Data <= FW
    mlan0: 1374827210.791167 : Data => kernel seq_num=2226 tid=0
    mlan0: 1374827210.791806 : Data => FW
    *
    wlan_interrupt: sdio_ireg = 0x3
    DNLD: wr_bitmap=0x0000ffff
    UPLD: rd_bitmap=0x00000400
    mlan0: 1374827210.804531 : Data <= FW
    mlan0: 1374827210.804684 : Data => kernel seq_num=2227 tid=0
    select queue: tid=0, index=2
    4294956683 : mlan0 (bss=0): Data <= kernel
    mlan0: Adding pkt c1f12000 (priority=0, tid_down=0) to ra_list c1e7e480
    mlan0: 1374827210.806339 : Data => FW
    select queue: tid=0, index=2
    4294956683 : mlan0 (bss=0): Data <= kernel
    mlan0: Adding pkt c1f12000 (priority=0, tid_down=0) to ra_list c1e7e480
    *
    wlan_interrupt: sdio_ireg = 0x2
    DNLD: wr_bitmap=0x0000ffff
    mlan0: 1374827210.807769 : Data => FW
    *
    wlan_interrupt: sdio_ireg = 0x2
    DNLD: wr_bitmap=0x0000ffff
    select queue: tid=0, index=2
    4294956683 : mlan0 (bss=0): Data <= kernel
    mlan0: Adding pkt c1f12000 (priority=0, tid_down=0) to ra_list c1e7e480
    mlan0: 1374827210.811011 : Data => FW
    select queue: tid=0, index=2
    4294956683 : mlan0 (bss=0): Data <= kernel
    mlan0: Adding pkt c1f12000 (priority=0, tid_down=0) to ra_list c1e7e480
    *
    wlan_interrupt: sdio_ireg = 0x2
    DNLD: wr_bitmap=0x0000ffff
    mlan0: 1374827210.832590 : Data => FW
    *
    wlan_interrupt: sdio_ireg = 0x3
    DNLD: wr_bitmap=0x0000ffff
    UPLD: rd_bitmap=0x00000800
    mlan0: 1374827210.833430 : Data <= FW
    mlan0: 1374827210.833584 : Data => kernel seq_num=2228 tid=0
    *
    wlan_interrupt: sdio_ireg = 0x1
    UPLD: rd_bitmap=0x00001000
    mlan0: 1374827210.834537 : Data <= FW
    mlan0: 1374827210.834675 : Data => kernel seq_num=2229 tid=0
    *
    wlan_interrupt: sdio_ireg = 0x1
    UPLD: rd_bitmap=0x00002000
    mlan0: 1374827210.835895 : Data <= FW
    mlan0: 1374827210.836026 : Data => kernel seq_num=2230 tid=0
    select queue: tid=0, index=2
    4294956688 : mlan0 (bss=0): Data <= kernel
    mlan0: Adding pkt c1f12000 (priority=0, tid_down=0) to ra_list c1e7e480
    mlan0: 1374827210.856274 : Data => FW
    *
    wlan_interrupt: sdio_ireg = 0x1
    UPLD: rd_bitmap=0x00004000
    mlan0: 1374827210.857091 : Data <= FW
    mlan0: 1374827210.857224 : Data => kernel seq_num=2231 tid=0
    *
    wlan_interrupt: sdio_ireg = 0x3
    DNLD: wr_bitmap=0x0000ffff
    UPLD: rd_bitmap=0x00008000
    mlan0: 1374827210.858135 : Data <= FW
    mlan0: 1374827210.858270 : Data => kernel seq_num=2232 tid=0
    select queue: tid=0, index=2
    4294956688 : mlan0 (bss=0): Data <= kernel
    mlan0: Adding pkt c1f12000 (priority=0, tid_down=0) to ra_list c1e7e480
    mlan0: 1374827210.859706 : Data => FW
    select queue: tid=0, index=2
    4294956688 : mlan0 (bss=0): Data <= kernel
    mlan0: Adding pkt c1f12000 (priority=0, tid_down=0) to ra_list c1e7e480
    *
    wlan_interrupt: sdio_ireg = 0x2
    DNLD: wr_bitmap=0x0000ffff
    mlan0: 1374827210.861051 : Data => FW
    select queue: tid=0, index=2
    4294956688 : mlan0 (bss=0): Data <= kernel
    mlan0: Adding pkt c1f12000 (priority=0, tid_down=0) to ra_list c1e7e480
    select queue: tid=0, index=2
    4294956689 : mlan0 (bss=0): Data <= kernel
    mlan0: Adding pkt c1f13000 (priority=0, tid_down=0) to ra_list c1e7e480
    *
    wlan_interrupt: sdio_ireg = 0x3
    DNLD: wr_bitmap=0x0000ffff
    UPLD: rd_bitmap=0x00000002
    mlan0: 1374827210.885140 : Data <= FW
    mlan0: 1374827210.885297 : Data => kernel seq_num=2233 tid=0
    mlan0: 1374827210.885972 : Data => FW
    *
    wlan_interrupt: sdio_ireg = 0x1
    UPLD: rd_bitmap=0x00000004
    mlan0: 1374827210.886686 : Data <= FW
    mlan0: 1374827210.886812 : Data => kernel seq_num=2234 tid=0
    *
    wlan_interrupt: sdio_ireg = 0x2
    DNLD: wr_bitmap=0x0000ffff
    mlan0: 1374827210.887754 : Data => FW
    *
    wlan_interrupt: sdio_ireg = 0x2
    DNLD: wr_bitmap=0x0000ffff
    mlan0: QUEUE_CMD: cmd=0x68 is queued
    IOCTL pending: c1f20900 id=0x90000, sub_id=0x90005 wait_option=1, action=1
    mlan0: DNLD_CMD (1374827210.891086): 0x68, act 0x1, len 12, seqno 0xb0
    *
    wlan_interrupt: sdio_ireg = 0x1
    UPLD: rd_bitmap=0x00000008
    mlan0: 1374827210.892127 : Data <= FW
    mlan0: 1374827210.910412 : Data => kernel seq_num=2235 tid=0
    *
    wlan_interrupt: sdio_ireg = 0x1
    UPLD: rd_bitmap=0x00000001
    mlan0: CMD_RESP (1374827210.911215): 0x8068, result 0, len 12, seqno 0xb0
    IOCTL completed: c1f20900 id=0x90000 sub_id=0x90005, action=1,  status=0, status_code=0x0
    *
    wlan_interrupt: sdio_ireg = 0x1
    UPLD: rd_bitmap=0x00000001
    |PPS/UAPSD mode activated
    mlan0: 1374827210.912093 : Null data => FW
    *
    wlan_interrupt: sdio_ireg = 0x1
    UPLD: rd_bitmap=0x00000001
    |
    *
    wlan_interrupt: sdio_ireg = 0x3
    DNLD: wr_bitmap=0x0000ffff
    UPLD: rd_bitmap=0x00000010
    mlan0: 1374827210.920847 : Data <= FW
    mlan0: 1374827210.921000 : Data => kernel seq_num=2236 tid=0
    select queue: tid=0, index=2
    4294956694 : mlan0 (bss=0): Data <= kernel
    mlan0: Adding pkt c1f13000 (priority=0, tid_down=0) to ra_list c1e7e480
    select queue: tid=0, index=2
    4294956696 : mlan0 (bss=0): Data <= kernel
    mlan0: Adding pkt c1f12000 (priority=0, tid_down=0) to ra_list c1e7e480
    select queue: tid=0, index=2
    4294956696 : mlan0 (bss=0): Data <= kernel
    mlan0: Adding pkt c1f13800 (priority=0, tid_down=0) to ra_list c1e7e480
    select queue: tid=0, index=2
    4294956696 : mlan0 (bss=0): Data <= kernel
    mlan0: Adding pkt c1f10000 (priority=0, tid_down=0) to ra_list c1e7e480
    select queue: tid=0, index=2
    4294956696 : mlan0 (bss=0): Data <= kernel
    mlan0: Adding pkt c1f11800 (priority=0, tid_down=0) to ra_list c1e7e480
    select queue: tid=0, index=2
    4294956696 : mlan0 (bss=0): Data <= kernel
    mlan0: Adding pkt c1f10800 (priority=0, tid_down=0) to ra_list c1e7e480
    host_to_card, write iomem (1) failed: -1
    host_to_card, write iomem (2) failed: -1
    host_to_card, write iomem (3) failed: -1
    Error: host_to_card failed: 0xFFFFFFFF
    *
    select queue: tid=0, index=2
    4294956698 : mlan0 (bss=0): Data <= kernel
    mlan0: Adding pkt c1f13000 (priority=0, tid_down=0) to ra_list c1e7e480
    select queue: tid=0, index=2
    4294956698 : mlan0 (bss=0): Data <= kernel
    mlan0: Adding pkt c1f12800 (priority=0, tid_down=0) to ra_list c1e7e480
    select queue: tid=0, index=2
    4294956698 : mlan0 (bss=0): Data <= kernel
    mlan0: Adding pkt c1e52000 (priority=0, tid_down=0) to ra_list c1e7e480
    select queue: tid=0, index=2
    4294956699 : mlan0 (bss=0): Data <= kernel
    mlan0: Adding pkt c1e53800 (priority=0, tid_down=0) to ra_list c1e7e480
    select queue: tid=0, index=2
    4294956700 : mlan0 (bss=0): Data <= kernel
    mlan0: Adding pkt c1e51800 (priority=0, tid_down=0) to ra_list c1e7e480
    select queue: tid=0, index=2
    4294956702 : mlan0 (bss=0): Data <= kernel
    mlan0: Adding pkt c1e51000 (priority=0, tid_down=0) to ra_list c1e7e480
    select queue: tid=0, index=2
    4294956703 : mlan0 (bss=0): Data <= kernel
    mlan0: Adding pkt c1e52800 (priority=0, tid_down=0) to

  • Hi suresh,

    Thanks for the details. We will try to support as much as we can.

    Meanwhile, just to narrow down where the problem actually lies i.e., either on the Marvell WLAN/Bluetooth module or with the OMAPL138, I would like to raise these questions.

    1. By any chance have you tested the Marvell WLAN/Bluetooth module with processors other than OMAPL138? Did it work successfully? or Do you have any informations given by Marvell that this particular module have been tested with Marvell processors / EVM?

    2. Whether OMAPL138 worked with other WLAN modules otherthan Marvell?  yes - It has been tested that the OMAPL138 is interfaced with WLAN 1271 module successfully through SDIO interface and the WLAN throughput results are given at http://processors.wiki.ti.com/index.php/OMAPL138_Wireless_Connectivity_Demo#WLAN_Throughput_Results

    In the above link, results of iperf command, "./iperf -c 192.168.0.130 -p7000 -u -b 100m" is also produced and projected.

     

    Regards,

    Shankari

  • Shankari,

    1. Yes. It is working well with their reference setup FC13 based laptop and PXA based platform.

    The original TI MMC/SDIO host controller was on polling mode and we have changed it interrupt mode. Polling mode wasn’t showing some of the problem we faced earlier.  Also, 8787 uses “IN BAND” SDIO interrupt and TI WLAN card uses dedicated GPIO line for interrupt.

    Suresh

  • I am facing a similar issue, were you able to resolve this? Perhaps I could assist in debugging (although I know this is an older post).

  • After debugging, the problem was traced down to a driver issue on the client side. You may want to trace the SDIO command/ data interaction using a bus analyzer, and check to see if it follows protocol, especially during power saving modes.

  • [Updated after initial reply]

    As Loc mentioned, we traced it to a bug in the client.

    (Sorry about the confusion in the earlier email. I had a different issue in mind which was a driver issue on the host)

  • Thanks a lot for the reply.

    If you could send me the patch file or what you changed that would be much appreciated.

    Is it something you could post on this forum? or should I send my e-mail address?

    Thank You

    [updated]

    Ok - no problem about the confusion. We are actually on the DM365, but were experiencing a similar issue.

  • I am sorry for the confusion I caused. As I mentioned, I had some other bug in mind when I replied to the thread.

    This bug was fixed by change to the Marvell FW. We have access to the binary only. 

  • Have you fixed this bug? I also met this issue on my DM365 platform.

    Could you tell me how to fix this?

    Thanks

  • So you mean this timeout is caused by hardware issue not software?

    and then how to fix this issue?

  • In this particular situation the issue was fixed with an updated firmware and driver from the wifi card vendor to handle the power up/down seuqnce correctly.

  • Loc could you tell me driver and firmware version?

    is there any patch for power up and down seqeunce?

    thanks.

  • Sorry David the wifi card is not TI. I don't have the related information. TI's wifi solution is Wilink8. Software for OMAP-L138/ AM1808 is at http://www.ti.com/tool/linuxezsdk-sitara and Wifi hardware module is at http://www.ti.com/tool/tmdxevmwifi1808l

  • @Christian were you able to fix the issue in your project?


    We are seeing the exact same bug with the same WiFi chip on AM335x..

    Any known fixes yet?

  • I updated the Marvell WiFi driver and firmware and thought it resolved the issue. It turns out It didn't - at least from what I can tell with limited testing.

    We are using driver version: SD8787-14.68.35.p46-M3X14475-GPL-(FP68) previously it was 14.66.

    A few things I have noticed:

    1. Running MMC bus at 5MHz instead of the default 50MHz makes this issue less apparent (I am using dm365)

    2. If I enabled debug logs from the wifi driver (prints a lot of messages) the problem would not happen.

    I have not had time to look into this more yet.

  • We are running: SD-UAPSTA-BT-FM-8787-KK44_LINUX_3_4_39-PXA1088-14.68.35.p46-M3X14475_AX-MGPL. Looks like the same version as your's.

    We also tried lowering the SDIO clock down to 8MHz with no luck.

    Definitely seems like a SW issue.

  • As I mentioned in one of my earlier messages, we worked with Marvell in getting a fix for this issue. The fix was done on the Marvell firmware (which we have access to in the form of binary only). The fix that was provided to us may or may not be in the firmware you are using. I would recommend checking with your Marvell contact.

  • @SureshRajashekara do you remember approximately what date the issue was fixed?

  • It was around mid April 2014. I confirmed that it was a private binary given to us only as we reported the problem. It's very unlikely it made it's way to GA releases.

  • @SureshRajashekara our contact at Marvell is having trouble finding the FW version that fixes the issue.

    He can help us quicker if he knew the name of the engineer who you worked with on solving the problem.

    Is it possible to share the name(s) of the person(people) you worked with at Marvell?

  • Stu,

    The case for the issue we reported was being tracked Marvell at https://support.marvell.com

    Case ID :  487106

    I guess this should help.

    Suresh