
Hi Sandeep,
Paulraj, Sandeep wrote:
Proper behavior is to pull MAC address from NVRAM in the initialization() an stuff it in dev->address, then program the device from dev->address in the init() function.
Signed-off-by: Ben Warren biggerbadderben@gmail.com
Ben I tested and here is the result.
- dhcp still does not work
- I have to set a static ipaddr for the bootcmd to work
Your patch solved the issue where issuing the bootcmd "tftp; bootm" would complain about ethaddr not being set.
But i do notice that ethaddr does not get saved in the environment.
Saving the address to the environment is the user's job. Nothing should write it automatically. A few drivers do, but they should be changed.
Please look in net/eth.c::eth_initialize() to see how this works. The order of precedence is this:
1. If environment variable is not set, it's up to the driver to find its own MAC address. 2. If the environment variable is set, and is non-zero, it is used. If if conflicts with the value in NVRAM, a warning is issued, but the environment value is still used.
I don't know why DHCP doesn't work, but if I were you I'd check that the address printed from line 344 in dm9000x.c shows a valid unicast MAC address.
regards, Ben