Skip site navigation (1)Skip section navigation (2)
Date:      Mon, 28 Jan 2013 08:04:39 +0100
From:      Luigi Rizzo <rizzo@iet.unipi.it>
To:        Vijay Singh <vijju.singh@gmail.com>
Cc:        net@freebsd.org
Subject:   Re: ixgbe & msi/x
Message-ID:  <20130128070439.GB85353@onelab2.iet.unipi.it>
In-Reply-To: <CALCNsJRdwKKB5DwRAFmenXkY8u8bmBh7QTjyrjqf_Q1HDw%2B3QQ@mail.gmail.com>
References:  <CALCNsJRdwKKB5DwRAFmenXkY8u8bmBh7QTjyrjqf_Q1HDw%2B3QQ@mail.gmail.com>

next in thread | previous in thread | raw e-mail | index | archive | help
On Sun, Jan 27, 2013 at 10:39:53PM -0800, Vijay Singh wrote:
> I am investigating an issue where the ixgbe (82599) device is hung and
> I think I have traced it to the driver not getting interrupts. I have
> MSI/X enabled, with 2 rx/tx queues.

just curious, is this happening under behyve or also native,
and is it always occurring or it is occasional ?

I am asking because with netmap when i tried to exploit interrupt
mitigation (strictly processing incoming traffic only on rx
interrupts) i noticed packet drops even at relatively low rates,
which made me suspect that interrupts were either lost or heavily
delayed.

I did not pursue the problem and implemented a workaround (peek at the
ring before blocking -- there is a netmap sysctl that controls that),
but in light of your comment it might be interesting to investigate
the problem again. It could be also worthwhile to compare netmap
behaviour under FreeBSD and linux to see if the problem appears
only on one platform (hence pointing out a driver issue) or
on both (in which case no conclusion can be drawn).

cheers
luigi

> I am trying to understand this bit of code in the MSI/X setup:
> 
>         if (ixgbe_enable_msix)  {
>                 ixgbe_configure_ivars(adapter);
>                 /* Set up auto-mask */                <<== THIS BIT
>                 if (hw->mac.type == ixgbe_mac_82598EB)
>                         IXGBE_WRITE_REG(hw, IXGBE_EIAM, IXGBE_EICS_RTX_QUEUE);
>                 else {
>                         IXGBE_WRITE_REG(hw, IXGBE_EIAM_EX(0), 0xFFFFFFFF);
>                         IXGBE_WRITE_REG(hw, IXGBE_EIAM_EX(1), 0xFFFFFFFF);
>                 }
>         }
> 
> Does this mean that ixgbe_disable_queue() is not needed in the msi/x
> interrupt handler - ixgbe_msix_que()?
> 
> -vijay
> _______________________________________________
> freebsd-net@freebsd.org mailing list
> http://lists.freebsd.org/mailman/listinfo/freebsd-net
> To unsubscribe, send any mail to "freebsd-net-unsubscribe@freebsd.org"



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