Subject: mac-address vs. local-mac-address

From: Timur Tabi <[email-masked]>
Date: Wed, 07 Feb 2007 15:17:43 -0600

Hi everyone,

What is the current consensus on using mac-address vs. local-mac-address in the 
device tree?  The 1275 spec says this:

"local-mac-address" Standard property name to specify preassigned network address.
"mac-address" Standard property name to specify network address last used.

I think we need to agree on some interpretation of these statements, and all the 
code should be updated to implement that interpretation.

My interpretation is that mac-address is supposed to the contain these MAC 
addresses under these circumstances:

1) If the Ethernet interface is up, it's the MAC address that is currently in use.
2) If the Ethernet interface is not up, it's the MAC address that was in use the 
last time the Ethernet interface was shut down.

In Linux, the ifconfig command is used to change the MAC address.  This command 
calls the driver's set_mac_address function, so it is the driver that sets the 
MAC address in the hardware.

In order to properly support the mac-address property, the driver must also 
update the device tree with the new MAC address.  That's the only way that 
mac-address can contain the "specify network address last used".

Linux doesn't support that.  In some cases, the actual device tree is located on 
a TFTP server, and it's only copied temporarily into RAM by U-Boot.  There's no 
way that a Linux driver can update that.

On a full-blown OF machine, the firmware does provide APIs for updating the 
device tree, and so we could support mac-address on these machines.  But U-Boot 
disappears once the kernel loads, so there is no firmware to call to update the 
device tree.

Therefore, I propose that on systems where the driver cannot update the device 
tree, the mac-address property should be absent from the device tree.  U-Boot 
should not add one, and the Linux device drivers should not reference it.

Comments?

-- 
Timur Tabi
Linux Kernel Developer @ Freescale