aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMichael Liang <mliang@qca.qualcomm.com>2012-04-20 05:11:57 -0400
committerJohn W. Linville <linville@tuxdriver.com>2012-04-23 15:35:33 -0400
commit2a5783b817c90ce6fb82a21e103335d1ecbac430 (patch)
tree2b355c1bb499d9e973152e1d0b2f105493e6c0fc
parente0602750ab028780962a1e4bb3f3705433a18c97 (diff)
ath9k: don't strip mic on non-encrypted frames in tkip
Fix the following bug: in tkip mode, qos-null ps on/off packets are dropped due to incorrect packet length so that ath9k softap can't handle powersave state transition of peer STA correctly. Signed-off-by: Michael Liang <mliang@qca.qualcomm.com> Signed-off-by: John W. Linville <linville@tuxdriver.com>
-rw-r--r--drivers/net/wireless/ath/ath9k/recv.c1
1 files changed, 1 insertions, 0 deletions
diff --git a/drivers/net/wireless/ath/ath9k/recv.c b/drivers/net/wireless/ath/ath9k/recv.c
index 12b09798864a..544e5490ca2e 100644
--- a/drivers/net/wireless/ath/ath9k/recv.c
+++ b/drivers/net/wireless/ath/ath9k/recv.c
@@ -812,6 +812,7 @@ static bool ath9k_rx_accept(struct ath_common *common,
812 is_valid_tkip = rx_stats->rs_keyix != ATH9K_RXKEYIX_INVALID && 812 is_valid_tkip = rx_stats->rs_keyix != ATH9K_RXKEYIX_INVALID &&
813 test_bit(rx_stats->rs_keyix, common->tkip_keymap); 813 test_bit(rx_stats->rs_keyix, common->tkip_keymap);
814 strip_mic = is_valid_tkip && ieee80211_is_data(fc) && 814 strip_mic = is_valid_tkip && ieee80211_is_data(fc) &&
815 ieee80211_has_protected(fc) &&
815 !(rx_stats->rs_status & 816 !(rx_stats->rs_status &
816 (ATH9K_RXERR_DECRYPT | ATH9K_RXERR_CRC | ATH9K_RXERR_MIC | 817 (ATH9K_RXERR_DECRYPT | ATH9K_RXERR_CRC | ATH9K_RXERR_MIC |
817 ATH9K_RXERR_KEYMISS)); 818 ATH9K_RXERR_KEYMISS));