diff options
author | Felix Fietkau <nbd@openwrt.org> | 2010-09-14 12:38:26 -0400 |
---|---|---|
committer | John W. Linville <linville@tuxdriver.com> | 2010-09-14 16:14:27 -0400 |
commit | 3ae74c33c4f799f6bf6d67240a94a0814a8f1944 (patch) | |
tree | 9a36d507571c8cbc2169d4108061d60e77924c38 /drivers/net/wireless/ath/ath9k/mac.c | |
parent | 2944f45d9db851e186774df7c9cbf075f4a585c6 (diff) |
ath9k_hw: handle rx key miss
If AR_KeyMiss is set in the rx descriptor and AR_RxFrameOK is unset,
the hardware could not locate a valid key during a decryption attempt.
In this case, the frame must not be reported as decrypted, otherwise
mac80211 sees only random garbage.
Signed-off-by: Felix Fietkau <nbd@openwrt.org>
Cc: stable@kernel.org
Signed-off-by: John W. Linville <linville@tuxdriver.com>
Diffstat (limited to 'drivers/net/wireless/ath/ath9k/mac.c')
-rw-r--r-- | drivers/net/wireless/ath/ath9k/mac.c | 2 |
1 files changed, 2 insertions, 0 deletions
diff --git a/drivers/net/wireless/ath/ath9k/mac.c b/drivers/net/wireless/ath/ath9k/mac.c index 0b7d1253f0c0..3efda8a8a3c1 100644 --- a/drivers/net/wireless/ath/ath9k/mac.c +++ b/drivers/net/wireless/ath/ath9k/mac.c | |||
@@ -714,6 +714,8 @@ int ath9k_hw_rxprocdesc(struct ath_hw *ah, struct ath_desc *ds, | |||
714 | else if ((ads.ds_rxstatus8 & AR_MichaelErr) && | 714 | else if ((ads.ds_rxstatus8 & AR_MichaelErr) && |
715 | rs->rs_keyix != ATH9K_RXKEYIX_INVALID) | 715 | rs->rs_keyix != ATH9K_RXKEYIX_INVALID) |
716 | rs->rs_status |= ATH9K_RXERR_MIC; | 716 | rs->rs_status |= ATH9K_RXERR_MIC; |
717 | else if (ads.ds_rxstatus8 & AR_KeyMiss) | ||
718 | rs->rs_status |= ATH9K_RXERR_DECRYPT; | ||
717 | } | 719 | } |
718 | 720 | ||
719 | return 0; | 721 | return 0; |