提交 ccc83b04 编写于 作者: E Eliad Peller 提交者: John W. Linville

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: NEliad Peller <eliad@wizery.com>
Reviewed-by: NLuciano Coelho <luciano.coelho@nokia.com>
Signed-off-by: NLuciano Coelho <luciano.coelho@nokia.com>
上级 03107a4b
...@@ -61,7 +61,8 @@ ...@@ -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) ...@@ -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");
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册