Gleb Smirnoff wrote:
glebius     2005-12-28 13:21:05 UTC

  FreeBSD src repository

  Modified files:
sys/dev/dc if_dc.c Log:
  Check for IFF_DRV_RUNNING in the interrupt loop.
Reported & tested by: Martin P. Hansen <mph lima.dyndns.dk> Revision Changes Path
  1.177     +3 -2      src/sys/dev/dc/if_dc.c


Index: src/sys/dev/dc/if_dc.c
diff -u src/sys/dev/dc/if_dc.c:1.176 src/sys/dev/dc/if_dc.c:1.177
--- src/sys/dev/dc/if_dc.c:1.176        Mon Dec  5 12:32:20 2005
+++ src/sys/dev/dc/if_dc.c      Wed Dec 28 13:21:05 2005
@@ -3138,8 +3138,9 @@
        /* Disable interrupts. */
        CSR_WRITE_4(sc, DC_IMR, 0x00000000);
- while (((status = CSR_READ_4(sc, DC_ISR)) & DC_INTRS)
-             && status != 0xFFFFFFFF) {
+       while (((status = CSR_READ_4(sc, DC_ISR)) & DC_INTRS) &&
+           status != 0xFFFFFFFF &&
+           ifp->if_drv_flags & IFF_DRV_RUNNING) {
CSR_WRITE_4(sc, DC_ISR, status);

Need parens around the if_drv_flags check.  This code is broken without it.

--
Nate
_______________________________________________
[email protected] mailing list
http://lists.freebsd.org/mailman/listinfo/cvs-all
To unsubscribe, send any mail to "[EMAIL PROTECTED]"

Reply via email to