Subject: Tasklet questions (This message is being sent to all CPSC 822/826 students) Q: Why does the transmit routine in the existing code use a spinlock while the recvlock is defined but never used. A: In the existing code all of the receive code runs as a disabled interrupt handler but the transmit interrupt handler may preempt the transmit front end (send5skb) at any point. Q: (not yet asked) Well then, doesn't the existing design have a nasty potential bug when running on an MP. A: Ooops. Quite possibly so! However, for reasons unknown the existing driver seems very robust on an MP. Q: What if I just lock at the start of ia_rfred_handler() and release on return and do the same at the start of ia_host_intr() A: That is actually a safe solution but will not be rewarded with full points because it precludes parallel operation of the two receive tasklets (even though that is achievable only on an MP system (and with a nice tail-wind to boot)). Q: Well then what is the target solution?? A: Try to minmize the amount of locked code. My solution requires two locked blocks .. one in ia_proc_rcv_pkt and one in ia_setup_dma. Q: Will you test this code on an MP. A: No. As I said, developing MP safe code is much more difficult than UP safe code. Since we can't provide MP test platforms for all teams I won't require it.