aboutsummaryrefslogtreecommitdiffstats
path: root/drivers
diff options
context:
space:
mode:
authorJiri Pirko <jiri@resnulli.us>2013-01-07 20:38:26 -0500
committerDavid S. Miller <davem@davemloft.net>2013-01-08 21:00:48 -0500
commitaaeb6cdfa5c07533c2cd6d2c381374c69f7db9dc (patch)
treef6d51541dbee2d6e1810fd7b5e44d149b1a01750 /drivers
parent948b337e62ca96b6e7de06fdd5f6fe44769d7e9c (diff)
remove init of dev->perm_addr in drivers
perm_addr is initialized correctly in register_netdevice() so to init it in drivers is no longer needed. Signed-off-by: Jiri Pirko <jiri@resnulli.us> Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'drivers')
-rw-r--r--drivers/infiniband/hw/nes/nes_nic.c1
-rw-r--r--drivers/net/ethernet/3com/3c59x.c1
-rw-r--r--drivers/net/ethernet/8390/ne2k-pci.c1
-rw-r--r--drivers/net/ethernet/amd/pcnet32.c3
-rw-r--r--drivers/net/ethernet/atheros/atl1c/atl1c_main.c1
-rw-r--r--drivers/net/ethernet/atheros/atl1e/atl1e_main.c1
-rw-r--r--drivers/net/ethernet/atheros/atlx/atl2.c7
-rw-r--r--drivers/net/ethernet/broadcom/b44.c2
-rw-r--r--drivers/net/ethernet/broadcom/bnx2.c1
-rw-r--r--drivers/net/ethernet/broadcom/bnx2x/bnx2x_main.c1
-rw-r--r--drivers/net/ethernet/broadcom/tg3.c3
-rw-r--r--drivers/net/ethernet/chelsio/cxgb3/t3_hw.c2
-rw-r--r--drivers/net/ethernet/chelsio/cxgb4/t4_hw.c1
-rw-r--r--drivers/net/ethernet/chelsio/cxgb4vf/adapter.h1
-rw-r--r--drivers/net/ethernet/dlink/sundance.c1
-rw-r--r--drivers/net/ethernet/intel/e100.c3
-rw-r--r--drivers/net/ethernet/intel/e1000/e1000_main.c3
-rw-r--r--drivers/net/ethernet/intel/e1000e/netdev.c5
-rw-r--r--drivers/net/ethernet/intel/igb/igb_main.c3
-rw-r--r--drivers/net/ethernet/intel/igbvf/netdev.c2
-rw-r--r--drivers/net/ethernet/intel/ixgb/ixgb_main.c3
-rw-r--r--drivers/net/ethernet/intel/ixgbe/ixgbe_main.c3
-rw-r--r--drivers/net/ethernet/intel/ixgbevf/ixgbevf_main.c2
-rw-r--r--drivers/net/ethernet/marvell/skge.c1
-rw-r--r--drivers/net/ethernet/marvell/sky2.c1
-rw-r--r--drivers/net/ethernet/mellanox/mlx4/en_netdev.c4
-rw-r--r--drivers/net/ethernet/natsemi/natsemi.c3
-rw-r--r--drivers/net/ethernet/neterion/s2io.c1
-rw-r--r--drivers/net/ethernet/neterion/vxge/vxge-main.c1
-rw-r--r--drivers/net/ethernet/nvidia/forcedeth.c3
-rw-r--r--drivers/net/ethernet/qlogic/netxen/netxen_nic_main.c3
-rw-r--r--drivers/net/ethernet/qlogic/qla3xxx.c1
-rw-r--r--drivers/net/ethernet/qlogic/qlcnic/qlcnic_main.c3
-rw-r--r--drivers/net/ethernet/qlogic/qlge/qlge_main.c1
-rw-r--r--drivers/net/ethernet/rdc/r6040.c3
-rw-r--r--drivers/net/ethernet/realtek/8139cp.c1
-rw-r--r--drivers/net/ethernet/realtek/8139too.c1
-rw-r--r--drivers/net/ethernet/realtek/r8169.c1
-rw-r--r--drivers/net/ethernet/silan/sc92031.c12
-rw-r--r--drivers/net/ethernet/sis/sis900.c22
-rw-r--r--drivers/net/ethernet/sun/niu.c46
-rw-r--r--drivers/net/ethernet/sun/sunvnet.c2
-rw-r--r--drivers/net/ethernet/toshiba/tc35815.c1
-rw-r--r--drivers/net/ethernet/via/via-rhine.c1
-rw-r--r--drivers/net/ieee802154/fakehard.c1
-rw-r--r--drivers/net/usb/kalmia.c1
-rw-r--r--drivers/net/usb/rndis_host.c1
-rw-r--r--drivers/net/wimax/i2400m/fw.c1
-rw-r--r--drivers/net/wireless/ipw2x00/ipw2200.c1
-rw-r--r--drivers/net/wireless/mwifiex/cfg80211.c1
-rw-r--r--drivers/net/wireless/orinoco/main.c1
51 files changed, 42 insertions, 128 deletions
diff --git a/drivers/infiniband/hw/nes/nes_nic.c b/drivers/infiniband/hw/nes/nes_nic.c
index 177cf7664726..85cf4d1ac442 100644
--- a/drivers/infiniband/hw/nes/nes_nic.c
+++ b/drivers/infiniband/hw/nes/nes_nic.c
@@ -1705,7 +1705,6 @@ struct net_device *nes_netdev_init(struct nes_device *nesdev,
1705 netdev->dev_addr[3] = (u8)(u64temp>>16); 1705 netdev->dev_addr[3] = (u8)(u64temp>>16);
1706 netdev->dev_addr[4] = (u8)(u64temp>>8); 1706 netdev->dev_addr[4] = (u8)(u64temp>>8);
1707 netdev->dev_addr[5] = (u8)u64temp; 1707 netdev->dev_addr[5] = (u8)u64temp;
1708 memcpy(netdev->perm_addr, netdev->dev_addr, 6);
1709 1708
1710 netdev->hw_features = NETIF_F_SG | NETIF_F_IP_CSUM | NETIF_F_RXCSUM | NETIF_F_HW_VLAN_RX; 1709 netdev->hw_features = NETIF_F_SG | NETIF_F_IP_CSUM | NETIF_F_RXCSUM | NETIF_F_HW_VLAN_RX;
1711 if ((nesvnic->logical_port < 2) || (nesdev->nesadapter->hw_rev != NE020_REV)) 1710 if ((nesvnic->logical_port < 2) || (nesdev->nesadapter->hw_rev != NE020_REV))
diff --git a/drivers/net/ethernet/3com/3c59x.c b/drivers/net/ethernet/3com/3c59x.c
index ed0feb3cc6fa..1928e2001587 100644
--- a/drivers/net/ethernet/3com/3c59x.c
+++ b/drivers/net/ethernet/3com/3c59x.c
@@ -1293,7 +1293,6 @@ static int vortex_probe1(struct device *gendev, void __iomem *ioaddr, int irq,
1293 pr_cont(" ***INVALID CHECKSUM %4.4x*** ", checksum); 1293 pr_cont(" ***INVALID CHECKSUM %4.4x*** ", checksum);
1294 for (i = 0; i < 3; i++) 1294 for (i = 0; i < 3; i++)
1295 ((__be16 *)dev->dev_addr)[i] = htons(eeprom[i + 10]); 1295 ((__be16 *)dev->dev_addr)[i] = htons(eeprom[i + 10]);
1296 memcpy(dev->perm_addr, dev->dev_addr, dev->addr_len);
1297 if (print_info) 1296 if (print_info)
1298 pr_cont(" %pM", dev->dev_addr); 1297 pr_cont(" %pM", dev->dev_addr);
1299 /* Unfortunately an all zero eeprom passes the checksum and this 1298 /* Unfortunately an all zero eeprom passes the checksum and this
diff --git a/drivers/net/ethernet/8390/ne2k-pci.c b/drivers/net/ethernet/8390/ne2k-pci.c
index c0c127913dec..587a885de259 100644
--- a/drivers/net/ethernet/8390/ne2k-pci.c
+++ b/drivers/net/ethernet/8390/ne2k-pci.c
@@ -374,7 +374,6 @@ static int ne2k_pci_init_one(struct pci_dev *pdev,
374 NS8390_init(dev, 0); 374 NS8390_init(dev, 0);
375 375
376 memcpy(dev->dev_addr, SA_prom, dev->addr_len); 376 memcpy(dev->dev_addr, SA_prom, dev->addr_len);
377 memcpy(dev->perm_addr, dev->dev_addr, dev->addr_len);
378 377
379 i = register_netdev(dev); 378 i = register_netdev(dev);
380 if (i) 379 if (i)
diff --git a/drivers/net/ethernet/amd/pcnet32.c b/drivers/net/ethernet/amd/pcnet32.c
index a227ccdcb9b5..74cfc017adcf 100644
--- a/drivers/net/ethernet/amd/pcnet32.c
+++ b/drivers/net/ethernet/amd/pcnet32.c
@@ -1688,10 +1688,9 @@ pcnet32_probe1(unsigned long ioaddr, int shared, struct pci_dev *pdev)
1688 memcpy(dev->dev_addr, promaddr, 6); 1688 memcpy(dev->dev_addr, promaddr, 6);
1689 } 1689 }
1690 } 1690 }
1691 memcpy(dev->perm_addr, dev->dev_addr, dev->addr_len);
1692 1691
1693 /* if the ethernet address is not valid, force to 00:00:00:00:00:00 */ 1692 /* if the ethernet address is not valid, force to 00:00:00:00:00:00 */
1694 if (!is_valid_ether_addr(dev->perm_addr)) 1693 if (!is_valid_ether_addr(dev->dev_addr))
1695 memset(dev->dev_addr, 0, ETH_ALEN); 1694 memset(dev->dev_addr, 0, ETH_ALEN);
1696 1695
1697 if (pcnet32_debug & NETIF_MSG_PROBE) { 1696 if (pcnet32_debug & NETIF_MSG_PROBE) {
diff --git a/drivers/net/ethernet/atheros/atl1c/atl1c_main.c b/drivers/net/ethernet/atheros/atl1c/atl1c_main.c
index 7af95ce971ec..8df02ba2ce46 100644
--- a/drivers/net/ethernet/atheros/atl1c/atl1c_main.c
+++ b/drivers/net/ethernet/atheros/atl1c/atl1c_main.c
@@ -2542,7 +2542,6 @@ static int atl1c_probe(struct pci_dev *pdev, const struct pci_device_id *ent)
2542 netdev->addr_assign_type = NET_ADDR_RANDOM; 2542 netdev->addr_assign_type = NET_ADDR_RANDOM;
2543 } 2543 }
2544 memcpy(netdev->dev_addr, adapter->hw.mac_addr, netdev->addr_len); 2544 memcpy(netdev->dev_addr, adapter->hw.mac_addr, netdev->addr_len);
2545 memcpy(netdev->perm_addr, adapter->hw.mac_addr, netdev->addr_len);
2546 if (netif_msg_probe(adapter)) 2545 if (netif_msg_probe(adapter))
2547 dev_dbg(&pdev->dev, "mac address : %pM\n", 2546 dev_dbg(&pdev->dev, "mac address : %pM\n",
2548 adapter->hw.mac_addr); 2547 adapter->hw.mac_addr);
diff --git a/drivers/net/ethernet/atheros/atl1e/atl1e_main.c b/drivers/net/ethernet/atheros/atl1e/atl1e_main.c
index e4466a36d106..cf79d932fa35 100644
--- a/drivers/net/ethernet/atheros/atl1e/atl1e_main.c
+++ b/drivers/net/ethernet/atheros/atl1e/atl1e_main.c
@@ -2342,7 +2342,6 @@ static int atl1e_probe(struct pci_dev *pdev, const struct pci_device_id *ent)
2342 } 2342 }
2343 2343
2344 memcpy(netdev->dev_addr, adapter->hw.mac_addr, netdev->addr_len); 2344 memcpy(netdev->dev_addr, adapter->hw.mac_addr, netdev->addr_len);
2345 memcpy(netdev->perm_addr, adapter->hw.mac_addr, netdev->addr_len);
2346 netdev_dbg(netdev, "mac address : %pM\n", adapter->hw.mac_addr); 2345 netdev_dbg(netdev, "mac address : %pM\n", adapter->hw.mac_addr);
2347 2346
2348 INIT_WORK(&adapter->reset_task, atl1e_reset_task); 2347 INIT_WORK(&adapter->reset_task, atl1e_reset_task);
diff --git a/drivers/net/ethernet/atheros/atlx/atl2.c b/drivers/net/ethernet/atheros/atlx/atl2.c
index aab83a2d4e07..1278b47022e0 100644
--- a/drivers/net/ethernet/atheros/atlx/atl2.c
+++ b/drivers/net/ethernet/atheros/atlx/atl2.c
@@ -1433,14 +1433,7 @@ static int atl2_probe(struct pci_dev *pdev, const struct pci_device_id *ent)
1433 /* copy the MAC address out of the EEPROM */ 1433 /* copy the MAC address out of the EEPROM */
1434 atl2_read_mac_addr(&adapter->hw); 1434 atl2_read_mac_addr(&adapter->hw);
1435 memcpy(netdev->dev_addr, adapter->hw.mac_addr, netdev->addr_len); 1435 memcpy(netdev->dev_addr, adapter->hw.mac_addr, netdev->addr_len);
1436/* FIXME: do we still need this? */
1437#ifdef ETHTOOL_GPERMADDR
1438 memcpy(netdev->perm_addr, adapter->hw.mac_addr, netdev->addr_len);
1439
1440 if (!is_valid_ether_addr(netdev->perm_addr)) {
1441#else
1442 if (!is_valid_ether_addr(netdev->dev_addr)) { 1436 if (!is_valid_ether_addr(netdev->dev_addr)) {
1443#endif
1444 err = -EIO; 1437 err = -EIO;
1445 goto err_eeprom; 1438 goto err_eeprom;
1446 } 1439 }
diff --git a/drivers/net/ethernet/broadcom/b44.c b/drivers/net/ethernet/broadcom/b44.c
index 219f6226fcb1..3ba6be689e7d 100644
--- a/drivers/net/ethernet/broadcom/b44.c
+++ b/drivers/net/ethernet/broadcom/b44.c
@@ -2111,8 +2111,6 @@ static int b44_get_invariants(struct b44 *bp)
2111 return -EINVAL; 2111 return -EINVAL;
2112 } 2112 }
2113 2113
2114 memcpy(bp->dev->perm_addr, bp->dev->dev_addr, bp->dev->addr_len);
2115
2116 bp->imask = IMASK_DEF; 2114 bp->imask = IMASK_DEF;
2117 2115
2118 /* XXX - really required? 2116 /* XXX - really required?
diff --git a/drivers/net/ethernet/broadcom/bnx2.c b/drivers/net/ethernet/broadcom/bnx2.c
index a1adfaf87f49..2f0ba8f2fd6c 100644
--- a/drivers/net/ethernet/broadcom/bnx2.c
+++ b/drivers/net/ethernet/broadcom/bnx2.c
@@ -8543,7 +8543,6 @@ bnx2_init_one(struct pci_dev *pdev, const struct pci_device_id *ent)
8543 pci_set_drvdata(pdev, dev); 8543 pci_set_drvdata(pdev, dev);
8544 8544
8545 memcpy(dev->dev_addr, bp->mac_addr, 6); 8545 memcpy(dev->dev_addr, bp->mac_addr, 6);
8546 memcpy(dev->perm_addr, bp->mac_addr, 6);
8547 8546
8548 dev->hw_features = NETIF_F_IP_CSUM | NETIF_F_SG | 8547 dev->hw_features = NETIF_F_IP_CSUM | NETIF_F_SG |
8549 NETIF_F_TSO | NETIF_F_TSO_ECN | 8548 NETIF_F_TSO | NETIF_F_TSO_ECN |
diff --git a/drivers/net/ethernet/broadcom/bnx2x/bnx2x_main.c b/drivers/net/ethernet/broadcom/bnx2x/bnx2x_main.c
index 5fcaee193e7d..c6a208974f20 100644
--- a/drivers/net/ethernet/broadcom/bnx2x/bnx2x_main.c
+++ b/drivers/net/ethernet/broadcom/bnx2x/bnx2x_main.c
@@ -10806,7 +10806,6 @@ static void bnx2x_get_mac_hwinfo(struct bnx2x *bp)
10806 } 10806 }
10807 10807
10808 memcpy(bp->link_params.mac_addr, bp->dev->dev_addr, ETH_ALEN); 10808 memcpy(bp->link_params.mac_addr, bp->dev->dev_addr, ETH_ALEN);
10809 memcpy(bp->dev->perm_addr, bp->dev->dev_addr, ETH_ALEN);
10810 10809
10811 if (!bnx2x_is_valid_ether_addr(bp, bp->dev->dev_addr)) 10810 if (!bnx2x_is_valid_ether_addr(bp, bp->dev->dev_addr))
10812 dev_err(&bp->pdev->dev, 10811 dev_err(&bp->pdev->dev,
diff --git a/drivers/net/ethernet/broadcom/tg3.c b/drivers/net/ethernet/broadcom/tg3.c
index bc4d98991a32..b7696eb2029e 100644
--- a/drivers/net/ethernet/broadcom/tg3.c
+++ b/drivers/net/ethernet/broadcom/tg3.c
@@ -15772,7 +15772,6 @@ static int tg3_get_macaddr_sparc(struct tg3 *tp)
15772 addr = of_get_property(dp, "local-mac-address", &len); 15772 addr = of_get_property(dp, "local-mac-address", &len);
15773 if (addr && len == 6) { 15773 if (addr && len == 6) {
15774 memcpy(dev->dev_addr, addr, 6); 15774 memcpy(dev->dev_addr, addr, 6);
15775 memcpy(dev->perm_addr, dev->dev_addr, 6);
15776 return 0; 15775 return 0;
15777 } 15776 }
15778 return -ENODEV; 15777 return -ENODEV;
@@ -15783,7 +15782,6 @@ static int tg3_get_default_macaddr_sparc(struct tg3 *tp)
15783 struct net_device *dev = tp->dev; 15782 struct net_device *dev = tp->dev;
15784 15783
15785 memcpy(dev->dev_addr, idprom->id_ethaddr, 6); 15784 memcpy(dev->dev_addr, idprom->id_ethaddr, 6);
15786 memcpy(dev->perm_addr, idprom->id_ethaddr, 6);
15787 return 0; 15785 return 0;
15788} 15786}
15789#endif 15787#endif
@@ -15860,7 +15858,6 @@ static int tg3_get_device_address(struct tg3 *tp)
15860#endif 15858#endif
15861 return -EINVAL; 15859 return -EINVAL;
15862 } 15860 }
15863 memcpy(dev->perm_addr, dev->dev_addr, dev->addr_len);
15864 return 0; 15861 return 0;
15865} 15862}
15866 15863
diff --git a/drivers/net/ethernet/chelsio/cxgb3/t3_hw.c b/drivers/net/ethernet/chelsio/cxgb3/t3_hw.c
index 3dee68612c9e..c74a898fcd4f 100644
--- a/drivers/net/ethernet/chelsio/cxgb3/t3_hw.c
+++ b/drivers/net/ethernet/chelsio/cxgb3/t3_hw.c
@@ -3725,8 +3725,6 @@ int t3_prep_adapter(struct adapter *adapter, const struct adapter_info *ai,
3725 3725
3726 memcpy(adapter->port[i]->dev_addr, hw_addr, 3726 memcpy(adapter->port[i]->dev_addr, hw_addr,
3727 ETH_ALEN); 3727 ETH_ALEN);
3728 memcpy(adapter->port[i]->perm_addr, hw_addr,
3729 ETH_ALEN);
3730 init_link_config(&p->link_config, p->phy.caps); 3728 init_link_config(&p->link_config, p->phy.caps);
3731 p->phy.ops->power_down(&p->phy, 1); 3729 p->phy.ops->power_down(&p->phy, 1);
3732 3730
diff --git a/drivers/net/ethernet/chelsio/cxgb4/t4_hw.c b/drivers/net/ethernet/chelsio/cxgb4/t4_hw.c
index 22f3af5166bf..4ce62031f62f 100644
--- a/drivers/net/ethernet/chelsio/cxgb4/t4_hw.c
+++ b/drivers/net/ethernet/chelsio/cxgb4/t4_hw.c
@@ -3603,7 +3603,6 @@ int t4_port_init(struct adapter *adap, int mbox, int pf, int vf)
3603 p->lport = j; 3603 p->lport = j;
3604 p->rss_size = rss_size; 3604 p->rss_size = rss_size;
3605 memcpy(adap->port[i]->dev_addr, addr, ETH_ALEN); 3605 memcpy(adap->port[i]->dev_addr, addr, ETH_ALEN);
3606 memcpy(adap->port[i]->perm_addr, addr, ETH_ALEN);
3607 adap->port[i]->dev_id = j; 3606 adap->port[i]->dev_id = j;
3608 3607
3609 ret = ntohl(c.u.info.lstatus_to_modtype); 3608 ret = ntohl(c.u.info.lstatus_to_modtype);
diff --git a/drivers/net/ethernet/chelsio/cxgb4vf/adapter.h b/drivers/net/ethernet/chelsio/cxgb4vf/adapter.h
index 611396c4b381..68eaa9c88c7d 100644
--- a/drivers/net/ethernet/chelsio/cxgb4vf/adapter.h
+++ b/drivers/net/ethernet/chelsio/cxgb4vf/adapter.h
@@ -466,7 +466,6 @@ static inline void t4_os_set_hw_addr(struct adapter *adapter, int pidx,
466 u8 hw_addr[]) 466 u8 hw_addr[])
467{ 467{
468 memcpy(adapter->port[pidx]->dev_addr, hw_addr, ETH_ALEN); 468 memcpy(adapter->port[pidx]->dev_addr, hw_addr, ETH_ALEN);
469 memcpy(adapter->port[pidx]->perm_addr, hw_addr, ETH_ALEN);
470} 469}
471 470
472/** 471/**
diff --git a/drivers/net/ethernet/dlink/sundance.c b/drivers/net/ethernet/dlink/sundance.c
index 28fc11b2f1ea..50d9c6315930 100644
--- a/drivers/net/ethernet/dlink/sundance.c
+++ b/drivers/net/ethernet/dlink/sundance.c
@@ -530,7 +530,6 @@ static int sundance_probe1(struct pci_dev *pdev,
530 for (i = 0; i < 3; i++) 530 for (i = 0; i < 3; i++)
531 ((__le16 *)dev->dev_addr)[i] = 531 ((__le16 *)dev->dev_addr)[i] =
532 cpu_to_le16(eeprom_read(ioaddr, i + EEPROM_SA_OFFSET)); 532 cpu_to_le16(eeprom_read(ioaddr, i + EEPROM_SA_OFFSET));
533 memcpy(dev->perm_addr, dev->dev_addr, dev->addr_len);
534 533
535 np = netdev_priv(dev); 534 np = netdev_priv(dev);
536 np->base = ioaddr; 535 np->base = ioaddr;
diff --git a/drivers/net/ethernet/intel/e100.c b/drivers/net/ethernet/intel/e100.c
index a59f0779e1c3..ec800b093e7e 100644
--- a/drivers/net/ethernet/intel/e100.c
+++ b/drivers/net/ethernet/intel/e100.c
@@ -2928,8 +2928,7 @@ static int e100_probe(struct pci_dev *pdev, const struct pci_device_id *ent)
2928 e100_phy_init(nic); 2928 e100_phy_init(nic);
2929 2929
2930 memcpy(netdev->dev_addr, nic->eeprom, ETH_ALEN); 2930 memcpy(netdev->dev_addr, nic->eeprom, ETH_ALEN);
2931 memcpy(netdev->perm_addr, nic->eeprom, ETH_ALEN); 2931 if (!is_valid_ether_addr(netdev->dev_addr)) {
2932 if (!is_valid_ether_addr(netdev->perm_addr)) {
2933 if (!eeprom_bad_csum_allow) { 2932 if (!eeprom_bad_csum_allow) {
2934 netif_err(nic, probe, nic->netdev, "Invalid MAC address from EEPROM, aborting\n"); 2933 netif_err(nic, probe, nic->netdev, "Invalid MAC address from EEPROM, aborting\n");
2935 err = -EAGAIN; 2934 err = -EAGAIN;
diff --git a/drivers/net/ethernet/intel/e1000/e1000_main.c b/drivers/net/ethernet/intel/e1000/e1000_main.c
index 294da56b824c..b20fff134378 100644
--- a/drivers/net/ethernet/intel/e1000/e1000_main.c
+++ b/drivers/net/ethernet/intel/e1000/e1000_main.c
@@ -1123,9 +1123,8 @@ static int e1000_probe(struct pci_dev *pdev, const struct pci_device_id *ent)
1123 } 1123 }
1124 /* don't block initalization here due to bad MAC address */ 1124 /* don't block initalization here due to bad MAC address */
1125 memcpy(netdev->dev_addr, hw->mac_addr, netdev->addr_len); 1125 memcpy(netdev->dev_addr, hw->mac_addr, netdev->addr_len);
1126 memcpy(netdev->perm_addr, hw->mac_addr, netdev->addr_len);
1127 1126
1128 if (!is_valid_ether_addr(netdev->perm_addr)) 1127 if (!is_valid_ether_addr(netdev->dev_addr))
1129 e_err(probe, "Invalid MAC Address\n"); 1128 e_err(probe, "Invalid MAC Address\n");
1130 1129
1131 1130
diff --git a/drivers/net/ethernet/intel/e1000e/netdev.c b/drivers/net/ethernet/intel/e1000e/netdev.c
index fbf75fdca994..337644dda14d 100644
--- a/drivers/net/ethernet/intel/e1000e/netdev.c
+++ b/drivers/net/ethernet/intel/e1000e/netdev.c
@@ -6228,11 +6228,10 @@ static int e1000_probe(struct pci_dev *pdev, const struct pci_device_id *ent)
6228 "NVM Read Error while reading MAC address\n"); 6228 "NVM Read Error while reading MAC address\n");
6229 6229
6230 memcpy(netdev->dev_addr, adapter->hw.mac.addr, netdev->addr_len); 6230 memcpy(netdev->dev_addr, adapter->hw.mac.addr, netdev->addr_len);
6231 memcpy(netdev->perm_addr, adapter->hw.mac.addr, netdev->addr_len);
6232 6231
6233 if (!is_valid_ether_addr(netdev->perm_addr)) { 6232 if (!is_valid_ether_addr(netdev->dev_addr)) {
6234 dev_err(&pdev->dev, "Invalid MAC Address: %pM\n", 6233 dev_err(&pdev->dev, "Invalid MAC Address: %pM\n",
6235 netdev->perm_addr); 6234 netdev->dev_addr);
6236 err = -EIO; 6235 err = -EIO;
6237 goto err_eeprom; 6236 goto err_eeprom;
6238 } 6237 }
diff --git a/drivers/net/ethernet/intel/igb/igb_main.c b/drivers/net/ethernet/intel/igb/igb_main.c
index 31cfe2ec75df..a0a31b55a073 100644
--- a/drivers/net/ethernet/intel/igb/igb_main.c
+++ b/drivers/net/ethernet/intel/igb/igb_main.c
@@ -2022,9 +2022,8 @@ static int igb_probe(struct pci_dev *pdev, const struct pci_device_id *ent)
2022 dev_err(&pdev->dev, "NVM Read Error\n"); 2022 dev_err(&pdev->dev, "NVM Read Error\n");
2023 2023
2024 memcpy(netdev->dev_addr, hw->mac.addr, netdev->addr_len); 2024 memcpy(netdev->dev_addr, hw->mac.addr, netdev->addr_len);
2025 memcpy(netdev->perm_addr, hw->mac.addr, netdev->addr_len);
2026 2025
2027 if (!is_valid_ether_addr(netdev->perm_addr)) { 2026 if (!is_valid_ether_addr(netdev->dev_addr)) {
2028 dev_err(&pdev->dev, "Invalid MAC Address\n"); 2027 dev_err(&pdev->dev, "Invalid MAC Address\n");
2029 err = -EIO; 2028 err = -EIO;
2030 goto err_eeprom; 2029 goto err_eeprom;
diff --git a/drivers/net/ethernet/intel/igbvf/netdev.c b/drivers/net/ethernet/intel/igbvf/netdev.c
index 53281ff17315..8f66d459218f 100644
--- a/drivers/net/ethernet/intel/igbvf/netdev.c
+++ b/drivers/net/ethernet/intel/igbvf/netdev.c
@@ -2757,8 +2757,6 @@ static int igbvf_probe(struct pci_dev *pdev, const struct pci_device_id *ent)
2757 goto err_hw_init; 2757 goto err_hw_init;
2758 } 2758 }
2759 2759
2760 memcpy(netdev->perm_addr, netdev->dev_addr, netdev->addr_len);
2761
2762 setup_timer(&adapter->watchdog_timer, &igbvf_watchdog, 2760 setup_timer(&adapter->watchdog_timer, &igbvf_watchdog,
2763 (unsigned long) adapter); 2761 (unsigned long) adapter);
2764 2762
diff --git a/drivers/net/ethernet/intel/ixgb/ixgb_main.c b/drivers/net/ethernet/intel/ixgb/ixgb_main.c
index ae96c10251be..c7564123dd31 100644
--- a/drivers/net/ethernet/intel/ixgb/ixgb_main.c
+++ b/drivers/net/ethernet/intel/ixgb/ixgb_main.c
@@ -500,9 +500,8 @@ ixgb_probe(struct pci_dev *pdev, const struct pci_device_id *ent)
500 } 500 }
501 501
502 ixgb_get_ee_mac_addr(&adapter->hw, netdev->dev_addr); 502 ixgb_get_ee_mac_addr(&adapter->hw, netdev->dev_addr);
503 memcpy(netdev->perm_addr, netdev->dev_addr, netdev->addr_len);
504 503
505 if (!is_valid_ether_addr(netdev->perm_addr)) { 504 if (!is_valid_ether_addr(netdev->dev_addr)) {
506 netif_err(adapter, probe, adapter->netdev, "Invalid MAC Address\n"); 505 netif_err(adapter, probe, adapter->netdev, "Invalid MAC Address\n");
507 err = -EIO; 506 err = -EIO;
508 goto err_eeprom; 507 goto err_eeprom;
diff --git a/drivers/net/ethernet/intel/ixgbe/ixgbe_main.c b/drivers/net/ethernet/intel/ixgbe/ixgbe_main.c
index 20a5af6d87d0..20d6764cedc8 100644
--- a/drivers/net/ethernet/intel/ixgbe/ixgbe_main.c
+++ b/drivers/net/ethernet/intel/ixgbe/ixgbe_main.c
@@ -7444,9 +7444,8 @@ static int ixgbe_probe(struct pci_dev *pdev, const struct pci_device_id *ent)
7444 } 7444 }
7445 7445
7446 memcpy(netdev->dev_addr, hw->mac.perm_addr, netdev->addr_len); 7446 memcpy(netdev->dev_addr, hw->mac.perm_addr, netdev->addr_len);
7447 memcpy(netdev->perm_addr, hw->mac.perm_addr, netdev->addr_len);
7448 7447
7449 if (!is_valid_ether_addr(netdev->perm_addr)) { 7448 if (!is_valid_ether_addr(netdev->dev_addr)) {
7450 e_dev_err("invalid MAC address\n"); 7449 e_dev_err("invalid MAC address\n");
7451 err = -EIO; 7450 err = -EIO;
7452 goto err_sw_init; 7451 goto err_sw_init;
diff --git a/drivers/net/ethernet/intel/ixgbevf/ixgbevf_main.c b/drivers/net/ethernet/intel/ixgbevf/ixgbevf_main.c
index 257357ae66c3..c27d9867e20d 100644
--- a/drivers/net/ethernet/intel/ixgbevf/ixgbevf_main.c
+++ b/drivers/net/ethernet/intel/ixgbevf/ixgbevf_main.c
@@ -3328,8 +3328,6 @@ static int ixgbevf_probe(struct pci_dev *pdev, const struct pci_device_id *ent)
3328 goto err_sw_init; 3328 goto err_sw_init;
3329 3329
3330 /* The HW MAC address was set and/or determined in sw_init */ 3330 /* The HW MAC address was set and/or determined in sw_init */
3331 memcpy(netdev->perm_addr, adapter->hw.mac.addr, netdev->addr_len);
3332
3333 if (!is_valid_ether_addr(netdev->dev_addr)) { 3331 if (!is_valid_ether_addr(netdev->dev_addr)) {
3334 pr_err("invalid MAC address\n"); 3332 pr_err("invalid MAC address\n");
3335 err = -EIO; 3333 err = -EIO;
diff --git a/drivers/net/ethernet/marvell/skge.c b/drivers/net/ethernet/marvell/skge.c
index 5544a1fe2f94..8b08bc4b8a76 100644
--- a/drivers/net/ethernet/marvell/skge.c
+++ b/drivers/net/ethernet/marvell/skge.c
@@ -3855,7 +3855,6 @@ static struct net_device *skge_devinit(struct skge_hw *hw, int port,
3855 3855
3856 /* read the mac address */ 3856 /* read the mac address */
3857 memcpy_fromio(dev->dev_addr, hw->regs + B2_MAC_1 + port*8, ETH_ALEN); 3857 memcpy_fromio(dev->dev_addr, hw->regs + B2_MAC_1 + port*8, ETH_ALEN);
3858 memcpy(dev->perm_addr, dev->dev_addr, dev->addr_len);
3859 3858
3860 return dev; 3859 return dev;
3861} 3860}
diff --git a/drivers/net/ethernet/marvell/sky2.c b/drivers/net/ethernet/marvell/sky2.c
index 3269eb38cc57..366a12aa3c74 100644
--- a/drivers/net/ethernet/marvell/sky2.c
+++ b/drivers/net/ethernet/marvell/sky2.c
@@ -4801,7 +4801,6 @@ static struct net_device *sky2_init_netdev(struct sky2_hw *hw, unsigned port,
4801 4801
4802 /* read the mac address */ 4802 /* read the mac address */
4803 memcpy_fromio(dev->dev_addr, hw->regs + B2_MAC_1 + port * 8, ETH_ALEN); 4803 memcpy_fromio(dev->dev_addr, hw->regs + B2_MAC_1 + port * 8, ETH_ALEN);
4804 memcpy(dev->perm_addr, dev->dev_addr, dev->addr_len);
4805 4804
4806 return dev; 4805 return dev;
4807} 4806}
diff --git a/drivers/net/ethernet/mellanox/mlx4/en_netdev.c b/drivers/net/ethernet/mellanox/mlx4/en_netdev.c
index 75a3f467bb5b..b4675138533a 100644
--- a/drivers/net/ethernet/mellanox/mlx4/en_netdev.c
+++ b/drivers/net/ethernet/mellanox/mlx4/en_netdev.c
@@ -1655,10 +1655,8 @@ int mlx4_en_init_netdev(struct mlx4_en_dev *mdev, int port,
1655 1655
1656 /* Set defualt MAC */ 1656 /* Set defualt MAC */
1657 dev->addr_len = ETH_ALEN; 1657 dev->addr_len = ETH_ALEN;
1658 for (i = 0; i < ETH_ALEN; i++) { 1658 for (i = 0; i < ETH_ALEN; i++)
1659 dev->dev_addr[ETH_ALEN - 1 - i] = (u8) (priv->mac >> (8 * i)); 1659 dev->dev_addr[ETH_ALEN - 1 - i] = (u8) (priv->mac >> (8 * i));
1660 dev->perm_addr[ETH_ALEN - 1 - i] = (u8) (priv->mac >> (8 * i));
1661 }
1662 1660
1663 /* 1661 /*
1664 * Set driver features 1662 * Set driver features
diff --git a/drivers/net/ethernet/natsemi/natsemi.c b/drivers/net/ethernet/natsemi/natsemi.c
index f4ad60c97eae..7a5e295588b0 100644
--- a/drivers/net/ethernet/natsemi/natsemi.c
+++ b/drivers/net/ethernet/natsemi/natsemi.c
@@ -862,9 +862,6 @@ static int natsemi_probe1(struct pci_dev *pdev, const struct pci_device_id *ent)
862 prev_eedata = eedata; 862 prev_eedata = eedata;
863 } 863 }
864 864
865 /* Store MAC Address in perm_addr */
866 memcpy(dev->perm_addr, dev->dev_addr, ETH_ALEN);
867
868 np = netdev_priv(dev); 865 np = netdev_priv(dev);
869 np->ioaddr = ioaddr; 866 np->ioaddr = ioaddr;
870 867
diff --git a/drivers/net/ethernet/neterion/s2io.c b/drivers/net/ethernet/neterion/s2io.c
index 7c94c089212f..bfd887382e19 100644
--- a/drivers/net/ethernet/neterion/s2io.c
+++ b/drivers/net/ethernet/neterion/s2io.c
@@ -8014,7 +8014,6 @@ s2io_init_nic(struct pci_dev *pdev, const struct pci_device_id *pre)
8014 /* Set the factory defined MAC address initially */ 8014 /* Set the factory defined MAC address initially */
8015 dev->addr_len = ETH_ALEN; 8015 dev->addr_len = ETH_ALEN;
8016 memcpy(dev->dev_addr, sp->def_mac_addr, ETH_ALEN); 8016 memcpy(dev->dev_addr, sp->def_mac_addr, ETH_ALEN);
8017 memcpy(dev->perm_addr, dev->dev_addr, ETH_ALEN);
8018 8017
8019 /* initialize number of multicast & unicast MAC entries variables */ 8018 /* initialize number of multicast & unicast MAC entries variables */
8020 if (sp->device_type == XFRAME_I_DEVICE) { 8019 if (sp->device_type == XFRAME_I_DEVICE) {
diff --git a/drivers/net/ethernet/neterion/vxge/vxge-main.c b/drivers/net/ethernet/neterion/vxge/vxge-main.c
index 7c87105ca049..794444e09492 100644
--- a/drivers/net/ethernet/neterion/vxge/vxge-main.c
+++ b/drivers/net/ethernet/neterion/vxge/vxge-main.c
@@ -4682,7 +4682,6 @@ vxge_probe(struct pci_dev *pdev, const struct pci_device_id *pre)
4682 /* Store the fw version for ethttool option */ 4682 /* Store the fw version for ethttool option */
4683 strcpy(vdev->fw_version, ll_config->device_hw_info.fw_version.version); 4683 strcpy(vdev->fw_version, ll_config->device_hw_info.fw_version.version);
4684 memcpy(vdev->ndev->dev_addr, (u8 *)vdev->vpaths[0].macaddr, ETH_ALEN); 4684 memcpy(vdev->ndev->dev_addr, (u8 *)vdev->vpaths[0].macaddr, ETH_ALEN);
4685 memcpy(vdev->ndev->perm_addr, vdev->ndev->dev_addr, ETH_ALEN);
4686 4685
4687 /* Copy the station mac address to the list */ 4686 /* Copy the station mac address to the list */
4688 for (i = 0; i < vdev->no_of_vpath; i++) { 4687 for (i = 0; i < vdev->no_of_vpath; i++) {
diff --git a/drivers/net/ethernet/nvidia/forcedeth.c b/drivers/net/ethernet/nvidia/forcedeth.c
index b53bf9db471a..ceb1617645c8 100644
--- a/drivers/net/ethernet/nvidia/forcedeth.c
+++ b/drivers/net/ethernet/nvidia/forcedeth.c
@@ -5730,9 +5730,8 @@ static int nv_probe(struct pci_dev *pci_dev, const struct pci_device_id *id)
5730 "%s: set workaround bit for reversed mac addr\n", 5730 "%s: set workaround bit for reversed mac addr\n",
5731 __func__); 5731 __func__);
5732 } 5732 }
5733 memcpy(dev->perm_addr, dev->dev_addr, dev->addr_len);
5734 5733
5735 if (!is_valid_ether_addr(dev->perm_addr)) { 5734 if (!is_valid_ether_addr(dev->dev_addr)) {
5736 /* 5735 /*
5737 * Bad mac address. At least one bios sets the mac address 5736 * Bad mac address. At least one bios sets the mac address
5738 * to 01:23:45:67:89:ab 5737 * to 01:23:45:67:89:ab
diff --git a/drivers/net/ethernet/qlogic/netxen/netxen_nic_main.c b/drivers/net/ethernet/qlogic/netxen/netxen_nic_main.c
index 6098fd4adfeb..8e40ea09d7fc 100644
--- a/drivers/net/ethernet/qlogic/netxen/netxen_nic_main.c
+++ b/drivers/net/ethernet/qlogic/netxen/netxen_nic_main.c
@@ -501,12 +501,11 @@ netxen_read_mac_addr(struct netxen_adapter *adapter)
501 for (i = 0; i < 6; i++) 501 for (i = 0; i < 6; i++)
502 netdev->dev_addr[i] = *(p + 5 - i); 502 netdev->dev_addr[i] = *(p + 5 - i);
503 503
504 memcpy(netdev->perm_addr, netdev->dev_addr, netdev->addr_len);
505 memcpy(adapter->mac_addr, netdev->dev_addr, netdev->addr_len); 504 memcpy(adapter->mac_addr, netdev->dev_addr, netdev->addr_len);
506 505
507 /* set station address */ 506 /* set station address */
508 507
509 if (!is_valid_ether_addr(netdev->perm_addr)) 508 if (!is_valid_ether_addr(netdev->dev_addr))
510 dev_warn(&pdev->dev, "Bad MAC address %pM.\n", netdev->dev_addr); 509 dev_warn(&pdev->dev, "Bad MAC address %pM.\n", netdev->dev_addr);
511 510
512 return 0; 511 return 0;
diff --git a/drivers/net/ethernet/qlogic/qla3xxx.c b/drivers/net/ethernet/qlogic/qla3xxx.c
index 67a679aaf29a..c0ed12d325b4 100644
--- a/drivers/net/ethernet/qlogic/qla3xxx.c
+++ b/drivers/net/ethernet/qlogic/qla3xxx.c
@@ -3867,7 +3867,6 @@ static int ql3xxx_probe(struct pci_dev *pdev,
3867 ndev->mtu = qdev->nvram_data.macCfg_port0.etherMtu_mac ; 3867 ndev->mtu = qdev->nvram_data.macCfg_port0.etherMtu_mac ;
3868 ql_set_mac_addr(ndev, qdev->nvram_data.funcCfg_fn0.macAddress); 3868 ql_set_mac_addr(ndev, qdev->nvram_data.funcCfg_fn0.macAddress);
3869 } 3869 }
3870 memcpy(ndev->perm_addr, ndev->dev_addr, ndev->addr_len);
3871 3870
3872 ndev->tx_queue_len = NUM_REQ_Q_ENTRIES; 3871 ndev->tx_queue_len = NUM_REQ_Q_ENTRIES;
3873 3872
diff --git a/drivers/net/ethernet/qlogic/qlcnic/qlcnic_main.c b/drivers/net/ethernet/qlogic/qlcnic/qlcnic_main.c
index 3655ca2de525..d331313cb164 100644
--- a/drivers/net/ethernet/qlogic/qlcnic/qlcnic_main.c
+++ b/drivers/net/ethernet/qlogic/qlcnic/qlcnic_main.c
@@ -208,12 +208,11 @@ qlcnic_read_mac_addr(struct qlcnic_adapter *adapter)
208 return -EIO; 208 return -EIO;
209 209
210 memcpy(netdev->dev_addr, mac_addr, ETH_ALEN); 210 memcpy(netdev->dev_addr, mac_addr, ETH_ALEN);
211 memcpy(netdev->perm_addr, netdev->dev_addr, netdev->addr_len);
212 memcpy(adapter->mac_addr, netdev->dev_addr, netdev->addr_len); 211 memcpy(adapter->mac_addr, netdev->dev_addr, netdev->addr_len);
213 212
214 /* set station address */ 213 /* set station address */
215 214
216 if (!is_valid_ether_addr(netdev->perm_addr)) 215 if (!is_valid_ether_addr(netdev->dev_addr))
217 dev_warn(&pdev->dev, "Bad MAC address %pM.\n", 216 dev_warn(&pdev->dev, "Bad MAC address %pM.\n",
218 netdev->dev_addr); 217 netdev->dev_addr);
219 218
diff --git a/drivers/net/ethernet/qlogic/qlge/qlge_main.c b/drivers/net/ethernet/qlogic/qlge/qlge_main.c
index f80cd975daed..7c8ba1acb349 100644
--- a/drivers/net/ethernet/qlogic/qlge/qlge_main.c
+++ b/drivers/net/ethernet/qlogic/qlge/qlge_main.c
@@ -4586,7 +4586,6 @@ static int ql_init_device(struct pci_dev *pdev, struct net_device *ndev,
4586 goto err_out2; 4586 goto err_out2;
4587 } 4587 }
4588 4588
4589 memcpy(ndev->perm_addr, ndev->dev_addr, ndev->addr_len);
4590 /* Keep local copy of current mac address. */ 4589 /* Keep local copy of current mac address. */
4591 memcpy(qdev->current_mac_addr, ndev->dev_addr, ndev->addr_len); 4590 memcpy(qdev->current_mac_addr, ndev->dev_addr, ndev->addr_len);
4592 4591
diff --git a/drivers/net/ethernet/rdc/r6040.c b/drivers/net/ethernet/rdc/r6040.c
index ba0be4b943dd..be3616d060d9 100644
--- a/drivers/net/ethernet/rdc/r6040.c
+++ b/drivers/net/ethernet/rdc/r6040.c
@@ -755,9 +755,6 @@ static void r6040_mac_address(struct net_device *dev)
755 iowrite16(adrp[0], ioaddr + MID_0L); 755 iowrite16(adrp[0], ioaddr + MID_0L);
756 iowrite16(adrp[1], ioaddr + MID_0M); 756 iowrite16(adrp[1], ioaddr + MID_0M);
757 iowrite16(adrp[2], ioaddr + MID_0H); 757 iowrite16(adrp[2], ioaddr + MID_0H);
758
759 /* Store MAC Address in perm_addr */
760 memcpy(dev->perm_addr, dev->dev_addr, ETH_ALEN);
761} 758}
762 759
763static int r6040_open(struct net_device *dev) 760static int r6040_open(struct net_device *dev)
diff --git a/drivers/net/ethernet/realtek/8139cp.c b/drivers/net/ethernet/realtek/8139cp.c
index 5ac93323a40c..b62a32484f6a 100644
--- a/drivers/net/ethernet/realtek/8139cp.c
+++ b/drivers/net/ethernet/realtek/8139cp.c
@@ -1949,7 +1949,6 @@ static int cp_init_one (struct pci_dev *pdev, const struct pci_device_id *ent)
1949 for (i = 0; i < 3; i++) 1949 for (i = 0; i < 3; i++)
1950 ((__le16 *) (dev->dev_addr))[i] = 1950 ((__le16 *) (dev->dev_addr))[i] =
1951 cpu_to_le16(read_eeprom (regs, i + 7, addr_len)); 1951 cpu_to_le16(read_eeprom (regs, i + 7, addr_len));
1952 memcpy(dev->perm_addr, dev->dev_addr, dev->addr_len);
1953 1952
1954 dev->netdev_ops = &cp_netdev_ops; 1953 dev->netdev_ops = &cp_netdev_ops;
1955 netif_napi_add(dev, &cp->napi, cp_rx_poll, 16); 1954 netif_napi_add(dev, &cp->napi, cp_rx_poll, 16);
diff --git a/drivers/net/ethernet/realtek/8139too.c b/drivers/net/ethernet/realtek/8139too.c
index 5dc161630127..1276ac71353a 100644
--- a/drivers/net/ethernet/realtek/8139too.c
+++ b/drivers/net/ethernet/realtek/8139too.c
@@ -991,7 +991,6 @@ static int rtl8139_init_one(struct pci_dev *pdev,
991 for (i = 0; i < 3; i++) 991 for (i = 0; i < 3; i++)
992 ((__le16 *) (dev->dev_addr))[i] = 992 ((__le16 *) (dev->dev_addr))[i] =
993 cpu_to_le16(read_eeprom (ioaddr, i + 7, addr_len)); 993 cpu_to_le16(read_eeprom (ioaddr, i + 7, addr_len));
994 memcpy(dev->perm_addr, dev->dev_addr, dev->addr_len);
995 994
996 /* The Rtl8139-specific entries in the device structure. */ 995 /* The Rtl8139-specific entries in the device structure. */
997 dev->netdev_ops = &rtl8139_netdev_ops; 996 dev->netdev_ops = &rtl8139_netdev_ops;
diff --git a/drivers/net/ethernet/realtek/r8169.c b/drivers/net/ethernet/realtek/r8169.c
index ed96f309bca8..89184f3bc6d6 100644
--- a/drivers/net/ethernet/realtek/r8169.c
+++ b/drivers/net/ethernet/realtek/r8169.c
@@ -6948,7 +6948,6 @@ rtl_init_one(struct pci_dev *pdev, const struct pci_device_id *ent)
6948 /* Get MAC address */ 6948 /* Get MAC address */
6949 for (i = 0; i < ETH_ALEN; i++) 6949 for (i = 0; i < ETH_ALEN; i++)
6950 dev->dev_addr[i] = RTL_R8(MAC0 + i); 6950 dev->dev_addr[i] = RTL_R8(MAC0 + i);
6951 memcpy(dev->perm_addr, dev->dev_addr, dev->addr_len);
6952 6951
6953 SET_ETHTOOL_OPS(dev, &rtl8169_ethtool_ops); 6952 SET_ETHTOOL_OPS(dev, &rtl8169_ethtool_ops);
6954 dev->watchdog_timeo = RTL8169_TX_TIMEOUT; 6953 dev->watchdog_timeo = RTL8169_TX_TIMEOUT;
diff --git a/drivers/net/ethernet/silan/sc92031.c b/drivers/net/ethernet/silan/sc92031.c
index b2315324cc6d..28f7268f1b88 100644
--- a/drivers/net/ethernet/silan/sc92031.c
+++ b/drivers/net/ethernet/silan/sc92031.c
@@ -1458,12 +1458,12 @@ static int sc92031_probe(struct pci_dev *pdev, const struct pci_device_id *id)
1458 1458
1459 mac0 = ioread32(port_base + MAC0); 1459 mac0 = ioread32(port_base + MAC0);
1460 mac1 = ioread32(port_base + MAC0 + 4); 1460 mac1 = ioread32(port_base + MAC0 + 4);
1461 dev->dev_addr[0] = dev->perm_addr[0] = mac0 >> 24; 1461 dev->dev_addr[0] = mac0 >> 24;
1462 dev->dev_addr[1] = dev->perm_addr[1] = mac0 >> 16; 1462 dev->dev_addr[1] = mac0 >> 16;
1463 dev->dev_addr[2] = dev->perm_addr[2] = mac0 >> 8; 1463 dev->dev_addr[2] = mac0 >> 8;
1464 dev->dev_addr[3] = dev->perm_addr[3] = mac0; 1464 dev->dev_addr[3] = mac0;
1465 dev->dev_addr[4] = dev->perm_addr[4] = mac1 >> 8; 1465 dev->dev_addr[4] = mac1 >> 8;
1466 dev->dev_addr[5] = dev->perm_addr[5] = mac1; 1466 dev->dev_addr[5] = mac1;
1467 1467
1468 err = register_netdev(dev); 1468 err = register_netdev(dev);
1469 if (err < 0) 1469 if (err < 0)
diff --git a/drivers/net/ethernet/sis/sis900.c b/drivers/net/ethernet/sis/sis900.c
index 5bffd9749a58..efca14eaefa9 100644
--- a/drivers/net/ethernet/sis/sis900.c
+++ b/drivers/net/ethernet/sis/sis900.c
@@ -247,8 +247,7 @@ static const struct ethtool_ops sis900_ethtool_ops;
247 * @net_dev: the net device to get address for 247 * @net_dev: the net device to get address for
248 * 248 *
249 * Older SiS900 and friends, use EEPROM to store MAC address. 249 * Older SiS900 and friends, use EEPROM to store MAC address.
250 * MAC address is read from read_eeprom() into @net_dev->dev_addr and 250 * MAC address is read from read_eeprom() into @net_dev->dev_addr.
251 * @net_dev->perm_addr.
252 */ 251 */
253 252
254static int sis900_get_mac_addr(struct pci_dev *pci_dev, 253static int sis900_get_mac_addr(struct pci_dev *pci_dev,
@@ -271,9 +270,6 @@ static int sis900_get_mac_addr(struct pci_dev *pci_dev,
271 for (i = 0; i < 3; i++) 270 for (i = 0; i < 3; i++)
272 ((u16 *)(net_dev->dev_addr))[i] = read_eeprom(ioaddr, i+EEPROMMACAddr); 271 ((u16 *)(net_dev->dev_addr))[i] = read_eeprom(ioaddr, i+EEPROMMACAddr);
273 272
274 /* Store MAC Address in perm_addr */
275 memcpy(net_dev->perm_addr, net_dev->dev_addr, ETH_ALEN);
276
277 return 1; 273 return 1;
278} 274}
279 275
@@ -284,8 +280,7 @@ static int sis900_get_mac_addr(struct pci_dev *pci_dev,
284 * 280 *
285 * SiS630E model, use APC CMOS RAM to store MAC address. 281 * SiS630E model, use APC CMOS RAM to store MAC address.
286 * APC CMOS RAM is accessed through ISA bridge. 282 * APC CMOS RAM is accessed through ISA bridge.
287 * MAC address is read into @net_dev->dev_addr and 283 * MAC address is read into @net_dev->dev_addr.
288 * @net_dev->perm_addr.
289 */ 284 */
290 285
291static int sis630e_get_mac_addr(struct pci_dev *pci_dev, 286static int sis630e_get_mac_addr(struct pci_dev *pci_dev,
@@ -311,9 +306,6 @@ static int sis630e_get_mac_addr(struct pci_dev *pci_dev,
311 ((u8 *)(net_dev->dev_addr))[i] = inb(0x71); 306 ((u8 *)(net_dev->dev_addr))[i] = inb(0x71);
312 } 307 }
313 308
314 /* Store MAC Address in perm_addr */
315 memcpy(net_dev->perm_addr, net_dev->dev_addr, ETH_ALEN);
316
317 pci_write_config_byte(isa_bridge, 0x48, reg & ~0x40); 309 pci_write_config_byte(isa_bridge, 0x48, reg & ~0x40);
318 pci_dev_put(isa_bridge); 310 pci_dev_put(isa_bridge);
319 311
@@ -328,7 +320,7 @@ static int sis630e_get_mac_addr(struct pci_dev *pci_dev,
328 * 320 *
329 * SiS635 model, set MAC Reload Bit to load Mac address from APC 321 * SiS635 model, set MAC Reload Bit to load Mac address from APC
330 * to rfdr. rfdr is accessed through rfcr. MAC address is read into 322 * to rfdr. rfdr is accessed through rfcr. MAC address is read into
331 * @net_dev->dev_addr and @net_dev->perm_addr. 323 * @net_dev->dev_addr.
332 */ 324 */
333 325
334static int sis635_get_mac_addr(struct pci_dev *pci_dev, 326static int sis635_get_mac_addr(struct pci_dev *pci_dev,
@@ -353,9 +345,6 @@ static int sis635_get_mac_addr(struct pci_dev *pci_dev,
353 *( ((u16 *)net_dev->dev_addr) + i) = sr16(rfdr); 345 *( ((u16 *)net_dev->dev_addr) + i) = sr16(rfdr);
354 } 346 }
355 347
356 /* Store MAC Address in perm_addr */
357 memcpy(net_dev->perm_addr, net_dev->dev_addr, ETH_ALEN);
358
359 /* enable packet filtering */ 348 /* enable packet filtering */
360 sw32(rfcr, rfcrSave | RFEN); 349 sw32(rfcr, rfcrSave | RFEN);
361 350
@@ -375,7 +364,7 @@ static int sis635_get_mac_addr(struct pci_dev *pci_dev,
375 * EEDONE signal to refuse EEPROM access by LAN. 364 * EEDONE signal to refuse EEPROM access by LAN.
376 * The EEPROM map of SiS962 or SiS963 is different to SiS900. 365 * The EEPROM map of SiS962 or SiS963 is different to SiS900.
377 * The signature field in SiS962 or SiS963 spec is meaningless. 366 * The signature field in SiS962 or SiS963 spec is meaningless.
378 * MAC address is read into @net_dev->dev_addr and @net_dev->perm_addr. 367 * MAC address is read into @net_dev->dev_addr.
379 */ 368 */
380 369
381static int sis96x_get_mac_addr(struct pci_dev *pci_dev, 370static int sis96x_get_mac_addr(struct pci_dev *pci_dev,
@@ -395,9 +384,6 @@ static int sis96x_get_mac_addr(struct pci_dev *pci_dev,
395 for (i = 0; i < 3; i++) 384 for (i = 0; i < 3; i++)
396 mac[i] = read_eeprom(ioaddr, i + EEPROMMACAddr); 385 mac[i] = read_eeprom(ioaddr, i + EEPROMMACAddr);
397 386
398 /* Store MAC Address in perm_addr */
399 memcpy(net_dev->perm_addr, net_dev->dev_addr, ETH_ALEN);
400
401 rc = 1; 387 rc = 1;
402 break; 388 break;
403 } 389 }
diff --git a/drivers/net/ethernet/sun/niu.c b/drivers/net/ethernet/sun/niu.c
index a0bdf0779466..c8c491564f9d 100644
--- a/drivers/net/ethernet/sun/niu.c
+++ b/drivers/net/ethernet/sun/niu.c
@@ -8366,14 +8366,12 @@ static void niu_pci_vpd_validate(struct niu *np)
8366 return; 8366 return;
8367 } 8367 }
8368 8368
8369 memcpy(dev->perm_addr, vpd->local_mac, ETH_ALEN); 8369 memcpy(dev->dev_addr, vpd->local_mac, ETH_ALEN);
8370 8370
8371 val8 = dev->perm_addr[5]; 8371 val8 = dev->dev_addr[5];
8372 dev->perm_addr[5] += np->port; 8372 dev->dev_addr[5] += np->port;
8373 if (dev->perm_addr[5] < val8) 8373 if (dev->dev_addr[5] < val8)
8374 dev->perm_addr[4]++; 8374 dev->dev_addr[4]++;
8375
8376 memcpy(dev->dev_addr, dev->perm_addr, dev->addr_len);
8377} 8375}
8378 8376
8379static int niu_pci_probe_sprom(struct niu *np) 8377static int niu_pci_probe_sprom(struct niu *np)
@@ -8470,29 +8468,27 @@ static int niu_pci_probe_sprom(struct niu *np)
8470 val = nr64(ESPC_MAC_ADDR0); 8468 val = nr64(ESPC_MAC_ADDR0);
8471 netif_printk(np, probe, KERN_DEBUG, np->dev, 8469 netif_printk(np, probe, KERN_DEBUG, np->dev,
8472 "SPROM: MAC_ADDR0[%08llx]\n", (unsigned long long)val); 8470 "SPROM: MAC_ADDR0[%08llx]\n", (unsigned long long)val);
8473 dev->perm_addr[0] = (val >> 0) & 0xff; 8471 dev->dev_addr[0] = (val >> 0) & 0xff;
8474 dev->perm_addr[1] = (val >> 8) & 0xff; 8472 dev->dev_addr[1] = (val >> 8) & 0xff;
8475 dev->perm_addr[2] = (val >> 16) & 0xff; 8473 dev->dev_addr[2] = (val >> 16) & 0xff;
8476 dev->perm_addr[3] = (val >> 24) & 0xff; 8474 dev->dev_addr[3] = (val >> 24) & 0xff;
8477 8475
8478 val = nr64(ESPC_MAC_ADDR1); 8476 val = nr64(ESPC_MAC_ADDR1);
8479 netif_printk(np, probe, KERN_DEBUG, np->dev, 8477 netif_printk(np, probe, KERN_DEBUG, np->dev,
8480 "SPROM: MAC_ADDR1[%08llx]\n", (unsigned long long)val); 8478 "SPROM: MAC_ADDR1[%08llx]\n", (unsigned long long)val);
8481 dev->perm_addr[4] = (val >> 0) & 0xff; 8479 dev->dev_addr[4] = (val >> 0) & 0xff;
8482 dev->perm_addr[5] = (val >> 8) & 0xff; 8480 dev->dev_addr[5] = (val >> 8) & 0xff;
8483 8481
8484 if (!is_valid_ether_addr(&dev->perm_addr[0])) { 8482 if (!is_valid_ether_addr(&dev->dev_addr[0])) {
8485 dev_err(np->device, "SPROM MAC address invalid [ %pM ]\n", 8483 dev_err(np->device, "SPROM MAC address invalid [ %pM ]\n",
8486 dev->perm_addr); 8484 dev->dev_addr);
8487 return -EINVAL; 8485 return -EINVAL;
8488 } 8486 }
8489 8487
8490 val8 = dev->perm_addr[5]; 8488 val8 = dev->dev_addr[5];
8491 dev->perm_addr[5] += np->port; 8489 dev->dev_addr[5] += np->port;
8492 if (dev->perm_addr[5] < val8) 8490 if (dev->dev_addr[5] < val8)
8493 dev->perm_addr[4]++; 8491 dev->dev_addr[4]++;
8494
8495 memcpy(dev->dev_addr, dev->perm_addr, dev->addr_len);
8496 8492
8497 val = nr64(ESPC_MOD_STR_LEN); 8493 val = nr64(ESPC_MOD_STR_LEN);
8498 netif_printk(np, probe, KERN_DEBUG, np->dev, 8494 netif_printk(np, probe, KERN_DEBUG, np->dev,
@@ -9267,16 +9263,14 @@ static int niu_get_of_props(struct niu *np)
9267 netdev_err(dev, "%s: OF MAC address prop len (%d) is wrong\n", 9263 netdev_err(dev, "%s: OF MAC address prop len (%d) is wrong\n",
9268 dp->full_name, prop_len); 9264 dp->full_name, prop_len);
9269 } 9265 }
9270 memcpy(dev->perm_addr, mac_addr, dev->addr_len); 9266 memcpy(dev->dev_addr, mac_addr, dev->addr_len);
9271 if (!is_valid_ether_addr(&dev->perm_addr[0])) { 9267 if (!is_valid_ether_addr(&dev->dev_addr[0])) {
9272 netdev_err(dev, "%s: OF MAC address is invalid\n", 9268 netdev_err(dev, "%s: OF MAC address is invalid\n",
9273 dp->full_name); 9269 dp->full_name);
9274 netdev_err(dev, "%s: [ %pM ]\n", dp->full_name, dev->perm_addr); 9270 netdev_err(dev, "%s: [ %pM ]\n", dp->full_name, dev->dev_addr);
9275 return -EINVAL; 9271 return -EINVAL;
9276 } 9272 }
9277 9273
9278 memcpy(dev->dev_addr, dev->perm_addr, dev->addr_len);
9279
9280 model = of_get_property(dp, "model", &prop_len); 9274 model = of_get_property(dp, "model", &prop_len);
9281 9275
9282 if (model) 9276 if (model)
diff --git a/drivers/net/ethernet/sun/sunvnet.c b/drivers/net/ethernet/sun/sunvnet.c
index 1cf767eb3ed5..289b4eefb42f 100644
--- a/drivers/net/ethernet/sun/sunvnet.c
+++ b/drivers/net/ethernet/sun/sunvnet.c
@@ -1032,8 +1032,6 @@ static struct vnet *vnet_new(const u64 *local_mac)
1032 for (i = 0; i < ETH_ALEN; i++) 1032 for (i = 0; i < ETH_ALEN; i++)
1033 dev->dev_addr[i] = (*local_mac >> (5 - i) * 8) & 0xff; 1033 dev->dev_addr[i] = (*local_mac >> (5 - i) * 8) & 0xff;
1034 1034
1035 memcpy(dev->perm_addr, dev->dev_addr, dev->addr_len);
1036
1037 vp = netdev_priv(dev); 1035 vp = netdev_priv(dev);
1038 1036
1039 spin_lock_init(&vp->lock); 1037 spin_lock_init(&vp->lock);
diff --git a/drivers/net/ethernet/toshiba/tc35815.c b/drivers/net/ethernet/toshiba/tc35815.c
index 23a789e86de4..f16410e599f4 100644
--- a/drivers/net/ethernet/toshiba/tc35815.c
+++ b/drivers/net/ethernet/toshiba/tc35815.c
@@ -856,7 +856,6 @@ static int tc35815_init_one(struct pci_dev *pdev,
856 if (rc) 856 if (rc)
857 goto err_out; 857 goto err_out;
858 858
859 memcpy(dev->perm_addr, dev->dev_addr, dev->addr_len);
860 printk(KERN_INFO "%s: %s at 0x%lx, %pM, IRQ %d\n", 859 printk(KERN_INFO "%s: %s at 0x%lx, %pM, IRQ %d\n",
861 dev->name, 860 dev->name,
862 chip_info[ent->driver_data].name, 861 chip_info[ent->driver_data].name,
diff --git a/drivers/net/ethernet/via/via-rhine.c b/drivers/net/ethernet/via/via-rhine.c
index 7992b3e05d3d..eab63e1d5609 100644
--- a/drivers/net/ethernet/via/via-rhine.c
+++ b/drivers/net/ethernet/via/via-rhine.c
@@ -990,7 +990,6 @@ static int rhine_init_one(struct pci_dev *pdev, const struct pci_device_id *ent)
990 netdev_info(dev, "Using random MAC address: %pM\n", 990 netdev_info(dev, "Using random MAC address: %pM\n",
991 dev->dev_addr); 991 dev->dev_addr);
992 } 992 }
993 memcpy(dev->perm_addr, dev->dev_addr, dev->addr_len);
994 993
995 /* For Rhine-I/II, phy_id is loaded from EEPROM */ 994 /* For Rhine-I/II, phy_id is loaded from EEPROM */
996 if (!phy_id) 995 if (!phy_id)
diff --git a/drivers/net/ieee802154/fakehard.c b/drivers/net/ieee802154/fakehard.c
index 1e9cb0bbf62c..8f1c25676d44 100644
--- a/drivers/net/ieee802154/fakehard.c
+++ b/drivers/net/ieee802154/fakehard.c
@@ -372,7 +372,6 @@ static int ieee802154fake_probe(struct platform_device *pdev)
372 372
373 memcpy(dev->dev_addr, "\xba\xbe\xca\xfe\xde\xad\xbe\xef", 373 memcpy(dev->dev_addr, "\xba\xbe\xca\xfe\xde\xad\xbe\xef",
374 dev->addr_len); 374 dev->addr_len);
375 memcpy(dev->perm_addr, dev->dev_addr, dev->addr_len);
376 375
377 /* 376 /*
378 * For now we'd like to emulate 2.4 GHz-only device, 377 * For now we'd like to emulate 2.4 GHz-only device,
diff --git a/drivers/net/usb/kalmia.c b/drivers/net/usb/kalmia.c
index 92c49e0a59ec..0192073e53a3 100644
--- a/drivers/net/usb/kalmia.c
+++ b/drivers/net/usb/kalmia.c
@@ -159,7 +159,6 @@ kalmia_bind(struct usbnet *dev, struct usb_interface *intf)
159 } 159 }
160 160
161 memcpy(dev->net->dev_addr, ethernet_addr, ETH_ALEN); 161 memcpy(dev->net->dev_addr, ethernet_addr, ETH_ALEN);
162 memcpy(dev->net->perm_addr, ethernet_addr, ETH_ALEN);
163 162
164 return status; 163 return status;
165} 164}
diff --git a/drivers/net/usb/rndis_host.c b/drivers/net/usb/rndis_host.c
index 4a4335833c36..cc49aac70224 100644
--- a/drivers/net/usb/rndis_host.c
+++ b/drivers/net/usb/rndis_host.c
@@ -431,7 +431,6 @@ generic_rndis_bind(struct usbnet *dev, struct usb_interface *intf, int flags)
431 goto halt_fail_and_release; 431 goto halt_fail_and_release;
432 } 432 }
433 memcpy(net->dev_addr, bp, ETH_ALEN); 433 memcpy(net->dev_addr, bp, ETH_ALEN);
434 memcpy(net->perm_addr, bp, ETH_ALEN);
435 434
436 /* set a nonzero filter to enable data transfers */ 435 /* set a nonzero filter to enable data transfers */
437 memset(u.set, 0, sizeof *u.set); 436 memset(u.set, 0, sizeof *u.set);
diff --git a/drivers/net/wimax/i2400m/fw.c b/drivers/net/wimax/i2400m/fw.c
index def12b38cbf7..c9c711dcd0e6 100644
--- a/drivers/net/wimax/i2400m/fw.c
+++ b/drivers/net/wimax/i2400m/fw.c
@@ -1055,7 +1055,6 @@ int i2400m_read_mac_addr(struct i2400m *i2400m)
1055 result = 0; 1055 result = 0;
1056 } 1056 }
1057 net_dev->addr_len = ETH_ALEN; 1057 net_dev->addr_len = ETH_ALEN;
1058 memcpy(net_dev->perm_addr, ack_buf.ack_pl, ETH_ALEN);
1059 memcpy(net_dev->dev_addr, ack_buf.ack_pl, ETH_ALEN); 1058 memcpy(net_dev->dev_addr, ack_buf.ack_pl, ETH_ALEN);
1060error_read_mac: 1059error_read_mac:
1061 d_fnend(5, dev, "(i2400m %p) = %d\n", i2400m, result); 1060 d_fnend(5, dev, "(i2400m %p) = %d\n", i2400m, result);
diff --git a/drivers/net/wireless/ipw2x00/ipw2200.c b/drivers/net/wireless/ipw2x00/ipw2200.c
index 844f201b7b70..3e824b8fa83d 100644
--- a/drivers/net/wireless/ipw2x00/ipw2200.c
+++ b/drivers/net/wireless/ipw2x00/ipw2200.c
@@ -11327,7 +11327,6 @@ static int ipw_up(struct ipw_priv *priv)
11327 if (!(priv->config & CFG_CUSTOM_MAC)) 11327 if (!(priv->config & CFG_CUSTOM_MAC))
11328 eeprom_parse_mac(priv, priv->mac_addr); 11328 eeprom_parse_mac(priv, priv->mac_addr);
11329 memcpy(priv->net_dev->dev_addr, priv->mac_addr, ETH_ALEN); 11329 memcpy(priv->net_dev->dev_addr, priv->mac_addr, ETH_ALEN);
11330 memcpy(priv->net_dev->perm_addr, priv->mac_addr, ETH_ALEN);
11331 11330
11332 ipw_set_geo(priv); 11331 ipw_set_geo(priv);
11333 11332
diff --git a/drivers/net/wireless/mwifiex/cfg80211.c b/drivers/net/wireless/mwifiex/cfg80211.c
index a875499f8945..3b3d47196331 100644
--- a/drivers/net/wireless/mwifiex/cfg80211.c
+++ b/drivers/net/wireless/mwifiex/cfg80211.c
@@ -2117,7 +2117,6 @@ struct wireless_dev *mwifiex_add_virtual_intf(struct wiphy *wiphy,
2117 dev->ieee80211_ptr = priv->wdev; 2117 dev->ieee80211_ptr = priv->wdev;
2118 dev->ieee80211_ptr->iftype = priv->bss_mode; 2118 dev->ieee80211_ptr->iftype = priv->bss_mode;
2119 memcpy(dev->dev_addr, wiphy->perm_addr, ETH_ALEN); 2119 memcpy(dev->dev_addr, wiphy->perm_addr, ETH_ALEN);
2120 memcpy(dev->perm_addr, wiphy->perm_addr, ETH_ALEN);
2121 SET_NETDEV_DEV(dev, wiphy_dev(wiphy)); 2120 SET_NETDEV_DEV(dev, wiphy_dev(wiphy));
2122 2121
2123 dev->flags |= IFF_BROADCAST | IFF_MULTICAST; 2122 dev->flags |= IFF_BROADCAST | IFF_MULTICAST;
diff --git a/drivers/net/wireless/orinoco/main.c b/drivers/net/wireless/orinoco/main.c
index 88e3ad2d1db8..1e802f82ae49 100644
--- a/drivers/net/wireless/orinoco/main.c
+++ b/drivers/net/wireless/orinoco/main.c
@@ -2290,7 +2290,6 @@ int orinoco_if_add(struct orinoco_private *priv,
2290 netif_carrier_off(dev); 2290 netif_carrier_off(dev);
2291 2291
2292 memcpy(dev->dev_addr, wiphy->perm_addr, ETH_ALEN); 2292 memcpy(dev->dev_addr, wiphy->perm_addr, ETH_ALEN);
2293 memcpy(dev->perm_addr, wiphy->perm_addr, ETH_ALEN);
2294 2293
2295 dev->base_addr = base_addr; 2294 dev->base_addr = base_addr;
2296 dev->irq = irq; 2295 dev->irq = irq;