kern/116295: nfe driver hangs on boot (MSI K9N SLI Platinum)
Mark Derbyshire
mark at taom.com
Tue Sep 11 18:30:02 PDT 2007
>Number: 116295
>Category: kern
>Synopsis: nfe driver hangs on boot (MSI K9N SLI Platinum)
>Confidential: no
>Severity: serious
>Priority: medium
>Responsible: freebsd-bugs
>State: open
>Quarter:
>Keywords:
>Date-Required:
>Class: sw-bug
>Submitter-Id: current-users
>Arrival-Date: Wed Sep 12 01:30:02 GMT 2007
>Closed-Date:
>Last-Modified:
>Originator: Mark Derbyshire
>Release: 7-CURRENT/6.2-RELEASE backport
>Organization:
>Environment:
FreeBSD freebsd.taom.com 6.2-RELEASE FreeBSD 6.2-RELEASE #10: Tue Sep 11 17:00:01 MDT 2007 root at freebsd.taom.com:/usr/obj/usr/src/sys/TAOM amd64
>Description:
Driver hangs in an apparent interrupt loop on boot in nfe_int_task with the MSI K9N SLI Platinum motherboard. It seems to work fine on other MCPxx-based boards I tried. If nfe0 is not plugged to a live switch, the boot will succeed. However when nfe0 is plugged into a GbE, full-duplex switch it hangs every time. It does not matter whether nfe1 is plugged in for either of these cases. Revision 1.14 of if_nfe.c does not have this problem. Revision 1.17 appears to have introduced the bug.
>How-To-Repeat:
Plug nfe0 from a MSI K9N SLI Platinum motherboard into a GbE switch and boot the system.
>Fix:
--- if_nfe.c.orig 2007-07-23 19:11:00.000000000 -0600
+++ if_nfe.c 2007-09-11 19:24:58.000000000 -0600
@@ -1930,18 +1930,18 @@
}
#endif
- if ((ifp->if_drv_flags & IFF_DRV_RUNNING) == 0) {
- NFE_UNLOCK(sc);
- nfe_enable_intr(sc);
- return;
- }
-
if (r & NFE_IRQ_LINK) {
NFE_READ(sc, NFE_PHY_STATUS);
NFE_WRITE(sc, NFE_PHY_STATUS, 0xf);
DPRINTF(sc, "link state changed\n");
}
+ if ((ifp->if_drv_flags & IFF_DRV_RUNNING) == 0) {
+ NFE_UNLOCK(sc);
+ nfe_enable_intr(sc);
+ return;
+ }
+
domore = 0;
/* check Rx ring */
if (sc->nfe_framesize > MCLBYTES - ETHER_HDR_LEN)
>Release-Note:
>Audit-Trail:
>Unformatted:
More information about the freebsd-bugs
mailing list