lacpdu_header = (struct lacpdu_header *)skb_put(skb, length);
 
-       memcpy(lacpdu_header->hdr.h_dest, lacpdu_mcast_addr, ETH_ALEN);
+       ether_addr_copy(lacpdu_header->hdr.h_dest, lacpdu_mcast_addr);
        /* Note: source address is set to be the member's PERMANENT address,
         * because we use it to identify loopback lacpdus in receive.
         */
-       memcpy(lacpdu_header->hdr.h_source, slave->perm_hwaddr, ETH_ALEN);
+       ether_addr_copy(lacpdu_header->hdr.h_source, slave->perm_hwaddr);
        lacpdu_header->hdr.h_proto = PKT_TYPE_LACPDU;
 
        lacpdu_header->lacpdu = port->lacpdu;
 
        marker_header = (struct bond_marker_header *)skb_put(skb, length);
 
-       memcpy(marker_header->hdr.h_dest, lacpdu_mcast_addr, ETH_ALEN);
+       ether_addr_copy(marker_header->hdr.h_dest, lacpdu_mcast_addr);
        /* Note: source address is set to be the member's PERMANENT address,
         * because we use it to identify loopback MARKERs in receive.
         */
-       memcpy(marker_header->hdr.h_source, slave->perm_hwaddr, ETH_ALEN);
+       ether_addr_copy(marker_header->hdr.h_source, slave->perm_hwaddr);
        marker_header->hdr.h_proto = PKT_TYPE_LACPDU;
 
        marker_header->marker = *marker;
 
            (client_info->ip_dst == arp->ip_src) &&
            (!ether_addr_equal_64bits(client_info->mac_dst, arp->mac_src))) {
                /* update the clients MAC address */
-               memcpy(client_info->mac_dst, arp->mac_src, ETH_ALEN);
+               ether_addr_copy(client_info->mac_dst, arp->mac_src);
                client_info->ntt = 1;
                bond_info->rx_ntt = 1;
        }
                        /* the entry is already assigned to this client */
                        if (!ether_addr_equal_64bits(arp->mac_dst, mac_bcast)) {
                                /* update mac address from arp */
-                               memcpy(client_info->mac_dst, arp->mac_dst, ETH_ALEN);
+                               ether_addr_copy(client_info->mac_dst, arp->mac_dst);
                        }
