mirror of
https://mirrors.bfsu.edu.cn/git/linux.git
synced 2025-01-15 18:34:47 +08:00
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:
parent
03107a4b59
commit
ccc83b046c
@ -61,7 +61,8 @@
|
|||||||
WL1271_ACX_INTR_HW_AVAILABLE | \
|
WL1271_ACX_INTR_HW_AVAILABLE | \
|
||||||
WL1271_ACX_INTR_DATA)
|
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_EVENT_B | \
|
||||||
WL1271_ACX_INTR_HW_AVAILABLE | \
|
WL1271_ACX_INTR_HW_AVAILABLE | \
|
||||||
WL1271_ACX_INTR_DATA)
|
WL1271_ACX_INTR_DATA)
|
||||||
|
@ -529,6 +529,15 @@ static void wl1271_irq_work(struct work_struct *work)
|
|||||||
|
|
||||||
intr &= WL1271_INTR_MASK;
|
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) {
|
if (intr & WL1271_ACX_INTR_DATA) {
|
||||||
wl1271_debug(DEBUG_IRQ, "WL1271_ACX_INTR_DATA");
|
wl1271_debug(DEBUG_IRQ, "WL1271_ACX_INTR_DATA");
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user