On Tue, Jul 23, 2024 at 02:10:56PM +0100, Anatoly Burakov wrote:
> 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>

Reviewed-by: Bruce Richardson <bruce.richard...@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
> 

Reply via email to