Too much top-posting. On Mon, Aug 10, 2015 at 2:41 PM, York Sun <york...@freescale.com> wrote: > 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.
That is probably fine. > Another way is to undef CONFIG_CMD_NET for SPL part. It is default to 'y' in > Kconfig. Joe may have some good suggestion. I don't think this is the reason. The problem is that net is *not* build for SPL, but env is. > 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 _______________________________________________ U-Boot mailing list U-Boot@lists.denx.de http://lists.denx.de/mailman/listinfo/u-boot