[U-Boot] [PATCH] nfs: NfsTimeout() updates
Peter Tyser
ptyser at xes-inc.com
Tue Nov 10 03:08:36 CET 2009
From: Evan Samanas <esamanas at xes-inc.com>
- NfsTimeout() does not correctly update the NFS timeout value which
results in NfsTimeout() only being called once in certain situations.
This can result in the 'nfs' command hanging indefinetly. For
example, the command:
nfs 192.168.0.1:/home/user/file
will not exit until ctrl-c is pressed if 192.168.0.1 does not have an
NFS server running.
This issue is resolved by reinitializting the NFS timeout value inside
NfsTimeout() when a timeout occurs.
- Make the 'nfs' command print the 'T' character when a timeout occurs.
Previously there was no indication that timeouts were occuring.
- Mimic the 'tftpboot' command and when a download fails print "Retry
count exceeded; starting again", and restart the download taking the
'netretry' environment variable into account.
Signed-off-by: Evan Samanas <esamanas at xes-inc.com>
Signed-off-by: Peter Tyser <ptyser at xes-inc.com>
---
net/nfs.c | 11 ++++++-----
1 files changed, 6 insertions(+), 5 deletions(-)
diff --git a/net/nfs.c b/net/nfs.c
index 27395fb..51b17c7 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
--
1.6.2.1
More information about the U-Boot
mailing list