atl1: save mac address on remove
Some atl1 boards get their MAC address written directly to the register by the BIOS during POST, rather than storing it in EEPROM that's accessible to the driver. If the MAC register on one of these boards is changed and then the module is unloaded, the permanent MAC address will be forgotten until the box is rebooted. We should save the permanent address during removal if we've been messing with it. Signed-off-by: Chris Snook <csnook@redhat.com> Signed-off-by: Jeff Garzik <jeff@garzik.org>
This commit is contained in:
parent
190a4408ec
commit
8c754a04ff
|
@ -2320,6 +2320,16 @@ static void __devexit atl1_remove(struct pci_dev *pdev)
|
|||
return;
|
||||
|
||||
adapter = netdev_priv(netdev);
|
||||
|
||||
/* Some atl1 boards lack persistent storage for their MAC, and get it
|
||||
* from the BIOS during POST. If we've been messing with the MAC
|
||||
* address, we need to save the permanent one.
|
||||
*/
|
||||
if (memcmp(adapter->hw.mac_addr, adapter->hw.perm_mac_addr, ETH_ALEN)) {
|
||||
memcpy(adapter->hw.mac_addr, adapter->hw.perm_mac_addr, ETH_ALEN);
|
||||
atl1_set_mac_addr(&adapter->hw);
|
||||
}
|
||||
|
||||
iowrite16(0, adapter->hw.hw_addr + REG_GPHY_ENABLE);
|
||||
unregister_netdev(netdev);
|
||||
pci_iounmap(pdev, adapter->hw.hw_addr);
|
||||
|
|
Loading…
Reference in New Issue