mirror of
https://github.com/torvalds/linux.git
synced 2024-11-05 11:32:04 +00:00
zd1211rw: detect stalled beacon interrupt faster
As USB_INT_ID_RETRY_FAILED can override USB_INT_ID_REGS, beacon interrupt (CR_INTERRUPT) might be lost. Problem is that when device trigger CR_INTERRUPT it disables HW interrupt. Now if USB_INT_ID_REGS with CR_INTERRUPT gets lost, beacon interrupt stays disabled until beacon watchdog notices the stall. This happen very often on heavy TX. Improve watchdog to trigger earlier, after three missing beacon interrupts. Signed-off-by: Jussi Kivilinna <jussi.kivilinna@mbnet.fi> Signed-off-by: John W. Linville <linville@tuxdriver.com>
This commit is contained in:
parent
dde4673b8d
commit
55f7782e14
@ -1429,7 +1429,8 @@ static void beacon_watchdog_handler(struct work_struct *work)
|
|||||||
spin_lock_irq(&mac->lock);
|
spin_lock_irq(&mac->lock);
|
||||||
interval = mac->beacon.interval;
|
interval = mac->beacon.interval;
|
||||||
period = mac->beacon.period;
|
period = mac->beacon.period;
|
||||||
timeout = mac->beacon.last_update + msecs_to_jiffies(interval) + HZ;
|
timeout = mac->beacon.last_update +
|
||||||
|
msecs_to_jiffies(interval * 1024 / 1000) * 3;
|
||||||
spin_unlock_irq(&mac->lock);
|
spin_unlock_irq(&mac->lock);
|
||||||
|
|
||||||
if (interval > 0 && time_is_before_jiffies(timeout)) {
|
if (interval > 0 && time_is_before_jiffies(timeout)) {
|
||||||
|
Loading…
Reference in New Issue
Block a user