On Thu, Aug 03, 2006 at 05:09:57PM -0700, Michael Chan wrote: > > tg3_start_xmit() > > if (tx_ring_empty) > <- tg3_tx() > netif_stop_queue()
Good point. I missed that. However, this only goes to show that even the current code (e1000 that is, I haven't checked tg3) is also unsafe. Why? Because the tx_lock is only taken in e1000_clean_tx_irq if the queue is stopped. As you can see in your diagram above, the queue could well be awake at the point where e1000_clean_tx_irq runs. So we need to fix e1000 anyway. Cheers, -- Visit Openswan at http://www.openswan.org/ Email: Herbert Xu ~{PmV>HI~} <[EMAIL PROTECTED]> Home Page: http://gondor.apana.org.au/~herbert/ PGP Key: http://gondor.apana.org.au/~herbert/pubkey.txt - To unsubscribe from this list: send the line "unsubscribe netdev" in the body of a message to [EMAIL PROTECTED] More majordomo info at http://vger.kernel.org/majordomo-info.html