Commit 2bd827a8 authored by Michael Straube's avatar Michael Straube Committed by Greg Kroah-Hartman

staging: rtl8188eu: use is_multicast_ether_addr in rtw_xmit.c

Use is_multicast_ether_addr instead of custom IS_MCAST in
core/rtw_xmit.c. In all uses the address array is properly
aligned.
Signed-off-by: default avatarMichael Straube <straube.linux@gmail.com>
Reviewed-by: default avatarDan Carpenter <dan.carpenter@oracle.com>
Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
parent e232f884
...@@ -399,7 +399,7 @@ static s32 update_attrib(struct adapter *padapter, struct sk_buff *pkt, struct p ...@@ -399,7 +399,7 @@ static s32 update_attrib(struct adapter *padapter, struct sk_buff *pkt, struct p
struct sta_info *psta = NULL; struct sta_info *psta = NULL;
struct ethhdr etherhdr; struct ethhdr etherhdr;
int bmcast; bool mcast;
struct sta_priv *pstapriv = &padapter->stapriv; struct sta_priv *pstapriv = &padapter->stapriv;
struct security_priv *psecuritypriv = &padapter->securitypriv; struct security_priv *psecuritypriv = &padapter->securitypriv;
struct mlme_priv *pmlmepriv = &padapter->mlmepriv; struct mlme_priv *pmlmepriv = &padapter->mlmepriv;
...@@ -460,10 +460,10 @@ static s32 update_attrib(struct adapter *padapter, struct sk_buff *pkt, struct p ...@@ -460,10 +460,10 @@ static s32 update_attrib(struct adapter *padapter, struct sk_buff *pkt, struct p
if ((pattrib->ether_type == ETH_P_ARP) || (pattrib->ether_type == ETH_P_PAE) || (pattrib->dhcp_pkt == 1)) if ((pattrib->ether_type == ETH_P_ARP) || (pattrib->ether_type == ETH_P_PAE) || (pattrib->dhcp_pkt == 1))
rtw_lps_ctrl_wk_cmd(padapter, LPS_CTRL_SPECIAL_PACKET, 1); rtw_lps_ctrl_wk_cmd(padapter, LPS_CTRL_SPECIAL_PACKET, 1);
bmcast = IS_MCAST(pattrib->ra); mcast = is_multicast_ether_addr(pattrib->ra);
/* get sta_info */ /* get sta_info */
if (bmcast) { if (mcast) {
psta = rtw_get_bcmc_stainfo(padapter); psta = rtw_get_bcmc_stainfo(padapter);
} else { } else {
psta = rtw_get_stainfo(pstapriv, pattrib->ra); psta = rtw_get_stainfo(pstapriv, pattrib->ra);
...@@ -517,7 +517,7 @@ static s32 update_attrib(struct adapter *padapter, struct sk_buff *pkt, struct p ...@@ -517,7 +517,7 @@ static s32 update_attrib(struct adapter *padapter, struct sk_buff *pkt, struct p
goto exit; goto exit;
} }
} else { } else {
GET_ENCRY_ALGO(psecuritypriv, psta, pattrib->encrypt, bmcast); GET_ENCRY_ALGO(psecuritypriv, psta, pattrib->encrypt, mcast);
switch (psecuritypriv->dot11AuthAlgrthm) { switch (psecuritypriv->dot11AuthAlgrthm) {
case dot11AuthAlgrthm_Open: case dot11AuthAlgrthm_Open:
...@@ -526,7 +526,7 @@ static s32 update_attrib(struct adapter *padapter, struct sk_buff *pkt, struct p ...@@ -526,7 +526,7 @@ static s32 update_attrib(struct adapter *padapter, struct sk_buff *pkt, struct p
pattrib->key_idx = (u8)psecuritypriv->dot11PrivacyKeyIndex; pattrib->key_idx = (u8)psecuritypriv->dot11PrivacyKeyIndex;
break; break;
case dot11AuthAlgrthm_8021X: case dot11AuthAlgrthm_8021X:
if (bmcast) if (mcast)
pattrib->key_idx = (u8)psecuritypriv->dot118021XGrpKeyid; pattrib->key_idx = (u8)psecuritypriv->dot118021XGrpKeyid;
else else
pattrib->key_idx = 0; pattrib->key_idx = 0;
...@@ -596,7 +596,6 @@ static s32 xmitframe_addmic(struct adapter *padapter, struct xmit_frame *pxmitfr ...@@ -596,7 +596,6 @@ static s32 xmitframe_addmic(struct adapter *padapter, struct xmit_frame *pxmitfr
struct xmit_priv *pxmitpriv = &padapter->xmitpriv; struct xmit_priv *pxmitpriv = &padapter->xmitpriv;
u8 priority[4] = {0x0, 0x0, 0x0, 0x0}; u8 priority[4] = {0x0, 0x0, 0x0, 0x0};
u8 hw_hdr_offset = 0; u8 hw_hdr_offset = 0;
int bmcst = IS_MCAST(pattrib->ra);
if (pattrib->psta) if (pattrib->psta)
stainfo = pattrib->psta; stainfo = pattrib->psta;
...@@ -614,7 +613,7 @@ static s32 xmitframe_addmic(struct adapter *padapter, struct xmit_frame *pxmitfr ...@@ -614,7 +613,7 @@ static s32 xmitframe_addmic(struct adapter *padapter, struct xmit_frame *pxmitfr
pframe = pxmitframe->buf_addr + hw_hdr_offset; pframe = pxmitframe->buf_addr + hw_hdr_offset;
if (bmcst) { if (is_multicast_ether_addr(pattrib->ra)) {
if (!memcmp(psecuritypriv->dot118021XGrptxmickey[psecuritypriv->dot118021XGrpKeyid].skey, null_key, 16)) if (!memcmp(psecuritypriv->dot118021XGrptxmickey[psecuritypriv->dot118021XGrpKeyid].skey, null_key, 16))
return _FAIL; return _FAIL;
/* start to calculate the mic code */ /* start to calculate the mic code */
...@@ -743,12 +742,10 @@ s32 rtw_make_wlanhdr(struct adapter *padapter, u8 *hdr, struct pkt_attrib *pattr ...@@ -743,12 +742,10 @@ s32 rtw_make_wlanhdr(struct adapter *padapter, u8 *hdr, struct pkt_attrib *pattr
struct sta_info *psta; struct sta_info *psta;
int bmcst = IS_MCAST(pattrib->ra);
if (pattrib->psta) { if (pattrib->psta) {
psta = pattrib->psta; psta = pattrib->psta;
} else { } else {
if (bmcst) if (is_multicast_ether_addr(pattrib->ra))
psta = rtw_get_bcmc_stainfo(padapter); psta = rtw_get_bcmc_stainfo(padapter);
else else
psta = rtw_get_stainfo(&padapter->stapriv, pattrib->ra); psta = rtw_get_stainfo(&padapter->stapriv, pattrib->ra);
...@@ -914,7 +911,7 @@ s32 rtw_xmitframe_coalesce(struct adapter *padapter, struct sk_buff *pkt, struct ...@@ -914,7 +911,7 @@ s32 rtw_xmitframe_coalesce(struct adapter *padapter, struct sk_buff *pkt, struct
struct xmit_priv *pxmitpriv = &padapter->xmitpriv; struct xmit_priv *pxmitpriv = &padapter->xmitpriv;
struct pkt_attrib *pattrib = &pxmitframe->attrib; struct pkt_attrib *pattrib = &pxmitframe->attrib;
u8 *pbuf_start; u8 *pbuf_start;
s32 bmcst = IS_MCAST(pattrib->ra); bool mcast = is_multicast_ether_addr(pattrib->ra);
s32 res = _SUCCESS; s32 res = _SUCCESS;
size_t remainder = pkt->len - ETH_HLEN; size_t remainder = pkt->len - ETH_HLEN;
...@@ -964,13 +961,13 @@ s32 rtw_xmitframe_coalesce(struct adapter *padapter, struct sk_buff *pkt, struct ...@@ -964,13 +961,13 @@ s32 rtw_xmitframe_coalesce(struct adapter *padapter, struct sk_buff *pkt, struct
WEP_IV(pattrib->iv, psta->dot11txpn, pattrib->key_idx); WEP_IV(pattrib->iv, psta->dot11txpn, pattrib->key_idx);
break; break;
case _TKIP_: case _TKIP_:
if (bmcst) if (mcast)
TKIP_IV(pattrib->iv, psta->dot11txpn, pattrib->key_idx); TKIP_IV(pattrib->iv, psta->dot11txpn, pattrib->key_idx);
else else
TKIP_IV(pattrib->iv, psta->dot11txpn, 0); TKIP_IV(pattrib->iv, psta->dot11txpn, 0);
break; break;
case _AES_: case _AES_:
if (bmcst) if (mcast)
AES_IV(pattrib->iv, psta->dot11txpn, pattrib->key_idx); AES_IV(pattrib->iv, psta->dot11txpn, pattrib->key_idx);
else else
AES_IV(pattrib->iv, psta->dot11txpn, 0); AES_IV(pattrib->iv, psta->dot11txpn, 0);
...@@ -997,7 +994,7 @@ s32 rtw_xmitframe_coalesce(struct adapter *padapter, struct sk_buff *pkt, struct ...@@ -997,7 +994,7 @@ s32 rtw_xmitframe_coalesce(struct adapter *padapter, struct sk_buff *pkt, struct
if ((pattrib->icv_len > 0) && (pattrib->bswenc)) if ((pattrib->icv_len > 0) && (pattrib->bswenc))
mpdu_len -= pattrib->icv_len; mpdu_len -= pattrib->icv_len;
mem_sz = min_t(size_t, bmcst ? pattrib->pktlen : mpdu_len, remainder); mem_sz = min_t(size_t, mcast ? pattrib->pktlen : mpdu_len, remainder);
skb_copy_bits(pkt, pkt->len - remainder, pframe, mem_sz); skb_copy_bits(pkt, pkt->len - remainder, pframe, mem_sz);
remainder -= mem_sz; remainder -= mem_sz;
...@@ -1010,7 +1007,7 @@ s32 rtw_xmitframe_coalesce(struct adapter *padapter, struct sk_buff *pkt, struct ...@@ -1010,7 +1007,7 @@ s32 rtw_xmitframe_coalesce(struct adapter *padapter, struct sk_buff *pkt, struct
frg_inx++; frg_inx++;
if (bmcst || remainder == 0) { if (mcast || remainder == 0) {
pattrib->nr_frags = frg_inx; pattrib->nr_frags = frg_inx;
pattrib->last_txcmdsz = pattrib->hdrlen + pattrib->iv_len + ((pattrib->nr_frags == 1) ? llc_sz : 0) + pattrib->last_txcmdsz = pattrib->hdrlen + pattrib->iv_len + ((pattrib->nr_frags == 1) ? llc_sz : 0) +
...@@ -1041,7 +1038,7 @@ s32 rtw_xmitframe_coalesce(struct adapter *padapter, struct sk_buff *pkt, struct ...@@ -1041,7 +1038,7 @@ s32 rtw_xmitframe_coalesce(struct adapter *padapter, struct sk_buff *pkt, struct
xmitframe_swencrypt(padapter, pxmitframe); xmitframe_swencrypt(padapter, pxmitframe);
if (!bmcst) if (!mcast)
update_attrib_vcs_info(padapter, pxmitframe); update_attrib_vcs_info(padapter, pxmitframe);
else else
pattrib->vcs_mode = NONE_VCS; pattrib->vcs_mode = NONE_VCS;
...@@ -1632,7 +1629,7 @@ int xmitframe_enqueue_for_sleeping_sta(struct adapter *padapter, struct xmit_fra ...@@ -1632,7 +1629,7 @@ int xmitframe_enqueue_for_sleeping_sta(struct adapter *padapter, struct xmit_fra
struct sta_priv *pstapriv = &padapter->stapriv; struct sta_priv *pstapriv = &padapter->stapriv;
struct pkt_attrib *pattrib = &pxmitframe->attrib; struct pkt_attrib *pattrib = &pxmitframe->attrib;
struct mlme_priv *pmlmepriv = &padapter->mlmepriv; struct mlme_priv *pmlmepriv = &padapter->mlmepriv;
int bmcst = IS_MCAST(pattrib->ra); bool mcast = is_multicast_ether_addr(pattrib->ra);
if (check_fwstate(pmlmepriv, WIFI_AP_STATE) == false) if (check_fwstate(pmlmepriv, WIFI_AP_STATE) == false)
return ret; return ret;
...@@ -1646,12 +1643,12 @@ int xmitframe_enqueue_for_sleeping_sta(struct adapter *padapter, struct xmit_fra ...@@ -1646,12 +1643,12 @@ int xmitframe_enqueue_for_sleeping_sta(struct adapter *padapter, struct xmit_fra
return ret; return ret;
if (pattrib->triggered == 1) { if (pattrib->triggered == 1) {
if (bmcst) if (mcast)
pattrib->qsel = 0x11;/* HIQ */ pattrib->qsel = 0x11;/* HIQ */
return ret; return ret;
} }
if (bmcst) { if (mcast) {
spin_lock_bh(&psta->sleep_q.lock); spin_lock_bh(&psta->sleep_q.lock);
if (pstapriv->sta_dz_bitmap) {/* if any one sta is in ps mode */ if (pstapriv->sta_dz_bitmap) {/* if any one sta is in ps mode */
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment