[backfire] merge ath9k fixes from r22152
[openwrt-10.03/.git] / package / mac80211 / patches / 525-ath9k_handle_keymiss.patch
index a2031cf4682f63552077a95483dc64c5c4168ff9..bbdd177615fccf31bb2771465ecccf031b915c53 100644 (file)
@@ -1,23 +1,23 @@
 --- a/drivers/net/wireless/ath/ath9k/mac.c
 +++ b/drivers/net/wireless/ath/ath9k/mac.c
-@@ -701,6 +701,8 @@ int ath9k_hw_rxprocdesc(struct ath_hw *a
-               rs->rs_flags |= ATH9K_RX_DELIM_CRC_POST;
-       if (ads.ds_rxstatus8 & AR_DecryptBusyErr)
-               rs->rs_flags |= ATH9K_RX_DECRYPT_BUSY;
-+      if (ads.ds_rxstatus8 & AR_KeyMiss)
-+              rs->rs_keyix = ATH9K_RXKEYIX_INVALID;
+@@ -713,6 +713,8 @@ int ath9k_hw_rxprocdesc(struct ath_hw *a
+                       rs->rs_status |= ATH9K_RXERR_DECRYPT;
+               else if (ads.ds_rxstatus8 & AR_MichaelErr)
+                       rs->rs_status |= ATH9K_RXERR_MIC;
++              else if (ads.ds_rxstatus8 & AR_KeyMiss)
++                      rs->rs_status |= ATH9K_RXERR_DECRYPT;
+       }
  
-       if ((ads.ds_rxstatus8 & AR_RxFrameOK) == 0) {
-               if (ads.ds_rxstatus8 & AR_CRCErr)
+       return 0;
 --- a/drivers/net/wireless/ath/ath9k/ar9003_mac.c
 +++ b/drivers/net/wireless/ath/ath9k/ar9003_mac.c
-@@ -578,6 +578,9 @@ int ath9k_hw_process_rxdesc_edma(struct 
-       if (rxsp->status11 & AR_DecryptBusyErr)
-               rxs->rs_flags |= ATH9K_RX_DECRYPT_BUSY;
+@@ -589,7 +589,8 @@ int ath9k_hw_process_rxdesc_edma(struct 
+                       rxs->rs_status |= ATH9K_RXERR_DECRYPT;
+               } else if (rxsp->status11 & AR_MichaelErr) {
+                       rxs->rs_status |= ATH9K_RXERR_MIC;
+-              }
++              } else if (rxsp->status11 & AR_KeyMiss)
++                      rxs->rs_status |= ATH9K_RXERR_DECRYPT;
+       }
  
-+      if (rxsp->status11 & AR_KeyMiss)
-+              rxs->rs_keyix = ATH9K_RXKEYIX_INVALID;
-+
-       if ((rxsp->status11 & AR_RxFrameOK) == 0) {
-               if (rxsp->status11 & AR_CRCErr) {
-                       rxs->rs_status |= ATH9K_RXERR_CRC;
+       return 0;