DF-3671 / fix.diff
--- a/sys/dev/netif/ix/ixgbe_common.c +++ b/sys/dev/netif/ix/ixgbe_common.c @@ -275,8 +275,12 @@ break; case ixgbe_media_type_copper: - hw->phy.ops.read_reg(hw, IXGBE_MDIO_AUTO_NEG_ADVT, - IXGBE_MDIO_AUTO_NEG_DEV_TYPE, ®_cu); + if (hw->phy.ops.read_reg(hw, IXGBE_MDIO_AUTO_NEG_ADVT, + IXGBE_MDIO_AUTO_NEG_DEV_TYPE, + ®_cu)) { + ret_val = IXGBE_ERR_PHY; + goto out; + } break; default: break; @@ -618,14 +622,18 @@ if (hw->mac.type == ixgbe_mac_X550 || hw->mac.type == ixgbe_mac_X540) { if (hw->phy.id == 0) ixgbe_identify_phy(hw); - hw->phy.ops.read_reg(hw, IXGBE_PCRC8ECL, - IXGBE_MDIO_PCS_DEV_TYPE, &i); - hw->phy.ops.read_reg(hw, IXGBE_PCRC8ECH, - IXGBE_MDIO_PCS_DEV_TYPE, &i); - hw->phy.ops.read_reg(hw, IXGBE_LDPCECL, - IXGBE_MDIO_PCS_DEV_TYPE, &i); - hw->phy.ops.read_reg(hw, IXGBE_LDPCECH, - IXGBE_MDIO_PCS_DEV_TYPE, &i); + if (hw->phy.ops.read_reg(hw, IXGBE_PCRC8ECL, + IXGBE_MDIO_PCS_DEV_TYPE, &i)) + return IXGBE_ERR_PHY; + if (hw->phy.ops.read_reg(hw, IXGBE_PCRC8ECH, + IXGBE_MDIO_PCS_DEV_TYPE, &i)) + return IXGBE_ERR_PHY; + if (hw->phy.ops.read_reg(hw, IXGBE_LDPCECL, + IXGBE_MDIO_PCS_DEV_TYPE, &i)) + return IXGBE_ERR_PHY; + if (hw->phy.ops.read_reg(hw, IXGBE_LDPCECH, + IXGBE_MDIO_PCS_DEV_TYPE, &i)) + return IXGBE_ERR_PHY; } return IXGBE_SUCCESS; @@ -3080,12 +3098,14 @@ u16 technology_ability_reg = 0; u16 lp_technology_ability_reg = 0; - hw->phy.ops.read_reg(hw, IXGBE_MDIO_AUTO_NEG_ADVT, - IXGBE_MDIO_AUTO_NEG_DEV_TYPE, - &technology_ability_reg); - hw->phy.ops.read_reg(hw, IXGBE_MDIO_AUTO_NEG_LP, - IXGBE_MDIO_AUTO_NEG_DEV_TYPE, - &lp_technology_ability_reg); + if (hw->phy.ops.read_reg(hw, IXGBE_MDIO_AUTO_NEG_ADVT, + IXGBE_MDIO_AUTO_NEG_DEV_TYPE, + &technology_ability_reg)) + return IXGBE_ERR_PHY; + if (hw->phy.ops.read_reg(hw, IXGBE_MDIO_AUTO_NEG_LP, + IXGBE_MDIO_AUTO_NEG_DEV_TYPE, + &lp_technology_ability_reg)) + return IXGBE_ERR_PHY; return ixgbe_negotiate_fc(hw, (u32)technology_ability_reg, (u32)lp_technology_ability_reg, @@ -4435,7 +4455,9 @@ { DEBUGFUNC("ixgbe_get_device_caps_generic"); - hw->eeprom.ops.read(hw, IXGBE_DEVICE_CAPS, device_caps); + *device_caps = 0; + if (hw->eeprom.ops.read(hw, IXGBE_DEVICE_CAPS, device_caps)) + return IXGBE_ERR_EEPROM; return IXGBE_SUCCESS; } |