]> Pileus Git - ~andy/linux/blobdiff - drivers/atm/nicstar.c
atm: nicstar: re-use native mac_pton() helper
[~andy/linux] / drivers / atm / nicstar.c
index 6587dc295eb0e85178a29c11547c0bf04d410de6..409502a78e7ebcc964ed1ae3cf4500b1c92139a8 100644 (file)
@@ -153,7 +153,6 @@ static int ns_ioctl(struct atm_dev *dev, unsigned int cmd, void __user * arg);
 static void which_list(ns_dev * card, struct sk_buff *skb);
 #endif
 static void ns_poll(unsigned long arg);
-static int ns_parse_mac(char *mac, unsigned char *esi);
 static void ns_phy_put(struct atm_dev *dev, unsigned char value,
                       unsigned long addr);
 static unsigned char ns_phy_get(struct atm_dev *dev, unsigned long addr);
@@ -779,7 +778,7 @@ static int ns_init_card(int i, struct pci_dev *pcidev)
                return error;
        }
 
-       if (ns_parse_mac(mac[i], card->atmdev->esi)) {
+       if (mac[i] == NULL || mac_pton(mac[i], card->atmdev->esi)) {
                nicstar_read_eprom(card->membase, NICSTAR_EPROM_MAC_ADDR_OFFSET,
                                   card->atmdev->esi, 6);
                if (memcmp(card->atmdev->esi, "\x00\x00\x00\x00\x00\x00", 6) ==
@@ -2802,29 +2801,6 @@ static void ns_poll(unsigned long arg)
        PRINTK("nicstar: Leaving ns_poll().\n");
 }
 
-static int ns_parse_mac(char *mac, unsigned char *esi)
-{
-       int i, j;
-       short byte1, byte0;
-
-       if (mac == NULL || esi == NULL)
-               return -1;
-       j = 0;
-       for (i = 0; i < 6; i++) {
-               if ((byte1 = hex_to_bin(mac[j++])) < 0)
-                       return -1;
-               if ((byte0 = hex_to_bin(mac[j++])) < 0)
-                       return -1;
-               esi[i] = (unsigned char)(byte1 * 16 + byte0);
-               if (i < 5) {
-                       if (mac[j++] != ':')
-                               return -1;
-               }
-       }
-       return 0;
-}
-
-
 static void ns_phy_put(struct atm_dev *dev, unsigned char value,
                       unsigned long addr)
 {