Date: Thu, 16 Aug 2012 17:36:47 -0400 From: John Baldwin <jhb@freebsd.org> To: freebsd-net@freebsd.org Cc: Jack Vogel <jfvogel@gmail.com>, Vijay Singh <vijju.singh@gmail.com> Subject: Re: ixgbe rx & tx locks Message-ID: <201208161736.47250.jhb@freebsd.org> In-Reply-To: <201208160835.53303.jhb@freebsd.org> References: <CALCNsJSSQSWV7vNVR-Sn8CPDKbUBBLpSH0b-HYMJo3SXvkOY=w@mail.gmail.com> <CAFOYbcm7nzKA3ZR9F8fVLY2Q4839FDOC61PNjwNpQy1WBxL1Hw@mail.gmail.com> <201208160835.53303.jhb@freebsd.org>
next in thread | previous in thread | raw e-mail | index | archive | help
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
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?201208161736.47250.jhb>