aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJohn W. Linville <linville@tuxdriver.com>2010-12-02 14:10:58 -0500
committerJohn W. Linville <linville@tuxdriver.com>2010-12-02 14:10:58 -0500
commitd89197c7f34934fbb0f96d938a0d6cfe0b8bcb1c (patch)
tree5e33326fdc0ed274110759205bf9790f129d0289
parentf67e07eb3decd7840b621fba37fd600adfdf99f8 (diff)
Revert "ath9k: Fix STA disconnect issue due to received MIC failed bcast frames"
This reverts commit 916448e77f6bcaaa7f13c3de0c3851783ae2bfd0. "As far as I can tell, either of these patches breaks multiple VIF scenarios. I'm not sure exactly why, but I had to revert this to get any of my interfaces to associate." -- Ben Greear <greearb@candelatech.com> http://marc.info/?l=linux-wireless&m=129123368719339&w=2 Signed-off-by: John W. Linville <linville@tuxdriver.com>
-rw-r--r--drivers/net/wireless/ath/ath9k/mac.c3
-rw-r--r--drivers/net/wireless/ath/ath9k/recv.c4
2 files changed, 3 insertions, 4 deletions
diff --git a/drivers/net/wireless/ath/ath9k/mac.c b/drivers/net/wireless/ath/ath9k/mac.c
index c996963ab339..8c13479b17cd 100644
--- a/drivers/net/wireless/ath/ath9k/mac.c
+++ b/drivers/net/wireless/ath/ath9k/mac.c
@@ -703,7 +703,8 @@ int ath9k_hw_rxprocdesc(struct ath_hw *ah, struct ath_desc *ds,
703 rs->rs_phyerr = phyerr; 703 rs->rs_phyerr = phyerr;
704 } else if (ads.ds_rxstatus8 & AR_DecryptCRCErr) 704 } else if (ads.ds_rxstatus8 & AR_DecryptCRCErr)
705 rs->rs_status |= ATH9K_RXERR_DECRYPT; 705 rs->rs_status |= ATH9K_RXERR_DECRYPT;
706 else if (ads.ds_rxstatus8 & AR_MichaelErr) 706 else if ((ads.ds_rxstatus8 & AR_MichaelErr) &&
707 rs->rs_keyix != ATH9K_RXKEYIX_INVALID)
707 rs->rs_status |= ATH9K_RXERR_MIC; 708 rs->rs_status |= ATH9K_RXERR_MIC;
708 else if (ads.ds_rxstatus8 & AR_KeyMiss) 709 else if (ads.ds_rxstatus8 & AR_KeyMiss)
709 rs->rs_status |= ATH9K_RXERR_DECRYPT; 710 rs->rs_status |= ATH9K_RXERR_DECRYPT;
diff --git a/drivers/net/wireless/ath/ath9k/recv.c b/drivers/net/wireless/ath/ath9k/recv.c
index 14d479f8d8ac..1a62e351ec77 100644
--- a/drivers/net/wireless/ath/ath9k/recv.c
+++ b/drivers/net/wireless/ath/ath9k/recv.c
@@ -1049,11 +1049,9 @@ static void ath9k_rx_skb_postprocess(struct ath_common *common,
1049 int hdrlen, padpos, padsize; 1049 int hdrlen, padpos, padsize;
1050 u8 keyix; 1050 u8 keyix;
1051 __le16 fc; 1051 __le16 fc;
1052 bool is_mc;
1053 1052
1054 /* see if any padding is done by the hw and remove it */ 1053 /* see if any padding is done by the hw and remove it */
1055 hdr = (struct ieee80211_hdr *) skb->data; 1054 hdr = (struct ieee80211_hdr *) skb->data;
1056 is_mc = !!is_multicast_ether_addr(hdr->addr1);
1057 hdrlen = ieee80211_get_hdrlen_from_skb(skb); 1055 hdrlen = ieee80211_get_hdrlen_from_skb(skb);
1058 fc = hdr->frame_control; 1056 fc = hdr->frame_control;
1059 padpos = ath9k_cmn_padpos(hdr->frame_control); 1057 padpos = ath9k_cmn_padpos(hdr->frame_control);
@@ -1074,7 +1072,7 @@ static void ath9k_rx_skb_postprocess(struct ath_common *common,
1074 1072
1075 keyix = rx_stats->rs_keyix; 1073 keyix = rx_stats->rs_keyix;
1076 1074
1077 if ((is_mc || !(keyix == ATH9K_RXKEYIX_INVALID)) && !decrypt_error && 1075 if (!(keyix == ATH9K_RXKEYIX_INVALID) && !decrypt_error &&
1078 ieee80211_has_protected(fc)) { 1076 ieee80211_has_protected(fc)) {
1079 rxs->flag |= RX_FLAG_DECRYPTED; 1077 rxs->flag |= RX_FLAG_DECRYPTED;
1080 } else if (ieee80211_has_protected(fc) 1078 } else if (ieee80211_has_protected(fc)