diff options
Diffstat (limited to 'drivers/bluetooth/btmrvl_main.c')
-rw-r--r-- | drivers/bluetooth/btmrvl_main.c | 5 |
1 files changed, 4 insertions, 1 deletions
diff --git a/drivers/bluetooth/btmrvl_main.c b/drivers/bluetooth/btmrvl_main.c index ee37ef0caee2..0d32ec82e9bf 100644 --- a/drivers/bluetooth/btmrvl_main.c +++ b/drivers/bluetooth/btmrvl_main.c | |||
@@ -502,14 +502,17 @@ static int btmrvl_service_main_thread(void *data) | |||
502 | spin_lock_irqsave(&priv->driver_lock, flags); | 502 | spin_lock_irqsave(&priv->driver_lock, flags); |
503 | if (adapter->int_count) { | 503 | if (adapter->int_count) { |
504 | adapter->int_count = 0; | 504 | adapter->int_count = 0; |
505 | spin_unlock_irqrestore(&priv->driver_lock, flags); | ||
506 | priv->hw_process_int_status(priv); | ||
505 | } else if (adapter->ps_state == PS_SLEEP && | 507 | } else if (adapter->ps_state == PS_SLEEP && |
506 | !skb_queue_empty(&adapter->tx_queue)) { | 508 | !skb_queue_empty(&adapter->tx_queue)) { |
507 | spin_unlock_irqrestore(&priv->driver_lock, flags); | 509 | spin_unlock_irqrestore(&priv->driver_lock, flags); |
508 | adapter->wakeup_tries++; | 510 | adapter->wakeup_tries++; |
509 | priv->hw_wakeup_firmware(priv); | 511 | priv->hw_wakeup_firmware(priv); |
510 | continue; | 512 | continue; |
513 | } else { | ||
514 | spin_unlock_irqrestore(&priv->driver_lock, flags); | ||
511 | } | 515 | } |
512 | spin_unlock_irqrestore(&priv->driver_lock, flags); | ||
513 | 516 | ||
514 | if (adapter->ps_state == PS_SLEEP) | 517 | if (adapter->ps_state == PS_SLEEP) |
515 | continue; | 518 | continue; |