Module Name: src
Committed By: msaitoh
Date: Tue Jun 4 16:55:07 UTC 2013
Modified Files:
src/sys/dev/pci: if_wm.c
Log Message:
Fix a bug that the check of reset complete fails on Intel 8 series with
"wm_lan_init_done: lan_init_done failed to complete" message.
The broken code was used for ICH8, 9... and PCH2 but I've never seen the
problem.
To generate a diff of this commit:
cvs rdiff -u -r1.252 -r1.253 src/sys/dev/pci/if_wm.c
Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.
Modified files:
Index: src/sys/dev/pci/if_wm.c
diff -u src/sys/dev/pci/if_wm.c:1.252 src/sys/dev/pci/if_wm.c:1.253
--- src/sys/dev/pci/if_wm.c:1.252 Mon Jun 3 18:47:52 2013
+++ src/sys/dev/pci/if_wm.c Tue Jun 4 16:55:07 2013
@@ -1,4 +1,4 @@
-/* $NetBSD: if_wm.c,v 1.252 2013/06/03 18:47:52 msaitoh Exp $ */
+/* $NetBSD: if_wm.c,v 1.253 2013/06/04 16:55:07 msaitoh Exp $ */
/*
* Copyright (c) 2001, 2002, 2003, 2004 Wasabi Systems, Inc.
@@ -76,7 +76,7 @@
*/
#include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: if_wm.c,v 1.252 2013/06/03 18:47:52 msaitoh Exp $");
+__KERNEL_RCSID(0, "$NetBSD: if_wm.c,v 1.253 2013/06/04 16:55:07 msaitoh Exp $");
#include <sys/param.h>
#include <sys/systm.h>
@@ -4288,16 +4288,15 @@ wm_reset(struct wm_softc *sc)
case WM_T_I210:
case WM_T_I211:
case WM_T_80003:
- case WM_T_ICH8:
- case WM_T_ICH9:
/* check EECD_EE_AUTORD */
wm_get_auto_rd_done(sc);
break;
+ case WM_T_ICH8:
+ case WM_T_ICH9:
case WM_T_ICH10:
case WM_T_PCH:
case WM_T_PCH2:
case WM_T_PCH_LPT:
- wm_lan_init_done(sc);
break;
default:
panic("%s: unknown type\n", __func__);
@@ -5037,13 +5036,15 @@ wm_get_cfg_done(struct wm_softc *sc)
case WM_T_PCH:
case WM_T_PCH2:
case WM_T_PCH_LPT:
- if (sc->sc_type >= WM_T_PCH) {
- reg = CSR_READ(sc, WMREG_STATUS);
- if ((reg & STATUS_PHYRA) != 0)
- CSR_WRITE(sc, WMREG_STATUS,
- reg & ~STATUS_PHYRA);
- }
delay(10*1000);
+ if (sc->sc_type >= WM_T_ICH10)
+ wm_lan_init_done(sc);
+ else
+ wm_get_auto_rd_done(sc);
+
+ reg = CSR_READ(sc, WMREG_STATUS);
+ if ((reg & STATUS_PHYRA) != 0)
+ CSR_WRITE(sc, WMREG_STATUS, reg & ~STATUS_PHYRA);
break;
default:
panic("%s: %s: unknown type\n", device_xname(sc->sc_dev),