Staging: rtl8192e: replace memcpy() by ether_addr_copy() using coccinelle and pack variable

Author: Melike Yurtoglu <aysemelikeyurtoglu@gmail.com>

This patch focuses on fixing the following warning generated
by checkpatch.pl for the file rxtx.c

Prefer ether_addr_copy() over memcpy() if the Ethernet addresses
are __aligned(2)

@@ expression e1, e2; @@

- memcpy(e1, e2, ETH_ALEN);
+ ether_addr_copy(e1, e2);

struct net_device {
        char                       name[16];             /*     0    16*/
        struct hlist_node          name_hlist;           /*    16    16*/
        char *                     ifalias;              /*    32     8*/
        long unsigned int          mem_end;              /*    40     8*/
        long unsigned int          mem_start;            /*    48     8*/
        long unsigned int          base_addr;            /*    56     8*/
        /* --- cacheline 1 boundary (64 bytes) --- */
        int                        irq;                  /*    64     4*/

        /* XXX 4 bytes hole, try to pack */

        long unsigned int          state;                /*    72     8*/
        struct list_head           dev_list;             /*    80    16*/
        struct list_head           napi_list;            /*    96    16*/
        struct list_head           unreg_list;           /*   112    16*/
        /* --- cacheline 2 boundary (128 bytes) --- */
        struct list_head           close_list;           /*   128    16*/
        struct {
                struct list_head   upper;                /*   144    16*/
                struct list_head   lower;                /*   160    16*/
        } adj_list;                                      /*   144    32*/
        struct {
                struct list_head   upper;                /*   176    16*/
                struct list_head   lower;                /*   192    16*/
        } all_adj_list;                                  /*   176    32*/
        /* --- cacheline 3 boundary (192 bytes) was 16 bytes ago --- */
        netdev_features_t          features;             /*   208     8*/
        netdev_features_t          hw_features;          /*   216     8*/
        netdev_features_t          wanted_features;      /*   224     8*/
        netdev_features_t          vlan_features;        /*   232     8*/
        netdev_features_t          hw_enc_features;      /*   240     8*/
        netdev_features_t          mpls_features;        /*   248     8*/
        /* --- cacheline 4 boundary (256 bytes) --- */
	int                        ifindex;              /*   256     4*/
        int                        iflink;               /*   260     4*/
        struct net_device_stats    stats;                /*   264   184*/
        /* --- cacheline 7 boundary (448 bytes) --- */
        atomic_long_t              rx_dropped;           /*   448     8*/
        atomic_long_t              tx_dropped;           /*   456     8*/
        atomic_t                   carrier_changes;      /*   464     4*/

        /* XXX 4 bytes hole, try to pack */

        const struct iw_handler_def  * wireless_handlers; /*   472     8*/
        struct iw_public_data *    wireless_data;        /*   480     8*/
        const struct net_device_ops  * netdev_ops;       /*   488     8*/
        const struct ethtool_ops  * ethtool_ops;         /*   496     8*/
        const struct forwarding_accel_ops  * fwd_ops;    /*   504     8*/
        /* --- cacheline 8 boundary (512 bytes) --- */
        const struct header_ops  * header_ops;           /*   512     8*/
        unsigned int               flags;                /*   520     4*/
        unsigned int               priv_flags;           /*   524     4*/
        short unsigned int         gflags;               /*   528     2*/
        short unsigned int         padded;               /*   530     2*/
        unsigned char              operstate;            /*   532     1*/
        unsigned char              link_mode;            /*   533     1*/
        unsigned char              if_port;              /*   534     1*/
        unsigned char              dma;                  /*   535     1*/
        unsigned int               mtu;                  /*   536     4*/
        short unsigned int         type;                 /*   540     2*/
        short unsigned int         hard_header_len;      /*   542     2*/
        short unsigned int         needed_headroom;      /*   544     2*/
        short unsigned int         needed_tailroom;      /*   546     2*/
        unsigned char              perm_addr[32];        /*   548    32*/
        /* --- cacheline 9 boundary (576 bytes) was 4 bytes ago --- */
        unsigned char              addr_assign_type;     /*   580     1*/
        unsigned char              addr_len;             /*   581     1*/
        short unsigned int         neigh_priv_len;       /*   582     2*/
        short unsigned int         dev_id;               /*   584     2*/
        short unsigned int         dev_port;             /*   586     2*/
        spinlock_t                 addr_list_lock;       /*   588     4*/
	struct netdev_hw_addr_list uc;                   /*   592    24*/
        struct netdev_hw_addr_list mc;                   /*   616    24*/
        /* --- cacheline 10 boundary (640 bytes) --- */
        struct netdev_hw_addr_list dev_addrs;            /*   640    24*/
        struct kset *              queues_kset;          /*   664     8*/
        unsigned char              name_assign_type;     /*   672     1*/
        bool                       uc_promisc;           /*   673     1*/

