Libertas driver performance on Samsung platform

Ravi Mahadevappa hmravi at gmail.com
Sun Nov 22 18:25:07 EST 2009


Hi Dan,

Thanks for the response. I have attached debug logs from enabling mmc
debug and libertas debug separately after initiating a tftp command.
Could you please take a quick look to see if there is any obvious
issues. I'd greatly appreciate it. To me it looks like the interrupt
is enabled and multi-block transfer is also enabled. I am using a
2.6.28 driver with 9.70.7 firmware.

Best Regards,
Ravi

On Sun, Nov 22, 2009 at 2:46 PM, Dan Williams <dcbw at redhat.com> wrote:
> On Sat, 2009-11-21 at 09:39 -0800, Ravi Mahadevappa wrote:
>> Hi Dan, Jacky,
>>
>> We are facing the same problem. Could you please elaborate a bit on
>> this issue.
>> What is the firmware version and the driver version I should use?
>
> Latest driver from 2.6.31, which should also be pretty trivial to
> backport to older kernels as well, since it doesn't change too much.
> Either firmware v9 or firmware v8 can be used.  There is firmware
> available here:
>
> http://git.kernel.org/?p=linux/kernel/git/dwmw2/linux-firmware.git;a=tree;f=libertas;h=c9d61b10b750ccbfb8a6f26d8a762f4ca95df0e7;hb=HEAD
>
> please use git to clone that repository to grab the firmware, since
> trying to download the blob from gitweb over HTTP itself will likely
> mess up the file.
>
>> Where do I look to verify that the interrupt support is enabled?
>
> In your SD host controller code.  You can also enable MMC/SD stack
> debugging in your kernel config and get a lot more output about what's
> going on.
>
> Dan
>
>>
>> Thanks,
>> Ravi
>>
>> On 11/15/2009 10:43 PM, Jacky Lam wrote:
>> > Dear Dan,
>> >
>> >     I just talk to tommy and find that the problem really happened in the
>> > interrupt support as you said. Thanks for all advice from you.
>> >
>> > BR,
>> > Jacky
>> >
>> > Dan Williams 提到:
>> >
>> > > On Mon, 2009-11-16 at 09:43 +0800, Jacky Lam wrote:
>> > >
>> > > > Dan Williams 提到:
>> > > >
>> > > > > On Fri, 2009-11-13 at 13:12 +0800, Jacky Lam wrote:
>> > > > >
>> > > > > > Dear all,
>> > > > > >
>> > > > > >     I have read the previous mail about the low performance of Samsung
>> > > > > > BSP's SDIO platform driver when working with Libertas. I want to know if
>> > > > > > anyone have tried the kernel mainstream's Samsung driver and have any
>> > > > > > improvement on that?
>> > > > > >
>> > > > > Does the Samsung SDHC have quirks or limitations with respect to DMA,
>> > > > > block size, transfer width, etc?
>> > > > >
>> > > > > Dan
>> > > > >
>> > > > >
>> > > > >
>> > > > >
>> > > > >
>> > > > Dear Dan,
>> > > >
>> > > >         I look through the source code and can't find any "special" limitation
>> > > > for the DMA, block size, transfer width.....Maybe I am not familiar
>> > > > enough with Linux MMC stack. Could you tell me if there is any
>> > > > requirement for the MMC stack on the host's DMA, block size, transfer
>> > > > width..etc? So, I can pinpoint my investigation?
>> > > >
>> > > There's no requirement in the stack, but the libertas driver and
>> > > firmware expect multi-block transfer ability and interrupt support.  The
>> > > libertas firmware will fail to load if if the host controller doesn't
>> > > support multi-block, which we just found to be a limitation of one of
>> > > the i.MX platform for example.
>> > >
>> > > Dan
>> > >
>> > >
>> > >
>> > >
>> > >
>> >
>> > _______________________________________________
>> > libertas-dev mailing list
>> > libertas-dev at lists.infradead.org
>> > http://lists.infradead.org/mailman/listinfo/libertas-dev
>> >
>
>
-------------- next part --------------
tftp -g -r ftp_test_13MB 192.168.1.68


libertas enter: if_sdio_interrupt()
libertas sdio: interrupt: 0x1
libertas enter: if_sdio_card_to_host()
libertas sdio: packet of type 0 and size 74 bytes
libertas enter: if_sdio_handle_data()
libertas enter: lbs_process_rxed_packet()
libertas RX Data: Before chop rxpd: 01 00 1f 00 32 00 60 00 14 00 00 00 00 00 00 00 
libertas RX Data: Before chop rxpd: 00 00 00 00 ff ff ff ff ff ff 00 24 56 8a d4 99 
libertas RX Data: Before chop rxpd: 00 24 aa aa 03 00 00 00 08 06 00 01 08 00 06 04 
libertas RX Data: Before chop rxpd: 00 01 00 24 56 8a d4 99 c0 a8 01 fe ff ff ff ff 
libertas RX Data: Before chop rxpd: ff ff c0 a8 01 42 
libertas rx: rx data: skb->len-sizeof(RxPd) = 70-20 = 50
libertas RX Data: Dest: ff ff ff ff ff ff 
libertas RX Data: Src: 00 24 56 8a d4 99 
libertas enter: lbs_compute_rssi()
libertas rx: rxpd: SNR 31, NF 96
libertas rx: before computing SNR: SNR-avg = 31, NF-avg = 95
libertas rx: after computing SNR: SNR-avg = 31, NF-avg = 95
libertas leave: lbs_compute_rssi()
libertas rx: rx data: size of actual packet 42
libertas leave: lbs_process_rxed_packet(), ret 0
libertas leave: if_sdio_handle_data(), ret 0
libertas leave: if_sdio_card_to_host(), ret 0
libertas leave: if_sdio_interrupt(), ret 0

