nfs: NfsTimeout() updates

- 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@xes-inc.com>
Signed-off-by: Peter Tyser <ptyser@xes-inc.com>

Tested on TQM8xxL.

Tested by: Wolfgang Denk <wd@denx.de>

Tested on MPC8527DS.

Tested by: Ed Swarthout <Ed.Swarthout@freescale.com>
This commit is contained in:
Evan Samanas 2009-11-09 20:08:36 -06:00 committed by Wolfgang Denk
parent 224c90d106
commit aabb8cb081
1 changed files with 6 additions and 5 deletions

View File

@ -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