ar71xx: rename ath79_parse_mac_addr to ath79_parse_ascii_mac

Rename the function and extend it in order to make it
usable from board setup code.

Signed-off-by: Gabor Juhos <juhosg@openwrt.org>

SVN-Revision: 38085
owl
Gabor Juhos 2013-09-20 16:41:30 +00:00
parent cf5891fb39
commit e312a917d3
2 changed files with 19 additions and 12 deletions

View File

@ -1056,35 +1056,42 @@ void __init ath79_set_mac_base(unsigned char *mac)
memcpy(ath79_mac_base, mac, ETH_ALEN);
}
void __init ath79_parse_mac_addr(char *mac_str)
void __init ath79_parse_ascii_mac(char *mac_str, u8 *mac)
{
u8 tmp[ETH_ALEN];
int t;
t = sscanf(mac_str, "%02hhx:%02hhx:%02hhx:%02hhx:%02hhx:%02hhx",
&tmp[0], &tmp[1], &tmp[2], &tmp[3], &tmp[4], &tmp[5]);
&mac[0], &mac[1], &mac[2], &mac[3], &mac[4], &mac[5]);
if (t != ETH_ALEN)
t = sscanf(mac_str, "%02hhx.%02hhx.%02hhx.%02hhx.%02hhx.%02hhx",
&tmp[0], &tmp[1], &tmp[2], &tmp[3], &tmp[4], &tmp[5]);
&mac[0], &mac[1], &mac[2], &mac[3], &mac[4], &mac[5]);
if (t == ETH_ALEN)
ath79_set_mac_base(tmp);
else
printk(KERN_DEBUG "ar71xx: failed to parse mac address "
"\"%s\"\n", mac_str);
if (t != ETH_ALEN || !is_valid_ether_addr(mac)) {
memset(mac, 0, ETH_ALEN);
printk(KERN_DEBUG "ar71xx: invalid mac address \"%s\"\n",
mac_str);
}
}
static void __init ath79_set_mac_base_ascii(char *str)
{
u8 mac[ETH_ALEN];
ath79_parse_ascii_mac(str, mac);
ath79_set_mac_base(mac);
}
static int __init ath79_ethaddr_setup(char *str)
{
ath79_parse_mac_addr(str);
ath79_set_mac_base_ascii(str);
return 1;
}
__setup("ethaddr=", ath79_ethaddr_setup);
static int __init ath79_kmac_setup(char *str)
{
ath79_parse_mac_addr(str);
ath79_set_mac_base_ascii(str);
return 1;
}
__setup("kmac=", ath79_kmac_setup);

View File

@ -17,7 +17,7 @@
struct platform_device;
extern unsigned char ath79_mac_base[] __initdata;
void ath79_parse_mac_addr(char *mac_str);
void ath79_parse_ascii_mac(char *mac_str, u8 *mac);
void ath79_init_mac(unsigned char *dst, const unsigned char *src,
int offset);
void ath79_init_local_mac(unsigned char *dst, const unsigned char *src);