
Wolfgang Denk wrote:
In message 452C8358.40009@magellan-technology.com you wrote:
I'm not sure what the actual delay should be and I'm not sure where it should go. Wolfgang, can you suggest a place to put a delay, and should it be wrapped in a CONFIG_ option?
I don't want to add such a delay. The RFC does not include any timing information, which means that packets can be sent immediately.
Wolfgang,
I fully understand that and no-one wants to have to include delays in their system but unfortunately Microsoft didn't write their DHCP server code to allow for a client which responds as quickly as U-Boot can.
No-one is ever going to be able to fix old copies of Windows Server, so I suggest an interoperability patch which allows U-Boot to work better with Windows Server DHCP service. A small delay at boot time is certainly a lot cheaper than spending hours on the telephone for customer support.
Our product has a customer base of over 1000 units and most of those will, unfortunately, use Windows Server 2000/2003 as their DHCP server. We've known for a long time that certain DHCP servers were causing problems and we were telling people that they should use a fixed IP address until they fixed their DHCP service. It wasn't until we sent an engineer from Australia to France that we knew the depth of this interoperability problem.
My testing shows that a delay of around 15ms before sending the "DHCP Request" will work 100% of the time with the VMware Windows Server 2003 that I set up on my PC so I am going to put a delay of 30ms in my U-Boot image for safety.
I will send a U-Boot upgrade package to several of our customer sites for testing before I roll it out to all of our customers.
regards,
Aras Vaichas
--- current/net/bootp.c 2005-11-18 12:18:48.000000000 +1100 +++ u-boot-1.1.3-MAGARMv3/net/bootp.c 2006-10-11 16:35:51.000000000 +1000 @@ -844,6 +844,10 @@ NetSetIP(iphdr, 0xFFFFFFFFL, PORT_BOOTPS, PORT_BOOTPC, iplen);
debug ("Transmitting DHCPREQUEST packet: len = %d\n", pktlen); + // delay a small amount because Windows Server 2003 has problems if you reply too quickly + // 15ms was proven to be OK on my at91rm9200 system, so I'll double it just in case + udelay(30000); + NetSendPacket(NetTxPacket, pktlen); }
______________________________________________________________________ This email has been scanned by the MessageLabs Email Security System. For more information please visit http://www.messagelabs.com/email ______________________________________________________________________