Skip to content

Commit

Permalink
orinoco: Resume spectrum_cs in the same way as orinoco_cs
Browse files Browse the repository at this point in the history
Retrieval of external firmware has been resolved, and should work with
the standard orinoco resume algorithm.

This fixes an issue where priv->hw_unavailable indicates the card is
ready when firmware has not been loaded.

Signed-off by: David Kilroy <kilroyd@googlemail.com>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
  • Loading branch information
David Kilroy authored and John W. Linville committed Nov 26, 2008
1 parent 2cea7b2 commit ac7cafd
Showing 1 changed file with 20 additions and 1 deletion.
21 changes: 20 additions & 1 deletion drivers/net/wireless/orinoco/spectrum_cs.c
Original file line number Diff line number Diff line change
Expand Up @@ -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;
}
Expand Down

0 comments on commit ac7cafd

Please sign in to comment.