Index: sys/pci/if_rlreg.h =================================================================== --- sys/pci/if_rlreg.h (revision 215020) +++ sys/pci/if_rlreg.h (working copy) @@ -894,6 +894,7 @@ #define RL_FLAG_FASTETHER 0x0100 #define RL_FLAG_CMDSTOP 0x0200 #define RL_FLAG_MACRESET 0x0400 +#define RL_FLAG_PHYWAKEV2 0x0800 #define RL_FLAG_WOLRXENB 0x1000 #define RL_FLAG_MACSLEEP 0x2000 #define RL_FLAG_PCIE 0x4000 Index: sys/dev/re/if_re.c =================================================================== --- sys/dev/re/if_re.c (revision 215025) +++ sys/dev/re/if_re.c (working copy) @@ -1300,13 +1300,16 @@ case RL_HWREV_8101E: sc->rl_flags |= RL_FLAG_NOJUMBO | RL_FLAG_PHYWAKE | RL_FLAG_FASTETHER; + if (hw_rev->rl_rev == RL_HWREV_8101E) + sc->rl_flags |= RL_FLAG_PHYWAKEV2; break; case RL_HWREV_8102E: case RL_HWREV_8102EL: case RL_HWREV_8102EL_SPIN1: sc->rl_flags |= RL_FLAG_NOJUMBO | RL_FLAG_PHYWAKE | - RL_FLAG_PAR | RL_FLAG_DESCV2 | RL_FLAG_MACSTAT | - RL_FLAG_FASTETHER | RL_FLAG_CMDSTOP | RL_FLAG_AUTOPAD; + RL_FLAG_PHYWAKEV2 | RL_FLAG_PAR | RL_FLAG_DESCV2 | + RL_FLAG_MACSTAT | RL_FLAG_FASTETHER | RL_FLAG_CMDSTOP | + RL_FLAG_AUTOPAD; break; case RL_HWREV_8103E: sc->rl_flags |= RL_FLAG_NOJUMBO | RL_FLAG_PHYWAKE | @@ -1437,9 +1440,11 @@ /* Take PHY out of power down mode. */ if ((sc->rl_flags & RL_FLAG_PHYWAKE_PM) != 0) CSR_WRITE_1(sc, RL_PMCH, CSR_READ_1(sc, RL_PMCH) | 0x80); - if ((sc->rl_flags & RL_FLAG_PHYWAKE) != 0) { + if ((sc->rl_flags & (RL_FLAG_PHYWAKE | RL_FLAG_PHYWAKEV2)) != 0) { re_gmii_writereg(dev, 1, 0x1f, 0); - re_gmii_writereg(dev, 1, 0x0e, 0); + re_gmii_writereg(dev, 1, 0x00, 0x1000); + if ((sc->rl_flags & RL_FLAG_PHYWAKEV2) == 0) + re_gmii_writereg(dev, 1, 0x0e, 0); } #define RE_PHYAD_INTERNAL 0