staging: rtl8188eu: hal: rtl8188e_cmd: Use ether_addr_copy() instead of memcpy()
authorGeorgiana Rodica Chelu <georgiana.chelu93@gmail.com>
Fri, 23 Sep 2016 06:14:27 +0000 (09:14 +0300)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Fri, 23 Sep 2016 12:11:46 +0000 (14:11 +0200)
The checkpatch.pl found the warning:
WARNING: Prefer ether_addr_copy() over memcpy() if the Ethernet
addresses are __aligned(2)

Checked if the the Ethernet addresses are __aligned(2) by using pahole
tool. The type of pwlanhdr is struct ieee80211_hdr and pahole shows that
addr1, addr2, and addr3 are aligned to u16.

struct ieee80211_hdr {
        __le16                     frame_control;        /*     0     2 */
        __le16                     duration_id;          /*     2     2 */
        u8                         addr1[6];             /*     4     6 */
        u8                         addr2[6];             /*    10     6 */
        u8                         addr3[6];             /*    16     6 */
        __le16                     seq_ctrl;             /*    22     2 */
        u8                         addr4[6];             /*    24     6 */

        /* size: 30, cachelines: 1, members: 7 */
        /* last cacheline: 30 bytes */
};

Both eeprompriv from struct adapter and MacAddress from struct
wlan_bssid_ex have the offset multiple of sizeof(u16).

Also, the array bc_addr and the pointers: StaAddr, mac, and bssid,
start from an even offset.

Signed-off-by: Georgiana Rodica Chelu <georgiana.chelu93@gmail.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
drivers/staging/rtl8188eu/hal/rtl8188e_cmd.c

index 4e7cef3e66c8fd2036fcd8221cdda570eebad05d..d0f59b7836f1526de23be74d2450cd01ff730ee6 100644 (file)
@@ -232,9 +232,9 @@ static void ConstructBeacon(struct adapter *adapt, u8 *pframe, u32 *pLength)
        fctrl = &pwlanhdr->frame_control;
        *(fctrl) = 0;
 
-       memcpy(pwlanhdr->addr1, bc_addr, ETH_ALEN);
-       memcpy(pwlanhdr->addr2, myid(&(adapt->eeprompriv)), ETH_ALEN);
-       memcpy(pwlanhdr->addr3, cur_network->MacAddress, ETH_ALEN);
+       ether_addr_copy(pwlanhdr->addr1, bc_addr);
+       ether_addr_copy(pwlanhdr->addr2, myid(&(adapt->eeprompriv)));
+       ether_addr_copy(pwlanhdr->addr3, cur_network->MacAddress);
 
        SetSeqNum(pwlanhdr, 0/*pmlmeext->mgnt_seq*/);
        SetFrameSubType(pframe, WIFI_BEACON);
@@ -322,10 +322,10 @@ static void ConstructPSPoll(struct adapter *adapt, u8 *pframe, u32 *pLength)
        SetDuration(pframe, (pmlmeinfo->aid | 0xc000));
 
        /*  BSSID. */
-       memcpy(pwlanhdr->addr1, pnetwork->MacAddress, ETH_ALEN);
+       ether_addr_copy(pwlanhdr->addr1, pnetwork->MacAddress);
 
        /*  TA. */
-       memcpy(pwlanhdr->addr2, myid(&(adapt->eeprompriv)), ETH_ALEN);
+       ether_addr_copy(pwlanhdr->addr2, myid(&(adapt->eeprompriv)));
 
        *pLength = 16;
 }
@@ -357,21 +357,21 @@ static void ConstructNullFunctionData(struct adapter *adapt, u8 *pframe,
        switch (cur_network->network.InfrastructureMode) {
        case Ndis802_11Infrastructure:
                SetToDs(fctrl);
-               memcpy(pwlanhdr->addr1, pnetwork->MacAddress, ETH_ALEN);
-               memcpy(pwlanhdr->addr2, myid(&(adapt->eeprompriv)), ETH_ALEN);
-               memcpy(pwlanhdr->addr3, StaAddr, ETH_ALEN);
+               ether_addr_copy(pwlanhdr->addr1, pnetwork->MacAddress);
+               ether_addr_copy(pwlanhdr->addr2, myid(&(adapt->eeprompriv)));
+               ether_addr_copy(pwlanhdr->addr3, StaAddr);
                break;
        case Ndis802_11APMode:
                SetFrDs(fctrl);
-               memcpy(pwlanhdr->addr1, StaAddr, ETH_ALEN);
-               memcpy(pwlanhdr->addr2, pnetwork->MacAddress, ETH_ALEN);
-               memcpy(pwlanhdr->addr3, myid(&(adapt->eeprompriv)), ETH_ALEN);
+               ether_addr_copy(pwlanhdr->addr1, StaAddr);
+               ether_addr_copy(pwlanhdr->addr2, pnetwork->MacAddress);
+               ether_addr_copy(pwlanhdr->addr3, myid(&(adapt->eeprompriv)));
                break;
        case Ndis802_11IBSS:
        default:
-               memcpy(pwlanhdr->addr1, StaAddr, ETH_ALEN);
-               memcpy(pwlanhdr->addr2, myid(&(adapt->eeprompriv)), ETH_ALEN);
-               memcpy(pwlanhdr->addr3, pnetwork->MacAddress, ETH_ALEN);
+               ether_addr_copy(pwlanhdr->addr1, StaAddr);
+               ether_addr_copy(pwlanhdr->addr2, myid(&(adapt->eeprompriv)));
+               ether_addr_copy(pwlanhdr->addr3, pnetwork->MacAddress);
                break;
        }
 
@@ -413,9 +413,9 @@ static void ConstructProbeRsp(struct adapter *adapt, u8 *pframe, u32 *pLength, u
 
        fctrl = &pwlanhdr->frame_control;
        *(fctrl) = 0;
-       memcpy(pwlanhdr->addr1, StaAddr, ETH_ALEN);
-       memcpy(pwlanhdr->addr2, mac, ETH_ALEN);
-       memcpy(pwlanhdr->addr3, bssid, ETH_ALEN);
+       ether_addr_copy(pwlanhdr->addr1, StaAddr);
+       ether_addr_copy(pwlanhdr->addr2, mac);
+       ether_addr_copy(pwlanhdr->addr3, bssid);
 
        SetSeqNum(pwlanhdr, 0);
        SetFrameSubType(fctrl, WIFI_PROBERSP);