Lines Matching refs:link_info
2207 bnxt_get_media(struct bnxt_link_info *link_info) in bnxt_get_media() argument
2209 switch (link_info->media_type) { in bnxt_get_media()
2215 if (link_info->phy_type < ARRAY_SIZE(bnxt_phy_types)) in bnxt_get_media()
2216 return bnxt_phy_types[link_info->phy_type]; in bnxt_get_media()
2370 bnxt_get_link_mode(struct bnxt_link_info *link_info) in bnxt_get_link_mode() argument
2377 if (link_info->phy_link_status != BNXT_LINK_LINK) in bnxt_get_link_mode()
2380 media = bnxt_get_media(link_info); in bnxt_get_link_mode()
2381 if (BNXT_AUTO_MODE(link_info->auto_mode)) { in bnxt_get_link_mode()
2382 speed = bnxt_fw_speed_idx(link_info->link_speed); in bnxt_get_link_mode()
2383 sig_mode = link_info->active_fec_sig_mode & in bnxt_get_link_mode()
2386 speed = bnxt_fw_speed_idx(link_info->req_link_speed); in bnxt_get_link_mode()
2387 sig_mode = link_info->req_signal_mode; in bnxt_get_link_mode()
2402 if (~link_info->duplex & BNXT_LINK_DUPLEX_FULL) in bnxt_get_link_mode()
2406 if (~link_info->duplex & BNXT_LINK_DUPLEX_FULL) in bnxt_get_link_mode()
2416 static void bnxt_get_ethtool_modes(struct bnxt_link_info *link_info, in bnxt_get_ethtool_modes() argument
2419 struct bnxt *bp = container_of(link_info, struct bnxt, link_info); in bnxt_get_ethtool_modes()
2428 if (link_info->support_auto_speeds || link_info->support_auto_speeds2 || in bnxt_get_ethtool_modes()
2429 link_info->support_pam4_auto_speeds) in bnxt_get_ethtool_modes()
2433 if (~link_info->autoneg & BNXT_AUTONEG_FLOW_CTRL) in bnxt_get_ethtool_modes()
2436 if (link_info->auto_pause_setting & BNXT_LINK_PAUSE_RX) in bnxt_get_ethtool_modes()
2439 if (hweight8(link_info->auto_pause_setting & BNXT_LINK_PAUSE_BOTH) == 1) in bnxt_get_ethtool_modes()
2442 if (link_info->lp_pause & BNXT_LINK_PAUSE_RX) in bnxt_get_ethtool_modes()
2445 if (hweight8(link_info->lp_pause & BNXT_LINK_PAUSE_BOTH) == 1) in bnxt_get_ethtool_modes()
2572 bnxt_get_all_ethtool_support_speeds(struct bnxt_link_info *link_info, in bnxt_get_all_ethtool_support_speeds() argument
2576 struct bnxt *bp = container_of(link_info, struct bnxt, link_info); in bnxt_get_all_ethtool_support_speeds()
2581 sp_nrz = link_info->support_speeds2; in bnxt_get_all_ethtool_support_speeds()
2582 sp_pam4 = link_info->support_speeds2; in bnxt_get_all_ethtool_support_speeds()
2583 sp_pam4_112 = link_info->support_speeds2; in bnxt_get_all_ethtool_support_speeds()
2585 sp_nrz = link_info->support_speeds; in bnxt_get_all_ethtool_support_speeds()
2586 sp_pam4 = link_info->support_pam4_speeds; in bnxt_get_all_ethtool_support_speeds()
2597 bnxt_get_all_ethtool_adv_speeds(struct bnxt_link_info *link_info, in bnxt_get_all_ethtool_adv_speeds() argument
2601 struct bnxt *bp = container_of(link_info, struct bnxt, link_info); in bnxt_get_all_ethtool_adv_speeds()
2605 sp_nrz = link_info->advertising; in bnxt_get_all_ethtool_adv_speeds()
2607 sp_pam4 = link_info->advertising; in bnxt_get_all_ethtool_adv_speeds()
2608 sp_pam4_112 = link_info->advertising; in bnxt_get_all_ethtool_adv_speeds()
2610 sp_pam4 = link_info->advertising_pam4; in bnxt_get_all_ethtool_adv_speeds()
2621 bnxt_get_all_ethtool_lp_speeds(struct bnxt_link_info *link_info, in bnxt_get_all_ethtool_lp_speeds() argument
2625 struct bnxt *bp = container_of(link_info, struct bnxt, link_info); in bnxt_get_all_ethtool_lp_speeds()
2628 bnxt_get_ethtool_speeds(link_info->lp_auto_link_speeds, media, in bnxt_get_all_ethtool_lp_speeds()
2631 bnxt_get_ethtool_speeds(link_info->lp_auto_pam4_link_speeds, media, in bnxt_get_all_ethtool_lp_speeds()
2659 static void bnxt_set_ethtool_speeds(struct bnxt_link_info *link_info, in bnxt_set_ethtool_speeds() argument
2662 struct bnxt *bp = container_of(link_info, struct bnxt, link_info); in bnxt_set_ethtool_speeds()
2664 enum bnxt_media_type media = bnxt_get_media(link_info); in bnxt_set_ethtool_speeds()
2671 adv = &link_info->advertising; in bnxt_set_ethtool_speeds()
2673 adv_pam4 = &link_info->advertising; in bnxt_set_ethtool_speeds()
2674 adv_pam4_112 = &link_info->advertising; in bnxt_set_ethtool_speeds()
2679 adv_pam4 = &link_info->advertising_pam4; in bnxt_set_ethtool_speeds()
2702 static void bnxt_fw_to_ethtool_advertised_fec(struct bnxt_link_info *link_info, in bnxt_fw_to_ethtool_advertised_fec() argument
2705 u16 fec_cfg = link_info->fec_cfg; in bnxt_fw_to_ethtool_advertised_fec()
2723 static void bnxt_fw_to_ethtool_support_fec(struct bnxt_link_info *link_info, in bnxt_fw_to_ethtool_support_fec() argument
2726 u16 fec_cfg = link_info->fec_cfg; in bnxt_fw_to_ethtool_support_fec()
2782 struct bnxt_link_info *link_info) in bnxt_get_default_speeds() argument
2786 if (link_info->link_state == BNXT_LINK_STATE_UP) { in bnxt_get_default_speeds()
2787 base->speed = bnxt_fw_to_ethtool_speed(link_info->link_speed); in bnxt_get_default_speeds()
2789 if (link_info->duplex & BNXT_LINK_DUPLEX_FULL) in bnxt_get_default_speeds()
2791 lk_ksettings->lanes = link_info->active_lanes; in bnxt_get_default_speeds()
2792 } else if (!link_info->autoneg) { in bnxt_get_default_speeds()
2793 base->speed = bnxt_fw_to_ethtool_speed(link_info->req_link_speed); in bnxt_get_default_speeds()
2795 if (link_info->req_duplex == BNXT_LINK_DUPLEX_FULL) in bnxt_get_default_speeds()
2806 struct bnxt_link_info *link_info; in bnxt_get_link_ksettings() local
2814 link_info = &bp->link_info; in bnxt_get_link_ksettings()
2817 bnxt_get_ethtool_modes(link_info, lk_ksettings); in bnxt_get_link_ksettings()
2818 media = bnxt_get_media(link_info); in bnxt_get_link_ksettings()
2819 bnxt_get_all_ethtool_support_speeds(link_info, media, lk_ksettings); in bnxt_get_link_ksettings()
2820 bnxt_fw_to_ethtool_support_fec(link_info, lk_ksettings); in bnxt_get_link_ksettings()
2821 link_mode = bnxt_get_link_mode(link_info); in bnxt_get_link_ksettings()
2825 bnxt_get_default_speeds(lk_ksettings, link_info); in bnxt_get_link_ksettings()
2827 if (link_info->autoneg) { in bnxt_get_link_ksettings()
2828 bnxt_fw_to_ethtool_advertised_fec(link_info, lk_ksettings); in bnxt_get_link_ksettings()
2832 bnxt_get_all_ethtool_adv_speeds(link_info, media, lk_ksettings); in bnxt_get_link_ksettings()
2833 if (link_info->phy_link_status == BNXT_LINK_LINK) in bnxt_get_link_ksettings()
2834 bnxt_get_all_ethtool_lp_speeds(link_info, media, in bnxt_get_link_ksettings()
2841 if (link_info->media_type == PORT_PHY_QCFG_RESP_MEDIA_TYPE_TP) { in bnxt_get_link_ksettings()
2853 if (link_info->media_type == PORT_PHY_QCFG_RESP_MEDIA_TYPE_DAC) in bnxt_get_link_ksettings()
2858 base->phy_address = link_info->phy_addr; in bnxt_get_link_ksettings()
2868 struct bnxt_link_info *link_info = &bp->link_info; in bnxt_force_link_speed() local
2869 u16 support_pam4_spds = link_info->support_pam4_speeds; in bnxt_force_link_speed()
2870 u16 support_spds2 = link_info->support_speeds2; in bnxt_force_link_speed()
2871 u16 support_spds = link_info->support_speeds; in bnxt_force_link_speed()
2987 if (link_info->req_link_speed == fw_speed && in bnxt_force_link_speed()
2988 link_info->req_signal_mode == sig_mode && in bnxt_force_link_speed()
2989 link_info->autoneg == 0) in bnxt_force_link_speed()
2992 link_info->req_link_speed = fw_speed; in bnxt_force_link_speed()
2993 link_info->req_signal_mode = sig_mode; in bnxt_force_link_speed()
2994 link_info->req_duplex = BNXT_LINK_DUPLEX_FULL; in bnxt_force_link_speed()
2995 link_info->autoneg = 0; in bnxt_force_link_speed()
2996 link_info->advertising = 0; in bnxt_force_link_speed()
2997 link_info->advertising_pam4 = 0; in bnxt_force_link_speed()
3027 struct bnxt_link_info *link_info = &bp->link_info; in bnxt_set_link_ksettings() local
3038 bnxt_set_ethtool_speeds(link_info, in bnxt_set_link_ksettings()
3040 link_info->autoneg |= BNXT_AUTONEG_SPEED; in bnxt_set_link_ksettings()
3041 if (!link_info->advertising && !link_info->advertising_pam4) { in bnxt_set_link_ksettings()
3042 link_info->advertising = link_info->support_auto_speeds; in bnxt_set_link_ksettings()
3043 link_info->advertising_pam4 = in bnxt_set_link_ksettings()
3044 link_info->support_pam4_auto_speeds; in bnxt_set_link_ksettings()
3052 u8 phy_type = link_info->phy_type; in bnxt_set_link_ksettings()
3056 link_info->media_type == PORT_PHY_QCFG_RESP_MEDIA_TYPE_TP) { in bnxt_set_link_ksettings()
3088 struct bnxt_link_info *link_info; in bnxt_get_fecparam() local
3092 link_info = &bp->link_info; in bnxt_get_fecparam()
3093 fec_cfg = link_info->fec_cfg; in bnxt_get_fecparam()
3094 active_fec = link_info->active_fec_sig_mode & in bnxt_get_fecparam()
3152 static u32 bnxt_ethtool_forced_fec_to_fw(struct bnxt_link_info *link_info, in bnxt_ethtool_forced_fec_to_fw() argument
3158 fw_fec |= BNXT_FEC_BASE_R_ON(link_info); in bnxt_ethtool_forced_fec_to_fw()
3160 fw_fec |= BNXT_FEC_RS_ON(link_info); in bnxt_ethtool_forced_fec_to_fw()
3171 struct bnxt_link_info *link_info; in bnxt_set_fecparam() local
3176 link_info = &bp->link_info; in bnxt_set_fecparam()
3177 fec_cfg = link_info->fec_cfg; in bnxt_set_fecparam()
3183 BNXT_FEC_ALL_OFF(link_info); in bnxt_set_fecparam()
3193 if (!link_info->autoneg) in bnxt_set_fecparam()
3197 new_cfg = bnxt_ethtool_forced_fec_to_fw(link_info, fec); in bnxt_set_fecparam()
3219 struct bnxt_link_info *link_info = &bp->link_info; in bnxt_get_pauseparam() local
3223 epause->autoneg = !!(link_info->autoneg & BNXT_AUTONEG_FLOW_CTRL); in bnxt_get_pauseparam()
3224 epause->rx_pause = !!(link_info->req_flow_ctrl & BNXT_LINK_PAUSE_RX); in bnxt_get_pauseparam()
3225 epause->tx_pause = !!(link_info->req_flow_ctrl & BNXT_LINK_PAUSE_TX); in bnxt_get_pauseparam()
3249 struct bnxt_link_info *link_info = &bp->link_info; in bnxt_set_pauseparam() local
3256 if (!(link_info->autoneg & BNXT_AUTONEG_SPEED)) { in bnxt_set_pauseparam()
3261 link_info->autoneg |= BNXT_AUTONEG_FLOW_CTRL; in bnxt_set_pauseparam()
3262 link_info->req_flow_ctrl = 0; in bnxt_set_pauseparam()
3267 if (link_info->autoneg & BNXT_AUTONEG_FLOW_CTRL) in bnxt_set_pauseparam()
3268 link_info->force_link_chng = true; in bnxt_set_pauseparam()
3269 link_info->autoneg &= ~BNXT_AUTONEG_FLOW_CTRL; in bnxt_set_pauseparam()
3270 link_info->req_flow_ctrl = 0; in bnxt_set_pauseparam()
3273 link_info->req_flow_ctrl |= BNXT_LINK_PAUSE_RX; in bnxt_set_pauseparam()
3276 link_info->req_flow_ctrl |= BNXT_LINK_PAUSE_TX; in bnxt_set_pauseparam()
4248 struct bnxt_link_info *link_info = &bp->link_info; in bnxt_set_eee() local
4258 _bnxt_fw_to_linkmode(advertising, link_info->advertising); in bnxt_set_eee()
4262 if (!(link_info->autoneg & BNXT_AUTONEG_SPEED)) { in bnxt_set_eee()
4374 if (bp->link_info.module_status > in bnxt_get_module_info()
4447 if (bp->link_info.module_status <= in bnxt_get_module_status()
4451 switch (bp->link_info.module_status) { in bnxt_get_module_status()
4506 struct bnxt_link_info *link_info = &bp->link_info; in bnxt_nway_reset() local
4511 if (!(link_info->autoneg & BNXT_AUTONEG_SPEED)) in bnxt_nway_reset()
4628 struct bnxt_link_info *link_info = &bp->link_info; in bnxt_disable_an_for_lpbk() local
4633 if (!link_info->autoneg || in bnxt_disable_an_for_lpbk()
4643 fw_speed = bp->link_info.link_speed; in bnxt_disable_an_for_lpbk()