struct sonic_local *lp = netdev_priv(dev);
        int err = -ENODEV;
        int i;
+       unsigned char addr[ETH_ALEN];
 
        if (!request_mem_region(dev->base_addr, SONIC_MEM_SIZE, jazz_sonic_string))
                return -EBUSY;
        SONIC_WRITE(SONIC_CEP,0);
        for (i=0; i<3; i++) {
                val = SONIC_READ(SONIC_CAP0-i);
-               dev->dev_addr[i*2] = val;
-               dev->dev_addr[i*2+1] = val >> 8;
+               addr[i*2] = val;
+               addr[i*2+1] = val >> 8;
        }
+       eth_hw_addr_set(dev, addr);
 
        lp->dma_bitmode = SONIC_BITMODE32;
 
 
        unsigned int base_addr = dev->base_addr;
        int i;
        int err = 0;
+       unsigned char addr[ETH_ALEN];
 
        if (!request_mem_region(base_addr, 0x100, xtsonic_string))
                return -EBUSY;
 
        for (i=0; i<3; i++) {
                unsigned int val = SONIC_READ(SONIC_CAP0-i);
-               dev->dev_addr[i*2] = val;
-               dev->dev_addr[i*2+1] = val >> 8;
+               addr[i*2] = val;
+               addr[i*2+1] = val >> 8;
        }
+       eth_hw_addr_set(dev, addr);
 
        lp->dma_bitmode = SONIC_BITMODE32;