This patch removes unnecessary delay when setting up physical link
and negotiating in IXGBE share code.

Signed-off-by: Changchun Ouyang <changchun.ouyang at intel.com>
---
 lib/librte_pmd_ixgbe/ixgbe/ixgbe_phy.c | 53 ++++------------------------------
 1 file changed, 6 insertions(+), 47 deletions(-)

diff --git a/lib/librte_pmd_ixgbe/ixgbe/ixgbe_phy.c 
b/lib/librte_pmd_ixgbe/ixgbe/ixgbe_phy.c
index f39df9a..e1e560b 100644
--- a/lib/librte_pmd_ixgbe/ixgbe/ixgbe_phy.c
+++ b/lib/librte_pmd_ixgbe/ixgbe/ixgbe_phy.c
@@ -713,16 +713,14 @@ s32 ixgbe_write_phy_reg_generic(struct ixgbe_hw *hw, u32 
reg_addr,
 }

 /**
- *  ixgbe_setup_phy_link_generic - Set and restart autoneg
+ *  ixgbe_setup_phy_link_generic - Set and restart auto-neg
  *  @hw: pointer to hardware structure
  *
- *  Restart autonegotiation and PHY and waits for completion.
+ *  Restart auto-negotiation and PHY and waits for completion.
  **/
 s32 ixgbe_setup_phy_link_generic(struct ixgbe_hw *hw)
 {
        s32 status = IXGBE_SUCCESS;
-       u32 time_out;
-       u32 max_time_out = 10;
        u16 autoneg_reg = IXGBE_MII_AUTONEG_REG;
        bool autoneg = false;
        ixgbe_link_speed speed;
@@ -783,7 +781,7 @@ s32 ixgbe_setup_phy_link_generic(struct ixgbe_hw *hw)
        if (ixgbe_check_reset_blocked(hw))
                return status;

-       /* Restart PHY autonegotiation and wait for completion */
+       /* Restart PHY auto-negotiation. */
        hw->phy.ops.read_reg(hw, IXGBE_MDIO_AUTO_NEG_CONTROL,
                             IXGBE_MDIO_AUTO_NEG_DEV_TYPE, &autoneg_reg);

@@ -792,25 +790,6 @@ s32 ixgbe_setup_phy_link_generic(struct ixgbe_hw *hw)
        hw->phy.ops.write_reg(hw, IXGBE_MDIO_AUTO_NEG_CONTROL,
                              IXGBE_MDIO_AUTO_NEG_DEV_TYPE, autoneg_reg);

-       /* Wait for autonegotiation to finish */
-       for (time_out = 0; time_out < max_time_out; time_out++) {
-               usec_delay(10);
-               /* Restart PHY autonegotiation and wait for completion */
-               status = hw->phy.ops.read_reg(hw, IXGBE_MDIO_AUTO_NEG_STATUS,
-                                             IXGBE_MDIO_AUTO_NEG_DEV_TYPE,
-                                             &autoneg_reg);
-
-               autoneg_reg &= IXGBE_MII_AUTONEG_COMPLETE;
-               if (autoneg_reg == IXGBE_MII_AUTONEG_COMPLETE)
-                       break;
-       }
-
-       if (time_out == max_time_out) {
-               status = IXGBE_ERR_LINK_SETUP;
-               ERROR_REPORT1(IXGBE_ERROR_POLLING,
-                            "PHY autonegotiation time out");
-       }
-
        return status;
 }

@@ -934,16 +913,14 @@ s32 ixgbe_check_phy_link_tnx(struct ixgbe_hw *hw, 
ixgbe_link_speed *speed,
 }

 /**
- *     ixgbe_setup_phy_link_tnx - Set and restart autoneg
+ *     ixgbe_setup_phy_link_tnx - Set and restart auto-neg
  *     @hw: pointer to hardware structure
  *
- *     Restart autonegotiation and PHY and waits for completion.
+ *     Restart auto-negotiation and PHY and waits for completion.
  **/
 s32 ixgbe_setup_phy_link_tnx(struct ixgbe_hw *hw)
 {
        s32 status = IXGBE_SUCCESS;
-       u32 time_out;
-       u32 max_time_out = 10;
        u16 autoneg_reg = IXGBE_MII_AUTONEG_REG;
        bool autoneg = false;
        ixgbe_link_speed speed;
@@ -1001,7 +978,7 @@ s32 ixgbe_setup_phy_link_tnx(struct ixgbe_hw *hw)
        if (ixgbe_check_reset_blocked(hw))
                return status;

-       /* Restart PHY autonegotiation and wait for completion */
+       /* Restart PHY auto-negotiation. */
        hw->phy.ops.read_reg(hw, IXGBE_MDIO_AUTO_NEG_CONTROL,
                             IXGBE_MDIO_AUTO_NEG_DEV_TYPE, &autoneg_reg);

@@ -1010,24 +987,6 @@ s32 ixgbe_setup_phy_link_tnx(struct ixgbe_hw *hw)
        hw->phy.ops.write_reg(hw, IXGBE_MDIO_AUTO_NEG_CONTROL,
                              IXGBE_MDIO_AUTO_NEG_DEV_TYPE, autoneg_reg);

-       /* Wait for autonegotiation to finish */
-       for (time_out = 0; time_out < max_time_out; time_out++) {
-               usec_delay(10);
-               /* Restart PHY autonegotiation and wait for completion */
-               status = hw->phy.ops.read_reg(hw, IXGBE_MDIO_AUTO_NEG_STATUS,
-                                             IXGBE_MDIO_AUTO_NEG_DEV_TYPE,
-                                             &autoneg_reg);
-
-               autoneg_reg &= IXGBE_MII_AUTONEG_COMPLETE;
-               if (autoneg_reg == IXGBE_MII_AUTONEG_COMPLETE)
-                       break;
-       }
-
-       if (time_out == max_time_out) {
-               status = IXGBE_ERR_LINK_SETUP;
-               DEBUGOUT("ixgbe_setup_phy_link_tnx: time out");
-       }
-
        return status;
 }

-- 
1.8.4.2

Reply via email to