From e8135790c4e82c08cf18a9802ce2552588c2f51a Mon Sep 17 00:00:00 2001
From: nbd <nbd@3c298f89-4303-0410-b956-a3cf2f4a3e73>
Date: Sat, 17 Sep 2011 08:41:54 +0000
Subject: [PATCH] ath9k: do not strip MMIC for key miss frames

git-svn-id: svn://svn.openwrt.org/openwrt/trunk@28252 3c298f89-4303-0410-b956-a3cf2f4a3e73
---
 .../patches/551-ath9k_fix_keymiss_handling.patch | 16 +++++++++++++---
 1 file changed, 13 insertions(+), 3 deletions(-)

diff --git a/package/mac80211/patches/551-ath9k_fix_keymiss_handling.patch b/package/mac80211/patches/551-ath9k_fix_keymiss_handling.patch
index 66ea9a7c0..931c50e0c 100644
--- a/package/mac80211/patches/551-ath9k_fix_keymiss_handling.patch
+++ b/package/mac80211/patches/551-ath9k_fix_keymiss_handling.patch
@@ -36,7 +36,17 @@
  #define ATH9K_RX_MORE_AGGR        0x02
 --- a/drivers/net/wireless/ath/ath9k/recv.c
 +++ b/drivers/net/wireless/ath/ath9k/recv.c
-@@ -854,6 +854,8 @@ static bool ath9k_rx_accept(struct ath_c
+@@ -826,7 +826,8 @@ static bool ath9k_rx_accept(struct ath_c
+ 		test_bit(rx_stats->rs_keyix, common->tkip_keymap);
+ 	strip_mic = is_valid_tkip && ieee80211_is_data(fc) &&
+ 		!(rx_stats->rs_status &
+-		(ATH9K_RXERR_DECRYPT | ATH9K_RXERR_CRC | ATH9K_RXERR_MIC));
++		(ATH9K_RXERR_DECRYPT | ATH9K_RXERR_CRC | ATH9K_RXERR_MIC |
++		 ATH9K_RXERR_KEYMISS));
+ 
+ 	if (!rx_stats->rs_datalen)
+ 		return false;
+@@ -854,6 +855,8 @@ static bool ath9k_rx_accept(struct ath_c
  	 * descriptors.
  	 */
  	if (rx_stats->rs_status != 0) {
@@ -45,7 +55,7 @@
  		if (rx_stats->rs_status & ATH9K_RXERR_CRC) {
  			rxs->flag |= RX_FLAG_FAILED_FCS_CRC;
  			mic_error = false;
-@@ -861,7 +863,8 @@ static bool ath9k_rx_accept(struct ath_c
+@@ -861,7 +864,8 @@ static bool ath9k_rx_accept(struct ath_c
  		if (rx_stats->rs_status & ATH9K_RXERR_PHY)
  			return false;
  
@@ -55,7 +65,7 @@
  			*decrypt_error = true;
  			mic_error = false;
  		}
-@@ -871,17 +874,14 @@ static bool ath9k_rx_accept(struct ath_c
+@@ -871,17 +875,14 @@ static bool ath9k_rx_accept(struct ath_c
  		 * decryption and MIC failures. For monitor mode,
  		 * we also ignore the CRC error.
  		 */
-- 
2.20.1