diff options
Diffstat (limited to 'drivers/net/ethernet/broadcom/b44.c')
| -rw-r--r-- | drivers/net/ethernet/broadcom/b44.c | 14 |
1 files changed, 13 insertions, 1 deletions
diff --git a/drivers/net/ethernet/broadcom/b44.c b/drivers/net/ethernet/broadcom/b44.c index 1f7b5aa114fa..8a7bf7dad898 100644 --- a/drivers/net/ethernet/broadcom/b44.c +++ b/drivers/net/ethernet/broadcom/b44.c | |||
| @@ -1484,6 +1484,10 @@ static int b44_open(struct net_device *dev) | |||
| 1484 | add_timer(&bp->timer); | 1484 | add_timer(&bp->timer); |
| 1485 | 1485 | ||
| 1486 | b44_enable_ints(bp); | 1486 | b44_enable_ints(bp); |
| 1487 | |||
| 1488 | if (bp->flags & B44_FLAG_EXTERNAL_PHY) | ||
| 1489 | phy_start(bp->phydev); | ||
| 1490 | |||
| 1487 | netif_start_queue(dev); | 1491 | netif_start_queue(dev); |
| 1488 | out: | 1492 | out: |
| 1489 | return err; | 1493 | return err; |
| @@ -1646,6 +1650,9 @@ static int b44_close(struct net_device *dev) | |||
| 1646 | 1650 | ||
| 1647 | netif_stop_queue(dev); | 1651 | netif_stop_queue(dev); |
| 1648 | 1652 | ||
| 1653 | if (bp->flags & B44_FLAG_EXTERNAL_PHY) | ||
| 1654 | phy_stop(bp->phydev); | ||
| 1655 | |||
| 1649 | napi_disable(&bp->napi); | 1656 | napi_disable(&bp->napi); |
| 1650 | 1657 | ||
| 1651 | del_timer_sync(&bp->timer); | 1658 | del_timer_sync(&bp->timer); |
| @@ -2222,7 +2229,12 @@ static void b44_adjust_link(struct net_device *dev) | |||
| 2222 | } | 2229 | } |
| 2223 | 2230 | ||
| 2224 | if (status_changed) { | 2231 | if (status_changed) { |
| 2225 | b44_check_phy(bp); | 2232 | u32 val = br32(bp, B44_TX_CTRL); |
| 2233 | if (bp->flags & B44_FLAG_FULL_DUPLEX) | ||
| 2234 | val |= TX_CTRL_DUPLEX; | ||
| 2235 | else | ||
| 2236 | val &= ~TX_CTRL_DUPLEX; | ||
| 2237 | bw32(bp, B44_TX_CTRL, val); | ||
| 2226 | phy_print_status(phydev); | 2238 | phy_print_status(phydev); |
| 2227 | } | 2239 | } |
| 2228 | } | 2240 | } |