-                       memcpy(client_info->mac_src, arp->mac_src, ETH_ALEN);
+                       ether_addr_copy(client_info->mac_src, arp->mac_src);
 
                        assigned_slave = client_info->slave;
                        if (assigned_slave) {
                 * will be updated with clients actual unicast mac address
                 * upon receiving an arp reply.
                 */
-               memcpy(client_info->mac_dst, arp->mac_dst, ETH_ALEN);
-               memcpy(client_info->mac_src, arp->mac_src, ETH_ALEN);
+               ether_addr_copy(client_info->mac_dst, arp->mac_dst);
+               ether_addr_copy(client_info->mac_src, arp->mac_src);
                client_info->slave = assigned_slave;
 
                if (!ether_addr_equal_64bits(client_info->mac_dst, mac_bcast)) {
                */
                tx_slave = rlb_choose_channel(skb, bond);
                if (tx_slave)
-                       memcpy(arp->mac_src, tx_slave->dev->dev_addr, ETH_ALEN);
+                       ether_addr_copy(arp->mac_src, tx_slave->dev->dev_addr);
                pr_debug("Server sent ARP Reply packet\n");
        } else if (arp->op_code == htons(ARPOP_REQUEST)) {
                /* Create an entry in the rx_hashtbl for this client as a
        char *data;
 
        memset(&pkt, 0, size);
-       memcpy(pkt.mac_dst, mac_addr, ETH_ALEN);
-       memcpy(pkt.mac_src, mac_addr, ETH_ALEN);
+       ether_addr_copy(pkt.mac_dst, mac_addr);
+       ether_addr_copy(pkt.mac_src, mac_addr);
        pkt.type = cpu_to_be16(ETH_P_LOOP);
 
        skb = dev_alloc_skb(size);
 {
        u8 tmp_mac_addr[ETH_ALEN];
 
-       memcpy(tmp_mac_addr, slave1->dev->dev_addr, ETH_ALEN);
+       ether_addr_copy(tmp_mac_addr, slave1->dev->dev_addr);
        alb_set_slave_mac_addr(slave1, slave2->dev->dev_addr);
        alb_set_slave_mac_addr(slave2, tmp_mac_addr);
 
 
        bond_for_each_slave(bond, slave, iter) {
                /* save net_device's current hw address */
-               memcpy(tmp_addr, slave->dev->dev_addr, ETH_ALEN);
+               ether_addr_copy(tmp_addr, slave->dev->dev_addr);
 
                res = dev_set_mac_address(slave->dev, addr);
 
                /* restore net_device's hw address */
-               memcpy(slave->dev->dev_addr, tmp_addr, ETH_ALEN);
+               ether_addr_copy(slave->dev->dev_addr, tmp_addr);
 
                if (res)
                        goto unwind;
        bond_for_each_slave(bond, rollback_slave, iter) {
                if (rollback_slave == slave)
                        break;
-               memcpy(tmp_addr, rollback_slave->dev->dev_addr, ETH_ALEN);
+               ether_addr_copy(tmp_addr, rollback_slave->dev->dev_addr);
                dev_set_mac_address(rollback_slave->dev, &sa);
-               memcpy(rollback_slave->dev->dev_addr, tmp_addr, ETH_ALEN);
+               ether_addr_copy(rollback_slave->dev->dev_addr, tmp_addr);
        }
 
        return res;
                struct sockaddr sa;
                u8 tmp_addr[ETH_ALEN];
 
-               memcpy(tmp_addr, new_slave->dev->dev_addr, ETH_ALEN);
+               ether_addr_copy(tmp_addr, new_slave->dev->dev_addr);
 
                memcpy(sa.sa_data, bond->dev->dev_addr, bond->dev->addr_len);
                sa.sa_family = bond->dev->type;
                /* we don't care if it can't change its mac, best effort */
                dev_set_mac_address(new_slave->dev, &sa);
 
-               memcpy(new_slave->dev->dev_addr, tmp_addr, ETH_ALEN);
+               ether_addr_copy(new_slave->dev->dev_addr, tmp_addr);
        }
 
        /* curr_active_slave must be set before calling alb_swap_mac_addr */
 
                write_unlock_bh(&bond->curr_slave_lock);
 
                if (old_active) {
-                       memcpy(tmp_mac, new_active->dev->dev_addr, ETH_ALEN);
+                       ether_addr_copy(tmp_mac, new_active->dev->dev_addr);
                        memcpy(saddr.sa_data, old_active->dev->dev_addr,
                               ETH_ALEN);
                        saddr.sa_family = new_active->dev->type;
                } else {
-                       memcpy(saddr.sa_data, bond->dev->dev_addr, ETH_ALEN);
+                       ether_addr_copy(saddr.sa_data, bond->dev->dev_addr);
                        saddr.sa_family = bond->dev->type;
                }
 
                if (!old_active)
                        goto out;
 
-               memcpy(saddr.sa_data, tmp_mac, ETH_ALEN);
+               ether_addr_copy(saddr.sa_data, tmp_mac);
                saddr.sa_family = old_active->dev->type;
 
                rv = dev_set_mac_address(old_active->dev, &saddr);
         * that need it, and for restoring it upon release, and then
         * set it to the master's address
         */
-       memcpy(new_slave->perm_hwaddr, slave_dev->dev_addr, ETH_ALEN);
+       ether_addr_copy(new_slave->perm_hwaddr, slave_dev->dev_addr);
 
        if (!bond->params.fail_over_mac ||
            bond->params.mode != BOND_MODE_ACTIVEBACKUP) {
                 * MAC if this slave's MAC is in use by the bond, or at
                 * least print a warning.
                 */
-               memcpy(addr.sa_data, new_slave->perm_hwaddr, ETH_ALEN);
+               ether_addr_copy(addr.sa_data, new_slave->perm_hwaddr);
                addr.sa_family = slave_dev->type;
                dev_set_mac_address(slave_dev, &addr);
        }
        if (bond->params.fail_over_mac != BOND_FOM_ACTIVE ||
            bond->params.mode != BOND_MODE_ACTIVEBACKUP) {
                /* restore original ("permanent") mac address */
-               memcpy(addr.sa_data, slave->perm_hwaddr, ETH_ALEN);
+               ether_addr_copy(addr.sa_data, slave->perm_hwaddr);
                addr.sa_family = slave_dev->type;
                dev_set_mac_address(slave_dev, &addr);
        }