ixgbe/base: move X550 MDIO clock speed init
authorWenzhuo Lu <wenzhuo.lu@intel.com>
Fri, 20 Nov 2015 07:17:52 +0000 (15:17 +0800)
committerThomas Monjalon <thomas.monjalon@6wind.com>
Thu, 14 Jan 2016 08:43:21 +0000 (09:43 +0100)
The x550 MDIO clock speed must be configured prior to first MDIO read or
write. The default MDIO clock speed is not valid, therefore the driver
is configuring a valid speed prior to reading the copper PHY device id.

Signed-off-by: Wenzhuo Lu <wenzhuo.lu@intel.com>
drivers/net/ixgbe/base/ixgbe_x550.c

index c60a819..4ab69c4 100644 (file)
@@ -1532,9 +1532,14 @@ s32 ixgbe_reset_hw_X550em(struct ixgbe_hw *hw)
        /* flush pending Tx transactions */
        ixgbe_clear_tx_pending(hw);
 
-       /* PHY ops must be identified and initialized prior to reset */
+       if (hw->device_id == IXGBE_DEV_ID_X550EM_X_10G_T) {
+               /* Config MDIO clock speed before the first MDIO PHY access */
+               hlreg0 = IXGBE_READ_REG(hw, IXGBE_HLREG0);
+               hlreg0 &= ~IXGBE_HLREG0_MDCSPD;
+               IXGBE_WRITE_REG(hw, IXGBE_HLREG0, hlreg0);
+       }
 
-       /* Identify PHY and related function pointers */
+       /* PHY ops must be identified and initialized prior to reset */
        status = hw->phy.ops.init(hw);
 
        if (status == IXGBE_ERR_SFP_NOT_SUPPORTED)
@@ -1611,13 +1616,6 @@ mac_reset_top:
        hw->mac.num_rar_entries = 128;
        hw->mac.ops.init_rx_addrs(hw);
 
-       if (hw->device_id == IXGBE_DEV_ID_X550EM_X_10G_T) {
-               /* Config MDIO clock speed. */
-               hlreg0 = IXGBE_READ_REG(hw, IXGBE_HLREG0);
-               hlreg0 &= ~IXGBE_HLREG0_MDCSPD;
-               IXGBE_WRITE_REG(hw, IXGBE_HLREG0, hlreg0);
-       }
-
        if (hw->device_id == IXGBE_DEV_ID_X550EM_X_SFP)
                ixgbe_setup_mux_ctl(hw);