        /* XXX 2 bytes hole, try to pack */

        unsigned int               promiscuity;          /*   676     4*/
        unsigned int               allmulti;             /*   680     4*/

        /* XXX 4 bytes hole, try to pack */

        struct vlan_info *         vlan_info;            /*   688     8*/
        struct dsa_switch_tree *   dsa_ptr;              /*   696     8*/
        /* --- cacheline 11 boundary (704 bytes) --- */
        struct tipc_bearer *       tipc_ptr;             /*   704     8*/
        void *                     atalk_ptr;            /*   712     8*/
        struct in_device *         ip_ptr;               /*   720     8*/
        struct dn_dev *            dn_ptr;               /*   728     8*/
        struct inet6_dev *         ip6_ptr;              /*   736     8*/
        void *                     ax25_ptr;             /*   744     8*/
        struct wireless_dev *      ieee80211_ptr;        /*   752     8*/
        struct wpan_dev *          ieee802154_ptr;       /*   760     8*/
        /* --- cacheline 12 boundary (768 bytes) --- */
        long unsigned int          last_rx;              /*   768     8*/
        unsigned char *            dev_addr;             /*   776     8*/
        struct netdev_rx_queue *   _rx;                  /*   784     8*/
        unsigned int               num_rx_queues;        /*   792     4*/
        unsigned int               real_num_rx_queues;   /*   796     4*/
        long unsigned int          gro_flush_timeout;    /*   800     8*/
        rx_handler_func_t *        rx_handler;           /*   808     8*/
        void *                     rx_handler_data;      /*   816     8*/
        struct netdev_queue *      ingress_queue;        /*   824     8*/
        /* --- cacheline 13 boundary (832 bytes) --- */
	unsigned char              broadcast[32];        /*   832    32*/

        /* XXX 32 bytes hole, try to pack */

        /* --- cacheline 14 boundary (896 bytes) --- */
        struct netdev_queue *      _tx;                  /*   896     8*/
        unsigned int               num_tx_queues;        /*   904     4*/
        unsigned int               real_num_tx_queues;   /*   908     4*/
        struct Qdisc *             qdisc;                /*   912     8*/
        long unsigned int          tx_queue_len;         /*   920     8*/
        spinlock_t                 tx_global_lock;       /*   928     4*/

        /* XXX 4 bytes hole, try to pack */

        struct xps_dev_maps *      xps_maps;             /*   936     8*/
        struct cpu_rmap *          rx_cpu_rmap;          /*   944     8*/
        long unsigned int          trans_start;          /*   952     8*/
        /* --- cacheline 15 boundary (960 bytes) --- */
        int                        watchdog_timeo;       /*   960     4*/

        /* XXX 4 bytes hole, try to pack */

        struct timer_list          watchdog_timer;       /*   968    80*/
        /* --- cacheline 16 boundary (1024 bytes) was 24 bytes ago ---* */
        int *                      pcpu_refcnt;          /*  1048     8*/
        struct list_head           todo_list;            /*  1056    16*/
        struct hlist_node          index_hlist;          /*  1072    16*/
        /* --- cacheline 17 boundary (1088 bytes) --- */
        struct list_head           link_watch_list;      /*  1088    16*/
        enum {
                NETREG_UNINITIALIZED = 0,
                NETREG_REGISTERED = 1,
                NETREG_UNREGISTERING = 2,
                NETREG_UNREGISTERED = 3,
                NETREG_RELEASED = 4,
                NETREG_DUMMY = 5,
        } reg_state:8;                                     /*  1104 4 */
	/* Bitfield combined with next fields */

