bfa_q_qe_init(&rxf->ucast_pending_mac->qe);
        }
 
-       memcpy(rxf->ucast_pending_mac->addr, ucmac, ETH_ALEN);
+       ether_addr_copy(rxf->ucast_pending_mac->addr, ucmac);
        rxf->ucast_pending_set = 1;
        rxf->cam_fltr_cbfn = cbfn;
        rxf->cam_fltr_cbarg = rx->bna->bnad;
        if (mac == NULL)
                return BNA_CB_MCAST_LIST_FULL;
        bfa_q_qe_init(&mac->qe);
-       memcpy(mac->addr, addr, ETH_ALEN);
+       ether_addr_copy(mac->addr, addr);
        list_add_tail(&mac->qe, &rxf->mcast_pending_add_q);
 
        rxf->cam_fltr_cbfn = cbfn;
                if (mac == NULL)
                        goto err_return;
                bfa_q_qe_init(&mac->qe);
-               memcpy(mac->addr, mcaddr, ETH_ALEN);
+               ether_addr_copy(mac->addr, mcaddr);
                list_add_tail(&mac->qe, &list_head);
                mcaddr += ETH_ALEN;
        }
                if (mac == NULL)
                        goto err_return;
                bfa_q_qe_init(&mac->qe);
-               memcpy(mac->addr, mcaddr, ETH_ALEN);
+               ether_addr_copy(mac->addr, mcaddr);
                list_add_tail(&mac->qe, &list_head);
 
                mcaddr += ETH_ALEN;
        /* Set default unicast MAC */
        if (rxf->ucast_pending_set) {
                rxf->ucast_pending_set = 0;
-               memcpy(rxf->ucast_active_mac.addr,
-                       rxf->ucast_pending_mac->addr, ETH_ALEN);
+               ether_addr_copy(rxf->ucast_active_mac.addr,
+                               rxf->ucast_pending_mac->addr);
                rxf->ucast_active_set = 1;
                bna_bfi_ucast_req(rxf, &rxf->ucast_active_mac,
                        BFI_ENET_H2I_MAC_UCAST_SET_REQ);
 
 static u32 bna_id;
 static struct mutex bnad_list_mutex;
 static LIST_HEAD(bnad_list);
-static const u8 bnad_bcast_addr[] =  {0xff, 0xff, 0xff, 0xff, 0xff, 0xff};
+static const u8 bnad_bcast_addr[] __aligned(2) =
+       { 0xff, 0xff, 0xff, 0xff, 0xff, 0xff };
 
 /*
  * Local MACROS
 {
        struct net_device *netdev = bnad->netdev;
 
-       memcpy(netdev->perm_addr, &bnad->perm_addr, netdev->addr_len);
+       ether_addr_copy(netdev->perm_addr, bnad->perm_addr.mac);
        if (is_zero_ether_addr(netdev->dev_addr))
-               memcpy(netdev->dev_addr, &bnad->perm_addr, netdev->addr_len);
+               ether_addr_copy(netdev->dev_addr, bnad->perm_addr.mac);
 }
 
 /* Control Path Handlers */
        struct netdev_hw_addr *mc_addr;
 
        netdev_for_each_mc_addr(mc_addr, netdev) {
-               memcpy(&mc_list[i * ETH_ALEN], &mc_addr->addr[0],
-                                                       ETH_ALEN);
+               ether_addr_copy(&mc_list[i * ETH_ALEN], &mc_addr->addr[0]);
                i++;
        }
 }
 
        entry = 0;
        netdev_for_each_uc_addr(ha, netdev) {
-               memcpy(&mac_list[entry * ETH_ALEN],
-                      &ha->addr[0], ETH_ALEN);
+               ether_addr_copy(&mac_list[entry * ETH_ALEN], &ha->addr[0]);
                entry++;
        }
 
        if (mac_list == NULL)
                goto mode_allmulti;
 
-       memcpy(&mac_list[0], &bnad_bcast_addr[0], ETH_ALEN);
+       ether_addr_copy(&mac_list[0], &bnad_bcast_addr[0]);
 
        /* copy rest of the MCAST addresses */
        bnad_netdev_mc_list_get(netdev, mac_list);
  * in a non-blocking context.
  */
 static int
-bnad_set_mac_address(struct net_device *netdev, void *mac_addr)
+bnad_set_mac_address(struct net_device *netdev, void *addr)
 {
        int err;
        struct bnad *bnad = netdev_priv(netdev);
-       struct sockaddr *sa = (struct sockaddr *)mac_addr;
+       struct sockaddr *sa = (struct sockaddr *)addr;
        unsigned long flags;
 
        spin_lock_irqsave(&bnad->bna_lock, flags);
 
        err = bnad_mac_addr_set_locked(bnad, sa->sa_data);
-
        if (!err)
-               memcpy(netdev->dev_addr, sa->sa_data, netdev->addr_len);
+               ether_addr_copy(netdev->dev_addr, sa->sa_data);
 
        spin_unlock_irqrestore(&bnad->bna_lock, flags);