• David Dillow's avatar
    r8169: avoid losing MSI interrupts · f11a377b
    David Dillow authored
    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: default avatarDavid Dillow <dave@thedillows.org>
    Tested-by: default avatarMichael Buesch <mb@bu3sch.de>
    Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
    f11a377b
r8169.c 96 KB