/* Function indicates success when phy link is available. If phy is not ready within 5 seconds of MAC indicating link, the function returns error.  */
static s32 ixgbe_validate_link_ready(struct ixgbe_hw *hw)
/* Function indicates success when phy link is available. If phy is not ready within 5 seconds of MAC indicating link, the function returns error.  */
static s32 ixgbe_validate_link_ready(struct ixgbe_hw *hw)
{
	u32 timeout;
	u16 an_reg;
	if (hw->device_id != IXGBE_DEV_ID_82598AT2)
		return 0;
	for (timeout = 0;
	     timeout < IXGBE_VALIDATE_LINK_READY_TIMEOUT; timeout++) {
		hw->phy.ops.read_reg(hw, MDIO_STAT1, MDIO_MMD_AN, &an_reg);
		if ((an_reg & MDIO_AN_STAT1_COMPLETE) &&
		    (an_reg & MDIO_STAT1_LSTATUS))
			break;
		msleep(100);
	}
	if (timeout == IXGBE_VALIDATE_LINK_READY_TIMEOUT) {
		hw_dbg(hw, "Link was indicated but link is down\n");
		return IXGBE_ERR_LINK_SETUP;
	}
	return 0;
}