diff options
author | Simon Glass <sjg@chromium.org> | 2016-01-17 14:51:58 -0700 |
---|---|---|
committer | Joe Hershberger <joe.hershberger@ni.com> | 2016-01-28 12:32:46 -0600 |
commit | 9987ecdd36da79535c4229ecc5693533aaa8d17b (patch) | |
tree | eb71eb6e57b439f75f0bbb7b6e51c6df73869853 | |
parent | 818f91eb5778781083e33ce3291bba76a3f1601c (diff) |
net: Move environment functions to the common file
Move the functions which set ethernet environment variables to the common
file.
Signed-off-by: Simon Glass <sjg@chromium.org>
Acked-by: Joe Hershberger <joe.hershberger@ni.com>
-rw-r--r-- | net/eth.c | 43 | ||||
-rw-r--r-- | net/eth_common.c | 43 | ||||
-rw-r--r-- | net/eth_internal.h | 16 |
3 files changed, 59 insertions, 43 deletions
@@ -20,49 +20,6 @@ DECLARE_GLOBAL_DATA_PTR; -void eth_parse_enetaddr(const char *addr, uchar *enetaddr) -{ - char *end; - int i; - - for (i = 0; i < 6; ++i) { - enetaddr[i] = addr ? simple_strtoul(addr, &end, 16) : 0; - if (addr) - addr = (*end) ? end + 1 : end; - } -} - -int eth_getenv_enetaddr(const char *name, uchar *enetaddr) -{ - eth_parse_enetaddr(getenv(name), enetaddr); - return is_valid_ethaddr(enetaddr); -} - -int eth_setenv_enetaddr(const char *name, const uchar *enetaddr) -{ - char buf[20]; - - sprintf(buf, "%pM", enetaddr); - - return setenv(name, buf); -} - -int eth_getenv_enetaddr_by_index(const char *base_name, int index, - uchar *enetaddr) -{ - char enetvar[32]; - sprintf(enetvar, index ? "%s%daddr" : "%saddr", base_name, index); - return eth_getenv_enetaddr(enetvar, enetaddr); -} - -static inline int eth_setenv_enetaddr_by_index(const char *base_name, int index, - uchar *enetaddr) -{ - char enetvar[32]; - sprintf(enetvar, index ? "%s%daddr" : "%saddr", base_name, index); - return eth_setenv_enetaddr(enetvar, enetaddr); -} - static int eth_mac_skip(int index) { char enetvar[15]; diff --git a/net/eth_common.c b/net/eth_common.c index ee0b6df376..3fa6d83c70 100644 --- a/net/eth_common.c +++ b/net/eth_common.c @@ -10,6 +10,49 @@ #include <miiphy.h> #include "eth_internal.h" +void eth_parse_enetaddr(const char *addr, uchar *enetaddr) +{ + char *end; + int i; + + for (i = 0; i < 6; ++i) { + enetaddr[i] = addr ? simple_strtoul(addr, &end, 16) : 0; + if (addr) + addr = (*end) ? end + 1 : end; + } +} + +int eth_getenv_enetaddr(const char *name, uchar *enetaddr) +{ + eth_parse_enetaddr(getenv(name), enetaddr); + return is_valid_ethaddr(enetaddr); +} + +int eth_setenv_enetaddr(const char *name, const uchar *enetaddr) +{ + char buf[20]; + + sprintf(buf, "%pM", enetaddr); + + return setenv(name, buf); +} + +int eth_getenv_enetaddr_by_index(const char *base_name, int index, + uchar *enetaddr) +{ + char enetvar[32]; + sprintf(enetvar, index ? "%s%daddr" : "%saddr", base_name, index); + return eth_getenv_enetaddr(enetvar, enetaddr); +} + +int eth_setenv_enetaddr_by_index(const char *base_name, int index, + uchar *enetaddr) +{ + char enetvar[32]; + sprintf(enetvar, index ? "%s%daddr" : "%saddr", base_name, index); + return eth_setenv_enetaddr(enetvar, enetaddr); +} + void eth_common_init(void) { bootstage_mark(BOOTSTAGE_ID_NET_ETH_START); diff --git a/net/eth_internal.h b/net/eth_internal.h index e65d8984e8..38d84201e6 100644 --- a/net/eth_internal.h +++ b/net/eth_internal.h @@ -12,4 +12,20 @@ /* Do init that is common to driver model and legacy networking */ void eth_common_init(void); +/** + * eth_setenv_enetaddr_by_index() - set the MAC address envrionment variable + * + * This sets up an environment variable with the given MAC address (@enetaddr). + * The environment variable to be set is defined by <@base_name><@index>addr. + * If @index is 0 it is omitted. For common Ethernet this means ethaddr, + * eth1addr, etc. + * + * @base_name: Base name for variable, typically "eth" + * @index: Index of interface being updated (>=0) + * @enetaddr: Pointer to MAC address to put into the variable + * @return 0 if OK, other value on error + */ +int eth_setenv_enetaddr_by_index(const char *base_name, int index, + uchar *enetaddr); + #endif |