summaryrefslogtreecommitdiff
path: root/net/bootp.c
diff options
context:
space:
mode:
authorAlexandre Messier <amessier@tycoint.com>2016-02-01 17:08:57 -0500
committerJoe Hershberger <joe.hershberger@ni.com>2016-02-26 13:37:38 -0600
commit50768f5b06e7704cf2bc209f89e250130c3fff5b (patch)
tree78d4f566336406bca9e57f571edbd4a69367a762 /net/bootp.c
parent903d384d401bdfc517266787549caf4630a7f305 (diff)
net: bootp: Add environment variable for timeout period
There is currently one config option (CONFIG_NET_RETRY_COUNT) that is available to tune the retries of the network stack. Unfortunately, it is global to all protocols, and the value is interpreted differently in all of them. Add a new environment variable that directly sets the retry period for BOOTP timeouts. If this new value is not set, the period is still derived from the default number of retries, or from CONFIG_NET_RETRY_COUNT if defined. When both the new variable is set and CONFIG_NET_RETRY_COUNT is defined, the variable has precedence. Signed-off-by: Alexandre Messier <amessier@tycoint.com>
Diffstat (limited to 'net/bootp.c')
-rw-r--r--net/bootp.c11
1 files changed, 10 insertions, 1 deletions
diff --git a/net/bootp.c b/net/bootp.c
index f2978a23ce..aefc808391 100644
--- a/net/bootp.c
+++ b/net/bootp.c
@@ -60,6 +60,8 @@ char net_nis_domain[32] = {0,}; /* Our NIS domain */
char net_hostname[32] = {0,}; /* Our hostname */
char net_root_path[64] = {0,}; /* Our bootpath */
+static ulong time_taken_max;
+
#if defined(CONFIG_CMD_DHCP)
static dhcp_state_t dhcp_state = INIT;
static u32 dhcp_leasetime;
@@ -380,7 +382,7 @@ static void bootp_timeout_handler(void)
{
ulong time_taken = get_timer(bootp_start);
- if (time_taken >= TIMEOUT_MS) {
+ if (time_taken >= time_taken_max) {
#ifdef CONFIG_BOOTP_MAY_FAIL
puts("\nRetry time exceeded\n");
net_set_state(NETLOOP_FAIL);
@@ -675,12 +677,19 @@ void bootp_request(void)
u32 bootp_id;
struct in_addr zero_ip;
struct in_addr bcast_ip;
+ char *ep; /* Environment pointer */
bootstage_mark_name(BOOTSTAGE_ID_BOOTP_START, "bootp_start");
#if defined(CONFIG_CMD_DHCP)
dhcp_state = INIT;
#endif
+ ep = getenv("bootpretryperiod");
+ if (ep != NULL)
+ time_taken_max = simple_strtoul(ep, NULL, 10);
+ else
+ time_taken_max = TIMEOUT_MS;
+
#ifdef CONFIG_BOOTP_RANDOM_DELAY /* Random BOOTP delay */
if (bootp_try == 0)
srand_mac();