Index: sys/dev/mii/miidevs =================================================================== --- sys/dev/mii/miidevs +++ sys/dev/mii/miidevs @@ -330,6 +330,7 @@ model REALTEK RTL8201E 0x0008 RTL8201E 10/100 media interface model REALTEK RTL8251 0x0000 RTL8251/8153 1000BASE-T media interface model REALTEK RTL8169S 0x0011 RTL8169S/8110S/8211 1000BASE-T media interface +model REALTEK RTL8211FVD 0x0007 RTL8211F-VD 1000BASE-T media interface /* Seeq Seeq PHYs */ model SEEQ 80220 0x0003 Seeq 80220 10/100 media interface Index: sys/dev/mii/rgephy.c =================================================================== --- sys/dev/mii/rgephy.c +++ sys/dev/mii/rgephy.c @@ -93,6 +93,7 @@ static const struct mii_phydesc rgephys[] = { MII_PHY_DESC(REALTEK, RTL8169S), MII_PHY_DESC(REALTEK, RTL8251), + MII_PHY_DESC(REALTEK, RTL8211FVD), MII_PHY_END }; @@ -283,7 +284,7 @@ linkup = 0; if ((sc->mii_flags & MIIF_PHYPRIV0) == 0 && sc->mii_mpd_rev >= RGEPHY_8211B) { - if (sc->mii_mpd_rev == RGEPHY_8211F) { + if (sc->mii_mpd_rev >= RGEPHY_8211F) { reg = PHY_READ(sc, RGEPHY_F_MII_SSR); if (reg & RGEPHY_F_SSR_LINK) linkup++; @@ -338,7 +339,7 @@ if ((sc->mii_flags & MIIF_PHYPRIV0) == 0 && sc->mii_mpd_rev >= RGEPHY_8211B) { - if (sc->mii_mpd_rev == RGEPHY_8211F) { + if (sc->mii_mpd_rev >= RGEPHY_8211F) { ssr = PHY_READ(sc, RGEPHY_F_MII_SSR); switch (ssr & RGEPHY_F_SSR_SPD_MASK) { case RGEPHY_F_SSR_S1000: @@ -523,6 +524,7 @@ switch (sc->mii_mpd_rev) { case RGEPHY_8211F: + case RGEPHY_8211FVD: pcr = PHY_READ(sc, RGEPHY_F_MII_PCR1); pcr &= ~(RGEPHY_F_PCR1_MDI_MM | RGEPHY_F_PCR1_ALDPS_EN); PHY_WRITE(sc, RGEPHY_F_MII_PCR1, pcr); Index: sys/dev/mii/rgephyreg.h =================================================================== --- sys/dev/mii/rgephyreg.h +++ sys/dev/mii/rgephyreg.h @@ -38,6 +38,7 @@ #define RGEPHY_8211B 2 #define RGEPHY_8211C 3 #define RGEPHY_8211F 6 +#define RGEPHY_8211FVD 8 /* * RealTek 8169S/8110S gigE PHY registers