|
@@ -733,12 +733,19 @@ static int ax_init_dev(struct net_device *dev, int first_init)
|
|
|
/* load the mac-address from the device if this is the
|
|
|
* first time we've initialised */
|
|
|
|
|
|
- if (first_init && ax->plat->flags & AXFLG_MAC_FROMDEV) {
|
|
|
- ei_outb(E8390_NODMA + E8390_PAGE1 + E8390_STOP,
|
|
|
- ei_local->mem + E8390_CMD); /* 0x61 */
|
|
|
+ if (first_init) {
|
|
|
+ if (ax->plat->flags & AXFLG_MAC_FROMDEV) {
|
|
|
+ ei_outb(E8390_NODMA + E8390_PAGE1 + E8390_STOP,
|
|
|
+ ei_local->mem + E8390_CMD); /* 0x61 */
|
|
|
+ for (i = 0; i < ETHER_ADDR_LEN; i++)
|
|
|
+ dev->dev_addr[i] =
|
|
|
+ ei_inb(ioaddr + EN1_PHYS_SHIFT(i));
|
|
|
+ }
|
|
|
|
|
|
- for (i = 0 ; i < ETHER_ADDR_LEN ; i++)
|
|
|
- dev->dev_addr[i] = ei_inb(ioaddr + EN1_PHYS_SHIFT(i));
|
|
|
+ if ((ax->plat->flags & AXFLG_MAC_FROMPLATFORM) &&
|
|
|
+ ax->plat->mac_addr)
|
|
|
+ memcpy(dev->dev_addr, ax->plat->mac_addr,
|
|
|
+ ETHER_ADDR_LEN);
|
|
|
}
|
|
|
|
|
|
ax_reset_8390(dev);
|