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