Commit a2d73e60 authored by Zhu Yi's avatar Zhu Yi Committed by James Ketrenos

Fix hardware encryption (both WEP and AES) doesn't work with fragmentation.

Firmware sends received packets with double sized ICV/MIC.
Signed-off-by: default avatarJames Ketrenos <jketreno@linux.intel.com>
parent afbf30a2
......@@ -7587,7 +7587,10 @@ static void ipw_rebuild_decrypted_skb(struct ipw_priv *priv,
memmove(skb->data + IEEE80211_3ADDR_LEN,
skb->data + IEEE80211_3ADDR_LEN + 8,
skb->len - IEEE80211_3ADDR_LEN - 8);
skb_trim(skb, skb->len - 8); /* MIC */
if (fc & IEEE80211_FCTL_MOREFRAGS)
skb_trim(skb, skb->len - 16); /* 2*MIC */
else
skb_trim(skb, skb->len - 8); /* MIC */
break;
case SEC_LEVEL_2:
break;
......@@ -7596,7 +7599,10 @@ static void ipw_rebuild_decrypted_skb(struct ipw_priv *priv,
memmove(skb->data + IEEE80211_3ADDR_LEN,
skb->data + IEEE80211_3ADDR_LEN + 4,
skb->len - IEEE80211_3ADDR_LEN - 4);
skb_trim(skb, skb->len - 4); /* ICV */
if (fc & IEEE80211_FCTL_MOREFRAGS)
skb_trim(skb, skb->len - 8); /* 2*ICV */
else
skb_trim(skb, skb->len - 4); /* ICV */
break;
case SEC_LEVEL_0:
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