]> www.infradead.org Git - users/dwmw2/linux.git/commitdiff
ice: Fix E825 initialization
authorKarol Kolacinski <karol.kolacinski@intel.com>
Tue, 5 Nov 2024 12:29:13 +0000 (13:29 +0100)
committerTony Nguyen <anthony.l.nguyen@intel.com>
Mon, 13 Jan 2025 17:59:14 +0000 (09:59 -0800)
Current implementation checks revision of all PHYs on all PFs, which is
incorrect and may result in initialization failure. Check only the
revision of the current PHY.

Fixes: 7cab44f1c35f ("ice: Introduce ETH56G PHY model for E825C products")
Reviewed-by: Arkadiusz Kubalewski <arkadiusz.kubalewski@intel.com>
Signed-off-by: Karol Kolacinski <karol.kolacinski@intel.com>
Signed-off-by: Grzegorz Nitka <grzegorz.nitka@intel.com>
Tested-by: Pucha Himasekhar Reddy <himasekharx.reddy.pucha@intel.com> (A Contingent worker at Intel)
Signed-off-by: Tony Nguyen <anthony.l.nguyen@intel.com>
drivers/net/ethernet/intel/ice/ice_ptp_hw.c

index 518893f23372bf6c50c171a96d198c2c41961b2a..a5e4c6d8bfd5027705b4907215bc905b2779e7f5 100644 (file)
@@ -2687,14 +2687,15 @@ static bool ice_is_muxed_topo(struct ice_hw *hw)
 }
 
 /**
- * ice_ptp_init_phy_e825c - initialize PHY parameters
+ * ice_ptp_init_phy_e825 - initialize PHY parameters
  * @hw: pointer to the HW struct
  */
-static void ice_ptp_init_phy_e825c(struct ice_hw *hw)
+static void ice_ptp_init_phy_e825(struct ice_hw *hw)
 {
        struct ice_ptp_hw *ptp = &hw->ptp;
        struct ice_eth56g_params *params;
-       u8 phy;
+       u32 phy_rev;
+       int err;
 
        ptp->phy_model = ICE_PHY_ETH56G;
        params = &ptp->phy.eth56g;
@@ -2708,15 +2709,10 @@ static void ice_ptp_init_phy_e825c(struct ice_hw *hw)
        ptp->num_lports = params->num_phys * ptp->ports_per_phy;
 
        ice_sb_access_ena_eth56g(hw, true);
-       for (phy = 0; phy < params->num_phys; phy++) {
-               u32 phy_rev;
-               int err;
-
-               err = ice_read_phy_eth56g(hw, phy, PHY_REG_REVISION, &phy_rev);
-               if (err || phy_rev != PHY_REVISION_ETH56G) {
-                       ptp->phy_model = ICE_PHY_UNSUP;
-                       return;
-               }
+       err = ice_read_phy_eth56g(hw, hw->pf_id, PHY_REG_REVISION, &phy_rev);
+       if (err || phy_rev != PHY_REVISION_ETH56G) {
+               ptp->phy_model = ICE_PHY_UNSUP;
+               return;
        }
 
        ptp->is_2x50g_muxed_topo = ice_is_muxed_topo(hw);
@@ -5478,7 +5474,7 @@ void ice_ptp_init_hw(struct ice_hw *hw)
        else if (ice_is_e810(hw))
                ice_ptp_init_phy_e810(ptp);
        else if (ice_is_e825c(hw))
-               ice_ptp_init_phy_e825c(hw);
+               ice_ptp_init_phy_e825(hw);
        else
                ptp->phy_model = ICE_PHY_UNSUP;
 }