Staging: vt6656: replace memcpy() by ether_addr_copy() using coccinelle and pack variable
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: aybuke ozdemir <aybuke.147@gmail.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>