Lines Matching refs:vars
216 struct link_vars *vars, u8 notify);
498 static u32 bnx2x_ets_get_min_w_val_nig(const struct link_vars *vars) in bnx2x_ets_get_min_w_val_nig() argument
502 if (vars->link_up) { in bnx2x_ets_get_min_w_val_nig()
503 if (vars->line_speed == SPEED_20000) in bnx2x_ets_get_min_w_val_nig()
570 const struct link_vars *vars) in bnx2x_ets_e3b0_nig_disabled() argument
574 const u32 min_w_val = bnx2x_ets_get_min_w_val_nig(vars); in bnx2x_ets_e3b0_nig_disabled()
745 const struct link_vars *vars) in bnx2x_ets_e3b0_disabled() argument
755 bnx2x_ets_e3b0_nig_disabled(params, vars); in bnx2x_ets_e3b0_disabled()
768 struct link_vars *vars) in bnx2x_ets_disabled() argument
776 bnx2x_status = bnx2x_ets_e3b0_disabled(params, vars); in bnx2x_ets_disabled()
1129 const struct link_vars *vars, in bnx2x_ets_e3b0_config() argument
1136 const u32 min_w_val_nig = bnx2x_ets_get_min_w_val_nig(vars); in bnx2x_ets_e3b0_config()
1350 struct link_vars *vars, in bnx2x_update_pfc_xmac() argument
1371 if (vars->flow_ctrl & BNX2X_FLOW_CTRL_RX) in bnx2x_update_pfc_xmac()
1375 if (vars->flow_ctrl & BNX2X_FLOW_CTRL_TX) in bnx2x_update_pfc_xmac()
1468 struct link_vars *vars) in bnx2x_emac_init() argument
1546 struct link_vars *vars, u8 lb) in bnx2x_umac_enable() argument
1568 switch (vars->line_speed) { in bnx2x_umac_enable()
1583 vars->line_speed); in bnx2x_umac_enable()
1586 if (!(vars->flow_ctrl & BNX2X_FLOW_CTRL_TX)) in bnx2x_umac_enable()
1589 if (!(vars->flow_ctrl & BNX2X_FLOW_CTRL_RX)) in bnx2x_umac_enable()
1592 if (vars->duplex == DUPLEX_HALF) in bnx2x_umac_enable()
1599 if (vars->eee_status & SHMEM_EEE_ADV_STATUS_MASK) { in bnx2x_umac_enable()
1638 ((vars->flow_ctrl & BNX2X_FLOW_CTRL_TX) != 0), 1); in bnx2x_umac_enable()
1639 vars->mac_type = MAC_TYPE_UMAC; in bnx2x_umac_enable()
1735 struct link_vars *vars, u8 lb) in bnx2x_xmac_enable() argument
1743 bnx2x_xmac_init(params, vars->line_speed); in bnx2x_xmac_enable()
1773 bnx2x_update_pfc_xmac(params, vars, 0); in bnx2x_xmac_enable()
1775 if (vars->eee_status & SHMEM_EEE_ADV_STATUS_MASK) { in bnx2x_xmac_enable()
1787 if ((vars->line_speed == SPEED_20000) && in bnx2x_xmac_enable()
1797 ((vars->flow_ctrl & BNX2X_FLOW_CTRL_TX) != 0), 1); in bnx2x_xmac_enable()
1799 vars->mac_type = MAC_TYPE_XMAC; in bnx2x_xmac_enable()
1805 struct link_vars *vars, u8 lb) in bnx2x_emac_enable() argument
1822 if (vars->phy_flags & PHY_XGXS_FLAG) { in bnx2x_emac_enable()
1853 if (vars->flow_ctrl & BNX2X_FLOW_CTRL_RX) in bnx2x_emac_enable()
1858 if (vars->flow_ctrl & BNX2X_FLOW_CTRL_TX) in bnx2x_emac_enable()
1925 (vars->flow_ctrl & BNX2X_FLOW_CTRL_TX)) in bnx2x_emac_enable()
1933 vars->mac_type = MAC_TYPE_EMAC; in bnx2x_emac_enable()
1938 struct link_vars *vars) in bnx2x_update_pfc_bmac1() argument
1948 (vars->flow_ctrl & BNX2X_FLOW_CTRL_RX)) in bnx2x_update_pfc_bmac1()
1959 (vars->flow_ctrl & BNX2X_FLOW_CTRL_TX)) in bnx2x_update_pfc_bmac1()
1967 struct link_vars *vars, in bnx2x_update_pfc_bmac2() argument
1981 (vars->flow_ctrl & BNX2X_FLOW_CTRL_RX)) in bnx2x_update_pfc_bmac2()
1993 (vars->flow_ctrl & BNX2X_FLOW_CTRL_TX)) in bnx2x_update_pfc_bmac2()
2119 struct link_vars *vars, in bnx2x_update_pfc_nig() argument
2215 struct link_vars *vars, in bnx2x_update_pfc() argument
2227 vars->link_status |= LINK_STATUS_PFC_ENABLED; in bnx2x_update_pfc()
2229 vars->link_status &= ~LINK_STATUS_PFC_ENABLED; in bnx2x_update_pfc()
2231 bnx2x_update_mng(params, vars->link_status); in bnx2x_update_pfc()
2234 bnx2x_update_pfc_nig(params, vars, pfc_params); in bnx2x_update_pfc()
2236 if (!vars->link_up) in bnx2x_update_pfc()
2242 if (vars->mac_type == MAC_TYPE_XMAC) in bnx2x_update_pfc()
2243 bnx2x_update_pfc_xmac(params, vars, 0); in bnx2x_update_pfc()
2250 bnx2x_emac_enable(params, vars, 0); in bnx2x_update_pfc()
2254 bnx2x_update_pfc_bmac2(params, vars, bmac_loopback); in bnx2x_update_pfc()
2256 bnx2x_update_pfc_bmac1(params, vars); in bnx2x_update_pfc()
2261 (vars->flow_ctrl & BNX2X_FLOW_CTRL_TX)) in bnx2x_update_pfc()
2269 struct link_vars *vars, in bnx2x_bmac1_enable() argument
2311 bnx2x_update_pfc_bmac1(params, vars); in bnx2x_bmac1_enable()
2333 struct link_vars *vars, in bnx2x_bmac2_enable() argument
2392 bnx2x_update_pfc_bmac2(params, vars, is_lb); in bnx2x_bmac2_enable()
2398 struct link_vars *vars, in bnx2x_bmac_enable() argument
2420 rc = bnx2x_bmac2_enable(params, vars, is_lb); in bnx2x_bmac_enable()
2422 rc = bnx2x_bmac1_enable(params, vars, is_lb); in bnx2x_bmac_enable()
2429 (vars->flow_ctrl & BNX2X_FLOW_CTRL_TX)) in bnx2x_bmac_enable()
2438 vars->mac_type = MAC_TYPE_BMAC; in bnx2x_bmac_enable()
2900 struct link_vars *vars) in bnx2x_eee_set_timers() argument
2917 vars->eee_status &= ~(SHMEM_EEE_TIMER_MASK | SHMEM_EEE_TIME_OUTPUT_BIT); in bnx2x_eee_set_timers()
2921 vars->eee_status |= (eee_idle & SHMEM_EEE_TIMER_MASK) | in bnx2x_eee_set_timers()
2926 vars->eee_status |= eee_mode; in bnx2x_eee_set_timers()
2933 struct link_vars *vars, u8 mode) in bnx2x_eee_initial_config() argument
2935 vars->eee_status |= ((u32) mode) << SHMEM_EEE_SUPPORTED_SHIFT; in bnx2x_eee_initial_config()
2939 vars->eee_status |= SHMEM_EEE_LPI_REQUESTED_BIT; in bnx2x_eee_initial_config()
2941 vars->eee_status &= ~SHMEM_EEE_LPI_REQUESTED_BIT; in bnx2x_eee_initial_config()
2944 vars->eee_status |= SHMEM_EEE_REQUESTED_BIT; in bnx2x_eee_initial_config()
2946 vars->eee_status &= ~SHMEM_EEE_REQUESTED_BIT; in bnx2x_eee_initial_config()
2948 return bnx2x_eee_set_timers(params, vars); in bnx2x_eee_initial_config()
2953 struct link_vars *vars) in bnx2x_eee_disable() argument
2962 vars->eee_status &= ~SHMEM_EEE_ADV_STATUS_MASK; in bnx2x_eee_disable()
2969 struct link_vars *vars, u8 modes) in bnx2x_eee_advertise() argument
2988 vars->eee_status &= ~SHMEM_EEE_ADV_STATUS_MASK; in bnx2x_eee_advertise()
2989 vars->eee_status |= (modes << SHMEM_EEE_ADV_STATUS_SHIFT); in bnx2x_eee_advertise()
3006 struct link_vars *vars) in bnx2x_eee_an_resolve() argument
3019 if (vars->line_speed == SPEED_100) in bnx2x_eee_an_resolve()
3027 if (vars->line_speed == SPEED_1000) in bnx2x_eee_an_resolve()
3035 if (vars->line_speed == SPEED_10000) in bnx2x_eee_an_resolve()
3041 vars->eee_status &= ~SHMEM_EEE_LP_ADV_STATUS_MASK; in bnx2x_eee_an_resolve()
3042 vars->eee_status |= (lp_adv << SHMEM_EEE_LP_ADV_STATUS_SHIFT); in bnx2x_eee_an_resolve()
3046 vars->eee_status |= SHMEM_EEE_ACTIVE_BIT; in bnx2x_eee_an_resolve()
3420 struct link_vars *vars) in set_phy_vars() argument
3450 vars->link_status |= LINK_STATUS_AUTO_NEGOTIATE_ENABLED; in set_phy_vars()
3462 struct link_vars *vars) in bnx2x_ext_phy_set_pause() argument
3472 bnx2x_calc_ieee_aneg_adv(phy, params, &vars->ieee_fc); in bnx2x_ext_phy_set_pause()
3473 if ((vars->ieee_fc & in bnx2x_ext_phy_set_pause()
3478 if ((vars->ieee_fc & in bnx2x_ext_phy_set_pause()
3489 struct link_vars *vars, in bnx2x_pause_resolve() argument
3497 vars->flow_ctrl = BNX2X_FLOW_CTRL_TX; in bnx2x_pause_resolve()
3502 vars->flow_ctrl = BNX2X_FLOW_CTRL_RX; in bnx2x_pause_resolve()
3515 vars->flow_ctrl = BNX2X_FLOW_CTRL_BOTH; in bnx2x_pause_resolve()
3518 vars->flow_ctrl = BNX2X_FLOW_CTRL_RX; in bnx2x_pause_resolve()
3524 vars->flow_ctrl = BNX2X_FLOW_CTRL_NONE; in bnx2x_pause_resolve()
3528 vars->link_status |= LINK_STATUS_LINK_PARTNER_SYMMETRIC_PAUSE; in bnx2x_pause_resolve()
3530 vars->link_status |= LINK_STATUS_LINK_PARTNER_ASYMMETRIC_PAUSE; in bnx2x_pause_resolve()
3536 struct link_vars *vars) in bnx2x_ext_phy_update_adv_fc() argument
3585 bnx2x_pause_resolve(phy, params, vars, pause_result); in bnx2x_ext_phy_update_adv_fc()
3591 struct link_vars *vars) in bnx2x_ext_phy_resolve_fc() argument
3594 vars->flow_ctrl = BNX2X_FLOW_CTRL_NONE; in bnx2x_ext_phy_resolve_fc()
3598 bnx2x_ext_phy_update_adv_fc(phy, params, vars); in bnx2x_ext_phy_resolve_fc()
3600 vars->flow_ctrl = phy->req_flow_ctrl; in bnx2x_ext_phy_resolve_fc()
3602 vars->flow_ctrl = params->req_fc_auto_adv; in bnx2x_ext_phy_resolve_fc()
3603 else if (vars->link_status & LINK_STATUS_AUTO_NEGOTIATE_COMPLETE) { in bnx2x_ext_phy_resolve_fc()
3605 bnx2x_ext_phy_update_adv_fc(phy, params, vars); in bnx2x_ext_phy_resolve_fc()
3630 struct link_vars *vars) in bnx2x_warpcore_enable_AN_KR2() argument
3668 struct link_vars *vars, in bnx2x_disable_kr2() argument
3699 vars->check_kr2_recovery_cnt = CHECK_KR2_RECOVERY_CNT; in bnx2x_disable_kr2()
3731 struct link_vars *vars) { in bnx2x_warpcore_enable_AN_KR() argument
3759 if (((vars->line_speed == SPEED_AUTO_NEG) && in bnx2x_warpcore_enable_AN_KR()
3761 (vars->line_speed == SPEED_1000)) { in bnx2x_warpcore_enable_AN_KR()
3769 if (((vars->line_speed == SPEED_AUTO_NEG) && in bnx2x_warpcore_enable_AN_KR()
3771 (vars->line_speed == SPEED_10000)) { in bnx2x_warpcore_enable_AN_KR()
3823 bnx2x_ext_phy_set_pause(params, phy, vars); in bnx2x_warpcore_enable_AN_KR()
3824 vars->rx_tx_asic_rst = MAX_KR_LINK_RETRY; in bnx2x_warpcore_enable_AN_KR()
3847 bnx2x_warpcore_enable_AN_KR2(phy, params, vars); in bnx2x_warpcore_enable_AN_KR()
3874 bnx2x_disable_kr2(params, vars, phy); in bnx2x_warpcore_enable_AN_KR()
3883 struct link_vars *vars) in bnx2x_warpcore_set_10G_KR() argument
4401 struct link_vars *vars) in bnx2x_warpcore_config_runtime() argument
4407 vars->turn_to_run_wc_rt = vars->turn_to_run_wc_rt ? 0 : 1; in bnx2x_warpcore_config_runtime()
4409 if (!vars->turn_to_run_wc_rt) in bnx2x_warpcore_config_runtime()
4412 if (vars->rx_tx_asic_rst) { in bnx2x_warpcore_config_runtime()
4429 vars->rx_tx_asic_rst = 0; in bnx2x_warpcore_config_runtime()
4439 vars->rx_tx_asic_rst--; in bnx2x_warpcore_config_runtime()
4441 vars->rx_tx_asic_rst); in bnx2x_warpcore_config_runtime()
4492 struct link_vars *vars) in bnx2x_warpcore_config_init() argument
4504 vars->line_speed, serdes_net_if); in bnx2x_warpcore_config_init()
4507 vars->phy_flags |= PHY_XGXS_FLAG; in bnx2x_warpcore_config_init()
4512 vars->phy_flags |= PHY_SGMII_FLAG; in bnx2x_warpcore_config_init()
4521 bnx2x_warpcore_enable_AN_KR(phy, params, vars); in bnx2x_warpcore_config_init()
4524 bnx2x_warpcore_set_10G_KR(phy, params, vars); in bnx2x_warpcore_config_init()
4530 if (vars->line_speed == SPEED_10000) { in bnx2x_warpcore_config_init()
4567 if (vars->line_speed != SPEED_20000) { in bnx2x_warpcore_config_init()
4579 bnx2x_warpcore_enable_AN_KR(phy, params, vars); in bnx2x_warpcore_config_init()
4699 struct link_vars *vars) in bnx2x_sync_link() argument
4703 if (vars->link_status & LINK_STATUS_PHYSICAL_LINK_FLAG) in bnx2x_sync_link()
4704 vars->phy_flags |= PHY_PHYSICAL_LINK_FLAG; in bnx2x_sync_link()
4705 vars->link_up = (vars->link_status & LINK_STATUS_LINK_UP); in bnx2x_sync_link()
4706 if (vars->link_up) { in bnx2x_sync_link()
4709 vars->phy_link_up = 1; in bnx2x_sync_link()
4710 vars->duplex = DUPLEX_FULL; in bnx2x_sync_link()
4711 switch (vars->link_status & in bnx2x_sync_link()
4714 vars->duplex = DUPLEX_HALF; in bnx2x_sync_link()
4717 vars->line_speed = SPEED_10; in bnx2x_sync_link()
4721 vars->duplex = DUPLEX_HALF; in bnx2x_sync_link()
4725 vars->line_speed = SPEED_100; in bnx2x_sync_link()
4729 vars->duplex = DUPLEX_HALF; in bnx2x_sync_link()
4732 vars->line_speed = SPEED_1000; in bnx2x_sync_link()
4736 vars->duplex = DUPLEX_HALF; in bnx2x_sync_link()
4739 vars->line_speed = SPEED_2500; in bnx2x_sync_link()
4743 vars->line_speed = SPEED_10000; in bnx2x_sync_link()
4746 vars->line_speed = SPEED_20000; in bnx2x_sync_link()
4751 vars->flow_ctrl = 0; in bnx2x_sync_link()
4752 if (vars->link_status & LINK_STATUS_TX_FLOW_CONTROL_ENABLED) in bnx2x_sync_link()
4753 vars->flow_ctrl |= BNX2X_FLOW_CTRL_TX; in bnx2x_sync_link()
4755 if (vars->link_status & LINK_STATUS_RX_FLOW_CONTROL_ENABLED) in bnx2x_sync_link()
4756 vars->flow_ctrl |= BNX2X_FLOW_CTRL_RX; in bnx2x_sync_link()
4758 if (!vars->flow_ctrl) in bnx2x_sync_link()
4759 vars->flow_ctrl = BNX2X_FLOW_CTRL_NONE; in bnx2x_sync_link()
4761 if (vars->line_speed && in bnx2x_sync_link()
4762 ((vars->line_speed == SPEED_10) || in bnx2x_sync_link()
4763 (vars->line_speed == SPEED_100))) { in bnx2x_sync_link()
4764 vars->phy_flags |= PHY_SGMII_FLAG; in bnx2x_sync_link()
4766 vars->phy_flags &= ~PHY_SGMII_FLAG; in bnx2x_sync_link()
4768 if (vars->line_speed && in bnx2x_sync_link()
4770 (vars->line_speed == SPEED_1000)) in bnx2x_sync_link()
4771 vars->phy_flags |= PHY_SGMII_FLAG; in bnx2x_sync_link()
4773 link_10g_plus = (vars->line_speed >= SPEED_10000); in bnx2x_sync_link()
4777 vars->mac_type = MAC_TYPE_XMAC; in bnx2x_sync_link()
4779 vars->mac_type = MAC_TYPE_BMAC; in bnx2x_sync_link()
4782 vars->mac_type = MAC_TYPE_UMAC; in bnx2x_sync_link()
4784 vars->mac_type = MAC_TYPE_EMAC; in bnx2x_sync_link()
4789 vars->phy_link_up = 0; in bnx2x_sync_link()
4791 vars->line_speed = 0; in bnx2x_sync_link()
4792 vars->duplex = DUPLEX_FULL; in bnx2x_sync_link()
4793 vars->flow_ctrl = BNX2X_FLOW_CTRL_NONE; in bnx2x_sync_link()
4796 vars->mac_type = MAC_TYPE_NONE; in bnx2x_sync_link()
4797 if (vars->link_status & LINK_STATUS_PHYSICAL_LINK_FLAG) in bnx2x_sync_link()
4798 vars->phy_flags |= PHY_HALF_OPEN_CONN_FLAG; in bnx2x_sync_link()
4799 if (vars->link_status & LINK_STATUS_SFP_TX_FAULT) in bnx2x_sync_link()
4800 vars->phy_flags |= PHY_SFP_TX_FAULT_FLAG; in bnx2x_sync_link()
4805 struct link_vars *vars) in bnx2x_link_status_update() argument
4811 set_phy_vars(params, vars); in bnx2x_link_status_update()
4813 vars->link_status = REG_RD(bp, params->shmem_base + in bnx2x_link_status_update()
4820 vars->link_status |= LINK_STATUS_LINK_UP; in bnx2x_link_status_update()
4823 vars->eee_status = REG_RD(bp, params->shmem2_base + in bnx2x_link_status_update()
4827 vars->phy_flags = PHY_XGXS_FLAG; in bnx2x_link_status_update()
4828 bnx2x_sync_link(params, vars); in bnx2x_link_status_update()
4851 vars->aeu_int_mask = REG_RD(bp, sync_offset); in bnx2x_link_status_update()
4854 if (vars->link_status & LINK_STATUS_PFC_ENABLED) in bnx2x_link_status_update()
4866 vars->link_status, vars->phy_link_up, vars->aeu_int_mask); in bnx2x_link_status_update()
4868 vars->line_speed, vars->duplex, vars->flow_ctrl); in bnx2x_link_status_update()
5033 struct link_vars *vars, in bnx2x_set_autoneg() argument
5045 if (vars->line_speed == SPEED_AUTO_NEG) in bnx2x_set_autoneg()
5063 if (vars->line_speed == SPEED_AUTO_NEG) in bnx2x_set_autoneg()
5077 if (vars->line_speed == SPEED_AUTO_NEG) { in bnx2x_set_autoneg()
5137 struct link_vars *vars) in bnx2x_program_serdes() argument
5167 if (!((vars->line_speed == SPEED_1000) || in bnx2x_program_serdes()
5168 (vars->line_speed == SPEED_100) || in bnx2x_program_serdes()
5169 (vars->line_speed == SPEED_10))) { in bnx2x_program_serdes()
5173 if (vars->line_speed == SPEED_10000) in bnx2x_program_serdes()
5267 struct link_vars *vars) in bnx2x_initialize_sgmii_process() argument
5289 if (!(vars->line_speed == SPEED_AUTO_NEG)) { in bnx2x_initialize_sgmii_process()
5301 switch (vars->line_speed) { in bnx2x_initialize_sgmii_process()
5316 vars->line_speed); in bnx2x_initialize_sgmii_process()
5373 struct link_vars *vars, in bnx2x_update_adv_fc() argument
5414 bnx2x_pause_resolve(phy, params, vars, pause_result); in bnx2x_update_adv_fc()
5420 struct link_vars *vars, in bnx2x_flow_ctrl_resolve() argument
5424 vars->flow_ctrl = BNX2X_FLOW_CTRL_NONE; in bnx2x_flow_ctrl_resolve()
5430 bnx2x_update_adv_fc(phy, params, vars, gp_status); in bnx2x_flow_ctrl_resolve()
5432 vars->flow_ctrl = phy->req_flow_ctrl; in bnx2x_flow_ctrl_resolve()
5434 vars->flow_ctrl = params->req_fc_auto_adv; in bnx2x_flow_ctrl_resolve()
5436 (!(vars->phy_flags & PHY_SGMII_FLAG))) { in bnx2x_flow_ctrl_resolve()
5438 vars->flow_ctrl = params->req_fc_auto_adv; in bnx2x_flow_ctrl_resolve()
5441 bnx2x_update_adv_fc(phy, params, vars, gp_status); in bnx2x_flow_ctrl_resolve()
5443 DP(NETIF_MSG_LINK, "flow_ctrl 0x%x\n", vars->flow_ctrl); in bnx2x_flow_ctrl_resolve()
5516 struct link_vars *vars, in bnx2x_xgxs_an_resolve() argument
5520 vars->link_status |= in bnx2x_xgxs_an_resolve()
5524 vars->link_status |= in bnx2x_xgxs_an_resolve()
5529 struct link_vars *vars, in bnx2x_get_link_speed_duplex() argument
5536 vars->link_status |= LINK_STATUS_AUTO_NEGOTIATE_ENABLED; in bnx2x_get_link_speed_duplex()
5540 vars->phy_link_up = 1; in bnx2x_get_link_speed_duplex()
5541 vars->link_status |= LINK_STATUS_LINK_UP; in bnx2x_get_link_speed_duplex()
5545 vars->line_speed = SPEED_10; in bnx2x_get_link_speed_duplex()
5547 vars->link_status |= LINK_10TFD; in bnx2x_get_link_speed_duplex()
5549 vars->link_status |= LINK_10THD; in bnx2x_get_link_speed_duplex()
5553 vars->line_speed = SPEED_100; in bnx2x_get_link_speed_duplex()
5555 vars->link_status |= LINK_100TXFD; in bnx2x_get_link_speed_duplex()
5557 vars->link_status |= LINK_100TXHD; in bnx2x_get_link_speed_duplex()
5562 vars->line_speed = SPEED_1000; in bnx2x_get_link_speed_duplex()
5564 vars->link_status |= LINK_1000TFD; in bnx2x_get_link_speed_duplex()
5566 vars->link_status |= LINK_1000THD; in bnx2x_get_link_speed_duplex()
5570 vars->line_speed = SPEED_2500; in bnx2x_get_link_speed_duplex()
5572 vars->link_status |= LINK_2500TFD; in bnx2x_get_link_speed_duplex()
5574 vars->link_status |= LINK_2500THD; in bnx2x_get_link_speed_duplex()
5590 vars->line_speed = SPEED_10000; in bnx2x_get_link_speed_duplex()
5591 vars->link_status |= LINK_10GTFD; in bnx2x_get_link_speed_duplex()
5595 vars->line_speed = SPEED_20000; in bnx2x_get_link_speed_duplex()
5596 vars->link_status |= LINK_20GTFD; in bnx2x_get_link_speed_duplex()
5607 vars->phy_link_up = 0; in bnx2x_get_link_speed_duplex()
5609 vars->duplex = DUPLEX_FULL; in bnx2x_get_link_speed_duplex()
5610 vars->flow_ctrl = BNX2X_FLOW_CTRL_NONE; in bnx2x_get_link_speed_duplex()
5611 vars->mac_type = MAC_TYPE_NONE; in bnx2x_get_link_speed_duplex()
5614 vars->phy_link_up, vars->line_speed); in bnx2x_get_link_speed_duplex()
5620 struct link_vars *vars) in bnx2x_link_settings_status() argument
5639 rc = bnx2x_get_link_speed_duplex(phy, params, vars, link_up, speed_mask, in bnx2x_link_settings_status()
5646 vars->duplex = duplex; in bnx2x_link_settings_status()
5647 bnx2x_flow_ctrl_resolve(phy, params, vars, gp_status); in bnx2x_link_settings_status()
5649 bnx2x_xgxs_an_resolve(phy, params, vars, in bnx2x_link_settings_status()
5662 (vars->link_status & LINK_STATUS_AUTO_NEGOTIATE_COMPLETE)) { in bnx2x_link_settings_status()
5669 vars->link_status |= in bnx2x_link_settings_status()
5673 vars->link_status |= in bnx2x_link_settings_status()
5680 vars->link_status |= in bnx2x_link_settings_status()
5683 vars->link_status |= in bnx2x_link_settings_status()
5688 vars->duplex, vars->flow_ctrl, vars->link_status); in bnx2x_link_settings_status()
5694 struct link_vars *vars) in bnx2x_warpcore_read_status() argument
5720 bnx2x_ext_phy_resolve_fc(phy, params, vars); in bnx2x_warpcore_read_status()
5747 vars->link_status |= in bnx2x_warpcore_read_status()
5755 vars->link_status |= in bnx2x_warpcore_read_status()
5758 bnx2x_ext_phy_resolve_fc(phy, params, vars); in bnx2x_warpcore_read_status()
5759 vars->duplex = duplex; in bnx2x_warpcore_read_status()
5763 if ((vars->link_status & LINK_STATUS_AUTO_NEGOTIATE_COMPLETE) && in bnx2x_warpcore_read_status()
5771 vars->link_status |= in bnx2x_warpcore_read_status()
5775 vars->link_status |= in bnx2x_warpcore_read_status()
5782 vars->link_status |= in bnx2x_warpcore_read_status()
5785 vars->link_status |= in bnx2x_warpcore_read_status()
5805 rc = bnx2x_get_link_speed_duplex(phy, params, vars, link_up, gp_speed, in bnx2x_warpcore_read_status()
5811 vars->rx_tx_asic_rst = MAX_KR_LINK_RETRY; in bnx2x_warpcore_read_status()
5814 vars->duplex, vars->flow_ctrl, vars->link_status); in bnx2x_warpcore_read_status()
5857 struct link_vars *vars) in bnx2x_emac_program() argument
5869 switch (vars->line_speed) { in bnx2x_emac_program()
5889 vars->line_speed); in bnx2x_emac_program()
5893 if (vars->duplex == DUPLEX_HALF) in bnx2x_emac_program()
5899 bnx2x_set_led(params, vars, LED_MODE_OPER, vars->line_speed); in bnx2x_emac_program()
5929 struct link_vars *vars) in bnx2x_xgxs_config_init() argument
5934 if (!(vars->phy_flags & PHY_SGMII_FLAG)) { in bnx2x_xgxs_config_init()
5941 if (vars->line_speed != SPEED_AUTO_NEG || in bnx2x_xgxs_config_init()
5947 bnx2x_set_autoneg(phy, params, vars, 0); in bnx2x_xgxs_config_init()
5950 bnx2x_program_serdes(phy, params, vars); in bnx2x_xgxs_config_init()
5960 vars->ieee_fc); in bnx2x_xgxs_config_init()
5963 bnx2x_set_autoneg(phy, params, vars, enable_cl73); in bnx2x_xgxs_config_init()
5972 bnx2x_initialize_sgmii_process(phy, params, vars); in bnx2x_xgxs_config_init()
5978 struct link_vars *vars) in bnx2x_prepare_xgxs() argument
5981 vars->phy_flags |= PHY_XGXS_FLAG; in bnx2x_prepare_xgxs()
5991 vars->phy_flags |= PHY_SGMII_FLAG; in bnx2x_prepare_xgxs()
5993 vars->phy_flags &= ~PHY_SGMII_FLAG; in bnx2x_prepare_xgxs()
5995 bnx2x_calc_ieee_aneg_adv(phy, params, &vars->ieee_fc); in bnx2x_prepare_xgxs()
6125 struct link_vars *vars, u8 is_10g_plus) in bnx2x_link_int_ack() argument
6137 if (vars->phy_link_up) { in bnx2x_link_int_ack()
6299 struct link_vars *vars, u8 mode, u32 speed) in bnx2x_set_led() argument
6342 if (!vars->link_up) in bnx2x_set_led()
6447 int bnx2x_test_link(struct link_params *params, struct link_vars *vars, in bnx2x_test_link() argument
6529 struct link_vars *vars) in bnx2x_link_initialize() argument
6538 vars->line_speed = params->phy[INT_PHY].req_line_speed; in bnx2x_link_initialize()
6545 bnx2x_prepare_xgxs(¶ms->phy[INT_PHY], params, vars); in bnx2x_link_initialize()
6554 if (vars->line_speed == SPEED_AUTO_NEG && in bnx2x_link_initialize()
6559 params->phy[INT_PHY].config_init(phy, params, vars); in bnx2x_link_initialize()
6565 vars->line_speed = params->phy[INT_PHY].req_line_speed; in bnx2x_link_initialize()
6571 vars->link_status |= LINK_STATUS_SERDES_LINK; in bnx2x_link_initialize()
6582 vars->link_status |= LINK_STATUS_SERDES_LINK; in bnx2x_link_initialize()
6593 params, vars); in bnx2x_link_initialize()
6634 struct link_vars *vars) in bnx2x_update_link_down() argument
6640 bnx2x_set_led(params, vars, LED_MODE_OFF, 0); in bnx2x_update_link_down()
6641 vars->phy_flags &= ~PHY_PHYSICAL_LINK_FLAG; in bnx2x_update_link_down()
6643 vars->mac_type = MAC_TYPE_NONE; in bnx2x_update_link_down()
6646 vars->link_status &= ~LINK_UPDATE_MASK; in bnx2x_update_link_down()
6647 vars->line_speed = 0; in bnx2x_update_link_down()
6648 bnx2x_update_mng(params, vars->link_status); in bnx2x_update_link_down()
6669 vars->eee_status &= ~(SHMEM_EEE_LP_ADV_STATUS_MASK | in bnx2x_update_link_down()
6672 bnx2x_update_mng_eee(params, vars->eee_status); in bnx2x_update_link_down()
6681 struct link_vars *vars, in bnx2x_update_link_up() argument
6688 vars->link_status |= (LINK_STATUS_LINK_UP | in bnx2x_update_link_up()
6690 vars->phy_flags |= PHY_PHYSICAL_LINK_FLAG; in bnx2x_update_link_up()
6692 if (vars->flow_ctrl & BNX2X_FLOW_CTRL_TX) in bnx2x_update_link_up()
6693 vars->link_status |= in bnx2x_update_link_up()
6696 if (vars->flow_ctrl & BNX2X_FLOW_CTRL_RX) in bnx2x_update_link_up()
6697 vars->link_status |= in bnx2x_update_link_up()
6701 if (bnx2x_xmac_enable(params, vars, 0) == in bnx2x_update_link_up()
6704 vars->link_up = 0; in bnx2x_update_link_up()
6705 vars->phy_flags |= PHY_HALF_OPEN_CONN_FLAG; in bnx2x_update_link_up()
6706 vars->link_status &= ~LINK_STATUS_LINK_UP; in bnx2x_update_link_up()
6709 bnx2x_umac_enable(params, vars, 0); in bnx2x_update_link_up()
6710 bnx2x_set_led(params, vars, in bnx2x_update_link_up()
6711 LED_MODE_OPER, vars->line_speed); in bnx2x_update_link_up()
6713 if ((vars->eee_status & SHMEM_EEE_ACTIVE_BIT) && in bnx2x_update_link_up()
6714 (vars->eee_status & SHMEM_EEE_LPI_REQUESTED_BIT)) { in bnx2x_update_link_up()
6726 if (bnx2x_bmac_enable(params, vars, 0, 1) == in bnx2x_update_link_up()
6729 vars->link_up = 0; in bnx2x_update_link_up()
6730 vars->phy_flags |= PHY_HALF_OPEN_CONN_FLAG; in bnx2x_update_link_up()
6731 vars->link_status &= ~LINK_STATUS_LINK_UP; in bnx2x_update_link_up()
6734 bnx2x_set_led(params, vars, in bnx2x_update_link_up()
6737 rc = bnx2x_emac_program(params, vars); in bnx2x_update_link_up()
6738 bnx2x_emac_enable(params, vars, 0); in bnx2x_update_link_up()
6741 if ((vars->link_status & in bnx2x_update_link_up()
6743 && (!(vars->phy_flags & PHY_SGMII_FLAG)) && in bnx2x_update_link_up()
6751 rc |= bnx2x_pbf_update(params, vars->flow_ctrl, in bnx2x_update_link_up()
6752 vars->line_speed); in bnx2x_update_link_up()
6758 bnx2x_update_mng(params, vars->link_status); in bnx2x_update_link_up()
6759 bnx2x_update_mng_eee(params, vars->eee_status); in bnx2x_update_link_up()
6763 bnx2x_check_half_open_conn(params, vars, 0); in bnx2x_update_link_up()
6801 int bnx2x_link_update(struct link_params *params, struct link_vars *vars) in bnx2x_link_update() argument
6807 u32 prev_link_status = vars->link_status; in bnx2x_link_update()
6811 u16 ext_phy_line_speed = 0, prev_line_speed = vars->line_speed; in bnx2x_link_update()
6813 vars->phy_flags &= ~PHY_HALF_OPEN_CONN_FLAG; in bnx2x_link_update()
6814 vars->link_status &= ~LINK_UPDATE_MASK; in bnx2x_link_update()
6825 phy_vars[phy_index].eee_status = vars->eee_status; in bnx2x_link_update()
6832 port, (vars->phy_flags & PHY_XGXS_FLAG), in bnx2x_link_update()
6911 prev_line_speed = vars->line_speed; in bnx2x_link_update()
6921 params, vars); in bnx2x_link_update()
6930 vars->flow_ctrl = phy_vars[active_external_phy].flow_ctrl; in bnx2x_link_update()
6934 vars->link_status |= phy_vars[active_external_phy].link_status; in bnx2x_link_update()
6950 vars->duplex = phy_vars[active_external_phy].duplex; in bnx2x_link_update()
6953 vars->link_status |= LINK_STATUS_SERDES_LINK; in bnx2x_link_update()
6955 vars->link_status &= ~LINK_STATUS_SERDES_LINK; in bnx2x_link_update()
6957 vars->eee_status = phy_vars[active_external_phy].eee_status; in bnx2x_link_update()
6974 " ext_phy_line_speed = %d\n", vars->flow_ctrl, in bnx2x_link_update()
6975 vars->link_status, ext_phy_line_speed); in bnx2x_link_update()
6981 if (vars->phy_link_up) { in bnx2x_link_update()
6983 (ext_phy_line_speed != vars->line_speed)) { in bnx2x_link_update()
6986 " link speed %d\n", vars->line_speed, in bnx2x_link_update()
6988 vars->phy_link_up = 0; in bnx2x_link_update()
6989 } else if (prev_line_speed != vars->line_speed) { in bnx2x_link_update()
6997 link_10g_plus = (vars->line_speed >= SPEED_10000); in bnx2x_link_update()
6999 bnx2x_link_int_ack(params, vars, link_10g_plus); in bnx2x_link_update()
7011 vars->phy_link_up, in bnx2x_link_update()
7016 && ext_phy_link_up && !vars->phy_link_up) { in bnx2x_link_update()
7017 vars->line_speed = ext_phy_line_speed; in bnx2x_link_update()
7018 if (vars->line_speed < SPEED_1000) in bnx2x_link_update()
7019 vars->phy_flags |= PHY_SGMII_FLAG; in bnx2x_link_update()
7021 vars->phy_flags &= ~PHY_SGMII_FLAG; in bnx2x_link_update()
7026 vars); in bnx2x_link_update()
7032 vars->link_up = (vars->phy_link_up && in bnx2x_link_update()
7039 vars->link_status |= LINK_STATUS_PFC_ENABLED; in bnx2x_link_update()
7041 vars->link_status &= ~LINK_STATUS_PFC_ENABLED; in bnx2x_link_update()
7043 if (vars->link_up) in bnx2x_link_update()
7044 rc = bnx2x_update_link_up(params, vars, link_10g_plus); in bnx2x_link_update()
7046 rc = bnx2x_update_link_down(params, vars); in bnx2x_link_update()
7048 if ((prev_link_status ^ vars->link_status) & LINK_STATUS_LINK_UP) in bnx2x_link_update()
7096 struct link_vars *vars) in bnx2x_ext_phy_10G_an_resolve() argument
7106 vars->link_status |= LINK_STATUS_AUTO_NEGOTIATE_COMPLETE; in bnx2x_ext_phy_10G_an_resolve()
7108 vars->link_status |= LINK_STATUS_PARALLEL_DETECTION_USED; in bnx2x_ext_phy_10G_an_resolve()
7116 struct link_vars *vars) in bnx2x_8073_resolve_fc() argument
7121 vars->flow_ctrl = phy->req_flow_ctrl; in bnx2x_8073_resolve_fc()
7125 if (bnx2x_ext_phy_resolve_fc(phy, params, vars) && in bnx2x_8073_resolve_fc()
7126 (vars->flow_ctrl == BNX2X_FLOW_CTRL_NONE)) { in bnx2x_8073_resolve_fc()
7142 bnx2x_pause_resolve(phy, params, vars, pause_result); in bnx2x_8073_resolve_fc()
7325 struct link_vars *vars) in bnx2x_8073_set_pause_cl37() argument
7334 bnx2x_calc_ieee_aneg_adv(phy, params, &vars->ieee_fc); in bnx2x_8073_set_pause_cl37()
7335 if ((vars->ieee_fc & in bnx2x_8073_set_pause_cl37()
7340 if ((vars->ieee_fc & in bnx2x_8073_set_pause_cl37()
7345 if ((vars->ieee_fc & in bnx2x_8073_set_pause_cl37()
7376 struct link_vars *vars) in bnx2x_8073_config_init() argument
7395 bnx2x_8073_set_pause_cl37(params, phy, vars); in bnx2x_8073_config_init()
7512 bnx2x_ext_phy_set_pause(params, phy, vars); in bnx2x_8073_config_init()
7523 struct link_vars *vars) in bnx2x_8073_read_status() argument
7604 vars->line_speed = SPEED_10000; in bnx2x_8073_read_status()
7609 vars->line_speed = SPEED_2500; in bnx2x_8073_read_status()
7614 vars->line_speed = SPEED_1000; in bnx2x_8073_read_status()
7634 if (vars->line_speed == SPEED_1000) { in bnx2x_8073_read_status()
7646 bnx2x_ext_phy_10G_an_resolve(bp, phy, vars); in bnx2x_8073_read_status()
7647 bnx2x_8073_resolve_fc(phy, params, vars); in bnx2x_8073_read_status()
7648 vars->duplex = DUPLEX_FULL; in bnx2x_8073_read_status()
7651 if (vars->link_status & LINK_STATUS_AUTO_NEGOTIATE_COMPLETE) { in bnx2x_8073_read_status()
7656 vars->link_status |= in bnx2x_8073_read_status()
7659 vars->link_status |= in bnx2x_8073_read_status()
7687 struct link_vars *vars) in bnx2x_8705_config_init() argument
7713 struct link_vars *vars) in bnx2x_8705_read_status() argument
7738 vars->line_speed = SPEED_10000; in bnx2x_8705_read_status()
7739 bnx2x_ext_phy_resolve_fc(phy, params, vars); in bnx2x_8705_read_status()
8835 struct link_vars *vars) in bnx2x_8706_8726_read_status() argument
8872 vars->line_speed = SPEED_1000; in bnx2x_8706_8726_read_status()
8874 vars->line_speed = SPEED_10000; in bnx2x_8706_8726_read_status()
8875 bnx2x_ext_phy_resolve_fc(phy, params, vars); in bnx2x_8706_8726_read_status()
8876 vars->duplex = DUPLEX_FULL; in bnx2x_8706_8726_read_status()
8880 if (vars->line_speed == SPEED_10000) { in bnx2x_8706_8726_read_status()
8886 vars->fault_detected = 1; in bnx2x_8706_8726_read_status()
8897 struct link_vars *vars) in bnx2x_8706_config_init() argument
9001 struct link_vars *vars) in bnx2x_8706_read_status() argument
9003 return bnx2x_8706_8726_read_status(phy, params, vars); in bnx2x_8706_read_status()
9057 struct link_vars *vars) in bnx2x_8726_read_status() argument
9061 u8 link_up = bnx2x_8706_8726_read_status(phy, params, vars); in bnx2x_8726_read_status()
9069 vars->line_speed = 0; in bnx2x_8726_read_status()
9078 struct link_vars *vars) in bnx2x_8726_config_init() argument
9114 bnx2x_ext_phy_set_pause(params, phy, vars); in bnx2x_8726_config_init()
9293 struct link_vars *vars) in bnx2x_8727_config_init() argument
9462 struct link_vars *vars) in bnx2x_8727_read_status() argument
9481 vars->line_speed = 0; in bnx2x_8727_read_status()
9567 vars->line_speed = SPEED_10000; in bnx2x_8727_read_status()
9572 vars->line_speed = SPEED_1000; in bnx2x_8727_read_status()
9582 if (vars->line_speed == SPEED_10000) { in bnx2x_8727_read_status()
9590 vars->fault_detected = 1; in bnx2x_8727_read_status()
9595 bnx2x_ext_phy_resolve_fc(phy, params, vars); in bnx2x_8727_read_status()
9596 vars->duplex = DUPLEX_FULL; in bnx2x_8727_read_status()
9597 DP(NETIF_MSG_LINK, "duplex = 0x%x\n", vars->duplex); in bnx2x_8727_read_status()
9803 struct link_vars *vars) in bnx2x_848xx_cmn_config_init() argument
9817 bnx2x_ext_phy_set_pause(params, phy, vars); in bnx2x_848xx_cmn_config_init()
9949 struct link_vars *vars) in bnx2x_8481_config_init() argument
9961 bnx2x_848xx_cmn_config_init(phy, params, vars); in bnx2x_8481_config_init()
10145 struct link_vars *vars) in bnx2x_848xx_pair_swap_cfg() argument
10244 struct link_vars *vars) in bnx2x_8483x_disable_eee() argument
10260 return bnx2x_eee_disable(phy, params, vars); in bnx2x_8483x_disable_eee()
10265 struct link_vars *vars) in bnx2x_8483x_enable_eee() argument
10278 return bnx2x_eee_advertise(phy, params, vars, SHMEM_EEE_10G_ADV); in bnx2x_8483x_enable_eee()
10284 struct link_vars *vars) in bnx2x_848x3_config_init() argument
10320 temp = vars->line_speed; in bnx2x_848x3_config_init()
10321 vars->line_speed = SPEED_10000; in bnx2x_848x3_config_init()
10322 bnx2x_set_autoneg(¶ms->phy[INT_PHY], params, vars, 0); in bnx2x_848x3_config_init()
10323 bnx2x_program_serdes(¶ms->phy[INT_PHY], params, vars); in bnx2x_848x3_config_init()
10324 vars->line_speed = temp; in bnx2x_848x3_config_init()
10384 bnx2x_848xx_pair_swap_cfg(phy, params, vars); in bnx2x_848x3_config_init()
10398 rc = bnx2x_848xx_cmn_config_init(phy, params, vars); in bnx2x_848x3_config_init()
10425 rc = bnx2x_eee_initial_config(params, vars, SHMEM_EEE_10G_ADV); in bnx2x_848x3_config_init()
10428 bnx2x_8483x_disable_eee(phy, params, vars); in bnx2x_848x3_config_init()
10436 rc = bnx2x_8483x_enable_eee(phy, params, vars); in bnx2x_848x3_config_init()
10438 rc = bnx2x_8483x_disable_eee(phy, params, vars); in bnx2x_848x3_config_init()
10444 vars->eee_status &= ~SHMEM_EEE_SUPPORTED_MASK; in bnx2x_848x3_config_init()
10484 struct link_vars *vars) in bnx2x_848xx_read_status() argument
10502 vars->line_speed = SPEED_10000; in bnx2x_848xx_read_status()
10503 vars->duplex = DUPLEX_FULL; in bnx2x_848xx_read_status()
10505 bnx2x_ext_phy_10G_an_resolve(bp, phy, vars); in bnx2x_848xx_read_status()
10525 vars->line_speed = SPEED_10; in bnx2x_848xx_read_status()
10527 vars->line_speed = SPEED_100; in bnx2x_848xx_read_status()
10529 vars->line_speed = SPEED_1000; in bnx2x_848xx_read_status()
10531 vars->line_speed = 0; in bnx2x_848xx_read_status()
10537 vars->duplex = DUPLEX_FULL; in bnx2x_848xx_read_status()
10539 vars->duplex = DUPLEX_HALF; in bnx2x_848xx_read_status()
10543 vars->line_speed, in bnx2x_848xx_read_status()
10544 (vars->duplex == DUPLEX_FULL)); in bnx2x_848xx_read_status()
10551 vars->link_status |= in bnx2x_848xx_read_status()
10558 vars->link_status |= in bnx2x_848xx_read_status()
10564 vars->line_speed); in bnx2x_848xx_read_status()
10565 bnx2x_ext_phy_resolve_fc(phy, params, vars); in bnx2x_848xx_read_status()
10571 vars->link_status |= in bnx2x_848xx_read_status()
10574 vars->link_status |= in bnx2x_848xx_read_status()
10577 vars->link_status |= in bnx2x_848xx_read_status()
10580 vars->link_status |= in bnx2x_848xx_read_status()
10583 vars->link_status |= in bnx2x_848xx_read_status()
10590 vars->link_status |= in bnx2x_848xx_read_status()
10593 vars->link_status |= in bnx2x_848xx_read_status()
10600 vars->link_status |= in bnx2x_848xx_read_status()
10605 bnx2x_eee_an_resolve(phy, params, vars); in bnx2x_848xx_read_status()
11038 struct link_vars *vars) in bnx2x_54618se_config_init() argument
11089 bnx2x_calc_ieee_aneg_adv(phy, params, &vars->ieee_fc); in bnx2x_54618se_config_init()
11091 if ((vars->ieee_fc & MDIO_COMBO_IEEE0_AUTO_NEG_ADV_PAUSE_ASYMMETRIC) == in bnx2x_54618se_config_init()
11095 if ((vars->ieee_fc & MDIO_COMBO_IEEE0_AUTO_NEG_ADV_PAUSE_BOTH) == in bnx2x_54618se_config_init()
11191 rc = bnx2x_eee_initial_config(params, vars, SHMEM_EEE_1G_ADV); in bnx2x_54618se_config_init()
11194 bnx2x_eee_disable(phy, params, vars); in bnx2x_54618se_config_init()
11204 bnx2x_eee_advertise(phy, params, vars, in bnx2x_54618se_config_init()
11208 bnx2x_eee_disable(phy, params, vars); in bnx2x_54618se_config_init()
11211 vars->eee_status &= ~SHMEM_EEE_1G_ADV << in bnx2x_54618se_config_init()
11304 struct link_vars *vars) in bnx2x_54618se_read_status() argument
11327 vars->line_speed = SPEED_1000; in bnx2x_54618se_read_status()
11328 vars->duplex = DUPLEX_FULL; in bnx2x_54618se_read_status()
11330 vars->line_speed = SPEED_1000; in bnx2x_54618se_read_status()
11331 vars->duplex = DUPLEX_HALF; in bnx2x_54618se_read_status()
11333 vars->line_speed = SPEED_100; in bnx2x_54618se_read_status()
11334 vars->duplex = DUPLEX_FULL; in bnx2x_54618se_read_status()
11338 vars->line_speed = SPEED_100; in bnx2x_54618se_read_status()
11339 vars->duplex = DUPLEX_HALF; in bnx2x_54618se_read_status()
11341 vars->line_speed = SPEED_10; in bnx2x_54618se_read_status()
11342 vars->duplex = DUPLEX_FULL; in bnx2x_54618se_read_status()
11344 vars->line_speed = SPEED_10; in bnx2x_54618se_read_status()
11345 vars->duplex = DUPLEX_HALF; in bnx2x_54618se_read_status()
11347 vars->line_speed = 0; in bnx2x_54618se_read_status()
11351 vars->line_speed, in bnx2x_54618se_read_status()
11352 (vars->duplex == DUPLEX_FULL)); in bnx2x_54618se_read_status()
11359 vars->link_status |= in bnx2x_54618se_read_status()
11365 vars->link_status |= in bnx2x_54618se_read_status()
11369 vars->line_speed); in bnx2x_54618se_read_status()
11371 bnx2x_ext_phy_resolve_fc(phy, params, vars); in bnx2x_54618se_read_status()
11373 if (vars->link_status & LINK_STATUS_AUTO_NEGOTIATE_COMPLETE) { in bnx2x_54618se_read_status()
11378 vars->link_status |= in bnx2x_54618se_read_status()
11381 vars->link_status |= in bnx2x_54618se_read_status()
11384 vars->link_status |= in bnx2x_54618se_read_status()
11387 vars->link_status |= in bnx2x_54618se_read_status()
11390 vars->link_status |= in bnx2x_54618se_read_status()
11395 vars->link_status |= in bnx2x_54618se_read_status()
11398 vars->link_status |= in bnx2x_54618se_read_status()
11403 bnx2x_eee_an_resolve(phy, params, vars); in bnx2x_54618se_read_status()
11463 struct link_vars *vars) in bnx2x_7101_config_init() argument
11482 bnx2x_ext_phy_set_pause(params, phy, vars); in bnx2x_7101_config_init()
11502 struct link_vars *vars) in bnx2x_7101_read_status() argument
11525 vars->line_speed = SPEED_10000; in bnx2x_7101_read_status()
11526 vars->duplex = DUPLEX_FULL; in bnx2x_7101_read_status()
11529 bnx2x_ext_phy_10G_an_resolve(bp, phy, vars); in bnx2x_7101_read_status()
11530 bnx2x_ext_phy_resolve_fc(phy, params, vars); in bnx2x_7101_read_status()
11534 vars->link_status |= in bnx2x_7101_read_status()
12663 struct link_vars *vars) in bnx2x_init_bmac_loopback() argument
12666 vars->link_up = 1; in bnx2x_init_bmac_loopback()
12667 vars->line_speed = SPEED_10000; in bnx2x_init_bmac_loopback()
12668 vars->duplex = DUPLEX_FULL; in bnx2x_init_bmac_loopback()
12669 vars->flow_ctrl = BNX2X_FLOW_CTRL_NONE; in bnx2x_init_bmac_loopback()
12670 vars->mac_type = MAC_TYPE_BMAC; in bnx2x_init_bmac_loopback()
12672 vars->phy_flags = PHY_XGXS_FLAG; in bnx2x_init_bmac_loopback()
12677 bnx2x_bmac_enable(params, vars, 1, 1); in bnx2x_init_bmac_loopback()
12683 struct link_vars *vars) in bnx2x_init_emac_loopback() argument
12686 vars->link_up = 1; in bnx2x_init_emac_loopback()
12687 vars->line_speed = SPEED_1000; in bnx2x_init_emac_loopback()
12688 vars->duplex = DUPLEX_FULL; in bnx2x_init_emac_loopback()
12689 vars->flow_ctrl = BNX2X_FLOW_CTRL_NONE; in bnx2x_init_emac_loopback()
12690 vars->mac_type = MAC_TYPE_EMAC; in bnx2x_init_emac_loopback()
12692 vars->phy_flags = PHY_XGXS_FLAG; in bnx2x_init_emac_loopback()
12696 bnx2x_emac_enable(params, vars, 1); in bnx2x_init_emac_loopback()
12697 bnx2x_emac_program(params, vars); in bnx2x_init_emac_loopback()
12702 struct link_vars *vars) in bnx2x_init_xmac_loopback() argument
12705 vars->link_up = 1; in bnx2x_init_xmac_loopback()
12707 vars->line_speed = SPEED_10000; in bnx2x_init_xmac_loopback()
12709 vars->line_speed = params->req_line_speed[0]; in bnx2x_init_xmac_loopback()
12710 vars->duplex = DUPLEX_FULL; in bnx2x_init_xmac_loopback()
12711 vars->flow_ctrl = BNX2X_FLOW_CTRL_NONE; in bnx2x_init_xmac_loopback()
12712 vars->mac_type = MAC_TYPE_XMAC; in bnx2x_init_xmac_loopback()
12713 vars->phy_flags = PHY_XGXS_FLAG; in bnx2x_init_xmac_loopback()
12723 bnx2x_xmac_enable(params, vars, 1); in bnx2x_init_xmac_loopback()
12728 struct link_vars *vars) in bnx2x_init_umac_loopback() argument
12731 vars->link_up = 1; in bnx2x_init_umac_loopback()
12732 vars->line_speed = SPEED_1000; in bnx2x_init_umac_loopback()
12733 vars->duplex = DUPLEX_FULL; in bnx2x_init_umac_loopback()
12734 vars->flow_ctrl = BNX2X_FLOW_CTRL_NONE; in bnx2x_init_umac_loopback()
12735 vars->mac_type = MAC_TYPE_UMAC; in bnx2x_init_umac_loopback()
12736 vars->phy_flags = PHY_XGXS_FLAG; in bnx2x_init_umac_loopback()
12737 bnx2x_umac_enable(params, vars, 1); in bnx2x_init_umac_loopback()
12743 struct link_vars *vars) in bnx2x_init_xgxs_loopback() argument
12747 vars->link_up = 1; in bnx2x_init_xgxs_loopback()
12748 vars->flow_ctrl = BNX2X_FLOW_CTRL_NONE; in bnx2x_init_xgxs_loopback()
12749 vars->duplex = DUPLEX_FULL; in bnx2x_init_xgxs_loopback()
12751 vars->line_speed = SPEED_1000; in bnx2x_init_xgxs_loopback()
12754 vars->line_speed = SPEED_20000; in bnx2x_init_xgxs_loopback()
12756 vars->line_speed = SPEED_10000; in bnx2x_init_xgxs_loopback()
12760 bnx2x_link_initialize(params, vars); in bnx2x_init_xgxs_loopback()
12764 bnx2x_umac_enable(params, vars, 0); in bnx2x_init_xgxs_loopback()
12766 bnx2x_emac_program(params, vars); in bnx2x_init_xgxs_loopback()
12767 bnx2x_emac_enable(params, vars, 0); in bnx2x_init_xgxs_loopback()
12771 bnx2x_xmac_enable(params, vars, 0); in bnx2x_init_xgxs_loopback()
12773 bnx2x_bmac_enable(params, vars, 0, 1); in bnx2x_init_xgxs_loopback()
12791 bnx2x_set_led(params, vars, LED_MODE_OPER, vars->line_speed); in bnx2x_init_xgxs_loopback()
12813 struct link_vars *vars) in bnx2x_avoid_link_flap() argument
12821 bnx2x_link_status_update(params, vars); in bnx2x_avoid_link_flap()
12857 if (vars->line_speed < SPEED_10000) in bnx2x_avoid_link_flap()
12858 bnx2x_umac_enable(params, vars, 0); in bnx2x_avoid_link_flap()
12860 bnx2x_xmac_enable(params, vars, 0); in bnx2x_avoid_link_flap()
12862 if (vars->line_speed < SPEED_10000) in bnx2x_avoid_link_flap()
12863 bnx2x_emac_enable(params, vars, 0); in bnx2x_avoid_link_flap()
12865 bnx2x_bmac_enable(params, vars, 0, !dont_clear_stat); in bnx2x_avoid_link_flap()
12888 struct link_vars *vars, in bnx2x_cannot_avoid_link_flap() argument
12894 bnx2x_link_reset(params, vars, 1); in bnx2x_cannot_avoid_link_flap()
12947 int bnx2x_phy_init(struct link_params *params, struct link_vars *vars) in bnx2x_phy_init() argument
12957 vars->link_status = 0; in bnx2x_phy_init()
12958 vars->phy_link_up = 0; in bnx2x_phy_init()
12959 vars->link_up = 0; in bnx2x_phy_init()
12960 vars->line_speed = 0; in bnx2x_phy_init()
12961 vars->duplex = DUPLEX_FULL; in bnx2x_phy_init()
12962 vars->flow_ctrl = BNX2X_FLOW_CTRL_NONE; in bnx2x_phy_init()
12963 vars->mac_type = MAC_TYPE_NONE; in bnx2x_phy_init()
12964 vars->phy_flags = 0; in bnx2x_phy_init()
12965 vars->check_kr2_recovery_cnt = 0; in bnx2x_phy_init()
12975 return bnx2x_avoid_link_flap(params, vars); in bnx2x_phy_init()
12980 bnx2x_cannot_avoid_link_flap(params, vars, lfa_status); in bnx2x_phy_init()
12989 bnx2x_emac_init(params, vars); in bnx2x_phy_init()
12992 vars->link_status |= LINK_STATUS_PFC_ENABLED; in bnx2x_phy_init()
12998 set_phy_vars(params, vars); in bnx2x_phy_init()
13003 bnx2x_init_bmac_loopback(params, vars); in bnx2x_phy_init()
13006 bnx2x_init_emac_loopback(params, vars); in bnx2x_phy_init()
13009 bnx2x_init_xmac_loopback(params, vars); in bnx2x_phy_init()
13012 bnx2x_init_umac_loopback(params, vars); in bnx2x_phy_init()
13016 bnx2x_init_xgxs_loopback(params, vars); in bnx2x_phy_init()
13025 bnx2x_link_initialize(params, vars); in bnx2x_phy_init()
13030 bnx2x_update_mng(params, vars->link_status); in bnx2x_phy_init()
13032 bnx2x_update_mng_eee(params, vars->eee_status); in bnx2x_phy_init()
13036 int bnx2x_link_reset(struct link_params *params, struct link_vars *vars, in bnx2x_link_reset() argument
13043 vars->link_status = 0; in bnx2x_link_reset()
13045 bnx2x_update_mng(params, vars->link_status); in bnx2x_link_reset()
13046 vars->eee_status &= ~(SHMEM_EEE_LP_ADV_STATUS_MASK | in bnx2x_link_reset()
13048 bnx2x_update_mng_eee(params, vars->eee_status); in bnx2x_link_reset()
13080 bnx2x_set_led(params, vars, LED_MODE_OFF, 0); in bnx2x_link_reset()
13123 vars->link_up = 0; in bnx2x_link_reset()
13124 vars->phy_flags = 0; in bnx2x_link_reset()
13128 struct link_vars *vars) in bnx2x_lfa_reset() argument
13131 vars->link_up = 0; in bnx2x_lfa_reset()
13132 vars->phy_flags = 0; in bnx2x_lfa_reset()
13135 return bnx2x_link_reset(params, vars, 1); in bnx2x_lfa_reset()
13615 struct link_vars *vars) in bnx2x_check_over_curr() argument
13633 if ((vars->phy_flags & PHY_OVER_CURRENT_FLAG) == 0) { in bnx2x_check_over_curr()
13642 vars->phy_flags |= PHY_OVER_CURRENT_FLAG; in bnx2x_check_over_curr()
13646 vars->phy_flags &= ~PHY_OVER_CURRENT_FLAG; in bnx2x_check_over_curr()
13651 struct link_vars *vars, u32 status, in bnx2x_analyze_link_error() argument
13657 u32 old_status = (vars->phy_flags & phy_flag) ? 1 : 0; in bnx2x_analyze_link_error()
13673 DP(NETIF_MSG_LINK, "Link changed:[%x %x]->%x\n", vars->link_up, in bnx2x_analyze_link_error()
13677 if ((vars->phy_flags & PHY_PHYSICAL_LINK_FLAG) == 0) in bnx2x_analyze_link_error()
13684 vars->link_status &= ~LINK_STATUS_LINK_UP; in bnx2x_analyze_link_error()
13685 vars->link_status |= link_flag; in bnx2x_analyze_link_error()
13686 vars->link_up = 0; in bnx2x_analyze_link_error()
13687 vars->phy_flags |= phy_flag; in bnx2x_analyze_link_error()
13696 vars->link_status |= LINK_STATUS_LINK_UP; in bnx2x_analyze_link_error()
13697 vars->link_status &= ~link_flag; in bnx2x_analyze_link_error()
13698 vars->link_up = 1; in bnx2x_analyze_link_error()
13699 vars->phy_flags &= ~phy_flag; in bnx2x_analyze_link_error()
13705 bnx2x_sync_link(params, vars); in bnx2x_analyze_link_error()
13707 bnx2x_set_led(params, vars, led_mode, SPEED_10000); in bnx2x_analyze_link_error()
13710 bnx2x_update_mng(params, vars->link_status); in bnx2x_analyze_link_error()
13713 vars->periodic_flags |= PERIODIC_FLAGS_LINK_EVENT; in bnx2x_analyze_link_error()
13730 struct link_vars *vars, in bnx2x_check_half_open_conn() argument
13737 if (((vars->phy_flags & PHY_PHYSICAL_LINK_FLAG) == 0) || in bnx2x_check_half_open_conn()
13759 bnx2x_analyze_link_error(params, vars, lss_status, in bnx2x_check_half_open_conn()
13778 bnx2x_analyze_link_error(params, vars, lss_status, in bnx2x_check_half_open_conn()
13786 struct link_vars *vars) in bnx2x_sfp_tx_fault_detection() argument
13803 led_change = bnx2x_analyze_link_error(params, vars, value, in bnx2x_sfp_tx_fault_detection()
13811 if (vars->phy_flags & PHY_SFP_TX_FAULT_FLAG) { in bnx2x_sfp_tx_fault_detection()
13813 vars->link_status |= LINK_STATUS_SFP_TX_FAULT; in bnx2x_sfp_tx_fault_detection()
13816 vars->link_status &= ~LINK_STATUS_SFP_TX_FAULT; in bnx2x_sfp_tx_fault_detection()
13828 struct link_vars *vars, in bnx2x_kr2_recovery() argument
13833 bnx2x_warpcore_enable_AN_KR2(phy, params, vars); in bnx2x_kr2_recovery()
13838 struct link_vars *vars, in bnx2x_check_kr2_wa() argument
13850 if (vars->check_kr2_recovery_cnt > 0) { in bnx2x_check_kr2_wa()
13851 vars->check_kr2_recovery_cnt--; in bnx2x_check_kr2_wa()
13858 bnx2x_kr2_recovery(params, vars, phy); in bnx2x_check_kr2_wa()
13876 bnx2x_kr2_recovery(params, vars, phy); in bnx2x_check_kr2_wa()
13895 bnx2x_kr2_recovery(params, vars, phy); in bnx2x_check_kr2_wa()
13903 bnx2x_disable_kr2(params, vars, phy); in bnx2x_check_kr2_wa()
13910 void bnx2x_period_func(struct link_params *params, struct link_vars *vars) in bnx2x_period_func() argument
13917 if (bnx2x_check_half_open_conn(params, vars, 1) != in bnx2x_period_func()
13931 bnx2x_check_kr2_wa(params, vars, phy); in bnx2x_period_func()
13932 bnx2x_check_over_curr(params, vars); in bnx2x_period_func()
13933 if (vars->rx_tx_asic_rst) in bnx2x_period_func()
13934 bnx2x_warpcore_config_runtime(phy, params, vars); in bnx2x_period_func()
13942 bnx2x_sfp_tx_fault_detection(phy, params, vars); in bnx2x_period_func()
13943 } else if (vars->link_status & in bnx2x_period_func()
13946 vars->link_status &= ~LINK_STATUS_SFP_TX_FAULT; in bnx2x_period_func()
13947 vars->phy_flags &= ~PHY_SFP_TX_FAULT_FLAG; in bnx2x_period_func()
13949 bnx2x_update_mng(params, vars->link_status); in bnx2x_period_func()
13998 void bnx2x_init_mod_abs_int(struct bnx2x *bp, struct link_vars *vars, in bnx2x_init_mod_abs_int() argument
14040 vars->aeu_int_mask = AEU_INPUTS_ATTN_BITS_GPIO0_FUNCTION_0 << in bnx2x_init_mod_abs_int()
14046 REG_WR(bp, sync_offset, vars->aeu_int_mask); in bnx2x_init_mod_abs_int()
14049 gpio_num, gpio_port, vars->aeu_int_mask); in bnx2x_init_mod_abs_int()
14058 aeu_mask |= vars->aeu_int_mask; in bnx2x_init_mod_abs_int()