With this commit..
CVSROOT: /cvs
Module name: src
Changes by: [email protected] 2011/04/14 15:06:38
Modified files:
sys/dev/ic : re.c rtl81x9reg.h
Log message:
Add several additional adapter types and correct definition of
RTL8103E, from FreeBSD.
support was added for the RTL8105E and RTL8401E chipsets
as well as the RTL8168E VL chipset. This fixes the missing
RL_FLAG_INVMAR flag for these chipsets so that multicast
will work and adds the missing PHY wake up code for the
8401E chipset.
Index: re.c
===================================================================
RCS file: /home/cvs/src/sys/dev/ic/re.c,v
retrieving revision 1.135
diff -u -p -r1.135 re.c
--- re.c 14 Apr 2011 21:06:37 -0000 1.135
+++ re.c 8 Jun 2011 00:55:13 -0000
@@ -841,9 +841,9 @@ re_attach(struct rl_softc *sc, const cha
break;
case RL_HWREV_8401E:
case RL_HWREV_8105E:
- sc->rl_flags |= RL_FLAG_PHYWAKE | RL_FLAG_PHYWAKE_PM |
- RL_FLAG_PAR | RL_FLAG_DESCV2 | RL_FLAG_MACSTAT |
- RL_FLAG_CMDSTOP | RL_FLAG_AUTOPAD;
+ sc->rl_flags |= RL_FLAG_INVMAR | RL_FLAG_PHYWAKE |
+ RL_FLAG_PHYWAKE_PM | RL_FLAG_PAR | RL_FLAG_DESCV2 |
+ RL_FLAG_MACSTAT | RL_FLAG_CMDSTOP | RL_FLAG_AUTOPAD;
break;
case RL_HWREV_8168_SPIN1:
case RL_HWREV_8168_SPIN2:
@@ -880,9 +880,9 @@ re_attach(struct rl_softc *sc, const cha
RL_FLAG_AUTOPAD | RL_FLAG_NOJUMBO;
break;
case RL_HWREV_8168E_VL:
- sc->rl_flags |= RL_FLAG_PHYWAKE | RL_FLAG_PAR |
- RL_FLAG_DESCV2 | RL_FLAG_MACSTAT | RL_FLAG_CMDSTOP |
- RL_FLAG_AUTOPAD | RL_FLAG_NOJUMBO;
+ sc->rl_flags |= RL_FLAG_INVMAR | RL_FLAG_PHYWAKE |
+ RL_FLAG_PAR | RL_FLAG_DESCV2 | RL_FLAG_MACSTAT |
+ RL_FLAG_CMDSTOP | RL_FLAG_AUTOPAD | RL_FLAG_NOJUMBO;
break;
case RL_HWREV_8169_8110SB:
case RL_HWREV_8169_8110SBL:
@@ -1145,8 +1145,11 @@ re_attach(struct rl_softc *sc, const cha
timeout_set(&sc->timer_handle, re_tick, sc);
/* Take PHY out of power down mode. */
- if (sc->rl_flags & RL_FLAG_PHYWAKE_PM)
+ if (sc->rl_flags & RL_FLAG_PHYWAKE_PM) {
CSR_WRITE_1(sc, RL_PMCH, CSR_READ_1(sc, RL_PMCH) | 0x80);
+ if (sc->sc_hwrev == RL_HWREV_8401E)
+ CSR_WRITE_1(sc, 0xD1, CSR_READ_1(sc, 0xD1) & ~0x08);
+ }
if (sc->rl_flags & RL_FLAG_PHYWAKE) {
re_gmii_writereg((struct device *)sc, 1, 0x1f, 0);
re_gmii_writereg((struct device *)sc, 1, 0x0e, 0);
--
This message has been scanned for viruses and
dangerous content by MailScanner, and is
believed to be clean.