Index: main/Cumulus/drivers/freebsd/if_bnxt.c =================================================================== --- main/Cumulus/drivers/freebsd/if_bnxt.c +++ main/Cumulus/drivers/freebsd/if_bnxt.c @@ -2229,30 +2229,15 @@ NULL); break; case HWRM_PORT_PHY_QCFG_OUTPUT_PHY_TYPE_UNKNOWN: + /* + * If cable is not plugged in, just use AUTO mode. + * Once link is up, populate proper list of supported speeds. + * Just adding debug message here to notify user + */ + device_printf(softc->dev, "INFORMATION: Unknown Phy type\n"); + break; default: - /* - * Workaround for Cumulus & Stratus - * For Stratus: - * media_type is being returned as 0x0 - * Return support speeds as 10G, 25G, 50G & 100G - * - * For Cumulus: - * phy_type is being returned as 0x14 (PHY_TYPE_40G_BASECR4) - * Return support speeds as 1G, 10G, 25G & 50G - */ - if (pci_get_device(softc->dev) == BCM57454) { - /* For Stratus: 10G, 25G, 50G & 100G */ - ifmedia_add(softc->media, IFM_ETHER | IFM_100G_CR4, 0, NULL); - ifmedia_add(softc->media, IFM_ETHER | IFM_50G_CR2, 0, NULL); - ifmedia_add(softc->media, IFM_ETHER | IFM_25G_CR, 0, NULL); - ifmedia_add(softc->media, IFM_ETHER | IFM_10G_CR1, 0, NULL); - } else if (pci_get_device(softc->dev) == BCM57414) { - /* For Cumulus: 1G, 10G, 25G & 50G */ - ifmedia_add(softc->media, IFM_ETHER | IFM_50G_CR2, 0, NULL); - ifmedia_add(softc->media, IFM_ETHER | IFM_25G_CR, 0, NULL); - ifmedia_add(softc->media, IFM_ETHER | IFM_10G_CR1, 0, NULL); - ifmedia_add(softc->media, IFM_ETHER | IFM_1000_T, 0, NULL); - } + device_printf(softc->dev, "ERROR: Invalid Phy type\n"); break; } @@ -2391,6 +2376,10 @@ softc->link_info.last_link_up = softc->link_info.link_up; softc->link_info.last_pause = softc->link_info.pause; softc->link_info.last_duplex = softc->link_info.duplex; + /* update media types */ + ifmedia_removeall(softc->media); + bnxt_add_media_types(softc); + ifmedia_set(softc->media, IFM_ETHER | IFM_AUTO); } static int