From mboxrd@z Thu Jan 1 00:00:00 1970 From: Rob Herring Date: Mon, 5 Dec 2011 18:04:33 -0600 Subject: [U-Boot] [PATCH] pxe: get ethaddr from the current device instead of env Message-ID: <1323129873-8786-1-git-send-email-robherring2@gmail.com> List-Id: MIME-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit To: u-boot@lists.denx.de From: Rob Herring The env variable "ethaddr" may not be set, so get the address from the eth_device struct instead. This also enables pxe for secondary ethernet devices. Signed-off-by: Rob Herring --- common/cmd_pxe.c | 31 ++++++++++++------------------- 1 files changed, 12 insertions(+), 19 deletions(-) diff --git a/common/cmd_pxe.c b/common/cmd_pxe.c index 3efd700..f14ef89 100644 --- a/common/cmd_pxe.c +++ b/common/cmd_pxe.c @@ -56,38 +56,31 @@ static char *from_env(char *envvar) */ static int format_mac_pxe(char *outbuf, size_t outbuf_len) { - size_t ethaddr_len; - char *p, *ethaddr; - - ethaddr = from_env("ethaddr"); - - if (!ethaddr) - return -ENOENT; - - ethaddr_len = strlen(ethaddr); + char *p; + struct eth_device *dev; /* * ethaddr_len + 4 gives room for "01-", ethaddr, and a NUL byte at * the end. */ - if (outbuf_len < ethaddr_len + 4) { - printf("outbuf is too small (%d < %d)\n", - outbuf_len, ethaddr_len + 4); - + if (outbuf_len < 21) { + printf("outbuf is too small (%d < 21)\n", outbuf_len); return -EINVAL; } - strcpy(outbuf, "01-"); + eth_set_current(); + dev = eth_get_dev(); + if (!dev) + return -ENODEV; - for (p = outbuf + 3; *ethaddr; ethaddr++, p++) { - if (*ethaddr == ':') + sprintf(outbuf, "01-%pM", dev->enetaddr); + for (p = outbuf + 3; *p; p++) { + if (*p == ':') *p = '-'; else - *p = tolower(*ethaddr); + *p = tolower(*p); } - *p = '\0'; - return 1; } -- 1.7.5.4