diff options
Diffstat (limited to 'drivers/net/b44.c')
| -rw-r--r-- | drivers/net/b44.c | 13 |
1 files changed, 9 insertions, 4 deletions
diff --git a/drivers/net/b44.c b/drivers/net/b44.c index c38512ebcea6..dc5f051005fa 100644 --- a/drivers/net/b44.c +++ b/drivers/net/b44.c | |||
| @@ -1264,8 +1264,14 @@ static void b44_clear_stats(struct b44 *bp) | |||
| 1264 | static void b44_chip_reset(struct b44 *bp, int reset_kind) | 1264 | static void b44_chip_reset(struct b44 *bp, int reset_kind) |
| 1265 | { | 1265 | { |
| 1266 | struct ssb_device *sdev = bp->sdev; | 1266 | struct ssb_device *sdev = bp->sdev; |
| 1267 | bool was_enabled; | ||
| 1267 | 1268 | ||
| 1268 | if (ssb_device_is_enabled(bp->sdev)) { | 1269 | was_enabled = ssb_device_is_enabled(bp->sdev); |
| 1270 | |||
| 1271 | ssb_device_enable(bp->sdev, 0); | ||
| 1272 | ssb_pcicore_dev_irqvecs_enable(&sdev->bus->pcicore, sdev); | ||
| 1273 | |||
| 1274 | if (was_enabled) { | ||
| 1269 | bw32(bp, B44_RCV_LAZY, 0); | 1275 | bw32(bp, B44_RCV_LAZY, 0); |
| 1270 | bw32(bp, B44_ENET_CTRL, ENET_CTRL_DISABLE); | 1276 | bw32(bp, B44_ENET_CTRL, ENET_CTRL_DISABLE); |
| 1271 | b44_wait_bit(bp, B44_ENET_CTRL, ENET_CTRL_DISABLE, 200, 1); | 1277 | b44_wait_bit(bp, B44_ENET_CTRL, ENET_CTRL_DISABLE, 200, 1); |
| @@ -1277,10 +1283,8 @@ static void b44_chip_reset(struct b44 *bp, int reset_kind) | |||
| 1277 | } | 1283 | } |
| 1278 | bw32(bp, B44_DMARX_CTRL, 0); | 1284 | bw32(bp, B44_DMARX_CTRL, 0); |
| 1279 | bp->rx_prod = bp->rx_cons = 0; | 1285 | bp->rx_prod = bp->rx_cons = 0; |
| 1280 | } else | 1286 | } |
| 1281 | ssb_pcicore_dev_irqvecs_enable(&sdev->bus->pcicore, sdev); | ||
| 1282 | 1287 | ||
| 1283 | ssb_device_enable(bp->sdev, 0); | ||
| 1284 | b44_clear_stats(bp); | 1288 | b44_clear_stats(bp); |
| 1285 | 1289 | ||
| 1286 | /* | 1290 | /* |
| @@ -2236,6 +2240,7 @@ static void __devexit b44_remove_one(struct ssb_device *sdev) | |||
| 2236 | struct net_device *dev = ssb_get_drvdata(sdev); | 2240 | struct net_device *dev = ssb_get_drvdata(sdev); |
| 2237 | 2241 | ||
| 2238 | unregister_netdev(dev); | 2242 | unregister_netdev(dev); |
| 2243 | ssb_device_disable(sdev, 0); | ||
| 2239 | ssb_bus_may_powerdown(sdev->bus); | 2244 | ssb_bus_may_powerdown(sdev->bus); |
| 2240 | free_netdev(dev); | 2245 | free_netdev(dev); |
| 2241 | ssb_pcihost_set_power_state(sdev, PCI_D3hot); | 2246 | ssb_pcihost_set_power_state(sdev, PCI_D3hot); |
