Fill in some port information, including legacy Siena fields. Signed-off-by: Ivan Malov <ivan.ma...@arknetworks.am> Reviewed-by: Andy Moreton <andy.more...@amd.com> Reviewed-by: Pieter Jansen Van Vuuren <pieter.jansen-van-vuu...@amd.com> --- drivers/common/sfc_efx/base/efx_np.c | 44 ++++++++++++++++++++++++++++ 1 file changed, 44 insertions(+)
diff --git a/drivers/common/sfc_efx/base/efx_np.c b/drivers/common/sfc_efx/base/efx_np.c index 432185f311..3200bc0a90 100644 --- a/drivers/common/sfc_efx/base/efx_np.c +++ b/drivers/common/sfc_efx/base/efx_np.c @@ -12,13 +12,57 @@ efx_np_supported( return (enp->en_family >= EFX_FAMILY_MEDFORD4) ? B_TRUE : B_FALSE; } +static void +efx_np_assign_legacy_props( + __in efx_nic_t *enp) +{ + efx_nic_cfg_t *encp = &(enp->en_nic_cfg); + + memset(encp->enc_phy_revision, 0, sizeof (encp->enc_phy_revision)); + encp->enc_phy_type = 0; + +#if EFSYS_OPT_NAMES + memset(encp->enc_phy_name, 0, sizeof (encp->enc_phy_name)); +#endif /* EFSYS_OPT_NAMES */ + +#if EFSYS_OPT_PHY_STATS + encp->enc_mcdi_phy_stat_mask = 0; +#endif /* EFSYS_OPT_PHY_STATS */ + +#if EFSYS_OPT_PHY_FLAGS + encp->enc_phy_flags_mask = 0; +#endif /* EFSYS_OPT_PHY_FLAGS */ + +#if EFSYS_OPT_BIST + encp->enc_bist_mask = 0; +#endif /* EFSYS_OPT_BIST */ + + encp->enc_mcdi_mdio_channel = 0; + encp->enc_port = 0; +} + __checkReturn efx_rc_t efx_np_attach( __in efx_nic_t *enp) { + efx_nic_cfg_t *encp = &(enp->en_nic_cfg); + efx_port_t *epp = &(enp->en_port); + if (efx_np_supported(enp) == B_FALSE) return (0); + /* + * Some EFX properties are mostly leftover from Siena era + * and we prefer to initialise those to harmless defaults. + */ + efx_np_assign_legacy_props(enp); + +#if EFSYS_OPT_PHY_LED_CONTROL + encp->enc_led_mask = 1U << EFX_PHY_LED_DEFAULT; +#endif /* EFSYS_OPT_PHY_LED_CONTROL */ + + epp->ep_fixed_port_type = EFX_PHY_MEDIA_INVALID; + epp->ep_module_type = EFX_PHY_MEDIA_INVALID; return (0); } -- 2.39.5