wil6210: fix L2 RX status handling

L2 RX status errors should not be treated as a bitmap and the actual
error values should be checked.
Print L2 errors as wil_err_ratelimited for easier debugging
when such errors occurs.

Signed-off-by: Maya Erez <merez@codeaurora.org>
Signed-off-by: Kalle Valo <kvalo@codeaurora.org>
This commit is contained in:
Maya Erez 2018-10-31 10:52:19 +02:00 committed by Kalle Valo
parent 84ec040d0f
commit 04de15010a
1 changed files with 12 additions and 11 deletions

View File

@ -839,23 +839,24 @@ static int wil_rx_error_check_edma(struct wil6210_priv *wil,
wil_dbg_txrx(wil, "L2 RX error, l2_rx_status=0x%x\n",
l2_rx_status);
/* Due to HW issue, KEY error will trigger a MIC error */
if (l2_rx_status & WIL_RX_EDMA_ERROR_MIC) {
wil_dbg_txrx(wil,
"L2 MIC/KEY error, dropping packet\n");
if (l2_rx_status == WIL_RX_EDMA_ERROR_MIC) {
wil_err_ratelimited(wil,
"L2 MIC/KEY error, dropping packet\n");
stats->rx_mic_error++;
}
if (l2_rx_status & WIL_RX_EDMA_ERROR_KEY) {
wil_dbg_txrx(wil, "L2 KEY error, dropping packet\n");
if (l2_rx_status == WIL_RX_EDMA_ERROR_KEY) {
wil_err_ratelimited(wil,
"L2 KEY error, dropping packet\n");
stats->rx_key_error++;
}
if (l2_rx_status & WIL_RX_EDMA_ERROR_REPLAY) {
wil_dbg_txrx(wil,
"L2 REPLAY error, dropping packet\n");
if (l2_rx_status == WIL_RX_EDMA_ERROR_REPLAY) {
wil_err_ratelimited(wil,
"L2 REPLAY error, dropping packet\n");
stats->rx_replay++;
}
if (l2_rx_status & WIL_RX_EDMA_ERROR_AMSDU) {
wil_dbg_txrx(wil,
"L2 AMSDU error, dropping packet\n");
if (l2_rx_status == WIL_RX_EDMA_ERROR_AMSDU) {
wil_err_ratelimited(wil,
"L2 AMSDU error, dropping packet\n");
stats->rx_amsdu_error++;
}
return -EFAULT;