Skip site navigation (1)Skip section navigation (2)
Date:      Tue, 8 Nov 2011 11:53:55 -0700
From:      Jason Wolfe <nitroboost@gmail.com>
To:        Hooman Fazaeli <hoomanfazaeli@gmail.com>
Cc:        pyunyh@gmail.com, freebsd-net@freebsd.org, Jack Vogel <jfvogel@gmail.com>, Emil Muratov <gpm@hotplug.ru>
Subject:   Re: Intel 82574L interface wedging on em 7.1.9/7.2.3 when MSIX enabled
Message-ID:  <CAAAm0r1g=Jgx4REFRWQkhNCYh5M9=hBKK%2Bh5F=Jx7iuZvoTVfQ@mail.gmail.com>
In-Reply-To: <4EB96511.50701@gmail.com>
References:  <CAAAm0r0RXEJo4UiKS=Ui0e5OQTg6sg-xcYf3mYB5%2Bvk8i8557w@mail.gmail.com> <4E8F157A.40702@sentex.net> <CAAAm0r2JH43Rct7UxQK2duH1p43Nepnj5mpb6bXo==DPayhJLg@mail.gmail.com> <4E8F51D4.1060509@sentex.net> <CACqU3MVwLaepFymZJkaVk6p=SpykGhqs=VYFjLh9fP9S=AxDhg@mail.gmail.com> <CAAAm0r1DKvoL9=Ket9up=4%2B5xiCzTTZJK99FhF9jcCA28B0M%2BA@mail.gmail.com> <CAAAm0r3XdsMHZh%2BP_NF-txZasdExzwZ8ymmGQgGhJQds0fOiBQ@mail.gmail.com> <CAAAm0r1iS3z-7CBJ=xYDf%2BJOA1Q2nU0O54Twbyb7FjvgWHjKVw@mail.gmail.com> <4EA7E203.3020306@sepehrs.com> <CAAAm0r3Nr2t8cCetPkFnLQ-3KwqHw_0SpqbtvYPRUkSP=9n8CA@mail.gmail.com> <4EA80818.3030504@sentex.net> <4EA80F88.4000400@hotplug.ru> <4EA82715.2000404@gmail.com> <4EA8FA40.7010504@hotplug.ru> <4EA91836.2040508@gmail.com> <4EA959EE.2070806@hotplug.ru> <4EAD116A.8090006@gmail.com> <CAAAm0r3qm=nQQuAmZDD4k4X8K-xW6_kM9TukRT=1GoG9dYR3zw@mail.gmail.com> <4EAE58A2.9040803@gmail.com> <CAAAm0r0uoPPEQbq5rHkFr6ZLp-WJ4YVjDVvxxV6y%2BUh4eEKDEA@mail.gmail.com> <4EB96511.50701@gmail.com>

next in thread | previous in thread | raw e-mail | index | archive | help
On Tue, Nov 8, 2011 at 10:21 AM, Hooman Fazaeli <hoomanfazaeli@gmail.com>wrote:


> I have allocated more time to the problem and guess I can explain what
> your problem is.
>
> With MSIX disabled, the driver uses fast interrupt handler (em_irq_fast)
> which calls rx/tx task and then checks for link status change. This
> implies that rx/tx task is executed with every link state change. This is
> not efficient, as it is a waste of time to start transmission when link is
> down.
> However, it has the effect that after a temporary link loss
> (active->inactive->active),
> _start is executed and transmission continues normally. The value of
> link_toggles (3)
> clearly indicates that you had such a transition when the problem occured.
>
> With MSIX enabled, the link task (em_handle_link) does _not_ triggers
> _start when the link changes state from inactive to active (which it
> should).
> If if_snd quickly fills up during a temporary link loss, transmission is
> stopped forever and the driver never recovers from that state.
>
> The last patch should have reduced the frequency of the problem
> but it assumes every IFQ_ENQUEUE is followed by a if_start which
> is not a true assumption.
>
> If you are willing to test, I can prepare another patch for you to fix
> the issue in a different and more reliable way.
>
>
Hooman,

Thanks again for the assist, it sounds like this may also be why we see a
bit higher latency with MSI-X disabled on this chipset.

I'm happy to test any patches as I have a handful of boxes set aside to
'research' this issue.  Hopefully the testing here helps along any patches
to the tree for others benefit also.

Jason



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?CAAAm0r1g=Jgx4REFRWQkhNCYh5M9=hBKK%2Bh5F=Jx7iuZvoTVfQ>