Skip to content

Commit

Permalink
[PATCH] orinoco: disconnect the network device on reset errors
Browse files Browse the repository at this point in the history
Patch from Pavel Roskin

Index: linux-2.6/drivers/net/wireless/orinoco.c
===================================================================
  • Loading branch information
Christoph Hellwig authored and Jeff Garzik committed May 15, 2005
1 parent d0e3e87 commit 8551cb9
Showing 1 changed file with 12 additions and 8 deletions.
20 changes: 12 additions & 8 deletions drivers/net/wireless/orinoco.c
Original file line number Diff line number Diff line change
Expand Up @@ -1919,7 +1919,7 @@ static void orinoco_reset(struct net_device *dev)
{
struct orinoco_private *priv = netdev_priv(dev);
struct hermes *hw = &priv->hw;
int err = 0;
int err;
unsigned long flags;

if (orinoco_lock(priv, &flags) != 0)
Expand All @@ -1941,20 +1941,20 @@ static void orinoco_reset(struct net_device *dev)

orinoco_unlock(priv, &flags);

if (priv->hard_reset)
if (priv->hard_reset) {
err = (*priv->hard_reset)(priv);
if (err) {
printk(KERN_ERR "%s: orinoco_reset: Error %d "
"performing hard reset\n", dev->name, err);
/* FIXME: shutdown of some sort */
return;
if (err) {
printk(KERN_ERR "%s: orinoco_reset: Error %d "
"performing hard reset\n", dev->name, err);
goto disable;
}
}

err = orinoco_reinit_firmware(dev);
if (err) {
printk(KERN_ERR "%s: orinoco_reset: Error %d re-initializing firmware\n",
dev->name, err);
return;
goto disable;
}

spin_lock_irq(&priv->lock); /* This has to be called from user context */
Expand All @@ -1975,6 +1975,10 @@ static void orinoco_reset(struct net_device *dev)
spin_unlock_irq(&priv->lock);

return;
disable:
hermes_set_irqmask(hw, 0);
netif_device_detach(dev);
printk(KERN_ERR "%s: Device has been disabled!\n", dev->name);
}

/********************************************************************/
Expand Down

0 comments on commit 8551cb9

Please sign in to comment.