I still have one concern with the LLTX code (and it may be that the correct patch is Jamal's) :
Without LLTX we do : lock(queue_lock), lock(xmit_lock), release(queue_lock), release(xmit_lock). With LLTX (without Jamal's patch) we do : lock(queue_lock), release(queue_lock), lock(tx_lock), release(tx_lock). LLTX doesn't look correct because it creates a race condition window between the the two lock-protected sections. So you may want to reconsider Jamal's patch or pull out LLTX...
You're right, it can cause packet reordering if something like this happens:
CPU1 CPU2
lock(queue_lock)
dequeue
unlock(queue_lock)
lock(queue_lock)
dequeue
unlock(queue_lock)
lock(xmit_lock)
hard_start_xmit
unlock(xmit_lock)
lock(xmit_lock)
hard_start_xmit
unlock(xmit_lock)Jamal's patch should fix this.
Regards Patrick _______________________________________________ openib-general mailing list [email protected] http://openib.org/mailman/listinfo/openib-general
To unsubscribe, please visit http://openib.org/mailman/listinfo/openib-general
