diff --git a/sys/dev/bxe/bxe.c b/sys/dev/bxe/bxe.c --- a/sys/dev/bxe/bxe.c +++ b/sys/dev/bxe/bxe.c @@ -13865,9 +13865,16 @@ port_type = PORT_FIBRE; break; case ELINK_ETH_PHY_SFP_1G_FIBER: - BLOGI(sc, "Found 1Gb Fiber media.\n"); - sc->media = IFM_1000_SX; - port_type = PORT_FIBRE; + if (sc->link_params.speed_cap_mask[0] & + PORT_HW_CFG_SPEED_CAPABILITY_D0_2_5G) { + BLOGI(sc, "Found 2500base-X Fiber media.\n"); + sc->media = IFM_2500_X; + port_type = PORT_FIBRE; + } else { + BLOGI(sc, "Found 1Gb Fiber media.\n"); + sc->media = IFM_1000_SX; + port_type = PORT_FIBRE; + } break; case ELINK_ETH_PHY_KR: case ELINK_ETH_PHY_CX4: diff --git a/sys/dev/bxe/bxe_elink.c b/sys/dev/bxe/bxe_elink.c --- a/sys/dev/bxe/bxe_elink.c +++ b/sys/dev/bxe/bxe_elink.c @@ -9084,7 +9084,8 @@ (val[ELINK_SFP_EEPROM_1G_COMP_CODE_ADDR] != 0)) { ELINK_DEBUG_P0(sc, "1G SFP module detected\n"); phy->media_type = ELINK_ETH_PHY_SFP_1G_FIBER; - if (phy->req_line_speed != ELINK_SPEED_1000) { + if ((phy->req_line_speed != ELINK_SPEED_1000) && + (phy->req_line_speed != ELINK_SPEED_2500)) { uint8_t gport = params->port; phy->req_line_speed = ELINK_SPEED_1000; if (!CHIP_IS_E1x(sc)) { @@ -13069,6 +13070,7 @@ break; case PORT_HW_CFG_NET_SERDES_IF_SFI: phy->supported &= (ELINK_SUPPORTED_1000baseT_Full | + ELINK_SUPPORTED_2500baseX_Full | ELINK_SUPPORTED_10000baseT_Full | ELINK_SUPPORTED_FIBRE | ELINK_SUPPORTED_Pause |