Intel 82574L interface wedging on em 7.1.9/7.2.3 when MSIX
hoomanfazaeli at gmail.com
Wed Nov 9 08:55:08 UTC 2011
On 11/8/2011 10:23 PM, Jason Wolfe wrote:
> On Tue, Nov 8, 2011 at 10:21 AM, Hooman Fazaeli <hoomanfazaeli at gmail.com <mailto:hoomanfazaeli at 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.
> 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.
Latency may or may not be related. I am doing more tests and will post
my findings soon.
More information about the freebsd-net