diff options
Diffstat (limited to 'drivers/usb/host/ehci.h')
| -rw-r--r-- | drivers/usb/host/ehci.h | 12 | 
1 files changed, 5 insertions, 7 deletions
diff --git a/drivers/usb/host/ehci.h b/drivers/usb/host/ehci.h index b11798d17ae..c7d4b5a06bd 100644 --- a/drivers/usb/host/ehci.h +++ b/drivers/usb/host/ehci.h @@ -183,16 +183,14 @@ timer_action (struct ehci_hcd *ehci, enum ehci_timer_action action)  	 * the async ring; just the I/O watchdog.  Note that if a  	 * SHRINK were pending, OFF would never be requested.  	 */ -	enum ehci_timer_action oldactions = ehci->actions; +	if (timer_pending(&ehci->watchdog) +			&& ((BIT(TIMER_ASYNC_SHRINK) | BIT(TIMER_ASYNC_OFF)) +				& ehci->actions)) +		return;  	if (!test_and_set_bit (action, &ehci->actions)) {  		unsigned long t; -		if (timer_pending(&ehci->watchdog) -			&& ((BIT(TIMER_ASYNC_SHRINK) | BIT(TIMER_ASYNC_OFF)) -				& oldactions)) -			return; -  		switch (action) {  		case TIMER_IO_WATCHDOG:  			t = EHCI_IO_JIFFIES; @@ -208,7 +206,7 @@ timer_action (struct ehci_hcd *ehci, enum ehci_timer_action action)  			t = DIV_ROUND_UP(EHCI_SHRINK_FRAMES * HZ, 1000) + 1;  			break;  		} -		mod_timer(&ehci->watchdog, round_jiffies(t + jiffies)); +		mod_timer(&ehci->watchdog, t + jiffies);  	}  }  |