        bool                       dismantle;            /*  1105     1*/

        /* Bitfield combined with previous fields */

        enum {
                RTNL_LINK_INITIALIZED = 0,
                RTNL_LINK_INITIALIZING = 1,
        } rtnl_link_state:16;                               /*  1104 4 */

        /* XXX 4 bytes hole, try to pack */

        void                       (*destructor)(struct net_device *);/*  1112     8 */
        struct netpoll_info *      npinfo;               /*  1120     8*/
        struct net *               nd_net;               /*  1128     8*/
        union {
                void *             ml_priv;              /*           8*/
                struct pcpu_lstats * lstats;             /*           8*/
                struct pcpu_sw_netstats * tstats;        /*           8*/
                struct pcpu_dstats * dstats;             /*           8*/
                struct pcpu_vstats * vstats;             /*           8*/
        };                                               /*  1136     8*/
        struct garp_port *         garp_port;            /*  1144     8*/
        /* --- cacheline 18 boundary (1152 bytes) was 4 bytes ago --- */
        struct mrp_port *          mrp_port;             /*  1152     8*/
        struct device              dev;                  /*  1160   696*/

        /* XXX last struct has 7 bytes of padding */

        /* --- cacheline 29 boundary (1856 bytes) was 4 bytes ago --- */
        const struct attribute_group  * sysfs_groups[4]; /*  1856    32*/
        const struct attribute_group  * sysfs_rx_queue_group; /*  18888 */
        const struct rtnl_link_ops  * rtnl_link_ops;     /*  1896     8*/
        unsigned int               gso_max_size;         /*  1904     4*/
        u16                        gso_max_segs;         /*  1908     2*/
        u16                        gso_min_segs;         /*  1910     2*/
	const struct dcbnl_rtnl_ops  * dcbnl_ops;        /*  1912     8*/
        /* --- cacheline 30 boundary (1920 bytes) was 4 bytes ago --- */
        u8                         num_tc;               /*  1920     1*/

        /* XXX 1 byte hole, try to pack */

        struct netdev_tc_txq       tc_to_txq[16];        /*  1922    64*/
        /* --- cacheline 31 boundary (1984 bytes) was 6 bytes ago --- */
        u8                         prio_tc_map[16];      /*  1986    16*/

        /* XXX 2 bytes hole, try to pack */

        unsigned int               fcoe_ddp_xid;         /*  2004     4*/
        struct phy_device *        phydev;               /*  2008     8*/
        struct lock_class_key *    qdisc_tx_busylock;    /*  2016     8*/
        int                        group;                /*  2024     4*/

        /* XXX 4 bytes hole, try to pack */

        struct pm_qos_request      pm_qos_req;           /*  2032   176*/
        /* --- cacheline 34 boundary (2176 bytes) was 36 bytes ago --- * */

        /* size: 2240, cachelines: 35, members: 120 */
        /* sum members: 2147, holes: 11, sum holes: 65 */
        /* padding: 32 */
        /* paddings: 1, sum paddings: 7 */

        /* BRAIN FART ALERT! 2240 != 2147 + 65(holes), diff = 28 */

};

Signed-off-by: Melike Yurtoglu 
Signed-off-by: Greg Kroah-Hartman 
---
 drivers/staging/rtl8192e/rtl8192e/rtl_core.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)
 
diff --git a/drivers/staging/rtl8192e/rtl8192e/rtl_core.c b/drivers/staging/rtl8192e/rtl8192e/rtl_core.c
index 5615c80..2fbb964 100644
--- a/drivers/staging/rtl8192e/rtl8192e/rtl_core.c
+++ b/drivers/staging/rtl8192e/rtl8192e/rtl_core.c
@@ -2567,7 +2567,7 @@ static int r8192_set_mac_adr(struct net_device *dev, void *mac)
 
 	down(&priv->wx_sem);
 
-	memcpy(dev->dev_addr, addr->sa_data, ETH_ALEN);
+	ether_addr_copy(dev->dev_addr, addr->sa_data);
 
 	schedule_work(&priv->reset_wq);
 	up(&priv->wx_sem);