weird SDIO interrupt and SDIO mechanism

Tim Harvey tharvey at irobot.com
Tue May 20 17:40:00 EDT 2008


Claud,

I can confirm your 100 mxcmci int/s on my iMX31 platform/firmware while
idle but libertas_sdio loaded. While pushing traffic through the rate
increases to about 700/sec (which is about 10X the pktrate). Perhaps we
need to look at the implementation of the MXC sdhc driver.

Interesting I've got two 8686 based modules that I'm testing with now
and both give me very different max throughput results:
- W2SW0001 yeilds a max of 0.771mbps
- XG182 yeilds a max of 1.657mbps

This testing is using infrastructure mode and 'nuttcp' for traffic
source/sink on both ends. I get the same results no matter what I set
the tx rate to (which makes me think something is not right with the
libertas driver's tx rate as I still get 1.657mbps when iwconfig shows
tx rate at 1M).

The results from the two different SDIO modules are very curious as:
1. the max datarate is abysmal
2. the devices are both using Marvell 8686 - why do they differ so
much... almost exactly 2x difference

Tim

claud_yu wrote:
> Dear All , 
>
>    I still stuck at performance issue about SDIO 88w8686 and iMX31. And I observe some weird phenomena. 
> After I insert the libertas SDIO driver, the SDIO interface interrupt number rising very fast.  Almost 100 times per second like kernel tick. The following is log.
>
> /modules # cat /proc/interrupts | grep mxcmci  ;sleep 1; cat /proc/interrupts | grep mxcmci
>   9:     309347    MXC_AVIC  mxcmci
> 108:          4    MXC_GPIO  mxcmci
>   9:     309450    MXC_AVIC  mxcmci
> 108:          4    MXC_GPIO  mxcmci
> /modules #
>
> The mxcmci is SDIO interrupt. Is that normal ? 
> Do the USB and CF interface have the same phenomena ? 
> I enable the mmc debug and get following mmc operation. 
> That log show some event trigger CMD52 every tick. And CMD52 normally use to access the register of SDIO peripheral. 
> That like some thread or event polling someting every kernel tick. 
>
> Any idea ? Thanks for your advise.
>
> -------------------------------------
> mmc0: starting CMD52 arg 00000a00 flags 00000015
>
> MXCMMC: CMD: opcode: 52 <6>arg: 0x00000a00 <6>flags: 0x00000015
>
> mxcmci_request:status: <6>SDIO_INT_ACTIVE |<6>XBUF_EMPTY |<6>YBUF_EMPTY |<6>
>
> mxcmci_start_clock:status: <6>SDIO_INT_ACTIVE |<6>XBUF_EMPTY |<6>YBUF_EMPTY |<6>
>
> mxcmci_start_clock:status: <6>mxcmci_irq:status: <6>CARD_BUS_CLK_RUN |<6>END_CMD_RESP |<6>SDIO_INT_ACTIVE |<6>XBUF_EMPTY |<6>YBUF_EMPTY |<6>
>
> MXCMMC: 0x00001000, 0x00000000, 0x00000000, 0x00000000
>
> mmc0: req done (CMD52): 0: 00001000 00000000 00000000 00000000
>
> CARD_BUS_CLK_RUN |<6>SDIO_INT_ACTIVE |<6>XBUF_EMPTY |<6>YBUF_EMPTY |<6>
>
> MXCMMC:CLK_RATE: 0x00000002
>
> mmc0: starting CMD52 arg 00000a00 flags 00000015
>
> MXCMMC: CMD: opcode: 52 <6>arg: 0x00000a00 <6>flags: 0x00000015
>
> mxcmci_request:status: <6>SDIO_INT_ACTIVE |<6>XBUF_EMPTY |<6>YBUF_EMPTY |<6>
>
> mxcmci_start_clock:status: <6>SDIO_INT_ACTIVE |<6>XBUF_EMPTY |<6>YBUF_EMPTY |<6>
>
> mxcmci_start_clock:status: <6>mxcmci_irq:status: <6>CARD_BUS_CLK_RUN |<6>END_CMD_RESP |<6>SDIO_INT_ACTIVE |<6>XBUF_EMPTY |<6>YBUF_EMPTY |<6>
>
> MXCMMC: 0x00001000, 0x00000000, 0x00000000, 0x00000000
>
> mmc0: req done (CMD52): 0: 00001000 00000000 00000000 00000000
>
> CARD_BUS_CLK_RUN |<6>SDIO_INT_ACTIVE |<6>XBUF_EMPTY |<6>YBUF_EMPTY |<6>
>
> MXCMMC:CLK_RATE: 0x00000002
>
>
> -------------------------------------
>
> Claud Yu
>
>
>       ______________________________________________________________________________________________________
> 付費才容量無上限?Yahoo!奇摩電子信箱2.0免費給你,信件永遠不必刪! http://tw.mg0.mail.yahoo.com/dc/landing
>
> _______________________________________________
> libertas-dev mailing list
> libertas-dev at lists.infradead.org
> http://lists.infradead.org/mailman/listinfo/libertas-dev
>   




More information about the libertas-dev mailing list