ARP transmitted
libertas enter (INT): lbs_hard_start_xmit()
libertas TX Data: ff ff ff ff ff ff 00 23 06 56 03 ef 08 06 00 01 
libertas TX Data: 08 00 06 04 00 01 00 23 06 56 03 ef c0 a8 01 14 
libertas TX Data: 00 00 00 00 00 00 c0 a8 01 44 
libertas txpd: 90 45 47 c7 dc f9 5b c7 00 8d 3f c7 c0 59 5f c7 
libertas txpd: 00 29 01 c7 00 40 47 c7 
libertas Tx Data: ff ff ff ff ff ff 00 23 06 56 03 ef 08 06 00 01 
libertas Tx Data: 08 00 06 04 00 01 00 23 06 56 03 ef c0 a8 01 14 
libertas Tx Data: 00 00 00 00 00 00 c0 a8 01 44 
libertas tx (INT): lbs_hard_start_xmit lined up packet
libertas leave (INT): lbs_hard_start_xmit(), ret 0

libertas thread: 2: currenttxskb 00000000, dnld_send 0
libertas thread: 3: currenttxskb 00000000, dnld_sent 0
libertas thread: 4: currenttxskb 00000000, dnld_sent 0
libertas enter: lbs_execute_next_command()
libertas leave: lbs_execute_next_command()
libertas enter: if_sdio_host_to_card(type 0, bytes 66)
libertas leave: if_sdio_host_to_card(), ret 0
libertas thread: 1: currenttxskb 00000000, dnld_sent 1
libertas thread: sleeping, connect_status 0, psmode 0, psstate 0
libertas enter: if_sdio_host_to_card_worker()
libertas leave: if_sdio_host_to_card_worker()

ARP reply
libertas enter: if_sdio_interrupt()
libertas sdio: interrupt: 0x3
libertas enter: lbs_host_to_card_done()
libertas leave: lbs_host_to_card_done()
libertas enter: if_sdio_card_to_host()
libertas sdio: packet of type 0 and size 74 bytes
libertas enter: if_sdio_handle_data()
libertas enter: lbs_process_rxed_packet()
libertas RX Data: Before chop rxpd: 01 00 20 00 32 00 60 0b 14 00 00 00 00 00 00 00 
libertas RX Data: Before chop rxpd: 00 00 00 00 00 23 06 56 03 ef 00 21 00 df 72 2d 
libertas RX Data: Before chop rxpd: 00 24 aa aa 03 00 00 00 08 06 00 01 08 00 06 04 
libertas RX Data: Before chop rxpd: 00 02 00 21 00 df 72 2d c0 a8 01 44 00 23 06 56 
libertas RX Data: Before chop rxpd: 03 ef c0 a8 01 14 
libertas rx: rx data: skb->len-sizeof(RxPd) = 70-20 = 50
libertas RX Data: Dest: 00 23 06 56 03 ef 
libertas RX Data: Src: 00 21 00 df 72 2d 
libertas enter: lbs_compute_rssi()
libertas rx: rxpd: SNR 32, NF 96
libertas rx: before computing SNR: SNR-avg = 31, NF-avg = 95
libertas rx: after computing SNR: SNR-avg = 31, NF-avg = 95
libertas leave: lbs_compute_rssi()
libertas rx: rx data: size of actual packet 42

Read request, File: ftp_test_13MB, TFTP 
libertas enter (INT): lbs_hard_start_xmit()
libertas TX Data: 00 21 00 df 72 2d 00 23 06 56 03 ef 08 00 45 00 
libertas TX Data: 00 32 00 00 40 00 40 11 b7 12 c0 a8 01 14 c0 a8 
libertas TX Data: 01 44 c9 da 00 45 00 1e c6 f2 00 01 66 74 70 5f 
libertas TX Data: 74 65 73 74 5f 31 33 4d 42 00 6f 63 74 65 74 00 
libertas txpd: 90 45 47 c7 68 4b 42 c0 00 8d 3f c7 80 54 5f c7 
libertas txpd: 00 29 01 c7 00 40 47 c7 
libertas Tx Data: 00 21 00 df 72 2d 00 23 06 56 03 ef 08 00 45 00 
libertas Tx Data: 00 32 00 00 40 00 40 11 b7 12 c0 a8 01 14 c0 a8 
libertas Tx Data: 01 44 c9 da 00 45 00 1e c6 f2 00 01 66 74 70 5f 
libertas Tx Data: 74 65 73 74 5f 31 33 4d 42 00 6f 63 74 65 74 00 
libertas tx (INT): lbs_hard_start_xmit lined up packet
libertas leave (INT): lbs_hard_start_xmit(), ret 0

libertas leave: lbs_process_rxed_packet(), ret 0
libertas leave: if_sdio_handle_data(), ret 0
libertas leave: if_sdio_card_to_host(), ret 0
libertas leave: if_sdio_interrupt(), ret 0

