diff options
author | Aras Vaichas <arasv@magtech.com.au> | 2008-03-26 09:43:57 +1100 |
---|---|---|
committer | Ben Warren <biggerbadderben@gmail.com> | 2008-03-30 00:09:49 -0400 |
commit | d9a2f416d6ac6058cd7845033ae4dc32ef1c0746 (patch) | |
tree | 201a2451d25d1af825df667a3f32e03aa9f2834d | |
parent | 74d1e66d22dac91388bc538b2fe19f735edc5b82 (diff) |
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-- | README | 14 | ||||
-rw-r--r-- | net/bootp.c | 5 |
2 files changed, 18 insertions, 1 deletions
@@ -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 89e30d2c703..0eeef578424 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); } |