--- a/sys/dev/netif/mii_layer/truephy.c +++ b/sys/dev/netif/mii_layer/truephy.c @@ -169,9 +169,21 @@ device_printf(dev, " "); if ((sc->mii_capabilities & BMSR_MEDIAMASK) == 0 && - (sc->mii_extcapabilities & EXTSR_MEDIAMASK) == 0) + (sc->mii_extcapabilities & EXTSR_MEDIAMASK) == 0) { kprintf("no media present"); - else + /* + * DF-5003: add an explicit fallback media entry so that + * miibus_mediainit()'s ifmedia_set() (mii.c) finds a match + * instead of panicking ("ifmedia_set: no match"). + * mii_phy_add_media()'s own IFM_NONE fallback cannot be + * used here: it is gated on MIIF_NOISOLATE being clear + * (mii_physubr.c) and this driver always sets + * MIIF_NOISOLATE (see above). + */ + ifmedia_add(&mii->mii_media, + IFM_MAKEWORD(IFM_ETHER, IFM_NONE, 0, sc->mii_inst), + MII_MEDIA_NONE, NULL); + } else mii_phy_add_media(sc); kprintf("\n");