2
0
mirror of https://github.com/edk2-porting/linux-next.git synced 2024-12-23 12:43:55 +08:00

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

Firmware sends received packets with double sized ICV/MIC.

Signed-off-by: James Ketrenos <jketreno@linux.intel.com>
This commit is contained in:
Zhu Yi 2005-07-13 12:24:51 -05:00 committed by James Ketrenos
parent afbf30a2b7
commit a2d73e60bb

View File

@ -7587,7 +7587,10 @@ static void ipw_rebuild_decrypted_skb(struct ipw_priv *priv,
memmove(skb->data + IEEE80211_3ADDR_LEN, memmove(skb->data + IEEE80211_3ADDR_LEN,
skb->data + IEEE80211_3ADDR_LEN + 8, skb->data + IEEE80211_3ADDR_LEN + 8,
skb->len - 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; break;
case SEC_LEVEL_2: case SEC_LEVEL_2:
break; break;
@ -7596,7 +7599,10 @@ static void ipw_rebuild_decrypted_skb(struct ipw_priv *priv,
memmove(skb->data + IEEE80211_3ADDR_LEN, memmove(skb->data + IEEE80211_3ADDR_LEN,
skb->data + IEEE80211_3ADDR_LEN + 4, skb->data + IEEE80211_3ADDR_LEN + 4,
skb->len - 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; break;
case SEC_LEVEL_0: case SEC_LEVEL_0:
break; break;