OSDN Git Service

wil6210: ratelimit errors in TX/RX interrupts
authorLior David <qca_liord@qca.qualcomm.com>
Mon, 28 Aug 2017 19:18:41 +0000 (22:18 +0300)
committerKalle Valo <kvalo@qca.qualcomm.com>
Thu, 31 Aug 2017 12:19:26 +0000 (15:19 +0300)
Sometimes there is a firmware crash but the hardware
is not fully stopped and continue to send TX/RX interrupts.
This can cause an overload of messages which can bring the
host down. Add ratelimit to these error messages to fix this.

Signed-off-by: Lior David <qca_liord@qca.qualcomm.com>
Signed-off-by: Maya Erez <qca_merez@qca.qualcomm.com>
Signed-off-by: Kalle Valo <kvalo@qca.qualcomm.com>
drivers/net/wireless/ath/wil6210/interrupt.c

index cad8a95..59def4f 100644 (file)
@@ -244,7 +244,7 @@ static irqreturn_t wil6210_irq_rx(int irq, void *cookie)
        wil_dbg_irq(wil, "ISR RX 0x%08x\n", isr);
 
        if (unlikely(!isr)) {
-               wil_err(wil, "spurious IRQ: RX\n");
+               wil_err_ratelimited(wil, "spurious IRQ: RX\n");
                return IRQ_NONE;
        }
 
@@ -269,11 +269,12 @@ static irqreturn_t wil6210_irq_rx(int irq, void *cookie)
                                need_unmask = false;
                                napi_schedule(&wil->napi_rx);
                        } else {
-                               wil_err(wil,
+                               wil_err_ratelimited(
+                                       wil,
                                        "Got Rx interrupt while stopping interface\n");
                        }
                } else {
-                       wil_err(wil, "Got Rx interrupt while in reset\n");
+                       wil_err_ratelimited(wil, "Got Rx interrupt while in reset\n");
                }
        }
 
@@ -302,7 +303,7 @@ static irqreturn_t wil6210_irq_tx(int irq, void *cookie)
        wil_dbg_irq(wil, "ISR TX 0x%08x\n", isr);
 
        if (unlikely(!isr)) {
-               wil_err(wil, "spurious IRQ: TX\n");
+               wil_err_ratelimited(wil, "spurious IRQ: TX\n");
                return IRQ_NONE;
        }
 
@@ -318,12 +319,13 @@ static irqreturn_t wil6210_irq_tx(int irq, void *cookie)
                        need_unmask = false;
                        napi_schedule(&wil->napi_tx);
                } else {
-                       wil_err(wil, "Got Tx interrupt while in reset\n");
+                       wil_err_ratelimited(wil, "Got Tx interrupt while in reset\n");
                }
        }
 
        if (unlikely(isr))
-               wil_err(wil, "un-handled TX ISR bits 0x%08x\n", isr);
+               wil_err_ratelimited(wil, "un-handled TX ISR bits 0x%08x\n",
+                                   isr);
 
        /* Tx IRQ will be enabled when NAPI processing finished */