Module Name: src Committed By: msaitoh Date: Thu Jun 27 09:57:49 UTC 2013
Modified Files: src/sys/dev/pci: if_wm.c Log Message: Move the location of wm_check_mng_mode() and wm_get_wakeup() in wm_attach(). Those functions access EEPROM, so they have to call after identifying EEPROM access type. This modification may change the behavior of BMC(IPMI). To generate a diff of this commit: cvs rdiff -u -r1.260 -r1.261 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.260 src/sys/dev/pci/if_wm.c:1.261 --- src/sys/dev/pci/if_wm.c:1.260 Tue Jun 25 17:38:38 2013 +++ src/sys/dev/pci/if_wm.c Thu Jun 27 09:57:49 2013 @@ -1,4 +1,4 @@ -/* $NetBSD: if_wm.c,v 1.260 2013/06/25 17:38:38 msaitoh Exp $ */ +/* $NetBSD: if_wm.c,v 1.261 2013/06/27 09:57:49 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.260 2013/06/25 17:38:38 msaitoh Exp $"); +__KERNEL_RCSID(0, "$NetBSD: if_wm.c,v 1.261 2013/06/27 09:57:49 msaitoh Exp $"); #include <sys/param.h> #include <sys/systm.h> @@ -1244,8 +1244,6 @@ wm_attach(device_t parent, device_t self return; } - wm_get_wakeup(sc); - /* * In addition, i82544 and later support I/O mapped indirect * register access. It is not desirable (nor supported in @@ -1540,26 +1538,6 @@ wm_attach(device_t parent, device_t self */ wm_reset(sc); - switch (sc->sc_type) { - case WM_T_82571: - case WM_T_82572: - case WM_T_82573: - case WM_T_82574: - case WM_T_82583: - case WM_T_80003: - 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: - if (wm_check_mng_mode(sc) != 0) - wm_get_hw_control(sc); - break; - default: - break; - } - /* * Get some information about the EEPROM. */ @@ -1696,6 +1674,28 @@ wm_attach(device_t parent, device_t self sc->sc_ee_addrbits, eetype); } + switch (sc->sc_type) { + case WM_T_82571: + case WM_T_82572: + case WM_T_82573: + case WM_T_82574: + case WM_T_82583: + case WM_T_80003: + 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: + if (wm_check_mng_mode(sc) != 0) { + printf ("get hw control (1)\n"); + wm_get_hw_control(sc); + } + break; + default: + break; + } + wm_get_wakeup(sc); /* * Read the Ethernet address from the EEPROM, if not first found * in device properties. @@ -7983,8 +7983,8 @@ wm_enable_mng_pass_thru(struct wm_softc factps = CSR_READ(sc, WMREG_FACTPS); wm_read_eeprom(sc, EEPROM_OFF_CFG2, 1, &data); - DPRINTF(WM_DEBUG_MANAGE, ("%s: CFG2 (%04x)\n", - device_xname(sc->sc_dev), data)); + DPRINTF(WM_DEBUG_MANAGE, ("%s: FACTPS = %08x, CFG2=%04x\n", + device_xname(sc->sc_dev), factps, data)); if (((factps & FACTPS_MNGCG) == 0) && ((data & EEPROM_CFG2_MNGM_MASK) == (EEPROM_CFG2_MNGM_PT << EEPROM_CFG2_MNGM_SHIFT)))