Don't attempt to clear status updates if we did not do a link state
change. As a side effect, this makes the excessive interrupts to disappear which has been observed as a regression in recent stable/7. Reported by: many (on -stable@) Reviewed by: davidch
This commit is contained in:
parent
3cdf485f87
commit
2dd5c73163
@ -7030,13 +7030,14 @@ bce_intr(void *xsc)
|
||||
|
||||
/* Was it a link change interrupt? */
|
||||
if ((status_attn_bits & STATUS_ATTN_BITS_LINK_STATE) !=
|
||||
(sc->status_block->status_attn_bits_ack & STATUS_ATTN_BITS_LINK_STATE))
|
||||
(sc->status_block->status_attn_bits_ack & STATUS_ATTN_BITS_LINK_STATE)) {
|
||||
bce_phy_intr(sc);
|
||||
|
||||
/* Clear any transient status updates during link state change. */
|
||||
REG_WR(sc, BCE_HC_COMMAND,
|
||||
sc->hc_command | BCE_HC_COMMAND_COAL_NOW_WO_INT);
|
||||
REG_RD(sc, BCE_HC_COMMAND);
|
||||
/* Clear any transient status updates during link state change. */
|
||||
REG_WR(sc, BCE_HC_COMMAND,
|
||||
sc->hc_command | BCE_HC_COMMAND_COAL_NOW_WO_INT);
|
||||
REG_RD(sc, BCE_HC_COMMAND);
|
||||
}
|
||||
|
||||
/* If any other attention is asserted then the chip is toast. */
|
||||
if (((status_attn_bits & ~STATUS_ATTN_BITS_LINK_STATE) !=
|
||||
|
Loading…
Reference in New Issue
Block a user