Lines Matching refs:vars
222 struct link_vars *vars, u8 notify);
504 static u32 bnx2x_ets_get_min_w_val_nig(const struct link_vars *vars) in bnx2x_ets_get_min_w_val_nig() argument
508 if (vars->link_up) { in bnx2x_ets_get_min_w_val_nig()
509 if (vars->line_speed == SPEED_20000) in bnx2x_ets_get_min_w_val_nig()
576 const struct link_vars *vars) in bnx2x_ets_e3b0_nig_disabled() argument
580 const u32 min_w_val = bnx2x_ets_get_min_w_val_nig(vars); in bnx2x_ets_e3b0_nig_disabled()
751 const struct link_vars *vars) in bnx2x_ets_e3b0_disabled() argument
761 bnx2x_ets_e3b0_nig_disabled(params, vars); in bnx2x_ets_e3b0_disabled()
774 struct link_vars *vars) in bnx2x_ets_disabled() argument
782 bnx2x_status = bnx2x_ets_e3b0_disabled(params, vars); in bnx2x_ets_disabled()
1139 const struct link_vars *vars, in bnx2x_ets_e3b0_config() argument
1146 const u32 min_w_val_nig = bnx2x_ets_get_min_w_val_nig(vars); in bnx2x_ets_e3b0_config()
1360 struct link_vars *vars, in bnx2x_update_pfc_xmac() argument
1381 if (vars->flow_ctrl & BNX2X_FLOW_CTRL_RX) in bnx2x_update_pfc_xmac()
1385 if (vars->flow_ctrl & BNX2X_FLOW_CTRL_TX) in bnx2x_update_pfc_xmac()
1478 struct link_vars *vars) in bnx2x_emac_init() argument
1556 struct link_vars *vars, u8 lb) in bnx2x_umac_enable() argument
1578 switch (vars->line_speed) { in bnx2x_umac_enable()
1593 vars->line_speed); in bnx2x_umac_enable()
1596 if (!(vars->flow_ctrl & BNX2X_FLOW_CTRL_TX)) in bnx2x_umac_enable()
1599 if (!(vars->flow_ctrl & BNX2X_FLOW_CTRL_RX)) in bnx2x_umac_enable()
1602 if (vars->duplex == DUPLEX_HALF) in bnx2x_umac_enable()
1609 if (vars->eee_status & SHMEM_EEE_ADV_STATUS_MASK) { in bnx2x_umac_enable()
1648 ((vars->flow_ctrl & BNX2X_FLOW_CTRL_TX) != 0), 1); in bnx2x_umac_enable()
1649 vars->mac_type = MAC_TYPE_UMAC; in bnx2x_umac_enable()
1745 struct link_vars *vars, u8 lb) in bnx2x_xmac_enable() argument
1753 bnx2x_xmac_init(params, vars->line_speed); in bnx2x_xmac_enable()
1783 bnx2x_update_pfc_xmac(params, vars, 0); in bnx2x_xmac_enable()
1785 if (vars->eee_status & SHMEM_EEE_ADV_STATUS_MASK) { in bnx2x_xmac_enable()
1797 if ((vars->line_speed == SPEED_20000) && in bnx2x_xmac_enable()
1807 ((vars->flow_ctrl & BNX2X_FLOW_CTRL_TX) != 0), 1); in bnx2x_xmac_enable()
1809 vars->mac_type = MAC_TYPE_XMAC; in bnx2x_xmac_enable()
1815 struct link_vars *vars, u8 lb) in bnx2x_emac_enable() argument
1832 if (vars->phy_flags & PHY_XGXS_FLAG) { in bnx2x_emac_enable()
1863 if (vars->flow_ctrl & BNX2X_FLOW_CTRL_RX) in bnx2x_emac_enable()
1868 if (vars->flow_ctrl & BNX2X_FLOW_CTRL_TX) in bnx2x_emac_enable()
1935 (vars->flow_ctrl & BNX2X_FLOW_CTRL_TX)) in bnx2x_emac_enable()
1943 vars->mac_type = MAC_TYPE_EMAC; in bnx2x_emac_enable()
1948 struct link_vars *vars) in bnx2x_update_pfc_bmac1() argument
1958 (vars->flow_ctrl & BNX2X_FLOW_CTRL_RX)) in bnx2x_update_pfc_bmac1()
1969 (vars->flow_ctrl & BNX2X_FLOW_CTRL_TX)) in bnx2x_update_pfc_bmac1()
1977 struct link_vars *vars, in bnx2x_update_pfc_bmac2() argument
1991 (vars->flow_ctrl & BNX2X_FLOW_CTRL_RX)) in bnx2x_update_pfc_bmac2()
2003 (vars->flow_ctrl & BNX2X_FLOW_CTRL_TX)) in bnx2x_update_pfc_bmac2()
2129 struct link_vars *vars, in bnx2x_update_pfc_nig() argument
2225 struct link_vars *vars, in bnx2x_update_pfc() argument
2237 vars->link_status |= LINK_STATUS_PFC_ENABLED; in bnx2x_update_pfc()
2239 vars->link_status &= ~LINK_STATUS_PFC_ENABLED; in bnx2x_update_pfc()
2241 bnx2x_update_mng(params, vars->link_status); in bnx2x_update_pfc()
2244 bnx2x_update_pfc_nig(params, vars, pfc_params); in bnx2x_update_pfc()
2246 if (!vars->link_up) in bnx2x_update_pfc()
2252 if (vars->mac_type == MAC_TYPE_XMAC) in bnx2x_update_pfc()
2253 bnx2x_update_pfc_xmac(params, vars, 0); in bnx2x_update_pfc()
2260 bnx2x_emac_enable(params, vars, 0); in bnx2x_update_pfc()
2264 bnx2x_update_pfc_bmac2(params, vars, bmac_loopback); in bnx2x_update_pfc()
2266 bnx2x_update_pfc_bmac1(params, vars); in bnx2x_update_pfc()
2271 (vars->flow_ctrl & BNX2X_FLOW_CTRL_TX)) in bnx2x_update_pfc()
2279 struct link_vars *vars, in bnx2x_bmac1_enable() argument
2321 bnx2x_update_pfc_bmac1(params, vars); in bnx2x_bmac1_enable()
2343 struct link_vars *vars, in bnx2x_bmac2_enable() argument
2402 bnx2x_update_pfc_bmac2(params, vars, is_lb); in bnx2x_bmac2_enable()
2408 struct link_vars *vars, in bnx2x_bmac_enable() argument
2430 rc = bnx2x_bmac2_enable(params, vars, is_lb); in bnx2x_bmac_enable()
2432 rc = bnx2x_bmac1_enable(params, vars, is_lb); in bnx2x_bmac_enable()
2439 (vars->flow_ctrl & BNX2X_FLOW_CTRL_TX)) in bnx2x_bmac_enable()
2448 vars->mac_type = MAC_TYPE_BMAC; in bnx2x_bmac_enable()
2910 struct link_vars *vars) in bnx2x_eee_set_timers() argument
2927 vars->eee_status &= ~(SHMEM_EEE_TIMER_MASK | SHMEM_EEE_TIME_OUTPUT_BIT); in bnx2x_eee_set_timers()
2931 vars->eee_status |= (eee_idle & SHMEM_EEE_TIMER_MASK) | in bnx2x_eee_set_timers()
2936 vars->eee_status |= eee_mode; in bnx2x_eee_set_timers()
2943 struct link_vars *vars, u8 mode) in bnx2x_eee_initial_config() argument
2945 vars->eee_status |= ((u32) mode) << SHMEM_EEE_SUPPORTED_SHIFT; in bnx2x_eee_initial_config()
2949 vars->eee_status |= SHMEM_EEE_LPI_REQUESTED_BIT; in bnx2x_eee_initial_config()
2951 vars->eee_status &= ~SHMEM_EEE_LPI_REQUESTED_BIT; in bnx2x_eee_initial_config()
2954 vars->eee_status |= SHMEM_EEE_REQUESTED_BIT; in bnx2x_eee_initial_config()
2956 vars->eee_status &= ~SHMEM_EEE_REQUESTED_BIT; in bnx2x_eee_initial_config()
2958 return bnx2x_eee_set_timers(params, vars); in bnx2x_eee_initial_config()
2963 struct link_vars *vars) in bnx2x_eee_disable() argument
2972 vars->eee_status &= ~SHMEM_EEE_ADV_STATUS_MASK; in bnx2x_eee_disable()
2979 struct link_vars *vars, u8 modes) in bnx2x_eee_advertise() argument
2998 vars->eee_status &= ~SHMEM_EEE_ADV_STATUS_MASK; in bnx2x_eee_advertise()
2999 vars->eee_status |= (modes << SHMEM_EEE_ADV_STATUS_SHIFT); in bnx2x_eee_advertise()
3016 struct link_vars *vars) in bnx2x_eee_an_resolve() argument
3029 if (vars->line_speed == SPEED_100) in bnx2x_eee_an_resolve()
3037 if (vars->line_speed == SPEED_1000) in bnx2x_eee_an_resolve()
3045 if (vars->line_speed == SPEED_10000) in bnx2x_eee_an_resolve()
3051 vars->eee_status &= ~SHMEM_EEE_LP_ADV_STATUS_MASK; in bnx2x_eee_an_resolve()
3052 vars->eee_status |= (lp_adv << SHMEM_EEE_LP_ADV_STATUS_SHIFT); in bnx2x_eee_an_resolve()
3056 vars->eee_status |= SHMEM_EEE_ACTIVE_BIT; in bnx2x_eee_an_resolve()
3426 struct link_vars *vars) in set_phy_vars() argument
3456 vars->link_status |= LINK_STATUS_AUTO_NEGOTIATE_ENABLED; in set_phy_vars()
3468 struct link_vars *vars) in bnx2x_ext_phy_set_pause() argument
3478 bnx2x_calc_ieee_aneg_adv(phy, params, &vars->ieee_fc); in bnx2x_ext_phy_set_pause()
3479 if ((vars->ieee_fc & in bnx2x_ext_phy_set_pause()
3484 if ((vars->ieee_fc & in bnx2x_ext_phy_set_pause()
3495 struct link_vars *vars, in bnx2x_pause_resolve() argument
3503 vars->flow_ctrl = BNX2X_FLOW_CTRL_TX; in bnx2x_pause_resolve()
3508 vars->flow_ctrl = BNX2X_FLOW_CTRL_RX; in bnx2x_pause_resolve()
3521 vars->flow_ctrl = BNX2X_FLOW_CTRL_BOTH; in bnx2x_pause_resolve()
3524 vars->flow_ctrl = BNX2X_FLOW_CTRL_RX; in bnx2x_pause_resolve()
3530 vars->flow_ctrl = BNX2X_FLOW_CTRL_NONE; in bnx2x_pause_resolve()
3534 vars->link_status |= LINK_STATUS_LINK_PARTNER_SYMMETRIC_PAUSE; in bnx2x_pause_resolve()
3536 vars->link_status |= LINK_STATUS_LINK_PARTNER_ASYMMETRIC_PAUSE; in bnx2x_pause_resolve()
3542 struct link_vars *vars) in bnx2x_ext_phy_update_adv_fc() argument
3591 bnx2x_pause_resolve(phy, params, vars, pause_result); in bnx2x_ext_phy_update_adv_fc()
3597 struct link_vars *vars) in bnx2x_ext_phy_resolve_fc() argument
3600 vars->flow_ctrl = BNX2X_FLOW_CTRL_NONE; in bnx2x_ext_phy_resolve_fc()
3604 bnx2x_ext_phy_update_adv_fc(phy, params, vars); in bnx2x_ext_phy_resolve_fc()
3606 vars->flow_ctrl = phy->req_flow_ctrl; in bnx2x_ext_phy_resolve_fc()
3608 vars->flow_ctrl = params->req_fc_auto_adv; in bnx2x_ext_phy_resolve_fc()
3609 else if (vars->link_status & LINK_STATUS_AUTO_NEGOTIATE_COMPLETE) { in bnx2x_ext_phy_resolve_fc()
3611 bnx2x_ext_phy_update_adv_fc(phy, params, vars); in bnx2x_ext_phy_resolve_fc()
3636 struct link_vars *vars) in bnx2x_warpcore_enable_AN_KR2() argument
3674 struct link_vars *vars, in bnx2x_disable_kr2() argument
3705 vars->check_kr2_recovery_cnt = CHECK_KR2_RECOVERY_CNT; in bnx2x_disable_kr2()
3737 struct link_vars *vars) { in bnx2x_warpcore_enable_AN_KR() argument
3765 if (((vars->line_speed == SPEED_AUTO_NEG) && in bnx2x_warpcore_enable_AN_KR()
3767 (vars->line_speed == SPEED_1000)) { in bnx2x_warpcore_enable_AN_KR()
3775 if (((vars->line_speed == SPEED_AUTO_NEG) && in bnx2x_warpcore_enable_AN_KR()
3777 (vars->line_speed == SPEED_10000)) { in bnx2x_warpcore_enable_AN_KR()
3829 bnx2x_ext_phy_set_pause(params, phy, vars); in bnx2x_warpcore_enable_AN_KR()
3830 vars->rx_tx_asic_rst = MAX_KR_LINK_RETRY; in bnx2x_warpcore_enable_AN_KR()
3853 bnx2x_warpcore_enable_AN_KR2(phy, params, vars); in bnx2x_warpcore_enable_AN_KR()
3880 bnx2x_disable_kr2(params, vars, phy); in bnx2x_warpcore_enable_AN_KR()
3889 struct link_vars *vars) in bnx2x_warpcore_set_10G_KR() argument
4407 struct link_vars *vars) in bnx2x_warpcore_config_runtime() argument
4413 vars->turn_to_run_wc_rt = vars->turn_to_run_wc_rt ? 0 : 1; in bnx2x_warpcore_config_runtime()
4415 if (!vars->turn_to_run_wc_rt) in bnx2x_warpcore_config_runtime()
4418 if (vars->rx_tx_asic_rst) { in bnx2x_warpcore_config_runtime()
4435 vars->rx_tx_asic_rst = 0; in bnx2x_warpcore_config_runtime()
4445 vars->rx_tx_asic_rst--; in bnx2x_warpcore_config_runtime()
4447 vars->rx_tx_asic_rst); in bnx2x_warpcore_config_runtime()
4498 struct link_vars *vars) in bnx2x_warpcore_config_init() argument
4510 vars->line_speed, serdes_net_if); in bnx2x_warpcore_config_init()
4513 vars->phy_flags |= PHY_XGXS_FLAG; in bnx2x_warpcore_config_init()
4518 vars->phy_flags |= PHY_SGMII_FLAG; in bnx2x_warpcore_config_init()
4527 bnx2x_warpcore_enable_AN_KR(phy, params, vars); in bnx2x_warpcore_config_init()
4530 bnx2x_warpcore_set_10G_KR(phy, params, vars); in bnx2x_warpcore_config_init()
4536 if (vars->line_speed == SPEED_10000) { in bnx2x_warpcore_config_init()
4573 if (vars->line_speed != SPEED_20000) { in bnx2x_warpcore_config_init()
4585 bnx2x_warpcore_enable_AN_KR(phy, params, vars); in bnx2x_warpcore_config_init()
4705 struct link_vars *vars) in bnx2x_sync_link() argument
4709 if (vars->link_status & LINK_STATUS_PHYSICAL_LINK_FLAG) in bnx2x_sync_link()
4710 vars->phy_flags |= PHY_PHYSICAL_LINK_FLAG; in bnx2x_sync_link()
4711 vars->link_up = (vars->link_status & LINK_STATUS_LINK_UP); in bnx2x_sync_link()
4712 if (vars->link_up) { in bnx2x_sync_link()
4715 vars->phy_link_up = 1; in bnx2x_sync_link()
4716 vars->duplex = DUPLEX_FULL; in bnx2x_sync_link()
4717 switch (vars->link_status & in bnx2x_sync_link()
4720 vars->duplex = DUPLEX_HALF; in bnx2x_sync_link()
4723 vars->line_speed = SPEED_10; in bnx2x_sync_link()
4727 vars->duplex = DUPLEX_HALF; in bnx2x_sync_link()
4731 vars->line_speed = SPEED_100; in bnx2x_sync_link()
4735 vars->duplex = DUPLEX_HALF; in bnx2x_sync_link()
4738 vars->line_speed = SPEED_1000; in bnx2x_sync_link()
4742 vars->duplex = DUPLEX_HALF; in bnx2x_sync_link()
4745 vars->line_speed = SPEED_2500; in bnx2x_sync_link()
4749 vars->line_speed = SPEED_10000; in bnx2x_sync_link()
4752 vars->line_speed = SPEED_20000; in bnx2x_sync_link()
4757 vars->flow_ctrl = 0; in bnx2x_sync_link()
4758 if (vars->link_status & LINK_STATUS_TX_FLOW_CONTROL_ENABLED) in bnx2x_sync_link()
4759 vars->flow_ctrl |= BNX2X_FLOW_CTRL_TX; in bnx2x_sync_link()
4761 if (vars->link_status & LINK_STATUS_RX_FLOW_CONTROL_ENABLED) in bnx2x_sync_link()
4762 vars->flow_ctrl |= BNX2X_FLOW_CTRL_RX; in bnx2x_sync_link()
4764 if (!vars->flow_ctrl) in bnx2x_sync_link()
4765 vars->flow_ctrl = BNX2X_FLOW_CTRL_NONE; in bnx2x_sync_link()
4767 if (vars->line_speed && in bnx2x_sync_link()
4768 ((vars->line_speed == SPEED_10) || in bnx2x_sync_link()
4769 (vars->line_speed == SPEED_100))) { in bnx2x_sync_link()
4770 vars->phy_flags |= PHY_SGMII_FLAG; in bnx2x_sync_link()
4772 vars->phy_flags &= ~PHY_SGMII_FLAG; in bnx2x_sync_link()
4774 if (vars->line_speed && in bnx2x_sync_link()
4776 (vars->line_speed == SPEED_1000)) in bnx2x_sync_link()
4777 vars->phy_flags |= PHY_SGMII_FLAG; in bnx2x_sync_link()
4779 link_10g_plus = (vars->line_speed >= SPEED_10000); in bnx2x_sync_link()
4783 vars->mac_type = MAC_TYPE_XMAC; in bnx2x_sync_link()
4785 vars->mac_type = MAC_TYPE_BMAC; in bnx2x_sync_link()
4788 vars->mac_type = MAC_TYPE_UMAC; in bnx2x_sync_link()
4790 vars->mac_type = MAC_TYPE_EMAC; in bnx2x_sync_link()
4795 vars->phy_link_up = 0; in bnx2x_sync_link()
4797 vars->line_speed = 0; in bnx2x_sync_link()
4798 vars->duplex = DUPLEX_FULL; in bnx2x_sync_link()
4799 vars->flow_ctrl = BNX2X_FLOW_CTRL_NONE; in bnx2x_sync_link()
4802 vars->mac_type = MAC_TYPE_NONE; in bnx2x_sync_link()
4803 if (vars->link_status & LINK_STATUS_PHYSICAL_LINK_FLAG) in bnx2x_sync_link()
4804 vars->phy_flags |= PHY_HALF_OPEN_CONN_FLAG; in bnx2x_sync_link()
4805 if (vars->link_status & LINK_STATUS_SFP_TX_FAULT) in bnx2x_sync_link()
4806 vars->phy_flags |= PHY_SFP_TX_FAULT_FLAG; in bnx2x_sync_link()
4811 struct link_vars *vars) in bnx2x_link_status_update() argument
4817 set_phy_vars(params, vars); in bnx2x_link_status_update()
4819 vars->link_status = REG_RD(bp, params->shmem_base + in bnx2x_link_status_update()
4826 vars->link_status |= LINK_STATUS_LINK_UP; in bnx2x_link_status_update()
4829 vars->eee_status = REG_RD(bp, params->shmem2_base + in bnx2x_link_status_update()
4833 vars->phy_flags = PHY_XGXS_FLAG; in bnx2x_link_status_update()
4834 bnx2x_sync_link(params, vars); in bnx2x_link_status_update()
4857 vars->aeu_int_mask = REG_RD(bp, sync_offset); in bnx2x_link_status_update()
4860 if (vars->link_status & LINK_STATUS_PFC_ENABLED) in bnx2x_link_status_update()
4872 vars->link_status, vars->phy_link_up, vars->aeu_int_mask); in bnx2x_link_status_update()
4874 vars->line_speed, vars->duplex, vars->flow_ctrl); in bnx2x_link_status_update()
5039 struct link_vars *vars, in bnx2x_set_autoneg() argument
5051 if (vars->line_speed == SPEED_AUTO_NEG) in bnx2x_set_autoneg()
5069 if (vars->line_speed == SPEED_AUTO_NEG) in bnx2x_set_autoneg()
5083 if (vars->line_speed == SPEED_AUTO_NEG) { in bnx2x_set_autoneg()
5143 struct link_vars *vars) in bnx2x_program_serdes() argument
5173 if (!((vars->line_speed == SPEED_1000) || in bnx2x_program_serdes()
5174 (vars->line_speed == SPEED_100) || in bnx2x_program_serdes()
5175 (vars->line_speed == SPEED_10))) { in bnx2x_program_serdes()
5179 if (vars->line_speed == SPEED_10000) in bnx2x_program_serdes()
5273 struct link_vars *vars) in bnx2x_initialize_sgmii_process() argument
5295 if (!(vars->line_speed == SPEED_AUTO_NEG)) { in bnx2x_initialize_sgmii_process()
5307 switch (vars->line_speed) { in bnx2x_initialize_sgmii_process()
5322 vars->line_speed); in bnx2x_initialize_sgmii_process()
5379 struct link_vars *vars, in bnx2x_update_adv_fc() argument
5420 bnx2x_pause_resolve(phy, params, vars, pause_result); in bnx2x_update_adv_fc()
5426 struct link_vars *vars, in bnx2x_flow_ctrl_resolve() argument
5430 vars->flow_ctrl = BNX2X_FLOW_CTRL_NONE; in bnx2x_flow_ctrl_resolve()
5436 bnx2x_update_adv_fc(phy, params, vars, gp_status); in bnx2x_flow_ctrl_resolve()
5438 vars->flow_ctrl = phy->req_flow_ctrl; in bnx2x_flow_ctrl_resolve()
5440 vars->flow_ctrl = params->req_fc_auto_adv; in bnx2x_flow_ctrl_resolve()
5442 (!(vars->phy_flags & PHY_SGMII_FLAG))) { in bnx2x_flow_ctrl_resolve()
5444 vars->flow_ctrl = params->req_fc_auto_adv; in bnx2x_flow_ctrl_resolve()
5447 bnx2x_update_adv_fc(phy, params, vars, gp_status); in bnx2x_flow_ctrl_resolve()
5449 DP(NETIF_MSG_LINK, "flow_ctrl 0x%x\n", vars->flow_ctrl); in bnx2x_flow_ctrl_resolve()
5522 struct link_vars *vars, in bnx2x_xgxs_an_resolve() argument
5526 vars->link_status |= in bnx2x_xgxs_an_resolve()
5530 vars->link_status |= in bnx2x_xgxs_an_resolve()
5535 struct link_vars *vars, in bnx2x_get_link_speed_duplex() argument
5542 vars->link_status |= LINK_STATUS_AUTO_NEGOTIATE_ENABLED; in bnx2x_get_link_speed_duplex()
5546 vars->phy_link_up = 1; in bnx2x_get_link_speed_duplex()
5547 vars->link_status |= LINK_STATUS_LINK_UP; in bnx2x_get_link_speed_duplex()
5551 vars->line_speed = SPEED_10; in bnx2x_get_link_speed_duplex()
5553 vars->link_status |= LINK_10TFD; in bnx2x_get_link_speed_duplex()
5555 vars->link_status |= LINK_10THD; in bnx2x_get_link_speed_duplex()
5559 vars->line_speed = SPEED_100; in bnx2x_get_link_speed_duplex()
5561 vars->link_status |= LINK_100TXFD; in bnx2x_get_link_speed_duplex()
5563 vars->link_status |= LINK_100TXHD; in bnx2x_get_link_speed_duplex()
5568 vars->line_speed = SPEED_1000; in bnx2x_get_link_speed_duplex()
5570 vars->link_status |= LINK_1000TFD; in bnx2x_get_link_speed_duplex()
5572 vars->link_status |= LINK_1000THD; in bnx2x_get_link_speed_duplex()
5576 vars->line_speed = SPEED_2500; in bnx2x_get_link_speed_duplex()
5578 vars->link_status |= LINK_2500TFD; in bnx2x_get_link_speed_duplex()
5580 vars->link_status |= LINK_2500THD; in bnx2x_get_link_speed_duplex()
5596 vars->line_speed = SPEED_10000; in bnx2x_get_link_speed_duplex()
5597 vars->link_status |= LINK_10GTFD; in bnx2x_get_link_speed_duplex()
5601 vars->line_speed = SPEED_20000; in bnx2x_get_link_speed_duplex()
5602 vars->link_status |= LINK_20GTFD; in bnx2x_get_link_speed_duplex()
5613 vars->phy_link_up = 0; in bnx2x_get_link_speed_duplex()
5615 vars->duplex = DUPLEX_FULL; in bnx2x_get_link_speed_duplex()
5616 vars->flow_ctrl = BNX2X_FLOW_CTRL_NONE; in bnx2x_get_link_speed_duplex()
5617 vars->mac_type = MAC_TYPE_NONE; in bnx2x_get_link_speed_duplex()
5620 vars->phy_link_up, vars->line_speed); in bnx2x_get_link_speed_duplex()
5626 struct link_vars *vars) in bnx2x_link_settings_status() argument
5645 rc = bnx2x_get_link_speed_duplex(phy, params, vars, link_up, speed_mask, in bnx2x_link_settings_status()
5652 vars->duplex = duplex; in bnx2x_link_settings_status()
5653 bnx2x_flow_ctrl_resolve(phy, params, vars, gp_status); in bnx2x_link_settings_status()
5655 bnx2x_xgxs_an_resolve(phy, params, vars, in bnx2x_link_settings_status()
5668 (vars->link_status & LINK_STATUS_AUTO_NEGOTIATE_COMPLETE)) { in bnx2x_link_settings_status()
5675 vars->link_status |= in bnx2x_link_settings_status()
5679 vars->link_status |= in bnx2x_link_settings_status()
5686 vars->link_status |= in bnx2x_link_settings_status()
5689 vars->link_status |= in bnx2x_link_settings_status()
5694 vars->duplex, vars->flow_ctrl, vars->link_status); in bnx2x_link_settings_status()
5700 struct link_vars *vars) in bnx2x_warpcore_read_status() argument
5726 bnx2x_ext_phy_resolve_fc(phy, params, vars); in bnx2x_warpcore_read_status()
5753 vars->link_status |= in bnx2x_warpcore_read_status()
5761 vars->link_status |= in bnx2x_warpcore_read_status()
5764 bnx2x_ext_phy_resolve_fc(phy, params, vars); in bnx2x_warpcore_read_status()
5765 vars->duplex = duplex; in bnx2x_warpcore_read_status()
5769 if ((vars->link_status & LINK_STATUS_AUTO_NEGOTIATE_COMPLETE) && in bnx2x_warpcore_read_status()
5777 vars->link_status |= in bnx2x_warpcore_read_status()
5781 vars->link_status |= in bnx2x_warpcore_read_status()
5788 vars->link_status |= in bnx2x_warpcore_read_status()
5791 vars->link_status |= in bnx2x_warpcore_read_status()
5811 rc = bnx2x_get_link_speed_duplex(phy, params, vars, link_up, gp_speed, in bnx2x_warpcore_read_status()
5817 vars->rx_tx_asic_rst = MAX_KR_LINK_RETRY; in bnx2x_warpcore_read_status()
5820 vars->duplex, vars->flow_ctrl, vars->link_status); in bnx2x_warpcore_read_status()
5863 struct link_vars *vars) in bnx2x_emac_program() argument
5875 switch (vars->line_speed) { in bnx2x_emac_program()
5895 vars->line_speed); in bnx2x_emac_program()
5899 if (vars->duplex == DUPLEX_HALF) in bnx2x_emac_program()
5905 bnx2x_set_led(params, vars, LED_MODE_OPER, vars->line_speed); in bnx2x_emac_program()
5935 struct link_vars *vars) in bnx2x_xgxs_config_init() argument
5940 if (!(vars->phy_flags & PHY_SGMII_FLAG)) { in bnx2x_xgxs_config_init()
5947 if (vars->line_speed != SPEED_AUTO_NEG || in bnx2x_xgxs_config_init()
5953 bnx2x_set_autoneg(phy, params, vars, 0); in bnx2x_xgxs_config_init()
5956 bnx2x_program_serdes(phy, params, vars); in bnx2x_xgxs_config_init()
5966 vars->ieee_fc); in bnx2x_xgxs_config_init()
5969 bnx2x_set_autoneg(phy, params, vars, enable_cl73); in bnx2x_xgxs_config_init()
5978 bnx2x_initialize_sgmii_process(phy, params, vars); in bnx2x_xgxs_config_init()
5984 struct link_vars *vars) in bnx2x_prepare_xgxs() argument
5987 vars->phy_flags |= PHY_XGXS_FLAG; in bnx2x_prepare_xgxs()
5997 vars->phy_flags |= PHY_SGMII_FLAG; in bnx2x_prepare_xgxs()
5999 vars->phy_flags &= ~PHY_SGMII_FLAG; in bnx2x_prepare_xgxs()
6001 bnx2x_calc_ieee_aneg_adv(phy, params, &vars->ieee_fc); in bnx2x_prepare_xgxs()
6131 struct link_vars *vars, u8 is_10g_plus) in bnx2x_link_int_ack() argument
6143 if (vars->phy_link_up) { in bnx2x_link_int_ack()
6312 struct link_vars *vars, u8 mode, u32 speed) in bnx2x_set_led() argument
6355 if (!vars->link_up) in bnx2x_set_led()
6459 int bnx2x_test_link(struct link_params *params, struct link_vars *vars, in bnx2x_test_link() argument
6541 struct link_vars *vars) in bnx2x_link_initialize() argument
6550 vars->line_speed = params->phy[INT_PHY].req_line_speed; in bnx2x_link_initialize()
6557 bnx2x_prepare_xgxs(¶ms->phy[INT_PHY], params, vars); in bnx2x_link_initialize()
6566 if (vars->line_speed == SPEED_AUTO_NEG && in bnx2x_link_initialize()
6571 params->phy[INT_PHY].config_init(phy, params, vars); in bnx2x_link_initialize()
6577 vars->line_speed = params->phy[INT_PHY].req_line_speed; in bnx2x_link_initialize()
6583 vars->link_status |= LINK_STATUS_SERDES_LINK; in bnx2x_link_initialize()
6594 vars->link_status |= LINK_STATUS_SERDES_LINK; in bnx2x_link_initialize()
6605 params, vars); in bnx2x_link_initialize()
6646 struct link_vars *vars) in bnx2x_update_link_down() argument
6652 bnx2x_set_led(params, vars, LED_MODE_OFF, 0); in bnx2x_update_link_down()
6653 vars->phy_flags &= ~PHY_PHYSICAL_LINK_FLAG; in bnx2x_update_link_down()
6655 vars->mac_type = MAC_TYPE_NONE; in bnx2x_update_link_down()
6658 vars->link_status &= ~LINK_UPDATE_MASK; in bnx2x_update_link_down()
6659 vars->line_speed = 0; in bnx2x_update_link_down()
6660 bnx2x_update_mng(params, vars->link_status); in bnx2x_update_link_down()
6681 vars->eee_status &= ~(SHMEM_EEE_LP_ADV_STATUS_MASK | in bnx2x_update_link_down()
6684 bnx2x_update_mng_eee(params, vars->eee_status); in bnx2x_update_link_down()
6693 struct link_vars *vars, in bnx2x_update_link_up() argument
6700 vars->link_status |= (LINK_STATUS_LINK_UP | in bnx2x_update_link_up()
6702 vars->phy_flags |= PHY_PHYSICAL_LINK_FLAG; in bnx2x_update_link_up()
6704 if (vars->flow_ctrl & BNX2X_FLOW_CTRL_TX) in bnx2x_update_link_up()
6705 vars->link_status |= in bnx2x_update_link_up()
6708 if (vars->flow_ctrl & BNX2X_FLOW_CTRL_RX) in bnx2x_update_link_up()
6709 vars->link_status |= in bnx2x_update_link_up()
6713 if (bnx2x_xmac_enable(params, vars, 0) == in bnx2x_update_link_up()
6716 vars->link_up = 0; in bnx2x_update_link_up()
6717 vars->phy_flags |= PHY_HALF_OPEN_CONN_FLAG; in bnx2x_update_link_up()
6718 vars->link_status &= ~LINK_STATUS_LINK_UP; in bnx2x_update_link_up()
6721 bnx2x_umac_enable(params, vars, 0); in bnx2x_update_link_up()
6722 bnx2x_set_led(params, vars, in bnx2x_update_link_up()
6723 LED_MODE_OPER, vars->line_speed); in bnx2x_update_link_up()
6725 if ((vars->eee_status & SHMEM_EEE_ACTIVE_BIT) && in bnx2x_update_link_up()
6726 (vars->eee_status & SHMEM_EEE_LPI_REQUESTED_BIT)) { in bnx2x_update_link_up()
6738 if (bnx2x_bmac_enable(params, vars, 0, 1) == in bnx2x_update_link_up()
6741 vars->link_up = 0; in bnx2x_update_link_up()
6742 vars->phy_flags |= PHY_HALF_OPEN_CONN_FLAG; in bnx2x_update_link_up()
6743 vars->link_status &= ~LINK_STATUS_LINK_UP; in bnx2x_update_link_up()
6746 bnx2x_set_led(params, vars, in bnx2x_update_link_up()
6749 rc = bnx2x_emac_program(params, vars); in bnx2x_update_link_up()
6750 bnx2x_emac_enable(params, vars, 0); in bnx2x_update_link_up()
6753 if ((vars->link_status & in bnx2x_update_link_up()
6755 && (!(vars->phy_flags & PHY_SGMII_FLAG)) && in bnx2x_update_link_up()
6763 rc |= bnx2x_pbf_update(params, vars->flow_ctrl, in bnx2x_update_link_up()
6764 vars->line_speed); in bnx2x_update_link_up()
6770 bnx2x_update_mng(params, vars->link_status); in bnx2x_update_link_up()
6771 bnx2x_update_mng_eee(params, vars->eee_status); in bnx2x_update_link_up()
6775 bnx2x_check_half_open_conn(params, vars, 0); in bnx2x_update_link_up()
6813 int bnx2x_link_update(struct link_params *params, struct link_vars *vars) in bnx2x_link_update() argument
6819 u32 prev_link_status = vars->link_status; in bnx2x_link_update()
6823 u16 ext_phy_line_speed = 0, prev_line_speed = vars->line_speed; in bnx2x_link_update()
6825 vars->phy_flags &= ~PHY_HALF_OPEN_CONN_FLAG; in bnx2x_link_update()
6826 vars->link_status &= ~LINK_UPDATE_MASK; in bnx2x_link_update()
6837 phy_vars[phy_index].eee_status = vars->eee_status; in bnx2x_link_update()
6844 port, (vars->phy_flags & PHY_XGXS_FLAG), in bnx2x_link_update()
6922 prev_line_speed = vars->line_speed; in bnx2x_link_update()
6932 params, vars); in bnx2x_link_update()
6941 vars->flow_ctrl = phy_vars[active_external_phy].flow_ctrl; in bnx2x_link_update()
6945 vars->link_status |= phy_vars[active_external_phy].link_status; in bnx2x_link_update()
6961 vars->duplex = phy_vars[active_external_phy].duplex; in bnx2x_link_update()
6964 vars->link_status |= LINK_STATUS_SERDES_LINK; in bnx2x_link_update()
6966 vars->link_status &= ~LINK_STATUS_SERDES_LINK; in bnx2x_link_update()
6968 vars->eee_status = phy_vars[active_external_phy].eee_status; in bnx2x_link_update()
6985 " ext_phy_line_speed = %d\n", vars->flow_ctrl, in bnx2x_link_update()
6986 vars->link_status, ext_phy_line_speed); in bnx2x_link_update()
6992 if (vars->phy_link_up) { in bnx2x_link_update()
6994 (ext_phy_line_speed != vars->line_speed)) { in bnx2x_link_update()
6997 " link speed %d\n", vars->line_speed, in bnx2x_link_update()
6999 vars->phy_link_up = 0; in bnx2x_link_update()
7000 } else if (prev_line_speed != vars->line_speed) { in bnx2x_link_update()
7008 link_10g_plus = (vars->line_speed >= SPEED_10000); in bnx2x_link_update()
7010 bnx2x_link_int_ack(params, vars, link_10g_plus); in bnx2x_link_update()
7022 vars->phy_link_up, in bnx2x_link_update()
7027 && ext_phy_link_up && !vars->phy_link_up) { in bnx2x_link_update()
7028 vars->line_speed = ext_phy_line_speed; in bnx2x_link_update()
7029 if (vars->line_speed < SPEED_1000) in bnx2x_link_update()
7030 vars->phy_flags |= PHY_SGMII_FLAG; in bnx2x_link_update()
7032 vars->phy_flags &= ~PHY_SGMII_FLAG; in bnx2x_link_update()
7037 vars); in bnx2x_link_update()
7043 vars->link_up = (vars->phy_link_up && in bnx2x_link_update()
7050 vars->link_status |= LINK_STATUS_PFC_ENABLED; in bnx2x_link_update()
7052 vars->link_status &= ~LINK_STATUS_PFC_ENABLED; in bnx2x_link_update()
7054 if (vars->link_up) in bnx2x_link_update()
7055 rc = bnx2x_update_link_up(params, vars, link_10g_plus); in bnx2x_link_update()
7057 rc = bnx2x_update_link_down(params, vars); in bnx2x_link_update()
7059 if ((prev_link_status ^ vars->link_status) & LINK_STATUS_LINK_UP) in bnx2x_link_update()
7107 struct link_vars *vars) in bnx2x_ext_phy_10G_an_resolve() argument
7117 vars->link_status |= LINK_STATUS_AUTO_NEGOTIATE_COMPLETE; in bnx2x_ext_phy_10G_an_resolve()
7119 vars->link_status |= LINK_STATUS_PARALLEL_DETECTION_USED; in bnx2x_ext_phy_10G_an_resolve()
7127 struct link_vars *vars) in bnx2x_8073_resolve_fc() argument
7132 vars->flow_ctrl = phy->req_flow_ctrl; in bnx2x_8073_resolve_fc()
7136 if (bnx2x_ext_phy_resolve_fc(phy, params, vars) && in bnx2x_8073_resolve_fc()
7137 (vars->flow_ctrl == BNX2X_FLOW_CTRL_NONE)) { in bnx2x_8073_resolve_fc()
7153 bnx2x_pause_resolve(phy, params, vars, pause_result); in bnx2x_8073_resolve_fc()
7336 struct link_vars *vars) in bnx2x_8073_set_pause_cl37() argument
7345 bnx2x_calc_ieee_aneg_adv(phy, params, &vars->ieee_fc); in bnx2x_8073_set_pause_cl37()
7346 if ((vars->ieee_fc & in bnx2x_8073_set_pause_cl37()
7351 if ((vars->ieee_fc & in bnx2x_8073_set_pause_cl37()
7356 if ((vars->ieee_fc & in bnx2x_8073_set_pause_cl37()
7387 struct link_vars *vars) in bnx2x_8073_config_init() argument
7406 bnx2x_8073_set_pause_cl37(params, phy, vars); in bnx2x_8073_config_init()
7523 bnx2x_ext_phy_set_pause(params, phy, vars); in bnx2x_8073_config_init()
7535 struct link_vars *vars) in bnx2x_8073_read_status() argument
7616 vars->line_speed = SPEED_10000; in bnx2x_8073_read_status()
7621 vars->line_speed = SPEED_2500; in bnx2x_8073_read_status()
7626 vars->line_speed = SPEED_1000; in bnx2x_8073_read_status()
7646 if (vars->line_speed == SPEED_1000) { in bnx2x_8073_read_status()
7658 bnx2x_ext_phy_10G_an_resolve(bp, phy, vars); in bnx2x_8073_read_status()
7659 bnx2x_8073_resolve_fc(phy, params, vars); in bnx2x_8073_read_status()
7660 vars->duplex = DUPLEX_FULL; in bnx2x_8073_read_status()
7663 if (vars->link_status & LINK_STATUS_AUTO_NEGOTIATE_COMPLETE) { in bnx2x_8073_read_status()
7668 vars->link_status |= in bnx2x_8073_read_status()
7671 vars->link_status |= in bnx2x_8073_read_status()
7699 struct link_vars *vars) in bnx2x_8705_config_init() argument
7726 struct link_vars *vars) in bnx2x_8705_read_status() argument
7751 vars->line_speed = SPEED_10000; in bnx2x_8705_read_status()
7752 bnx2x_ext_phy_resolve_fc(phy, params, vars); in bnx2x_8705_read_status()
8848 struct link_vars *vars) in bnx2x_8706_8726_read_status() argument
8885 vars->line_speed = SPEED_1000; in bnx2x_8706_8726_read_status()
8887 vars->line_speed = SPEED_10000; in bnx2x_8706_8726_read_status()
8888 bnx2x_ext_phy_resolve_fc(phy, params, vars); in bnx2x_8706_8726_read_status()
8889 vars->duplex = DUPLEX_FULL; in bnx2x_8706_8726_read_status()
8893 if (vars->line_speed == SPEED_10000) { in bnx2x_8706_8726_read_status()
8899 vars->fault_detected = 1; in bnx2x_8706_8726_read_status()
8910 struct link_vars *vars) in bnx2x_8706_config_init() argument
9016 struct link_vars *vars) in bnx2x_8706_read_status() argument
9018 return bnx2x_8706_8726_read_status(phy, params, vars); in bnx2x_8706_read_status()
9072 struct link_vars *vars) in bnx2x_8726_read_status() argument
9076 u8 link_up = bnx2x_8706_8726_read_status(phy, params, vars); in bnx2x_8726_read_status()
9084 vars->line_speed = 0; in bnx2x_8726_read_status()
9093 struct link_vars *vars) in bnx2x_8726_config_init() argument
9129 bnx2x_ext_phy_set_pause(params, phy, vars); in bnx2x_8726_config_init()
9311 struct link_vars *vars) in bnx2x_8727_config_init() argument
9482 struct link_vars *vars) in bnx2x_8727_read_status() argument
9501 vars->line_speed = 0; in bnx2x_8727_read_status()
9587 vars->line_speed = SPEED_10000; in bnx2x_8727_read_status()
9592 vars->line_speed = SPEED_1000; in bnx2x_8727_read_status()
9602 if (vars->line_speed == SPEED_10000) { in bnx2x_8727_read_status()
9610 vars->fault_detected = 1; in bnx2x_8727_read_status()
9615 bnx2x_ext_phy_resolve_fc(phy, params, vars); in bnx2x_8727_read_status()
9616 vars->duplex = DUPLEX_FULL; in bnx2x_8727_read_status()
9617 DP(NETIF_MSG_LINK, "duplex = 0x%x\n", vars->duplex); in bnx2x_8727_read_status()
9796 struct link_vars *vars) in bnx2x_848xx_cmn_config_init() argument
9810 bnx2x_ext_phy_set_pause(params, phy, vars); in bnx2x_848xx_cmn_config_init()
9942 struct link_vars *vars) in bnx2x_8481_config_init() argument
9954 return bnx2x_848xx_cmn_config_init(phy, params, vars); in bnx2x_8481_config_init()
10115 struct link_vars *vars) in bnx2x_848xx_pair_swap_cfg() argument
10216 struct link_vars *vars) in bnx2x_8483x_disable_eee() argument
10232 return bnx2x_eee_disable(phy, params, vars); in bnx2x_8483x_disable_eee()
10237 struct link_vars *vars) in bnx2x_8483x_enable_eee() argument
10250 return bnx2x_eee_advertise(phy, params, vars, SHMEM_EEE_10G_ADV); in bnx2x_8483x_enable_eee()
10256 struct link_vars *vars) in bnx2x_848x3_config_init() argument
10292 temp = vars->line_speed; in bnx2x_848x3_config_init()
10293 vars->line_speed = SPEED_10000; in bnx2x_848x3_config_init()
10294 bnx2x_set_autoneg(¶ms->phy[INT_PHY], params, vars, 0); in bnx2x_848x3_config_init()
10295 bnx2x_program_serdes(¶ms->phy[INT_PHY], params, vars); in bnx2x_848x3_config_init()
10296 vars->line_speed = temp; in bnx2x_848x3_config_init()
10356 bnx2x_848xx_pair_swap_cfg(phy, params, vars); in bnx2x_848x3_config_init()
10370 rc = bnx2x_848xx_cmn_config_init(phy, params, vars); in bnx2x_848x3_config_init()
10397 rc = bnx2x_eee_initial_config(params, vars, SHMEM_EEE_10G_ADV); in bnx2x_848x3_config_init()
10400 bnx2x_8483x_disable_eee(phy, params, vars); in bnx2x_848x3_config_init()
10408 rc = bnx2x_8483x_enable_eee(phy, params, vars); in bnx2x_848x3_config_init()
10410 rc = bnx2x_8483x_disable_eee(phy, params, vars); in bnx2x_848x3_config_init()
10416 vars->eee_status &= ~SHMEM_EEE_SUPPORTED_MASK; in bnx2x_848x3_config_init()
10431 struct link_vars *vars) in bnx2x_848xx_read_status() argument
10449 vars->line_speed = SPEED_10000; in bnx2x_848xx_read_status()
10450 vars->duplex = DUPLEX_FULL; in bnx2x_848xx_read_status()
10452 bnx2x_ext_phy_10G_an_resolve(bp, phy, vars); in bnx2x_848xx_read_status()
10472 vars->line_speed = SPEED_10; in bnx2x_848xx_read_status()
10474 vars->line_speed = SPEED_100; in bnx2x_848xx_read_status()
10476 vars->line_speed = SPEED_1000; in bnx2x_848xx_read_status()
10478 vars->line_speed = 0; in bnx2x_848xx_read_status()
10484 vars->duplex = DUPLEX_FULL; in bnx2x_848xx_read_status()
10486 vars->duplex = DUPLEX_HALF; in bnx2x_848xx_read_status()
10490 vars->line_speed, in bnx2x_848xx_read_status()
10491 (vars->duplex == DUPLEX_FULL)); in bnx2x_848xx_read_status()
10498 vars->link_status |= in bnx2x_848xx_read_status()
10505 vars->link_status |= in bnx2x_848xx_read_status()
10511 vars->line_speed); in bnx2x_848xx_read_status()
10512 bnx2x_ext_phy_resolve_fc(phy, params, vars); in bnx2x_848xx_read_status()
10518 vars->link_status |= in bnx2x_848xx_read_status()
10521 vars->link_status |= in bnx2x_848xx_read_status()
10524 vars->link_status |= in bnx2x_848xx_read_status()
10527 vars->link_status |= in bnx2x_848xx_read_status()
10530 vars->link_status |= in bnx2x_848xx_read_status()
10537 vars->link_status |= in bnx2x_848xx_read_status()
10540 vars->link_status |= in bnx2x_848xx_read_status()
10547 vars->link_status |= in bnx2x_848xx_read_status()
10552 bnx2x_eee_an_resolve(phy, params, vars); in bnx2x_848xx_read_status()
10919 struct link_vars *vars) in bnx2x_54618se_config_init() argument
10970 bnx2x_calc_ieee_aneg_adv(phy, params, &vars->ieee_fc); in bnx2x_54618se_config_init()
10972 if ((vars->ieee_fc & MDIO_COMBO_IEEE0_AUTO_NEG_ADV_PAUSE_ASYMMETRIC) == in bnx2x_54618se_config_init()
10976 if ((vars->ieee_fc & MDIO_COMBO_IEEE0_AUTO_NEG_ADV_PAUSE_BOTH) == in bnx2x_54618se_config_init()
11072 rc = bnx2x_eee_initial_config(params, vars, SHMEM_EEE_1G_ADV); in bnx2x_54618se_config_init()
11075 bnx2x_eee_disable(phy, params, vars); in bnx2x_54618se_config_init()
11085 bnx2x_eee_advertise(phy, params, vars, in bnx2x_54618se_config_init()
11089 bnx2x_eee_disable(phy, params, vars); in bnx2x_54618se_config_init()
11092 vars->eee_status &= ~SHMEM_EEE_1G_ADV << in bnx2x_54618se_config_init()
11187 struct link_vars *vars) in bnx2x_54618se_read_status() argument
11210 vars->line_speed = SPEED_1000; in bnx2x_54618se_read_status()
11211 vars->duplex = DUPLEX_FULL; in bnx2x_54618se_read_status()
11213 vars->line_speed = SPEED_1000; in bnx2x_54618se_read_status()
11214 vars->duplex = DUPLEX_HALF; in bnx2x_54618se_read_status()
11216 vars->line_speed = SPEED_100; in bnx2x_54618se_read_status()
11217 vars->duplex = DUPLEX_FULL; in bnx2x_54618se_read_status()
11221 vars->line_speed = SPEED_100; in bnx2x_54618se_read_status()
11222 vars->duplex = DUPLEX_HALF; in bnx2x_54618se_read_status()
11224 vars->line_speed = SPEED_10; in bnx2x_54618se_read_status()
11225 vars->duplex = DUPLEX_FULL; in bnx2x_54618se_read_status()
11227 vars->line_speed = SPEED_10; in bnx2x_54618se_read_status()
11228 vars->duplex = DUPLEX_HALF; in bnx2x_54618se_read_status()
11230 vars->line_speed = 0; in bnx2x_54618se_read_status()
11234 vars->line_speed, in bnx2x_54618se_read_status()
11235 (vars->duplex == DUPLEX_FULL)); in bnx2x_54618se_read_status()
11242 vars->link_status |= in bnx2x_54618se_read_status()
11248 vars->link_status |= in bnx2x_54618se_read_status()
11252 vars->line_speed); in bnx2x_54618se_read_status()
11254 bnx2x_ext_phy_resolve_fc(phy, params, vars); in bnx2x_54618se_read_status()
11256 if (vars->link_status & LINK_STATUS_AUTO_NEGOTIATE_COMPLETE) { in bnx2x_54618se_read_status()
11261 vars->link_status |= in bnx2x_54618se_read_status()
11264 vars->link_status |= in bnx2x_54618se_read_status()
11267 vars->link_status |= in bnx2x_54618se_read_status()
11270 vars->link_status |= in bnx2x_54618se_read_status()
11273 vars->link_status |= in bnx2x_54618se_read_status()
11278 vars->link_status |= in bnx2x_54618se_read_status()
11281 vars->link_status |= in bnx2x_54618se_read_status()
11286 bnx2x_eee_an_resolve(phy, params, vars); in bnx2x_54618se_read_status()
11346 struct link_vars *vars) in bnx2x_7101_config_init() argument
11365 bnx2x_ext_phy_set_pause(params, phy, vars); in bnx2x_7101_config_init()
11386 struct link_vars *vars) in bnx2x_7101_read_status() argument
11409 vars->line_speed = SPEED_10000; in bnx2x_7101_read_status()
11410 vars->duplex = DUPLEX_FULL; in bnx2x_7101_read_status()
11413 bnx2x_ext_phy_10G_an_resolve(bp, phy, vars); in bnx2x_7101_read_status()
11414 bnx2x_ext_phy_resolve_fc(phy, params, vars); in bnx2x_7101_read_status()
11418 vars->link_status |= in bnx2x_7101_read_status()
12546 struct link_vars *vars) in bnx2x_init_bmac_loopback() argument
12549 vars->link_up = 1; in bnx2x_init_bmac_loopback()
12550 vars->line_speed = SPEED_10000; in bnx2x_init_bmac_loopback()
12551 vars->duplex = DUPLEX_FULL; in bnx2x_init_bmac_loopback()
12552 vars->flow_ctrl = BNX2X_FLOW_CTRL_NONE; in bnx2x_init_bmac_loopback()
12553 vars->mac_type = MAC_TYPE_BMAC; in bnx2x_init_bmac_loopback()
12555 vars->phy_flags = PHY_XGXS_FLAG; in bnx2x_init_bmac_loopback()
12560 bnx2x_bmac_enable(params, vars, 1, 1); in bnx2x_init_bmac_loopback()
12566 struct link_vars *vars) in bnx2x_init_emac_loopback() argument
12569 vars->link_up = 1; in bnx2x_init_emac_loopback()
12570 vars->line_speed = SPEED_1000; in bnx2x_init_emac_loopback()
12571 vars->duplex = DUPLEX_FULL; in bnx2x_init_emac_loopback()
12572 vars->flow_ctrl = BNX2X_FLOW_CTRL_NONE; in bnx2x_init_emac_loopback()
12573 vars->mac_type = MAC_TYPE_EMAC; in bnx2x_init_emac_loopback()
12575 vars->phy_flags = PHY_XGXS_FLAG; in bnx2x_init_emac_loopback()
12579 bnx2x_emac_enable(params, vars, 1); in bnx2x_init_emac_loopback()
12580 bnx2x_emac_program(params, vars); in bnx2x_init_emac_loopback()
12585 struct link_vars *vars) in bnx2x_init_xmac_loopback() argument
12588 vars->link_up = 1; in bnx2x_init_xmac_loopback()
12590 vars->line_speed = SPEED_10000; in bnx2x_init_xmac_loopback()
12592 vars->line_speed = params->req_line_speed[0]; in bnx2x_init_xmac_loopback()
12593 vars->duplex = DUPLEX_FULL; in bnx2x_init_xmac_loopback()
12594 vars->flow_ctrl = BNX2X_FLOW_CTRL_NONE; in bnx2x_init_xmac_loopback()
12595 vars->mac_type = MAC_TYPE_XMAC; in bnx2x_init_xmac_loopback()
12596 vars->phy_flags = PHY_XGXS_FLAG; in bnx2x_init_xmac_loopback()
12606 bnx2x_xmac_enable(params, vars, 1); in bnx2x_init_xmac_loopback()
12611 struct link_vars *vars) in bnx2x_init_umac_loopback() argument
12614 vars->link_up = 1; in bnx2x_init_umac_loopback()
12615 vars->line_speed = SPEED_1000; in bnx2x_init_umac_loopback()
12616 vars->duplex = DUPLEX_FULL; in bnx2x_init_umac_loopback()
12617 vars->flow_ctrl = BNX2X_FLOW_CTRL_NONE; in bnx2x_init_umac_loopback()
12618 vars->mac_type = MAC_TYPE_UMAC; in bnx2x_init_umac_loopback()
12619 vars->phy_flags = PHY_XGXS_FLAG; in bnx2x_init_umac_loopback()
12620 bnx2x_umac_enable(params, vars, 1); in bnx2x_init_umac_loopback()
12626 struct link_vars *vars) in bnx2x_init_xgxs_loopback() argument
12630 vars->link_up = 1; in bnx2x_init_xgxs_loopback()
12631 vars->flow_ctrl = BNX2X_FLOW_CTRL_NONE; in bnx2x_init_xgxs_loopback()
12632 vars->duplex = DUPLEX_FULL; in bnx2x_init_xgxs_loopback()
12634 vars->line_speed = SPEED_1000; in bnx2x_init_xgxs_loopback()
12637 vars->line_speed = SPEED_20000; in bnx2x_init_xgxs_loopback()
12639 vars->line_speed = SPEED_10000; in bnx2x_init_xgxs_loopback()
12643 bnx2x_link_initialize(params, vars); in bnx2x_init_xgxs_loopback()
12647 bnx2x_umac_enable(params, vars, 0); in bnx2x_init_xgxs_loopback()
12649 bnx2x_emac_program(params, vars); in bnx2x_init_xgxs_loopback()
12650 bnx2x_emac_enable(params, vars, 0); in bnx2x_init_xgxs_loopback()
12654 bnx2x_xmac_enable(params, vars, 0); in bnx2x_init_xgxs_loopback()
12656 bnx2x_bmac_enable(params, vars, 0, 1); in bnx2x_init_xgxs_loopback()
12674 bnx2x_set_led(params, vars, LED_MODE_OPER, vars->line_speed); in bnx2x_init_xgxs_loopback()
12696 struct link_vars *vars) in bnx2x_avoid_link_flap() argument
12704 bnx2x_link_status_update(params, vars); in bnx2x_avoid_link_flap()
12740 if (vars->line_speed < SPEED_10000) in bnx2x_avoid_link_flap()
12741 bnx2x_umac_enable(params, vars, 0); in bnx2x_avoid_link_flap()
12743 bnx2x_xmac_enable(params, vars, 0); in bnx2x_avoid_link_flap()
12745 if (vars->line_speed < SPEED_10000) in bnx2x_avoid_link_flap()
12746 bnx2x_emac_enable(params, vars, 0); in bnx2x_avoid_link_flap()
12748 bnx2x_bmac_enable(params, vars, 0, !dont_clear_stat); in bnx2x_avoid_link_flap()
12771 struct link_vars *vars, in bnx2x_cannot_avoid_link_flap() argument
12777 bnx2x_link_reset(params, vars, 1); in bnx2x_cannot_avoid_link_flap()
12830 int bnx2x_phy_init(struct link_params *params, struct link_vars *vars) in bnx2x_phy_init() argument
12840 vars->link_status = 0; in bnx2x_phy_init()
12841 vars->phy_link_up = 0; in bnx2x_phy_init()
12842 vars->link_up = 0; in bnx2x_phy_init()
12843 vars->line_speed = 0; in bnx2x_phy_init()
12844 vars->duplex = DUPLEX_FULL; in bnx2x_phy_init()
12845 vars->flow_ctrl = BNX2X_FLOW_CTRL_NONE; in bnx2x_phy_init()
12846 vars->mac_type = MAC_TYPE_NONE; in bnx2x_phy_init()
12847 vars->phy_flags = 0; in bnx2x_phy_init()
12848 vars->check_kr2_recovery_cnt = 0; in bnx2x_phy_init()
12858 return bnx2x_avoid_link_flap(params, vars); in bnx2x_phy_init()
12863 bnx2x_cannot_avoid_link_flap(params, vars, lfa_status); in bnx2x_phy_init()
12872 bnx2x_emac_init(params, vars); in bnx2x_phy_init()
12875 vars->link_status |= LINK_STATUS_PFC_ENABLED; in bnx2x_phy_init()
12881 set_phy_vars(params, vars); in bnx2x_phy_init()
12886 bnx2x_init_bmac_loopback(params, vars); in bnx2x_phy_init()
12889 bnx2x_init_emac_loopback(params, vars); in bnx2x_phy_init()
12892 bnx2x_init_xmac_loopback(params, vars); in bnx2x_phy_init()
12895 bnx2x_init_umac_loopback(params, vars); in bnx2x_phy_init()
12899 bnx2x_init_xgxs_loopback(params, vars); in bnx2x_phy_init()
12908 bnx2x_link_initialize(params, vars); in bnx2x_phy_init()
12913 bnx2x_update_mng(params, vars->link_status); in bnx2x_phy_init()
12915 bnx2x_update_mng_eee(params, vars->eee_status); in bnx2x_phy_init()
12919 int bnx2x_link_reset(struct link_params *params, struct link_vars *vars, in bnx2x_link_reset() argument
12926 vars->link_status = 0; in bnx2x_link_reset()
12928 bnx2x_update_mng(params, vars->link_status); in bnx2x_link_reset()
12929 vars->eee_status &= ~(SHMEM_EEE_LP_ADV_STATUS_MASK | in bnx2x_link_reset()
12931 bnx2x_update_mng_eee(params, vars->eee_status); in bnx2x_link_reset()
12963 bnx2x_set_led(params, vars, LED_MODE_OFF, 0); in bnx2x_link_reset()
13006 vars->link_up = 0; in bnx2x_link_reset()
13007 vars->phy_flags = 0; in bnx2x_link_reset()
13011 struct link_vars *vars) in bnx2x_lfa_reset() argument
13014 vars->link_up = 0; in bnx2x_lfa_reset()
13015 vars->phy_flags = 0; in bnx2x_lfa_reset()
13018 return bnx2x_link_reset(params, vars, 1); in bnx2x_lfa_reset()
13498 struct link_vars *vars) in bnx2x_check_over_curr() argument
13516 if ((vars->phy_flags & PHY_OVER_CURRENT_FLAG) == 0) { in bnx2x_check_over_curr()
13525 vars->phy_flags |= PHY_OVER_CURRENT_FLAG; in bnx2x_check_over_curr()
13529 vars->phy_flags &= ~PHY_OVER_CURRENT_FLAG; in bnx2x_check_over_curr()
13534 struct link_vars *vars, u32 status, in bnx2x_analyze_link_error() argument
13540 u32 old_status = (vars->phy_flags & phy_flag) ? 1 : 0; in bnx2x_analyze_link_error()
13556 DP(NETIF_MSG_LINK, "Link changed:[%x %x]->%x\n", vars->link_up, in bnx2x_analyze_link_error()
13560 if ((vars->phy_flags & PHY_PHYSICAL_LINK_FLAG) == 0) in bnx2x_analyze_link_error()
13567 vars->link_status &= ~LINK_STATUS_LINK_UP; in bnx2x_analyze_link_error()
13568 vars->link_status |= link_flag; in bnx2x_analyze_link_error()
13569 vars->link_up = 0; in bnx2x_analyze_link_error()
13570 vars->phy_flags |= phy_flag; in bnx2x_analyze_link_error()
13579 vars->link_status |= LINK_STATUS_LINK_UP; in bnx2x_analyze_link_error()
13580 vars->link_status &= ~link_flag; in bnx2x_analyze_link_error()
13581 vars->link_up = 1; in bnx2x_analyze_link_error()
13582 vars->phy_flags &= ~phy_flag; in bnx2x_analyze_link_error()
13588 bnx2x_sync_link(params, vars); in bnx2x_analyze_link_error()
13590 bnx2x_set_led(params, vars, led_mode, SPEED_10000); in bnx2x_analyze_link_error()
13593 bnx2x_update_mng(params, vars->link_status); in bnx2x_analyze_link_error()
13596 vars->periodic_flags |= PERIODIC_FLAGS_LINK_EVENT; in bnx2x_analyze_link_error()
13613 struct link_vars *vars, in bnx2x_check_half_open_conn() argument
13620 if (((vars->phy_flags & PHY_PHYSICAL_LINK_FLAG) == 0) || in bnx2x_check_half_open_conn()
13642 bnx2x_analyze_link_error(params, vars, lss_status, in bnx2x_check_half_open_conn()
13661 bnx2x_analyze_link_error(params, vars, lss_status, in bnx2x_check_half_open_conn()
13669 struct link_vars *vars) in bnx2x_sfp_tx_fault_detection() argument
13686 led_change = bnx2x_analyze_link_error(params, vars, value, in bnx2x_sfp_tx_fault_detection()
13694 if (vars->phy_flags & PHY_SFP_TX_FAULT_FLAG) { in bnx2x_sfp_tx_fault_detection()
13696 vars->link_status |= LINK_STATUS_SFP_TX_FAULT; in bnx2x_sfp_tx_fault_detection()
13699 vars->link_status &= ~LINK_STATUS_SFP_TX_FAULT; in bnx2x_sfp_tx_fault_detection()
13711 struct link_vars *vars, in bnx2x_kr2_recovery() argument
13716 bnx2x_warpcore_enable_AN_KR2(phy, params, vars); in bnx2x_kr2_recovery()
13721 struct link_vars *vars, in bnx2x_check_kr2_wa() argument
13733 if (vars->check_kr2_recovery_cnt > 0) { in bnx2x_check_kr2_wa()
13734 vars->check_kr2_recovery_cnt--; in bnx2x_check_kr2_wa()
13741 bnx2x_kr2_recovery(params, vars, phy); in bnx2x_check_kr2_wa()
13759 bnx2x_kr2_recovery(params, vars, phy); in bnx2x_check_kr2_wa()
13778 bnx2x_kr2_recovery(params, vars, phy); in bnx2x_check_kr2_wa()
13786 bnx2x_disable_kr2(params, vars, phy); in bnx2x_check_kr2_wa()
13793 void bnx2x_period_func(struct link_params *params, struct link_vars *vars) in bnx2x_period_func() argument
13800 if (bnx2x_check_half_open_conn(params, vars, 1) != in bnx2x_period_func()
13812 bnx2x_check_kr2_wa(params, vars, phy); in bnx2x_period_func()
13813 bnx2x_check_over_curr(params, vars); in bnx2x_period_func()
13814 if (vars->rx_tx_asic_rst) in bnx2x_period_func()
13815 bnx2x_warpcore_config_runtime(phy, params, vars); in bnx2x_period_func()
13823 bnx2x_sfp_tx_fault_detection(phy, params, vars); in bnx2x_period_func()
13824 } else if (vars->link_status & in bnx2x_period_func()
13827 vars->link_status &= ~LINK_STATUS_SFP_TX_FAULT; in bnx2x_period_func()
13828 vars->phy_flags &= ~PHY_SFP_TX_FAULT_FLAG; in bnx2x_period_func()
13830 bnx2x_update_mng(params, vars->link_status); in bnx2x_period_func()
13879 void bnx2x_init_mod_abs_int(struct bnx2x *bp, struct link_vars *vars, in bnx2x_init_mod_abs_int() argument
13921 vars->aeu_int_mask = AEU_INPUTS_ATTN_BITS_GPIO0_FUNCTION_0 << in bnx2x_init_mod_abs_int()
13927 REG_WR(bp, sync_offset, vars->aeu_int_mask); in bnx2x_init_mod_abs_int()
13930 gpio_num, gpio_port, vars->aeu_int_mask); in bnx2x_init_mod_abs_int()
13939 aeu_mask |= vars->aeu_int_mask; in bnx2x_init_mod_abs_int()