
Wolfgang Denk writes:
ok I just wanted to clear myself.. I do not have a dedicated hardware storage in my ethernet controller so I will just look into environment variable ethaddr, if its set I will just copy it to driver layer and if it is not set, I let the user set it. He/She may use the tools provided with U-Boot to generate a random MAC or by any mean get a MAC and store it in env which is gonna be one time unless env gets corrupt or cleared by user. Which means no MAC generation in code...
Please correct me if my understanding wrong...
This is correct, except for the nitpick that nobody should ever use a truly random MAC address - if no valid MAC address is available, one should at least make sure to pick one of the locally administered Ethernet address pool (2nd LSB in the most significant byte of the address must be set).
It is even more annoying that the Linux network driver for Armada 100 (pxa168_eth.c) does the same thing (random MAC) which made it impossible to properly assign IPs or even have the same in u-boot and Linux.
Since the pxa168 ethernet seems to (correct me if I am wrong) store all MACs, including its own, in a buffer allocated in main memory, it is not possible to set it in u-boot and then read it out in Linux. So, I introduced "pxa168_mac" as Linux command line argument to pass ethaddr to pxa168_eth. Or does anybody have a better solution?
Regards, Ralph Metzler