OSDN Git Service

ath10k: add report MIC error for sdio chip
authorWen Gong <wgong@codeaurora.org>
Mon, 3 Jun 2019 15:12:21 +0000 (18:12 +0300)
committerKalle Valo <kvalo@codeaurora.org>
Tue, 25 Jun 2019 13:15:35 +0000 (16:15 +0300)
Firmware will report flag with HTT_RX_IND_MPDU_STATUS_TKIP_MIC_ERR
if MIC error, the flag will be used in mac80211.

ieee80211_rx_h_michael_mic_verify will check the flag and start TKIP
countermeasures.

Now countermeasure tests pass both with WPA only and WPA2/WPA mixed
mode.

Tested with QCA6174 SDIO with firmware
WLAN.RMH.4.4.1-00007-QCARMSWP-1.

Signed-off-by: Wen Gong <wgong@codeaurora.org>
Signed-off-by: Kalle Valo <kvalo@codeaurora.org>
drivers/net/wireless/ath/ath10k/htt_rx.c

index e6d3015..bdbc32b 100644 (file)
@@ -2184,7 +2184,9 @@ static bool ath10k_htt_rx_proc_rx_ind_hl(struct ath10k_htt *htt,
                            num_mpdu_ranges);
 
        if (mpdu_ranges->mpdu_range_status !=
-           HTT_RX_IND_MPDU_STATUS_OK) {
+           HTT_RX_IND_MPDU_STATUS_OK &&
+           mpdu_ranges->mpdu_range_status !=
+           HTT_RX_IND_MPDU_STATUS_TKIP_MIC_ERR) {
                ath10k_warn(ar, "MPDU range status: %d\n",
                            mpdu_ranges->mpdu_range_status);
                goto err;
@@ -2258,6 +2260,9 @@ static bool ath10k_htt_rx_proc_rx_ind_hl(struct ath10k_htt *htt,
                rx_status->flag &= ~RX_FLAG_IV_STRIPPED &
                                   ~RX_FLAG_MMIC_STRIPPED;
 
+       if (mpdu_ranges->mpdu_range_status == HTT_RX_IND_MPDU_STATUS_TKIP_MIC_ERR)
+               rx_status->flag |= RX_FLAG_MMIC_ERROR;
+
        ieee80211_rx_ni(ar->hw, skb);
 
        /* We have delivered the skb to the upper layers (mac80211) so we