summaryrefslogtreecommitdiff
path: root/drivers/net/fec.c
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/net/fec.c')
-rw-r--r--drivers/net/fec.c4
1 files changed, 4 insertions, 0 deletions
diff --git a/drivers/net/fec.c b/drivers/net/fec.c
index e3ce06437e94..f58196019287 100644
--- a/drivers/net/fec.c
+++ b/drivers/net/fec.c
@@ -253,6 +253,7 @@ fec_enet_start_xmit(struct sk_buff *skb, struct net_device *dev)
if (!fep->link) {
/* Link is down or autonegotiation is in progress. */
+ netif_stop_queue(dev);
return NETDEV_TX_BUSY;
}
@@ -681,6 +682,7 @@ static void fec_enet_adjust_link(struct net_device *dev)
if (phy_dev->link) {
if (fep->full_duplex != phy_dev->duplex) {
fec_restart(dev, phy_dev->duplex);
+ netif_wake_queue(dev);
status_change = 1;
}
}
@@ -1418,6 +1420,8 @@ fec_stop(struct net_device *dev)
if (fep->ptimer_present)
fec_ptp_stop(fep->ptp_priv);
writel(FEC_DEFAULT_IMASK, fep->hwp + FEC_IMASK);
+
+ fep->link = 0;
}
static int __devinit