X-Git-Url: http://pileus.org/git/?a=blobdiff_plain;f=drivers%2Fbluetooth%2Fbtmrvl_main.c;h=0d32ec82e9bfa5a72e847e43202830f91b2c26d0;hb=fc1caf6eafb30ea185720e29f7f5eccca61ecd60;hp=ee37ef0caee269c0383fd9336ea9cf0d665ddba0;hpb=f13771187b9423b824f32518319f6da85d819003;p=~andy%2Flinux diff --git a/drivers/bluetooth/btmrvl_main.c b/drivers/bluetooth/btmrvl_main.c index ee37ef0caee..0d32ec82e9b 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) 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;