libertas thread: 2: currenttxskb 00000000, dnld_send 0
libertas thread: 3: currenttxskb 00000000, dnld_sent 0
libertas thread: 4: currenttxskb 00000000, dnld_sent 0
libertas enter: lbs_execute_next_command()
libertas leave: lbs_execute_next_command()
libertas enter: if_sdio_host_to_card(type 0, bytes 88)
libertas leave: if_sdio_host_to_card(), ret 0
libertas thread: 1: currenttxskb 00000000, dnld_sent 1
libertas thread: sleeping, connect_status 0, psmode 0, psstate 0
libertas enter: if_sdio_host_to_card_worker()
libertas leave: if_sdio_host_to_card_worker()
libertas enter: if_sdio_interrupt()
libertas sdio: interrupt: 0x2
libertas enter: lbs_host_to_card_done()
libertas leave: lbs_host_to_card_done()
libertas leave: if_sdio_interrupt(), ret 0
libertas enter: if_sdio_interrupt()
libertas sdio: interrupt: 0x1
libertas enter: if_sdio_card_to_host()
libertas sdio: packet of type 0 and size 590 bytes
libertas enter: if_sdio_handle_data()
libertas enter: lbs_process_rxed_packet()
libertas RX Data: Before chop rxpd: 01 00 1e 00 36 02 60 0c 14 00 00 00 00 00 00 00 
libertas RX Data: Before chop rxpd: 00 00 00 00 00 23 06 56 03 ef 00 21 00 df 72 2d 
libertas RX Data: Before chop rxpd: 02 28 aa aa 03 00 00 00 08 00 45 00 02 20 e2 f7 
libertas RX Data: Before chop rxpd: 00 00 40 11 12 2d c0 a8 01 44 c0 a8 01 14 9d 7c 
libertas RX Data: Before chop rxpd: c9 da 02 0c 7d 47 00 03 00 01 25 50 44 46 2d 31 
libertas RX Data: Before chop rxpd: 2e 36 0d 25 e2 e3 cf d3 0d 0a 31 33 35 34 31 20 
libertas RX Data: Before chop rxpd: 30 20 6f 62 
libertas rx: rx data: skb->len-sizeof(RxPd) = 586-20 = 566
libertas RX Data: Dest: 00 23 06 56 03 ef 
libertas RX Data: Src: 00 21 00 df 72 2d 
libertas enter: lbs_compute_rssi()
libertas rx: rxpd: SNR 30, NF 96
libertas rx: before computing SNR: SNR-avg = 31, NF-avg = 95
libertas rx: after computing SNR: SNR-avg = 31, NF-avg = 95
libertas leave: lbs_compute_rssi()
libertas rx: rx data: size of actual packet 558
libertas leave: lbs_process_rxed_packet(), ret 0
libertas leave: if_sdio_handle_data(), ret 0
libertas leave: if_sdio_card_to_host(), ret 0
libertas leave: if_sdio_interrupt(), ret 0
libertas thread: 2: currenttxskb 00000000, dnld_send 0
libertas thread: 3: currenttxskb 00000000, dnld_sent 0
libertas thread: 4: currenttxskb 00000000, dnld_sent 0
libertas enter: lbs_execute_next_command()
libertas leave: lbs_execute_next_command()
libertas thread: 1: currenttxskb 00000000, dnld_sent 0
libertas thread: sleeping, connect_status 0, psmode 0, psstate 0

