| Index: chromeos/compat-wireless/drivers/net/b44.c
|
| diff --git a/chromeos/compat-wireless/drivers/net/b44.c b/chromeos/compat-wireless/drivers/net/b44.c
|
| index 739610967ca041b4a2642e2795d2b441e76e241e..86fb2855d724708d62a8a25460487e9a17099ffe 100644
|
| --- a/chromeos/compat-wireless/drivers/net/b44.c
|
| +++ b/chromeos/compat-wireless/drivers/net/b44.c
|
| @@ -848,6 +848,15 @@ static int b44_poll(struct napi_struct *napi, int budget)
|
| b44_tx(bp);
|
| /* spin_unlock(&bp->tx_lock); */
|
| }
|
| + if (bp->istat & ISTAT_RFO) { /* fast recovery, in ~20msec */
|
| + bp->istat &= ~ISTAT_RFO;
|
| + b44_disable_ints(bp);
|
| + ssb_device_enable(bp->sdev, 0); /* resets ISTAT_RFO */
|
| + b44_init_rings(bp);
|
| + b44_init_hw(bp, B44_FULL_RESET_SKIP_PHY);
|
| + netif_wake_queue(bp->dev);
|
| + }
|
| +
|
| spin_unlock_irqrestore(&bp->lock, flags);
|
|
|
| work_done = 0;
|
| @@ -2165,8 +2174,6 @@ static int __devinit b44_init_one(struct ssb_device *sdev,
|
| dev->irq = sdev->irq;
|
| SET_ETHTOOL_OPS(dev, &b44_ethtool_ops);
|
|
|
| - netif_carrier_off(dev);
|
| -
|
| err = ssb_bus_powerup(sdev->bus, 0);
|
| if (err) {
|
| dev_err(sdev->dev,
|
| @@ -2208,6 +2215,8 @@ static int __devinit b44_init_one(struct ssb_device *sdev,
|
| goto err_out_powerdown;
|
| }
|
|
|
| + netif_carrier_off(dev);
|
| +
|
| ssb_set_drvdata(sdev, dev);
|
|
|
| /* Chip reset provides power to the b44 MAC & PCI cores, which
|
|
|