From: Wei Dai Date: Wed, 21 Dec 2016 09:47:45 +0000 (+0800) Subject: net/ixgbe/base: fix PHY reset check for x550em-ext X-Git-Tag: spdx-start~4960 X-Git-Url: http://git.droids-corp.org/?a=commitdiff_plain;h=e39713e45fdee330aa1fc9a21ec1a44a26cf1d0d;hp=011411586e035bcd507ef602c7a8cb3bf6d27cb0;p=dpdk.git net/ixgbe/base: fix PHY reset check for x550em-ext PHY type ixgbe_phy_x550em_ext_t requires different check to verify reset status. Fixes: af75078fece3 ("first public release") Signed-off-by: Wei Dai --- diff --git a/drivers/net/ixgbe/base/ixgbe_phy.c b/drivers/net/ixgbe/base/ixgbe_phy.c index 43c55d74d3..1d9fb3eec8 100644 --- a/drivers/net/ixgbe/base/ixgbe_phy.c +++ b/drivers/net/ixgbe/base/ixgbe_phy.c @@ -528,11 +528,30 @@ s32 ixgbe_reset_phy_generic(struct ixgbe_hw *hw) */ for (i = 0; i < 30; i++) { msec_delay(100); - hw->phy.ops.read_reg(hw, IXGBE_MDIO_PHY_XS_CONTROL, - IXGBE_MDIO_PHY_XS_DEV_TYPE, &ctrl); - if (!(ctrl & IXGBE_MDIO_PHY_XS_RESET)) { - usec_delay(2); - break; + if (hw->phy.type == ixgbe_phy_x550em_ext_t) { + status = hw->phy.ops.read_reg(hw, + IXGBE_MDIO_TX_VENDOR_ALARMS_3, + IXGBE_MDIO_PMA_PMD_DEV_TYPE, + &ctrl); + if (status != IXGBE_SUCCESS) + return status; + + if (ctrl & IXGBE_MDIO_TX_VENDOR_ALARMS_3_RST_MASK) { + usec_delay(2); + break; + } + } else { + status = hw->phy.ops.read_reg(hw, + IXGBE_MDIO_PHY_XS_CONTROL, + IXGBE_MDIO_PHY_XS_DEV_TYPE, + &ctrl); + if (status != IXGBE_SUCCESS) + return status; + + if (!(ctrl & IXGBE_MDIO_PHY_XS_RESET)) { + usec_delay(2); + break; + } } }