Add generic ethtool operation for getting permanenet hardware address. Signed-off-by: John W. Linville <[EMAIL PROTECTED]> --- This moves and renames the basically generic e1000_get_perm_addr routine to ethtool_op_get_perm_addr, and causes e1000 to make use of the new name.
drivers/net/e1000/e1000_ethtool.c | 9 +-------- include/linux/ethtool.h | 1 + net/core/ethtool.c | 7 +++++++ 3 files changed, 9 insertions(+), 8 deletions(-) diff --git a/drivers/net/e1000/e1000_ethtool.c b/drivers/net/e1000/e1000_ethtool.c --- a/drivers/net/e1000/e1000_ethtool.c +++ b/drivers/net/e1000/e1000_ethtool.c @@ -1704,13 +1704,6 @@ e1000_get_strings(struct net_device *net } } -static int -e1000_get_perm_addr(struct net_device *netdev, struct ethtool_addr *eaddr) -{ - memcpy(eaddr->addr, netdev->perm_addr, ETH_MAX_ADDR_LEN); - return 0; -} - struct ethtool_ops e1000_ethtool_ops = { .get_settings = e1000_get_settings, .set_settings = e1000_set_settings, @@ -1746,7 +1739,7 @@ struct ethtool_ops e1000_ethtool_ops = { .phys_id = e1000_phys_id, .get_stats_count = e1000_get_stats_count, .get_ethtool_stats = e1000_get_ethtool_stats, - .get_perm_addr = e1000_get_perm_addr, + .get_perm_addr = ethtool_op_get_perm_addr, }; void e1000_set_ethtool_ops(struct net_device *netdev) diff --git a/include/linux/ethtool.h b/include/linux/ethtool.h --- a/include/linux/ethtool.h +++ b/include/linux/ethtool.h @@ -268,6 +268,7 @@ u32 ethtool_op_get_sg(struct net_device int ethtool_op_set_sg(struct net_device *dev, u32 data); u32 ethtool_op_get_tso(struct net_device *dev); int ethtool_op_set_tso(struct net_device *dev, u32 data); +int ethtool_op_get_perm_addr(struct net_device *dev, struct ethtool_addr *); /** * ðtool_ops - Alter and report network device settings diff --git a/net/core/ethtool.c b/net/core/ethtool.c --- a/net/core/ethtool.c +++ b/net/core/ethtool.c @@ -81,6 +81,12 @@ int ethtool_op_set_tso(struct net_device return 0; } +int ethtool_op_get_perm_addr(struct net_device *netdev, struct ethtool_addr *eaddr) +{ + memcpy(eaddr->addr, netdev->perm_addr, ETH_MAX_ADDR_LEN); + return 0; +} + /* Handlers for each ethtool command */ static int ethtool_get_settings(struct net_device *dev, void __user *useraddr) @@ -845,6 +851,7 @@ int dev_ethtool(struct ifreq *ifr) EXPORT_SYMBOL(dev_ethtool); EXPORT_SYMBOL(ethtool_op_get_link); +EXPORT_SYMBOL_GPL(ethtool_op_get_perm_addr); EXPORT_SYMBOL(ethtool_op_get_sg); EXPORT_SYMBOL(ethtool_op_get_tso); EXPORT_SYMBOL(ethtool_op_get_tx_csum); -- John W. Linville [EMAIL PROTECTED] - To unsubscribe from this list: send the line "unsubscribe netdev" in the body of a message to [EMAIL PROTECTED] More majordomo info at http://vger.kernel.org/majordomo-info.html