diff options
Diffstat (limited to 'drivers')
-rw-r--r-- | drivers/net/fec.c | 18 |
1 files changed, 8 insertions, 10 deletions
diff --git a/drivers/net/fec.c b/drivers/net/fec.c index 54d6f86d9f6d..63eaf5de2300 100644 --- a/drivers/net/fec.c +++ b/drivers/net/fec.c | |||
@@ -1489,6 +1489,8 @@ fec_enet_open(struct net_device *dev) | |||
1489 | fep->sequence_done = 0; | 1489 | fep->sequence_done = 0; |
1490 | fep->link = 0; | 1490 | fep->link = 0; |
1491 | 1491 | ||
1492 | fec_restart(dev, 1); | ||
1493 | |||
1492 | if (fep->phy) { | 1494 | if (fep->phy) { |
1493 | mii_do_cmd(dev, fep->phy->ack_int); | 1495 | mii_do_cmd(dev, fep->phy->ack_int); |
1494 | mii_do_cmd(dev, fep->phy->config); | 1496 | mii_do_cmd(dev, fep->phy->config); |
@@ -1505,18 +1507,14 @@ fec_enet_open(struct net_device *dev) | |||
1505 | schedule(); | 1507 | schedule(); |
1506 | 1508 | ||
1507 | mii_do_cmd(dev, fep->phy->startup); | 1509 | mii_do_cmd(dev, fep->phy->startup); |
1508 | |||
1509 | /* Set the initial link state to true. A lot of hardware | ||
1510 | * based on this device does not implement a PHY interrupt, | ||
1511 | * so we are never notified of link change. | ||
1512 | */ | ||
1513 | fep->link = 1; | ||
1514 | } else { | ||
1515 | fep->link = 1; /* lets just try it and see */ | ||
1516 | /* no phy, go full duplex, it's most likely a hub chip */ | ||
1517 | fec_restart(dev, 1); | ||
1518 | } | 1510 | } |
1519 | 1511 | ||
1512 | /* Set the initial link state to true. A lot of hardware | ||
1513 | * based on this device does not implement a PHY interrupt, | ||
1514 | * so we are never notified of link change. | ||
1515 | */ | ||
1516 | fep->link = 1; | ||
1517 | |||
1520 | netif_start_queue(dev); | 1518 | netif_start_queue(dev); |
1521 | fep->opened = 1; | 1519 | fep->opened = 1; |
1522 | return 0; | 1520 | return 0; |