[U-Boot-Users] NFS Timeout with large files.

Hiroshi Ito ito at mlb.co.jp
Wed Jan 30 08:32:17 CET 2008


Hello, Upakul

I got same experience.

U-boot NFS command do not retry to send a command again.
so, when the packet is lost, It will cause timeout.

with this patch, it should fix.
but this is very old code. so, I don't know, it can applys to current one.

Regards
--------
Hiroshi Ito
Media Lab. Inc.,
URL http://www.mlb.co.jp ( Sorry, Japanese only. )
TEL +81-3-5294-7255  FAX +81-3-5294-7256



From: "Upakul Barkakaty" <upakul at gmail.com>
Subject: [U-Boot-Users] NFS Timeout with large files.
Date: Wed, 30 Jan 2008 11:55:18 +0530

> Hi all,
> 
> I am facing a timeout problem with nfs while transferring large files.
> However i encounter no problem with smaller files.
> 
> The entire thing works fine with another nfs server.
> 
> Any hints on what could be the problem ??
> 
> -- 
> Regards,
> Upakul Barkakaty
> 
> -------------------------------------------------------------------------
> This SF.net email is sponsored by: Microsoft
> Defy all challenges. Microsoft(R) Visual Studio 2008.
> http://clk.atdmt.com/MRT/go/vse0120000070mrt/direct/01/
> _______________________________________________
> U-Boot-Users mailing list
> U-Boot-Users at lists.sourceforge.net
> https://lists.sourceforge.net/lists/listinfo/u-boot-users
> 
-------------- next part --------------
commit cbba3261e3cf434e36aa64efe0d36e430f4e5152
Author:  <ito at mlb.co.jp>
Date:   Wed Aug 30 15:48:36 2006 +0900

    nfs comand retrys read when timeouts are caused.

diff --git a/net/nfs.c b/net/nfs.c
index de789e1..4385e07 100644
--- a/net/nfs.c
+++ b/net/nfs.c
@@ -34,7 +34,8 @@
 #if ((CONFIG_COMMANDS & CFG_CMD_NET) && (CONFIG_COMMANDS & CFG_CMD_NFS))
 
 #define HASHES_PER_LINE 65	/* Number of "loading" hashes per line	*/
-#define NFS_TIMEOUT 60
+#define NFS_RETRY_COUNT 30
+#define NFS_TIMEOUT 2
 
 static int fs_mounted = 0;
 static unsigned long rpc_id = 0;
@@ -587,6 +588,10 @@ Interfaces of U-BOOT
 static void
 NfsTimeout (void)
 {
+	if ( NfsTimeoutCount++ < NFS_RETRY_COUNT ) {
+		NfsSend ();
+		return;
+	}
 	puts ("Timeout\n");
 	NetState = NETLOOP_FAIL;
 	return;


More information about the U-Boot mailing list