wl1271: handle HW watchdog interrupt
unmask the WL1271_ACX_INTR_WATCHDOG interrupt. when getting it - enqueue a recovery work and bail out. Signed-off-by: Eliad Peller <eliad@wizery.com> Reviewed-by: Luciano Coelho <luciano.coelho@nokia.com> Signed-off-by: Luciano Coelho <luciano.coelho@nokia.com>
This commit is contained in:
Родитель
03107a4b59
Коммит
ccc83b046c
|
@ -61,7 +61,8 @@
|
|||
WL1271_ACX_INTR_HW_AVAILABLE | \
|
||||
WL1271_ACX_INTR_DATA)
|
||||
|
||||
#define WL1271_INTR_MASK (WL1271_ACX_INTR_EVENT_A | \
|
||||
#define WL1271_INTR_MASK (WL1271_ACX_INTR_WATCHDOG | \
|
||||
WL1271_ACX_INTR_EVENT_A | \
|
||||
WL1271_ACX_INTR_EVENT_B | \
|
||||
WL1271_ACX_INTR_HW_AVAILABLE | \
|
||||
WL1271_ACX_INTR_DATA)
|
||||
|
|
|
@ -529,6 +529,15 @@ static void wl1271_irq_work(struct work_struct *work)
|
|||
|
||||
intr &= WL1271_INTR_MASK;
|
||||
|
||||
if (unlikely(intr & WL1271_ACX_INTR_WATCHDOG)) {
|
||||
wl1271_error("watchdog interrupt received! "
|
||||
"starting recovery.");
|
||||
ieee80211_queue_work(wl->hw, &wl->recovery_work);
|
||||
|
||||
/* restarting the chip. ignore any other interrupt. */
|
||||
goto out;
|
||||
}
|
||||
|
||||
if (intr & WL1271_ACX_INTR_DATA) {
|
||||
wl1271_debug(DEBUG_IRQ, "WL1271_ACX_INTR_DATA");
|
||||
|
||||
|
|
Загрузка…
Ссылка в новой задаче