SPL doesn't use net/eth.c. You add a call in env_flags.c. I think you can put it in header file and use static inline, or keep it in the same file where it is called.
Another way is to undef CONFIG_CMD_NET for SPL part. It is default to 'y' in Kconfig. Joe may have some good suggestion. York On 08/10/2015 01:44 AM, Ciubotariu Codrin Constantin-B43658 wrote: > Hi York, > > I didn't know that SPL uses net/eth.c . Could you please suggest a place for > eth_validate_ethaddr_str()? > > Thanks and best regards, > Codrin > >> -----Original Message----- >> From: Sun York-R58495 >> Sent: Saturday, August 08, 2015 3:31 AM >> To: Ciubotariu Codrin Constantin-B43658; u-boot@lists.denx.de >> Cc: joe.hershber...@ni.com; Kushwaha Prabhakar-B32579 >> Subject: Re: [PATCH v3 11/16] net/eth.c: Add function to validate a MAC >> address >> >> On 07/24/2015 06:55 AM, Codrin Ciubotariu wrote: >>> The code from common/env_flags.c that checks if a string has the >>> format of a MAC address has been moved in net/eth.c as a separate >>> function called eth_validate_ethaddr_str(). >>> >>> Signed-off-by: Codrin Ciubotariu <codrin.ciubota...@freescale.com> >>> --- >>> >>> Changes for v3: >>> - none, new patch; >>> >>> common/env_flags.c | 15 ++------------- >>> include/net.h | 1 + >>> net/eth.c | 30 ++++++++++++++++++++++++++++++ >>> 3 files changed, 33 insertions(+), 13 deletions(-) >>> >>> diff --git a/common/env_flags.c b/common/env_flags.c index >>> 5189f5b..3e39fd1 100644 >>> --- a/common/env_flags.c >>> +++ b/common/env_flags.c >>> @@ -239,19 +239,8 @@ static int _env_flags_validate_type(const char *value, >>> } >>> break; >>> case env_flags_vartype_macaddr: >>> - cur = value; >>> - for (i = 0; i < 6; i++) { >>> - skip_num(1, cur, &end, 2); >>> - if (cur == end) >>> - return -1; >>> - if (cur + 2 == end && is_hex_prefix(cur)) >>> - return -1; >>> - if (i != 5 && *end != ':') >>> - return -1; >>> - if (i == 5 && *end != '\0') >>> - return -1; >>> - cur = end + 1; >>> - } >>> + if (eth_validate_ethaddr_str(value)) >>> + return -1; >>> break; >>> #endif >>> case env_flags_vartype_end: >>> diff --git a/include/net.h b/include/net.h index d17173d..c487aa7 >>> 100644 >>> --- a/include/net.h >>> +++ b/include/net.h >>> @@ -218,6 +218,7 @@ void eth_try_another(int first_restart); /* >>> Change the >> device */ >>> void eth_set_current(void); /* set nterface to ethcur var */ >>> >>> int eth_get_dev_index(void); /* get the device index */ >>> +int eth_validate_ethaddr_str(const char *addr); >>> void eth_parse_enetaddr(const char *addr, uchar *enetaddr); int >>> eth_getenv_enetaddr(char *name, uchar *enetaddr); int >>> eth_setenv_enetaddr(char *name, const uchar *enetaddr); diff --git >>> a/net/eth.c b/net/eth.c index 953b731..a6fdf1b 100644 >>> --- a/net/eth.c >>> +++ b/net/eth.c >>> @@ -7,6 +7,7 @@ >>> */ >>> >>> #include <common.h> >>> +#include <linux/ctype.h> >>> #include <command.h> >>> #include <dm.h> >>> #include <environment.h> >>> @@ -19,6 +20,35 @@ >>> >>> DECLARE_GLOBAL_DATA_PTR; >>> >>> +int eth_validate_ethaddr_str(const char *addr) { >>> + unsigned long val; >>> + int i; >>> + const char *cur; >>> + char *end; >>> + >>> + if (!addr) >>> + return -1; >>> + >>> + cur = addr; >>> + for (i = 0; i < 6; i++) { >>> + val = simple_strtoul(cur, &end, 16); >>> + if (cur + 1 != end && cur + 2 != end) >>> + return -1; >>> + if (val > 0xff) >>> + return -1; >>> + if (cur + 2 >= end && tolower(*(cur + 1)) == 'x') >>> + return -1; >>> + if (i != 5 && *end != ':') >>> + return -1; >>> + if (i == 5 && *end != '\0') >>> + return -1; >>> + cur = end + 1; >>> + } >>> + >>> + return 0; >>> +} >>> + >>> void eth_parse_enetaddr(const char *addr, uchar *enetaddr) { >>> char *end; >>> >> >> Codrin, >> >> This patch breaks most SPL targets. Please reconsider the location of >> eth_validate_ethaddr_str(). >> >> York _______________________________________________ U-Boot mailing list U-Boot@lists.denx.de http://lists.denx.de/mailman/listinfo/u-boot