Commit 9d5b880b authored by Hong Liu's avatar Hong Liu Committed by James Ketrenos

Fixed problem with not being able to send broadcast packets.

Signed-off-by: default avatarJames Ketrenos <jketreno@linux.intel.com>
parent 03520576
...@@ -7456,7 +7456,8 @@ static void ipw_handle_data_packet(struct ipw_priv *priv, ...@@ -7456,7 +7456,8 @@ static void ipw_handle_data_packet(struct ipw_priv *priv,
/* HW decrypt will not clear the WEP bit, MIC, PN, etc. */ /* HW decrypt will not clear the WEP bit, MIC, PN, etc. */
hdr = (struct ieee80211_hdr_4addr *)rxb->skb->data; hdr = (struct ieee80211_hdr_4addr *)rxb->skb->data;
if (priv->ieee->iw_mode != IW_MODE_MONITOR && if (priv->ieee->iw_mode != IW_MODE_MONITOR &&
(is_multicast_ether_addr(hdr->addr1) ? ((is_multicast_ether_addr(hdr->addr1) ||
is_broadcast_ether_addr(hdr->addr1)) ?
!priv->ieee->host_mc_decrypt : !priv->ieee->host_decrypt)) !priv->ieee->host_mc_decrypt : !priv->ieee->host_decrypt))
ipw_rebuild_decrypted_skb(priv, rxb->skb); ipw_rebuild_decrypted_skb(priv, rxb->skb);
...@@ -9652,7 +9653,8 @@ static inline int ipw_tx_skb(struct ipw_priv *priv, struct ieee80211_txb *txb, ...@@ -9652,7 +9653,8 @@ static inline int ipw_tx_skb(struct ipw_priv *priv, struct ieee80211_txb *txb,
switch (priv->ieee->iw_mode) { switch (priv->ieee->iw_mode) {
case IW_MODE_ADHOC: case IW_MODE_ADHOC:
hdr_len = IEEE80211_3ADDR_LEN; hdr_len = IEEE80211_3ADDR_LEN;
unicast = !is_multicast_ether_addr(hdr->addr1); unicast = !(is_multicast_ether_addr(hdr->addr1) ||
is_broadcast_ether_addr(hdr->addr1));
id = ipw_find_station(priv, hdr->addr1); id = ipw_find_station(priv, hdr->addr1);
if (id == IPW_INVALID_STATION) { if (id == IPW_INVALID_STATION) {
id = ipw_add_station(priv, hdr->addr1); 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,7 +9669,8 @@ static inline int ipw_tx_skb(struct ipw_priv *priv, struct ieee80211_txb *txb,
case IW_MODE_INFRA: case IW_MODE_INFRA:
default: default:
unicast = !is_multicast_ether_addr(hdr->addr3); unicast = !(is_multicast_ether_addr(hdr->addr3) ||
is_broadcast_ether_addr(hdr->addr3));
hdr_len = IEEE80211_3ADDR_LEN; hdr_len = IEEE80211_3ADDR_LEN;
id = 0; id = 0;
break; break;
......
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