Read the code in HEAD, em_local_timer() has a test of ALL the rx queues and will schedule a task that refreshes mbufs if they are empty. This has exactly the same effect as checking for some interrupt cause, a cause that is not available when using MSIX on 82574, but this approach works for everything.
Jack On Wed, Mar 30, 2011 at 10:55 AM, Arnaud Lacombe <lacom...@gmail.com> wrote: > Hi, > > On Wed, Mar 30, 2011 at 1:12 PM, Jack Vogel <jfvo...@gmail.com> wrote: > > The code that got put in the driver has a response to this "unrecoverable > > situation", you've flamed me and the code, but you've not demonstrated it > > does not work. > > > I did, in "Message-ID: > <aanlktikq+ccb5jupnc8symc6c6ycpmsk-wtopikr2...@mail.gmail.com>". If > you want to talk code, please tell me where I was wrong. > > To sum up, the current code relies on em_rxeof() to refresh mbufs. > This path is triggered on RX interrupt which never happen if the RX > ring is empty. Now the question I ask you is technical, no criticize > at all of any kind: how do you refresh the mbufs' ring if no RX > interrupt is ever triggered because the card has no descriptor left at > all in its ring ? > > Regards, > - Arnaud > _______________________________________________ freebsd-net@freebsd.org mailing list http://lists.freebsd.org/mailman/listinfo/freebsd-net To unsubscribe, send any mail to "freebsd-net-unsubscr...@freebsd.org"