diff options
Diffstat (limited to 'recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0117-ath9k_hw-fix-interpretation-of-the-rx-KeyMiss-flag.patch')
-rw-r--r-- | recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0117-ath9k_hw-fix-interpretation-of-the-rx-KeyMiss-flag.patch | 61 |
1 files changed, 61 insertions, 0 deletions
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0117-ath9k_hw-fix-interpretation-of-the-rx-KeyMiss-flag.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0117-ath9k_hw-fix-interpretation-of-the-rx-KeyMiss-flag.patch new file mode 100644 index 00000000..7545566c --- /dev/null +++ b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.2/0117-ath9k_hw-fix-interpretation-of-the-rx-KeyMiss-flag.patch | |||
@@ -0,0 +1,61 @@ | |||
1 | From 6e66c39b4394d812895bbeaa0dce566ca86a7d72 Mon Sep 17 00:00:00 2001 | ||
2 | From: Felix Fietkau <nbd@openwrt.org> | ||
3 | Date: Sat, 14 Jan 2012 15:08:34 +0100 | ||
4 | Subject: [PATCH 117/130] ath9k_hw: fix interpretation of the rx KeyMiss flag | ||
5 | |||
6 | commit 7a532fe7131216a02c81a6c1b1f8632da1195a58 upstream. | ||
7 | |||
8 | Documentation states that the KeyMiss flag is only valid if RxFrameOK is | ||
9 | unset, however empirical evidence has shown that this is false. | ||
10 | When KeyMiss is set (and RxFrameOK is 1), the hardware passes a valid frame | ||
11 | which has not been decrypted. The driver then falsely marks the frame | ||
12 | as decrypted, and when using CCMP this corrupts the rx CCMP PN, leading | ||
13 | to connection hangs. | ||
14 | |||
15 | Signed-off-by: Felix Fietkau <nbd@openwrt.org> | ||
16 | Signed-off-by: John W. Linville <linville@tuxdriver.com> | ||
17 | Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de> | ||
18 | --- | ||
19 | drivers/net/wireless/ath/ath9k/ar9003_mac.c | 5 +++-- | ||
20 | drivers/net/wireless/ath/ath9k/mac.c | 5 +++-- | ||
21 | 2 files changed, 6 insertions(+), 4 deletions(-) | ||
22 | |||
23 | diff --git a/drivers/net/wireless/ath/ath9k/ar9003_mac.c b/drivers/net/wireless/ath/ath9k/ar9003_mac.c | ||
24 | index ccde784..f5ae3c6 100644 | ||
25 | --- a/drivers/net/wireless/ath/ath9k/ar9003_mac.c | ||
26 | +++ b/drivers/net/wireless/ath/ath9k/ar9003_mac.c | ||
27 | @@ -526,10 +526,11 @@ int ath9k_hw_process_rxdesc_edma(struct ath_hw *ah, struct ath_rx_status *rxs, | ||
28 | rxs->rs_status |= ATH9K_RXERR_DECRYPT; | ||
29 | else if (rxsp->status11 & AR_MichaelErr) | ||
30 | rxs->rs_status |= ATH9K_RXERR_MIC; | ||
31 | - if (rxsp->status11 & AR_KeyMiss) | ||
32 | - rxs->rs_status |= ATH9K_RXERR_KEYMISS; | ||
33 | } | ||
34 | |||
35 | + if (rxsp->status11 & AR_KeyMiss) | ||
36 | + rxs->rs_status |= ATH9K_RXERR_KEYMISS; | ||
37 | + | ||
38 | return 0; | ||
39 | } | ||
40 | EXPORT_SYMBOL(ath9k_hw_process_rxdesc_edma); | ||
41 | diff --git a/drivers/net/wireless/ath/ath9k/mac.c b/drivers/net/wireless/ath/ath9k/mac.c | ||
42 | index ecdb6fd..bbcb777 100644 | ||
43 | --- a/drivers/net/wireless/ath/ath9k/mac.c | ||
44 | +++ b/drivers/net/wireless/ath/ath9k/mac.c | ||
45 | @@ -621,10 +621,11 @@ int ath9k_hw_rxprocdesc(struct ath_hw *ah, struct ath_desc *ds, | ||
46 | rs->rs_status |= ATH9K_RXERR_DECRYPT; | ||
47 | else if (ads.ds_rxstatus8 & AR_MichaelErr) | ||
48 | rs->rs_status |= ATH9K_RXERR_MIC; | ||
49 | - if (ads.ds_rxstatus8 & AR_KeyMiss) | ||
50 | - rs->rs_status |= ATH9K_RXERR_KEYMISS; | ||
51 | } | ||
52 | |||
53 | + if (ads.ds_rxstatus8 & AR_KeyMiss) | ||
54 | + rs->rs_status |= ATH9K_RXERR_KEYMISS; | ||
55 | + | ||
56 | return 0; | ||
57 | } | ||
58 | EXPORT_SYMBOL(ath9k_hw_rxprocdesc); | ||
59 | -- | ||
60 | 1.7.7.4 | ||
61 | |||