aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/net/fec.c
diff options
context:
space:
mode:
authorPhilippe De Muyter <phdm@macqel.be>2006-06-26 23:05:33 -0400
committerLinus Torvalds <torvalds@g5.osdl.org>2006-06-27 21:26:37 -0400
commit677177c5319f7079c22d04926c23b31166d7d405 (patch)
tree52fcf3e4c656dcbc6b2a1b0856ad8aaffb084f40 /drivers/net/fec.c
parent67bdd9842430f946213d0482862aae1ed8fd3ad0 (diff)
[PATCH] m68knommu: avoid fec driver hang when link disappears
Avoid requesting a `Graceful Transmit Stop' when link has disappeared, because that request cannot complete without link. Signed-off-by: Greg Ungerer <gerg@uclinux.org> Signed-off-by: Linus Torvalds <torvalds@osdl.org>
Diffstat (limited to 'drivers/net/fec.c')
-rw-r--r--drivers/net/fec.c15
1 files changed, 11 insertions, 4 deletions
diff --git a/drivers/net/fec.c b/drivers/net/fec.c
index bd6983d1afba..16fc12fe933c 100644
--- a/drivers/net/fec.c
+++ b/drivers/net/fec.c
@@ -22,7 +22,7 @@
22 * Copyright (c) 2001-2005 Greg Ungerer (gerg@snapgear.com) 22 * Copyright (c) 2001-2005 Greg Ungerer (gerg@snapgear.com)
23 * 23 *
24 * Bug fixes and cleanup by Philippe De Muyter (phdm@macqel.be) 24 * Bug fixes and cleanup by Philippe De Muyter (phdm@macqel.be)
25 * Copyright (c) 2004-2005 Macq Electronique SA. 25 * Copyright (c) 2004-2006 Macq Electronique SA.
26 */ 26 */
27 27
28#include <linux/config.h> 28#include <linux/config.h>
@@ -2420,9 +2420,16 @@ fec_stop(struct net_device *dev)
2420 fep = netdev_priv(dev); 2420 fep = netdev_priv(dev);
2421 fecp = fep->hwp; 2421 fecp = fep->hwp;
2422 2422
2423 fecp->fec_x_cntrl = 0x01; /* Graceful transmit stop */ 2423 /*
2424 2424 ** We cannot expect a graceful transmit stop without link !!!
2425 while(!(fecp->fec_ievent & FEC_ENET_GRA)); 2425 */
2426 if (fep->link)
2427 {
2428 fecp->fec_x_cntrl = 0x01; /* Graceful transmit stop */
2429 udelay(10);
2430 if (!(fecp->fec_ievent & FEC_ENET_GRA))
2431 printk("fec_stop : Graceful transmit stop did not complete !\n");
2432 }
2426 2433
2427 /* Whack a reset. We should wait for this. 2434 /* Whack a reset. We should wait for this.
2428 */ 2435 */