Commit ccc83b04 authored by Eliad Peller's avatar Eliad Peller Committed by John W. Linville
Browse files

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: default avatarEliad Peller <eliad@wizery.com>
Reviewed-by: default avatarLuciano Coelho <luciano.coelho@nokia.com>
Signed-off-by: default avatarLuciano Coelho <luciano.coelho@nokia.com>
parent 03107a4b
Loading
Loading
Loading
Loading
+2 −1
Original line number Diff line number Diff line
@@ -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)
+9 −0
Original line number Diff line number Diff line
@@ -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");