summaryrefslogtreecommitdiffstats
path: root/drivers/net/wireless/libertas/main.c
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/net/wireless/libertas/main.c')
-rw-r--r--drivers/net/wireless/libertas/main.c19
1 files changed, 9 insertions, 10 deletions
diff --git a/drivers/net/wireless/libertas/main.c b/drivers/net/wireless/libertas/main.c
index f16c93ba6ef..2797149649c 100644
--- a/drivers/net/wireless/libertas/main.c
+++ b/drivers/net/wireless/libertas/main.c
@@ -1408,23 +1408,22 @@ out:
* @param dev A pointer to net_device structure
* @return n/a
*/
-void lbs_interrupt(struct net_device *dev)
+void lbs_interrupt(struct lbs_private *priv)
{
- struct lbs_private *priv = dev->priv;
-
lbs_deb_enter(LBS_DEB_THREAD);
- lbs_deb_thread("lbs_interrupt: intcounter=%d\n",
- priv->intcounter);
+ lbs_deb_thread("lbs_interrupt: intcounter=%d\n", priv->intcounter);
+
+ if (spin_trylock(&priv->driver_lock)) {
+ spin_unlock(&priv->driver_lock);
+ printk(KERN_CRIT "%s called without driver_lock held\n", __func__);
+ WARN_ON(1);
+ }
priv->intcounter++;
- if (priv->psstate == PS_STATE_SLEEP) {
+ if (priv->psstate == PS_STATE_SLEEP)
priv->psstate = PS_STATE_AWAKE;
- netif_wake_queue(dev);
- if (priv->mesh_dev)
- netif_wake_queue(priv->mesh_dev);
- }
wake_up_interruptible(&priv->waitq);