return -EINVAL;
        }
 
-       memcpy(net->dev_addr, addr->sa_data, net->addr_len);
+       eth_hw_addr_set(net, addr->sa_data);
        __dm9601_set_mac_address(dev);
 
        return 0;
 
                return ret;
 
        /* it worked --> adopt it on netdev side */
-       memcpy(netdev->dev_addr, addr->sa_data, netdev->addr_len);
+       eth_hw_addr_set(netdev, addr->sa_data);
 
        return 0;
 }
 
 
        mutex_lock(&tp->control);
 
-       memcpy(netdev->dev_addr, addr->sa_data, netdev->addr_len);
+       eth_hw_addr_set(netdev, addr->sa_data);
 
        ocp_write_byte(tp, MCU_TYPE_PLA, PLA_CRWECR, CRWECR_CONFIG);
        pla_ocp_write(tp, PLA_IDR, BYTE_EN_SIX_BYTES, 8, addr->sa_data);
 
        if (netif_running(netdev))
                return -EBUSY;
 
-       memcpy(netdev->dev_addr, addr->sa_data, netdev->addr_len);
+       eth_hw_addr_set(netdev, addr->sa_data);
        netdev_dbg(netdev, "Setting MAC address to %pM\n", netdev->dev_addr);
        /* Set the IDR registers. */
        set_registers(dev, IDR, netdev->addr_len, netdev->dev_addr);
 
                return -EINVAL;
        }
 
-       memcpy(netdev->dev_addr, addr->sa_data, netdev->addr_len);
+       eth_hw_addr_set(netdev, addr->sa_data);
        sr_write_async(dev, SR_PAR, 6, netdev->dev_addr);
 
        return 0;