summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAras Vaichas <arasv@magtech.com.au>2008-03-26 09:43:57 +1100
committerBen Warren <biggerbadderben@gmail.com>2008-03-30 00:09:49 -0400
commitd9a2f416d6ac6058cd7845033ae4dc32ef1c0746 (patch)
tree201a2451d25d1af825df667a3f32e03aa9f2834d
parent74d1e66d22dac91388bc538b2fe19f735edc5b82 (diff)
downloadu-boot-imx-d9a2f416d6ac6058cd7845033ae4dc32ef1c0746.zip
u-boot-imx-d9a2f416d6ac6058cd7845033ae4dc32ef1c0746.tar.gz
u-boot-imx-d9a2f416d6ac6058cd7845033ae4dc32ef1c0746.tar.bz2
DHCP request fix for Windows Server 2003
Added option CONFIG_BOOTP_DHCP_REQUEST_DELAY. This provides an optional delay before sending "DHCP Request" in net/bootp.c. Required to overcome interoperability problems with Windows Server 200x DHCP server when U-Boot client responds too fast for server to handle. Signed-off-by: Aras Vaichas <arasv@magtech.com.au> Signed-off-by: Ben Warren <biggerbadderben@gmail.com>
-rw-r--r--README14
-rw-r--r--net/bootp.c5
2 files changed, 18 insertions, 1 deletions
diff --git a/README b/README
index 5cbe7c1..592d1d8 100644
--- a/README
+++ b/README
@@ -1151,6 +1151,20 @@ The following options need to be configured:
of the "hostname" environment variable is passed as
option 12 to the DHCP server.
+ CONFIG_BOOTP_DHCP_REQUEST_DELAY
+
+ A 32bit value in microseconds for a delay between
+ receiving a "DHCP Offer" and sending the "DHCP Request".
+ This fixes a problem with certain DHCP servers that don't
+ respond 100% of the time to a "DHCP request". E.g. On an
+ AT91RM9200 processor running at 180MHz, this delay needed
+ to be *at least* 15,000 usec before a Windows Server 2003
+ DHCP server would reply 100% of the time. I recommend at
+ least 50,000 usec to be safe. The alternative is to hope
+ that one of the retries will be successful but note that
+ the DHCP timeout and retry process takes a longer than
+ this delay.
+
- CDP Options:
CONFIG_CDP_DEVICE_ID
diff --git a/net/bootp.c b/net/bootp.c
index 89e30d2..0eeef57 100644
--- a/net/bootp.c
+++ b/net/bootp.c
@@ -879,7 +879,10 @@ static void DhcpSendRequestPkt(Bootp_t *bp_offer)
iplen = BOOTP_HDR_SIZE - sizeof(bp->bp_vend) + extlen;
NetSetIP(iphdr, 0xFFFFFFFFL, PORT_BOOTPS, PORT_BOOTPC, iplen);
- debug ("Transmitting DHCPREQUEST packet: len = %d\n", pktlen);
+ debug ("Transmitting DHCPREQUEST packet: len = %d\n", pktlen);
+#ifdef CONFIG_BOOTP_DHCP_REQUEST_DELAY
+ udelay(CONFIG_BOOTP_DHCP_REQUEST_DELAY);
+#endif /* CONFIG_BOOTP_DHCP_REQUEST_DELAY */
NetSendPacket(NetTxPacket, pktlen);
}