diff options
author | Matthew Wilcox <matthew@wil.cx> | 2007-07-31 17:00:29 -0400 |
---|---|---|
committer | David S. Miller <davem@davemloft.net> | 2007-07-31 17:00:29 -0400 |
commit | 313674afa8fdced2fe79f50f38e1c387b63d8790 (patch) | |
tree | 40b14cab2f48af45615dacf35c93a268c42b7f9a | |
parent | 61a44b9c4b20d40c41fd1b70a4ceb13b75ea79a4 (diff) |
[NET]: ethtool_perm_addr only has one implementation
All drivers implement ethtool get_perm_addr the same way -- by calling
the generic function. So we can inline the generic function into the
caller and avoid going through the drivers.
Signed-off-by: Matthew Wilcox <matthew@wil.cx>
Signed-off-by: David S. Miller <davem@davemloft.net>
-rw-r--r-- | drivers/net/3c59x.c | 1 | ||||
-rw-r--r-- | drivers/net/8139cp.c | 1 | ||||
-rw-r--r-- | drivers/net/8139too.c | 1 | ||||
-rw-r--r-- | drivers/net/ax88796.c | 1 | ||||
-rw-r--r-- | drivers/net/b44.c | 1 | ||||
-rw-r--r-- | drivers/net/bnx2.c | 1 | ||||
-rw-r--r-- | drivers/net/cxgb3/cxgb3_main.c | 1 | ||||
-rw-r--r-- | drivers/net/e100.c | 1 | ||||
-rw-r--r-- | drivers/net/e1000/e1000_ethtool.c | 1 | ||||
-rw-r--r-- | drivers/net/forcedeth.c | 1 | ||||
-rw-r--r-- | drivers/net/ixgb/ixgb_ethtool.c | 1 | ||||
-rw-r--r-- | drivers/net/ne2k-pci.c | 1 | ||||
-rw-r--r-- | drivers/net/netxen/netxen_nic_ethtool.c | 1 | ||||
-rw-r--r-- | drivers/net/pcnet32.c | 1 | ||||
-rwxr-xr-x | drivers/net/qla3xxx.c | 1 | ||||
-rw-r--r-- | drivers/net/r8169.c | 1 | ||||
-rw-r--r-- | drivers/net/sc92031.c | 1 | ||||
-rw-r--r-- | drivers/net/skge.c | 1 | ||||
-rw-r--r-- | drivers/net/sky2.c | 1 | ||||
-rw-r--r-- | drivers/net/sundance.c | 1 | ||||
-rw-r--r-- | drivers/net/sunvnet.c | 1 | ||||
-rw-r--r-- | drivers/net/tc35815.c | 1 | ||||
-rw-r--r-- | drivers/net/tg3.c | 1 | ||||
-rw-r--r-- | drivers/net/via-rhine.c | 1 | ||||
-rw-r--r-- | include/linux/ethtool.h | 4 | ||||
-rw-r--r-- | net/core/ethtool.c | 43 |
26 files changed, 8 insertions, 63 deletions
diff --git a/drivers/net/3c59x.c b/drivers/net/3c59x.c index 6deb20fc7a08..001c66dd3a94 100644 --- a/drivers/net/3c59x.c +++ b/drivers/net/3c59x.c | |||
@@ -2886,7 +2886,6 @@ static const struct ethtool_ops vortex_ethtool_ops = { | |||
2886 | .set_settings = vortex_set_settings, | 2886 | .set_settings = vortex_set_settings, |
2887 | .get_link = ethtool_op_get_link, | 2887 | .get_link = ethtool_op_get_link, |
2888 | .nway_reset = vortex_nway_reset, | 2888 | .nway_reset = vortex_nway_reset, |
2889 | .get_perm_addr = ethtool_op_get_perm_addr, | ||
2890 | }; | 2889 | }; |
2891 | 2890 | ||
2892 | #ifdef CONFIG_PCI | 2891 | #ifdef CONFIG_PCI |
diff --git a/drivers/net/8139cp.c b/drivers/net/8139cp.c index e970e64bf966..a79f28c7a100 100644 --- a/drivers/net/8139cp.c +++ b/drivers/net/8139cp.c | |||
@@ -1578,7 +1578,6 @@ static const struct ethtool_ops cp_ethtool_ops = { | |||
1578 | .set_wol = cp_set_wol, | 1578 | .set_wol = cp_set_wol, |
1579 | .get_strings = cp_get_strings, | 1579 | .get_strings = cp_get_strings, |
1580 | .get_ethtool_stats = cp_get_ethtool_stats, | 1580 | .get_ethtool_stats = cp_get_ethtool_stats, |
1581 | .get_perm_addr = ethtool_op_get_perm_addr, | ||
1582 | .get_eeprom_len = cp_get_eeprom_len, | 1581 | .get_eeprom_len = cp_get_eeprom_len, |
1583 | .get_eeprom = cp_get_eeprom, | 1582 | .get_eeprom = cp_get_eeprom, |
1584 | .set_eeprom = cp_set_eeprom, | 1583 | .set_eeprom = cp_set_eeprom, |
diff --git a/drivers/net/8139too.c b/drivers/net/8139too.c index 327eaa7b4999..f4e4298d24b9 100644 --- a/drivers/net/8139too.c +++ b/drivers/net/8139too.c | |||
@@ -2452,7 +2452,6 @@ static const struct ethtool_ops rtl8139_ethtool_ops = { | |||
2452 | .get_strings = rtl8139_get_strings, | 2452 | .get_strings = rtl8139_get_strings, |
2453 | .get_stats_count = rtl8139_get_stats_count, | 2453 | .get_stats_count = rtl8139_get_stats_count, |
2454 | .get_ethtool_stats = rtl8139_get_ethtool_stats, | 2454 | .get_ethtool_stats = rtl8139_get_ethtool_stats, |
2455 | .get_perm_addr = ethtool_op_get_perm_addr, | ||
2456 | }; | 2455 | }; |
2457 | 2456 | ||
2458 | static int netdev_ioctl(struct net_device *dev, struct ifreq *rq, int cmd) | 2457 | static int netdev_ioctl(struct net_device *dev, struct ifreq *rq, int cmd) |
diff --git a/drivers/net/ax88796.c b/drivers/net/ax88796.c index e43e8047b90e..83da1770bafb 100644 --- a/drivers/net/ax88796.c +++ b/drivers/net/ax88796.c | |||
@@ -580,7 +580,6 @@ static const struct ethtool_ops ax_ethtool_ops = { | |||
580 | .set_settings = ax_set_settings, | 580 | .set_settings = ax_set_settings, |
581 | .nway_reset = ax_nway_reset, | 581 | .nway_reset = ax_nway_reset, |
582 | .get_link = ax_get_link, | 582 | .get_link = ax_get_link, |
583 | .get_perm_addr = ethtool_op_get_perm_addr, | ||
584 | }; | 583 | }; |
585 | 584 | ||
586 | /* setup code */ | 585 | /* setup code */ |
diff --git a/drivers/net/b44.c b/drivers/net/b44.c index 37f1b6ff5c12..0795df235492 100644 --- a/drivers/net/b44.c +++ b/drivers/net/b44.c | |||
@@ -2033,7 +2033,6 @@ static const struct ethtool_ops b44_ethtool_ops = { | |||
2033 | .get_strings = b44_get_strings, | 2033 | .get_strings = b44_get_strings, |
2034 | .get_stats_count = b44_get_stats_count, | 2034 | .get_stats_count = b44_get_stats_count, |
2035 | .get_ethtool_stats = b44_get_ethtool_stats, | 2035 | .get_ethtool_stats = b44_get_ethtool_stats, |
2036 | .get_perm_addr = ethtool_op_get_perm_addr, | ||
2037 | }; | 2036 | }; |
2038 | 2037 | ||
2039 | static int b44_ioctl(struct net_device *dev, struct ifreq *ifr, int cmd) | 2038 | static int b44_ioctl(struct net_device *dev, struct ifreq *ifr, int cmd) |
diff --git a/drivers/net/bnx2.c b/drivers/net/bnx2.c index a729da061bbb..d53dfc5bbae0 100644 --- a/drivers/net/bnx2.c +++ b/drivers/net/bnx2.c | |||
@@ -6269,7 +6269,6 @@ static const struct ethtool_ops bnx2_ethtool_ops = { | |||
6269 | .phys_id = bnx2_phys_id, | 6269 | .phys_id = bnx2_phys_id, |
6270 | .get_stats_count = bnx2_get_stats_count, | 6270 | .get_stats_count = bnx2_get_stats_count, |
6271 | .get_ethtool_stats = bnx2_get_ethtool_stats, | 6271 | .get_ethtool_stats = bnx2_get_ethtool_stats, |
6272 | .get_perm_addr = ethtool_op_get_perm_addr, | ||
6273 | }; | 6272 | }; |
6274 | 6273 | ||
6275 | /* Called with rtnl_lock */ | 6274 | /* Called with rtnl_lock */ |
diff --git a/drivers/net/cxgb3/cxgb3_main.c b/drivers/net/cxgb3/cxgb3_main.c index 6fd1e5241833..dc5d26988bb3 100644 --- a/drivers/net/cxgb3/cxgb3_main.c +++ b/drivers/net/cxgb3/cxgb3_main.c | |||
@@ -1583,7 +1583,6 @@ static const struct ethtool_ops cxgb_ethtool_ops = { | |||
1583 | .get_wol = get_wol, | 1583 | .get_wol = get_wol, |
1584 | .get_tso = ethtool_op_get_tso, | 1584 | .get_tso = ethtool_op_get_tso, |
1585 | .set_tso = ethtool_op_set_tso, | 1585 | .set_tso = ethtool_op_set_tso, |
1586 | .get_perm_addr = ethtool_op_get_perm_addr | ||
1587 | }; | 1586 | }; |
1588 | 1587 | ||
1589 | static int in_range(int val, int lo, int hi) | 1588 | static int in_range(int val, int lo, int hi) |
diff --git a/drivers/net/e100.c b/drivers/net/e100.c index 6b6401e9304e..280313b9b069 100644 --- a/drivers/net/e100.c +++ b/drivers/net/e100.c | |||
@@ -2506,7 +2506,6 @@ static const struct ethtool_ops e100_ethtool_ops = { | |||
2506 | .phys_id = e100_phys_id, | 2506 | .phys_id = e100_phys_id, |
2507 | .get_stats_count = e100_get_stats_count, | 2507 | .get_stats_count = e100_get_stats_count, |
2508 | .get_ethtool_stats = e100_get_ethtool_stats, | 2508 | .get_ethtool_stats = e100_get_ethtool_stats, |
2509 | .get_perm_addr = ethtool_op_get_perm_addr, | ||
2510 | }; | 2509 | }; |
2511 | 2510 | ||
2512 | static int e100_do_ioctl(struct net_device *netdev, struct ifreq *ifr, int cmd) | 2511 | static int e100_do_ioctl(struct net_device *netdev, struct ifreq *ifr, int cmd) |
diff --git a/drivers/net/e1000/e1000_ethtool.c b/drivers/net/e1000/e1000_ethtool.c index bb08375b5f13..c90c92e72d2a 100644 --- a/drivers/net/e1000/e1000_ethtool.c +++ b/drivers/net/e1000/e1000_ethtool.c | |||
@@ -1973,7 +1973,6 @@ static const struct ethtool_ops e1000_ethtool_ops = { | |||
1973 | .phys_id = e1000_phys_id, | 1973 | .phys_id = e1000_phys_id, |
1974 | .get_stats_count = e1000_get_stats_count, | 1974 | .get_stats_count = e1000_get_stats_count, |
1975 | .get_ethtool_stats = e1000_get_ethtool_stats, | 1975 | .get_ethtool_stats = e1000_get_ethtool_stats, |
1976 | .get_perm_addr = ethtool_op_get_perm_addr, | ||
1977 | }; | 1976 | }; |
1978 | 1977 | ||
1979 | void e1000_set_ethtool_ops(struct net_device *netdev) | 1978 | void e1000_set_ethtool_ops(struct net_device *netdev) |
diff --git a/drivers/net/forcedeth.c b/drivers/net/forcedeth.c index 51e1cb472738..69f5f365239a 100644 --- a/drivers/net/forcedeth.c +++ b/drivers/net/forcedeth.c | |||
@@ -4707,7 +4707,6 @@ static const struct ethtool_ops ops = { | |||
4707 | .get_regs_len = nv_get_regs_len, | 4707 | .get_regs_len = nv_get_regs_len, |
4708 | .get_regs = nv_get_regs, | 4708 | .get_regs = nv_get_regs, |
4709 | .nway_reset = nv_nway_reset, | 4709 | .nway_reset = nv_nway_reset, |
4710 | .get_perm_addr = ethtool_op_get_perm_addr, | ||
4711 | .get_tso = ethtool_op_get_tso, | 4710 | .get_tso = ethtool_op_get_tso, |
4712 | .set_tso = nv_set_tso, | 4711 | .set_tso = nv_set_tso, |
4713 | .get_ringparam = nv_get_ringparam, | 4712 | .get_ringparam = nv_get_ringparam, |
diff --git a/drivers/net/ixgb/ixgb_ethtool.c b/drivers/net/ixgb/ixgb_ethtool.c index afde84868bea..0413cd95eda7 100644 --- a/drivers/net/ixgb/ixgb_ethtool.c +++ b/drivers/net/ixgb/ixgb_ethtool.c | |||
@@ -724,7 +724,6 @@ static const struct ethtool_ops ixgb_ethtool_ops = { | |||
724 | .phys_id = ixgb_phys_id, | 724 | .phys_id = ixgb_phys_id, |
725 | .get_stats_count = ixgb_get_stats_count, | 725 | .get_stats_count = ixgb_get_stats_count, |
726 | .get_ethtool_stats = ixgb_get_ethtool_stats, | 726 | .get_ethtool_stats = ixgb_get_ethtool_stats, |
727 | .get_perm_addr = ethtool_op_get_perm_addr, | ||
728 | }; | 727 | }; |
729 | 728 | ||
730 | void ixgb_set_ethtool_ops(struct net_device *netdev) | 729 | void ixgb_set_ethtool_ops(struct net_device *netdev) |
diff --git a/drivers/net/ne2k-pci.c b/drivers/net/ne2k-pci.c index cfdeaf7aa163..f81d9398d605 100644 --- a/drivers/net/ne2k-pci.c +++ b/drivers/net/ne2k-pci.c | |||
@@ -638,7 +638,6 @@ static const struct ethtool_ops ne2k_pci_ethtool_ops = { | |||
638 | .get_drvinfo = ne2k_pci_get_drvinfo, | 638 | .get_drvinfo = ne2k_pci_get_drvinfo, |
639 | .get_tx_csum = ethtool_op_get_tx_csum, | 639 | .get_tx_csum = ethtool_op_get_tx_csum, |
640 | .get_sg = ethtool_op_get_sg, | 640 | .get_sg = ethtool_op_get_sg, |
641 | .get_perm_addr = ethtool_op_get_perm_addr, | ||
642 | }; | 641 | }; |
643 | 642 | ||
644 | static void __devexit ne2k_pci_remove_one (struct pci_dev *pdev) | 643 | static void __devexit ne2k_pci_remove_one (struct pci_dev *pdev) |
diff --git a/drivers/net/netxen/netxen_nic_ethtool.c b/drivers/net/netxen/netxen_nic_ethtool.c index 0175f6c353f6..a6138b474b4a 100644 --- a/drivers/net/netxen/netxen_nic_ethtool.c +++ b/drivers/net/netxen/netxen_nic_ethtool.c | |||
@@ -755,5 +755,4 @@ struct ethtool_ops netxen_nic_ethtool_ops = { | |||
755 | .get_strings = netxen_nic_get_strings, | 755 | .get_strings = netxen_nic_get_strings, |
756 | .get_stats_count = netxen_nic_get_stats_count, | 756 | .get_stats_count = netxen_nic_get_stats_count, |
757 | .get_ethtool_stats = netxen_nic_get_ethtool_stats, | 757 | .get_ethtool_stats = netxen_nic_get_ethtool_stats, |
758 | .get_perm_addr = ethtool_op_get_perm_addr, | ||
759 | }; | 758 | }; |
diff --git a/drivers/net/pcnet32.c b/drivers/net/pcnet32.c index 465485a3fbc6..e6a67531de99 100644 --- a/drivers/net/pcnet32.c +++ b/drivers/net/pcnet32.c | |||
@@ -1515,7 +1515,6 @@ static const struct ethtool_ops pcnet32_ethtool_ops = { | |||
1515 | .phys_id = pcnet32_phys_id, | 1515 | .phys_id = pcnet32_phys_id, |
1516 | .get_regs_len = pcnet32_get_regs_len, | 1516 | .get_regs_len = pcnet32_get_regs_len, |
1517 | .get_regs = pcnet32_get_regs, | 1517 | .get_regs = pcnet32_get_regs, |
1518 | .get_perm_addr = ethtool_op_get_perm_addr, | ||
1519 | }; | 1518 | }; |
1520 | 1519 | ||
1521 | /* only probes for non-PCI devices, the rest are handled by | 1520 | /* only probes for non-PCI devices, the rest are handled by |
diff --git a/drivers/net/qla3xxx.c b/drivers/net/qla3xxx.c index 8be8be451ada..69da95b5ad0c 100755 --- a/drivers/net/qla3xxx.c +++ b/drivers/net/qla3xxx.c | |||
@@ -1904,7 +1904,6 @@ static void ql_get_pauseparam(struct net_device *ndev, | |||
1904 | static const struct ethtool_ops ql3xxx_ethtool_ops = { | 1904 | static const struct ethtool_ops ql3xxx_ethtool_ops = { |
1905 | .get_settings = ql_get_settings, | 1905 | .get_settings = ql_get_settings, |
1906 | .get_drvinfo = ql_get_drvinfo, | 1906 | .get_drvinfo = ql_get_drvinfo, |
1907 | .get_perm_addr = ethtool_op_get_perm_addr, | ||
1908 | .get_link = ethtool_op_get_link, | 1907 | .get_link = ethtool_op_get_link, |
1909 | .get_msglevel = ql_get_msglevel, | 1908 | .get_msglevel = ql_get_msglevel, |
1910 | .set_msglevel = ql_set_msglevel, | 1909 | .set_msglevel = ql_set_msglevel, |
diff --git a/drivers/net/r8169.c b/drivers/net/r8169.c index bb6896ae3151..c9333b9dd51a 100644 --- a/drivers/net/r8169.c +++ b/drivers/net/r8169.c | |||
@@ -1066,7 +1066,6 @@ static const struct ethtool_ops rtl8169_ethtool_ops = { | |||
1066 | .get_strings = rtl8169_get_strings, | 1066 | .get_strings = rtl8169_get_strings, |
1067 | .get_stats_count = rtl8169_get_stats_count, | 1067 | .get_stats_count = rtl8169_get_stats_count, |
1068 | .get_ethtool_stats = rtl8169_get_ethtool_stats, | 1068 | .get_ethtool_stats = rtl8169_get_ethtool_stats, |
1069 | .get_perm_addr = ethtool_op_get_perm_addr, | ||
1070 | }; | 1069 | }; |
1071 | 1070 | ||
1072 | static void rtl8169_write_gmii_reg_bit(void __iomem *ioaddr, int reg, | 1071 | static void rtl8169_write_gmii_reg_bit(void __iomem *ioaddr, int reg, |
diff --git a/drivers/net/sc92031.c b/drivers/net/sc92031.c index 5b7284c955dc..872cb1cc9c41 100644 --- a/drivers/net/sc92031.c +++ b/drivers/net/sc92031.c | |||
@@ -1402,7 +1402,6 @@ static struct ethtool_ops sc92031_ethtool_ops = { | |||
1402 | .get_strings = sc92031_ethtool_get_strings, | 1402 | .get_strings = sc92031_ethtool_get_strings, |
1403 | .get_stats_count = sc92031_ethtool_get_stats_count, | 1403 | .get_stats_count = sc92031_ethtool_get_stats_count, |
1404 | .get_ethtool_stats = sc92031_ethtool_get_ethtool_stats, | 1404 | .get_ethtool_stats = sc92031_ethtool_get_ethtool_stats, |
1405 | .get_perm_addr = ethtool_op_get_perm_addr, | ||
1406 | .get_ufo = ethtool_op_get_ufo, | 1405 | .get_ufo = ethtool_op_get_ufo, |
1407 | }; | 1406 | }; |
1408 | 1407 | ||
diff --git a/drivers/net/skge.c b/drivers/net/skge.c index 776692946562..e3d8520209b8 100644 --- a/drivers/net/skge.c +++ b/drivers/net/skge.c | |||
@@ -821,7 +821,6 @@ static const struct ethtool_ops skge_ethtool_ops = { | |||
821 | .phys_id = skge_phys_id, | 821 | .phys_id = skge_phys_id, |
822 | .get_stats_count = skge_get_stats_count, | 822 | .get_stats_count = skge_get_stats_count, |
823 | .get_ethtool_stats = skge_get_ethtool_stats, | 823 | .get_ethtool_stats = skge_get_ethtool_stats, |
824 | .get_perm_addr = ethtool_op_get_perm_addr, | ||
825 | }; | 824 | }; |
826 | 825 | ||
827 | /* | 826 | /* |
diff --git a/drivers/net/sky2.c b/drivers/net/sky2.c index 13f08a390e1f..e7a2eadcc3b0 100644 --- a/drivers/net/sky2.c +++ b/drivers/net/sky2.c | |||
@@ -3548,7 +3548,6 @@ static const struct ethtool_ops sky2_ethtool_ops = { | |||
3548 | .phys_id = sky2_phys_id, | 3548 | .phys_id = sky2_phys_id, |
3549 | .get_stats_count = sky2_get_stats_count, | 3549 | .get_stats_count = sky2_get_stats_count, |
3550 | .get_ethtool_stats = sky2_get_ethtool_stats, | 3550 | .get_ethtool_stats = sky2_get_ethtool_stats, |
3551 | .get_perm_addr = ethtool_op_get_perm_addr, | ||
3552 | }; | 3551 | }; |
3553 | 3552 | ||
3554 | #ifdef CONFIG_SKY2_DEBUG | 3553 | #ifdef CONFIG_SKY2_DEBUG |
diff --git a/drivers/net/sundance.c b/drivers/net/sundance.c index af0c9831074c..a8f2af8f778a 100644 --- a/drivers/net/sundance.c +++ b/drivers/net/sundance.c | |||
@@ -1586,7 +1586,6 @@ static const struct ethtool_ops ethtool_ops = { | |||
1586 | .get_link = get_link, | 1586 | .get_link = get_link, |
1587 | .get_msglevel = get_msglevel, | 1587 | .get_msglevel = get_msglevel, |
1588 | .set_msglevel = set_msglevel, | 1588 | .set_msglevel = set_msglevel, |
1589 | .get_perm_addr = ethtool_op_get_perm_addr, | ||
1590 | }; | 1589 | }; |
1591 | 1590 | ||
1592 | static int netdev_ioctl(struct net_device *dev, struct ifreq *rq, int cmd) | 1591 | static int netdev_ioctl(struct net_device *dev, struct ifreq *rq, int cmd) |
diff --git a/drivers/net/sunvnet.c b/drivers/net/sunvnet.c index 61f98251feab..ff1028a597df 100644 --- a/drivers/net/sunvnet.c +++ b/drivers/net/sunvnet.c | |||
@@ -906,7 +906,6 @@ static const struct ethtool_ops vnet_ethtool_ops = { | |||
906 | .get_msglevel = vnet_get_msglevel, | 906 | .get_msglevel = vnet_get_msglevel, |
907 | .set_msglevel = vnet_set_msglevel, | 907 | .set_msglevel = vnet_set_msglevel, |
908 | .get_link = ethtool_op_get_link, | 908 | .get_link = ethtool_op_get_link, |
909 | .get_perm_addr = ethtool_op_get_perm_addr, | ||
910 | }; | 909 | }; |
911 | 910 | ||
912 | static void vnet_port_free_tx_bufs(struct vnet_port *port) | 911 | static void vnet_port_free_tx_bufs(struct vnet_port *port) |
diff --git a/drivers/net/tc35815.c b/drivers/net/tc35815.c index 7f94ca930988..ec41469eee82 100644 --- a/drivers/net/tc35815.c +++ b/drivers/net/tc35815.c | |||
@@ -2198,7 +2198,6 @@ static const struct ethtool_ops tc35815_ethtool_ops = { | |||
2198 | .get_strings = tc35815_get_strings, | 2198 | .get_strings = tc35815_get_strings, |
2199 | .get_stats_count = tc35815_get_stats_count, | 2199 | .get_stats_count = tc35815_get_stats_count, |
2200 | .get_ethtool_stats = tc35815_get_ethtool_stats, | 2200 | .get_ethtool_stats = tc35815_get_ethtool_stats, |
2201 | .get_perm_addr = ethtool_op_get_perm_addr, | ||
2202 | }; | 2201 | }; |
2203 | 2202 | ||
2204 | static int tc35815_ioctl(struct net_device *dev, struct ifreq *rq, int cmd) | 2203 | static int tc35815_ioctl(struct net_device *dev, struct ifreq *rq, int cmd) |
diff --git a/drivers/net/tg3.c b/drivers/net/tg3.c index 887b9a5cfe48..dc41c055ebb5 100644 --- a/drivers/net/tg3.c +++ b/drivers/net/tg3.c | |||
@@ -9294,7 +9294,6 @@ static const struct ethtool_ops tg3_ethtool_ops = { | |||
9294 | .get_ethtool_stats = tg3_get_ethtool_stats, | 9294 | .get_ethtool_stats = tg3_get_ethtool_stats, |
9295 | .get_coalesce = tg3_get_coalesce, | 9295 | .get_coalesce = tg3_get_coalesce, |
9296 | .set_coalesce = tg3_set_coalesce, | 9296 | .set_coalesce = tg3_set_coalesce, |
9297 | .get_perm_addr = ethtool_op_get_perm_addr, | ||
9298 | }; | 9297 | }; |
9299 | 9298 | ||
9300 | static void __devinit tg3_get_eeprom_size(struct tg3 *tp) | 9299 | static void __devinit tg3_get_eeprom_size(struct tg3 *tp) |
diff --git a/drivers/net/via-rhine.c b/drivers/net/via-rhine.c index f51c2c138f10..c3fe230695a0 100644 --- a/drivers/net/via-rhine.c +++ b/drivers/net/via-rhine.c | |||
@@ -1805,7 +1805,6 @@ static const struct ethtool_ops netdev_ethtool_ops = { | |||
1805 | .set_wol = rhine_set_wol, | 1805 | .set_wol = rhine_set_wol, |
1806 | .get_sg = ethtool_op_get_sg, | 1806 | .get_sg = ethtool_op_get_sg, |
1807 | .get_tx_csum = ethtool_op_get_tx_csum, | 1807 | .get_tx_csum = ethtool_op_get_tx_csum, |
1808 | .get_perm_addr = ethtool_op_get_perm_addr, | ||
1809 | }; | 1808 | }; |
1810 | 1809 | ||
1811 | static int netdev_ioctl(struct net_device *dev, struct ifreq *rq, int cmd) | 1810 | static int netdev_ioctl(struct net_device *dev, struct ifreq *rq, int cmd) |
diff --git a/include/linux/ethtool.h b/include/linux/ethtool.h index 3a632244f31b..23ccea811297 100644 --- a/include/linux/ethtool.h +++ b/include/linux/ethtool.h | |||
@@ -270,8 +270,6 @@ u32 ethtool_op_get_sg(struct net_device *dev); | |||
270 | int ethtool_op_set_sg(struct net_device *dev, u32 data); | 270 | int ethtool_op_set_sg(struct net_device *dev, u32 data); |
271 | u32 ethtool_op_get_tso(struct net_device *dev); | 271 | u32 ethtool_op_get_tso(struct net_device *dev); |
272 | int ethtool_op_set_tso(struct net_device *dev, u32 data); | 272 | int ethtool_op_set_tso(struct net_device *dev, u32 data); |
273 | int ethtool_op_get_perm_addr(struct net_device *dev, | ||
274 | struct ethtool_perm_addr *addr, u8 *data); | ||
275 | u32 ethtool_op_get_ufo(struct net_device *dev); | 273 | u32 ethtool_op_get_ufo(struct net_device *dev); |
276 | int ethtool_op_set_ufo(struct net_device *dev, u32 data); | 274 | int ethtool_op_set_ufo(struct net_device *dev, u32 data); |
277 | 275 | ||
@@ -309,7 +307,6 @@ int ethtool_op_set_ufo(struct net_device *dev, u32 data); | |||
309 | * get_strings: Return a set of strings that describe the requested objects | 307 | * get_strings: Return a set of strings that describe the requested objects |
310 | * phys_id: Identify the device | 308 | * phys_id: Identify the device |
311 | * get_stats: Return statistics about the device | 309 | * get_stats: Return statistics about the device |
312 | * get_perm_addr: Gets the permanent hardware address | ||
313 | * | 310 | * |
314 | * Description: | 311 | * Description: |
315 | * | 312 | * |
@@ -368,7 +365,6 @@ struct ethtool_ops { | |||
368 | int (*phys_id)(struct net_device *, u32); | 365 | int (*phys_id)(struct net_device *, u32); |
369 | int (*get_stats_count)(struct net_device *); | 366 | int (*get_stats_count)(struct net_device *); |
370 | void (*get_ethtool_stats)(struct net_device *, struct ethtool_stats *, u64 *); | 367 | void (*get_ethtool_stats)(struct net_device *, struct ethtool_stats *, u64 *); |
371 | int (*get_perm_addr)(struct net_device *, struct ethtool_perm_addr *, u8 *); | ||
372 | int (*begin)(struct net_device *); | 368 | int (*begin)(struct net_device *); |
373 | void (*complete)(struct net_device *); | 369 | void (*complete)(struct net_device *); |
374 | u32 (*get_ufo)(struct net_device *); | 370 | u32 (*get_ufo)(struct net_device *); |
diff --git a/net/core/ethtool.c b/net/core/ethtool.c index 2bf565e8d0b3..2ab0a60046a5 100644 --- a/net/core/ethtool.c +++ b/net/core/ethtool.c | |||
@@ -95,18 +95,6 @@ int ethtool_op_set_tso(struct net_device *dev, u32 data) | |||
95 | return 0; | 95 | return 0; |
96 | } | 96 | } |
97 | 97 | ||
98 | int ethtool_op_get_perm_addr(struct net_device *dev, struct ethtool_perm_addr *addr, u8 *data) | ||
99 | { | ||
100 | unsigned char len = dev->addr_len; | ||
101 | if ( addr->size < len ) | ||
102 | return -ETOOSMALL; | ||
103 | |||
104 | addr->size = len; | ||
105 | memcpy(data, dev->perm_addr, len); | ||
106 | return 0; | ||
107 | } | ||
108 | |||
109 | |||
110 | u32 ethtool_op_get_ufo(struct net_device *dev) | 98 | u32 ethtool_op_get_ufo(struct net_device *dev) |
111 | { | 99 | { |
112 | return (dev->features & NETIF_F_UFO) != 0; | 100 | return (dev->features & NETIF_F_UFO) != 0; |
@@ -779,34 +767,20 @@ static int ethtool_get_stats(struct net_device *dev, void __user *useraddr) | |||
779 | static int ethtool_get_perm_addr(struct net_device *dev, void __user *useraddr) | 767 | static int ethtool_get_perm_addr(struct net_device *dev, void __user *useraddr) |
780 | { | 768 | { |
781 | struct ethtool_perm_addr epaddr; | 769 | struct ethtool_perm_addr epaddr; |
782 | u8 *data; | ||
783 | int ret; | ||
784 | |||
785 | if (!dev->ethtool_ops->get_perm_addr) | ||
786 | return -EOPNOTSUPP; | ||
787 | 770 | ||
788 | if (copy_from_user(&epaddr,useraddr,sizeof(epaddr))) | 771 | if (copy_from_user(&epaddr, useraddr, sizeof(epaddr))) |
789 | return -EFAULT; | 772 | return -EFAULT; |
790 | 773 | ||
791 | data = kmalloc(epaddr.size, GFP_USER); | 774 | if (epaddr.size < dev->addr_len) |
792 | if (!data) | 775 | return -ETOOSMALL; |
793 | return -ENOMEM; | 776 | epaddr.size = dev->addr_len; |
794 | |||
795 | ret = dev->ethtool_ops->get_perm_addr(dev,&epaddr,data); | ||
796 | if (ret) | ||
797 | return ret; | ||
798 | 777 | ||
799 | ret = -EFAULT; | ||
800 | if (copy_to_user(useraddr, &epaddr, sizeof(epaddr))) | 778 | if (copy_to_user(useraddr, &epaddr, sizeof(epaddr))) |
801 | goto out; | 779 | return -EFAULT; |
802 | useraddr += sizeof(epaddr); | 780 | useraddr += sizeof(epaddr); |
803 | if (copy_to_user(useraddr, data, epaddr.size)) | 781 | if (copy_to_user(useraddr, dev->perm_addr, epaddr.size)) |
804 | goto out; | 782 | return -EFAULT; |
805 | ret = 0; | 783 | return 0; |
806 | |||
807 | out: | ||
808 | kfree(data); | ||
809 | return ret; | ||
810 | } | 784 | } |
811 | 785 | ||
812 | /* The main entry point in this file. Called from net/core/dev.c */ | 786 | /* The main entry point in this file. Called from net/core/dev.c */ |
@@ -976,7 +950,6 @@ int dev_ethtool(struct ifreq *ifr) | |||
976 | 950 | ||
977 | EXPORT_SYMBOL(dev_ethtool); | 951 | EXPORT_SYMBOL(dev_ethtool); |
978 | EXPORT_SYMBOL(ethtool_op_get_link); | 952 | EXPORT_SYMBOL(ethtool_op_get_link); |
979 | EXPORT_SYMBOL_GPL(ethtool_op_get_perm_addr); | ||
980 | EXPORT_SYMBOL(ethtool_op_get_sg); | 953 | EXPORT_SYMBOL(ethtool_op_get_sg); |
981 | EXPORT_SYMBOL(ethtool_op_get_tso); | 954 | EXPORT_SYMBOL(ethtool_op_get_tso); |
982 | EXPORT_SYMBOL(ethtool_op_get_tx_csum); | 955 | EXPORT_SYMBOL(ethtool_op_get_tx_csum); |