[ Date Index ] [ Thread Index ] [ <= Previous by date / thread ] [ Next by date / thread => ]
Yes its perfectly feasable, its all gpl and on sourceforge in a cvs tree.
So I
can either post sections of offending code or you can have a browse of the tree directly. What is simplest?
Offending code is probably easiest. I didn't get to bed last night and I'm not firing on all cylinders...
Ok here goes its quite a bit of code but it is the important bits.
rt2x00_interrupt_rxdone is called from a master interupt handler that reads a bit mask on the device to determine what interrupt routine to fire, that (master handler) is protected with a spin_lock_irq_save() and spin_lock_irq_restore().
/* Schedule rx packet processing. */ if(!skb_queue_empty(&adapter->rx_packet_queue)) tasklet_schedule(&adapter->rx_tasklet);
spin_unlock(&adapter->rx_lock); }
If i replace the tasklet_schedule with a *direct* call to the tasklet handler then all that code works. But left as is here the tasklets don't fire and a big crash is encountered at some point later.
John Daragon john@xxxxxxxxxx argv[0] limited Lambs Lawn Cottage, Staple Fitzpaine, Taunton, TA3 5SL, UK v +44 (0) 1460 234068 f +44 (0) 1460 234069 m +44 (0) 7836 576127
-- The Mailing List for the Devon & Cornwall LUG Mail majordomo@xxxxxxxxxxxxx with "unsubscribe list" in the message body to unsubscribe. FAQ: www.dcglug.org.uk/linux_adm/list-faq.html