Bluetooth: Process interrupt in main thread of btmrvl driver as well
[deliverable/linux.git] / drivers / bluetooth / btmrvl_main.c
index ee37ef0caee269c0383fd9336ea9cf0d665ddba0..0d32ec82e9bfa5a72e847e43202830f91b2c26d0 100644 (file)
@@ -502,14 +502,17 @@ static int btmrvl_service_main_thread(void *data)
                spin_lock_irqsave(&priv->driver_lock, flags);
                if (adapter->int_count) {
                        adapter->int_count = 0;
+                       spin_unlock_irqrestore(&priv->driver_lock, flags);
+                       priv->hw_process_int_status(priv);
                } else if (adapter->ps_state == PS_SLEEP &&
                                        !skb_queue_empty(&adapter->tx_queue)) {
                        spin_unlock_irqrestore(&priv->driver_lock, flags);
                        adapter->wakeup_tries++;
                        priv->hw_wakeup_firmware(priv);
                        continue;
+               } else {
+                       spin_unlock_irqrestore(&priv->driver_lock, flags);
                }
-               spin_unlock_irqrestore(&priv->driver_lock, flags);
 
                if (adapter->ps_state == PS_SLEEP)
                        continue;
This page took 0.024414 seconds and 5 git commands to generate.