
Hi,
Some Linux drivers like the smc911x driver, as used on TQMA31, rely on the MAC address in the appropriate register, but U-Boot resets the controller after every transfer. A patch for the Linux driver is necessary to extract the MAC address from the kernel boot parameter line and set the MAC address register accordingly. This patch adds the kernel parameter "ethaddr" to the U-Boot default environment so that the user cannot forget it.
Do you know the nwhwconf patch? We used it with a kernel 2.6.22 for Renesas SH3. It adds a kernel parameter nwhwconf and one of its options is to specify a hwaddr which is the MAC address to use. The Ethernet driver does not have to do anything other than to support the ethtool interface.
Example: nwhwconf=device:eth0,hwaddr:12:34:56:78:90:ab
So I think reading a kernel parameter from the Ethernet driver is not a good idea - there are more generic approaches available.
There has already been a discussion on this topic on the Celinux-dev mailing list: http://tree.celinuxforum.org/pipermail/celinux-dev/2007-July/001477.html . Wolfgang Denk layed out his POV there as well.
Regards, Mark