]> err.no Git - linux-2.6/blobdiff - drivers/net/forcedeth.c
Generic bitbanged MDIO library
[linux-2.6] / drivers / net / forcedeth.c
index be744573b1c2778013c6bd0b21d36334745eed6d..dae30b731342ef5e25e98318018984893b687665 100644 (file)
@@ -4333,16 +4333,26 @@ static int nv_set_sg(struct net_device *dev, u32 data)
                return -EOPNOTSUPP;
 }
 
-static int nv_get_stats_count(struct net_device *dev)
+static int nv_get_sset_count(struct net_device *dev, int sset)
 {
        struct fe_priv *np = netdev_priv(dev);
 
-       if (np->driver_data & DEV_HAS_STATISTICS_V1)
-               return NV_DEV_STATISTICS_V1_COUNT;
-       else if (np->driver_data & DEV_HAS_STATISTICS_V2)
-               return NV_DEV_STATISTICS_V2_COUNT;
-       else
-               return 0;
+       switch (sset) {
+       case ETH_SS_TEST:
+               if (np->driver_data & DEV_HAS_TEST_EXTENDED)
+                       return NV_TEST_COUNT_EXTENDED;
+               else
+                       return NV_TEST_COUNT_BASE;
+       case ETH_SS_STATS:
+               if (np->driver_data & DEV_HAS_STATISTICS_V1)
+                       return NV_DEV_STATISTICS_V1_COUNT;
+               else if (np->driver_data & DEV_HAS_STATISTICS_V2)
+                       return NV_DEV_STATISTICS_V2_COUNT;
+               else
+                       return 0;
+       default:
+               return -EOPNOTSUPP;
+       }
 }
 
 static void nv_get_ethtool_stats(struct net_device *dev, struct ethtool_stats *estats, u64 *buffer)
@@ -4352,17 +4362,7 @@ static void nv_get_ethtool_stats(struct net_device *dev, struct ethtool_stats *e
        /* update stats */
        nv_do_stats_poll((unsigned long)dev);
 
-       memcpy(buffer, &np->estats, nv_get_stats_count(dev)*sizeof(u64));
-}
-
-static int nv_self_test_count(struct net_device *dev)
-{
-       struct fe_priv *np = netdev_priv(dev);
-
-       if (np->driver_data & DEV_HAS_TEST_EXTENDED)
-               return NV_TEST_COUNT_EXTENDED;
-       else
-               return NV_TEST_COUNT_BASE;
+       memcpy(buffer, &np->estats, nv_get_sset_count(dev, ETH_SS_STATS)*sizeof(u64));
 }
 
 static int nv_link_test(struct net_device *dev)
@@ -4609,7 +4609,7 @@ static void nv_self_test(struct net_device *dev, struct ethtool_test *test, u64
        struct fe_priv *np = netdev_priv(dev);
        u8 __iomem *base = get_hwbase(dev);
        int result;
-       memset(buffer, 0, nv_self_test_count(dev)*sizeof(u64));
+       memset(buffer, 0, nv_get_sset_count(dev, ETH_SS_TEST)*sizeof(u64));
 
        if (!nv_link_test(dev)) {
                test->flags |= ETH_TEST_FL_FAILED;
@@ -4692,10 +4692,10 @@ static void nv_get_strings(struct net_device *dev, u32 stringset, u8 *buffer)
 {
        switch (stringset) {
        case ETH_SS_STATS:
-               memcpy(buffer, &nv_estats_str, nv_get_stats_count(dev)*sizeof(struct nv_ethtool_str));
+               memcpy(buffer, &nv_estats_str, nv_get_sset_count(dev, ETH_SS_STATS)*sizeof(struct nv_ethtool_str));
                break;
        case ETH_SS_TEST:
-               memcpy(buffer, &nv_etests_str, nv_self_test_count(dev)*sizeof(struct nv_ethtool_str));
+               memcpy(buffer, &nv_etests_str, nv_get_sset_count(dev, ETH_SS_TEST)*sizeof(struct nv_ethtool_str));
                break;
        }
 }
@@ -4720,9 +4720,8 @@ static const struct ethtool_ops ops = {
        .set_tx_csum = nv_set_tx_csum,
        .set_sg = nv_set_sg,
        .get_strings = nv_get_strings,
-       .get_stats_count = nv_get_stats_count,
        .get_ethtool_stats = nv_get_ethtool_stats,
-       .self_test_count = nv_self_test_count,
+       .get_sset_count = nv_get_sset_count,
        .self_test = nv_self_test,
 };
 
@@ -4918,7 +4917,7 @@ static int nv_open(struct net_device *dev)
        if (ret) {
                netif_carrier_on(dev);
        } else {
-               printk("%s: no link during initialization.\n", dev->name);
+               printk(KERN_INFO "%s: no link during initialization.\n", dev->name);
                netif_carrier_off(dev);
        }
        if (oom)
@@ -4991,6 +4990,7 @@ static int __devinit nv_probe(struct pci_dev *pci_dev, const struct pci_device_i
        u32 powerstate, txreg;
        u32 phystate_orig = 0, phystate;
        int phyinitialized = 0;
+       DECLARE_MAC_BUF(mac);
 
        dev = alloc_etherdev(sizeof(struct fe_priv));
        err = -ENOMEM;
@@ -5205,10 +5205,8 @@ static int __devinit nv_probe(struct pci_dev *pci_dev, const struct pci_device_i
                 * Bad mac address. At least one bios sets the mac address
                 * to 01:23:45:67:89:ab
                 */
-               printk(KERN_ERR "%s: Invalid Mac address detected: %02x:%02x:%02x:%02x:%02x:%02x\n",
-                       pci_name(pci_dev),
-                       dev->dev_addr[0], dev->dev_addr[1], dev->dev_addr[2],
-                       dev->dev_addr[3], dev->dev_addr[4], dev->dev_addr[5]);
+               printk(KERN_ERR "%s: Invalid Mac address detected: %s\n",
+                      pci_name(pci_dev), print_mac(mac, dev->dev_addr));
                printk(KERN_ERR "Please complain to your hardware vendor. Switching to a random MAC.\n");
                dev->dev_addr[0] = 0x00;
                dev->dev_addr[1] = 0x00;
@@ -5216,9 +5214,8 @@ static int __devinit nv_probe(struct pci_dev *pci_dev, const struct pci_device_i
                get_random_bytes(&dev->dev_addr[3], 3);
        }
 
-       dprintk(KERN_DEBUG "%s: MAC Address %02x:%02x:%02x:%02x:%02x:%02x\n", pci_name(pci_dev),
-                       dev->dev_addr[0], dev->dev_addr[1], dev->dev_addr[2],
-                       dev->dev_addr[3], dev->dev_addr[4], dev->dev_addr[5]);
+       dprintk(KERN_DEBUG "%s: MAC Address %s\n",
+               pci_name(pci_dev), print_mac(mac, dev->dev_addr));
 
        /* set mac address */
        nv_copy_mac_to_hw(dev);