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()
6297 struct link_vars *vars, u8 mode, u32 speed) in bnx2x_set_led() argument
6340 if (!vars->link_up) in bnx2x_set_led()
6445 int bnx2x_test_link(struct link_params *params, struct link_vars *vars, in bnx2x_test_link() argument
6527 struct link_vars *vars) in bnx2x_link_initialize() argument
6536 vars->line_speed = params->phy[INT_PHY].req_line_speed; in bnx2x_link_initialize()
6543 bnx2x_prepare_xgxs(&params->phy[INT_PHY], params, vars); in bnx2x_link_initialize()
6552 if (vars->line_speed == SPEED_AUTO_NEG && in bnx2x_link_initialize()
6557 params->phy[INT_PHY].config_init(phy, params, vars); in bnx2x_link_initialize()
6563 vars->line_speed = params->phy[INT_PHY].req_line_speed; in bnx2x_link_initialize()
6569 vars->link_status |= LINK_STATUS_SERDES_LINK; in bnx2x_link_initialize()
6580 vars->link_status |= LINK_STATUS_SERDES_LINK; in bnx2x_link_initialize()
6591 params, vars); in bnx2x_link_initialize()
6632 struct link_vars *vars) in bnx2x_update_link_down() argument
6638 bnx2x_set_led(params, vars, LED_MODE_OFF, 0); in bnx2x_update_link_down()
6639 vars->phy_flags &= ~PHY_PHYSICAL_LINK_FLAG; in bnx2x_update_link_down()
6641 vars->mac_type = MAC_TYPE_NONE; in bnx2x_update_link_down()
6644 vars->link_status &= ~LINK_UPDATE_MASK; in bnx2x_update_link_down()
6645 vars->line_speed = 0; in bnx2x_update_link_down()
6646 bnx2x_update_mng(params, vars->link_status); in bnx2x_update_link_down()
6667 vars->eee_status &= ~(SHMEM_EEE_LP_ADV_STATUS_MASK | in bnx2x_update_link_down()
6670 bnx2x_update_mng_eee(params, vars->eee_status); in bnx2x_update_link_down()
6679 struct link_vars *vars, in bnx2x_update_link_up() argument
6686 vars->link_status |= (LINK_STATUS_LINK_UP | in bnx2x_update_link_up()
6688 vars->phy_flags |= PHY_PHYSICAL_LINK_FLAG; in bnx2x_update_link_up()
6690 if (vars->flow_ctrl & BNX2X_FLOW_CTRL_TX) in bnx2x_update_link_up()
6691 vars->link_status |= in bnx2x_update_link_up()
6694 if (vars->flow_ctrl & BNX2X_FLOW_CTRL_RX) in bnx2x_update_link_up()
6695 vars->link_status |= in bnx2x_update_link_up()
6699 if (bnx2x_xmac_enable(params, vars, 0) == in bnx2x_update_link_up()
6702 vars->link_up = 0; in bnx2x_update_link_up()
6703 vars->phy_flags |= PHY_HALF_OPEN_CONN_FLAG; in bnx2x_update_link_up()
6704 vars->link_status &= ~LINK_STATUS_LINK_UP; in bnx2x_update_link_up()
6707 bnx2x_umac_enable(params, vars, 0); in bnx2x_update_link_up()
6708 bnx2x_set_led(params, vars, in bnx2x_update_link_up()
6709 LED_MODE_OPER, vars->line_speed); in bnx2x_update_link_up()
6711 if ((vars->eee_status & SHMEM_EEE_ACTIVE_BIT) && in bnx2x_update_link_up()
6712 (vars->eee_status & SHMEM_EEE_LPI_REQUESTED_BIT)) { in bnx2x_update_link_up()
6724 if (bnx2x_bmac_enable(params, vars, 0, 1) == in bnx2x_update_link_up()
6727 vars->link_up = 0; in bnx2x_update_link_up()
6728 vars->phy_flags |= PHY_HALF_OPEN_CONN_FLAG; in bnx2x_update_link_up()
6729 vars->link_status &= ~LINK_STATUS_LINK_UP; in bnx2x_update_link_up()
6732 bnx2x_set_led(params, vars, in bnx2x_update_link_up()
6735 rc = bnx2x_emac_program(params, vars); in bnx2x_update_link_up()
6736 bnx2x_emac_enable(params, vars, 0); in bnx2x_update_link_up()
6739 if ((vars->link_status & in bnx2x_update_link_up()
6741 && (!(vars->phy_flags & PHY_SGMII_FLAG)) && in bnx2x_update_link_up()
6749 rc |= bnx2x_pbf_update(params, vars->flow_ctrl, in bnx2x_update_link_up()
6750 vars->line_speed); in bnx2x_update_link_up()
6756 bnx2x_update_mng(params, vars->link_status); in bnx2x_update_link_up()
6757 bnx2x_update_mng_eee(params, vars->eee_status); in bnx2x_update_link_up()
6761 bnx2x_check_half_open_conn(params, vars, 0); in bnx2x_update_link_up()
6799 int bnx2x_link_update(struct link_params *params, struct link_vars *vars) in bnx2x_link_update() argument
6805 u32 prev_link_status = vars->link_status; in bnx2x_link_update()
6809 u16 ext_phy_line_speed = 0, prev_line_speed = vars->line_speed; in bnx2x_link_update()
6811 vars->phy_flags &= ~PHY_HALF_OPEN_CONN_FLAG; in bnx2x_link_update()
6812 vars->link_status &= ~LINK_UPDATE_MASK; in bnx2x_link_update()
6823 phy_vars[phy_index].eee_status = vars->eee_status; in bnx2x_link_update()
6830 port, (vars->phy_flags & PHY_XGXS_FLAG), in bnx2x_link_update()
6909 prev_line_speed = vars->line_speed; in bnx2x_link_update()
6919 params, vars); in bnx2x_link_update()
6928 vars->flow_ctrl = phy_vars[active_external_phy].flow_ctrl; in bnx2x_link_update()
6932 vars->link_status |= phy_vars[active_external_phy].link_status; in bnx2x_link_update()
6948 vars->duplex = phy_vars[active_external_phy].duplex; in bnx2x_link_update()
6951 vars->link_status |= LINK_STATUS_SERDES_LINK; in bnx2x_link_update()
6953 vars->link_status &= ~LINK_STATUS_SERDES_LINK; in bnx2x_link_update()
6955 vars->eee_status = phy_vars[active_external_phy].eee_status; in bnx2x_link_update()
6972 " ext_phy_line_speed = %d\n", vars->flow_ctrl, in bnx2x_link_update()
6973 vars->link_status, ext_phy_line_speed); in bnx2x_link_update()
6979 if (vars->phy_link_up) { in bnx2x_link_update()
6981 (ext_phy_line_speed != vars->line_speed)) { in bnx2x_link_update()
6984 " link speed %d\n", vars->line_speed, in bnx2x_link_update()
6986 vars->phy_link_up = 0; in bnx2x_link_update()
6987 } else if (prev_line_speed != vars->line_speed) { in bnx2x_link_update()
6995 link_10g_plus = (vars->line_speed >= SPEED_10000); in bnx2x_link_update()
6997 bnx2x_link_int_ack(params, vars, link_10g_plus); in bnx2x_link_update()
7009 vars->phy_link_up, in bnx2x_link_update()
7014 && ext_phy_link_up && !vars->phy_link_up) { in bnx2x_link_update()
7015 vars->line_speed = ext_phy_line_speed; in bnx2x_link_update()
7016 if (vars->line_speed < SPEED_1000) in bnx2x_link_update()
7017 vars->phy_flags |= PHY_SGMII_FLAG; in bnx2x_link_update()
7019 vars->phy_flags &= ~PHY_SGMII_FLAG; in bnx2x_link_update()
7024 vars); in bnx2x_link_update()
7030 vars->link_up = (vars->phy_link_up && in bnx2x_link_update()
7037 vars->link_status |= LINK_STATUS_PFC_ENABLED; in bnx2x_link_update()
7039 vars->link_status &= ~LINK_STATUS_PFC_ENABLED; in bnx2x_link_update()
7041 if (vars->link_up) in bnx2x_link_update()
7042 rc = bnx2x_update_link_up(params, vars, link_10g_plus); in bnx2x_link_update()
7044 rc = bnx2x_update_link_down(params, vars); in bnx2x_link_update()
7046 if ((prev_link_status ^ vars->link_status) & LINK_STATUS_LINK_UP) in bnx2x_link_update()
7094 struct link_vars *vars) in bnx2x_ext_phy_10G_an_resolve() argument
7104 vars->link_status |= LINK_STATUS_AUTO_NEGOTIATE_COMPLETE; in bnx2x_ext_phy_10G_an_resolve()
7106 vars->link_status |= LINK_STATUS_PARALLEL_DETECTION_USED; in bnx2x_ext_phy_10G_an_resolve()
7114 struct link_vars *vars) in bnx2x_8073_resolve_fc() argument
7119 vars->flow_ctrl = phy->req_flow_ctrl; in bnx2x_8073_resolve_fc()
7123 if (bnx2x_ext_phy_resolve_fc(phy, params, vars) && in bnx2x_8073_resolve_fc()
7124 (vars->flow_ctrl == BNX2X_FLOW_CTRL_NONE)) { in bnx2x_8073_resolve_fc()
7140 bnx2x_pause_resolve(phy, params, vars, pause_result); in bnx2x_8073_resolve_fc()
7323 struct link_vars *vars) in bnx2x_8073_set_pause_cl37() argument
7332 bnx2x_calc_ieee_aneg_adv(phy, params, &vars->ieee_fc); in bnx2x_8073_set_pause_cl37()
7333 if ((vars->ieee_fc & in bnx2x_8073_set_pause_cl37()
7338 if ((vars->ieee_fc & in bnx2x_8073_set_pause_cl37()
7343 if ((vars->ieee_fc & in bnx2x_8073_set_pause_cl37()
7374 struct link_vars *vars) in bnx2x_8073_config_init() argument
7393 bnx2x_8073_set_pause_cl37(params, phy, vars); in bnx2x_8073_config_init()
7510 bnx2x_ext_phy_set_pause(params, phy, vars); in bnx2x_8073_config_init()
7521 struct link_vars *vars) in bnx2x_8073_read_status() argument
7602 vars->line_speed = SPEED_10000; in bnx2x_8073_read_status()
7607 vars->line_speed = SPEED_2500; in bnx2x_8073_read_status()
7612 vars->line_speed = SPEED_1000; in bnx2x_8073_read_status()
7632 if (vars->line_speed == SPEED_1000) { in bnx2x_8073_read_status()
7644 bnx2x_ext_phy_10G_an_resolve(bp, phy, vars); in bnx2x_8073_read_status()
7645 bnx2x_8073_resolve_fc(phy, params, vars); in bnx2x_8073_read_status()
7646 vars->duplex = DUPLEX_FULL; in bnx2x_8073_read_status()
7649 if (vars->link_status & LINK_STATUS_AUTO_NEGOTIATE_COMPLETE) { in bnx2x_8073_read_status()
7654 vars->link_status |= in bnx2x_8073_read_status()
7657 vars->link_status |= in bnx2x_8073_read_status()
7685 struct link_vars *vars) in bnx2x_8705_config_init() argument
7711 struct link_vars *vars) in bnx2x_8705_read_status() argument
7736 vars->line_speed = SPEED_10000; in bnx2x_8705_read_status()
7737 bnx2x_ext_phy_resolve_fc(phy, params, vars); in bnx2x_8705_read_status()
8833 struct link_vars *vars) in bnx2x_8706_8726_read_status() argument
8870 vars->line_speed = SPEED_1000; in bnx2x_8706_8726_read_status()
8872 vars->line_speed = SPEED_10000; in bnx2x_8706_8726_read_status()
8873 bnx2x_ext_phy_resolve_fc(phy, params, vars); in bnx2x_8706_8726_read_status()
8874 vars->duplex = DUPLEX_FULL; in bnx2x_8706_8726_read_status()
8878 if (vars->line_speed == SPEED_10000) { in bnx2x_8706_8726_read_status()
8884 vars->fault_detected = 1; in bnx2x_8706_8726_read_status()
8895 struct link_vars *vars) in bnx2x_8706_config_init() argument
8999 struct link_vars *vars) in bnx2x_8706_read_status() argument
9001 return bnx2x_8706_8726_read_status(phy, params, vars); in bnx2x_8706_read_status()
9055 struct link_vars *vars) in bnx2x_8726_read_status() argument
9059 u8 link_up = bnx2x_8706_8726_read_status(phy, params, vars); in bnx2x_8726_read_status()
9067 vars->line_speed = 0; in bnx2x_8726_read_status()
9076 struct link_vars *vars) in bnx2x_8726_config_init() argument
9112 bnx2x_ext_phy_set_pause(params, phy, vars); in bnx2x_8726_config_init()
9291 struct link_vars *vars) in bnx2x_8727_config_init() argument
9460 struct link_vars *vars) in bnx2x_8727_read_status() argument
9479 vars->line_speed = 0; in bnx2x_8727_read_status()
9565 vars->line_speed = SPEED_10000; in bnx2x_8727_read_status()
9570 vars->line_speed = SPEED_1000; in bnx2x_8727_read_status()
9580 if (vars->line_speed == SPEED_10000) { in bnx2x_8727_read_status()
9588 vars->fault_detected = 1; in bnx2x_8727_read_status()
9593 bnx2x_ext_phy_resolve_fc(phy, params, vars); in bnx2x_8727_read_status()
9594 vars->duplex = DUPLEX_FULL; in bnx2x_8727_read_status()
9595 DP(NETIF_MSG_LINK, "duplex = 0x%x\n", vars->duplex); in bnx2x_8727_read_status()
9801 struct link_vars *vars) in bnx2x_848xx_cmn_config_init() argument
9815 bnx2x_ext_phy_set_pause(params, phy, vars); in bnx2x_848xx_cmn_config_init()
9947 struct link_vars *vars) in bnx2x_8481_config_init() argument
9959 bnx2x_848xx_cmn_config_init(phy, params, vars); in bnx2x_8481_config_init()
10143 struct link_vars *vars) in bnx2x_848xx_pair_swap_cfg() argument
10242 struct link_vars *vars) in bnx2x_8483x_disable_eee() argument
10258 return bnx2x_eee_disable(phy, params, vars); in bnx2x_8483x_disable_eee()
10263 struct link_vars *vars) in bnx2x_8483x_enable_eee() argument
10276 return bnx2x_eee_advertise(phy, params, vars, SHMEM_EEE_10G_ADV); in bnx2x_8483x_enable_eee()
10282 struct link_vars *vars) in bnx2x_848x3_config_init() argument
10318 temp = vars->line_speed; in bnx2x_848x3_config_init()
10319 vars->line_speed = SPEED_10000; in bnx2x_848x3_config_init()
10320 bnx2x_set_autoneg(&params->phy[INT_PHY], params, vars, 0); in bnx2x_848x3_config_init()
10321 bnx2x_program_serdes(&params->phy[INT_PHY], params, vars); in bnx2x_848x3_config_init()
10322 vars->line_speed = temp; in bnx2x_848x3_config_init()
10382 bnx2x_848xx_pair_swap_cfg(phy, params, vars); in bnx2x_848x3_config_init()
10396 rc = bnx2x_848xx_cmn_config_init(phy, params, vars); in bnx2x_848x3_config_init()
10423 rc = bnx2x_eee_initial_config(params, vars, SHMEM_EEE_10G_ADV); in bnx2x_848x3_config_init()
10426 bnx2x_8483x_disable_eee(phy, params, vars); in bnx2x_848x3_config_init()
10434 rc = bnx2x_8483x_enable_eee(phy, params, vars); in bnx2x_848x3_config_init()
10436 rc = bnx2x_8483x_disable_eee(phy, params, vars); in bnx2x_848x3_config_init()
10442 vars->eee_status &= ~SHMEM_EEE_SUPPORTED_MASK; in bnx2x_848x3_config_init()
10482 struct link_vars *vars) in bnx2x_848xx_read_status() argument
10500 vars->line_speed = SPEED_10000; in bnx2x_848xx_read_status()
10501 vars->duplex = DUPLEX_FULL; in bnx2x_848xx_read_status()
10503 bnx2x_ext_phy_10G_an_resolve(bp, phy, vars); in bnx2x_848xx_read_status()
10523 vars->line_speed = SPEED_10; in bnx2x_848xx_read_status()
10525 vars->line_speed = SPEED_100; in bnx2x_848xx_read_status()
10527 vars->line_speed = SPEED_1000; in bnx2x_848xx_read_status()
10529 vars->line_speed = 0; in bnx2x_848xx_read_status()
10535 vars->duplex = DUPLEX_FULL; in bnx2x_848xx_read_status()
10537 vars->duplex = DUPLEX_HALF; in bnx2x_848xx_read_status()
10541 vars->line_speed, in bnx2x_848xx_read_status()
10542 (vars->duplex == DUPLEX_FULL)); in bnx2x_848xx_read_status()
10549 vars->link_status |= in bnx2x_848xx_read_status()
10556 vars->link_status |= in bnx2x_848xx_read_status()
10562 vars->line_speed); in bnx2x_848xx_read_status()
10563 bnx2x_ext_phy_resolve_fc(phy, params, vars); in bnx2x_848xx_read_status()
10569 vars->link_status |= in bnx2x_848xx_read_status()
10572 vars->link_status |= in bnx2x_848xx_read_status()
10575 vars->link_status |= in bnx2x_848xx_read_status()
10578 vars->link_status |= in bnx2x_848xx_read_status()
10581 vars->link_status |= in bnx2x_848xx_read_status()
10588 vars->link_status |= in bnx2x_848xx_read_status()
10591 vars->link_status |= in bnx2x_848xx_read_status()
10598 vars->link_status |= in bnx2x_848xx_read_status()
10603 bnx2x_eee_an_resolve(phy, params, vars); in bnx2x_848xx_read_status()
11036 struct link_vars *vars) in bnx2x_54618se_config_init() argument
11087 bnx2x_calc_ieee_aneg_adv(phy, params, &vars->ieee_fc); in bnx2x_54618se_config_init()
11089 if ((vars->ieee_fc & MDIO_COMBO_IEEE0_AUTO_NEG_ADV_PAUSE_ASYMMETRIC) == in bnx2x_54618se_config_init()
11093 if ((vars->ieee_fc & MDIO_COMBO_IEEE0_AUTO_NEG_ADV_PAUSE_BOTH) == in bnx2x_54618se_config_init()
11189 rc = bnx2x_eee_initial_config(params, vars, SHMEM_EEE_1G_ADV); in bnx2x_54618se_config_init()
11192 bnx2x_eee_disable(phy, params, vars); in bnx2x_54618se_config_init()
11202 bnx2x_eee_advertise(phy, params, vars, in bnx2x_54618se_config_init()
11206 bnx2x_eee_disable(phy, params, vars); in bnx2x_54618se_config_init()
11209 vars->eee_status &= ~SHMEM_EEE_1G_ADV << in bnx2x_54618se_config_init()
11302 struct link_vars *vars) in bnx2x_54618se_read_status() argument
11325 vars->line_speed = SPEED_1000; in bnx2x_54618se_read_status()
11326 vars->duplex = DUPLEX_FULL; in bnx2x_54618se_read_status()
11328 vars->line_speed = SPEED_1000; in bnx2x_54618se_read_status()
11329 vars->duplex = DUPLEX_HALF; in bnx2x_54618se_read_status()
11331 vars->line_speed = SPEED_100; in bnx2x_54618se_read_status()
11332 vars->duplex = DUPLEX_FULL; in bnx2x_54618se_read_status()
11336 vars->line_speed = SPEED_100; in bnx2x_54618se_read_status()
11337 vars->duplex = DUPLEX_HALF; in bnx2x_54618se_read_status()
11339 vars->line_speed = SPEED_10; in bnx2x_54618se_read_status()
11340 vars->duplex = DUPLEX_FULL; in bnx2x_54618se_read_status()
11342 vars->line_speed = SPEED_10; in bnx2x_54618se_read_status()
11343 vars->duplex = DUPLEX_HALF; in bnx2x_54618se_read_status()
11345 vars->line_speed = 0; in bnx2x_54618se_read_status()
11349 vars->line_speed, in bnx2x_54618se_read_status()
11350 (vars->duplex == DUPLEX_FULL)); in bnx2x_54618se_read_status()
11357 vars->link_status |= in bnx2x_54618se_read_status()
11363 vars->link_status |= in bnx2x_54618se_read_status()
11367 vars->line_speed); in bnx2x_54618se_read_status()
11369 bnx2x_ext_phy_resolve_fc(phy, params, vars); in bnx2x_54618se_read_status()
11371 if (vars->link_status & LINK_STATUS_AUTO_NEGOTIATE_COMPLETE) { in bnx2x_54618se_read_status()
11376 vars->link_status |= in bnx2x_54618se_read_status()
11379 vars->link_status |= in bnx2x_54618se_read_status()
11382 vars->link_status |= in bnx2x_54618se_read_status()
11385 vars->link_status |= in bnx2x_54618se_read_status()
11388 vars->link_status |= in bnx2x_54618se_read_status()
11393 vars->link_status |= in bnx2x_54618se_read_status()
11396 vars->link_status |= in bnx2x_54618se_read_status()
11401 bnx2x_eee_an_resolve(phy, params, vars); in bnx2x_54618se_read_status()
11461 struct link_vars *vars) in bnx2x_7101_config_init() argument
11480 bnx2x_ext_phy_set_pause(params, phy, vars); in bnx2x_7101_config_init()
11500 struct link_vars *vars) in bnx2x_7101_read_status() argument
11523 vars->line_speed = SPEED_10000; in bnx2x_7101_read_status()
11524 vars->duplex = DUPLEX_FULL; in bnx2x_7101_read_status()
11527 bnx2x_ext_phy_10G_an_resolve(bp, phy, vars); in bnx2x_7101_read_status()
11528 bnx2x_ext_phy_resolve_fc(phy, params, vars); in bnx2x_7101_read_status()
11532 vars->link_status |= in bnx2x_7101_read_status()
12661 struct link_vars *vars) in bnx2x_init_bmac_loopback() argument
12664 vars->link_up = 1; in bnx2x_init_bmac_loopback()
12665 vars->line_speed = SPEED_10000; in bnx2x_init_bmac_loopback()
12666 vars->duplex = DUPLEX_FULL; in bnx2x_init_bmac_loopback()
12667 vars->flow_ctrl = BNX2X_FLOW_CTRL_NONE; in bnx2x_init_bmac_loopback()
12668 vars->mac_type = MAC_TYPE_BMAC; in bnx2x_init_bmac_loopback()
12670 vars->phy_flags = PHY_XGXS_FLAG; in bnx2x_init_bmac_loopback()
12675 bnx2x_bmac_enable(params, vars, 1, 1); in bnx2x_init_bmac_loopback()
12681 struct link_vars *vars) in bnx2x_init_emac_loopback() argument
12684 vars->link_up = 1; in bnx2x_init_emac_loopback()
12685 vars->line_speed = SPEED_1000; in bnx2x_init_emac_loopback()
12686 vars->duplex = DUPLEX_FULL; in bnx2x_init_emac_loopback()
12687 vars->flow_ctrl = BNX2X_FLOW_CTRL_NONE; in bnx2x_init_emac_loopback()
12688 vars->mac_type = MAC_TYPE_EMAC; in bnx2x_init_emac_loopback()
12690 vars->phy_flags = PHY_XGXS_FLAG; in bnx2x_init_emac_loopback()
12694 bnx2x_emac_enable(params, vars, 1); in bnx2x_init_emac_loopback()
12695 bnx2x_emac_program(params, vars); in bnx2x_init_emac_loopback()
12700 struct link_vars *vars) in bnx2x_init_xmac_loopback() argument
12703 vars->link_up = 1; in bnx2x_init_xmac_loopback()
12705 vars->line_speed = SPEED_10000; in bnx2x_init_xmac_loopback()
12707 vars->line_speed = params->req_line_speed[0]; in bnx2x_init_xmac_loopback()
12708 vars->duplex = DUPLEX_FULL; in bnx2x_init_xmac_loopback()
12709 vars->flow_ctrl = BNX2X_FLOW_CTRL_NONE; in bnx2x_init_xmac_loopback()
12710 vars->mac_type = MAC_TYPE_XMAC; in bnx2x_init_xmac_loopback()
12711 vars->phy_flags = PHY_XGXS_FLAG; in bnx2x_init_xmac_loopback()
12721 bnx2x_xmac_enable(params, vars, 1); in bnx2x_init_xmac_loopback()
12726 struct link_vars *vars) in bnx2x_init_umac_loopback() argument
12729 vars->link_up = 1; in bnx2x_init_umac_loopback()
12730 vars->line_speed = SPEED_1000; in bnx2x_init_umac_loopback()
12731 vars->duplex = DUPLEX_FULL; in bnx2x_init_umac_loopback()
12732 vars->flow_ctrl = BNX2X_FLOW_CTRL_NONE; in bnx2x_init_umac_loopback()
12733 vars->mac_type = MAC_TYPE_UMAC; in bnx2x_init_umac_loopback()
12734 vars->phy_flags = PHY_XGXS_FLAG; in bnx2x_init_umac_loopback()
12735 bnx2x_umac_enable(params, vars, 1); in bnx2x_init_umac_loopback()
12741 struct link_vars *vars) in bnx2x_init_xgxs_loopback() argument
12745 vars->link_up = 1; in bnx2x_init_xgxs_loopback()
12746 vars->flow_ctrl = BNX2X_FLOW_CTRL_NONE; in bnx2x_init_xgxs_loopback()
12747 vars->duplex = DUPLEX_FULL; in bnx2x_init_xgxs_loopback()
12749 vars->line_speed = SPEED_1000; in bnx2x_init_xgxs_loopback()
12752 vars->line_speed = SPEED_20000; in bnx2x_init_xgxs_loopback()
12754 vars->line_speed = SPEED_10000; in bnx2x_init_xgxs_loopback()
12758 bnx2x_link_initialize(params, vars); in bnx2x_init_xgxs_loopback()
12762 bnx2x_umac_enable(params, vars, 0); in bnx2x_init_xgxs_loopback()
12764 bnx2x_emac_program(params, vars); in bnx2x_init_xgxs_loopback()
12765 bnx2x_emac_enable(params, vars, 0); in bnx2x_init_xgxs_loopback()
12769 bnx2x_xmac_enable(params, vars, 0); in bnx2x_init_xgxs_loopback()
12771 bnx2x_bmac_enable(params, vars, 0, 1); in bnx2x_init_xgxs_loopback()
12789 bnx2x_set_led(params, vars, LED_MODE_OPER, vars->line_speed); in bnx2x_init_xgxs_loopback()
12811 struct link_vars *vars) in bnx2x_avoid_link_flap() argument
12819 bnx2x_link_status_update(params, vars); in bnx2x_avoid_link_flap()
12855 if (vars->line_speed < SPEED_10000) in bnx2x_avoid_link_flap()
12856 bnx2x_umac_enable(params, vars, 0); in bnx2x_avoid_link_flap()
12858 bnx2x_xmac_enable(params, vars, 0); in bnx2x_avoid_link_flap()
12860 if (vars->line_speed < SPEED_10000) in bnx2x_avoid_link_flap()
12861 bnx2x_emac_enable(params, vars, 0); in bnx2x_avoid_link_flap()
12863 bnx2x_bmac_enable(params, vars, 0, !dont_clear_stat); in bnx2x_avoid_link_flap()
12886 struct link_vars *vars, in bnx2x_cannot_avoid_link_flap() argument
12892 bnx2x_link_reset(params, vars, 1); in bnx2x_cannot_avoid_link_flap()
12945 int bnx2x_phy_init(struct link_params *params, struct link_vars *vars) in bnx2x_phy_init() argument
12955 vars->link_status = 0; in bnx2x_phy_init()
12956 vars->phy_link_up = 0; in bnx2x_phy_init()
12957 vars->link_up = 0; in bnx2x_phy_init()
12958 vars->line_speed = 0; in bnx2x_phy_init()
12959 vars->duplex = DUPLEX_FULL; in bnx2x_phy_init()
12960 vars->flow_ctrl = BNX2X_FLOW_CTRL_NONE; in bnx2x_phy_init()
12961 vars->mac_type = MAC_TYPE_NONE; in bnx2x_phy_init()
12962 vars->phy_flags = 0; in bnx2x_phy_init()
12963 vars->check_kr2_recovery_cnt = 0; in bnx2x_phy_init()
12973 return bnx2x_avoid_link_flap(params, vars); in bnx2x_phy_init()
12978 bnx2x_cannot_avoid_link_flap(params, vars, lfa_status); in bnx2x_phy_init()
12987 bnx2x_emac_init(params, vars); in bnx2x_phy_init()
12990 vars->link_status |= LINK_STATUS_PFC_ENABLED; in bnx2x_phy_init()
12996 set_phy_vars(params, vars); in bnx2x_phy_init()
13001 bnx2x_init_bmac_loopback(params, vars); in bnx2x_phy_init()
13004 bnx2x_init_emac_loopback(params, vars); in bnx2x_phy_init()
13007 bnx2x_init_xmac_loopback(params, vars); in bnx2x_phy_init()
13010 bnx2x_init_umac_loopback(params, vars); in bnx2x_phy_init()
13014 bnx2x_init_xgxs_loopback(params, vars); in bnx2x_phy_init()
13023 bnx2x_link_initialize(params, vars); in bnx2x_phy_init()
13028 bnx2x_update_mng(params, vars->link_status); in bnx2x_phy_init()
13030 bnx2x_update_mng_eee(params, vars->eee_status); in bnx2x_phy_init()
13034 int bnx2x_link_reset(struct link_params *params, struct link_vars *vars, in bnx2x_link_reset() argument
13041 vars->link_status = 0; in bnx2x_link_reset()
13043 bnx2x_update_mng(params, vars->link_status); in bnx2x_link_reset()
13044 vars->eee_status &= ~(SHMEM_EEE_LP_ADV_STATUS_MASK | in bnx2x_link_reset()
13046 bnx2x_update_mng_eee(params, vars->eee_status); in bnx2x_link_reset()
13078 bnx2x_set_led(params, vars, LED_MODE_OFF, 0); in bnx2x_link_reset()
13121 vars->link_up = 0; in bnx2x_link_reset()
13122 vars->phy_flags = 0; in bnx2x_link_reset()
13126 struct link_vars *vars) in bnx2x_lfa_reset() argument
13129 vars->link_up = 0; in bnx2x_lfa_reset()
13130 vars->phy_flags = 0; in bnx2x_lfa_reset()
13133 return bnx2x_link_reset(params, vars, 1); in bnx2x_lfa_reset()
13613 struct link_vars *vars) in bnx2x_check_over_curr() argument
13631 if ((vars->phy_flags & PHY_OVER_CURRENT_FLAG) == 0) { in bnx2x_check_over_curr()
13640 vars->phy_flags |= PHY_OVER_CURRENT_FLAG; in bnx2x_check_over_curr()
13644 vars->phy_flags &= ~PHY_OVER_CURRENT_FLAG; in bnx2x_check_over_curr()
13649 struct link_vars *vars, u32 status, in bnx2x_analyze_link_error() argument
13655 u32 old_status = (vars->phy_flags & phy_flag) ? 1 : 0; in bnx2x_analyze_link_error()
13671 DP(NETIF_MSG_LINK, "Link changed:[%x %x]->%x\n", vars->link_up, in bnx2x_analyze_link_error()
13675 if ((vars->phy_flags & PHY_PHYSICAL_LINK_FLAG) == 0) in bnx2x_analyze_link_error()
13682 vars->link_status &= ~LINK_STATUS_LINK_UP; in bnx2x_analyze_link_error()
13683 vars->link_status |= link_flag; in bnx2x_analyze_link_error()
13684 vars->link_up = 0; in bnx2x_analyze_link_error()
13685 vars->phy_flags |= phy_flag; in bnx2x_analyze_link_error()
13694 vars->link_status |= LINK_STATUS_LINK_UP; in bnx2x_analyze_link_error()
13695 vars->link_status &= ~link_flag; in bnx2x_analyze_link_error()
13696 vars->link_up = 1; in bnx2x_analyze_link_error()
13697 vars->phy_flags &= ~phy_flag; in bnx2x_analyze_link_error()
13703 bnx2x_sync_link(params, vars); in bnx2x_analyze_link_error()
13705 bnx2x_set_led(params, vars, led_mode, SPEED_10000); in bnx2x_analyze_link_error()
13708 bnx2x_update_mng(params, vars->link_status); in bnx2x_analyze_link_error()
13711 vars->periodic_flags |= PERIODIC_FLAGS_LINK_EVENT; in bnx2x_analyze_link_error()
13728 struct link_vars *vars, in bnx2x_check_half_open_conn() argument
13735 if (((vars->phy_flags & PHY_PHYSICAL_LINK_FLAG) == 0) || in bnx2x_check_half_open_conn()
13757 bnx2x_analyze_link_error(params, vars, lss_status, in bnx2x_check_half_open_conn()
13776 bnx2x_analyze_link_error(params, vars, lss_status, in bnx2x_check_half_open_conn()
13784 struct link_vars *vars) in bnx2x_sfp_tx_fault_detection() argument
13801 led_change = bnx2x_analyze_link_error(params, vars, value, in bnx2x_sfp_tx_fault_detection()
13809 if (vars->phy_flags & PHY_SFP_TX_FAULT_FLAG) { in bnx2x_sfp_tx_fault_detection()
13811 vars->link_status |= LINK_STATUS_SFP_TX_FAULT; in bnx2x_sfp_tx_fault_detection()
13814 vars->link_status &= ~LINK_STATUS_SFP_TX_FAULT; in bnx2x_sfp_tx_fault_detection()
13826 struct link_vars *vars, in bnx2x_kr2_recovery() argument
13831 bnx2x_warpcore_enable_AN_KR2(phy, params, vars); in bnx2x_kr2_recovery()
13836 struct link_vars *vars, in bnx2x_check_kr2_wa() argument
13848 if (vars->check_kr2_recovery_cnt > 0) { in bnx2x_check_kr2_wa()
13849 vars->check_kr2_recovery_cnt--; in bnx2x_check_kr2_wa()
13856 bnx2x_kr2_recovery(params, vars, phy); in bnx2x_check_kr2_wa()
13874 bnx2x_kr2_recovery(params, vars, phy); in bnx2x_check_kr2_wa()
13893 bnx2x_kr2_recovery(params, vars, phy); in bnx2x_check_kr2_wa()
13901 bnx2x_disable_kr2(params, vars, phy); in bnx2x_check_kr2_wa()
13908 void bnx2x_period_func(struct link_params *params, struct link_vars *vars) in bnx2x_period_func() argument
13915 if (bnx2x_check_half_open_conn(params, vars, 1) != in bnx2x_period_func()
13929 bnx2x_check_kr2_wa(params, vars, phy); in bnx2x_period_func()
13930 bnx2x_check_over_curr(params, vars); in bnx2x_period_func()
13931 if (vars->rx_tx_asic_rst) in bnx2x_period_func()
13932 bnx2x_warpcore_config_runtime(phy, params, vars); in bnx2x_period_func()
13940 bnx2x_sfp_tx_fault_detection(phy, params, vars); in bnx2x_period_func()
13941 } else if (vars->link_status & in bnx2x_period_func()
13944 vars->link_status &= ~LINK_STATUS_SFP_TX_FAULT; in bnx2x_period_func()
13945 vars->phy_flags &= ~PHY_SFP_TX_FAULT_FLAG; in bnx2x_period_func()
13947 bnx2x_update_mng(params, vars->link_status); in bnx2x_period_func()
13996 void bnx2x_init_mod_abs_int(struct bnx2x *bp, struct link_vars *vars, in bnx2x_init_mod_abs_int() argument
14038 vars->aeu_int_mask = AEU_INPUTS_ATTN_BITS_GPIO0_FUNCTION_0 << in bnx2x_init_mod_abs_int()
14044 REG_WR(bp, sync_offset, vars->aeu_int_mask); in bnx2x_init_mod_abs_int()
14047 gpio_num, gpio_port, vars->aeu_int_mask); in bnx2x_init_mod_abs_int()
14056 aeu_mask |= vars->aeu_int_mask; in bnx2x_init_mod_abs_int()