}
 
        if (is_valid_ether_addr(adapter->hw.mac.addr)) {
-               memcpy(netdev->dev_addr, adapter->hw.mac.addr,
-                      netdev->addr_len);
-               memcpy(netdev->perm_addr, adapter->hw.mac.addr,
-                      netdev->addr_len);
+               ether_addr_copy(netdev->dev_addr, adapter->hw.mac.addr);
+               ether_addr_copy(netdev->perm_addr, adapter->hw.mac.addr);
        }
 
        adapter->last_reset = jiffies;
                else if (is_zero_ether_addr(adapter->hw.mac.addr))
                        dev_info(&pdev->dev,
                                 "MAC address not assigned by administrator.\n");
-               memcpy(netdev->dev_addr, hw->mac.addr, netdev->addr_len);
+               ether_addr_copy(netdev->dev_addr, hw->mac.addr);
        }
 
        if (!is_valid_ether_addr(netdev->dev_addr)) {
                dev_info(&pdev->dev, "Assigning random MAC address\n");
                eth_hw_addr_random(netdev);
-               memcpy(hw->mac.addr, netdev->dev_addr, netdev->addr_len);
+               ether_addr_copy(hw->mac.addr, netdev->dev_addr);
        }
 
        /* Enable dynamic interrupt throttling rates */
        if (!is_valid_ether_addr(addr->sa_data))
                return -EADDRNOTAVAIL;
 
-       memcpy(netdev->dev_addr, addr->sa_data, netdev->addr_len);
-       memcpy(hw->mac.addr, addr->sa_data, netdev->addr_len);
+       ether_addr_copy(netdev->dev_addr, addr->sa_data);
+       ether_addr_copy(hw->mac.addr, addr->sa_data);
 
        spin_lock_bh(&adapter->mbx_lock);