Lines Matching refs:vars
220 struct link_vars *vars, u8 notify);
502 static u32 bnx2x_ets_get_min_w_val_nig(const struct link_vars *vars) in bnx2x_ets_get_min_w_val_nig() argument
506 if (vars->link_up) { in bnx2x_ets_get_min_w_val_nig()
507 if (vars->line_speed == SPEED_20000) in bnx2x_ets_get_min_w_val_nig()
574 const struct link_vars *vars) in bnx2x_ets_e3b0_nig_disabled() argument
578 const u32 min_w_val = bnx2x_ets_get_min_w_val_nig(vars); in bnx2x_ets_e3b0_nig_disabled()
749 const struct link_vars *vars) in bnx2x_ets_e3b0_disabled() argument
759 bnx2x_ets_e3b0_nig_disabled(params, vars); in bnx2x_ets_e3b0_disabled()
772 struct link_vars *vars) in bnx2x_ets_disabled() argument
780 bnx2x_status = bnx2x_ets_e3b0_disabled(params, vars); in bnx2x_ets_disabled()
1137 const struct link_vars *vars, in bnx2x_ets_e3b0_config() argument
1144 const u32 min_w_val_nig = bnx2x_ets_get_min_w_val_nig(vars); in bnx2x_ets_e3b0_config()
1358 struct link_vars *vars, in bnx2x_update_pfc_xmac() argument
1379 if (vars->flow_ctrl & BNX2X_FLOW_CTRL_RX) in bnx2x_update_pfc_xmac()
1383 if (vars->flow_ctrl & BNX2X_FLOW_CTRL_TX) in bnx2x_update_pfc_xmac()
1476 struct link_vars *vars) in bnx2x_emac_init() argument
1554 struct link_vars *vars, u8 lb) in bnx2x_umac_enable() argument
1576 switch (vars->line_speed) { in bnx2x_umac_enable()
1591 vars->line_speed); in bnx2x_umac_enable()
1594 if (!(vars->flow_ctrl & BNX2X_FLOW_CTRL_TX)) in bnx2x_umac_enable()
1597 if (!(vars->flow_ctrl & BNX2X_FLOW_CTRL_RX)) in bnx2x_umac_enable()
1600 if (vars->duplex == DUPLEX_HALF) in bnx2x_umac_enable()
1607 if (vars->eee_status & SHMEM_EEE_ADV_STATUS_MASK) { in bnx2x_umac_enable()
1646 ((vars->flow_ctrl & BNX2X_FLOW_CTRL_TX) != 0), 1); in bnx2x_umac_enable()
1647 vars->mac_type = MAC_TYPE_UMAC; in bnx2x_umac_enable()
1743 struct link_vars *vars, u8 lb) in bnx2x_xmac_enable() argument
1751 bnx2x_xmac_init(params, vars->line_speed); in bnx2x_xmac_enable()
1781 bnx2x_update_pfc_xmac(params, vars, 0); in bnx2x_xmac_enable()
1783 if (vars->eee_status & SHMEM_EEE_ADV_STATUS_MASK) { in bnx2x_xmac_enable()
1795 if ((vars->line_speed == SPEED_20000) && in bnx2x_xmac_enable()
1805 ((vars->flow_ctrl & BNX2X_FLOW_CTRL_TX) != 0), 1); in bnx2x_xmac_enable()
1807 vars->mac_type = MAC_TYPE_XMAC; in bnx2x_xmac_enable()
1813 struct link_vars *vars, u8 lb) in bnx2x_emac_enable() argument
1830 if (vars->phy_flags & PHY_XGXS_FLAG) { in bnx2x_emac_enable()
1861 if (vars->flow_ctrl & BNX2X_FLOW_CTRL_RX) in bnx2x_emac_enable()
1866 if (vars->flow_ctrl & BNX2X_FLOW_CTRL_TX) in bnx2x_emac_enable()
1933 (vars->flow_ctrl & BNX2X_FLOW_CTRL_TX)) in bnx2x_emac_enable()
1941 vars->mac_type = MAC_TYPE_EMAC; in bnx2x_emac_enable()
1946 struct link_vars *vars) in bnx2x_update_pfc_bmac1() argument
1956 (vars->flow_ctrl & BNX2X_FLOW_CTRL_RX)) in bnx2x_update_pfc_bmac1()
1967 (vars->flow_ctrl & BNX2X_FLOW_CTRL_TX)) in bnx2x_update_pfc_bmac1()
1975 struct link_vars *vars, in bnx2x_update_pfc_bmac2() argument
1989 (vars->flow_ctrl & BNX2X_FLOW_CTRL_RX)) in bnx2x_update_pfc_bmac2()
2001 (vars->flow_ctrl & BNX2X_FLOW_CTRL_TX)) in bnx2x_update_pfc_bmac2()
2127 struct link_vars *vars, in bnx2x_update_pfc_nig() argument
2223 struct link_vars *vars, in bnx2x_update_pfc() argument
2235 vars->link_status |= LINK_STATUS_PFC_ENABLED; in bnx2x_update_pfc()
2237 vars->link_status &= ~LINK_STATUS_PFC_ENABLED; in bnx2x_update_pfc()
2239 bnx2x_update_mng(params, vars->link_status); in bnx2x_update_pfc()
2242 bnx2x_update_pfc_nig(params, vars, pfc_params); in bnx2x_update_pfc()
2244 if (!vars->link_up) in bnx2x_update_pfc()
2250 if (vars->mac_type == MAC_TYPE_XMAC) in bnx2x_update_pfc()
2251 bnx2x_update_pfc_xmac(params, vars, 0); in bnx2x_update_pfc()
2258 bnx2x_emac_enable(params, vars, 0); in bnx2x_update_pfc()
2262 bnx2x_update_pfc_bmac2(params, vars, bmac_loopback); in bnx2x_update_pfc()
2264 bnx2x_update_pfc_bmac1(params, vars); in bnx2x_update_pfc()
2269 (vars->flow_ctrl & BNX2X_FLOW_CTRL_TX)) in bnx2x_update_pfc()
2277 struct link_vars *vars, in bnx2x_bmac1_enable() argument
2319 bnx2x_update_pfc_bmac1(params, vars); in bnx2x_bmac1_enable()
2341 struct link_vars *vars, in bnx2x_bmac2_enable() argument
2400 bnx2x_update_pfc_bmac2(params, vars, is_lb); in bnx2x_bmac2_enable()
2406 struct link_vars *vars, in bnx2x_bmac_enable() argument
2428 rc = bnx2x_bmac2_enable(params, vars, is_lb); in bnx2x_bmac_enable()
2430 rc = bnx2x_bmac1_enable(params, vars, is_lb); in bnx2x_bmac_enable()
2437 (vars->flow_ctrl & BNX2X_FLOW_CTRL_TX)) in bnx2x_bmac_enable()
2446 vars->mac_type = MAC_TYPE_BMAC; in bnx2x_bmac_enable()
2908 struct link_vars *vars) in bnx2x_eee_set_timers() argument
2925 vars->eee_status &= ~(SHMEM_EEE_TIMER_MASK | SHMEM_EEE_TIME_OUTPUT_BIT); in bnx2x_eee_set_timers()
2929 vars->eee_status |= (eee_idle & SHMEM_EEE_TIMER_MASK) | in bnx2x_eee_set_timers()
2934 vars->eee_status |= eee_mode; in bnx2x_eee_set_timers()
2941 struct link_vars *vars, u8 mode) in bnx2x_eee_initial_config() argument
2943 vars->eee_status |= ((u32) mode) << SHMEM_EEE_SUPPORTED_SHIFT; in bnx2x_eee_initial_config()
2947 vars->eee_status |= SHMEM_EEE_LPI_REQUESTED_BIT; in bnx2x_eee_initial_config()
2949 vars->eee_status &= ~SHMEM_EEE_LPI_REQUESTED_BIT; in bnx2x_eee_initial_config()
2952 vars->eee_status |= SHMEM_EEE_REQUESTED_BIT; in bnx2x_eee_initial_config()
2954 vars->eee_status &= ~SHMEM_EEE_REQUESTED_BIT; in bnx2x_eee_initial_config()
2956 return bnx2x_eee_set_timers(params, vars); in bnx2x_eee_initial_config()
2961 struct link_vars *vars) in bnx2x_eee_disable() argument
2970 vars->eee_status &= ~SHMEM_EEE_ADV_STATUS_MASK; in bnx2x_eee_disable()
2977 struct link_vars *vars, u8 modes) in bnx2x_eee_advertise() argument
2996 vars->eee_status &= ~SHMEM_EEE_ADV_STATUS_MASK; in bnx2x_eee_advertise()
2997 vars->eee_status |= (modes << SHMEM_EEE_ADV_STATUS_SHIFT); in bnx2x_eee_advertise()
3014 struct link_vars *vars) in bnx2x_eee_an_resolve() argument
3027 if (vars->line_speed == SPEED_100) in bnx2x_eee_an_resolve()
3035 if (vars->line_speed == SPEED_1000) in bnx2x_eee_an_resolve()
3043 if (vars->line_speed == SPEED_10000) in bnx2x_eee_an_resolve()
3049 vars->eee_status &= ~SHMEM_EEE_LP_ADV_STATUS_MASK; in bnx2x_eee_an_resolve()
3050 vars->eee_status |= (lp_adv << SHMEM_EEE_LP_ADV_STATUS_SHIFT); in bnx2x_eee_an_resolve()
3054 vars->eee_status |= SHMEM_EEE_ACTIVE_BIT; in bnx2x_eee_an_resolve()
3424 struct link_vars *vars) in set_phy_vars() argument
3454 vars->link_status |= LINK_STATUS_AUTO_NEGOTIATE_ENABLED; in set_phy_vars()
3466 struct link_vars *vars) in bnx2x_ext_phy_set_pause() argument
3476 bnx2x_calc_ieee_aneg_adv(phy, params, &vars->ieee_fc); in bnx2x_ext_phy_set_pause()
3477 if ((vars->ieee_fc & in bnx2x_ext_phy_set_pause()
3482 if ((vars->ieee_fc & in bnx2x_ext_phy_set_pause()
3491 static void bnx2x_pause_resolve(struct link_vars *vars, u32 pause_result) in bnx2x_pause_resolve() argument
3495 vars->flow_ctrl = BNX2X_FLOW_CTRL_TX; in bnx2x_pause_resolve()
3499 vars->flow_ctrl = BNX2X_FLOW_CTRL_RX; in bnx2x_pause_resolve()
3506 vars->flow_ctrl = BNX2X_FLOW_CTRL_BOTH; in bnx2x_pause_resolve()
3513 vars->link_status |= LINK_STATUS_LINK_PARTNER_SYMMETRIC_PAUSE; in bnx2x_pause_resolve()
3515 vars->link_status |= LINK_STATUS_LINK_PARTNER_ASYMMETRIC_PAUSE; in bnx2x_pause_resolve()
3521 struct link_vars *vars) in bnx2x_ext_phy_update_adv_fc() argument
3570 bnx2x_pause_resolve(vars, pause_result); in bnx2x_ext_phy_update_adv_fc()
3576 struct link_vars *vars) in bnx2x_ext_phy_resolve_fc() argument
3579 vars->flow_ctrl = BNX2X_FLOW_CTRL_NONE; in bnx2x_ext_phy_resolve_fc()
3583 bnx2x_ext_phy_update_adv_fc(phy, params, vars); in bnx2x_ext_phy_resolve_fc()
3585 vars->flow_ctrl = phy->req_flow_ctrl; in bnx2x_ext_phy_resolve_fc()
3587 vars->flow_ctrl = params->req_fc_auto_adv; in bnx2x_ext_phy_resolve_fc()
3588 else if (vars->link_status & LINK_STATUS_AUTO_NEGOTIATE_COMPLETE) { in bnx2x_ext_phy_resolve_fc()
3590 bnx2x_ext_phy_update_adv_fc(phy, params, vars); in bnx2x_ext_phy_resolve_fc()
3615 struct link_vars *vars) in bnx2x_warpcore_enable_AN_KR2() argument
3653 struct link_vars *vars, in bnx2x_disable_kr2() argument
3684 vars->check_kr2_recovery_cnt = CHECK_KR2_RECOVERY_CNT; in bnx2x_disable_kr2()
3716 struct link_vars *vars) { in bnx2x_warpcore_enable_AN_KR() argument
3744 if (((vars->line_speed == SPEED_AUTO_NEG) && in bnx2x_warpcore_enable_AN_KR()
3746 (vars->line_speed == SPEED_1000)) { in bnx2x_warpcore_enable_AN_KR()
3754 if (((vars->line_speed == SPEED_AUTO_NEG) && in bnx2x_warpcore_enable_AN_KR()
3756 (vars->line_speed == SPEED_10000)) { in bnx2x_warpcore_enable_AN_KR()
3808 bnx2x_ext_phy_set_pause(params, phy, vars); in bnx2x_warpcore_enable_AN_KR()
3809 vars->rx_tx_asic_rst = MAX_KR_LINK_RETRY; in bnx2x_warpcore_enable_AN_KR()
3832 bnx2x_warpcore_enable_AN_KR2(phy, params, vars); in bnx2x_warpcore_enable_AN_KR()
3859 bnx2x_disable_kr2(params, vars, phy); in bnx2x_warpcore_enable_AN_KR()
3868 struct link_vars *vars) in bnx2x_warpcore_set_10G_KR() argument
4386 struct link_vars *vars) in bnx2x_warpcore_config_runtime() argument
4392 vars->turn_to_run_wc_rt = vars->turn_to_run_wc_rt ? 0 : 1; in bnx2x_warpcore_config_runtime()
4394 if (!vars->turn_to_run_wc_rt) in bnx2x_warpcore_config_runtime()
4397 if (vars->rx_tx_asic_rst) { in bnx2x_warpcore_config_runtime()
4414 vars->rx_tx_asic_rst = 0; in bnx2x_warpcore_config_runtime()
4424 vars->rx_tx_asic_rst--; in bnx2x_warpcore_config_runtime()
4426 vars->rx_tx_asic_rst); in bnx2x_warpcore_config_runtime()
4477 struct link_vars *vars) in bnx2x_warpcore_config_init() argument
4489 vars->line_speed, serdes_net_if); in bnx2x_warpcore_config_init()
4492 vars->phy_flags |= PHY_XGXS_FLAG; in bnx2x_warpcore_config_init()
4497 vars->phy_flags |= PHY_SGMII_FLAG; in bnx2x_warpcore_config_init()
4506 bnx2x_warpcore_enable_AN_KR(phy, params, vars); in bnx2x_warpcore_config_init()
4509 bnx2x_warpcore_set_10G_KR(phy, params, vars); in bnx2x_warpcore_config_init()
4515 if (vars->line_speed == SPEED_10000) { in bnx2x_warpcore_config_init()
4552 if (vars->line_speed != SPEED_20000) { in bnx2x_warpcore_config_init()
4564 bnx2x_warpcore_enable_AN_KR(phy, params, vars); in bnx2x_warpcore_config_init()
4684 struct link_vars *vars) in bnx2x_sync_link() argument
4688 if (vars->link_status & LINK_STATUS_PHYSICAL_LINK_FLAG) in bnx2x_sync_link()
4689 vars->phy_flags |= PHY_PHYSICAL_LINK_FLAG; in bnx2x_sync_link()
4690 vars->link_up = (vars->link_status & LINK_STATUS_LINK_UP); in bnx2x_sync_link()
4691 if (vars->link_up) { in bnx2x_sync_link()
4694 vars->phy_link_up = 1; in bnx2x_sync_link()
4695 vars->duplex = DUPLEX_FULL; in bnx2x_sync_link()
4696 switch (vars->link_status & in bnx2x_sync_link()
4699 vars->duplex = DUPLEX_HALF; in bnx2x_sync_link()
4702 vars->line_speed = SPEED_10; in bnx2x_sync_link()
4706 vars->duplex = DUPLEX_HALF; in bnx2x_sync_link()
4710 vars->line_speed = SPEED_100; in bnx2x_sync_link()
4714 vars->duplex = DUPLEX_HALF; in bnx2x_sync_link()
4717 vars->line_speed = SPEED_1000; in bnx2x_sync_link()
4721 vars->duplex = DUPLEX_HALF; in bnx2x_sync_link()
4724 vars->line_speed = SPEED_2500; in bnx2x_sync_link()
4728 vars->line_speed = SPEED_10000; in bnx2x_sync_link()
4731 vars->line_speed = SPEED_20000; in bnx2x_sync_link()
4736 vars->flow_ctrl = 0; in bnx2x_sync_link()
4737 if (vars->link_status & LINK_STATUS_TX_FLOW_CONTROL_ENABLED) in bnx2x_sync_link()
4738 vars->flow_ctrl |= BNX2X_FLOW_CTRL_TX; in bnx2x_sync_link()
4740 if (vars->link_status & LINK_STATUS_RX_FLOW_CONTROL_ENABLED) in bnx2x_sync_link()
4741 vars->flow_ctrl |= BNX2X_FLOW_CTRL_RX; in bnx2x_sync_link()
4743 if (!vars->flow_ctrl) in bnx2x_sync_link()
4744 vars->flow_ctrl = BNX2X_FLOW_CTRL_NONE; in bnx2x_sync_link()
4746 if (vars->line_speed && in bnx2x_sync_link()
4747 ((vars->line_speed == SPEED_10) || in bnx2x_sync_link()
4748 (vars->line_speed == SPEED_100))) { in bnx2x_sync_link()
4749 vars->phy_flags |= PHY_SGMII_FLAG; in bnx2x_sync_link()
4751 vars->phy_flags &= ~PHY_SGMII_FLAG; in bnx2x_sync_link()
4753 if (vars->line_speed && in bnx2x_sync_link()
4755 (vars->line_speed == SPEED_1000)) in bnx2x_sync_link()
4756 vars->phy_flags |= PHY_SGMII_FLAG; in bnx2x_sync_link()
4758 link_10g_plus = (vars->line_speed >= SPEED_10000); in bnx2x_sync_link()
4762 vars->mac_type = MAC_TYPE_XMAC; in bnx2x_sync_link()
4764 vars->mac_type = MAC_TYPE_BMAC; in bnx2x_sync_link()
4767 vars->mac_type = MAC_TYPE_UMAC; in bnx2x_sync_link()
4769 vars->mac_type = MAC_TYPE_EMAC; in bnx2x_sync_link()
4774 vars->phy_link_up = 0; in bnx2x_sync_link()
4776 vars->line_speed = 0; in bnx2x_sync_link()
4777 vars->duplex = DUPLEX_FULL; in bnx2x_sync_link()
4778 vars->flow_ctrl = BNX2X_FLOW_CTRL_NONE; in bnx2x_sync_link()
4781 vars->mac_type = MAC_TYPE_NONE; in bnx2x_sync_link()
4782 if (vars->link_status & LINK_STATUS_PHYSICAL_LINK_FLAG) in bnx2x_sync_link()
4783 vars->phy_flags |= PHY_HALF_OPEN_CONN_FLAG; in bnx2x_sync_link()
4784 if (vars->link_status & LINK_STATUS_SFP_TX_FAULT) in bnx2x_sync_link()
4785 vars->phy_flags |= PHY_SFP_TX_FAULT_FLAG; in bnx2x_sync_link()
4790 struct link_vars *vars) in bnx2x_link_status_update() argument
4796 set_phy_vars(params, vars); in bnx2x_link_status_update()
4798 vars->link_status = REG_RD(bp, params->shmem_base + in bnx2x_link_status_update()
4805 vars->link_status |= LINK_STATUS_LINK_UP; in bnx2x_link_status_update()
4808 vars->eee_status = REG_RD(bp, params->shmem2_base + in bnx2x_link_status_update()
4812 vars->phy_flags = PHY_XGXS_FLAG; in bnx2x_link_status_update()
4813 bnx2x_sync_link(params, vars); in bnx2x_link_status_update()
4836 vars->aeu_int_mask = REG_RD(bp, sync_offset); in bnx2x_link_status_update()
4839 if (vars->link_status & LINK_STATUS_PFC_ENABLED) in bnx2x_link_status_update()
4851 vars->link_status, vars->phy_link_up, vars->aeu_int_mask); in bnx2x_link_status_update()
4853 vars->line_speed, vars->duplex, vars->flow_ctrl); in bnx2x_link_status_update()
5018 struct link_vars *vars, in bnx2x_set_autoneg() argument
5030 if (vars->line_speed == SPEED_AUTO_NEG) in bnx2x_set_autoneg()
5048 if (vars->line_speed == SPEED_AUTO_NEG) in bnx2x_set_autoneg()
5062 if (vars->line_speed == SPEED_AUTO_NEG) { in bnx2x_set_autoneg()
5122 struct link_vars *vars) in bnx2x_program_serdes() argument
5152 if (!((vars->line_speed == SPEED_1000) || in bnx2x_program_serdes()
5153 (vars->line_speed == SPEED_100) || in bnx2x_program_serdes()
5154 (vars->line_speed == SPEED_10))) { in bnx2x_program_serdes()
5158 if (vars->line_speed == SPEED_10000) in bnx2x_program_serdes()
5252 struct link_vars *vars) in bnx2x_initialize_sgmii_process() argument
5274 if (!(vars->line_speed == SPEED_AUTO_NEG)) { in bnx2x_initialize_sgmii_process()
5286 switch (vars->line_speed) { in bnx2x_initialize_sgmii_process()
5301 vars->line_speed); in bnx2x_initialize_sgmii_process()
5358 struct link_vars *vars, in bnx2x_update_adv_fc() argument
5399 bnx2x_pause_resolve(vars, pause_result); in bnx2x_update_adv_fc()
5405 struct link_vars *vars, in bnx2x_flow_ctrl_resolve() argument
5409 vars->flow_ctrl = BNX2X_FLOW_CTRL_NONE; in bnx2x_flow_ctrl_resolve()
5415 bnx2x_update_adv_fc(phy, params, vars, gp_status); in bnx2x_flow_ctrl_resolve()
5417 vars->flow_ctrl = phy->req_flow_ctrl; in bnx2x_flow_ctrl_resolve()
5419 vars->flow_ctrl = params->req_fc_auto_adv; in bnx2x_flow_ctrl_resolve()
5421 (!(vars->phy_flags & PHY_SGMII_FLAG))) { in bnx2x_flow_ctrl_resolve()
5423 vars->flow_ctrl = params->req_fc_auto_adv; in bnx2x_flow_ctrl_resolve()
5426 bnx2x_update_adv_fc(phy, params, vars, gp_status); in bnx2x_flow_ctrl_resolve()
5428 DP(NETIF_MSG_LINK, "flow_ctrl 0x%x\n", vars->flow_ctrl); in bnx2x_flow_ctrl_resolve()
5501 struct link_vars *vars, in bnx2x_xgxs_an_resolve() argument
5505 vars->link_status |= in bnx2x_xgxs_an_resolve()
5509 vars->link_status |= in bnx2x_xgxs_an_resolve()
5514 struct link_vars *vars, in bnx2x_get_link_speed_duplex() argument
5521 vars->link_status |= LINK_STATUS_AUTO_NEGOTIATE_ENABLED; in bnx2x_get_link_speed_duplex()
5525 vars->phy_link_up = 1; in bnx2x_get_link_speed_duplex()
5526 vars->link_status |= LINK_STATUS_LINK_UP; in bnx2x_get_link_speed_duplex()
5530 vars->line_speed = SPEED_10; in bnx2x_get_link_speed_duplex()
5532 vars->link_status |= LINK_10TFD; in bnx2x_get_link_speed_duplex()
5534 vars->link_status |= LINK_10THD; in bnx2x_get_link_speed_duplex()
5538 vars->line_speed = SPEED_100; in bnx2x_get_link_speed_duplex()
5540 vars->link_status |= LINK_100TXFD; in bnx2x_get_link_speed_duplex()
5542 vars->link_status |= LINK_100TXHD; in bnx2x_get_link_speed_duplex()
5547 vars->line_speed = SPEED_1000; in bnx2x_get_link_speed_duplex()
5549 vars->link_status |= LINK_1000TFD; in bnx2x_get_link_speed_duplex()
5551 vars->link_status |= LINK_1000THD; in bnx2x_get_link_speed_duplex()
5555 vars->line_speed = SPEED_2500; in bnx2x_get_link_speed_duplex()
5557 vars->link_status |= LINK_2500TFD; in bnx2x_get_link_speed_duplex()
5559 vars->link_status |= LINK_2500THD; in bnx2x_get_link_speed_duplex()
5575 vars->line_speed = SPEED_10000; in bnx2x_get_link_speed_duplex()
5576 vars->link_status |= LINK_10GTFD; in bnx2x_get_link_speed_duplex()
5580 vars->line_speed = SPEED_20000; in bnx2x_get_link_speed_duplex()
5581 vars->link_status |= LINK_20GTFD; in bnx2x_get_link_speed_duplex()
5592 vars->phy_link_up = 0; in bnx2x_get_link_speed_duplex()
5594 vars->duplex = DUPLEX_FULL; in bnx2x_get_link_speed_duplex()
5595 vars->flow_ctrl = BNX2X_FLOW_CTRL_NONE; in bnx2x_get_link_speed_duplex()
5596 vars->mac_type = MAC_TYPE_NONE; in bnx2x_get_link_speed_duplex()
5599 vars->phy_link_up, vars->line_speed); in bnx2x_get_link_speed_duplex()
5605 struct link_vars *vars) in bnx2x_link_settings_status() argument
5624 rc = bnx2x_get_link_speed_duplex(phy, params, vars, link_up, speed_mask, in bnx2x_link_settings_status()
5631 vars->duplex = duplex; in bnx2x_link_settings_status()
5632 bnx2x_flow_ctrl_resolve(phy, params, vars, gp_status); in bnx2x_link_settings_status()
5634 bnx2x_xgxs_an_resolve(phy, params, vars, in bnx2x_link_settings_status()
5647 (vars->link_status & LINK_STATUS_AUTO_NEGOTIATE_COMPLETE)) { in bnx2x_link_settings_status()
5654 vars->link_status |= in bnx2x_link_settings_status()
5658 vars->link_status |= in bnx2x_link_settings_status()
5665 vars->link_status |= in bnx2x_link_settings_status()
5668 vars->link_status |= in bnx2x_link_settings_status()
5673 vars->duplex, vars->flow_ctrl, vars->link_status); in bnx2x_link_settings_status()
5679 struct link_vars *vars) in bnx2x_warpcore_read_status() argument
5705 bnx2x_ext_phy_resolve_fc(phy, params, vars); in bnx2x_warpcore_read_status()
5732 vars->link_status |= in bnx2x_warpcore_read_status()
5740 vars->link_status |= in bnx2x_warpcore_read_status()
5743 bnx2x_ext_phy_resolve_fc(phy, params, vars); in bnx2x_warpcore_read_status()
5744 vars->duplex = duplex; in bnx2x_warpcore_read_status()
5748 if ((vars->link_status & LINK_STATUS_AUTO_NEGOTIATE_COMPLETE) && in bnx2x_warpcore_read_status()
5756 vars->link_status |= in bnx2x_warpcore_read_status()
5760 vars->link_status |= in bnx2x_warpcore_read_status()
5767 vars->link_status |= in bnx2x_warpcore_read_status()
5770 vars->link_status |= in bnx2x_warpcore_read_status()
5790 rc = bnx2x_get_link_speed_duplex(phy, params, vars, link_up, gp_speed, in bnx2x_warpcore_read_status()
5796 vars->rx_tx_asic_rst = MAX_KR_LINK_RETRY; in bnx2x_warpcore_read_status()
5799 vars->duplex, vars->flow_ctrl, vars->link_status); in bnx2x_warpcore_read_status()
5842 struct link_vars *vars) in bnx2x_emac_program() argument
5854 switch (vars->line_speed) { in bnx2x_emac_program()
5874 vars->line_speed); in bnx2x_emac_program()
5878 if (vars->duplex == DUPLEX_HALF) in bnx2x_emac_program()
5884 bnx2x_set_led(params, vars, LED_MODE_OPER, vars->line_speed); in bnx2x_emac_program()
5914 struct link_vars *vars) in bnx2x_xgxs_config_init() argument
5919 if (!(vars->phy_flags & PHY_SGMII_FLAG)) { in bnx2x_xgxs_config_init()
5926 if (vars->line_speed != SPEED_AUTO_NEG || in bnx2x_xgxs_config_init()
5932 bnx2x_set_autoneg(phy, params, vars, 0); in bnx2x_xgxs_config_init()
5935 bnx2x_program_serdes(phy, params, vars); in bnx2x_xgxs_config_init()
5945 vars->ieee_fc); in bnx2x_xgxs_config_init()
5948 bnx2x_set_autoneg(phy, params, vars, enable_cl73); in bnx2x_xgxs_config_init()
5957 bnx2x_initialize_sgmii_process(phy, params, vars); in bnx2x_xgxs_config_init()
5963 struct link_vars *vars) in bnx2x_prepare_xgxs() argument
5966 vars->phy_flags |= PHY_XGXS_FLAG; in bnx2x_prepare_xgxs()
5976 vars->phy_flags |= PHY_SGMII_FLAG; in bnx2x_prepare_xgxs()
5978 vars->phy_flags &= ~PHY_SGMII_FLAG; in bnx2x_prepare_xgxs()
5980 bnx2x_calc_ieee_aneg_adv(phy, params, &vars->ieee_fc); in bnx2x_prepare_xgxs()
6110 struct link_vars *vars, u8 is_10g_plus) in bnx2x_link_int_ack() argument
6122 if (vars->phy_link_up) { in bnx2x_link_int_ack()
6291 struct link_vars *vars, u8 mode, u32 speed) in bnx2x_set_led() argument
6334 if (!vars->link_up) in bnx2x_set_led()
6438 int bnx2x_test_link(struct link_params *params, struct link_vars *vars, in bnx2x_test_link() argument
6520 struct link_vars *vars) in bnx2x_link_initialize() argument
6529 vars->line_speed = params->phy[INT_PHY].req_line_speed; in bnx2x_link_initialize()
6536 bnx2x_prepare_xgxs(¶ms->phy[INT_PHY], params, vars); in bnx2x_link_initialize()
6545 if (vars->line_speed == SPEED_AUTO_NEG && in bnx2x_link_initialize()
6550 params->phy[INT_PHY].config_init(phy, params, vars); in bnx2x_link_initialize()
6556 vars->line_speed = params->phy[INT_PHY].req_line_speed; in bnx2x_link_initialize()
6562 vars->link_status |= LINK_STATUS_SERDES_LINK; in bnx2x_link_initialize()
6573 vars->link_status |= LINK_STATUS_SERDES_LINK; in bnx2x_link_initialize()
6584 params, vars); in bnx2x_link_initialize()
6625 struct link_vars *vars) in bnx2x_update_link_down() argument
6631 bnx2x_set_led(params, vars, LED_MODE_OFF, 0); in bnx2x_update_link_down()
6632 vars->phy_flags &= ~PHY_PHYSICAL_LINK_FLAG; in bnx2x_update_link_down()
6634 vars->mac_type = MAC_TYPE_NONE; in bnx2x_update_link_down()
6637 vars->link_status &= ~LINK_UPDATE_MASK; in bnx2x_update_link_down()
6638 vars->line_speed = 0; in bnx2x_update_link_down()
6639 bnx2x_update_mng(params, vars->link_status); in bnx2x_update_link_down()
6660 vars->eee_status &= ~(SHMEM_EEE_LP_ADV_STATUS_MASK | in bnx2x_update_link_down()
6663 bnx2x_update_mng_eee(params, vars->eee_status); in bnx2x_update_link_down()
6672 struct link_vars *vars, in bnx2x_update_link_up() argument
6679 vars->link_status |= (LINK_STATUS_LINK_UP | in bnx2x_update_link_up()
6681 vars->phy_flags |= PHY_PHYSICAL_LINK_FLAG; in bnx2x_update_link_up()
6683 if (vars->flow_ctrl & BNX2X_FLOW_CTRL_TX) in bnx2x_update_link_up()
6684 vars->link_status |= in bnx2x_update_link_up()
6687 if (vars->flow_ctrl & BNX2X_FLOW_CTRL_RX) in bnx2x_update_link_up()
6688 vars->link_status |= in bnx2x_update_link_up()
6692 if (bnx2x_xmac_enable(params, vars, 0) == in bnx2x_update_link_up()
6695 vars->link_up = 0; in bnx2x_update_link_up()
6696 vars->phy_flags |= PHY_HALF_OPEN_CONN_FLAG; in bnx2x_update_link_up()
6697 vars->link_status &= ~LINK_STATUS_LINK_UP; in bnx2x_update_link_up()
6700 bnx2x_umac_enable(params, vars, 0); in bnx2x_update_link_up()
6701 bnx2x_set_led(params, vars, in bnx2x_update_link_up()
6702 LED_MODE_OPER, vars->line_speed); in bnx2x_update_link_up()
6704 if ((vars->eee_status & SHMEM_EEE_ACTIVE_BIT) && in bnx2x_update_link_up()
6705 (vars->eee_status & SHMEM_EEE_LPI_REQUESTED_BIT)) { in bnx2x_update_link_up()
6717 if (bnx2x_bmac_enable(params, vars, 0, 1) == in bnx2x_update_link_up()
6720 vars->link_up = 0; in bnx2x_update_link_up()
6721 vars->phy_flags |= PHY_HALF_OPEN_CONN_FLAG; in bnx2x_update_link_up()
6722 vars->link_status &= ~LINK_STATUS_LINK_UP; in bnx2x_update_link_up()
6725 bnx2x_set_led(params, vars, in bnx2x_update_link_up()
6728 rc = bnx2x_emac_program(params, vars); in bnx2x_update_link_up()
6729 bnx2x_emac_enable(params, vars, 0); in bnx2x_update_link_up()
6732 if ((vars->link_status & in bnx2x_update_link_up()
6734 && (!(vars->phy_flags & PHY_SGMII_FLAG)) && in bnx2x_update_link_up()
6742 rc |= bnx2x_pbf_update(params, vars->flow_ctrl, in bnx2x_update_link_up()
6743 vars->line_speed); in bnx2x_update_link_up()
6749 bnx2x_update_mng(params, vars->link_status); in bnx2x_update_link_up()
6750 bnx2x_update_mng_eee(params, vars->eee_status); in bnx2x_update_link_up()
6754 bnx2x_check_half_open_conn(params, vars, 0); in bnx2x_update_link_up()
6792 int bnx2x_link_update(struct link_params *params, struct link_vars *vars) in bnx2x_link_update() argument
6798 u32 prev_link_status = vars->link_status; in bnx2x_link_update()
6802 u16 ext_phy_line_speed = 0, prev_line_speed = vars->line_speed; in bnx2x_link_update()
6804 vars->phy_flags &= ~PHY_HALF_OPEN_CONN_FLAG; in bnx2x_link_update()
6805 vars->link_status &= ~LINK_UPDATE_MASK; in bnx2x_link_update()
6816 phy_vars[phy_index].eee_status = vars->eee_status; in bnx2x_link_update()
6823 port, (vars->phy_flags & PHY_XGXS_FLAG), in bnx2x_link_update()
6901 prev_line_speed = vars->line_speed; in bnx2x_link_update()
6911 params, vars); in bnx2x_link_update()
6920 vars->flow_ctrl = phy_vars[active_external_phy].flow_ctrl; in bnx2x_link_update()
6924 vars->link_status |= phy_vars[active_external_phy].link_status; in bnx2x_link_update()
6940 vars->duplex = phy_vars[active_external_phy].duplex; in bnx2x_link_update()
6943 vars->link_status |= LINK_STATUS_SERDES_LINK; in bnx2x_link_update()
6945 vars->link_status &= ~LINK_STATUS_SERDES_LINK; in bnx2x_link_update()
6947 vars->eee_status = phy_vars[active_external_phy].eee_status; in bnx2x_link_update()
6964 " ext_phy_line_speed = %d\n", vars->flow_ctrl, in bnx2x_link_update()
6965 vars->link_status, ext_phy_line_speed); in bnx2x_link_update()
6971 if (vars->phy_link_up) { in bnx2x_link_update()
6973 (ext_phy_line_speed != vars->line_speed)) { in bnx2x_link_update()
6976 " link speed %d\n", vars->line_speed, in bnx2x_link_update()
6978 vars->phy_link_up = 0; in bnx2x_link_update()
6979 } else if (prev_line_speed != vars->line_speed) { in bnx2x_link_update()
6987 link_10g_plus = (vars->line_speed >= SPEED_10000); in bnx2x_link_update()
6989 bnx2x_link_int_ack(params, vars, link_10g_plus); in bnx2x_link_update()
7001 vars->phy_link_up, in bnx2x_link_update()
7006 && ext_phy_link_up && !vars->phy_link_up) { in bnx2x_link_update()
7007 vars->line_speed = ext_phy_line_speed; in bnx2x_link_update()
7008 if (vars->line_speed < SPEED_1000) in bnx2x_link_update()
7009 vars->phy_flags |= PHY_SGMII_FLAG; in bnx2x_link_update()
7011 vars->phy_flags &= ~PHY_SGMII_FLAG; in bnx2x_link_update()
7016 vars); in bnx2x_link_update()
7022 vars->link_up = (vars->phy_link_up && in bnx2x_link_update()
7029 vars->link_status |= LINK_STATUS_PFC_ENABLED; in bnx2x_link_update()
7031 vars->link_status &= ~LINK_STATUS_PFC_ENABLED; in bnx2x_link_update()
7033 if (vars->link_up) in bnx2x_link_update()
7034 rc = bnx2x_update_link_up(params, vars, link_10g_plus); in bnx2x_link_update()
7036 rc = bnx2x_update_link_down(params, vars); in bnx2x_link_update()
7038 if ((prev_link_status ^ vars->link_status) & LINK_STATUS_LINK_UP) in bnx2x_link_update()
7086 struct link_vars *vars) in bnx2x_ext_phy_10G_an_resolve() argument
7096 vars->link_status |= LINK_STATUS_AUTO_NEGOTIATE_COMPLETE; in bnx2x_ext_phy_10G_an_resolve()
7098 vars->link_status |= LINK_STATUS_PARALLEL_DETECTION_USED; in bnx2x_ext_phy_10G_an_resolve()
7106 struct link_vars *vars) in bnx2x_8073_resolve_fc() argument
7111 vars->flow_ctrl = phy->req_flow_ctrl; in bnx2x_8073_resolve_fc()
7115 if (bnx2x_ext_phy_resolve_fc(phy, params, vars) && in bnx2x_8073_resolve_fc()
7116 (vars->flow_ctrl == BNX2X_FLOW_CTRL_NONE)) { in bnx2x_8073_resolve_fc()
7132 bnx2x_pause_resolve(vars, pause_result); in bnx2x_8073_resolve_fc()
7315 struct link_vars *vars) in bnx2x_8073_set_pause_cl37() argument
7324 bnx2x_calc_ieee_aneg_adv(phy, params, &vars->ieee_fc); in bnx2x_8073_set_pause_cl37()
7325 if ((vars->ieee_fc & in bnx2x_8073_set_pause_cl37()
7330 if ((vars->ieee_fc & in bnx2x_8073_set_pause_cl37()
7335 if ((vars->ieee_fc & in bnx2x_8073_set_pause_cl37()
7366 struct link_vars *vars) in bnx2x_8073_config_init() argument
7385 bnx2x_8073_set_pause_cl37(params, phy, vars); in bnx2x_8073_config_init()
7502 bnx2x_ext_phy_set_pause(params, phy, vars); in bnx2x_8073_config_init()
7514 struct link_vars *vars) in bnx2x_8073_read_status() argument
7595 vars->line_speed = SPEED_10000; in bnx2x_8073_read_status()
7600 vars->line_speed = SPEED_2500; in bnx2x_8073_read_status()
7605 vars->line_speed = SPEED_1000; in bnx2x_8073_read_status()
7625 if (vars->line_speed == SPEED_1000) { in bnx2x_8073_read_status()
7637 bnx2x_ext_phy_10G_an_resolve(bp, phy, vars); in bnx2x_8073_read_status()
7638 bnx2x_8073_resolve_fc(phy, params, vars); in bnx2x_8073_read_status()
7639 vars->duplex = DUPLEX_FULL; in bnx2x_8073_read_status()
7642 if (vars->link_status & LINK_STATUS_AUTO_NEGOTIATE_COMPLETE) { in bnx2x_8073_read_status()
7647 vars->link_status |= in bnx2x_8073_read_status()
7650 vars->link_status |= in bnx2x_8073_read_status()
7678 struct link_vars *vars) in bnx2x_8705_config_init() argument
7705 struct link_vars *vars) in bnx2x_8705_read_status() argument
7730 vars->line_speed = SPEED_10000; in bnx2x_8705_read_status()
7731 bnx2x_ext_phy_resolve_fc(phy, params, vars); in bnx2x_8705_read_status()
8827 struct link_vars *vars) in bnx2x_8706_8726_read_status() argument
8864 vars->line_speed = SPEED_1000; in bnx2x_8706_8726_read_status()
8866 vars->line_speed = SPEED_10000; in bnx2x_8706_8726_read_status()
8867 bnx2x_ext_phy_resolve_fc(phy, params, vars); in bnx2x_8706_8726_read_status()
8868 vars->duplex = DUPLEX_FULL; in bnx2x_8706_8726_read_status()
8872 if (vars->line_speed == SPEED_10000) { in bnx2x_8706_8726_read_status()
8878 vars->fault_detected = 1; in bnx2x_8706_8726_read_status()
8889 struct link_vars *vars) in bnx2x_8706_config_init() argument
8995 struct link_vars *vars) in bnx2x_8706_read_status() argument
8997 return bnx2x_8706_8726_read_status(phy, params, vars); in bnx2x_8706_read_status()
9051 struct link_vars *vars) in bnx2x_8726_read_status() argument
9055 u8 link_up = bnx2x_8706_8726_read_status(phy, params, vars); in bnx2x_8726_read_status()
9063 vars->line_speed = 0; in bnx2x_8726_read_status()
9072 struct link_vars *vars) in bnx2x_8726_config_init() argument
9108 bnx2x_ext_phy_set_pause(params, phy, vars); in bnx2x_8726_config_init()
9290 struct link_vars *vars) in bnx2x_8727_config_init() argument
9461 struct link_vars *vars) in bnx2x_8727_read_status() argument
9480 vars->line_speed = 0; in bnx2x_8727_read_status()
9566 vars->line_speed = SPEED_10000; in bnx2x_8727_read_status()
9571 vars->line_speed = SPEED_1000; in bnx2x_8727_read_status()
9581 if (vars->line_speed == SPEED_10000) { in bnx2x_8727_read_status()
9589 vars->fault_detected = 1; in bnx2x_8727_read_status()
9594 bnx2x_ext_phy_resolve_fc(phy, params, vars); in bnx2x_8727_read_status()
9595 vars->duplex = DUPLEX_FULL; in bnx2x_8727_read_status()
9596 DP(NETIF_MSG_LINK, "duplex = 0x%x\n", vars->duplex); in bnx2x_8727_read_status()
9771 struct link_vars *vars) in bnx2x_848xx_cmn_config_init() argument
9785 bnx2x_ext_phy_set_pause(params, phy, vars); in bnx2x_848xx_cmn_config_init()
9918 struct link_vars *vars) in bnx2x_8481_config_init() argument
9930 return bnx2x_848xx_cmn_config_init(phy, params, vars); in bnx2x_8481_config_init()
9993 struct link_vars *vars) in bnx2x_84833_pair_swap_cfg() argument
10093 struct link_vars *vars) in bnx2x_8483x_disable_eee() argument
10109 return bnx2x_eee_disable(phy, params, vars); in bnx2x_8483x_disable_eee()
10114 struct link_vars *vars) in bnx2x_8483x_enable_eee() argument
10127 return bnx2x_eee_advertise(phy, params, vars, SHMEM_EEE_10G_ADV); in bnx2x_8483x_enable_eee()
10133 struct link_vars *vars) in bnx2x_848x3_config_init() argument
10170 temp = vars->line_speed; in bnx2x_848x3_config_init()
10171 vars->line_speed = SPEED_10000; in bnx2x_848x3_config_init()
10172 bnx2x_set_autoneg(¶ms->phy[INT_PHY], params, vars, 0); in bnx2x_848x3_config_init()
10173 bnx2x_program_serdes(¶ms->phy[INT_PHY], params, vars); in bnx2x_848x3_config_init()
10174 vars->line_speed = temp; in bnx2x_848x3_config_init()
10223 bnx2x_84833_pair_swap_cfg(phy, params, vars); in bnx2x_848x3_config_init()
10237 rc = bnx2x_848xx_cmn_config_init(phy, params, vars); in bnx2x_848x3_config_init()
10264 rc = bnx2x_eee_initial_config(params, vars, SHMEM_EEE_10G_ADV); in bnx2x_848x3_config_init()
10267 bnx2x_8483x_disable_eee(phy, params, vars); in bnx2x_848x3_config_init()
10275 rc = bnx2x_8483x_enable_eee(phy, params, vars); in bnx2x_848x3_config_init()
10277 rc = bnx2x_8483x_disable_eee(phy, params, vars); in bnx2x_848x3_config_init()
10283 vars->eee_status &= ~SHMEM_EEE_SUPPORTED_MASK; in bnx2x_848x3_config_init()
10299 struct link_vars *vars) in bnx2x_848xx_read_status() argument
10317 vars->line_speed = SPEED_10000; in bnx2x_848xx_read_status()
10318 vars->duplex = DUPLEX_FULL; in bnx2x_848xx_read_status()
10320 bnx2x_ext_phy_10G_an_resolve(bp, phy, vars); in bnx2x_848xx_read_status()
10340 vars->line_speed = SPEED_10; in bnx2x_848xx_read_status()
10342 vars->line_speed = SPEED_100; in bnx2x_848xx_read_status()
10344 vars->line_speed = SPEED_1000; in bnx2x_848xx_read_status()
10346 vars->line_speed = 0; in bnx2x_848xx_read_status()
10352 vars->duplex = DUPLEX_FULL; in bnx2x_848xx_read_status()
10354 vars->duplex = DUPLEX_HALF; in bnx2x_848xx_read_status()
10358 vars->line_speed, in bnx2x_848xx_read_status()
10359 (vars->duplex == DUPLEX_FULL)); in bnx2x_848xx_read_status()
10366 vars->link_status |= in bnx2x_848xx_read_status()
10373 vars->link_status |= in bnx2x_848xx_read_status()
10379 vars->line_speed); in bnx2x_848xx_read_status()
10380 bnx2x_ext_phy_resolve_fc(phy, params, vars); in bnx2x_848xx_read_status()
10386 vars->link_status |= in bnx2x_848xx_read_status()
10389 vars->link_status |= in bnx2x_848xx_read_status()
10392 vars->link_status |= in bnx2x_848xx_read_status()
10395 vars->link_status |= in bnx2x_848xx_read_status()
10398 vars->link_status |= in bnx2x_848xx_read_status()
10405 vars->link_status |= in bnx2x_848xx_read_status()
10408 vars->link_status |= in bnx2x_848xx_read_status()
10415 vars->link_status |= in bnx2x_848xx_read_status()
10421 bnx2x_eee_an_resolve(phy, params, vars); in bnx2x_848xx_read_status()
10788 struct link_vars *vars) in bnx2x_54618se_config_init() argument
10839 bnx2x_calc_ieee_aneg_adv(phy, params, &vars->ieee_fc); in bnx2x_54618se_config_init()
10841 if ((vars->ieee_fc & MDIO_COMBO_IEEE0_AUTO_NEG_ADV_PAUSE_ASYMMETRIC) == in bnx2x_54618se_config_init()
10845 if ((vars->ieee_fc & MDIO_COMBO_IEEE0_AUTO_NEG_ADV_PAUSE_BOTH) == in bnx2x_54618se_config_init()
10941 rc = bnx2x_eee_initial_config(params, vars, SHMEM_EEE_1G_ADV); in bnx2x_54618se_config_init()
10944 bnx2x_eee_disable(phy, params, vars); in bnx2x_54618se_config_init()
10954 bnx2x_eee_advertise(phy, params, vars, in bnx2x_54618se_config_init()
10958 bnx2x_eee_disable(phy, params, vars); in bnx2x_54618se_config_init()
10961 vars->eee_status &= ~SHMEM_EEE_1G_ADV << in bnx2x_54618se_config_init()
11056 struct link_vars *vars) in bnx2x_54618se_read_status() argument
11079 vars->line_speed = SPEED_1000; in bnx2x_54618se_read_status()
11080 vars->duplex = DUPLEX_FULL; in bnx2x_54618se_read_status()
11082 vars->line_speed = SPEED_1000; in bnx2x_54618se_read_status()
11083 vars->duplex = DUPLEX_HALF; in bnx2x_54618se_read_status()
11085 vars->line_speed = SPEED_100; in bnx2x_54618se_read_status()
11086 vars->duplex = DUPLEX_FULL; in bnx2x_54618se_read_status()
11090 vars->line_speed = SPEED_100; in bnx2x_54618se_read_status()
11091 vars->duplex = DUPLEX_HALF; in bnx2x_54618se_read_status()
11093 vars->line_speed = SPEED_10; in bnx2x_54618se_read_status()
11094 vars->duplex = DUPLEX_FULL; in bnx2x_54618se_read_status()
11096 vars->line_speed = SPEED_10; in bnx2x_54618se_read_status()
11097 vars->duplex = DUPLEX_HALF; in bnx2x_54618se_read_status()
11099 vars->line_speed = 0; in bnx2x_54618se_read_status()
11103 vars->line_speed, in bnx2x_54618se_read_status()
11104 (vars->duplex == DUPLEX_FULL)); in bnx2x_54618se_read_status()
11111 vars->link_status |= in bnx2x_54618se_read_status()
11117 vars->link_status |= in bnx2x_54618se_read_status()
11121 vars->line_speed); in bnx2x_54618se_read_status()
11123 bnx2x_ext_phy_resolve_fc(phy, params, vars); in bnx2x_54618se_read_status()
11125 if (vars->link_status & LINK_STATUS_AUTO_NEGOTIATE_COMPLETE) { in bnx2x_54618se_read_status()
11130 vars->link_status |= in bnx2x_54618se_read_status()
11133 vars->link_status |= in bnx2x_54618se_read_status()
11136 vars->link_status |= in bnx2x_54618se_read_status()
11139 vars->link_status |= in bnx2x_54618se_read_status()
11142 vars->link_status |= in bnx2x_54618se_read_status()
11147 vars->link_status |= in bnx2x_54618se_read_status()
11150 vars->link_status |= in bnx2x_54618se_read_status()
11155 bnx2x_eee_an_resolve(phy, params, vars); in bnx2x_54618se_read_status()
11215 struct link_vars *vars) in bnx2x_7101_config_init() argument
11234 bnx2x_ext_phy_set_pause(params, phy, vars); in bnx2x_7101_config_init()
11255 struct link_vars *vars) in bnx2x_7101_read_status() argument
11278 vars->line_speed = SPEED_10000; in bnx2x_7101_read_status()
11279 vars->duplex = DUPLEX_FULL; in bnx2x_7101_read_status()
11282 bnx2x_ext_phy_10G_an_resolve(bp, phy, vars); in bnx2x_7101_read_status()
11283 bnx2x_ext_phy_resolve_fc(phy, params, vars); in bnx2x_7101_read_status()
11287 vars->link_status |= in bnx2x_7101_read_status()
12378 struct link_vars *vars) in bnx2x_init_bmac_loopback() argument
12381 vars->link_up = 1; in bnx2x_init_bmac_loopback()
12382 vars->line_speed = SPEED_10000; in bnx2x_init_bmac_loopback()
12383 vars->duplex = DUPLEX_FULL; in bnx2x_init_bmac_loopback()
12384 vars->flow_ctrl = BNX2X_FLOW_CTRL_NONE; in bnx2x_init_bmac_loopback()
12385 vars->mac_type = MAC_TYPE_BMAC; in bnx2x_init_bmac_loopback()
12387 vars->phy_flags = PHY_XGXS_FLAG; in bnx2x_init_bmac_loopback()
12392 bnx2x_bmac_enable(params, vars, 1, 1); in bnx2x_init_bmac_loopback()
12398 struct link_vars *vars) in bnx2x_init_emac_loopback() argument
12401 vars->link_up = 1; in bnx2x_init_emac_loopback()
12402 vars->line_speed = SPEED_1000; in bnx2x_init_emac_loopback()
12403 vars->duplex = DUPLEX_FULL; in bnx2x_init_emac_loopback()
12404 vars->flow_ctrl = BNX2X_FLOW_CTRL_NONE; in bnx2x_init_emac_loopback()
12405 vars->mac_type = MAC_TYPE_EMAC; in bnx2x_init_emac_loopback()
12407 vars->phy_flags = PHY_XGXS_FLAG; in bnx2x_init_emac_loopback()
12411 bnx2x_emac_enable(params, vars, 1); in bnx2x_init_emac_loopback()
12412 bnx2x_emac_program(params, vars); in bnx2x_init_emac_loopback()
12417 struct link_vars *vars) in bnx2x_init_xmac_loopback() argument
12420 vars->link_up = 1; in bnx2x_init_xmac_loopback()
12422 vars->line_speed = SPEED_10000; in bnx2x_init_xmac_loopback()
12424 vars->line_speed = params->req_line_speed[0]; in bnx2x_init_xmac_loopback()
12425 vars->duplex = DUPLEX_FULL; in bnx2x_init_xmac_loopback()
12426 vars->flow_ctrl = BNX2X_FLOW_CTRL_NONE; in bnx2x_init_xmac_loopback()
12427 vars->mac_type = MAC_TYPE_XMAC; in bnx2x_init_xmac_loopback()
12428 vars->phy_flags = PHY_XGXS_FLAG; in bnx2x_init_xmac_loopback()
12438 bnx2x_xmac_enable(params, vars, 1); in bnx2x_init_xmac_loopback()
12443 struct link_vars *vars) in bnx2x_init_umac_loopback() argument
12446 vars->link_up = 1; in bnx2x_init_umac_loopback()
12447 vars->line_speed = SPEED_1000; in bnx2x_init_umac_loopback()
12448 vars->duplex = DUPLEX_FULL; in bnx2x_init_umac_loopback()
12449 vars->flow_ctrl = BNX2X_FLOW_CTRL_NONE; in bnx2x_init_umac_loopback()
12450 vars->mac_type = MAC_TYPE_UMAC; in bnx2x_init_umac_loopback()
12451 vars->phy_flags = PHY_XGXS_FLAG; in bnx2x_init_umac_loopback()
12452 bnx2x_umac_enable(params, vars, 1); in bnx2x_init_umac_loopback()
12458 struct link_vars *vars) in bnx2x_init_xgxs_loopback() argument
12462 vars->link_up = 1; in bnx2x_init_xgxs_loopback()
12463 vars->flow_ctrl = BNX2X_FLOW_CTRL_NONE; in bnx2x_init_xgxs_loopback()
12464 vars->duplex = DUPLEX_FULL; in bnx2x_init_xgxs_loopback()
12466 vars->line_speed = SPEED_1000; in bnx2x_init_xgxs_loopback()
12469 vars->line_speed = SPEED_20000; in bnx2x_init_xgxs_loopback()
12471 vars->line_speed = SPEED_10000; in bnx2x_init_xgxs_loopback()
12475 bnx2x_link_initialize(params, vars); in bnx2x_init_xgxs_loopback()
12479 bnx2x_umac_enable(params, vars, 0); in bnx2x_init_xgxs_loopback()
12481 bnx2x_emac_program(params, vars); in bnx2x_init_xgxs_loopback()
12482 bnx2x_emac_enable(params, vars, 0); in bnx2x_init_xgxs_loopback()
12486 bnx2x_xmac_enable(params, vars, 0); in bnx2x_init_xgxs_loopback()
12488 bnx2x_bmac_enable(params, vars, 0, 1); in bnx2x_init_xgxs_loopback()
12506 bnx2x_set_led(params, vars, LED_MODE_OPER, vars->line_speed); in bnx2x_init_xgxs_loopback()
12528 struct link_vars *vars) in bnx2x_avoid_link_flap() argument
12536 bnx2x_link_status_update(params, vars); in bnx2x_avoid_link_flap()
12572 if (vars->line_speed < SPEED_10000) in bnx2x_avoid_link_flap()
12573 bnx2x_umac_enable(params, vars, 0); in bnx2x_avoid_link_flap()
12575 bnx2x_xmac_enable(params, vars, 0); in bnx2x_avoid_link_flap()
12577 if (vars->line_speed < SPEED_10000) in bnx2x_avoid_link_flap()
12578 bnx2x_emac_enable(params, vars, 0); in bnx2x_avoid_link_flap()
12580 bnx2x_bmac_enable(params, vars, 0, !dont_clear_stat); in bnx2x_avoid_link_flap()
12603 struct link_vars *vars, in bnx2x_cannot_avoid_link_flap() argument
12609 bnx2x_link_reset(params, vars, 1); in bnx2x_cannot_avoid_link_flap()
12662 int bnx2x_phy_init(struct link_params *params, struct link_vars *vars) in bnx2x_phy_init() argument
12672 vars->link_status = 0; in bnx2x_phy_init()
12673 vars->phy_link_up = 0; in bnx2x_phy_init()
12674 vars->link_up = 0; in bnx2x_phy_init()
12675 vars->line_speed = 0; in bnx2x_phy_init()
12676 vars->duplex = DUPLEX_FULL; in bnx2x_phy_init()
12677 vars->flow_ctrl = BNX2X_FLOW_CTRL_NONE; in bnx2x_phy_init()
12678 vars->mac_type = MAC_TYPE_NONE; in bnx2x_phy_init()
12679 vars->phy_flags = 0; in bnx2x_phy_init()
12680 vars->check_kr2_recovery_cnt = 0; in bnx2x_phy_init()
12690 return bnx2x_avoid_link_flap(params, vars); in bnx2x_phy_init()
12695 bnx2x_cannot_avoid_link_flap(params, vars, lfa_status); in bnx2x_phy_init()
12704 bnx2x_emac_init(params, vars); in bnx2x_phy_init()
12707 vars->link_status |= LINK_STATUS_PFC_ENABLED; in bnx2x_phy_init()
12713 set_phy_vars(params, vars); in bnx2x_phy_init()
12718 bnx2x_init_bmac_loopback(params, vars); in bnx2x_phy_init()
12721 bnx2x_init_emac_loopback(params, vars); in bnx2x_phy_init()
12724 bnx2x_init_xmac_loopback(params, vars); in bnx2x_phy_init()
12727 bnx2x_init_umac_loopback(params, vars); in bnx2x_phy_init()
12731 bnx2x_init_xgxs_loopback(params, vars); in bnx2x_phy_init()
12740 bnx2x_link_initialize(params, vars); in bnx2x_phy_init()
12745 bnx2x_update_mng(params, vars->link_status); in bnx2x_phy_init()
12747 bnx2x_update_mng_eee(params, vars->eee_status); in bnx2x_phy_init()
12751 int bnx2x_link_reset(struct link_params *params, struct link_vars *vars, in bnx2x_link_reset() argument
12758 vars->link_status = 0; in bnx2x_link_reset()
12760 bnx2x_update_mng(params, vars->link_status); in bnx2x_link_reset()
12761 vars->eee_status &= ~(SHMEM_EEE_LP_ADV_STATUS_MASK | in bnx2x_link_reset()
12763 bnx2x_update_mng_eee(params, vars->eee_status); in bnx2x_link_reset()
12795 bnx2x_set_led(params, vars, LED_MODE_OFF, 0); in bnx2x_link_reset()
12838 vars->link_up = 0; in bnx2x_link_reset()
12839 vars->phy_flags = 0; in bnx2x_link_reset()
12843 struct link_vars *vars) in bnx2x_lfa_reset() argument
12846 vars->link_up = 0; in bnx2x_lfa_reset()
12847 vars->phy_flags = 0; in bnx2x_lfa_reset()
12850 return bnx2x_link_reset(params, vars, 1); in bnx2x_lfa_reset()
13329 struct link_vars *vars) in bnx2x_check_over_curr() argument
13347 if ((vars->phy_flags & PHY_OVER_CURRENT_FLAG) == 0) { in bnx2x_check_over_curr()
13356 vars->phy_flags |= PHY_OVER_CURRENT_FLAG; in bnx2x_check_over_curr()
13360 vars->phy_flags &= ~PHY_OVER_CURRENT_FLAG; in bnx2x_check_over_curr()
13365 struct link_vars *vars, u32 status, in bnx2x_analyze_link_error() argument
13371 u32 old_status = (vars->phy_flags & phy_flag) ? 1 : 0; in bnx2x_analyze_link_error()
13387 DP(NETIF_MSG_LINK, "Link changed:[%x %x]->%x\n", vars->link_up, in bnx2x_analyze_link_error()
13391 if ((vars->phy_flags & PHY_PHYSICAL_LINK_FLAG) == 0) in bnx2x_analyze_link_error()
13398 vars->link_status &= ~LINK_STATUS_LINK_UP; in bnx2x_analyze_link_error()
13399 vars->link_status |= link_flag; in bnx2x_analyze_link_error()
13400 vars->link_up = 0; in bnx2x_analyze_link_error()
13401 vars->phy_flags |= phy_flag; in bnx2x_analyze_link_error()
13410 vars->link_status |= LINK_STATUS_LINK_UP; in bnx2x_analyze_link_error()
13411 vars->link_status &= ~link_flag; in bnx2x_analyze_link_error()
13412 vars->link_up = 1; in bnx2x_analyze_link_error()
13413 vars->phy_flags &= ~phy_flag; in bnx2x_analyze_link_error()
13419 bnx2x_sync_link(params, vars); in bnx2x_analyze_link_error()
13421 bnx2x_set_led(params, vars, led_mode, SPEED_10000); in bnx2x_analyze_link_error()
13424 bnx2x_update_mng(params, vars->link_status); in bnx2x_analyze_link_error()
13427 vars->periodic_flags |= PERIODIC_FLAGS_LINK_EVENT; in bnx2x_analyze_link_error()
13444 struct link_vars *vars, in bnx2x_check_half_open_conn() argument
13451 if (((vars->phy_flags & PHY_PHYSICAL_LINK_FLAG) == 0) || in bnx2x_check_half_open_conn()
13473 bnx2x_analyze_link_error(params, vars, lss_status, in bnx2x_check_half_open_conn()
13492 bnx2x_analyze_link_error(params, vars, lss_status, in bnx2x_check_half_open_conn()
13500 struct link_vars *vars) in bnx2x_sfp_tx_fault_detection() argument
13517 led_change = bnx2x_analyze_link_error(params, vars, value, in bnx2x_sfp_tx_fault_detection()
13525 if (vars->phy_flags & PHY_SFP_TX_FAULT_FLAG) { in bnx2x_sfp_tx_fault_detection()
13527 vars->link_status |= LINK_STATUS_SFP_TX_FAULT; in bnx2x_sfp_tx_fault_detection()
13530 vars->link_status &= ~LINK_STATUS_SFP_TX_FAULT; in bnx2x_sfp_tx_fault_detection()
13542 struct link_vars *vars, in bnx2x_kr2_recovery() argument
13547 bnx2x_warpcore_enable_AN_KR2(phy, params, vars); in bnx2x_kr2_recovery()
13552 struct link_vars *vars, in bnx2x_check_kr2_wa() argument
13564 if (vars->check_kr2_recovery_cnt > 0) { in bnx2x_check_kr2_wa()
13565 vars->check_kr2_recovery_cnt--; in bnx2x_check_kr2_wa()
13572 bnx2x_kr2_recovery(params, vars, phy); in bnx2x_check_kr2_wa()
13590 bnx2x_kr2_recovery(params, vars, phy); in bnx2x_check_kr2_wa()
13609 bnx2x_kr2_recovery(params, vars, phy); in bnx2x_check_kr2_wa()
13617 bnx2x_disable_kr2(params, vars, phy); in bnx2x_check_kr2_wa()
13624 void bnx2x_period_func(struct link_params *params, struct link_vars *vars) in bnx2x_period_func() argument
13631 if (bnx2x_check_half_open_conn(params, vars, 1) != in bnx2x_period_func()
13643 bnx2x_check_kr2_wa(params, vars, phy); in bnx2x_period_func()
13644 bnx2x_check_over_curr(params, vars); in bnx2x_period_func()
13645 if (vars->rx_tx_asic_rst) in bnx2x_period_func()
13646 bnx2x_warpcore_config_runtime(phy, params, vars); in bnx2x_period_func()
13654 bnx2x_sfp_tx_fault_detection(phy, params, vars); in bnx2x_period_func()
13655 } else if (vars->link_status & in bnx2x_period_func()
13658 vars->link_status &= ~LINK_STATUS_SFP_TX_FAULT; in bnx2x_period_func()
13659 vars->phy_flags &= ~PHY_SFP_TX_FAULT_FLAG; in bnx2x_period_func()
13661 bnx2x_update_mng(params, vars->link_status); in bnx2x_period_func()
13710 void bnx2x_init_mod_abs_int(struct bnx2x *bp, struct link_vars *vars, in bnx2x_init_mod_abs_int() argument
13752 vars->aeu_int_mask = AEU_INPUTS_ATTN_BITS_GPIO0_FUNCTION_0 << in bnx2x_init_mod_abs_int()
13758 REG_WR(bp, sync_offset, vars->aeu_int_mask); in bnx2x_init_mod_abs_int()
13761 gpio_num, gpio_port, vars->aeu_int_mask); in bnx2x_init_mod_abs_int()
13770 aeu_mask |= vars->aeu_int_mask; in bnx2x_init_mod_abs_int()