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
master
Gabor Juhos 11 years ago
parent cf5891fb39
commit e312a917d3
  1. 29
      target/linux/ar71xx/files/arch/mips/ath79/dev-eth.c
  2. 2
      target/linux/ar71xx/files/arch/mips/ath79/dev-eth.h

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

@ -17,7 +17,7 @@
struct platform_device; struct platform_device;
extern unsigned char ath79_mac_base[] __initdata; 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, void ath79_init_mac(unsigned char *dst, const unsigned char *src,
int offset); int offset);
void ath79_init_local_mac(unsigned char *dst, const unsigned char *src); void ath79_init_local_mac(unsigned char *dst, const unsigned char *src);

Loading…
Cancel
Save