diff options
Diffstat (limited to 'drivers/net/e1000e/82571.c')
-rw-r--r-- | drivers/net/e1000e/82571.c | 33 |
1 files changed, 30 insertions, 3 deletions
diff --git a/drivers/net/e1000e/82571.c b/drivers/net/e1000e/82571.c index 02d67d047d96..d1a45143c2aa 100644 --- a/drivers/net/e1000e/82571.c +++ b/drivers/net/e1000e/82571.c | |||
@@ -922,9 +922,12 @@ static s32 e1000_reset_hw_82571(struct e1000_hw *hw) | |||
922 | ew32(IMC, 0xffffffff); | 922 | ew32(IMC, 0xffffffff); |
923 | icr = er32(ICR); | 923 | icr = er32(ICR); |
924 | 924 | ||
925 | if (hw->mac.type == e1000_82571 && | 925 | /* Install any alternate MAC address into RAR0 */ |
926 | hw->dev_spec.e82571.alt_mac_addr_is_present) | 926 | ret_val = e1000_check_alt_mac_addr_generic(hw); |
927 | e1000e_set_laa_state_82571(hw, true); | 927 | if (ret_val) |
928 | return ret_val; | ||
929 | |||
930 | e1000e_set_laa_state_82571(hw, true); | ||
928 | 931 | ||
929 | /* Reinitialize the 82571 serdes link state machine */ | 932 | /* Reinitialize the 82571 serdes link state machine */ |
930 | if (hw->phy.media_type == e1000_media_type_internal_serdes) | 933 | if (hw->phy.media_type == e1000_media_type_internal_serdes) |
@@ -1621,6 +1624,29 @@ static s32 e1000_fix_nvm_checksum_82571(struct e1000_hw *hw) | |||
1621 | } | 1624 | } |
1622 | 1625 | ||
1623 | /** | 1626 | /** |
1627 | * e1000_read_mac_addr_82571 - Read device MAC address | ||
1628 | * @hw: pointer to the HW structure | ||
1629 | **/ | ||
1630 | static s32 e1000_read_mac_addr_82571(struct e1000_hw *hw) | ||
1631 | { | ||
1632 | s32 ret_val = 0; | ||
1633 | |||
1634 | /* | ||
1635 | * If there's an alternate MAC address place it in RAR0 | ||
1636 | * so that it will override the Si installed default perm | ||
1637 | * address. | ||
1638 | */ | ||
1639 | ret_val = e1000_check_alt_mac_addr_generic(hw); | ||
1640 | if (ret_val) | ||
1641 | goto out; | ||
1642 | |||
1643 | ret_val = e1000_read_mac_addr_generic(hw); | ||
1644 | |||
1645 | out: | ||
1646 | return ret_val; | ||
1647 | } | ||
1648 | |||
1649 | /** | ||
1624 | * e1000_power_down_phy_copper_82571 - Remove link during PHY power down | 1650 | * e1000_power_down_phy_copper_82571 - Remove link during PHY power down |
1625 | * @hw: pointer to the HW structure | 1651 | * @hw: pointer to the HW structure |
1626 | * | 1652 | * |
@@ -1706,6 +1732,7 @@ static struct e1000_mac_operations e82571_mac_ops = { | |||
1706 | .setup_link = e1000_setup_link_82571, | 1732 | .setup_link = e1000_setup_link_82571, |
1707 | /* .setup_physical_interface: media type dependent */ | 1733 | /* .setup_physical_interface: media type dependent */ |
1708 | .setup_led = e1000e_setup_led_generic, | 1734 | .setup_led = e1000e_setup_led_generic, |
1735 | .read_mac_addr = e1000_read_mac_addr_82571, | ||
1709 | }; | 1736 | }; |
1710 | 1737 | ||
1711 | static struct e1000_phy_operations e82_phy_ops_igp = { | 1738 | static struct e1000_phy_operations e82_phy_ops_igp = { |