This patch gives the e1000 driver the ability to retreive the permanent
hardware address of its device, via the framework established in part 1
of this patch series.  This patch fills in the new perm_addr field on 
probing, and implements the get_perm_addr ethtool. 

This patch has been tested in conjunction with the first.  Using a copy
of ethtool modified to use the new get_perm_addr function, the correct 
hardware address was returned.

Signed-off-by: Jon Wetzel <[EMAIL PROTECTED]>

--- linux-2.6.12.2/drivers/net/e1000/e1000_main.c       2005-06-29 
18:00:53.000000000 -0500
+++ linux-2.6.12.2-jw/drivers/net/e1000/e1000_main.c    2005-07-14 
15:24:32.000000000 -0500
@@ -622,8 +622,9 @@
        if(e1000_read_mac_addr(&adapter->hw))
                DPRINTK(PROBE, ERR, "EEPROM Read Error\n");
        memcpy(netdev->dev_addr, adapter->hw.mac_addr, netdev->addr_len);
+       memcpy(netdev->perm_addr, adapter->hw.mac_addr, netdev->addr_len);
 
-       if(!is_valid_ether_addr(netdev->dev_addr)) {
+       if(!is_valid_ether_addr(netdev->perm_addr)) {
                DPRINTK(PROBE, ERR, "Invalid MAC Address\n");
                err = -EIO;
                goto err_eeprom;
--- linux-2.6.12.2/drivers/net/e1000/e1000_ethtool.c    2005-06-29 
18:00:53.000000000 -0500
+++ linux-2.6.12.2-jw/drivers/net/e1000/e1000_ethtool.c 2005-07-14 
15:21:28.000000000 -0500
@@ -1663,6 +1663,13 @@
        }
 }
 
+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,
@@ -1698,6 +1705,7 @@
        .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,
 };
 
 void e1000_set_ethtool_ops(struct net_device *netdev)
-
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

Reply via email to