Hi, When I am sending heavy traffic through wireless, the packet number and key is mismatching. I have applied the below patch which solves my pn-key mismatch packet drop. diff -Nurp linux-custom_1/net/mac80211/wpa.c linux-custom/net/mac80211/wpa.c --- linux-custom_1/net/mac80211/wpa.c 2014-11-09 23:14:57.000000000 -0800 +++ linux-custom/net/mac80211/wpa.c 2014-11-13 05:16:45.000000000 -0800 @@ -483,7 +483,7 @@ ieee80211_crypto_ccmp_encrypt(struct iee return TX_CONTINUE; } - +#define MAX_PN_TOLERANCE 0x05 //PN-KEY mismatch ieee80211_rx_result ieee80211_crypto_ccmp_decrypt(struct ieee80211_rx_data *rx) { @@ -495,6 +495,7 @@ ieee80211_crypto_ccmp_decrypt(struct iee u8 pn[IEEE80211_CCMP_PN_LEN]; int data_len; int queue; + static const u8 zero_pn[IEEE80211_CCMP_PN_LEN] = {0}; hdrlen = ieee80211_hdrlen(hdr->frame_control); @@ -537,8 +538,16 @@ ieee80211_crypto_ccmp_decrypt(struct iee skb->data + hdrlen + IEEE80211_CCMP_HDR_LEN)) return RX_DROP_UNUSABLE; } - - memcpy(key->u.ccmp.rx_pn[queue], pn, IEEE80211_CCMP_PN_LEN); + + //PN-KEY mismatch start + if (memcmp(key->u.ccmp.rx_pn[queue], zero_pn, IEEE80211_CCMP_PN_LEN) == 0) + { + if((memcmp(pn,zero_pn,(IEEE80211_CCMP_PN_LEN-1)) == 0) && (pn[IEEE80211_CCMP_PN_LEN-1] < MAX_PN_TOLERANCE)) + memcpy(key->u.ccmp.rx_pn[queue], pn, IEEE80211_CCMP_PN_LEN); + } + else + memcpy(key->u.ccmp.rx_pn[queue], pn, IEEE80211_CCMP_PN_LEN); + //PN-KEY mismatch end /* Remove CCMP header and MIC */ if (pskb_trim(skb, skb->len - IEEE80211_CCMP_MIC_LEN)) -- Deepak Kumar Pradhan -- To unsubscribe from this list: send the line "unsubscribe linux-wireless" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html