Commit 22569400 authored by Janusz Dziedzic's avatar Janusz Dziedzic Committed by Kalle Valo

ath10k: handle TKIP MIC error correctly

We should check MIC error flag base on
rx_attention, to have consistent status
of MIC failure and FCS error.
Signed-off-by: default avatarJanusz Dziedzic <janusz.dziedzic@tieto.com>
Signed-off-by: default avatarKalle Valo <kvalo@qca.qualcomm.com>
parent 2b6a6a90
...@@ -1183,6 +1183,7 @@ struct htt_rx_info { ...@@ -1183,6 +1183,7 @@ struct htt_rx_info {
} rate; } rate;
bool fcs_err; bool fcs_err;
bool amsdu_more; bool amsdu_more;
bool mic_err;
}; };
struct ath10k_htt { struct ath10k_htt {
......
...@@ -838,6 +838,20 @@ static bool ath10k_htt_rx_has_fcs_err(struct sk_buff *skb) ...@@ -838,6 +838,20 @@ static bool ath10k_htt_rx_has_fcs_err(struct sk_buff *skb)
return false; return false;
} }
static bool ath10k_htt_rx_has_mic_err(struct sk_buff *skb)
{
struct htt_rx_desc *rxd;
u32 flags;
rxd = (void *)skb->data - sizeof(*rxd);
flags = __le32_to_cpu(rxd->attention.flags);
if (flags & RX_ATTENTION_FLAGS_TKIP_MIC_ERR)
return true;
return false;
}
static int ath10k_htt_rx_get_csum_state(struct sk_buff *skb) static int ath10k_htt_rx_get_csum_state(struct sk_buff *skb)
{ {
struct htt_rx_desc *rxd; struct htt_rx_desc *rxd;
...@@ -960,6 +974,7 @@ static void ath10k_htt_rx_handler(struct ath10k_htt *htt, ...@@ -960,6 +974,7 @@ static void ath10k_htt_rx_handler(struct ath10k_htt *htt,
info.skb = msdu_head; info.skb = msdu_head;
info.fcs_err = ath10k_htt_rx_has_fcs_err(msdu_head); info.fcs_err = ath10k_htt_rx_has_fcs_err(msdu_head);
info.mic_err = ath10k_htt_rx_has_mic_err(msdu_head);
info.signal = ATH10K_DEFAULT_NOISE_FLOOR; info.signal = ATH10K_DEFAULT_NOISE_FLOOR;
info.signal += rx->ppdu.combined_rssi; info.signal += rx->ppdu.combined_rssi;
......
...@@ -231,7 +231,7 @@ void ath10k_process_rx(struct ath10k *ar, struct htt_rx_info *info) ...@@ -231,7 +231,7 @@ void ath10k_process_rx(struct ath10k *ar, struct htt_rx_info *info)
~IEEE80211_FCTL_PROTECTED); ~IEEE80211_FCTL_PROTECTED);
} }
if (info->status == HTT_RX_IND_MPDU_STATUS_TKIP_MIC_ERR) if (info->mic_err)
status->flag |= RX_FLAG_MMIC_ERROR; status->flag |= RX_FLAG_MMIC_ERROR;
if (info->fcs_err) if (info->fcs_err)
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment