Skip to content
  • aybuke ozdemir's avatar
    Staging: vt6656: replace memcpy() by ether_addr_copy() using coccinelle and pack variable · 1aba0121
    aybuke ozdemir authored
    
    
    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);
    
    According to ether_addr_copy() description and functionality,
    all Ethernet addresses should align to the u16 datatype.
    The changes were applied using the following coccinelle rule:
    
    Here is the output of pahole for the relevant datastructures:
    struct vnt_usb_send_context {
            void *                     priv;                 /*     0     8*/
            struct sk_buff *           skb;                  /*     8     8*/
            struct urb *               urb;                  /*    16     8*/
            struct ieee80211_hdr *     hdr;                  /*    24     8*/
            unsigned int               buf_len;              /*    32     4*/
            u32                        frame_len;            /*    36     4*/
            u16                        tx_hdr_size;          /*    40     2*/
            u16                        tx_rate;              /*    42     2*/
            u8                         type;                 /*    44     1*/
            u8                         pkt_no;               /*    45     1*/
            u8                         pkt_type;             /*    46     1*/
            u8                         need_ack;             /*    47     1*/
            u8                         fb_option;            /*    48     1*/
            bool                       in_use;               /*    49     1*/
            unsigned char              data[2900];           /*    50  2900*/
            /* --- cacheline 46 boundary (2944 bytes) was 6 bytes ago --- */
    
            /* size: 2952, cachelines: 47, members: 15 */
            /* padding: 2 */
            /* last cacheline: 8 bytes */
    };
    
    struct ieee80211_key_conf {
            u32                        cipher;               /*     0     4*/
            u8                         icv_len;              /*     4     1*/
            u8                         iv_len;               /*     5     1*/
            u8                         hw_key_idx;           /*     6     1*/
            u8                         flags;                /*     7     1*/
            s8                         keyidx;               /*     8     1*/
            u8                         keylen;               /*     9     1*/
            u8                         key[0];               /*    10     0*/
    
            /* size: 12, cachelines: 1, members: 8 */
            /* padding: 2 */
            /* last cacheline: 12 bytes */
    };
    
    struct vnt_mic_hdr {
            u8                         id;                   /*     0     1*/
            u8                         tx_priority;          /*     1     1*/
            u8                         mic_addr2[6];         /*     2     6*/
            u8                         ccmp_pn[6];           /*     8     6*/
            __be16                     payload_len;          /*    14     2*/
            __be16                     hlen;                 /*    16     2*/
            __le16                     frame_control;        /*    18     2*/
            u8                         addr1[6];             /*    20     6*/
            u8                         addr2[6];             /*    26     6*/
            u8                         addr3[6];             /*    32     6*/
            __le16                     seq_ctrl;             /*    38     2*/
            u8                         addr4[6];             /*    40     6*/
            u16                        packing;              /*    46     2*/
    
            /* size: 48, cachelines: 1, members: 13 */
            /* last cacheline: 48 bytes */
    };
    
    Signed-off-by: default avataraybuke ozdemir <aybuke.147@gmail.com>
    Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
    1aba0121