On Monday, August 13, 2012 6:17:53 pm Jack Vogel wrote:
> After looking at the code again I think this is just what's happening,
> mq_start
> will schedule the task when it can't get the lock (due to the interrupt
> already
> holding it presumeably), so you get the tasklet code in contention with the
> interrupt.
> 
> Anyone with a clever notion of how to do things better?

Are you queueing a task that does both RX and TX?  That was a bug I fixed
in igb that caused out-of-order packet processing for RX with igb.  igb
uses a smaller task for when it's start routine fails that only tries to
restart transmission but doesn't do fullblown interrupt handling.

Here's a possible patch (compiles, not run-tested) to implement this for 
ixgbe:

http://www.FreeBSD.org/~jhb/patches/ixgbe_txq_task.patch

-- 
John Baldwin
_______________________________________________
freebsd-net@freebsd.org mailing list
http://lists.freebsd.org/mailman/listinfo/freebsd-net
To unsubscribe, send any mail to "freebsd-net-unsubscr...@freebsd.org"

Reply via email to