Lines Matching refs:vars

234 			   struct link_vars *vars)
278 struct link_vars *vars, u8 lb)
309 if (vars->phy_flags & PHY_XGXS_FLAG) {
343 if (vars->flow_ctrl & BNX2X_FLOW_CTRL_RX)
351 if (vars->flow_ctrl & BNX2X_FLOW_CTRL_TX)
390 if (vars->flow_ctrl & BNX2X_FLOW_CTRL_TX)
407 vars->mac_type = MAC_TYPE_EMAC;
413 static u8 bnx2x_bmac_enable(struct link_params *params, struct link_vars *vars,
454 if (vars->flow_ctrl & BNX2X_FLOW_CTRL_TX)
480 if (vars->flow_ctrl & BNX2X_FLOW_CTRL_RX)
517 if (vars->flow_ctrl & BNX2X_FLOW_CTRL_TX)
526 vars->mac_type = MAC_TYPE_BMAC;
556 struct link_vars *vars)
563 vars->phy_flags = PHY_SERDES_FLAG;
565 vars->phy_flags = PHY_XGXS_FLAG;
566 vars->link_status = REG_RD(bp, params->shmem_base +
570 vars->link_up = (vars->link_status & LINK_STATUS_LINK_UP);
572 if (vars->link_up) {
575 vars->phy_link_up = 1;
576 vars->duplex = DUPLEX_FULL;
577 switch (vars->link_status &
580 vars->duplex = DUPLEX_HALF;
583 vars->line_speed = SPEED_10;
587 vars->duplex = DUPLEX_HALF;
591 vars->line_speed = SPEED_100;
595 vars->duplex = DUPLEX_HALF;
598 vars->line_speed = SPEED_1000;
602 vars->duplex = DUPLEX_HALF;
605 vars->line_speed = SPEED_2500;
609 vars->line_speed = SPEED_10000;
613 vars->line_speed = SPEED_12000;
617 vars->line_speed = SPEED_12500;
621 vars->line_speed = SPEED_13000;
625 vars->line_speed = SPEED_15000;
629 vars->line_speed = SPEED_16000;
636 if (vars->link_status & LINK_STATUS_TX_FLOW_CONTROL_ENABLED)
637 vars->flow_ctrl |= BNX2X_FLOW_CTRL_TX;
639 vars->flow_ctrl &= ~BNX2X_FLOW_CTRL_TX;
641 if (vars->link_status & LINK_STATUS_RX_FLOW_CONTROL_ENABLED)
642 vars->flow_ctrl |= BNX2X_FLOW_CTRL_RX;
644 vars->flow_ctrl &= ~BNX2X_FLOW_CTRL_RX;
646 if (vars->phy_flags & PHY_XGXS_FLAG) {
647 if (vars->line_speed &&
648 ((vars->line_speed == SPEED_10) ||
649 (vars->line_speed == SPEED_100))) {
650 vars->phy_flags |= PHY_SGMII_FLAG;
652 vars->phy_flags &= ~PHY_SGMII_FLAG;
657 link_10g = ((vars->line_speed == SPEED_10000) ||
658 (vars->line_speed == SPEED_12000) ||
659 (vars->line_speed == SPEED_12500) ||
660 (vars->line_speed == SPEED_13000) ||
661 (vars->line_speed == SPEED_15000) ||
662 (vars->line_speed == SPEED_16000));
664 vars->mac_type = MAC_TYPE_BMAC;
666 vars->mac_type = MAC_TYPE_EMAC;
671 vars->phy_link_up = 0;
673 vars->line_speed = 0;
674 vars->duplex = DUPLEX_FULL;
675 vars->flow_ctrl = BNX2X_FLOW_CTRL_NONE;
678 vars->mac_type = MAC_TYPE_NONE;
682 vars->link_status, vars->phy_link_up);
684 vars->line_speed, vars->duplex, vars->flow_ctrl);
970 struct link_vars *vars)
980 offset = (vars->phy_flags & PHY_XGXS_FLAG) ?
1162 struct link_vars *vars,
1176 if (vars->line_speed == SPEED_AUTO_NEG)
1196 if (vars->line_speed == SPEED_AUTO_NEG)
1212 if (vars->line_speed == SPEED_AUTO_NEG) {
1277 struct link_vars *vars)
1309 if (!((vars->line_speed == SPEED_1000) ||
1310 (vars->line_speed == SPEED_100) ||
1311 (vars->line_speed == SPEED_10))) {
1315 if (vars->line_speed == SPEED_10000)
1318 if (vars->line_speed == SPEED_13000)
1454 struct link_vars *vars)
1478 if (!(vars->line_speed == SPEED_AUTO_NEG)) {
1491 switch (vars->line_speed) {
1506 vars->line_speed);
1531 static void bnx2x_pause_resolve(struct link_vars *vars, u32 pause_result)
1535 vars->flow_ctrl = BNX2X_FLOW_CTRL_TX;
1539 vars->flow_ctrl = BNX2X_FLOW_CTRL_RX;
1546 vars->flow_ctrl = BNX2X_FLOW_CTRL_BOTH;
1555 struct link_vars *vars)
1599 bnx2x_pause_resolve(vars, pause_result);
1600 if (vars->flow_ctrl == BNX2X_FLOW_CTRL_NONE &&
1618 bnx2x_pause_resolve(vars, pause_result);
1661 struct link_vars *vars,
1669 vars->flow_ctrl = BNX2X_FLOW_CTRL_NONE;
1674 (!(vars->phy_flags & PHY_SGMII_FLAG)) &&
1678 vars->flow_ctrl = params->req_fc_auto_adv;
1724 bnx2x_pause_resolve(vars, pause_result);
1726 (bnx2x_ext_phy_resolve_fc(params, vars))) {
1730 vars->flow_ctrl = params->req_fc_auto_adv;
1732 vars->flow_ctrl = params->req_flow_ctrl;
1734 DP(NETIF_MSG_LINK, "flow_ctrl 0x%x\n", vars->flow_ctrl);
1805 struct link_vars *vars,
1812 vars->link_status = 0;
1818 vars->phy_link_up = 1;
1819 vars->link_status |= LINK_STATUS_LINK_UP;
1822 vars->duplex = DUPLEX_FULL;
1824 vars->duplex = DUPLEX_HALF;
1826 bnx2x_flow_ctrl_resolve(params, vars, gp_status);
1831 if (vars->duplex == DUPLEX_FULL)
1832 vars->link_status |= LINK_10TFD;
1834 vars->link_status |= LINK_10THD;
1839 if (vars->duplex == DUPLEX_FULL)
1840 vars->link_status |= LINK_100TXFD;
1842 vars->link_status |= LINK_100TXHD;
1848 if (vars->duplex == DUPLEX_FULL)
1849 vars->link_status |= LINK_1000TFD;
1851 vars->link_status |= LINK_1000THD;
1856 if (vars->duplex == DUPLEX_FULL)
1857 vars->link_status |= LINK_2500TFD;
1859 vars->link_status |= LINK_2500THD;
1873 vars->link_status |= LINK_10GTFD;
1878 vars->link_status |= LINK_12GTFD;
1883 vars->link_status |= LINK_12_5GTFD;
1888 vars->link_status |= LINK_13GTFD;
1893 vars->link_status |= LINK_15GTFD;
1898 vars->link_status |= LINK_16GTFD;
1911 if (new_line_speed != vars->line_speed) {
1918 vars->line_speed);
1919 vars->phy_link_up = 0;
1926 vars->line_speed = new_line_speed;
1927 vars->link_status |= LINK_STATUS_SERDES_LINK;
1938 vars->autoneg = AUTO_NEG_ENABLED;
1941 vars->autoneg |= AUTO_NEG_COMPLETE;
1942 vars->link_status |=
1946 vars->autoneg |= AUTO_NEG_PARALLEL_DETECTION_USED;
1947 vars->link_status |=
1951 if (vars->flow_ctrl & BNX2X_FLOW_CTRL_TX)
1952 vars->link_status |=
1955 if (vars->flow_ctrl & BNX2X_FLOW_CTRL_RX)
1956 vars->link_status |=
1962 vars->phy_link_up = 0;
1964 vars->duplex = DUPLEX_FULL;
1965 vars->flow_ctrl = BNX2X_FLOW_CTRL_NONE;
1966 vars->autoneg = AUTO_NEG_DISABLED;
1967 vars->mac_type = MAC_TYPE_NONE;
1978 gp_status, vars->phy_link_up, vars->line_speed);
1981 vars->duplex,
1982 vars->flow_ctrl, vars->autoneg);
1983 DP(NETIF_MSG_LINK, "link_status 0x%x\n", vars->link_status);
2088 struct link_vars *vars)
2099 if (vars->phy_flags & PHY_XGXS_FLAG) {
3365 struct link_vars *vars)
3381 if ((vars->ieee_fc &
3386 if ((vars->ieee_fc &
3391 if ((vars->ieee_fc &
3408 struct link_vars *vars)
3426 if ((vars->ieee_fc &
3431 if ((vars->ieee_fc &
3577 struct link_vars *vars,
3582 if (!(vars->phy_flags & PHY_SGMII_FLAG)) {
3590 if (vars->line_speed != SPEED_AUTO_NEG ||
3597 bnx2x_set_autoneg(params, vars, 0);
3600 bnx2x_program_serdes(params, vars);
3610 vars->ieee_fc);
3613 bnx2x_set_autoneg(params, vars, enable_cl73);
3622 bnx2x_initialize_sgmii_process(params, vars);
3626 static u8 bnx2x_ext_phy_init(struct link_params *params, struct link_vars *vars)
3636 if (vars->phy_flags & PHY_XGXS_FLAG) {
3825 bnx2x_ext_phy_set_pause(params, vars);
3930 bnx2x_8073_set_pause_cl37(params, vars);
4097 bnx2x_ext_phy_set_pause(params, vars);
4314 bnx2x_ext_phy_set_pause(params, vars);
4662 struct link_vars *vars,
4673 if (vars->phy_flags & PHY_XGXS_FLAG) {
4714 vars->line_speed = SPEED_10000;
4782 vars->line_speed = SPEED_1000;
4784 vars->line_speed = SPEED_10000;
4916 vars->line_speed = SPEED_10000;
4920 vars->line_speed = SPEED_1000;
5096 vars->line_speed = SPEED_10000;
5103 vars->line_speed = SPEED_2500;
5110 vars->line_speed = SPEED_1000;
5136 vars->line_speed = SPEED_1000;
5142 vars->line_speed = SPEED_10000;
5186 vars->line_speed = SPEED_10000;
5211 vars->line_speed = SPEED_10000;
5243 vars->line_speed = SPEED_10;
5245 vars->line_speed =
5248 vars->line_speed =
5251 vars->line_speed = 0;
5254 vars->duplex = DUPLEX_FULL;
5256 vars->duplex = DUPLEX_HALF;
5261 vars->line_speed,
5262 (vars->duplex == DUPLEX_FULL));
5277 if (vars->line_speed < SPEED_1000)
5278 vars->phy_flags |= PHY_SGMII_FLAG;
5280 vars->phy_flags &= ~PHY_SGMII_FLAG;
5398 struct link_vars *vars, u8 is_10g,
5416 if (vars->phy_link_up) {
5436 vars->line_speed);
5549 struct link_vars *vars,
5581 bnx2x_set_aer_mmd(params, vars);
5846 u8 bnx2x_test_link(struct link_params *params, struct link_vars *vars)
5858 bnx2x_ext_phy_is_link_up(params, vars, 1))
5865 struct link_vars *vars)
5874 bnx2x_ext_phy_reset(params, vars);
5876 bnx2x_set_aer_mmd(params, vars);
5878 if (vars->phy_flags & PHY_XGXS_FLAG)
5886 bnx2x_set_aer_mmd(params, vars);
5889 if (vars->phy_flags & PHY_XGXS_FLAG) {
5894 if (vars->phy_flags & PHY_XGXS_FLAG) {
5904 vars->phy_flags |= PHY_SGMII_FLAG;
5906 vars->phy_flags &= ~PHY_SGMII_FLAG;
5913 vars->line_speed = params->req_line_speed;
5915 bnx2x_calc_ieee_aneg_adv(params, &vars->ieee_fc);
5927 bnx2x_set_parallel_detection(params, vars->phy_flags);
5928 bnx2x_init_internal_phy(params, vars, non_ext_phy);
5932 rc |= bnx2x_ext_phy_init(params, vars);
5944 u8 bnx2x_phy_init(struct link_params *params, struct link_vars *vars)
5952 vars->link_status = 0;
5953 vars->phy_link_up = 0;
5954 vars->link_up = 0;
5955 vars->line_speed = 0;
5956 vars->duplex = DUPLEX_FULL;
5957 vars->flow_ctrl = BNX2X_FLOW_CTRL_NONE;
5958 vars->mac_type = MAC_TYPE_NONE;
5961 vars->phy_flags = PHY_SERDES_FLAG;
5963 vars->phy_flags = PHY_XGXS_FLAG;
5972 bnx2x_emac_init(params, vars);
5976 vars->link_up = 1;
5977 vars->line_speed = SPEED_10000;
5978 vars->duplex = DUPLEX_FULL;
5979 vars->flow_ctrl = BNX2X_FLOW_CTRL_NONE;
5980 vars->link_status = (LINK_STATUS_LINK_UP | LINK_10GTFD);
5983 vars->flow_ctrl |=
5986 vars->link_status |=
5991 bnx2x_emac_enable(params, vars, 0);
5992 bnx2x_pbf_update(params, vars->flow_ctrl, vars->line_speed);
5997 bnx2x_update_mng(params, vars->link_status);
6004 vars->link_up = 1;
6005 vars->line_speed = SPEED_10000;
6006 vars->duplex = DUPLEX_FULL;
6007 vars->flow_ctrl = BNX2X_FLOW_CTRL_NONE;
6008 vars->link_status = (LINK_STATUS_LINK_UP | LINK_10GTFD);
6010 bnx2x_bmac_enable(params, vars, 0);
6012 bnx2x_pbf_update(params, vars->flow_ctrl, vars->line_speed);
6018 bnx2x_update_mng(params, vars->link_status);
6025 vars->link_up = 1;
6026 vars->line_speed = SPEED_10000;
6027 vars->duplex = DUPLEX_FULL;
6028 vars->flow_ctrl = BNX2X_FLOW_CTRL_NONE;
6029 vars->mac_type = MAC_TYPE_BMAC;
6031 vars->phy_flags = PHY_XGXS_FLAG;
6033 bnx2x_phy_deassert(params, vars->phy_flags);
6035 bnx2x_bmac_enable(params, vars, 1);
6042 vars->link_up = 1;
6043 vars->line_speed = SPEED_1000;
6044 vars->duplex = DUPLEX_FULL;
6045 vars->flow_ctrl = BNX2X_FLOW_CTRL_NONE;
6046 vars->mac_type = MAC_TYPE_EMAC;
6048 vars->phy_flags = PHY_XGXS_FLAG;
6050 bnx2x_phy_deassert(params, vars->phy_flags);
6052 bnx2x_emac_enable(params, vars, 1);
6053 bnx2x_emac_program(params, vars->line_speed,
6054 vars->duplex);
6061 vars->link_up = 1;
6062 vars->line_speed = SPEED_10000;
6063 vars->duplex = DUPLEX_FULL;
6064 vars->flow_ctrl = BNX2X_FLOW_CTRL_NONE;
6066 vars->phy_flags = PHY_XGXS_FLAG;
6073 bnx2x_phy_deassert(params, vars->phy_flags);
6074 bnx2x_link_initialize(params, vars);
6076 vars->mac_type = MAC_TYPE_BMAC;
6078 bnx2x_bmac_enable(params, vars, 0);
6082 bnx2x_set_xgxs_loopback(params, vars, 1);
6090 bnx2x_set_led(params, LED_MODE_OPER, vars->line_speed);
6094 bnx2x_phy_deassert(params, vars->phy_flags);
6097 vars->phy_flags |= PHY_SERDES_FLAG;
6101 vars->phy_flags |= PHY_SGMII_FLAG;
6112 vars->phy_flags |= PHY_XGXS_FLAG;
6125 bnx2x_link_initialize(params, vars);
6143 u8 bnx2x_link_reset(struct link_params *params, struct link_vars *vars,
6156 vars->link_status = 0;
6157 bnx2x_update_mng(params, vars->link_status);
6179 * Hold it as vars low
6258 vars->link_up = 0;
6263 struct link_vars *vars)
6272 vars->mac_type = MAC_TYPE_NONE;
6275 vars->link_status = 0;
6276 vars->line_speed = 0;
6277 bnx2x_update_mng(params, vars->link_status);
6296 struct link_vars *vars,
6303 vars->link_status |= LINK_STATUS_LINK_UP;
6305 bnx2x_bmac_enable(params, vars, 0);
6308 rc = bnx2x_emac_program(params, vars->line_speed,
6309 vars->duplex);
6311 bnx2x_emac_enable(params, vars, 0);
6315 if (!(vars->phy_flags &
6322 rc |= bnx2x_pbf_update(params, vars->flow_ctrl,
6323 vars->line_speed);
6329 bnx2x_update_mng(params, vars->link_status);
6334 /* In case vars->link_up, driver needs to
6346 u8 bnx2x_link_update(struct link_params *params, struct link_vars *vars)
6357 port, (vars->phy_flags & PHY_XGXS_FLAG),
6378 ext_phy_link_up = bnx2x_ext_phy_is_link_up(params, vars, is_mi_int);
6386 rc = bnx2x_link_settings_status(params, vars, gp_status,
6392 link_10g = ((vars->line_speed == SPEED_10000) ||
6393 (vars->line_speed == SPEED_12000) ||
6394 (vars->line_speed == SPEED_12500) ||
6395 (vars->line_speed == SPEED_13000) ||
6396 (vars->line_speed == SPEED_15000) ||
6397 (vars->line_speed == SPEED_16000));
6399 bnx2x_link_int_ack(params, vars, link_10g, is_mi_int);
6412 (ext_phy_link_up && !vars->phy_link_up))
6413 bnx2x_init_internal_phy(params, vars, 0);
6416 vars->link_up = (ext_phy_link_up && vars->phy_link_up);
6418 if (vars->link_up)
6419 rc = bnx2x_update_link_up(params, vars, link_10g, gp_status);
6421 rc = bnx2x_update_link_down(params, vars);