From f6e6583d82290db7083bfa89c13080c0f9636d91 Mon Sep 17 00:00:00 2001 From: David Kilroy Date: Sat, 22 Nov 2008 10:37:27 +0000 Subject: [PATCH] --- yaml --- r: 122335 b: refs/heads/master c: ac7cafd72261857278dff9f737e600b30088653b h: refs/heads/master i: 122333: b984c1706660e10feacc388b5910c86ccea6aa98 122331: 2e1a2ac58539cfd55be36d4718b0ec87404ef659 122327: 38f762d8aa518a6eadff12959bffe6efeceaebf8 122319: d78ea90acf20797eec4fc14a2ac4639a0ec785e7 122303: 656b83311aa9855f22d671ff1d7cf4d0dba1808f v: v3 --- [refs] | 2 +- .../net/wireless/orinoco/spectrum_cs.c | 21 ++++++++++++++++++- 2 files changed, 21 insertions(+), 2 deletions(-) diff --git a/[refs] b/[refs] index 0c96e6e871b3..f1f0d77db07f 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: 2cea7b261942009e90befbe41d998e2931547026 +refs/heads/master: ac7cafd72261857278dff9f737e600b30088653b diff --git a/trunk/drivers/net/wireless/orinoco/spectrum_cs.c b/trunk/drivers/net/wireless/orinoco/spectrum_cs.c index 0bae3dcf9d50..a2764764c1c0 100644 --- a/trunk/drivers/net/wireless/orinoco/spectrum_cs.c +++ b/trunk/drivers/net/wireless/orinoco/spectrum_cs.c @@ -450,10 +450,29 @@ spectrum_cs_resume(struct pcmcia_device *link) { struct net_device *dev = link->priv; struct orinoco_private *priv = netdev_priv(dev); + unsigned long flags; + int err; + + err = orinoco_reinit_firmware(dev); + if (err) { + printk(KERN_ERR "%s: Error %d re-initializing firmware\n", + dev->name, err); + return -EIO; + } + + spin_lock_irqsave(&priv->lock, flags); netif_device_attach(dev); priv->hw_unavailable--; - schedule_work(&priv->reset_work); + + if (priv->open && !priv->hw_unavailable) { + err = __orinoco_up(dev); + if (err) + printk(KERN_ERR "%s: Error %d restarting card\n", + dev->name, err); + } + + spin_unlock_irqrestore(&priv->lock, flags); return 0; }