svn commit: r185593 - head/sys/dev/bce

Xin LI delphij at FreeBSD.org
Wed Dec 3 15:00:14 PST 2008


Author: delphij
Date: Wed Dec  3 23:00:00 2008
New Revision: 185593
URL: http://svn.freebsd.org/changeset/base/185593

Log:
  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

Modified:
  head/sys/dev/bce/if_bce.c

Modified: head/sys/dev/bce/if_bce.c
==============================================================================
--- head/sys/dev/bce/if_bce.c	Wed Dec  3 22:47:33 2008	(r185592)
+++ head/sys/dev/bce/if_bce.c	Wed Dec  3 23:00:00 2008	(r185593)
@@ -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) !=


More information about the svn-src-all mailing list