Can you try the attached diff? It has some debug printf's in there, so please send me a dmesg.
Regarding the high interrupt load on the v210; try disconnecting the CD-ROM/DVD-ROM. Index: mii/eephy.c =================================================================== RCS file: /cvs/src/sys/dev/mii/eephy.c,v retrieving revision 1.39 diff -u -p -r1.39 eephy.c --- mii/eephy.c 5 Jan 2007 21:40:45 -0000 1.39 +++ mii/eephy.c 3 Feb 2007 14:10:36 -0000 @@ -133,7 +133,7 @@ eephyattach(struct device *parent, struc struct mii_attach_args *ma = aux; struct mii_data *mii = ma->mii_data; const struct mii_phydesc *mpd; - int reg; + int reg, page; mpd = mii_phy_match(ma, eephys); printf(": %s, rev. %d\n", mpd->mpd_name, MII_REV(ma->mii_id2)); @@ -147,6 +147,33 @@ eephyattach(struct device *parent, struc /* XXX No loopback support yet, although the hardware can do it. */ sc->mii_flags |= MIIF_NOLOOP; + + { + int i; + for (i = 0; i < 32; i++) + printf("%d: 0x%04x\n", i, PHY_READ(sc, i)); + } + + /* Switch to fiber-only mode if necessary. */ + if (sc->mii_model == MII_MODEL_MARVELL_E1112 && + sc->mii_flags & MIIF_HAVEFIBER) { + page = PHY_READ(sc, E1000_EADR); + PHY_WRITE(sc, E1000_EADR, 2); + reg = PHY_READ(sc, E1000_SCR); + printf("16_2: 0x%04x\n", reg); + reg &= ~E1000_SCR_MODE_MASK; + reg |= E1000_SCR_MODE_1000BX; + PHY_WRITE(sc, E1000_SCR, reg); + PHY_WRITE(sc, E1000_EADR, page); + + PHY_RESET(sc); + } + + { + int i; + for (i = 0; i < 32; i++) + printf("%d: 0x%04x\n", i, PHY_READ(sc, i)); + } sc->mii_capabilities = PHY_READ(sc, E1000_SR) & ma->mii_capmask; if (sc->mii_capabilities & BMSR_EXTSTAT) Index: pci/if_msk.c =================================================================== RCS file: /cvs/src/sys/dev/pci/if_msk.c,v retrieving revision 1.43 diff -u -p -r1.43 if_msk.c --- pci/if_msk.c 3 Feb 2007 12:50:26 -0000 1.43 +++ pci/if_msk.c 3 Feb 2007 14:10:37 -0000 @@ -1071,6 +1071,14 @@ msk_attach(struct device *parent, struct ifp->if_capabilities = IFCAP_VLAN_MTU; + /* GMAC and GPHY Reset */ + SK_IF_WRITE_4(sc_if, 0, SK_GMAC_CTRL, SK_GMAC_RESET_SET); + SK_IF_WRITE_4(sc_if, 0, SK_GPHY_CTRL, SK_GPHY_RESET_SET); + DELAY(1000); + SK_IF_WRITE_4(sc_if, 0, SK_GPHY_CTRL, SK_GPHY_RESET_CLEAR); + SK_IF_WRITE_4(sc_if, 0, SK_GMAC_CTRL, SK_GMAC_LOOP_OFF | + SK_GMAC_PAUSE_ON | SK_GMAC_RESET_CLEAR); + /* * Do miibus setup. */ @@ -1086,7 +1094,7 @@ msk_attach(struct device *parent, struct ifmedia_init(&sc_if->sk_mii.mii_media, 0, msk_ifmedia_upd, msk_ifmedia_sts); mii_attach(self, &sc_if->sk_mii, 0xffffffff, MII_PHY_ANY, - MII_OFFSET_ANY, MIIF_DOPAUSE|MIIF_FORCEANEG); + MII_OFFSET_ANY, MIIF_DOPAUSE|MIIF_HAVEFIBER); if (LIST_FIRST(&sc_if->sk_mii.mii_phys) == NULL) { printf("%s: no PHY found!\n", sc_if->sk_dev.dv_xname); ifmedia_add(&sc_if->sk_mii.mii_media, IFM_ETHER|IFM_MANUAL, @@ -1275,6 +1283,8 @@ mskc_attach(struct device *parent, struc sc->sk_ramsize, sc->sk_ramsize / 1024, sc->sk_rboff)); + printf("pmdtype: %c\n", sk_win_read_1(sc, SK_PMDTYPE)); + switch (sc->sk_type) { case SK_YUKON_XL: sc->sk_name = "Yukon-2 XL"; @@ -1838,6 +1848,7 @@ msk_init_yukon(struct sk_if_softc *sc_if DPRINTFN(6, ("msk_init_yukon: 1\n")); +#if 0 /* GMAC and GPHY Reset */ SK_IF_WRITE_4(sc_if, 0, SK_GMAC_CTRL, SK_GMAC_RESET_SET); SK_IF_WRITE_4(sc_if, 0, SK_GPHY_CTRL, SK_GPHY_RESET_SET); @@ -1848,6 +1859,7 @@ msk_init_yukon(struct sk_if_softc *sc_if SK_IF_WRITE_4(sc_if, 0, SK_GPHY_CTRL, SK_GPHY_RESET_CLEAR); SK_IF_WRITE_4(sc_if, 0, SK_GMAC_CTRL, SK_GMAC_LOOP_OFF | SK_GMAC_PAUSE_ON | SK_GMAC_RESET_CLEAR); +#endif DPRINTFN(3, ("msk_init_yukon: gmac_ctrl=%#x\n", SK_IF_READ_4(sc_if, 0, SK_GMAC_CTRL)));