From: Joe Hershberger <joe.hershberger@ni.com>
Date: Wed, 23 May 2012 07:59:19 +0000 (+0000)
Subject: net: Add option CONFIG_BOOTP_MAY_FAIL
X-Git-Tag: v2025.01-rc5-pxa1908~17674^2~53
X-Git-Url: http://git.dujemihanovic.xyz/html/static/gitweb.css?a=commitdiff_plain;h=2c00e099fe77b014dd094a49113e2c6ce8a24a16;p=u-boot.git

net: Add option CONFIG_BOOTP_MAY_FAIL

This is useful if you want to look for a DHCP server, but try some
other settings if not available.

Signed-off-by: Joe Hershberger <joe.hershberger@ni.com>
Acked-by: Simon Glass <sjg@chromium.org>
---

diff --git a/README b/README
index 6919392dca..6e313ad935 100644
--- a/README
+++ b/README
@@ -1592,10 +1592,17 @@ The following options need to be configured:
 		CONFIG_BOOTP_NTPSERVER
 		CONFIG_BOOTP_TIMEOFFSET
 		CONFIG_BOOTP_VENDOREX
+		CONFIG_BOOTP_MAY_FAIL
 
 		CONFIG_BOOTP_SERVERIP - TFTP server will be the serverip
 		environment variable, not the BOOTP server.
 
+		CONFIG_BOOTP_MAY_FAIL - If the DHCP server is not found
+		after the configured retry count, the call will fail
+		instead of starting over.  This can be used to fail over
+		to Link-local IP address configuration if the DHCP server
+		is not available.
+
 		CONFIG_BOOTP_DNS2 - If a DHCP client requests the DNS
 		serverip from a DHCP server, it is possible that more
 		than one DNS serverip is offered to the client.
diff --git a/net/bootp.c b/net/bootp.c
index 7e24b661de..0f0867b1c4 100644
--- a/net/bootp.c
+++ b/net/bootp.c
@@ -326,8 +326,13 @@ static void
 BootpTimeout(void)
 {
 	if (BootpTry >= TIMEOUT_COUNT) {
+#ifdef CONFIG_BOOTP_MAY_FAIL
+		puts("\nRetry count exceeded\n");
+		NetSetState(NETLOOP_FAIL);
+#else
 		puts("\nRetry count exceeded; starting again\n");
 		NetStartAgain();
+#endif
 	} else {
 		NetSetTimeout(TIMEOUT, BootpTimeout);
 		BootpRequest();