The branch main has been updated by kbowling (ports committer):

URL: 
https://cgit.FreeBSD.org/src/commit/?id=80a39a2bda8208c716f614f792c8d9a3628d6c26

commit 80a39a2bda8208c716f614f792c8d9a3628d6c26
Author:     Guinan Sun <guinanx....@intel.com>
AuthorDate: 2020-07-09 08:00:36 +0000
Commit:     Kevin Bowling <kbowl...@freebsd.org>
CommitDate: 2021-09-07 04:17:19 +0000

    ixgbe: create function to restart autoneg
    
    This patch is for restarting auto negotiation on PHY.
    
    Signed-off-by: Jakub Chylkowski <jakubx.chylkow...@intel.com>
    Signed-off-by: Guinan Sun <guinanx....@intel.com>
    Reviewed-by: Wei Zhao <wei.zh...@intel.com>
    
    Approved by:    imp
    Obtained from:  DPDK (664ea2614eafbec8eda5c86764ff047475a1e5c6)
    MFC after:      1 week
    Differential Revision:  https://reviews.freebsd.org/D31621
---
 sys/dev/ixgbe/ixgbe_phy.c | 48 ++++++++++++++++++++++-------------------------
 sys/dev/ixgbe/ixgbe_phy.h |  1 +
 2 files changed, 23 insertions(+), 26 deletions(-)

diff --git a/sys/dev/ixgbe/ixgbe_phy.c b/sys/dev/ixgbe/ixgbe_phy.c
index c1cbc282c790..e9e1dd2d8c1c 100644
--- a/sys/dev/ixgbe/ixgbe_phy.c
+++ b/sys/dev/ixgbe/ixgbe_phy.c
@@ -573,6 +573,26 @@ out:
        return status;
 }
 
+/**
+ * ixgbe_restart_auto_neg - Restart auto negotiation on the PHY
+ * @hw: pointer to hardware structure
+ **/
+void ixgbe_restart_auto_neg(struct ixgbe_hw *hw)
+{
+       u16 autoneg_reg;
+
+       /* Check if PHY reset is blocked by MNG FW */
+       if (ixgbe_check_reset_blocked(hw))
+               return;
+
+       /* Restart PHY auto-negotiation. */
+       hw->phy.ops.read_reg(hw, IXGBE_MDIO_AUTO_NEG_CONTROL,
+                               IXGBE_MDIO_AUTO_NEG_DEV_TYPE, &autoneg_reg);
+       autoneg_reg |= IXGBE_MII_RESTART;
+       hw->phy.ops.write_reg(hw, IXGBE_MDIO_AUTO_NEG_CONTROL,
+                               IXGBE_MDIO_AUTO_NEG_DEV_TYPE, autoneg_reg);
+}
+
 /**
  * ixgbe_read_phy_mdi - Reads a value from a specified PHY register without
  * the SWFW lock
@@ -857,19 +877,7 @@ s32 ixgbe_setup_phy_link_generic(struct ixgbe_hw *hw)
                              IXGBE_MDIO_AUTO_NEG_DEV_TYPE,
                              autoneg_reg);
 
-       /* Blocked by MNG FW so don't reset PHY */
-       if (ixgbe_check_reset_blocked(hw))
-               return status;
-
-       /* Restart PHY auto-negotiation. */
-       hw->phy.ops.read_reg(hw, IXGBE_MDIO_AUTO_NEG_CONTROL,
-                            IXGBE_MDIO_AUTO_NEG_DEV_TYPE, &autoneg_reg);
-
-       autoneg_reg |= IXGBE_MII_RESTART;
-
-       hw->phy.ops.write_reg(hw, IXGBE_MDIO_AUTO_NEG_CONTROL,
-                             IXGBE_MDIO_AUTO_NEG_DEV_TYPE, autoneg_reg);
-
+       ixgbe_restart_auto_neg(hw);
        return status;
 }
 
@@ -1093,19 +1101,7 @@ s32 ixgbe_setup_phy_link_tnx(struct ixgbe_hw *hw)
                                      autoneg_reg);
        }
 
-       /* Blocked by MNG FW so don't reset PHY */
-       if (ixgbe_check_reset_blocked(hw))
-               return status;
-
-       /* Restart PHY auto-negotiation. */
-       hw->phy.ops.read_reg(hw, IXGBE_MDIO_AUTO_NEG_CONTROL,
-                            IXGBE_MDIO_AUTO_NEG_DEV_TYPE, &autoneg_reg);
-
-       autoneg_reg |= IXGBE_MII_RESTART;
-
-       hw->phy.ops.write_reg(hw, IXGBE_MDIO_AUTO_NEG_CONTROL,
-                             IXGBE_MDIO_AUTO_NEG_DEV_TYPE, autoneg_reg);
-
+       ixgbe_restart_auto_neg(hw);
        return status;
 }
 
diff --git a/sys/dev/ixgbe/ixgbe_phy.h b/sys/dev/ixgbe/ixgbe_phy.h
index 9fd3f6d2163e..7f51ccc1dd2c 100644
--- a/sys/dev/ixgbe/ixgbe_phy.h
+++ b/sys/dev/ixgbe/ixgbe_phy.h
@@ -163,6 +163,7 @@ enum ixgbe_phy_type ixgbe_get_phy_type_from_id(u32 phy_id);
 s32 ixgbe_get_phy_id(struct ixgbe_hw *hw);
 s32 ixgbe_identify_phy_generic(struct ixgbe_hw *hw);
 s32 ixgbe_reset_phy_generic(struct ixgbe_hw *hw);
+void ixgbe_restart_auto_neg(struct ixgbe_hw *hw);
 s32 ixgbe_read_phy_reg_mdi(struct ixgbe_hw *hw, u32 reg_addr, u32 device_type,
                           u16 *phy_data);
 s32 ixgbe_write_phy_reg_mdi(struct ixgbe_hw *hw, u32 reg_addr, u32 device_type,
_______________________________________________
dev-commits-src-main@freebsd.org mailing list
https://lists.freebsd.org/mailman/listinfo/dev-commits-src-main
To unsubscribe, send any mail to "dev-commits-src-main-unsubscr...@freebsd.org"

Reply via email to