Thanks John, am seeing this, just busy on another matter, will get to it asap.
Jack On Thu, Aug 16, 2012 at 2:36 PM, John Baldwin <j...@freebsd.org> wrote: > On Thursday, August 16, 2012 8:35:53 am John Baldwin wrote: > > 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 > > Actually, it looks like recent changes to the watchdog handling have > reintroduced a variant of this bug. They schedule the full RX/TX task > to run anytime the timer fires and there are pending TX completions > that are in progress. This seems a bit odd as in the normal case you > will get a TX completion interrupt once there is something to do. OTOH, > it adds another instance of duplicate RX processing which is much worse > than what this is trying to fix. I've updated this patch to disable > that bit of the watchdog handler in both igb and ixgbe: > > http://www.FreeBSD.org/~jhb/patches/ixgbe_txq_task2.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"