ixgbe rx & tx locks

John Baldwin jhb at freebsd.org
Thu Aug 16 13:14:10 UTC 2012


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


More information about the freebsd-net mailing list