Changeset 22826


Ignore:
Timestamp:
2010-08-28T18:30:40+02:00 (7 years ago)
Author:
nbd
Message:

ath9k: merge mic failure fix changes from r22825

File:
1 edited

Legend:

Unmodified
Added
Removed
  • branches/backfire/package/mac80211/patches/570-ath9k_mic_failure_fix.patch

    r22796 r22826  
    4545--- a/drivers/net/wireless/ath/ath9k/recv.c 
    4646+++ b/drivers/net/wireless/ath/ath9k/recv.c 
    47 @@ -870,15 +870,19 @@ static bool ath9k_rx_accept(struct ath_c 
     47@@ -870,15 +870,18 @@ static bool ath9k_rx_accept(struct ath_c 
    4848                if (rx_stats->rs_status & ATH9K_RXERR_DECRYPT) { 
    4949                        *decrypt_error = true; 
     
    5959+                       /* 
    6060+                        * The MIC error bit is only valid if the frame 
    61 +                        * is not a control frame, and it was decrypted using 
    62 +                        * a TKIP key. 
     61+                        * is not a control frame or fragment, and it was 
     62+                        * decrypted using a valid TKIP key. 
    6363+                        */ 
    6464+                       if (!ieee80211_is_ctl(fc) && 
    65 +                           rx_stats->rs_keyix != ATH9K_RXKEYIX_INVALID && 
    66 +                           test_bit(rx_stats->rs_keyix, common->tkip_keymap)) { 
     65+                           !ieee80211_has_morefrags(fc) && 
     66+                           !(le16_to_cpu(hdr->seq_ctrl) & IEEE80211_SCTL_FRAG) && 
     67+                           test_bit(rx_stats->rs_keyix, common->tkip_keymap)) 
    6768                                rxs->flag |= RX_FLAG_MMIC_ERROR; 
    68 +                       } else { 
     69+                       else 
    6970+                               rx_stats->rs_status &= ~ATH9K_RXERR_MIC; 
    70 +                               *decrypt_error = true; 
    71 +                       } 
    7271                } 
    7372                /* 
    7473                 * Reject error frames with the exception of 
     74--- a/drivers/net/wireless/ath/ath9k/mac.c 
     75+++ b/drivers/net/wireless/ath/ath9k/mac.c 
     76@@ -711,7 +711,8 @@ int ath9k_hw_rxprocdesc(struct ath_hw *a 
     77                        rs->rs_phyerr = phyerr; 
     78                } else if (ads.ds_rxstatus8 & AR_DecryptCRCErr) 
     79                        rs->rs_status |= ATH9K_RXERR_DECRYPT; 
     80-               else if (ads.ds_rxstatus8 & AR_MichaelErr) 
     81+               else if ((ads.ds_rxstatus8 & AR_MichaelErr) && 
     82+                        rs->rs_keyix != ATH9K_RXKEYIX_INVALID) 
     83                        rs->rs_status |= ATH9K_RXERR_MIC; 
     84                else if (ads.ds_rxstatus8 & AR_KeyMiss) 
     85                        rs->rs_status |= ATH9K_RXERR_DECRYPT; 
Note: See TracChangeset for help on using the changeset viewer.