diff options
Diffstat (limited to 'drivers/net/atl1/atl1_main.c')
-rw-r--r-- | drivers/net/atl1/atl1_main.c | 10 |
1 files changed, 10 insertions, 0 deletions
diff --git a/drivers/net/atl1/atl1_main.c b/drivers/net/atl1/atl1_main.c index dee3638ad744..8606eac5bec8 100644 --- a/drivers/net/atl1/atl1_main.c +++ b/drivers/net/atl1/atl1_main.c | |||
@@ -2320,6 +2320,16 @@ static void __devexit atl1_remove(struct pci_dev *pdev) | |||
2320 | return; | 2320 | return; |
2321 | 2321 | ||
2322 | adapter = netdev_priv(netdev); | 2322 | adapter = netdev_priv(netdev); |
2323 | |||
2324 | /* Some atl1 boards lack persistent storage for their MAC, and get it | ||
2325 | * from the BIOS during POST. If we've been messing with the MAC | ||
2326 | * address, we need to save the permanent one. | ||
2327 | */ | ||
2328 | if (memcmp(adapter->hw.mac_addr, adapter->hw.perm_mac_addr, ETH_ALEN)) { | ||
2329 | memcpy(adapter->hw.mac_addr, adapter->hw.perm_mac_addr, ETH_ALEN); | ||
2330 | atl1_set_mac_addr(&adapter->hw); | ||
2331 | } | ||
2332 | |||
2323 | iowrite16(0, adapter->hw.hw_addr + REG_GPHY_ENABLE); | 2333 | iowrite16(0, adapter->hw.hw_addr + REG_GPHY_ENABLE); |
2324 | unregister_netdev(netdev); | 2334 | unregister_netdev(netdev); |
2325 | pci_iounmap(pdev, adapter->hw.hw_addr); | 2335 | pci_iounmap(pdev, adapter->hw.hw_addr); |