if (fc & IEEE80211_FCTL_MOREFRAGS) skb_trim(skb, skb->len - 16);	/* 2*MIC */ else skb_trim(skb, skb->len - 8);	/* MIC */ 
skb_trim(skb, skb->len - 16);	/* CCMP_HDR_LEN + CCMP_MIC_LEN */ 
static void ipw_rebuild_decrypted_skb(struct ipw_priv *priv,				      struct sk_buff *skb){	struct ieee80211_hdr *hdr;	u16 fc;	hdr = (struct ieee80211_hdr *)skb->data;	fc = le16_to_cpu(hdr->frame_ctl);	if (!(fc & IEEE80211_FCTL_PROTECTED))		return;	fc &= ~IEEE80211_FCTL_PROTECTED;	hdr->frame_ctl = cpu_to_le16(fc);	switch (priv->ieee->sec.level) {	case SEC_LEVEL_3:		/* Remove CCMP HDR */		memmove(skb->data + IEEE80211_3ADDR_LEN,			skb->data + IEEE80211_3ADDR_LEN + 8,			skb->len - IEEE80211_3ADDR_LEN - 8);		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;	case SEC_LEVEL_1:		/* Remove IV */		memmove(skb->data + IEEE80211_3ADDR_LEN,			skb->data + IEEE80211_3ADDR_LEN + 4,			skb->len - IEEE80211_3ADDR_LEN - 4);		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;	default:		printk(KERN_ERR "Unknow security level %d\n",		       priv->ieee->sec.level);		break;	}}
4520	/local/tlutelli/issta_data/temp/c/2005_temp/2005/4520/f4ff497d45c7071166277a39590cc59b50dc893c/ipw2200.c/buggy/drivers/net/wireless/ipw2200.c