libertas enter (INT): lbs_hard_start_xmit()
libertas TX Data: 00 21 00 df 72 2d 00 23 06 56 03 ef 08 00 45 00 
libertas TX Data: 00 20 00 00 40 00 40 11 b7 24 c0 a8 01 14 c0 a8 
libertas TX Data: 01 44 c9 da 9d 7c 00 0c 14 d1 00 04 00 01 
libertas txpd: 90 45 47 c7 01 00 00 00 00 8d 3f c7 c0 50 5f c7 
libertas txpd: 00 29 01 c7 00 40 47 c7 
libertas Tx Data: 00 21 00 df 72 2d 00 23 06 56 03 ef 08 00 45 00 
libertas Tx Data: 00 20 00 00 40 00 40 11 b7 24 c0 a8 01 14 c0 a8 
libertas Tx Data: 01 44 c9 da 9d 7c 00 0c 14 d1 00 04 00 01 
libertas tx (INT): lbs_hard_start_xmit lined up packet
libertas leave (INT): lbs_hard_start_xmit(), ret 0
libertas thread: 2: currenttxskb 00000000, dnld_send 0
libertas thread: 3: currenttxskb 00000000, dnld_sent 0
libertas thread: 4: currenttxskb 00000000, dnld_sent 0
libertas enter: lbs_execute_next_command()
libertas leave: lbs_execute_next_command()
libertas enter: if_sdio_host_to_card(type 0, bytes 70)
libertas leave: if_sdio_host_to_card(), ret 0
libertas thread: 1: currenttxskb 00000000, dnld_sent 1
libertas thread: sleeping, connect_status 0, psmode 0, psstate 0
libertas enter: if_sdio_host_to_card_worker()
libertas leave: if_sdio_host_to_card_worker()
libertas enter: if_sdio_interrupt()
libertas sdio: interrupt: 0x2
libertas enter: lbs_host_to_card_done()
libertas leave: lbs_host_to_card_done()
libertas leave: if_sdio_interrupt(), ret 0
libertas enter: if_sdio_interrupt()
libertas sdio: interrupt: 0x1
libertas enter: if_sdio_card_to_host()
libertas sdio: packet of type 0 and size 590 bytes
libertas enter: if_sdio_handle_data()
libertas enter: lbs_process_rxed_packet()
libertas RX Data: Before chop rxpd: 01 00 1f 00 36 02 60 0c 14 00 00 00 00 00 00 00 
libertas RX Data: Before chop rxpd: 00 00 00 00 00 23 06 56 03 ef 00 21 00 df 72 2d 
libertas RX Data: Before chop rxpd: 02 28 aa aa 03 00 00 00 08 00 45 00 02 20 e2 f8 
libertas RX Data: Before chop rxpd: 00 00 40 11 12 2c c0 a8 01 44 c0 a8 01 14 9d 7c 
libertas RX Data: Before chop rxpd: c9 da 02 0c a2 7c 00 03 00 02 61 78 2d 6e 73 23 
libertas RX Data: Before chop rxpd: 22 3e 0a 20 20 20 20 20 20 3c 72 64 66 3a 44 65 
libertas RX Data: Before chop rxpd: 73 63 72 69 
libertas rx: rx data: skb->len-sizeof(RxPd) = 586-20 = 566
libertas RX Data: Dest: 00 23 06 56 03 ef 
libertas RX Data: Src: 00 21 00 df 72 2d 
libertas enter: lbs_compute_rssi()
libertas rx: rxpd: SNR 31, NF 96
libertas rx: before computing SNR: SNR-avg = 31, NF-avg = 95
libertas rx: after computing SNR: SNR-avg = 30, NF-avg = 95
libertas leave: lbs_compute_rssi()
libertas rx: rx data: size of actual packet 558
libertas leave: lbs_process_rxed_packet(), ret 0
libertas leave: if_sdio_handle_data(), ret 0
libertas leave: if_sdio_card_to_host(), ret 0
libertas leave: if_sdio_interrupt(), ret 0
libertas thread: 2: currenttxskb 00000000, dnld_send 0
libertas thread: 3: currenttxskb 00000000, dnld_sent 0
libertas thread: 4: currenttxskb 00000000, dnld_sent 0
libertas enter: lbs_execute_next_command()
libertas leave: lbs_execute_next_command()
libertas thread: 1: currenttxskb 00000000, dnld_sent 0
libertas thread: sleeping, connect_status 0, psmode 0, psstate 0
libertas enter (INT): lbs_hard_start_xmit()
libertas TX Data: 00 21 00 df 72 2d 00 23 06 56 03 ef 08 00 45 00 
libertas TX Data: 00 20 00 00 40 00 40 11 b7 24 c0 a8 01 14 c0 a8 
libertas TX Data: 01 44 c9 da 9d 7c 00 0c 14 d0 00 04 00 02 
libertas txpd: 90 45 47 c7 01 00 00 00 00 8d 3f c7 00 50 5f c7 
libertas txpd: 00 29 01 c7 00 40 47 c7 
libertas Tx Data: 00 21 00 df 72 2d 00 23 06 56 03 ef 08 00 45 00 
libertas Tx Data: 00 20 00 00 40 00 40 11 b7 24 c0 a8 01 14 c0 a8 
libertas Tx Data: 01 44 c9 da 9d 7c 00 0c 14 d0 00 04 00 02 
libertas tx (INT): lbs_hard_start_xmit lined up packet
libertas leave (INT): lbs_hard_start_xmit(), ret 0
libertas enter: if_sdio_interrupt()
libertas sdio: interrupt: 0x1
libertas enter: if_sdio_card_to_host()
libertas sdio: packet of type 0 and size 74 bytes
libertas enter: if_sdio_handle_data()
libertas enter: lbs_process_rxed_packet()
libertas RX Data: Before chop rxpd: 01 00 1e 00 32 00 5f 00 14 00 00 00 00 00 00 00 
libertas RX Data: Before chop rxpd: 00 00 00 00 ff ff ff ff ff ff 00 24 56 8a d4 99 
libertas RX Data: Before chop rxpd: 00 24 aa aa 03 00 00 00 08 06 00 01 08 00 06 04 
libertas RX Data: Before chop rxpd: 00 01 00 24 56 8a d4 99 c0 a8 01 fe ff ff ff ff 
libertas RX Data: Before chop rxpd: ff ff c0 a8 01 43 
libertas rx: rx data: skb->len-sizeof(RxPd) = 70-20 = 50
libertas RX Data: Dest: ff ff ff ff ff ff 
libertas RX Data: Src: 00 24 56 8a d4 99 
libertas enter: lbs_compute_rssi()
libertas rx: rxpd: SNR 30, NF 95
libertas rx: before computing SNR: SNR-avg = 30, NF-avg = 95
libertas rx: after computing SNR: SNR-avg = 30, NF-avg = 95
libertas leave: lbs_compute_rssi()
libertas rx: rx data: size of actual packet 42
libertas leave: lbs_process_rxed_packet(), ret 0
libertas leave: if_sdio_handle_data(), ret 0
libertas leave: if_sdio_card_to_host(), ret 0
libertas leave: if_sdio_interrupt(), ret 0
libertas thread: 2: currenttxskb 00000000, dnld_send 0
libertas thread: 3: currenttxskb 00000000, dnld_sent 0
libertas thread: 4: currenttxskb 00000000, dnld_sent 0
libertas enter: lbs_execute_next_command()
libertas leave: lbs_execute_next_command()
libertas enter: if_sdio_host_to_card(type 0, bytes 70)
libertas leave: if_sdio_host_to_card(), ret 0
libertas thread: 1: currenttxskb 00000000, dnld_sent 1
libertas thread: sleeping, connect_status 0, psmode 0, psstate 0
libertas enter: if_sdio_host_to_card_worker()
libertas leave: if_sdio_host_to_card_worker()
libertas enter: if_sdio_interrupt()
libertas sdio: interrupt: 0x2
libertas enter: lbs_host_to_card_done()
libertas leave: lbs_host_to_card_done()
libertas leave: if_sdio_interrupt(), ret 0
libertas enter: if_sdio_interrupt()
libertas sdio: interrupt: 0x1
libertas enter: if_sdio_card_to_host()
libertas sdio: packet of type 0 and size 590 bytes
libertas enter: if_sdio_handle_data()
libertas enter: lbs_process_rxed_packet()
libertas RX Data: Before chop rxpd: 01 00 1e 00 36 02 5f 0c 14 00 00 00 00 00 00 00 
libertas RX Data: Before chop rxpd: 00 00 00 00 00 23 06 56 03 ef 00 21 00 df 72 2d 
libertas RX Data: Before chop rxpd: 02 28 aa aa 03 00 00 00 08 00 45 00 02 20 e2 f9 
libertas RX Data: Before chop rxpd: 00 00 40 11 12 2b c0 a8 01 44 c0 a8 01 14 9d 7c 
libertas RX Data: Before chop rxpd: c9 da 02 0c bf 38 00 03 00 03 63 3a 66 6f 72 6d 
libertas RX Data: Before chop rxpd: 61 74 3e 61 70 70 6c 69 63 61 74 69 6f 6e 2f 70 
libertas RX Data: Before chop rxpd: 64 66 3c 2f 
libertas rx: rx data: skb->len-sizeof(RxPd) = 586-20 = 566
libertas RX Data: Dest: 00 23 06 56 03 ef 
libertas RX Data: Src: 00 21 00 df 72 2d 
libertas enter: lbs_compute_rssi()
libertas rx: rxpd: SNR 30, NF 95
libertas rx: before computing SNR: SNR-avg = 30, NF-avg = 95
libertas rx: after computing SNR: SNR-avg = 30, NF-avg = 95
libertas leave: lbs_compute_rssi()
libertas rx: rx data: size of actual packet 558
libertas leave: lbs_process_rxed_packet(), ret 0
libertas leave: if_sdio_handle_data(), ret 0
libertas leave: if_sdio_card_to_host(), ret 0
libertas leave: if_sdio_interrupt(), ret 0
libertas thread: 2: currenttxskb 00000000, dnld_send 0
libertas thread: 3: currenttxskb 00000000, dnld_sent 0
libertas thread: 4: currenttxskb 00000000, dnld_sent 0
libertas enter: lbs_execute_next_command()
libertas leave: lbs_execute_next_command()
libertas thread: 1: currenttxskb 00000000, dnld_sent 0
libertas thread: sleeping, connect_status 0, psmode 0, psstate 0
libertas enter (INT): lbs_hard_start_xmit()
libertas TX Data: 00 21 00 df 72 2d 00 23 06 56 03 ef 08 00 45 00 
libertas TX Data: 00 20 00 00 40 00 40 11 b7 24 c0 a8 01 14 c0 a8 
libertas TX Data: 01 44 c9 da 9d 7c 00 0c 14 cf 00 04 00 03 
libertas txpd: 90 45 47 c7 01 00 00 00 00 8d 3f c7 40 5b 5f c7 
libertas txpd: 00 29 01 c7 00 40 47 c7 
libertas Tx Data: 00 21 00 df 72 2d 00 23 06 56 03 ef 08 00 45 00 
libertas Tx Data: 00 20 00 00 40 00 40 11 b7 24 c0 a8 01 14 c0 a8 
libertas Tx Data: 01 44 c9 da 9d 7c 00 0c 14 cf 00 04 00 03 
libertas tx (INT): lbs_hard_start_xmit lined up packet
libertas leave (INT): lbs_hard_start_xmit(), ret 0
libertas thread: 2: currenttxskb 00000000, dnld_send 0
libertas thread: 3: currenttxskb 00000000, dnld_sent 0
libertas thread: 4: currenttxskb 00000000, dnld_sent 0
libertas enter: lbs_execute_next_command()
libertas leave: lbs_execute_next_command()
libertas enter: if_sdio_host_to_card(type 0, bytes 70)
libertas leave: if_sdio_host_to_card(), ret 0
libertas thread: 1: currenttxskb 00000000, dnld_sent 1
libertas thread: sleeping, connect_status 0, psmode 0, psstate 0
libertas enter: if_sdio_host_to_card_worker()
libertas leave: if_sdio_host_to_card_worker()
libertas enter: if_sdio_interrupt()
libertas sdio: interrupt: 0x2
libertas enter: lbs_host_to_card_done()
libertas leave: lbs_host_to_card_done()
libertas leave: if_sdio_interrupt(), ret 0
libertas enter: if_sdio_interrupt()
libertas sdio: interrupt: 0x1
libertas enter: if_sdio_card_to_host()
libertas sdio: packet of type 0 and size 590 bytes
libertas enter: if_sdio_handle_data()
libertas enter: lbs_process_rxed_packet()
libertas RX Data: Before chop rxpd: 01 00 1d 00 36 02 5f 0c 14 00 00 00 00 00 00 00 
libertas RX Data: Before chop rxpd: 00 00 00 00 00 23 06 56 03 ef 00 21 00 df 72 2d 
libertas RX Data: Before chop rxpd: 02 28 aa aa 03 00 00 00 08 00 45 00 02 20 e2 fa 
libertas RX Data: Before chop rxpd: 00 00 40 11 12 2a c0 a8 01 44 c0 a8 01 14 9d 7c 
libertas RX Data: Before chop rxpd: c9 da 02 0c bb ab 00 03 00 04 72 64 66 3a 44 65 
libertas RX Data: Before chop rxpd: 73 63 72 69 70 74 69 6f 6e 3e 0a 20 20 20 3c 2f 
libertas RX Data: Before chop rxpd: 72 64 66 3a 
libertas rx: rx data: skb->len-sizeof(RxPd) = 586-20 = 566
libertas RX Data: Dest: 00 23 06 56 03 ef 
libertas RX Data: Src: 00 21 00 df 72 2d 
libertas enter: lbs_compute_rssi()
libertas rx: rxpd: SNR 29, NF 95
libertas rx: before computing SNR: SNR-avg = 30, NF-avg = 95
libertas rx: after computing SNR: SNR-avg = 30, NF-avg = 95
libertas leave: lbs_compute_rssi()
libertas rx: rx data: size of actual packet 558
libertas leave: lbs_process_rxed_packet(), ret 0
libertas leave: if_sdio_handle_data(), ret 0
libertas leave: if_sdio_card_to_host(), ret 0
libertas leave: if_sdio_interrupt(), ret 0
libertas thread: 2: currenttxskb 00000000, dnld_send 0
libertas thread: 3: currenttxskb 00000000, dnld_sent 0
libertas thread: 4: currenttxskb 00000000, dnld_sent 0
libertas enter: lbs_execute_next_command()
libertas leave: lbs_execute_next_command()
libertas thread: 1: currenttxskb 00000000, dnld_sent 0
libertas thread: sleeping, connect_status 0, psmode 0, psstate 0
libertas enter (INT): lbs_hard_start_xmit()
-------------- next part --------------
tftp -g -r ftp_test_13MB 192.168.1.68
mmc0: starting CMD52 arg 10004000 flags 00000195
sdhci [sdhci_irq()]: *** mmc0 got interrupt: 0x00000001
mmc0: req done (CMD52): 0: 00001008 00000000 00000000 00000000
mmc0: starting CMD53 arg 92000048 flags 000001b5
mmc0:     blksz 72 blocks 1 flags 00000100 tsac 1000 ms nsac 0
sdhci [sdhci_irq()]: *** mmc0 got interrupt: 0x00000003
mmc0: req done (CMD53): 0: 00002000 00000000 00000000 00000000
mmc0:     72 bytes transferred: 0
mmc0: starting CMD52 arg 00000a00 flags 00000195
sdhci [sdhci_irq()]: *** mmc0 got interrupt: 0x00000101
mmc0: req done (CMD52): 0: 00001002 00000000 00000000 00000000
mmc0: starting CMD52 arg 10000a00 flags 00000195
sdhci [sdhci_irq()]: *** mmc0 got interrupt: 0x00000101
mmc0: req done (CMD52): 0: 00001003 00000000 00000000 00000000
mmc0: starting CMD52 arg 90000afc flags 00000195
sdhci [sdhci_irq()]: *** mmc0 got interrupt: 0x00000101
mmc0: req done (CMD52): 0: 000010fc 00000000 00000000 00000000
mmc0: starting CMD52 arg 10006800 flags 00000195
sdhci [sdhci_irq()]: *** mmc0 got interrupt: 0x00000101
mmc0: req done (CMD52): 0: 0000104a 00000000 00000000 00000000
mmc0: starting CMD52 arg 10006a00 flags 00000195
sdhci [sdhci_irq()]: *** mmc0 got interrupt: 0x00000101
mmc0: req done (CMD52): 0: 00001000 00000000 00000000 00000000
mmc0: starting CMD52 arg 10004000 flags 00000195
sdhci [sdhci_irq()]: *** mmc0 got interrupt: 0x00000101
mmc0: req done (CMD52): 0: 0000100a 00000000 00000000 00000000
mmc0: starting CMD53 arg 1200004c flags 000001b5
mmc0:     blksz 76 blocks 1 flags 00000200 tsac 1000 ms nsac 0
sdhci [sdhci_irq()]: *** mmc0 got interrupt: 0x00000103
mmc0: req done (CMD53): 0: 00002000 00000000 00000000 00000000
mmc0:     76 bytes transferred: 0
mmc0: starting CMD52 arg 10004000 flags 00000195
sdhci [sdhci_irq()]: *** mmc0 got interrupt: 0x00000001
mmc0: req done (CMD52): 0: 00001008 00000000 00000000 00000000
mmc0: starting CMD53 arg 9200005c flags 000001b5
mmc0:     blksz 92 blocks 1 flags 00000100 tsac 1000 ms nsac 0
sdhci [sdhci_irq()]: *** mmc0 got interrupt: 0x00000003
mmc0: req done (CMD53): 0: 00002000 00000000 00000000 00000000
mmc0:     92 bytes transferred: 0
mmc0: starting CMD52 arg 00000a00 flags 00000195
sdhci [sdhci_irq()]: *** mmc0 got interrupt: 0x00000101
mmc0: req done (CMD52): 0: 00001002 00000000 00000000 00000000
mmc0: starting CMD52 arg 10000a00 flags 00000195
sdhci [sdhci_irq()]: *** mmc0 got interrupt: 0x00000101
mmc0: req done (CMD52): 0: 00001003 00000000 00000000 00000000
mmc0: starting CMD52 arg 90000afc flags 00000195
sdhci [sdhci_irq()]: *** mmc0 got interrupt: 0x00000101
mmc0: req done (CMD52): 0: 000010fc 00000000 00000000 00000000
mmc0: starting CMD52 arg 10006800 flags 00000195
sdhci [sdhci_irq()]: *** mmc0 got interrupt: 0x00000101
mmc0: req done (CMD52): 0: 0000104e 00000000 00000000 00000000
mmc0: starting CMD52 arg 10006a00 flags 00000195
sdhci [sdhci_irq()]: *** mmc0 got interrupt: 0x00000101
mmc0: req done (CMD52): 0: 00001002 00000000 00000000 00000000
mmc0: starting CMD52 arg 10004000 flags 00000195
sdhci [sdhci_irq()]: *** mmc0 got interrupt: 0x00000101
mmc0: req done (CMD52): 0: 0000100a 00000000 00000000 00000000
mmc0: starting CMD53 arg 1a000003 flags 000001b5
mmc0:     blksz 256 blocks 3 flags 00000200 tsac 1000 ms nsac 0
sdhci [sdhci_irq()]: *** mmc0 got interrupt: 0x00000101
mmc0: req done (CMD53): 0: 00002000 00000000 00000000 00000000
mmc0:     768 bytes transferred: 0
mmc0: starting CMD52 arg 10004000 flags 00000195
sdhci [sdhci_irq()]: *** mmc0 got interrupt: 0x00000001
mmc0: req done (CMD52): 0: 00001008 00000000 00000000 00000000
mmc0: starting CMD53 arg 9200004c flags 000001b5
sdhci [sdhci_irq()]: *** mmc0 got interrupt: 0x00000100
mmc0:     blksz 76 blocks 1 flags 00000100 tsac 1000 ms nsac 0
sdhci [sdhci_irq()]: *** mmc0 got interrupt: 0x00000103
mmc0: req done (CMD53): 0: 00002000 00000000 00000000 00000000
mmc0:     76 bytes transferred: 0
mmc0: starting CMD52 arg 00000a00 flags 00000195
sdhci [sdhci_irq()]: *** mmc0 got interrupt: 0x00000101
mmc0: req done (CMD52): 0: 00001002 00000000 00000000 00000000
mmc0: starting CMD52 arg 10000a00 flags 00000195
sdhci [sdhci_irq()]: *** mmc0 got interrupt: 0x00000101
mmc0: req done (CMD52): 0: 00001003 00000000 00000000 00000000
mmc0: starting CMD52 arg 90000afc flags 00000195
sdhci [sdhci_irq()]: *** mmc0 got interrupt: 0x00000101
mmc0: req done (CMD52): 0: 000010fc 00000000 00000000 00000000
mmc0: starting CMD52 arg 10006800 flags 00000195
sdhci [sdhci_irq()]: *** mmc0 got interrupt: 0x00000101
mmc0: req done (CMD52): 0: 0000104a 00000000 00000000 00000000
mmc0: starting CMD52 arg 10006a00 flags 00000195
sdhci [sdhci_irq()]: *** mmc0 got interrupt: 0x00000101
mmc0: req done (CMD52): 0: 00001000 00000000 00000000 00000000
mmc0: starting CMD52 arg 10004000 flags 00000195
sdhci [sdhci_irq()]: *** mmc0 got interrupt: 0x00000101
mmc0: req done (CMD52): 0: 00001009 00000000 00000000 00000000
mmc0: starting CMD53 arg 1200004c flags 000001b5
mmc0:     blksz 76 blocks 1 flags 00000200 tsac 1000 ms nsac 0
sdhci [sdhci_irq()]: *** mmc0 got interrupt: 0x00000103
mmc0: req done (CMD53): 0: 00002000 00000000 00000000 00000000
mmc0:     76 bytes transferred: 0
sdhci [sdhci_irq()]: *** mmc0 got interrupt: 0x00000100
mmc0: starting CMD52 arg 00000a00 flags 00000195
sdhci [sdhci_irq()]: *** mmc0 got interrupt: 0x00000101
mmc0: req done (CMD52): 0: 00001002 00000000 00000000 00000000
mmc0: starting CMD52 arg 10000a00 flags 00000195
sdhci [sdhci_irq()]: *** mmc0 got interrupt: 0x00000101
mmc0: req done (CMD52): 0: 00001001 00000000 00000000 00000000
mmc0: starting CMD52 arg 90000afe flags 00000195
sdhci [sdhci_irq()]: *** mmc0 got interrupt: 0x00000101
mmc0: req done (CMD52): 0: 000010fe 00000000 00000000 00000000
mmc0: starting CMD52 arg 10006800 flags 00000195
sdhci [sdhci_irq()]: *** mmc0 got interrupt: 0x00000101
mmc0: req done (CMD52): 0: 0000104a 00000000 00000000 00000000
mmc0: starting CMD52 arg 10006a00 flags 00000195
sdhci [sdhci_irq()]: *** mmc0 got interrupt: 0x00000101
mmc0: req done (CMD52): 0: 00001000 00000000 00000000 00000000
mmc0: starting CMD52 arg 10004000 flags 00000195
sdhci [sdhci_irq()]: *** mmc0 got interrupt: 0x00000101
mmc0: req done (CMD52): 0: 0000100a 00000000 00000000 00000000
mmc0: starting CMD53 arg 1200004c flags 000001b5
mmc0:     blksz 76 blocks 1 flags 00000200 tsac 1000 ms nsac 0
sdhci [sdhci_irq()]: *** mmc0 got interrupt: 0x00000103
mmc0: req done (CMD53): 0: 00002000 00000000 00000000 00000000
mmc0:     76 bytes transferred: 0
sdhci [sdhci_irq()]: *** mmc0 got interrupt: 0x00000100
mmc0: starting CMD52 arg 00000a00 flags 00000195
sdhci [sdhci_irq()]: *** mmc0 got interrupt: 0x00000101
mmc0: req done (CMD52): 0: 00001002 00000000 00000000 00000000
mmc0: starting CMD52 arg 10000a00 flags 00000195
sdhci [sdhci_irq()]: *** mmc0 got interrupt: 0x00000101
mmc0: req done (CMD52): 0: 00001001 00000000 00000000 00000000
mmc0: starting CMD52 arg 90000afe flags 00000195
sdhci [sdhci_irq()]: *** mmc0 got interrupt: 0x00000101
mmc0: req done (CMD52): 0: 000010fe 00000000 00000000 00000000
mmc0: starting CMD52 arg 10006800 flags 00000195
sdhci [sdhci_irq()]: *** mmc0 got interrupt: 0x00000101
mmc0: req done (CMD52): 0: 0000104e 00000000 00000000 00000000
mmc0: starting CMD52 arg 10006a00 flags 00000195
sdhci [sdhci_irq()]: *** mmc0 got interrupt: 0x00000101
mmc0: req done (CMD52): 0: 00001002 00000000 00000000 00000000
mmc0: starting CMD52 arg 10004000 flags 00000195
sdhci [sdhci_irq()]: *** mmc0 got interrupt: 0x00000101
mmc0: req done (CMD52): 0: 0000100a 00000000 00000000 00000000
mmc0: starting CMD53 arg 1a000003 flags 000001b5
mmc0:     blksz 256 blocks 3 flags 00000200 tsac 1000 ms nsac 0
sdhci [sdhci_irq()]: *** mmc0 got interrupt: 0x00000101
mmc0: req done (CMD53): 0: 00002000 00000000 00000000 00000000
mmc0:     768 bytes transferred: 0
mmc0: starting CMD52 arg 10004000 flags 00000195
sdhci [sdhci_irq()]: *** mmc0 got interrupt: 0x00000001
mmc0: req done (CMD52): 0: 00001008 00000000 00000000 00000000
mmc0: starting CMD53 arg 9200004c flags 000001b5
mmc0:     blksz 76 blocks 1 flags 00000100 tsac 1000 ms nsac 0
sdhci [sdhci_irq()]: *** mmc0 got interrupt: 0x00000003
mmc0: req done (CMD53): 0: 00002000 00000000 00000000 00000000
mmc0:     76 bytes transferred: 0
mmc0: starting CMD52 arg 00000a00 flags 00000195
sdhci [sdhci_irq()]: *** mmc0 got interrupt: 0x00000101
mmc0: req done (CMD52): 0: 00001002 00000000 00000000 00000000
mmc0: starting CMD52 arg 10000a00 flags 00000195
sdhci [sdhci_irq()]: *** mmc0 got interrupt: 0x00000101
mmc0: req done (CMD52): 0: 00001003 00000000 00000000 00000000
mmc0: starting CMD52 arg 90000afc flags 00000195
sdhci [sdhci_irq()]: *** mmc0 got interrupt: 0x00000101
mmc0: req done (CMD52): 0: 000010fc 00000000 00000000 00000000
mmc0: starting CMD52 arg 10006800 flags 00000195
sdhci [sdhci_irq()]: *** mmc0 got interrupt: 0x00000101
mmc0: req done (CMD52): 0: 0000104e 00000000 00000000 00000000
mmc0: starting CMD52 arg 10006a00 flags 00000195
sdhci [sdhci_irq()]: *** mmc0 got interrupt: 0x00000101
mmc0: req done (CMD52): 0: 00001002 00000000 00000000 00000000
mmc0: starting CMD52 arg 10004000 flags 00000195
sdhci [sdhci_irq()]: *** mmc0 got interrupt: 0x00000101
mmc0: req done (CMD52): 0: 0000100a 00000000 00000000 00000000
mmc0: starting CMD53 arg 1a000003 flags 000001b5
mmc0:     blksz 256 blocks 3 flags 00000200 tsac 1000 ms nsac 0
sdhci [sdhci_irq()]: *** mmc0 got interrupt: 0x00000101
mmc0: req done (CMD53): 0: 00002000 00000000 00000000 00000000
mmc0:     768 bytes transferred: 0
mmc0: starting CMD52 arg 10004000 flags 00000195
sdhci [sdhci_irq()]: *** mmc0 got interrupt: 0x00000001
mmc0: req done (CMD52): 0: 00001008 00000000 00000000 00000000
mmc0: starting CMD53 arg 9200004c flags 000001b5
mmc0:     blksz 76 blocks 1 flags 00000100 tsac 1000 ms nsac 0
sdhci [sdhci_irq()]: *** mmc0 got interrupt: 0x00000003
mmc0: req done (CMD53): 0: 00002000 00000000 00000000 00000000
mmc0:     76 bytes transferred: 0


More information about the libertas-dev mailing list