Skip to content

Commit 1f75dbc

Browse files
jacob-kellerkuba-moo
authored andcommitted
ice: fix ice_ptp_read_tx_hwtstamp_status_eth56g
The ice_ptp_read_tx_hwtstamp_status_eth56g function calls ice_read_phy_eth56g with a PHY index. However the function actually expects a port index. This causes the function to read the wrong PHY_PTP_INT_STATUS registers, and effectively makes the status wrong for the second set of ports from 4 to 7. The ice_read_phy_eth56g function uses the provided port index to determine which PHY device to read. We could refactor the entire chain to take a PHY index, but this would impact many code sites. Instead, multiply the PHY index by the number of ports, so that we read from the first port of each PHY. Fixes: 7cab44f ("ice: Introduce ETH56G PHY model for E825C products") Reviewed-by: Aleksandr Loktionov <aleksandr.loktionov@intel.com> Reviewed-by: Petr Oros <poros@redhat.com> Tested-by: Sunitha Mekala <sunithax.d.mekala@intel.com> Signed-off-by: Jacob Keller <jacob.e.keller@intel.com> Reviewed-by: Simon Horman <horms@kernel.org> Link: https://patch.msgid.link/20260420-jk-iwl-net-2026-04-20-ptp-e825c-phy-interrupt-fixes-v1-4-bc2240f42251@intel.com Signed-off-by: Jakub Kicinski <kuba@kernel.org>
1 parent 359dc1d commit 1f75dbc

1 file changed

Lines changed: 8 additions & 2 deletions

File tree

drivers/net/ethernet/intel/ice/ice_ptp_hw.c

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2219,13 +2219,19 @@ int ice_ptp_read_tx_hwtstamp_status_eth56g(struct ice_hw *hw, u32 *ts_status)
22192219
*ts_status = 0;
22202220

22212221
for (phy = 0; phy < params->num_phys; phy++) {
2222+
u8 port;
22222223
int err;
22232224

2224-
err = ice_read_phy_eth56g(hw, phy, PHY_PTP_INT_STATUS, &status);
2225+
/* ice_read_phy_eth56g expects a port index, so use the first
2226+
* port of the PHY
2227+
*/
2228+
port = phy * hw->ptp.ports_per_phy;
2229+
2230+
err = ice_read_phy_eth56g(hw, port, PHY_PTP_INT_STATUS, &status);
22252231
if (err)
22262232
return err;
22272233

2228-
*ts_status |= (status & mask) << (phy * hw->ptp.ports_per_phy);
2234+
*ts_status |= (status & mask) << port;
22292235
}
22302236

22312237
ice_debug(hw, ICE_DBG_PTP, "PHY interrupt err: %x\n", *ts_status);

0 commit comments

Comments
 (0)