diff --git a/CHANGELOG b/CHANGELOG
index 96593f379eaf9e12cc35b30ec2fdf69e48375351..36d7a5c90bb12710fb9f144c878ebcca7e0af9b1 100644
--- a/CHANGELOG
+++ b/CHANGELOG
@@ -2,6 +2,9 @@
 Changes since U-Boot 1.1.1:
 ======================================================================
 
+* Patch by Ganapathi C, 04 Aug 2004:
+  Fix NFS timeout issue
+
 * Patch by Yuli Barcohen, 19 Jul 2004:
   - Fix host tools building in Cygwin environment
   - Fix header files search order for host tools
diff --git a/net/nfs.c b/net/nfs.c
index 281d0f5722c7dada621318076037c4d9da3c30c7..2d94c08f7602abd7ea3ee24c6c7d593a938f0d19 100644
--- a/net/nfs.c
+++ b/net/nfs.c
@@ -582,6 +582,14 @@ nfs_read_reply (uchar *pkt, unsigned len)
 Interfaces of U-BOOT
 **************************************************************************/
 
+static void
+NfsTimeout (void)
+{
+	puts ("Timeout\n");
+	NetState = NETLOOP_FAIL;
+	return;
+}
+
 static void
 NfsHandler (uchar *pkt, unsigned dest, unsigned src, unsigned len)
 {
@@ -660,6 +668,7 @@ NfsHandler (uchar *pkt, unsigned dest, unsigned src, unsigned len)
 
 	case STATE_READ_REQ:
 		rlen = nfs_read_reply (pkt, len);
+		NetSetTimeout (NFS_TIMEOUT * CFG_HZ, NfsTimeout);
 		if (rlen > 0) {
 			nfs_offset += rlen;
 			NfsSend ();
@@ -676,13 +685,6 @@ NfsHandler (uchar *pkt, unsigned dest, unsigned src, unsigned len)
 	}
 }
 
-static void
-NfsTimeout (void)
-{
-	puts ("Timeout\n");
-	NetState = NETLOOP_FAIL;
-	return;
-}
 
 void
 NfsStart (void)