Skip to content

Commit

Permalink
[PATCH] Orinoco: consolidate allocation code
Browse files Browse the repository at this point in the history
  
  Consolidate allocation of firmware buffers.  In the process, remove
  duplication of a workaround for an old symbol firmware bug, and fix a
  bug where we could retry the workaround, even if it already failed to
  help.
  
  Signed-off-by: David Gibson <hermes@gibson.dropbear.id.au>
  Signed-off-by: Jeff Garzik <jgarzik@pobox.com>
  • Loading branch information
David Gibson authored and Jeff Garzik committed May 13, 2005
1 parent d51d8b1 commit b24d458
Showing 1 changed file with 2 additions and 21 deletions.
23 changes: 2 additions & 21 deletions drivers/net/wireless/orinoco.c
Original file line number Diff line number Diff line change
Expand Up @@ -1418,7 +1418,7 @@ int orinoco_reinit_firmware(struct net_device *dev)
return err;

err = hermes_allocate(hw, priv->nicbuf_size, &priv->txfid);
if (err == -EIO) {
if (err == -EIO && priv->nicbuf_size > TX_NICBUF_SIZE_BUG) {
/* Try workaround for old Symbol firmware bug */
printk(KERN_WARNING "%s: firmware ALLOC bug detected "
"(old Symbol firmware?). Trying to work around... ",
Expand Down Expand Up @@ -2270,7 +2270,7 @@ static int orinoco_init(struct net_device *dev)
priv->nicbuf_size = IEEE802_11_FRAME_LEN + ETH_HLEN;

/* Initialize the firmware */
err = hermes_init(hw);
err = orinoco_reinit_firmware(dev);
if (err != 0) {
printk(KERN_ERR "%s: failed to initialize firmware (err = %d)\n",
dev->name, err);
Expand Down Expand Up @@ -2409,25 +2409,6 @@ static int orinoco_init(struct net_device *dev)
priv->wep_on = 0;
priv->tx_key = 0;

err = hermes_allocate(hw, priv->nicbuf_size, &priv->txfid);
if (err == -EIO) {
/* Try workaround for old Symbol firmware bug */
printk(KERN_WARNING "%s: firmware ALLOC bug detected "
"(old Symbol firmware?). Trying to work around... ",
dev->name);

priv->nicbuf_size = TX_NICBUF_SIZE_BUG;
err = hermes_allocate(hw, priv->nicbuf_size, &priv->txfid);
if (err)
printk("failed!\n");
else
printk("ok.\n");
}
if (err) {
printk("%s: Error %d allocating Tx buffer\n", dev->name, err);
goto out;
}

/* Make the hardware available, as long as it hasn't been
* removed elsewhere (e.g. by PCMCIA hot unplug) */
spin_lock_irq(&priv->lock);
Expand Down

0 comments on commit b24d458

Please sign in to comment.