Lines Matching refs:link_info

2259 bnxt_get_media(struct bnxt_link_info *link_info)
2261 switch (link_info->media_type) {
2267 if (link_info->phy_type < ARRAY_SIZE(bnxt_phy_types))
2268 return bnxt_phy_types[link_info->phy_type];
2422 bnxt_get_link_mode(struct bnxt_link_info *link_info)
2429 if (link_info->phy_link_status != BNXT_LINK_LINK)
2432 media = bnxt_get_media(link_info);
2433 if (BNXT_AUTO_MODE(link_info->auto_mode)) {
2434 speed = bnxt_fw_speed_idx(link_info->link_speed);
2435 sig_mode = link_info->active_fec_sig_mode &
2438 speed = bnxt_fw_speed_idx(link_info->req_link_speed);
2439 sig_mode = link_info->req_signal_mode;
2454 if (~link_info->duplex & BNXT_LINK_DUPLEX_FULL)
2458 if (~link_info->duplex & BNXT_LINK_DUPLEX_FULL)
2468 static void bnxt_get_ethtool_modes(struct bnxt_link_info *link_info,
2471 struct bnxt *bp = container_of(link_info, struct bnxt, link_info);
2480 if (link_info->support_auto_speeds || link_info->support_auto_speeds2 ||
2481 link_info->support_pam4_auto_speeds)
2485 if (~link_info->autoneg & BNXT_AUTONEG_FLOW_CTRL)
2488 if (link_info->auto_pause_setting & BNXT_LINK_PAUSE_RX)
2491 if (hweight8(link_info->auto_pause_setting & BNXT_LINK_PAUSE_BOTH) == 1)
2494 if (link_info->lp_pause & BNXT_LINK_PAUSE_RX)
2497 if (hweight8(link_info->lp_pause & BNXT_LINK_PAUSE_BOTH) == 1)
2624 bnxt_get_all_ethtool_support_speeds(struct bnxt_link_info *link_info,
2628 struct bnxt *bp = container_of(link_info, struct bnxt, link_info);
2633 sp_nrz = link_info->support_speeds2;
2634 sp_pam4 = link_info->support_speeds2;
2635 sp_pam4_112 = link_info->support_speeds2;
2637 sp_nrz = link_info->support_speeds;
2638 sp_pam4 = link_info->support_pam4_speeds;
2649 bnxt_get_all_ethtool_adv_speeds(struct bnxt_link_info *link_info,
2653 struct bnxt *bp = container_of(link_info, struct bnxt, link_info);
2657 sp_nrz = link_info->advertising;
2659 sp_pam4 = link_info->advertising;
2660 sp_pam4_112 = link_info->advertising;
2662 sp_pam4 = link_info->advertising_pam4;
2673 bnxt_get_all_ethtool_lp_speeds(struct bnxt_link_info *link_info,
2677 struct bnxt *bp = container_of(link_info, struct bnxt, link_info);
2680 bnxt_get_ethtool_speeds(link_info->lp_auto_link_speeds, media,
2683 bnxt_get_ethtool_speeds(link_info->lp_auto_pam4_link_speeds, media,
2711 static void bnxt_set_ethtool_speeds(struct bnxt_link_info *link_info,
2714 struct bnxt *bp = container_of(link_info, struct bnxt, link_info);
2716 enum bnxt_media_type media = bnxt_get_media(link_info);
2723 adv = &link_info->advertising;
2725 adv_pam4 = &link_info->advertising;
2726 adv_pam4_112 = &link_info->advertising;
2731 adv_pam4 = &link_info->advertising_pam4;
2754 static void bnxt_fw_to_ethtool_advertised_fec(struct bnxt_link_info *link_info,
2757 u16 fec_cfg = link_info->fec_cfg;
2775 static void bnxt_fw_to_ethtool_support_fec(struct bnxt_link_info *link_info,
2778 u16 fec_cfg = link_info->fec_cfg;
2834 struct bnxt_link_info *link_info)
2838 if (link_info->link_state == BNXT_LINK_STATE_UP) {
2839 base->speed = bnxt_fw_to_ethtool_speed(link_info->link_speed);
2841 if (link_info->duplex & BNXT_LINK_DUPLEX_FULL)
2843 lk_ksettings->lanes = link_info->active_lanes;
2844 } else if (!link_info->autoneg) {
2845 base->speed = bnxt_fw_to_ethtool_speed(link_info->req_link_speed);
2847 if (link_info->req_duplex == BNXT_LINK_DUPLEX_FULL)
2858 struct bnxt_link_info *link_info;
2866 link_info = &bp->link_info;
2869 bnxt_get_ethtool_modes(link_info, lk_ksettings);
2870 media = bnxt_get_media(link_info);
2871 bnxt_get_all_ethtool_support_speeds(link_info, media, lk_ksettings);
2872 bnxt_fw_to_ethtool_support_fec(link_info, lk_ksettings);
2873 link_mode = bnxt_get_link_mode(link_info);
2877 bnxt_get_default_speeds(lk_ksettings, link_info);
2879 if (link_info->autoneg) {
2880 bnxt_fw_to_ethtool_advertised_fec(link_info, lk_ksettings);
2884 bnxt_get_all_ethtool_adv_speeds(link_info, media, lk_ksettings);
2885 if (link_info->phy_link_status == BNXT_LINK_LINK)
2886 bnxt_get_all_ethtool_lp_speeds(link_info, media,
2915 base->phy_address = link_info->phy_addr;
2925 struct bnxt_link_info *link_info = &bp->link_info;
2926 u16 support_pam4_spds = link_info->support_pam4_speeds;
2927 u16 support_spds2 = link_info->support_speeds2;
2928 u16 support_spds = link_info->support_speeds;
3044 if (link_info->req_link_speed == fw_speed &&
3045 link_info->req_signal_mode == sig_mode &&
3046 link_info->autoneg == 0)
3049 link_info->req_link_speed = fw_speed;
3050 link_info->req_signal_mode = sig_mode;
3051 link_info->req_duplex = BNXT_LINK_DUPLEX_FULL;
3052 link_info->autoneg = 0;
3053 link_info->advertising = 0;
3054 link_info->advertising_pam4 = 0;
3084 struct bnxt_link_info *link_info = &bp->link_info;
3095 bnxt_set_ethtool_speeds(link_info,
3097 link_info->autoneg |= BNXT_AUTONEG_SPEED;
3098 if (!link_info->advertising && !link_info->advertising_pam4) {
3099 link_info->advertising = link_info->support_auto_speeds;
3100 link_info->advertising_pam4 =
3101 link_info->support_pam4_auto_speeds;
3109 u8 phy_type = link_info->phy_type;
3113 link_info->media_type == PORT_PHY_QCFG_RESP_MEDIA_TYPE_TP) {
3145 struct bnxt_link_info *link_info;
3149 link_info = &bp->link_info;
3150 fec_cfg = link_info->fec_cfg;
3151 active_fec = link_info->active_fec_sig_mode &
3209 static u32 bnxt_ethtool_forced_fec_to_fw(struct bnxt_link_info *link_info,
3215 fw_fec |= BNXT_FEC_BASE_R_ON(link_info);
3217 fw_fec |= BNXT_FEC_RS_ON(link_info);
3228 struct bnxt_link_info *link_info;
3233 link_info = &bp->link_info;
3234 fec_cfg = link_info->fec_cfg;
3240 BNXT_FEC_ALL_OFF(link_info);
3250 if (!link_info->autoneg)
3254 new_cfg = bnxt_ethtool_forced_fec_to_fw(link_info, fec);
3276 struct bnxt_link_info *link_info = &bp->link_info;
3280 epause->autoneg = !!(link_info->autoneg & BNXT_AUTONEG_FLOW_CTRL);
3281 epause->rx_pause = !!(link_info->req_flow_ctrl & BNXT_LINK_PAUSE_RX);
3282 epause->tx_pause = !!(link_info->req_flow_ctrl & BNXT_LINK_PAUSE_TX);
3306 struct bnxt_link_info *link_info = &bp->link_info;
3313 if (!(link_info->autoneg & BNXT_AUTONEG_SPEED)) {
3318 link_info->autoneg |= BNXT_AUTONEG_FLOW_CTRL;
3319 link_info->req_flow_ctrl = 0;
3324 if (link_info->autoneg & BNXT_AUTONEG_FLOW_CTRL)
3325 link_info->force_link_chng = true;
3326 link_info->autoneg &= ~BNXT_AUTONEG_FLOW_CTRL;
3327 link_info->req_flow_ctrl = 0;
3330 link_info->req_flow_ctrl |= BNXT_LINK_PAUSE_RX;
3333 link_info->req_flow_ctrl |= BNXT_LINK_PAUSE_TX;
4305 struct bnxt_link_info *link_info = &bp->link_info;
4315 _bnxt_fw_to_linkmode(advertising, link_info->advertising);
4319 if (!(link_info->autoneg & BNXT_AUTONEG_SPEED)) {
4473 if (bp->link_info.module_status >
4549 if (bp->link_info.module_status <=
4553 switch (bp->link_info.module_status) {
4683 struct bnxt_link_info *link_info = &bp->link_info;
4688 if (!(link_info->autoneg & BNXT_AUTONEG_SPEED))
4805 struct bnxt_link_info *link_info = &bp->link_info;
4810 if (!link_info->autoneg ||
4820 fw_speed = bp->link_info.link_speed;