aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/net/e1000e/es2lan.c
diff options
context:
space:
mode:
authorBruce Allan <bruce.w.allan@intel.com>2010-01-12 21:04:58 -0500
committerDavid S. Miller <davem@davemloft.net>2010-01-13 23:31:56 -0500
commit608f8a0d014db6cd18d4f535934d4b5d556e3013 (patch)
tree1f3ace492bc08165c81ef7bc06ec7f5222ab1d2d /drivers/net/e1000e/es2lan.c
parent0159f24ee764927bf44c1a25473bd4517febd21c (diff)
e1000e: use alternate MAC address on ESB2 if available
Similar to 82571/2/3 parts that already do this, if ESB2/80003es2lan parts have an alternate MAC address provided in the EEPROM use it instead of the default MAC address. This patch makes the the actual code that does this generic so that it can be better used by both MAC families. Signed-off-by: Bruce Allan <bruce.w.allan@intel.com> Signed-off-by: Jeff Kirsher <jeffrey.t.kirsher@intel.com> Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'drivers/net/e1000e/es2lan.c')
-rw-r--r--drivers/net/e1000e/es2lan.c28
1 files changed, 27 insertions, 1 deletions
diff --git a/drivers/net/e1000e/es2lan.c b/drivers/net/e1000e/es2lan.c
index e2aa3b788564..4bb9d88ad976 100644
--- a/drivers/net/e1000e/es2lan.c
+++ b/drivers/net/e1000e/es2lan.c
@@ -814,7 +814,9 @@ static s32 e1000_reset_hw_80003es2lan(struct e1000_hw *hw)
814 ew32(IMC, 0xffffffff); 814 ew32(IMC, 0xffffffff);
815 icr = er32(ICR); 815 icr = er32(ICR);
816 816
817 return 0; 817 ret_val = e1000_check_alt_mac_addr_generic(hw);
818
819 return ret_val;
818} 820}
819 821
820/** 822/**
@@ -1340,6 +1342,29 @@ static s32 e1000_write_kmrn_reg_80003es2lan(struct e1000_hw *hw, u32 offset,
1340} 1342}
1341 1343
1342/** 1344/**
1345 * e1000_read_mac_addr_80003es2lan - Read device MAC address
1346 * @hw: pointer to the HW structure
1347 **/
1348static s32 e1000_read_mac_addr_80003es2lan(struct e1000_hw *hw)
1349{
1350 s32 ret_val = 0;
1351
1352 /*
1353 * If there's an alternate MAC address place it in RAR0
1354 * so that it will override the Si installed default perm
1355 * address.
1356 */
1357 ret_val = e1000_check_alt_mac_addr_generic(hw);
1358 if (ret_val)
1359 goto out;
1360
1361 ret_val = e1000_read_mac_addr_generic(hw);
1362
1363out:
1364 return ret_val;
1365}
1366
1367/**
1343 * e1000_power_down_phy_copper_80003es2lan - Remove link during PHY power down 1368 * e1000_power_down_phy_copper_80003es2lan - Remove link during PHY power down
1344 * @hw: pointer to the HW structure 1369 * @hw: pointer to the HW structure
1345 * 1370 *
@@ -1403,6 +1428,7 @@ static void e1000_clear_hw_cntrs_80003es2lan(struct e1000_hw *hw)
1403} 1428}
1404 1429
1405static struct e1000_mac_operations es2_mac_ops = { 1430static struct e1000_mac_operations es2_mac_ops = {
1431 .read_mac_addr = e1000_read_mac_addr_80003es2lan,
1406 .id_led_init = e1000e_id_led_init, 1432 .id_led_init = e1000e_id_led_init,
1407 .check_mng_mode = e1000e_check_mng_mode_generic, 1433 .check_mng_mode = e1000e_check_mng_mode_generic,
1408 /* check_for_link dependent on media type */ 1434 /* check_for_link dependent on media type */