Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit b95300e8 authored by Georgiana Rodica Chelu's avatar Georgiana Rodica Chelu Committed by Greg Kroah-Hartman
Browse files

staging: rtl8188eu: hal: rtl8188e_cmd: Use ether_addr_copy() instead of memcpy()



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: default avatarGeorgiana Rodica Chelu <georgiana.chelu93@gmail.com>
Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
parent 6f7fd095
Loading
Loading
Loading
Loading
+17 −17
Original line number Diff line number Diff line
@@ -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);