Libertas Driver Locking Kernel

Dan Williams dcbw at redhat.com
Wed May 21 12:47:02 EDT 2008


On Wed, 2008-05-21 at 11:21 -0500, Nick Moszer wrote:
> Greetings,
> 
> I'm using the libertas driver in 2.6.24 w/ firmware 8.73.7.p3 on a 8686 
> chip over SDIO from embeddedworks.net.
> I posted earlier about a problem with driver transfer sizes on the BF548 
> board I'm using. I believe that is fixed (thanks again!).

Any chance you could try an updated driver?  What's in kernel git right
now in wireless-testing should be able to be used with 2.6.24 without
much trouble.  I noticed SendSinglePacket() in your logs, which isn't in
the upstream sources any more.

Interesting bits:

Jan  1 00:04:03 blackfin user.warn kernel:
Jan  1 00:04:10 blackfin user.info kernel: NETDEV WATCHDOG: eth1: 
transmit timed out
Jan  1 00:04:10 blackfin user.debug kernel: libertas enter (INT): 
libertas_tx_timeout():583
Jan  1 00:04:10 blackfin user.err kernel: libertas: tx watch dog timeout
Jan  1 00:04:10 blackfin user.debug kernel: libertas leave (INT): 
libertas_tx_timeout():604

this could indicate that the card or SDHC crashed or isn't accepting any
further data or commands.  The libertas driver in the upstream kernel
tree has a reworking of the command processing and interrupt handling
that might help here.

Dan

