Skip site navigation (1)Skip section navigation (2)
Date:      Thu, 16 Aug 2012 14:40:35 -0700
From:      Jack Vogel <jfvogel@gmail.com>
To:        John Baldwin <jhb@freebsd.org>
Cc:        freebsd-net@freebsd.org, Vijay Singh <vijju.singh@gmail.com>
Subject:   Re: ixgbe rx & tx locks
Message-ID:  <CAFOYbc=bXv_V4egO94ftkTFoLQ2uM50Sw3X5kgYoyKQcd0s31A@mail.gmail.com>
In-Reply-To: <201208161736.47250.jhb@freebsd.org>
References:  <CALCNsJSSQSWV7vNVR-Sn8CPDKbUBBLpSH0b-HYMJo3SXvkOY=w@mail.gmail.com> <CAFOYbcm7nzKA3ZR9F8fVLY2Q4839FDOC61PNjwNpQy1WBxL1Hw@mail.gmail.com> <201208160835.53303.jhb@freebsd.org> <201208161736.47250.jhb@freebsd.org>

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



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