]> git.baikalelectronics.ru Git - kernel.git/commit
r8169: avoid losing MSI interrupts
authorDavid Dillow <dave@thedillows.org>
Fri, 22 May 2009 15:29:34 +0000 (15:29 +0000)
committerDavid S. Miller <davem@davemloft.net>
Tue, 26 May 2009 05:55:26 +0000 (22:55 -0700)
commitea4c3e10ced9775657698d42a7220d2be18cc330
tree80a6a29154a1af059e6b8d917b7858d6c897b906
parentcd36408a84d6ffd7830d11bab2b45a0cf1e79cc6
r8169: avoid losing MSI interrupts

The 8169 chip only generates MSI interrupts when all enabled event
sources are quiescent and one or more sources transition to active. If
not all of the active events are acknowledged, or a new event becomes
active while the existing ones are cleared in the handler, we will not
see a new interrupt.

The current interrupt handler masks off the Rx and Tx events once the
NAPI handler has been scheduled, which opens a race window in which we
can get another Rx or Tx event and never ACK'ing it, stopping all
activity until the link is reset (ifconfig down/up). Fix this by always
ACK'ing all event sources, and loop in the handler until we have all
sources quiescent.

Signed-off-by: David Dillow <dave@thedillows.org>
Tested-by: Michael Buesch <mb@bu3sch.de>
Signed-off-by: David S. Miller <davem@davemloft.net>
drivers/net/r8169.c