Commit 2aaeaaff authored by Aiman Najjar's avatar Aiman Najjar Committed by Greg Kroah-Hartman
Browse files

staging: rtl8712: code improvements to make_wlanhdr



1. Refactor make_wlanhdr to improve code style.
2. Use ether_addr_copy instead of memcpy to copy addresses.

Suggested-by: default avatarJoe Perches <joe@perches.com>
Signed-off-by: default avatarAiman Najjar <aiman.najjar@hurranet.com>
Reviewed-by: default avatarDan Carpenter <dan.carpenter@oracle.com>
Link: https://lore.kernel.org/r/275773a0379e4a03839cd832d2ed952fd7bfee48.1585508171.git.aiman.najjar@hurranet.com


Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
parent f476c590
Loading
Loading
Loading
Loading
+60 −63
Original line number Diff line number Diff line
@@ -477,36 +477,36 @@ static int make_wlanhdr(struct _adapter *padapter, u8 *hdr,
	struct mlme_priv *pmlmepriv = &padapter->mlmepriv;
	struct qos_priv *pqospriv = &pmlmepriv->qospriv;
	__le16 *fctrl = &pwlanhdr->frame_ctl;
	u8 *bssid;

	memset(hdr, 0, WLANHDR_OFFSET);
	SetFrameSubType(fctrl, pattrib->subtype);
	if (pattrib->subtype & WIFI_DATA_TYPE) {
	if (!(pattrib->subtype & WIFI_DATA_TYPE))
		return 0;

	bssid = get_bssid(pmlmepriv);

	if (check_fwstate(pmlmepriv,  WIFI_STATION_STATE)) {
		/* to_ds = 1, fr_ds = 0; */
		SetToDs(fctrl);
			memcpy(pwlanhdr->addr1, get_bssid(pmlmepriv),
				ETH_ALEN);
			memcpy(pwlanhdr->addr2, pattrib->src, ETH_ALEN);
			memcpy(pwlanhdr->addr3, pattrib->dst, ETH_ALEN);
		ether_addr_copy(pwlanhdr->addr1, bssid);
		ether_addr_copy(pwlanhdr->addr2, pattrib->src);
		ether_addr_copy(pwlanhdr->addr3, pattrib->dst);
	} else if (check_fwstate(pmlmepriv, WIFI_AP_STATE)) {
		/* to_ds = 0, fr_ds = 1; */
		SetFrDs(fctrl);
			memcpy(pwlanhdr->addr1, pattrib->dst, ETH_ALEN);
			memcpy(pwlanhdr->addr2, get_bssid(pmlmepriv),
				ETH_ALEN);
			memcpy(pwlanhdr->addr3, pattrib->src, ETH_ALEN);
		ether_addr_copy(pwlanhdr->addr1, pattrib->dst);
		ether_addr_copy(pwlanhdr->addr2, bssid);
		ether_addr_copy(pwlanhdr->addr3, pattrib->src);
	} else if (check_fwstate(pmlmepriv, WIFI_ADHOC_STATE) ||
			   check_fwstate(pmlmepriv,
					 WIFI_ADHOC_MASTER_STATE)) {
			memcpy(pwlanhdr->addr1, pattrib->dst, ETH_ALEN);
			memcpy(pwlanhdr->addr2, pattrib->src, ETH_ALEN);
			memcpy(pwlanhdr->addr3, get_bssid(pmlmepriv),
				ETH_ALEN);
		   check_fwstate(pmlmepriv, WIFI_ADHOC_MASTER_STATE)) {
		ether_addr_copy(pwlanhdr->addr1, pattrib->dst);
		ether_addr_copy(pwlanhdr->addr2, pattrib->src);
		ether_addr_copy(pwlanhdr->addr3, bssid);
	} else if (check_fwstate(pmlmepriv, WIFI_MP_STATE)) {
			memcpy(pwlanhdr->addr1, pattrib->dst, ETH_ALEN);
			memcpy(pwlanhdr->addr2, pattrib->src, ETH_ALEN);
			memcpy(pwlanhdr->addr3, get_bssid(pmlmepriv),
				ETH_ALEN);
		ether_addr_copy(pwlanhdr->addr1, pattrib->dst);
		ether_addr_copy(pwlanhdr->addr2, pattrib->src);
		ether_addr_copy(pwlanhdr->addr3, bssid);
	} else {
		return -EINVAL;
	}
@@ -525,27 +525,24 @@ static int make_wlanhdr(struct _adapter *padapter, u8 *hdr,
		struct sta_info *psta;
		bool bmcst = is_multicast_ether_addr(pattrib->ra);

			if (pattrib->psta) {
		if (pattrib->psta)
			psta = pattrib->psta;
			} else {
				if (bmcst)
		else if (bmcst)
			psta = r8712_get_bcmc_stainfo(padapter);
		else
					psta =
					 r8712_get_stainfo(&padapter->stapriv,
			psta = r8712_get_stainfo(&padapter->stapriv,
						 pattrib->ra);
			}

		if (psta) {
				psta->sta_xmitpriv.txseq_tid
						  [pattrib->priority]++;
				psta->sta_xmitpriv.txseq_tid[pattrib->priority]
						   &= 0xFFF;
				pattrib->seqnum = psta->sta_xmitpriv.
						  txseq_tid[pattrib->priority];
			u16 *txtid = psta->sta_xmitpriv.txseq_tid;

			txtid[pattrib->priority]++;
			txtid[pattrib->priority] &= 0xFFF;
			pattrib->seqnum = txtid[pattrib->priority];
			SetSeqNum(hdr, pattrib->seqnum);
		}
	}
	}

	return 0;
}

+1 −1
Original line number Diff line number Diff line
@@ -115,7 +115,7 @@ struct pkt_attrib {
	u8	icv_len;
	unsigned char iv[8];
	unsigned char icv[8];
	u8	dst[ETH_ALEN];
	u8	dst[ETH_ALEN] __aligned(2);	/* for ether_addr_copy */
	u8	src[ETH_ALEN];
	u8	ta[ETH_ALEN];
	u8	ra[ETH_ALEN];