Skip to content

Commit

Permalink
[PATCH] m68knommu: avoid fec driver hang when link disappears
Browse files Browse the repository at this point in the history
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>
  • Loading branch information
Philippe De Muyter authored and Linus Torvalds committed Jun 28, 2006
1 parent 67bdd98 commit 677177c
Showing 1 changed file with 11 additions and 4 deletions.
15 changes: 11 additions & 4 deletions drivers/net/fec.c
Original file line number Diff line number Diff line change
Expand Up @@ -22,7 +22,7 @@
* Copyright (c) 2001-2005 Greg Ungerer (gerg@snapgear.com)
*
* Bug fixes and cleanup by Philippe De Muyter (phdm@macqel.be)
* Copyright (c) 2004-2005 Macq Electronique SA.
* Copyright (c) 2004-2006 Macq Electronique SA.
*/

#include <linux/config.h>
Expand Down Expand Up @@ -2420,9 +2420,16 @@ fec_stop(struct net_device *dev)
fep = netdev_priv(dev);
fecp = fep->hwp;

fecp->fec_x_cntrl = 0x01; /* Graceful transmit stop */

while(!(fecp->fec_ievent & FEC_ENET_GRA));
/*
** We cannot expect a graceful transmit stop without link !!!
*/
if (fep->link)
{
fecp->fec_x_cntrl = 0x01; /* Graceful transmit stop */
udelay(10);
if (!(fecp->fec_ievent & FEC_ENET_GRA))
printk("fec_stop : Graceful transmit stop did not complete !\n");
}

/* Whack a reset. We should wait for this.
*/
Expand Down

0 comments on commit 677177c

Please sign in to comment.