ath9k: don't strip mic on non-encrypted frames in tkip
authorMichael Liang <mliang@qca.qualcomm.com>
Fri, 20 Apr 2012 09:11:57 +0000 (17:11 +0800)
committerJohn W. Linville <linville@tuxdriver.com>
Mon, 23 Apr 2012 19:35:33 +0000 (15:35 -0400)
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>
drivers/net/wireless/ath/ath9k/recv.c

index 12b0979..544e549 100644 (file)
@@ -812,6 +812,7 @@ static bool ath9k_rx_accept(struct ath_common *common,
        is_valid_tkip = rx_stats->rs_keyix != ATH9K_RXKEYIX_INVALID &&
                test_bit(rx_stats->rs_keyix, common->tkip_keymap);
        strip_mic = is_valid_tkip && ieee80211_is_data(fc) &&
+               ieee80211_has_protected(fc) &&
                !(rx_stats->rs_status &
                (ATH9K_RXERR_DECRYPT | ATH9K_RXERR_CRC | ATH9K_RXERR_MIC |
                 ATH9K_RXERR_KEYMISS));