DF-3725 / fix.diff
--- a/sys/dev/netif/ix/ixgbe_x550.c +++ b/sys/dev/netif/ix/ixgbe_x550.c @@ -1810,6 +1810,8 @@ return rc; rc = ixgbe_restart_an_internal_phy_x550em(hw); + if (rc) + return rc; return hw->phy.ops.setup_link_speed(hw, speed, autoneg_wait); } @@ -2697,6 +2699,8 @@ status = mac->ops.write_iosf_sb_reg(hw, IXGBE_KRM_PMD_FLX_MASK_ST20(hw->bus.lan_id), IXGBE_SB_IOSF_TARGET_KR_PHY, reg_val); + if (status != IXGBE_SUCCESS) + return status; /* Toggle port SW reset by AN reset. */ status = ixgbe_restart_an_internal_phy_x550em(hw); @@ -2801,6 +2805,8 @@ reg_phy_ext |= (IXGBE_CS4227_EDC_MODE_SR << 1) | 0x1; ret_val = hw->phy.ops.write_reg(hw, reg_slice, IXGBE_MDIO_ZERO_DEV_TYPE, reg_phy_ext); + if (ret_val != IXGBE_SUCCESS) + return ret_val; /* Flush previous write with a read */ ret_val = hw->phy.ops.read_reg(hw, reg_slice, @@ -4207,6 +4213,8 @@ status = hw->mac.ops.write_iosf_sb_reg(hw, IXGBE_KRM_AN_CNTL_1(hw->bus.lan_id), IXGBE_SB_IOSF_TARGET_KR_PHY, an_cntl); + if (status != IXGBE_SUCCESS) + return status; /* Restart auto-negotiation. */ status = ixgbe_restart_an_internal_phy_x550em(hw); |