From 856be30d7abb9ec2622600efc94f46683da23985 Mon Sep 17 00:00:00 2001 From: =?utf8?q?Lothar=20Wa=C3=9Fmann?= Date: Tue, 6 Mar 2012 16:28:22 +0100 Subject: [PATCH] add timeout to polling loop for FEC_TBD_READY --- drivers/net/fec_mxc.c | 3 +++ 1 file changed, 3 insertions(+) diff --git a/drivers/net/fec_mxc.c b/drivers/net/fec_mxc.c index 06ed7e5089..a8943f58bd 100644 --- a/drivers/net/fec_mxc.c +++ b/drivers/net/fec_mxc.c @@ -589,6 +589,7 @@ static void fec_halt(struct eth_device *dev) static int fec_send(struct eth_device *dev, volatile void *packet, int length) { unsigned int status; + int timeout = 1000; /* * This routine transmits one frame. This routine only accepts @@ -636,6 +637,8 @@ static int fec_send(struct eth_device *dev, volatile void *packet, int length) * wait until frame is sent . */ while (readw(&fec->tbd_base[fec->tbd_index].status) & FEC_TBD_READY) { + if (--timeout < 0) + return -ETIMEDOUT; udelay(1); } debug("fec_send: status 0x%x index %d\n", -- 2.39.5