• Jeff Garzik's avatar
    [netdrvr tg3] Better interrupt masking · fd6905e5
    Jeff Garzik authored
    The bcm570x chips provide a register that disables (masks) or enables
    interrupts, and as a side effect, each write to this register regardless 
    of value clears various PCI and internal interrupt-pending flags.  This
    register, intr-mbox-0, provides a superset of the function provided
    by the mask-pci-int and clear-pci-int bits in the misc-host-ctrl register.
    
    Furthermore, the documentation clearly implies use of this register,
    as an indicator that the host [tg3 driver] is in its interrupt handler.
    
    The new tg3 logic, taking this knowledge into account, masks-and-clears
    irqs using intr-mbox-0 [only] when a hard irq is received, and
    unmasks-and-clears irqs at the end of tg3_poll after all NAPI events
    have been exhausted.
    
    The old logic twiddled the misc-host-ctrl irq masking bits separately
    from intr-mbox-0 bits, which was not only inconsistent but also
    a few additional I/Os that were not needed.
    fd6905e5
tg3.c 194 KB