Skip site navigation (1)Skip section navigation (2)
Date:      Thu, 16 Aug 2012 08:35:53 -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:  <201208160835.53303.jhb@freebsd.org>
In-Reply-To: <CAFOYbcm7nzKA3ZR9F8fVLY2Q4839FDOC61PNjwNpQy1WBxL1Hw@mail.gmail.com>
References:  <CALCNsJSSQSWV7vNVR-Sn8CPDKbUBBLpSH0b-HYMJo3SXvkOY=w@mail.gmail.com> <CAFOYbc=i=59hXDUUyac4JORw-189=LHqXzNF8XKZh3Zwdm7tdA@mail.gmail.com> <CAFOYbcm7nzKA3ZR9F8fVLY2Q4839FDOC61PNjwNpQy1WBxL1Hw@mail.gmail.com>

next in thread | previous in thread | raw e-mail | index | archive | help
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



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?201208160835.53303.jhb>