> When I load the driver and start sending traffic through the card it 
> hard locks the kernel.  Below is the logging up to the point it dies. 
> Usually just after a handful of packets.  I posted about this earlier 
> but I think I've ruled the blackfin driver out at this point.
> Can anyone make sense of exactly what is going on based on the logging?  
> Thanks!
> 
> Jan  1 00:04:03 blackfin user.debug kernel: sdh_stat_irq enter
> Jan  1 00:04:03 blackfin user.debug kernel: sdh_stat_irq exit
> Jan  1 00:04:03 blackfin user.warn kernel:
> Jan  1 00:04:03 blackfin user.debug kernel: sdh_dma_irq enter, 
> irq_stat:0x0001
> Jan  1 00:04:03 blackfin user.debug kernel: sdh_stat_irq enter
> Jan  1 00:04:03 blackfin user.debug kernel: sdh_data_done enter stat:0x500
> Jan  1 00:04:03 blackfin user.debug kernel: sdh_finish_request enter
> Jan  1 00:04:03 blackfin user.debug kernel: mmc0: req done (CMD53): 0: 
> 00002000 00000000 00000000 00000000
> Jan  1 00:04:03 blackfin user.debug kernel: mmc0:     1024 bytes 
> transferred: 0
> Jan  1 00:04:03 blackfin user.debug kernel: sdh_stat_irq exit
> Jan  1 00:04:03 blackfin user.warn kernel:
> Jan  1 00:04:03 blackfin user.debug kernel: libertas thread: packet of 
> type 0 and size 598 bytes
> Jan  1 00:04:03 blackfin user.debug kernel: libertas enter: 
> if_sdio_handle_data():191
> Jan  1 00:04:03 blackfin user.debug kernel: libertas enter: 
> libertas_process_rxed_packet():174
> Jan  1 00:04:03 blackfin user.warn kernel: libertas RX Data: Before chop 
> rxpd: 01 00 2b 00 3e 02 5a 0c 14 00 00 00 00 00 00 00
> Jan  1 00:04:03 blackfin user.warn kernel: libertas RX Data: Before chop 
> rxpd: 00 00 00 00 00 1a 6b 93 32 60 00 1d 09 03 c8 bd
> Jan  1 00:04:03 blackfin user.warn kernel: libertas RX Data: Before chop 
> rxpd: 02 30 aa aa 03 00 00 00 08 00 45 00 02 28 3d 01
> Jan  1 00:04:03 blackfin user.warn kernel: libertas RX Data: Before chop 
> rxpd: 40 00 80 06 39 5e c0 a8 00 68 c0 a8 00 b8 07 57
> Jan  1 00:04:03 blackfin user.warn kernel: libertas RX Data: Before chop 
> rxpd: 00 16 71 e0 9f 61 e2 88 33 7f 50 18 ff e8 5a 29
> Jan  1 00:04:03 blackfin user.warn kernel: libertas RX Data: Before chop 
> rxpd: 00 00 00 00 02 64 0a 14 a6 3a e3 96 40 62 ee 17
> Jan  1 00:04:03 blackfin user.warn kernel: libertas RX Data: Before chop 
> rxpd: 08 65 0f e5
> Jan  1 00:04:03 blackfin user.debug kernel: libertas rx: rx data: 
> skb->len-sizeof(RxPd) = 594-20 = 574
> Jan  1 00:04:03 blackfin user.warn kernel: libertas RX Data: Dest: 00 1a 
> 6b 93 32 60
> Jan  1 00:04:03 blackfin user.warn kernel: libertas RX Data: Src: 00 1d 
> 09 03 c8 bd
> Jan  1 00:04:03 blackfin user.debug kernel: libertas enter: 
> wlan_compute_rssi():109
> Jan  1 00:04:03 blackfin user.debug kernel: libertas rx: rxpd: SNR 43, NF 90
> Jan  1 00:04:03 blackfin user.debug kernel: libertas rx: before 
> computing SNR: SNR-avg = 43, NF-avg = 91
> Jan  1 00:04:03 blackfin user.debug kernel: libertas rx: after computing 
> SNR: SNR-avg = 43, NF-avg = 91
> Jan  1 00:04:03 blackfin user.debug kernel: libertas leave: 
> wlan_compute_rssi():134
> Jan  1 00:04:03 blackfin user.debug kernel: libertas rx: rx data: size 
> of actual packet 566
> Jan  1 00:04:03 blackfin user.debug kernel: libertas rx: skb->data 003f602e
> Jan  1 00:04:03 blackfin user.debug kernel: libertas leave: 
> libertas_process_rxed_packet():273, ret 0
> Jan  1 00:04:03 blackfin user.debug kernel: libertas leave: 
> if_sdio_handle_data():217, ret 0
> Jan  1 00:04:03 blackfin user.debug kernel: libertas leave: 
> if_sdio_card_to_host():365, ret 0
> Jan  1 00:04:03 blackfin user.debug kernel: libertas leave: 
> if_sdio_interrupt():880, ret 0
> Jan  1 00:04:03 blackfin user.info kernel: s 00000015
> Jan  1 00:04:03 blackfin user.debug kernel: sdh_request enter, 
> mrp:03d95ec4, cmd:03d95ef8
> Jan  1 00:04:03 blackfin user.debug kernel: sdh_start_cmd enter 
> cmd:0x03d95ef8
> Jan  1 00:04:03 blackfin user.debug kernel: sdh_stat_irq enter
> Jan  1 00:04:03 blackfin user.debug kernel: sdh_cmd_done enter cmd:03d95ef8
> Jan  1 00:04:03 blackfin user.debug kernel: sdh_finish_request enter
> Jan  1 00:04:03 blackfin user.debug kernel: mmc0: req done (CMD7): 0: 
> 00001e00 00000000 00000000 00000000
> Jan  1 00:04:03 blackfin user.debug kernel: sdh_stat_irq exit
> Jan  1 00:04:03 blackfin user.warn kernel:
> Jan  1 00:04:03 blackfin user.debug kernel: libertas enter: 
> if_sdio_host_to_card_worker():379
> Jan  1 00:04:03 blackfin user.debug kernel: mmc0: starting CMD52 arg 
> 10004000 flags 00000195
> Jan  1 00:04:03 blackfin user.debug kernel: sdh_request enter, 
> mrp:03defebc, cmd:03defef0
> Jan  1 00:04:03 blackfin user.debug kernel: sdh_start_cmd enter 
> cmd:0x03defef0
> Jan  1 00:04:03 blackfin user.debug kernel: sdh_stat_irq enter
> Jan  1 00:04:03 blackfin user.debug kernel: sdh_cmd_done enter cmd:03defef0
> Jan  1 00:04:03 blackfin user.debug kernel: sdh_finish_request enter
> Jan  1 00:04:03 blackfin user.debug kernel: mmc0: req done (CMD52): 0: 
> 0000100a 00000000 00000000 00000000
> Jan  1 00:04:03 blackfin user.debug kernel: sdh_stat_irq exit
> Jan  1 00:04:03 blackfin user.warn kernel:
> Jan  1 00:04:03 blackfin user.debug kernel: mmc0: starting CMD53 arg 
> 92000080 flags 000001b5
> Jan  1 00:04:03 blackfin user.debug kernel: mmc0:     blksz 128 blocks 1 
> flags 00000100 tsac 1000 ms nsac 0
> Jan  1 00:04:03 blackfin user.debug kernel: sdh_request enter, 
> mrp:03defeac, cmd:03defe80
> Jan  1 00:04:03 blackfin user.debug kernel: sdh_start_cmd enter 
> cmd:0x03defe80
> Jan  1 00:04:03 blackfin user.debug kernel: sdh_stat_irq enter
> Jan  1 00:04:03 blackfin user.debug kernel: sdh_cmd_done enter cmd:03defe80
> Jan  1 00:04:03 blackfin user.debug kernel: sdh_setup_data enter flags:0x100
> Jan  1 00:04:03 blackfin user.debug kernel: 0: start_addr:0x22f89c8, 
> cfg:0x4529, x_count:0x20, x_modify:0x4
> Jan  1 00:04:03 blackfin user.debug kernel: sdh_setup_data exit
> Jan  1 00:04:03 blackfin user.debug kernel: sdh_dma_irq enter, 
> irq_stat:0x0001
> Jan  1 00:04:03 blackfin user.debug kernel: sdh_data_done enter stat:0x500
> Jan  1 00:04:03 blackfin user.debug kernel: sdh_finish_request enter
> Jan  1 00:04:03 blackfin user.debug kernel: mmc0: req done (CMD53): 0: 
> 00002000 00000000 00000000 00000000
> Jan  1 00:04:03 blackfin user.debug kernel: mmc0:     128 bytes 
> transferred: 0
> Jan  1 00:04:03 blackfin user.debug kernel: sdh_stat_irq exit
> Jan  1 00:04:03 blackfin user.warn kernel:
> Jan  1 00:04:03 blackfin user.debug kernel: sdh_stat_irq enter
> Jan  1 00:04:03 blackfin user.debug kernel: sdh_stat_irq exit
> Jan  1 00:04:03 blackfin user.warn kernel:
> Jan  1 00:04:03 blackfin user.debug kernel: libertas leave: 
> if_sdio_host_to_card_worker():419
> Jan  1 00:04:03 blackfin user.debug kernel: mmc0: starting CMD7 arg 
> 00010000 flags 00000015
> Jan  1 00:04:03 blackfin user.debug kernel: sdh_request enter, 
> mrp:03d95ec4, cmd:03d95ef8
> Jan  1 00:04:03 blackfin user.debug kernel: sdh_start_cmd enter 
> cmd:0x03d95ef8
> Jan  1 00:04:03 blackfin user.debug kernel: sdh_stat_irq enter
> Jan  1 00:04:03 blackfin user.debug kernel: sdh_cmd_done enter cmd:03d95ef8
> Jan  1 00:04:03 blackfin user.debug kernel: sdh_finish_request enter
> Jan  1 00:04:03 blackfin user.debug kernel: mmc0: req done (CMD7): 0: 
> 00001e00 00000000 00000000 00000000
> Jan  1 00:04:03 blackfin user.debug kernel: sdh_stat_irq exit
> Jan  1 00:04:03 blackfin user.warn kernel:
> Jan  1 00:04:03 blackfin user.debug kernel: mmc0: starting CMD52 arg 
> 00000a00 flags 00000195
> Jan  1 00:04:03 blackfin user.debug kernel: sdh_request enter, 
> mrp:00803f20, cmd:00803f54
> Jan  1 00:04:03 blackfin user.debug kernel: sdh_start_cmd enter 
> cmd:0x00803f54
> Jan  1 00:04:03 blackfin user.debug kernel: sdh_stat_irq enter
> Jan  1 00:04:03 blackfin user.debug kernel: sdh_cmd_done enter cmd:00803f54
> Jan  1 00:04:03 blackfin user.debug kernel: sdh_finish_request enter
> Jan  1 00:04:03 blackfin user.debug kernel: mmc0: req done (CMD52): 0: 
> 00001002 00000000 00000000 00000000
> Jan  1 00:04:03 blackfin user.debug kernel: sdh_stat_irq exit
> Jan  1 00:04:03 blackfin user.warn kernel:
> Jan  1 00:04:03 blackfin user.debug kernel: libertas enter: 
> if_sdio_interrupt():846
> Jan  1 00:04:03 blackfin user.debug kernel: mmc0: starting CMD52 arg 
> 10000a00 flags 00000195
> Jan  1 00:04:03 blackfin user.debug kernel: sdh_request enter, 
> mrp:00803eb4, cmd:00803ee8
> Jan  1 00:04:03 blackfin user.debug kernel: sdh_start_cmd enter 
> cmd:0x00803ee8
> Jan  1 00:04:03 blackfin user.debug kernel: sdh_stat_irq enter
> Jan  1 00:04:03 blackfin user.debug kernel: sdh_cmd_done enter cmd:00803ee8
> Jan  1 00:04:03 blackfin user.debug kernel: sdh_finish_request enter
> Jan  1 00:04:03 blackfin user.debug kernel: mmc0: req done (CMD52): 0: 
> 00001001 00000000 00000000 00000000
> Jan  1 00:04:03 blackfin user.debug kernel: sdh_stat_irq exit
> Jan  1 00:04:03 blackfin user.warn kernel:
> Jan  1 00:04:03 blackfin user.debug kernel: libertas thread: interrupt: 0x1
> Jan  1 00:04:03 blackfin user.debug kernel: mmc0: starting CMD52 arg 
> 90000afe flags 00000195
> Jan  1 00:04:03 blackfin user.debug kernel: sdh_request enter, 
> mrp:00803eb8, cmd:00803eec
> Jan  1 00:04:03 blackfin user.debug kernel: sdh_start_cmd enter 
> cmd:0x00803eec
> Jan  1 00:04:03 blackfin user.debug kernel: sdh_stat_irq enter
> Jan  1 00:04:03 blackfin user.debug kernel: sdh_cmd_done enter cmd:00803eec
> Jan  1 00:04:03 blackfin user.debug kernel: sdh_finish_request enter
> Jan  1 00:04:03 blackfin user.debug kernel: mmc0: req done (CMD52): 0: 
> 000010fe 00000000 00000000 00000000
> Jan  1 00:04:03 blackfin user.debug kernel: sdh_stat_irq exit
> Jan  1 00:04:03 blackfin user.warn kernel:
> Jan  1 00:04:03 blackfin user.debug kernel: libertas enter: 
> if_sdio_card_to_host():273
> Jan  1 00:04:03 blackfin user.debug kernel: mmc0: starting CMD52 arg 
> 10006800 flags 00000195
> Jan  1 00:04:03 blackfin user.debug kernel: sdh_request enter, 
> mrp:00803e88, cmd:00803ebc
> Jan  1 00:04:03 blackfin user.debug kernel: sdh_start_cmd enter 
> cmd:0x00803ebc
> Jan  1 00:04:03 blackfin user.debug kernel: sdh_stat_irq enter
> Jan  1 00:04:03 blackfin user.debug kernel: sdh_cmd_done enter cmd:00803ebc
> Jan  1 00:04:03 blackfin user.debug kernel: sdh_finish_request enter
> Jan  1 00:04:03 blackfin user.debug kernel: mmc0: req done (CMD52): 0: 
> 000010be 00000000 00000000 00000000
> Jan  1 00:04:03 blackfin user.debug kernel: sdh_stat_irq exit
> Jan  1 00:04:03 blackfin user.warn kernel:
> Jan  1 00:04:03 blackfin user.debug kernel: mmc0: starting CMD52 arg 
> 10006a00 flags 00000195
> Jan  1 00:04:03 blackfin user.debug kernel: sdh_request enter, 
> mrp:00803e88, cmd:00803ebc
> Jan  1 00:04:03 blackfin user.debug kernel: sdh_start_cmd enter 
> cmd:0x00803ebc
> Jan  1 00:04:03 blackfin user.debug kernel: sdh_stat_irq enter
> Jan  1 00:04:03 blackfin user.debug kernel: sdh_cmd_done enter cmd:00803ebc
> Jan  1 00:04:03 blackfin user.debug kernel: sdh_finish_request enter
> Jan  1 00:04:03 blackfin user.debug kernel: mmc0: req done (CMD52): 0: 
> 00001000 00000000 00000000 00000000
> Jan  1 00:04:03 blackfin user.debug kernel: sdh_stat_irq exit
> Jan  1 00:04:03 blackfin user.warn kernel:
> Jan  1 00:04:03 blackfin user.debug kernel: mmc0: starting CMD52 arg 
> 10004000 flags 00000195
> Jan  1 00:04:03 blackfin user.debug kernel: sdh_request enter, 
> mrp:00803eb4, cmd:00803ee8
> Jan  1 00:04:03 blackfin user.debug kernel: sdh_start_cmd enter 
> cmd:0x00803ee8
> Jan  1 00:04:03 blackfin user.debug kernel: sdh_stat_irq enter
> Jan  1 00:04:03 blackfin user.debug kernel: sdh_cmd_done enter cmd:00803ee8
> Jan  1 00:04:03 blackfin user.debug kernel: sdh_finish_request enter
> Jan  1 00:04:03 blackfin user.debug kernel: mmc0: req done (CMD52): 0: 
> 00001009 00000000 00000000 00000000
> Jan  1 00:04:03 blackfin user.debug kernel: sdh_stat_irq exit
> Jan  1 00:04:03 blackfin user.warn kernel:
> Jan  1 00:04:03 blackfin user.debug kernel: mmc0: starting CMD53 arg 
> 12000100 flags 000001b5
> Jan  1 00:04:03 blackfin user.debug kernel: mmc0:     blksz 256 blocks 1 
> flags 00000200 tsac 1000 ms nsac 0
> Jan  1 00:04:03 blackfin user.debug kernel: sdh_request enter, 
> mrp:00803ea4, cmd:00803e78
> Jan  1 00:04:03 blackfin user.debug kernel: sdh_setup_data enter flags:0x200
> Jan  1 00:04:03 blackfin user.debug kernel: 0: start_addr:0x900018, 
> cfg:0x452b, x_count:0x40, x_modify:0x4
> Jan  1 00:04:03 blackfin user.debug kernel: sdh_setup_data exit
> Jan  1 00:04:03 blackfin user.debug kernel: sdh_start_cmd enter 
> cmd:0x00803e78
> Jan  1 00:04:03 blackfin user.debug kernel: sdh_stat_irq enter
> Jan  1 00:04:03 blackfin user.debug kernel: sdh_cmd_done enter cmd:00803e78
> Jan  1 00:04:03 blackfin user.debug kernel: sdh_stat_irq exit
> Jan  1 00:04:03 blackfin user.warn kernel:
> Jan  1 00:04:10 blackfin user.info kernel: NETDEV WATCHDOG: eth1: 
> transmit timed out
> Jan  1 00:04:10 blackfin user.debug kernel: libertas enter (INT): 
> libertas_tx_timeout():583
> Jan  1 00:04:10 blackfin user.err kernel: libertas: tx watch dog timeout
> Jan  1 00:04:10 blackfin user.debug kernel: libertas leave (INT): 
> libertas_tx_timeout():604
> Jan  1 00:04:10 blackfin user.debug kernel: libertas enter (INT): 
> libertas_pre_start_xmit():565
> Jan  1 00:04:10 blackfin user.debug kernel: libertas enter (INT): 
> libertas_hard_start_xmit():515
> Jan  1 00:04:10 blackfin user.debug kernel: libertas enter (INT): 
> libertas_process_tx():215
> Jan  1 00:04:10 blackfin user.warn kernel: libertas TX Data: 00 1d 09 03 
> c8 bd 00 1a 6b 93 32 60 08 00 45 00
> Jan  1 00:04:10 blackfin user.warn kernel: libertas TX Data: 00 28 f4 3c 
> 40 00 40 06 c4 22 c0 a8 00 b8 c0 a8
> Jan  1 00:04:10 blackfin user.warn kernel: libertas TX Data: 00 68 00 16 
> 07 57 e2 88 33 7f 71 e0 a1 61 50 10
> Jan  1 00:04:10 blackfin user.warn kernel: libertas TX Data: 19 20 e3 8c 
> 00 00
> Jan  1 00:04:10 blackfin user.debug kernel: libertas enter (INT): 
> SendSinglePacket():69
> Jan  1 00:04:10 blackfin user.warn kernel: libertas txpd: 00 00 00 00 00 
> 00 00 00 18 00 00 00 36 00 00 1d
> Jan  1 00:04:10 blackfin user.warn kernel: libertas txpd: 09 03 c8 bd 00 
> 00 00 00
> Jan  1 00:04:10 blackfin user.warn kernel: libertas Tx Data: 00 1d 09 03 
> c8 bd 00 1a 6b 93 32 60 08 00 45 00
> Jan  1 00:04:10 blackfin user.warn kernel: libertas Tx Data: 00 28 f4 3c 
> 40 00 40 06 c4 22 c0 a8 00 b8 c0 a8
> Jan  1 00:04:10 blackfin user.warn kernel: libertas Tx Data: 00 68 00 16 
> 07 57 e2 88 33 7f 71 e0 a1 61 50 10
> Jan  1 00:04:10 blackfin user.warn kernel: libertas Tx Data: 19 20 e3 8c 
> 00 00
> Jan  1 00:04:10 blackfin user.debug kernel: libertas enter (INT): 
> if_sdio_host_to_card(type 0, bytes 78):726
> Jan  1 00:04:10 blackfin user.debug kernel: libertas leave (INT): 
> if_sdio_host_to_card():800, ret 0
> Jan  1 00:04:10 blackfin user.debug kernel: libertas tx (INT): 
> SendSinglePacket succeeds
> Jan  1 00:04:10 blackfin user.debug kernel: libertas leave (INT): 
> SendSinglePacket():162, ret 0
> Jan  1 00:04:10 blackfin user.debug kernel: libertas leave (INT): 
> libertas_process_tx():234, ret 0
> Jan  1 00:04:10 blackfin user.debug kernel: libertas leave (INT): 
> libertas_hard_start_xmit():529, ret 0
> Jan  1 00:04:10 blackfin user.debug kernel: libertas leave (INT): 
> libertas_pre_start_xmit():575, ret 0
> Jan  1 00:04:10 blackfin user.debug kernel: libertas enter: 
> if_sdio_host_to_card_worker():379
> 
> 
> _______________________________________________
> 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