[U-Boot] [PATCH 02/27] doc/README.enetaddr: document proper MAC usage
Wolfgang Denk
wd at denx.de
Mon Feb 16 23:38:54 CET 2009
Dear Mike Frysinger,
In message <1234596190-524-3-git-send-email-vapier at gentoo.org> you wrote:
> Signed-off-by: Mike Frysinger <vapier at gentoo.org>
> CC: Ben Warren <biggerbadderben at gmail.com>
> ---
> doc/README.enetaddr | 96 +++++++++++++++++++++++++++++++++++++++++++++++++++
> 1 files changed, 96 insertions(+), 0 deletions(-)
> create mode 100644 doc/README.enetaddr
...
> +Here are the places where MAC addresses might be stored:
> +
> + - board-specific location (eeprom, dedicated flash, ...)
> + Note: only used when mandatory due to hardware design etc...
> +
> + - environment ("ethaddr", "eth1addr", ...) (see CONFIG_ETHADDR)
> + Note: this is the preferred way to permanently store MAC addresses
> +
> + - ethernet data (struct eth_device -> enetaddr)
> + Note: these are temporary copies of the MAC address which exist only
> + after the respective init steps have run and only to make usage
> + in other places easier (to avoid constant env lookup/parsing)
- struct bd_info and/or device tree
Note: these are temporary copies of the MAC address only foir
the purpose to pass this information to an OS kernel we are
about to boot
> +The common environment code will take care of passing environment changes to
> +the global data. This happens automatically whenever setenv() updates the
> +relevant ethaddr variables.
Didn't we just remove the MAC address information from the global
data?
> +Any other common code that wishes to access the MAC address should then query
> +the global data directly. No one should be looking in the environment for any
> +addresses.
Is this still valid?
> +Print the MAC address into the specified storage. Caller should make sure the
> +storage is sufficient (20 bytes is fine). The pointer used for storage is
> +returned.
> +char buf[20];
> +uchar enetaddr[6] = { 0x00, 0x11, 0x22, 0x33, 0x44, 0x55 };
> +str_enetaddr(buf, enetaddr);
> +printf("The MAC is %s\n", buf);
> +/* the buf variable is now set to "00:11:22:33:44:55" */
I think we should instead borrow the 'M' (and probably also the 'I',
but that's a different story) format specifiers from the Linux
"lib/vsprintf.c" implementation ?
Best regards,
Wolfgang Denk
--
DENX Software Engineering GmbH, MD: Wolfgang Denk & Detlev Zundel
HRB 165235 Munich, Office: Kirchenstr.5, D-82194 Groebenzell, Germany
Phone: (+49)-8142-66989-10 Fax: (+49)-8142-66989-80 Email: wd at denx.de
Real Programmers always confuse Christmas and Halloween because
OCT 31 == DEC 25 ! - Andrew Rutherford (andrewr at ucs.adelaide.edu.au)
More information about the U-Boot
mailing list