why no interrupt generated from Marvell wifi card in this case?

Dongas dongas86 at gmail.com
Fri Jul 10 13:51:18 EDT 2009


Hi ALL,

Could anyone share some experience?
Is there a possibility that the WiFi card fails to generate the
interrupt by itself by whatever reason?

Maybe my understanding is wrong, but could you help point it out?
You response may be a big help for me.

Thanks

Regards
Dongas

2009/7/9 Dongas <dongas86 at gmail.com>:
> Dear ALL,
>
> I'm debugging a transmit timeout issue when downloading files.
> Finally i found the root cause was that the wifi card failed to
> generate the interrupt as expected after a specific packet was sent to
> card during the downloading process.
> (According to the previous log i have , there shoud be a uploading
> interrupt from card to notify the host that new packets received)
> (Tried kernel 2.6.25 & 2.6.29, both have the same issue.)
>
> Hopefully you can give me some help.
>
> I have two questions:
> 1. There're many repeated packets sent to card via lbs_hard_start_xmit
> fucntion during the downloading process. I'm not a expert on the TCP
> protocol.
> Is there any one who knows well about what 's function of them can
> give some explain?
> Are they used for handshaking for downloading between client and server?
>
> 2. Assume the packet is sent successfully to card,
> Why the card didn't generte the uploading interrupt after its data is ready?
> BTW, even the rssi command is sent when timeout happened, there's also
> no command response interrupt from card, anybody knows why?
>
> Please see in line for extra comments:
>
> Below is the detailed log for 2.6.25(MMC log is simplified):
> …………(Here the correct part of log is cut off)
> -----------------------------> Begin to send the packet
> <-------------------------
> libertas enter (INT): lbs_hard_start_xmit():69
> libertas tx (INT): lbs_hard_start_xmit lined up packet
> libertas leave (INT): lbs_hard_start_xmit():169, ret 0
>
> libertas thread: main-thread 111: intcounter=0 currenttxskb=00000000 dnld_sent=0
> libertas thread: main-thread 222 (waking up): intcounter=0
> currenttxskb=00000000 dnld_sent=0
> libertas thread: main-thread 333: intcounter=0 currenttxskb=00000000 dnld_sent=0
> libertas thread: main-thread 444: intcounter=0 currenttxskb=00000000 dnld_sent=0
> libertas enter: lbs_execute_next_command():1748
> libertas leave: lbs_execute_next_command():1883
> libertas enter: if_sdio_host_to_card(type 0, bytes 90):711
> libertas leave: if_sdio_host_to_card():782, ret 0
>
> libertas thread: main-thread 111: intcounter=0 currenttxskb=00000000 dnld_sent=1
> libertas thread: main-thread sleeping... Conn=0 IntC=0 PS_mode=0 PS_State=0
>
> ------------------> Here the packet is sent successfully <------------------
> libertas enter: if_sdio_host_to_card_worker():363
> mmc1: 52  10004000
> irq 1  0x40000000
> mmc1: d (52): 0: 00001009
> mmc1: 53  92000060
> irq 1  0x40e00000
> irq 1  0x80000000
> mmc1: d (53): 0: 00002000
> libertas leave: if_sdio_host_to_card_worker():403
>
> libertas enter (INT): lbs_hard_start_xmit():69
> libertas tx (INT): lbs_hard_start_xmit lined up packet
> libertas leave (INT): lbs_hard_start_xmit():169, ret 0
>
> libertas thread: main-thread 222 (waking up): intcounter=0
> currenttxskb=00000000 dnld_sent=1
> libertas thread: main-thread 333: intcounter=0 currenttxskb=00000000 dnld_sent=1
> libertas thread: main-thread 444: intcounter=0 currenttxskb=00000000 dnld_sent=1
> libertas thread: main-thread 111: intcounter=0 currenttxskb=00000000 dnld_sent=1
> libertas thread: main-thread sleeping... Conn=0 IntC=0 PS_mode=0 PS_State=0
>
> -------------> Always no interrupt generated by card and timeout
> happened <----------
> NETDEV WATCHDOG: eth0: transmit timed out   -------- NETDEV WATCHDOG
> libertas enter (INT): lbs_tx_timeout():471
> libertas: tx watch dog timeout
> libertas enter (INT): lbs_host_to_card_done():499
> libertas leave (INT): lbs_host_to_card_done():510
> libertas enter (INT): lbs_prepare_and_send_command():1317
> libertas enter (INT): lbs_get_cmd_ctrl_node():1678
> libertas leave (INT): lbs_get_cmd_ctrl_node():1696
> libertas enter (INT): lbs_set_cmd_ctrl_node():1719
> libertas leave (INT): lbs_set_cmd_ctrl_node():1727
> libertas host (INT): PREP_CMD: command 0x001f
> libertas enter (INT): lbs_cmd_802_11_rssi():828
> libertas leave (INT): lbs_cmd_802_11_rssi():841
> libertas enter (INT): lbs_queue_cmd():1091
> libertas host (INT): QUEUE_CMD: inserted command 0x001f into cmdpendingq
> libertas leave (INT): lbs_queue_cmd():1126
> libertas leave (INT): lbs_prepare_and_send_command():1576, ret 0
> libertas leave (INT): lbs_tx_timeout():492
>
> libertas thread: main-thread 222 (waking up): intcounter=0
> currenttxskb=00000000 dnld_sent=0
> libertas thread: main-thread 333: intcounter=0 currenttxskb=00000000 dnld_sent=0
> libertas thread: main-thread 444: intcounter=0 currenttxskb=00000000 dnld_sent=0
>
> libertas enter: lbs_execute_next_command():1748
> libertas host: EXEC_NEXT_CMD: OK to send command 0x001f in psstate 0
> libertas host: EXEC_NEXT_CMD: sending command 0x001f
> libertas enter: lbs_submit_command():1140
> libertas host: DNLD_CMD: command 0x001f, seq 54, size 16, jiffies 676512
> libertas enter: if_sdio_host_to_card(type 1, bytes 16):711
>
> libertas enter: if_sdio_host_to_card_worker():363
> mmc1: 52  10004000
> irq 1  0x40000000
> mmc1: d (52): 0: 00001008
> mmc1: 53  92000014
> irq 1  0xc0000000
> irq 1  0x80000000
> mmc1: d (53): 0: 00002000
> libertas leave: if_sdio_host_to_card():782, ret 0
> libertas cmd: DNLD_CMD: sent command 0x001f, jiffies 676517
>
> libertas leave: if_sdio_host_to_card_worker():403
> libertas leave: lbs_submit_command():1175
> libertas leave: lbs_execute_next_command():1883
>
> libertas thread: main-thread 111: intcounter=0 currenttxskb=00000000 dnld_sent=2
> libertas thread: main-thread sleeping... Conn=0 IntC=0 PS_mode=0 PS_State=0
>
> libertas enter (INT): command_timer_fn():970
> libertas: Command 1f timed out
> libertas leave (INT): command_timer_fn():984
>
> libertas thread: main-thread 222 (waking up): intcounter=0
> currenttxskb=00000000 dnld_sent=2
> libertas thread: main-thread 333: intcounter=0 currenttxskb=00000000 dnld_sent=2
> libertas thread: main-thread 444: intcounter=0 currenttxskb=00000000 dnld_sent=2
> libertas: requeueing command 1f due to timeout (#1)
> libertas thread: main-thread 111: intcounter=0 currenttxskb=00000000 dnld_sent=2
> libertas thread: main-thread sleeping... Conn=0 IntC=0 PS_mode=0 PS_State=0
>
> NETDEV WATCHDOG: eth0: transmit timed out
> libertas enter (INT): lbs_tx_timeout():471
> libertas: tx watch dog timeout
>
> Any reply will be highly appreciated.
>
> Thanks
>
> Regards
> Dongas
>



More information about the libertas-dev mailing list