diff options
Diffstat (limited to 'drivers')
-rw-r--r-- | drivers/net/wireless/ipw2200.c | 9 |
1 files changed, 6 insertions, 3 deletions
diff --git a/drivers/net/wireless/ipw2200.c b/drivers/net/wireless/ipw2200.c index 081957ab1194..c1ae6d4065e0 100644 --- a/drivers/net/wireless/ipw2200.c +++ b/drivers/net/wireless/ipw2200.c | |||
@@ -7456,7 +7456,8 @@ static void ipw_handle_data_packet(struct ipw_priv *priv, | |||
7456 | /* HW decrypt will not clear the WEP bit, MIC, PN, etc. */ | 7456 | /* HW decrypt will not clear the WEP bit, MIC, PN, etc. */ |
7457 | hdr = (struct ieee80211_hdr_4addr *)rxb->skb->data; | 7457 | hdr = (struct ieee80211_hdr_4addr *)rxb->skb->data; |
7458 | if (priv->ieee->iw_mode != IW_MODE_MONITOR && | 7458 | if (priv->ieee->iw_mode != IW_MODE_MONITOR && |
7459 | (is_multicast_ether_addr(hdr->addr1) ? | 7459 | ((is_multicast_ether_addr(hdr->addr1) || |
7460 | is_broadcast_ether_addr(hdr->addr1)) ? | ||
7460 | !priv->ieee->host_mc_decrypt : !priv->ieee->host_decrypt)) | 7461 | !priv->ieee->host_mc_decrypt : !priv->ieee->host_decrypt)) |
7461 | ipw_rebuild_decrypted_skb(priv, rxb->skb); | 7462 | ipw_rebuild_decrypted_skb(priv, rxb->skb); |
7462 | 7463 | ||
@@ -9652,7 +9653,8 @@ static inline int ipw_tx_skb(struct ipw_priv *priv, struct ieee80211_txb *txb, | |||
9652 | switch (priv->ieee->iw_mode) { | 9653 | switch (priv->ieee->iw_mode) { |
9653 | case IW_MODE_ADHOC: | 9654 | case IW_MODE_ADHOC: |
9654 | hdr_len = IEEE80211_3ADDR_LEN; | 9655 | hdr_len = IEEE80211_3ADDR_LEN; |
9655 | unicast = !is_multicast_ether_addr(hdr->addr1); | 9656 | unicast = !(is_multicast_ether_addr(hdr->addr1) || |
9657 | is_broadcast_ether_addr(hdr->addr1)); | ||
9656 | id = ipw_find_station(priv, hdr->addr1); | 9658 | id = ipw_find_station(priv, hdr->addr1); |
9657 | if (id == IPW_INVALID_STATION) { | 9659 | if (id == IPW_INVALID_STATION) { |
9658 | id = ipw_add_station(priv, hdr->addr1); | 9660 | id = ipw_add_station(priv, hdr->addr1); |
@@ -9667,7 +9669,8 @@ static inline int ipw_tx_skb(struct ipw_priv *priv, struct ieee80211_txb *txb, | |||
9667 | 9669 | ||
9668 | case IW_MODE_INFRA: | 9670 | case IW_MODE_INFRA: |
9669 | default: | 9671 | default: |
9670 | unicast = !is_multicast_ether_addr(hdr->addr3); | 9672 | unicast = !(is_multicast_ether_addr(hdr->addr3) || |
9673 | is_broadcast_ether_addr(hdr->addr3)); | ||
9671 | hdr_len = IEEE80211_3ADDR_LEN; | 9674 | hdr_len = IEEE80211_3ADDR_LEN; |
9672 | id = 0; | 9675 | id = 0; |
9673 | break; | 9676 | break; |