diff --git a/net/nfs.c b/net/nfs.c
index c39f616d9ba98b7f0686bd8f4304d7d066090be5..4017c3e3539bc277d2fc95eb0770c649efd8e0f6 100644
--- a/net/nfs.c
+++ b/net/nfs.c
@@ -571,13 +571,14 @@ Interfaces of U-BOOT
 static void
 NfsTimeout (void)
 {
-	if ( NfsTimeoutCount++ < NFS_RETRY_COUNT ) {
+	if ( ++NfsTimeoutCount > NFS_RETRY_COUNT ) {
+		puts ("\nRetry count exceeded; starting again\n");
+		NetStartAgain ();
+	} else {
+		puts("T ");
+		NetSetTimeout (NFS_TIMEOUT, NfsTimeout);
 		NfsSend ();
-		return;
 	}
-	puts ("Timeout\n");
-	NetState = NETLOOP_FAIL;
-	return;
 }
 
 static void