Lines Matching refs:hw
32 s32 e1000e_get_bus_info_pcie(struct e1000_hw *hw) in e1000e_get_bus_info_pcie() argument
34 struct e1000_mac_info *mac = &hw->mac; in e1000e_get_bus_info_pcie()
35 struct e1000_bus_info *bus = &hw->bus; in e1000e_get_bus_info_pcie()
36 struct e1000_adapter *adapter = hw->adapter; in e1000e_get_bus_info_pcie()
51 mac->ops.set_lan_id(hw); in e1000e_get_bus_info_pcie()
64 void e1000_set_lan_id_multi_port_pcie(struct e1000_hw *hw) in e1000_set_lan_id_multi_port_pcie() argument
66 struct e1000_bus_info *bus = &hw->bus; in e1000_set_lan_id_multi_port_pcie()
82 void e1000_set_lan_id_single_port(struct e1000_hw *hw) in e1000_set_lan_id_single_port() argument
84 struct e1000_bus_info *bus = &hw->bus; in e1000_set_lan_id_single_port()
96 void e1000_clear_vfta_generic(struct e1000_hw *hw) in e1000_clear_vfta_generic() argument
101 E1000_WRITE_REG_ARRAY(hw, E1000_VFTA, offset, 0); in e1000_clear_vfta_generic()
115 void e1000_write_vfta_generic(struct e1000_hw *hw, u32 offset, u32 value) in e1000_write_vfta_generic() argument
117 E1000_WRITE_REG_ARRAY(hw, E1000_VFTA, offset, value); in e1000_write_vfta_generic()
130 void e1000e_init_rx_addrs(struct e1000_hw *hw, u16 rar_count) in e1000e_init_rx_addrs() argument
138 hw->mac.ops.rar_set(hw, hw->mac.addr, 0); in e1000e_init_rx_addrs()
143 hw->mac.ops.rar_set(hw, mac_addr, i); in e1000e_init_rx_addrs()
158 s32 e1000_check_alt_mac_addr_generic(struct e1000_hw *hw) in e1000_check_alt_mac_addr_generic() argument
165 ret_val = e1000_read_nvm(hw, NVM_COMPAT, 1, &nvm_data); in e1000_check_alt_mac_addr_generic()
170 if (hw->mac.type == e1000_82573) in e1000_check_alt_mac_addr_generic()
173 ret_val = e1000_read_nvm(hw, NVM_ALT_MAC_ADDR_PTR, 1, in e1000_check_alt_mac_addr_generic()
185 if (hw->bus.func == E1000_FUNC_1) in e1000_check_alt_mac_addr_generic()
189 ret_val = e1000_read_nvm(hw, offset, 1, &nvm_data); in e1000_check_alt_mac_addr_generic()
209 hw->mac.ops.rar_set(hw, alt_mac_addr, 0); in e1000_check_alt_mac_addr_generic()
214 u32 e1000e_rar_get_count_generic(struct e1000_hw *hw) in e1000e_rar_get_count_generic() argument
216 return hw->mac.rar_entry_count; in e1000e_rar_get_count_generic()
228 int e1000e_rar_set_generic(struct e1000_hw *hw, u8 *addr, u32 index) in e1000e_rar_set_generic() argument
264 static u32 e1000_hash_mc_addr(struct e1000_hw *hw, u8 *mc_addr) in e1000_hash_mc_addr() argument
270 hash_mask = (hw->mac.mta_reg_count * 32) - 1; in e1000_hash_mc_addr()
303 switch (hw->mac.mc_filter_type) { in e1000_hash_mc_addr()
333 void e1000e_update_mc_addr_list_generic(struct e1000_hw *hw, in e1000e_update_mc_addr_list_generic() argument
340 memset(&hw->mac.mta_shadow, 0, sizeof(hw->mac.mta_shadow)); in e1000e_update_mc_addr_list_generic()
344 hash_value = e1000_hash_mc_addr(hw, mc_addr_list); in e1000e_update_mc_addr_list_generic()
346 hash_reg = (hash_value >> 5) & (hw->mac.mta_reg_count - 1); in e1000e_update_mc_addr_list_generic()
349 hw->mac.mta_shadow[hash_reg] |= (1 << hash_bit); in e1000e_update_mc_addr_list_generic()
354 for (i = hw->mac.mta_reg_count - 1; i >= 0; i--) in e1000e_update_mc_addr_list_generic()
355 E1000_WRITE_REG_ARRAY(hw, E1000_MTA, i, hw->mac.mta_shadow[i]); in e1000e_update_mc_addr_list_generic()
365 void e1000e_clear_hw_cntrs_base(struct e1000_hw *hw) in e1000e_clear_hw_cntrs_base() argument
414 s32 e1000e_check_for_copper_link(struct e1000_hw *hw) in e1000e_check_for_copper_link() argument
416 struct e1000_mac_info *mac = &hw->mac; in e1000e_check_for_copper_link()
432 ret_val = e1000e_phy_has_link_generic(hw, 1, 0, &link); in e1000e_check_for_copper_link()
444 e1000e_check_downshift(hw); in e1000e_check_for_copper_link()
456 mac->ops.config_collision_dist(hw); in e1000e_check_for_copper_link()
463 ret_val = e1000e_config_fc_after_link_up(hw); in e1000e_check_for_copper_link()
477 s32 e1000e_check_for_fiber_link(struct e1000_hw *hw) in e1000e_check_for_fiber_link() argument
479 struct e1000_mac_info *mac = &hw->mac; in e1000e_check_for_fiber_link()
514 ret_val = e1000e_config_fc_after_link_up(hw); in e1000e_check_for_fiber_link()
542 s32 e1000e_check_for_serdes_link(struct e1000_hw *hw) in e1000e_check_for_serdes_link() argument
544 struct e1000_mac_info *mac = &hw->mac; in e1000e_check_for_serdes_link()
577 ret_val = e1000e_config_fc_after_link_up(hw); in e1000e_check_for_serdes_link()
646 static s32 e1000_set_default_fc_generic(struct e1000_hw *hw) in e1000_set_default_fc_generic() argument
659 ret_val = e1000_read_nvm(hw, NVM_INIT_CONTROL2_REG, 1, &nvm_data); in e1000_set_default_fc_generic()
667 hw->fc.requested_mode = e1000_fc_none; in e1000_set_default_fc_generic()
669 hw->fc.requested_mode = e1000_fc_tx_pause; in e1000_set_default_fc_generic()
671 hw->fc.requested_mode = e1000_fc_full; in e1000_set_default_fc_generic()
686 s32 e1000e_setup_link_generic(struct e1000_hw *hw) in e1000e_setup_link_generic() argument
693 if (hw->phy.ops.check_reset_block && hw->phy.ops.check_reset_block(hw)) in e1000e_setup_link_generic()
699 if (hw->fc.requested_mode == e1000_fc_default) { in e1000e_setup_link_generic()
700 ret_val = e1000_set_default_fc_generic(hw); in e1000e_setup_link_generic()
708 hw->fc.current_mode = hw->fc.requested_mode; in e1000e_setup_link_generic()
710 e_dbg("After fix-ups FlowControl is now = %x\n", hw->fc.current_mode); in e1000e_setup_link_generic()
713 ret_val = hw->mac.ops.setup_physical_interface(hw); in e1000e_setup_link_generic()
727 ew32(FCTTV, hw->fc.pause_time); in e1000e_setup_link_generic()
729 return e1000e_set_fc_watermarks(hw); in e1000e_setup_link_generic()
739 static s32 e1000_commit_fc_settings_generic(struct e1000_hw *hw) in e1000_commit_fc_settings_generic() argument
741 struct e1000_mac_info *mac = &hw->mac; in e1000_commit_fc_settings_generic()
760 switch (hw->fc.current_mode) { in e1000_commit_fc_settings_generic()
805 static s32 e1000_poll_fiber_serdes_link_generic(struct e1000_hw *hw) in e1000_poll_fiber_serdes_link_generic() argument
807 struct e1000_mac_info *mac = &hw->mac; in e1000_poll_fiber_serdes_link_generic()
831 ret_val = mac->ops.check_for_link(hw); in e1000_poll_fiber_serdes_link_generic()
852 s32 e1000e_setup_fiber_serdes_link(struct e1000_hw *hw) in e1000e_setup_fiber_serdes_link() argument
862 hw->mac.ops.config_collision_dist(hw); in e1000e_setup_fiber_serdes_link()
864 ret_val = e1000_commit_fc_settings_generic(hw); in e1000e_setup_fiber_serdes_link()
884 if (hw->phy.media_type == e1000_media_type_internal_serdes || in e1000e_setup_fiber_serdes_link()
886 ret_val = e1000_poll_fiber_serdes_link_generic(hw); in e1000e_setup_fiber_serdes_link()
901 void e1000e_config_collision_dist_generic(struct e1000_hw *hw) in e1000e_config_collision_dist_generic() argument
922 s32 e1000e_set_fc_watermarks(struct e1000_hw *hw) in e1000e_set_fc_watermarks() argument
932 if (hw->fc.current_mode & e1000_fc_tx_pause) { in e1000e_set_fc_watermarks()
937 fcrtl = hw->fc.low_water; in e1000e_set_fc_watermarks()
938 if (hw->fc.send_xon) in e1000e_set_fc_watermarks()
941 fcrth = hw->fc.high_water; in e1000e_set_fc_watermarks()
959 s32 e1000e_force_mac_fc(struct e1000_hw *hw) in e1000e_force_mac_fc() argument
982 e_dbg("hw->fc.current_mode = %u\n", hw->fc.current_mode); in e1000e_force_mac_fc()
984 switch (hw->fc.current_mode) { in e1000e_force_mac_fc()
1019 s32 e1000e_config_fc_after_link_up(struct e1000_hw *hw) in e1000e_config_fc_after_link_up() argument
1021 struct e1000_mac_info *mac = &hw->mac; in e1000e_config_fc_after_link_up()
1032 if (hw->phy.media_type == e1000_media_type_fiber || in e1000e_config_fc_after_link_up()
1033 hw->phy.media_type == e1000_media_type_internal_serdes) in e1000e_config_fc_after_link_up()
1034 ret_val = e1000e_force_mac_fc(hw); in e1000e_config_fc_after_link_up()
1036 if (hw->phy.media_type == e1000_media_type_copper) in e1000e_config_fc_after_link_up()
1037 ret_val = e1000e_force_mac_fc(hw); in e1000e_config_fc_after_link_up()
1050 if ((hw->phy.media_type == e1000_media_type_copper) && mac->autoneg) { in e1000e_config_fc_after_link_up()
1055 ret_val = e1e_rphy(hw, MII_BMSR, &mii_status_reg); in e1000e_config_fc_after_link_up()
1058 ret_val = e1e_rphy(hw, MII_BMSR, &mii_status_reg); in e1000e_config_fc_after_link_up()
1073 ret_val = e1e_rphy(hw, MII_ADVERTISE, &mii_nway_adv_reg); in e1000e_config_fc_after_link_up()
1076 ret_val = e1e_rphy(hw, MII_LPA, &mii_nway_lp_ability_reg); in e1000e_config_fc_after_link_up()
1121 if (hw->fc.requested_mode == e1000_fc_full) { in e1000e_config_fc_after_link_up()
1122 hw->fc.current_mode = e1000_fc_full; in e1000e_config_fc_after_link_up()
1125 hw->fc.current_mode = e1000_fc_rx_pause; in e1000e_config_fc_after_link_up()
1140 hw->fc.current_mode = e1000_fc_tx_pause; in e1000e_config_fc_after_link_up()
1154 hw->fc.current_mode = e1000_fc_rx_pause; in e1000e_config_fc_after_link_up()
1160 hw->fc.current_mode = e1000_fc_none; in e1000e_config_fc_after_link_up()
1168 ret_val = mac->ops.get_link_up_info(hw, &speed, &duplex); in e1000e_config_fc_after_link_up()
1175 hw->fc.current_mode = e1000_fc_none; in e1000e_config_fc_after_link_up()
1180 ret_val = e1000e_force_mac_fc(hw); in e1000e_config_fc_after_link_up()
1192 if ((hw->phy.media_type == e1000_media_type_internal_serdes) && in e1000e_config_fc_after_link_up()
1254 if (hw->fc.requested_mode == e1000_fc_full) { in e1000e_config_fc_after_link_up()
1255 hw->fc.current_mode = e1000_fc_full; in e1000e_config_fc_after_link_up()
1258 hw->fc.current_mode = e1000_fc_rx_pause; in e1000e_config_fc_after_link_up()
1273 hw->fc.current_mode = e1000_fc_tx_pause; in e1000e_config_fc_after_link_up()
1287 hw->fc.current_mode = e1000_fc_rx_pause; in e1000e_config_fc_after_link_up()
1293 hw->fc.current_mode = e1000_fc_none; in e1000e_config_fc_after_link_up()
1304 ret_val = e1000e_force_mac_fc(hw); in e1000e_config_fc_after_link_up()
1323 s32 e1000e_get_speed_and_duplex_copper(struct e1000_hw *hw, u16 *speed, in e1000e_get_speed_and_duplex_copper() argument
1358 *hw, u16 *speed, u16 *duplex) in e1000e_get_speed_and_duplex_fiber_serdes()
1372 s32 e1000e_get_hw_semaphore(struct e1000_hw *hw) in e1000e_get_hw_semaphore() argument
1375 s32 timeout = hw->nvm.word_size + 1; in e1000e_get_hw_semaphore()
1407 e1000e_put_hw_semaphore(hw); in e1000e_get_hw_semaphore()
1421 void e1000e_put_hw_semaphore(struct e1000_hw *hw) in e1000e_put_hw_semaphore() argument
1436 s32 e1000e_get_auto_rd_done(struct e1000_hw *hw) in e1000e_get_auto_rd_done() argument
1463 s32 e1000e_valid_led_default(struct e1000_hw *hw, u16 *data) in e1000e_valid_led_default() argument
1467 ret_val = e1000_read_nvm(hw, NVM_ID_LED_SETTINGS, 1, data); in e1000e_valid_led_default()
1484 s32 e1000e_id_led_init_generic(struct e1000_hw *hw) in e1000e_id_led_init_generic() argument
1486 struct e1000_mac_info *mac = &hw->mac; in e1000e_id_led_init_generic()
1494 ret_val = hw->nvm.ops.valid_led_default(hw, &data); in e1000e_id_led_init_generic()
1550 s32 e1000e_setup_led_generic(struct e1000_hw *hw) in e1000e_setup_led_generic() argument
1554 if (hw->mac.ops.setup_led != e1000e_setup_led_generic) in e1000e_setup_led_generic()
1557 if (hw->phy.media_type == e1000_media_type_fiber) { in e1000e_setup_led_generic()
1559 hw->mac.ledctl_default = ledctl; in e1000e_setup_led_generic()
1566 } else if (hw->phy.media_type == e1000_media_type_copper) { in e1000e_setup_led_generic()
1567 ew32(LEDCTL, hw->mac.ledctl_mode1); in e1000e_setup_led_generic()
1580 s32 e1000e_cleanup_led_generic(struct e1000_hw *hw) in e1000e_cleanup_led_generic() argument
1582 ew32(LEDCTL, hw->mac.ledctl_default); in e1000e_cleanup_led_generic()
1592 s32 e1000e_blink_led_generic(struct e1000_hw *hw) in e1000e_blink_led_generic() argument
1597 if (hw->phy.media_type == e1000_media_type_fiber) { in e1000e_blink_led_generic()
1608 ledctl_blink = hw->mac.ledctl_mode2; in e1000e_blink_led_generic()
1610 u32 mode = (hw->mac.ledctl_mode2 >> i) & in e1000e_blink_led_generic()
1612 u32 led_default = hw->mac.ledctl_default >> i; in e1000e_blink_led_generic()
1637 s32 e1000e_led_on_generic(struct e1000_hw *hw) in e1000e_led_on_generic() argument
1641 switch (hw->phy.media_type) { in e1000e_led_on_generic()
1649 ew32(LEDCTL, hw->mac.ledctl_mode2); in e1000e_led_on_generic()
1664 s32 e1000e_led_off_generic(struct e1000_hw *hw) in e1000e_led_off_generic() argument
1668 switch (hw->phy.media_type) { in e1000e_led_off_generic()
1676 ew32(LEDCTL, hw->mac.ledctl_mode1); in e1000e_led_off_generic()
1692 void e1000e_set_pcie_no_snoop(struct e1000_hw *hw, u32 no_snoop) in e1000e_set_pcie_no_snoop() argument
1715 s32 e1000e_disable_pcie_master(struct e1000_hw *hw) in e1000e_disable_pcie_master() argument
1745 void e1000e_reset_adaptive(struct e1000_hw *hw) in e1000e_reset_adaptive() argument
1747 struct e1000_mac_info *mac = &hw->mac; in e1000e_reset_adaptive()
1771 void e1000e_update_adaptive(struct e1000_hw *hw) in e1000e_update_adaptive() argument
1773 struct e1000_mac_info *mac = &hw->mac; in e1000e_update_adaptive()