Currently, we manually set PHY model in `ice_dev_init`, however we missed adding case for E830, so for E830 the initialization ends up calling E822 code instead. This results in incorrect phy model being set and having several downstream consequences for E830 as a result, ranging from a stray error message from attempting to start PHY timer, and up to inability to enable timesync on E830 devices.
We could've fixed it by adding a case for E830, however there are several other missing bits of initialization (such as `phy_ports` field). All of this can be fixed by replacing manual setting of `phy_model` with a call to `ice_ptp_init_phy_model()`, which calls into base code and initializes the fields appropriately for all device types, including another option that is missing from current implementation - ETH56G. Fixes: c3bedb7114f2 ("net/ice/base: add E830 PTP initialization") Signed-off-by: Anatoly Burakov <anatoly.bura...@intel.com> --- drivers/net/ice/ice_ethdev.c | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/drivers/net/ice/ice_ethdev.c b/drivers/net/ice/ice_ethdev.c index 29509b4329..304f959b7e 100644 --- a/drivers/net/ice/ice_ethdev.c +++ b/drivers/net/ice/ice_ethdev.c @@ -2496,10 +2496,8 @@ ice_dev_init(struct rte_eth_dev *dev) /* Initialize TM configuration */ ice_tm_conf_init(dev); - if (ice_is_e810(hw)) - hw->phy_model = ICE_PHY_E810; - else - hw->phy_model = ICE_PHY_E822; + /* Initialize PHY model */ + ice_ptp_init_phy_model(hw); if (hw->phy_model == ICE_PHY_E822) { ret = ice_start_phy_timer_e822(hw, hw->pf_id); -- 2.43.5