On Wed, 2008-03-26 at 15:41 +0100, Holger Schurig wrote: > Hmm, that isn't the end of my spinlock problems. When I'm > associated and ping, I get another recursion: Hmm, so netif_rx() can eventually result in call to hard_start_xmit() later down the stack? Ugh. It's probably a consequence of the driver not poking the network stack in the right way to say "hey, I'm busy" or not punting something to a workqueue or whatever. I agree the indirection in the current SDIO and USB drivers sucks, but I'm getting more and more convinced that the way that the CF driver is handling this sucks too. Dan > libertas assoc: associated to 00:13:19:80:da:30 > BUG: spinlock recursion on CPU#0, lbs_main/5566 > lock: f58b58d8, .magic: dead4ead, .owner: > lbs_main/5566, .owner_cpu: 0 > Pid: 5566, comm: lbs_main Not tainted 2.6.25-rc5-wl #19 > [<c01ccdb7>] spin_bug+0x76/0xb1 > [<c01ccecb>] _raw_spin_lock+0x34/0xc9 > [<c0306984>] _spin_lock_irqsave+0x17/0x1c > [<f8c33cdf>] lbs_hard_start_xmit+0x61/0x4e2 [libertas] > [<c0306bef>] ? _spin_unlock+0x8/0x1f > [<c014f497>] ? cache_alloc_refill+0x18c/0x439 > [<c02b449b>] dev_hard_start_xmit+0x16f/0x1dc > [<c02c0f8b>] __qdisc_run+0x7a/0x14e > [<c02b67ba>] dev_queue_xmit+0x119/0x23b > [<c02bb187>] neigh_resolve_output+0x20a/0x236 > [<c02b978e>] neigh_update+0x2c0/0x36a > [<c02c04e3>] ? eth_header_cache_update+0x0/0x12 > [<c02e4331>] arp_process+0x4d6/0x50e > [<c02afc6d>] ? skb_release_data+0x84/0x89 > [<c02afb6d>] ? __kfree_skb+0x61/0x64 > [<c02e440c>] arp_rcv+0xa3/0xb3 > [<c02b4021>] netif_receive_skb+0x1f7/0x26a > [<c02b643c>] process_backlog+0x5b/0xa5 > [<c02b5fa3>] net_rx_action+0x7f/0x142 > [<c011befe>] __do_softirq+0x38/0x70 > [<c011bf5b>] do_softirq+0x25/0x2a > [<c02b5ea4>] netif_rx_ni+0x24/0x3e > [<f8c33b59>] lbs_process_rxed_packet+0x755/0x7c0 [libertas] > [<c02b024c>] ? __alloc_skb+0x4c/0xf8 > [<f88f9096>] if_cs_get_int_status+0x22a/0x3d8 [libertas_cs] > [<f8c2ef5e>] lbs_thread+0x2fe/0x745 [libertas] > [<c0114edd>] ? default_wake_function+0x0/0xd > [<f8c2ec60>] ? lbs_thread+0x0/0x745 [libertas] > [<c0126f91>] kthread+0x39/0x60 > [<c0126f58>] ? kthread+0x0/0x60 > [<c01043c3>] kernel_thread_helper+0x7/0x10 > ======================= > -- To unsubscribe from this list: send the line "unsubscribe linux-wireless" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html